"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 $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 $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 fn(new ($sliceType($jsObjectPtr))($global.Array.prototype.slice.call(arguments, []))); } }; var $froundBuf = new Float32Array(1); var $fround = Math.fround || function(f) { $froundBuf[0] = f; return $froundBuf[0]; }; 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(method) { if (method.$expr === undefined) { method.$expr = function() { $stackDepthOffset--; try { return Function.call.apply(method, arguments); } finally { $stackDepthOffset++; } }; } return method.$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 $sliceToArray = function(slice) { if (slice.$length === 0) { return []; } 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); $internalCopy(dst.$array, src.$array, dst.$offset, src.$offset, n, dst.constructor.elem); return n; }; var $copy = function(dst, src, typ) { switch (typ.kind) { case $kindArray: $internalCopy(dst, src, 0, 0, src.length, typ.elem); break; case $kindStruct: for (var i = 0; i < typ.fields.length; i++) { var f = typ.fields[i]; switch (f.typ.kind) { case $kindArray: case $kindStruct: $copy(dst[f.prop], src[f.prop], f.typ); continue; default: dst[f.prop] = src[f.prop]; continue; } } break; } }; var $internalCopy = 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--) { $copy(dst[dstOffset + i], src[srcOffset + i], elem); } return; } for (var i = 0; i < n; i++) { $copy(dst[dstOffset + i], src[srcOffset + i], elem); } 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(); $copy(clone, src, type); 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) { 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)); } } $internalCopy(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.comparable) { $throwRuntimeError("comparing uncomparable type " + a.constructor.string); } return $equal(a.$val, b.$val, a.constructor); }; 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 $newType = function(size, kind, string, name, pkg, 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 $kindString: case $kindUnsafePointer: typ = function(v) { this.$val = v; }; typ.prototype.$key = function() { return string + "$" + this.$val; }; break; case $kindFloat32: case $kindFloat64: typ = function(v) { this.$val = v; }; typ.prototype.$key = function() { return string + "$" + $floatKey(this.$val); }; 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.prototype.$key = function() { return string + "$" + this.$high + "$" + this.$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.prototype.$key = function() { return string + "$" + this.$high + "$" + this.$low; }; break; case $kindComplex64: typ = function(real, imag) { this.$real = $fround(real); this.$imag = $fround(imag); this.$val = this; }; typ.prototype.$key = function() { return string + "$" + this.$real + "$" + this.$imag; }; break; case $kindComplex128: typ = function(real, imag) { this.$real = real; this.$imag = imag; this.$val = this; }; typ.prototype.$key = function() { return string + "$" + this.$real + "$" + this.$imag; }; break; case $kindArray: typ = function(v) { this.$val = v; }; typ.ptr = $newType(4, $kindPtr, "*" + string, "", "", function(array) { this.$get = function() { return array; }; this.$set = function(v) { $copy(this, v, typ); }; this.$val = array; }); typ.init = function(elem, len) { typ.elem = elem; typ.len = len; typ.comparable = elem.comparable; typ.prototype.$key = function() { return string + "$" + Array.prototype.join.call($mapArray(this.$val, function(e) { var key = e.$key ? e.$key() : String(e); return key.replace(/\\/g, "\\\\").replace(/\$/g, "\\$"); }), "$"); }; typ.ptr.init(typ); Object.defineProperty(typ.ptr.nil, "nilCheck", { get: $throwNilPointerError }); }; break; case $kindChan: typ = function(capacity) { this.$val = this; this.$capacity = capacity; this.$buffer = []; this.$sendQueue = []; this.$recvQueue = []; this.$closed = false; }; typ.prototype.$key = function() { if (this.$id === undefined) { $idCounter++; this.$id = $idCounter; } return String(this.$id); }; typ.init = function(elem, sendOnly, recvOnly) { typ.elem = elem; typ.sendOnly = sendOnly; typ.recvOnly = recvOnly; typ.nil = new typ(0); typ.nil.$sendQueue = typ.nil.$recvQueue = { length: 0, push: function() {}, shift: function() { return undefined; }, indexOf: function() { return -1; } }; }; break; case $kindFunc: typ = function(v) { this.$val = v; }; 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.init = function(methods) { typ.methods = methods; methods.forEach(function(m) { $ifaceNil[m.prop] = $throwNilPointerError; }); }; break; case $kindMap: typ = function(v) { this.$val = v; }; 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.prototype.$key = function() { if (this.$id === undefined) { $idCounter++; this.$id = $idCounter; } return String(this.$id); }; typ.init = function(elem) { typ.elem = elem; 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.ptr = $newType(4, $kindPtr, "*" + string, "", "", constructor); typ.ptr.elem = typ; typ.ptr.prototype.$get = function() { return this; }; typ.ptr.prototype.$set = function(v) { $copy(this, v, typ); }; typ.init = function(fields) { typ.fields = fields; fields.forEach(function(f) { if (!f.typ.comparable) { typ.comparable = false; } }); typ.prototype.$key = function() { var val = this.$val; return string + "$" + $mapArray(fields, function(f) { var e = val[f.prop]; var key = e.$key ? e.$key() : String(e); return key.replace(/\\/g, "\\\\").replace(/\$/g, "\\$"); }).join("$"); }; /* 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 $kindChan: case $kindPtr: case $kindSlice: typ.zero = function() { return typ.nil; }; 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.size = size; typ.kind = kind; typ.string = string; typ.typeName = name; typ.pkg = pkg; 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.typeName !== "") { 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", "bool", "", null); var $Int = $newType( 4, $kindInt, "int", "int", "", null); var $Int8 = $newType( 1, $kindInt8, "int8", "int8", "", null); var $Int16 = $newType( 2, $kindInt16, "int16", "int16", "", null); var $Int32 = $newType( 4, $kindInt32, "int32", "int32", "", null); var $Int64 = $newType( 8, $kindInt64, "int64", "int64", "", null); var $Uint = $newType( 4, $kindUint, "uint", "uint", "", null); var $Uint8 = $newType( 1, $kindUint8, "uint8", "uint8", "", null); var $Uint16 = $newType( 2, $kindUint16, "uint16", "uint16", "", null); var $Uint32 = $newType( 4, $kindUint32, "uint32", "uint32", "", null); var $Uint64 = $newType( 8, $kindUint64, "uint64", "uint64", "", null); var $Uintptr = $newType( 4, $kindUintptr, "uintptr", "uintptr", "", null); var $Float32 = $newType( 4, $kindFloat32, "float32", "float32", "", null); var $Float64 = $newType( 8, $kindFloat64, "float64", "float64", "", null); var $Complex64 = $newType( 8, $kindComplex64, "complex64", "complex64", "", null); var $Complex128 = $newType(16, $kindComplex128, "complex128", "complex128", "", null); var $String = $newType( 8, $kindString, "string", "string", "", null); var $UnsafePointer = $newType( 4, $kindUnsafePointer, "unsafe.Pointer", "Pointer", "", 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 string = "[" + len + "]" + elem.string; var typ = $arrayTypes[string]; if (typ === undefined) { typ = $newType(12, $kindArray, string, "", "", null); $arrayTypes[string] = 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, "", "", null); elem[field] = typ; typ.init(elem, sendOnly, recvOnly); } return typ; }; var $funcTypes = {}; var $funcType = function(params, results, variadic) { 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(", ") + ")"; } var typ = $funcTypes[string]; if (typ === undefined) { typ = $newType(4, $kindFunc, string, "", "", null); $funcTypes[string] = typ; typ.init(params, results, variadic); } return typ; }; var $interfaceTypes = {}; var $interfaceType = function(methods) { 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("; ") + " }"; } var typ = $interfaceTypes[string]; if (typ === undefined) { typ = $newType(8, $kindInterface, string, "", "", null); $interfaceTypes[string] = typ; typ.init(methods); } return typ; }; var $emptyInterface = $interfaceType([]); var $ifaceNil = { $key: function() { return "nil"; } }; var $error = $newType(8, $kindInterface, "error", "error", "", null); $error.init([{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]); var $Map = function() {}; (function() { var names = Object.getOwnPropertyNames(Object.prototype); for (var i = 0; i < names.length; i++) { $Map.prototype[names[i]] = undefined; } })(); var $mapTypes = {}; var $mapType = function(key, elem) { var string = "map[" + key.string + "]" + elem.string; var typ = $mapTypes[string]; if (typ === undefined) { typ = $newType(4, $kindMap, string, "", "", null); $mapTypes[string] = typ; typ.init(key, elem); } return typ; }; var $ptrType = function(elem) { var typ = elem.ptr; if (typ === undefined) { typ = $newType(4, $kindPtr, "*" + elem.string, "", "", 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, "", "", null); elem.Slice = typ; typ.init(elem); } return typ; }; var $makeSlice = function(typ, length, capacity) { capacity = capacity || length; 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(fields) { 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 {}"; } var typ = $structTypes[string]; if (typ === undefined) { typ = $newType(0, $kindStruct, string, "", "", 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[string] = typ; typ.init(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 $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<>> (32 - i); low += (x.$low << i) >>> 0; } } for (var i = 0; i < 32; i++) { if ((y.$high & 1< 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 === 1/0 || n.$real === -1/0 || n.$imag === 1/0 || n.$imag === -1/0; var dinf = d.$real === 1/0 || d.$real === -1/0 || d.$imag === 1/0 || d.$imag === -1/0; 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(0/0, 0/0); } if (ninf && !dinf) { return new n.constructor(1/0, 1/0); } 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(0/0, 0/0); } return new n.constructor(1/0, 1/0); } 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 $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) { 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 $dummyGoroutine = { asleep: false, exit: false, deferStack: [], panicStack: [] }; var $curGoroutine = $dummyGoroutine, $totalGoroutines = 0, $awakeGoroutines = 0, $checkForDeadlock = true; var $go = function(fun, args, direct) { $totalGoroutines++; $awakeGoroutines++; var $goroutine = function() { var rescheduled = false; try { $curGoroutine = $goroutine; var r = fun.apply(undefined, args); if (r && r.$blk !== undefined) { fun = function() { r.$blk(); }; args = []; rescheduled = true; return; } $goroutine.exit = true; } catch (err) { $goroutine.exit = true; throw err; } finally { $curGoroutine = $dummyGoroutine; if ($goroutine.exit && !rescheduled) { /* also set by runtime.Goexit() */ $totalGoroutines--; $goroutine.asleep = true; } if ($goroutine.asleep && !rescheduled) { $awakeGoroutines--; if ($awakeGoroutines === 0 && $totalGoroutines !== 0 && $checkForDeadlock) { console.error("fatal error: all goroutines are asleep - deadlock!"); } } } }; $goroutine.asleep = false; $goroutine.exit = false; $goroutine.deferStack = []; $goroutine.panicStack = []; $schedule($goroutine, direct); }; var $scheduled = [], $schedulerLoopActive = false; var $schedule = function(goroutine, direct) { if (goroutine.asleep) { goroutine.asleep = false; $awakeGoroutines++; } if (direct) { goroutine(); return; } $scheduled.push(goroutine); if (!$schedulerLoopActive) { $schedulerLoopActive = true; setTimeout(function() { while (true) { var r = $scheduled.shift(); if (r === undefined) { $schedulerLoopActive = false; break; } r(); }; }, 0); } }; var $block = function() { if ($curGoroutine === $dummyGoroutine) { $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; chan.$sendQueue.push(function() { $schedule(thisGoroutine); return value; }); $block(); return { $blk: function() { if (chan.$closed) { $throwRuntimeError("send on closed channel"); } }, }; }; var $recv = function(chan) { var queuedSend = chan.$sendQueue.shift(); if (queuedSend !== undefined) { chan.$buffer.push(queuedSend()); } var bufferedValue = chan.$buffer.shift(); if (bufferedValue !== undefined) { return [bufferedValue, true]; } if (chan.$closed) { return [chan.constructor.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(); /* will panic because of closed channel */ } while (true) { var queuedRecv = chan.$recvQueue.shift(); if (queuedRecv === undefined) { break; } queuedRecv([chan.constructor.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: 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 result = v.apply(this, args); 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; 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 (v.search(/^[\x00-\x7F]*$/) !== -1) { return v; } var s = "", r; for (var i = 0; i < v.length; i += r[1]) { r = $decodeRune(v, i); s += String.fromCharCode(r[0]); } return s; case $kindStruct: var timePkg = $packages["time"]; if (timePkg && 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.pkg !== "") { /* not exported */ continue; } o[f.name] = $externalize(v[f.prop], f.typ); } return o; } $panic(new $String("cannot externalize " + t.string)); }; var $internalize = function(v, t, recv) { if (t === $jsObjectPtr) { return v; } if (t === $jsObjectPtr.elem) { $panic(new $String("cannot internalize js.Object, use *js.Object instead")); } 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) { $panic(new $String("cannot internalize " + t.string)); } if (v === null) { return $ifaceNil; } 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: var timePkg = $packages["time"]; if (timePkg) { return new timePkg.Time(timePkg.Unix(new $Int64(0, 0), new $Int64(0, v.getTime() * 1000000))); } 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 = new $Map(); var keys = $keys(v); for (var i = 0; i < keys.length; i++) { var key = $internalize(keys[i], t.key); m[key.$key ? key.$key() : key] = { k: key, 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 (v.search(/^[\x00-\x7F]*$/) !== -1) { return v; } var s = ""; for (var i = 0; i < v.length; i++) { s += $encodeRune(v.charCodeAt(i)); } return s; case $kindStruct: var noJsObject = {}; var searchJsObject = function(t) { if (t === $jsObjectPtr) { return v; } if (t === $jsObjectPtr.elem) { $panic(new $String("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; } } $panic(new $String("cannot internalize " + t.string)); }; $packages["github.com/gopherjs/gopherjs/js"] = (function() { var $pkg = {}, $init, Object, Error, sliceType, ptrType, ptrType$1, init; Object = $pkg.Object = $newType(0, $kindStruct, "js.Object", "Object", "github.com/gopherjs/gopherjs/js", function(object_) { this.$val = this; if (arguments.length === 0) { this.object = null; return; } this.object = object_; }); Error = $pkg.Error = $newType(0, $kindStruct, "js.Error", "Error", "github.com/gopherjs/gopherjs/js", 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(); }; init = function() { var $ptr, e; e = new Error.ptr(null); }; 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([{prop: "object", name: "object", pkg: "github.com/gopherjs/gopherjs/js", typ: ptrType, tag: ""}]); Error.init([{prop: "Object", name: "", pkg: "", 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"] = (function() { var $pkg = {}, $init, js, TypeAssertionError, errorString, ptrType$5, init, Caller, GOMAXPROCS, SetFinalizer, Stack, LockOSThread, UnlockOSThread; js = $packages["github.com/gopherjs/gopherjs/js"]; TypeAssertionError = $pkg.TypeAssertionError = $newType(0, $kindStruct, "runtime.TypeAssertionError", "TypeAssertionError", "runtime", 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", "errorString", "runtime", null); ptrType$5 = $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("", "", "", ""); }; 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; GOMAXPROCS = function(n) { var $ptr, n; return 1; }; $pkg.GOMAXPROCS = GOMAXPROCS; 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; 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$5.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)}]; TypeAssertionError.init([{prop: "interfaceString", name: "interfaceString", pkg: "runtime", typ: $String, tag: ""}, {prop: "concreteString", name: "concreteString", pkg: "runtime", typ: $String, tag: ""}, {prop: "assertedString", name: "assertedString", pkg: "runtime", typ: $String, tag: ""}, {prop: "missingMethod", name: "missingMethod", pkg: "runtime", 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; } 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", "errorString", "errors", 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([{prop: "s", name: "s", pkg: "errors", 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["sync/atomic"] = (function() { var $pkg = {}, $init, js, CompareAndSwapInt32, CompareAndSwapUint64, AddInt32, LoadInt32, LoadUint32, LoadUint64, StoreInt32, StoreUint32; js = $packages["github.com/gopherjs/gopherjs/js"]; 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; $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, runtime, atomic, Cond, Pool, copyChecker, Mutex, Locker, Once, poolLocal, syncSema, RWMutex, rlocker, WaitGroup, ptrType, sliceType, chanType, sliceType$1, ptrType$1, ptrType$2, ptrType$4, ptrType$6, sliceType$3, ptrType$7, ptrType$8, ptrType$9, funcType, ptrType$10, funcType$1, ptrType$11, arrayType, ptrType$12, semWaiters, allPools, runtime_Syncsemcheck, runtime_registerPoolCleanup, runtime_Semacquire, runtime_Semrelease, poolCleanup, init, indexLocal, raceEnable, init$1; runtime = $packages["runtime"]; atomic = $packages["sync/atomic"]; Cond = $pkg.Cond = $newType(0, $kindStruct, "sync.Cond", "Cond", "sync", function(L_, sema_, waiters_, checker_, n_, ch_) { this.$val = this; if (arguments.length === 0) { this.L = $ifaceNil; this.sema = new syncSema.ptr(); this.waiters = 0; this.checker = 0; this.n = 0; this.ch = chanType.nil; return; } this.L = L_; this.sema = sema_; this.waiters = waiters_; this.checker = checker_; this.n = n_; this.ch = ch_; }); Pool = $pkg.Pool = $newType(0, $kindStruct, "sync.Pool", "Pool", "sync", function(local_, localSize_, store_, New_) { this.$val = this; if (arguments.length === 0) { this.local = 0; this.localSize = 0; this.store = sliceType$3.nil; this.New = $throwNilPointerError; return; } this.local = local_; this.localSize = localSize_; this.store = store_; this.New = New_; }); copyChecker = $pkg.copyChecker = $newType(4, $kindUintptr, "sync.copyChecker", "copyChecker", "sync", null); Mutex = $pkg.Mutex = $newType(0, $kindStruct, "sync.Mutex", "Mutex", "sync", 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", "Locker", "sync", null); Once = $pkg.Once = $newType(0, $kindStruct, "sync.Once", "Once", "sync", function(m_, done_) { this.$val = this; if (arguments.length === 0) { this.m = new Mutex.ptr(); this.done = 0; return; } this.m = m_; this.done = done_; }); poolLocal = $pkg.poolLocal = $newType(0, $kindStruct, "sync.poolLocal", "poolLocal", "sync", function(private$0_, shared_, Mutex_, pad_) { this.$val = this; if (arguments.length === 0) { this.private$0 = $ifaceNil; this.shared = sliceType$3.nil; this.Mutex = new Mutex.ptr(); this.pad = arrayType.zero(); return; } this.private$0 = private$0_; this.shared = shared_; this.Mutex = Mutex_; this.pad = pad_; }); syncSema = $pkg.syncSema = $newType(0, $kindStruct, "sync.syncSema", "syncSema", "sync", function(lock_, head_, tail_) { this.$val = this; if (arguments.length === 0) { this.lock = 0; this.head = 0; this.tail = 0; return; } this.lock = lock_; this.head = head_; this.tail = tail_; }); RWMutex = $pkg.RWMutex = $newType(0, $kindStruct, "sync.RWMutex", "RWMutex", "sync", function(w_, writerSem_, readerSem_, readerCount_, readerWait_) { this.$val = this; if (arguments.length === 0) { this.w = new Mutex.ptr(); 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", "rlocker", "sync", function(w_, writerSem_, readerSem_, readerCount_, readerWait_) { this.$val = this; if (arguments.length === 0) { this.w = new Mutex.ptr(); 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_; }); WaitGroup = $pkg.WaitGroup = $newType(0, $kindStruct, "sync.WaitGroup", "WaitGroup", "sync", function(m_, counter_, waiters_, sema_) { this.$val = this; if (arguments.length === 0) { this.m = new Mutex.ptr(); this.counter = 0; this.waiters = 0; this.sema = ptrType$2.nil; return; } this.m = m_; this.counter = counter_; this.waiters = waiters_; this.sema = sema_; }); ptrType = $ptrType(Pool); sliceType = $sliceType(ptrType); chanType = $chanType($Bool, false, false); sliceType$1 = $sliceType(chanType); ptrType$1 = $ptrType(copyChecker); ptrType$2 = $ptrType($Uint32); ptrType$4 = $ptrType($Int32); ptrType$6 = $ptrType(poolLocal); sliceType$3 = $sliceType($emptyInterface); ptrType$7 = $ptrType(rlocker); ptrType$8 = $ptrType(RWMutex); ptrType$9 = $ptrType(Cond); funcType = $funcType([], [$emptyInterface], false); ptrType$10 = $ptrType(Mutex); funcType$1 = $funcType([], [], false); ptrType$11 = $ptrType(Once); arrayType = $arrayType($Uint8, 128); ptrType$12 = $ptrType(WaitGroup); 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 === chanType.nil) { c.ch = new chanType(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; case -1: } 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) { 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; case -1: } 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; case -1: } 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(); }; runtime_Syncsemcheck = function(size) { var $ptr, size; }; 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; } return _r; /* } */ case 4: 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") : x.$array[x.$offset + x$1])); p.store = $subslice(p.store, 0, (p.store.$length - 1 >> 0)); return x$2; /* */ $s = -1; case -1: } 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 chanType(0); _key = s; (semWaiters || $throwRuntimeError("assignment to entry in nil map"))[_key.$key()] = { k: _key, v: $append((_entry = semWaiters[s.$key()], _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; case -1: } 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[s.$key()], _entry !== undefined ? _entry.v : sliceType$1.nil); if (w.$length === 0) { return; } ch = (0 >= w.$length ? $throwRuntimeError("index out of range") : w.$array[w.$offset + 0]); w = $subslice(w, 1); _key = s; (semWaiters || $throwRuntimeError("assignment to entry in nil map"))[_key.$key()] = { k: _key, v: w }; if (w.$length === 0) { delete semWaiters[s.$key()]; } $r = $send(ch, true); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* */ $s = -1; case -1: } 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; }; Mutex.ptr.prototype.Lock = function() { var $ptr, awoke, 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; 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$4(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, m))), 0, 1)) { return; } awoke = false; /* while (true) { */ case 1: old = m.state; new$1 = old | 1; if (!(((old & 1) === 0))) { new$1 = old + 4 >> 0; } if (awoke) { new$1 = (new$1 & ~(2)) >> 0; } /* */ if (atomic.CompareAndSwapInt32((m.$ptr_state || (m.$ptr_state = new ptrType$4(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$4(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, m))), old, new$1)) { */ case 3: if ((old & 1) === 0) { /* break; */ $s = 2; continue; } $r = runtime_Semacquire((m.$ptr_sema || (m.$ptr_sema = new ptrType$2(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; } awoke = true; /* } */ case 4: /* } */ $s = 1; continue; case 2: /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Mutex.ptr.prototype.Lock }; } $f.$ptr = $ptr; $f.awoke = awoke; $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; new$1 = atomic.AddInt32((m.$ptr_state || (m.$ptr_state = new ptrType$4(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, m))), -1); if ((((new$1 + 1 >> 0)) & 1) === 0) { $panic(new $String("sync: unlock of unlocked mutex")); } old = new$1; /* while (true) { */ case 1: if (((old >> 2 >> 0) === 0) || !(((old & 3) === 0))) { return; } new$1 = ((old - 4 >> 0)) | 2; /* */ if (atomic.CompareAndSwapInt32((m.$ptr_state || (m.$ptr_state = new ptrType$4(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$4(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$2(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; } return; /* } */ case 4: old = m.state; /* } */ $s = 1; continue; case 2: /* */ $s = -1; case -1: } 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$2(function() { return this.$target.done; }, function($v) { this.$target.done = $v; }, o)))) === 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$2(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; case -1: } 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") : _ref.$array[_ref.$offset + _i]); ((i < 0 || i >= allPools.$length) ? $throwRuntimeError("index out of range") : 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") : x.$array[x.$offset + j] = $ifaceNil)); _i$1++; } l.shared = sliceType$3.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") : x[i]))); }; raceEnable = function() { var $ptr; }; init$1 = function() { var $ptr, s; s = $clone(new syncSema.ptr(), syncSema); runtime_Syncsemcheck(12); }; 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 (atomic.AddInt32((rw.$ptr_readerCount || (rw.$ptr_readerCount = new ptrType$4(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$4(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$2(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: /* */ $s = -1; case -1: } 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; r = atomic.AddInt32((rw.$ptr_readerCount || (rw.$ptr_readerCount = new ptrType$4(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)) { raceEnable(); $panic(new $String("sync: RUnlock of unlocked RWMutex")); } /* */ if (atomic.AddInt32((rw.$ptr_readerWait || (rw.$ptr_readerWait = new ptrType$4(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$4(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$2(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: /* */ $s = -1; case -1: } 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; $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$4(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$4(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$4(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$2(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: /* */ $s = -1; case -1: } 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; r = atomic.AddInt32((rw.$ptr_readerCount || (rw.$ptr_readerCount = new ptrType$4(function() { return this.$target.readerCount; }, function($v) { this.$target.readerCount = $v; }, rw))), 1073741824); if (r >= 1073741824) { raceEnable(); $panic(new $String("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$2(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; } /* */ $s = -1; case -1: } 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; case -1: } 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; case -1: } 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.Add = function(delta) { var $ptr, delta, i, v, wg, $s, $deferred, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; delta = $f.delta; i = $f.i; v = $f.v; wg = $f.wg; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); wg = this; v = atomic.AddInt32((wg.$ptr_counter || (wg.$ptr_counter = new ptrType$4(function() { return this.$target.counter; }, function($v) { this.$target.counter = $v; }, wg))), (delta >> 0)); if (v < 0) { $panic(new $String("sync: negative WaitGroup counter")); } if (v > 0 || (atomic.LoadInt32((wg.$ptr_waiters || (wg.$ptr_waiters = new ptrType$4(function() { return this.$target.waiters; }, function($v) { this.$target.waiters = $v; }, wg)))) === 0)) { return; } $r = wg.m.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* */ if (atomic.LoadInt32((wg.$ptr_counter || (wg.$ptr_counter = new ptrType$4(function() { return this.$target.counter; }, function($v) { this.$target.counter = $v; }, wg)))) === 0) { $s = 2; continue; } /* */ $s = 3; continue; /* if (atomic.LoadInt32((wg.$ptr_counter || (wg.$ptr_counter = new ptrType$4(function() { return this.$target.counter; }, function($v) { this.$target.counter = $v; }, wg)))) === 0) { */ case 2: i = 0; /* while (true) { */ case 4: /* if (!(i < wg.waiters)) { break; } */ if(!(i < wg.waiters)) { $s = 5; continue; } $r = runtime_Semrelease(wg.sema); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } i = i + (1) >> 0; /* } */ $s = 4; continue; case 5: wg.waiters = 0; wg.sema = ptrType$2.nil; /* } */ case 3: $r = wg.m.Unlock(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: WaitGroup.ptr.prototype.Add }; } $f.$ptr = $ptr; $f.delta = delta; $f.i = i; $f.v = v; $f.wg = wg; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } }; WaitGroup.prototype.Add = function(delta) { return this.$val.Add(delta); }; WaitGroup.ptr.prototype.Done = function() { var $ptr, wg, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; wg = $f.wg; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: wg = this; $r = wg.Add(-1); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: WaitGroup.ptr.prototype.Done }; } $f.$ptr = $ptr; $f.wg = wg; $f.$s = $s; $f.$r = $r; return $f; }; WaitGroup.prototype.Done = function() { return this.$val.Done(); }; WaitGroup.ptr.prototype.Wait = function() { var $ptr, s, w, wg, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; s = $f.s; w = $f.w; wg = $f.wg; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: wg = this; if (atomic.LoadInt32((wg.$ptr_counter || (wg.$ptr_counter = new ptrType$4(function() { return this.$target.counter; }, function($v) { this.$target.counter = $v; }, wg)))) === 0) { return; } $r = wg.m.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } w = atomic.AddInt32((wg.$ptr_waiters || (wg.$ptr_waiters = new ptrType$4(function() { return this.$target.waiters; }, function($v) { this.$target.waiters = $v; }, wg))), 1); /* */ if (atomic.LoadInt32((wg.$ptr_counter || (wg.$ptr_counter = new ptrType$4(function() { return this.$target.counter; }, function($v) { this.$target.counter = $v; }, wg)))) === 0) { $s = 2; continue; } /* */ $s = 3; continue; /* if (atomic.LoadInt32((wg.$ptr_counter || (wg.$ptr_counter = new ptrType$4(function() { return this.$target.counter; }, function($v) { this.$target.counter = $v; }, wg)))) === 0) { */ case 2: atomic.AddInt32((wg.$ptr_waiters || (wg.$ptr_waiters = new ptrType$4(function() { return this.$target.waiters; }, function($v) { this.$target.waiters = $v; }, wg))), -1); $r = wg.m.Unlock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } return; /* } */ case 3: if (wg.sema === ptrType$2.nil) { wg.sema = $newDataPointer(0, ptrType$2); } s = wg.sema; $r = wg.m.Unlock(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = runtime_Semacquire(s); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: WaitGroup.ptr.prototype.Wait }; } $f.$ptr = $ptr; $f.s = s; $f.w = w; $f.wg = wg; $f.$s = $s; $f.$r = $r; return $f; }; WaitGroup.prototype.Wait = function() { return this.$val.Wait(); }; 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)}, {prop: "signalImpl", name: "signalImpl", pkg: "sync", typ: $funcType([$Bool], [], 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$1.methods = [{prop: "check", name: "check", pkg: "sync", typ: $funcType([], [], false)}]; ptrType$10.methods = [{prop: "Lock", name: "Lock", pkg: "", typ: $funcType([], [], false)}, {prop: "Unlock", name: "Unlock", pkg: "", typ: $funcType([], [], false)}]; ptrType$11.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)}]; ptrType$12.methods = [{prop: "Add", name: "Add", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "Done", name: "Done", pkg: "", typ: $funcType([], [], false)}, {prop: "Wait", name: "Wait", pkg: "", typ: $funcType([], [], false)}]; Cond.init([{prop: "L", name: "L", pkg: "", typ: Locker, tag: ""}, {prop: "sema", name: "sema", pkg: "sync", typ: syncSema, tag: ""}, {prop: "waiters", name: "waiters", pkg: "sync", typ: $Uint32, tag: ""}, {prop: "checker", name: "checker", pkg: "sync", typ: copyChecker, tag: ""}, {prop: "n", name: "n", pkg: "sync", typ: $Int, tag: ""}, {prop: "ch", name: "ch", pkg: "sync", typ: chanType, tag: ""}]); Pool.init([{prop: "local", name: "local", pkg: "sync", typ: $UnsafePointer, tag: ""}, {prop: "localSize", name: "localSize", pkg: "sync", typ: $Uintptr, tag: ""}, {prop: "store", name: "store", pkg: "sync", typ: sliceType$3, tag: ""}, {prop: "New", name: "New", pkg: "", typ: funcType, tag: ""}]); Mutex.init([{prop: "state", name: "state", pkg: "sync", typ: $Int32, tag: ""}, {prop: "sema", name: "sema", pkg: "sync", typ: $Uint32, tag: ""}]); Locker.init([{prop: "Lock", name: "Lock", pkg: "", typ: $funcType([], [], false)}, {prop: "Unlock", name: "Unlock", pkg: "", typ: $funcType([], [], false)}]); Once.init([{prop: "m", name: "m", pkg: "sync", typ: Mutex, tag: ""}, {prop: "done", name: "done", pkg: "sync", typ: $Uint32, tag: ""}]); poolLocal.init([{prop: "private$0", name: "private", pkg: "sync", typ: $emptyInterface, tag: ""}, {prop: "shared", name: "shared", pkg: "sync", typ: sliceType$3, tag: ""}, {prop: "Mutex", name: "", pkg: "", typ: Mutex, tag: ""}, {prop: "pad", name: "pad", pkg: "sync", typ: arrayType, tag: ""}]); syncSema.init([{prop: "lock", name: "lock", pkg: "sync", typ: $Uintptr, tag: ""}, {prop: "head", name: "head", pkg: "sync", typ: $UnsafePointer, tag: ""}, {prop: "tail", name: "tail", pkg: "sync", typ: $UnsafePointer, tag: ""}]); RWMutex.init([{prop: "w", name: "w", pkg: "sync", typ: Mutex, tag: ""}, {prop: "writerSem", name: "writerSem", pkg: "sync", typ: $Uint32, tag: ""}, {prop: "readerSem", name: "readerSem", pkg: "sync", typ: $Uint32, tag: ""}, {prop: "readerCount", name: "readerCount", pkg: "sync", typ: $Int32, tag: ""}, {prop: "readerWait", name: "readerWait", pkg: "sync", typ: $Int32, tag: ""}]); rlocker.init([{prop: "w", name: "w", pkg: "sync", typ: Mutex, tag: ""}, {prop: "writerSem", name: "writerSem", pkg: "sync", typ: $Uint32, tag: ""}, {prop: "readerSem", name: "readerSem", pkg: "sync", typ: $Uint32, tag: ""}, {prop: "readerCount", name: "readerCount", pkg: "sync", typ: $Int32, tag: ""}, {prop: "readerWait", name: "readerWait", pkg: "sync", typ: $Int32, tag: ""}]); WaitGroup.init([{prop: "m", name: "m", pkg: "sync", typ: Mutex, tag: ""}, {prop: "counter", name: "counter", pkg: "sync", typ: $Int32, tag: ""}, {prop: "waiters", name: "waiters", pkg: "sync", typ: $Int32, tag: ""}, {prop: "sema", name: "sema", pkg: "sync", typ: ptrType$2, 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 = runtime.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = atomic.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } allPools = sliceType.nil; semWaiters = new $Map(); 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, ReaderFrom, WriterTo, ReaderAt, ByteWriter, RuneReader, RuneScanner, stringWriter, LimitedReader, SectionReader, multiReader, pipe, PipeReader, PipeWriter, arrayType, sliceType, sliceType$1, ptrType, ptrType$1, ptrType$3, ptrType$5, ptrType$6, ptrType$7, errWhence, errOffset, zero, WriteString, ReadAtLeast, ReadFull, CopyN, Copy, LimitReader, NewSectionReader, MultiReader, Pipe; errors = $packages["errors"]; sync = $packages["sync"]; Reader = $pkg.Reader = $newType(8, $kindInterface, "io.Reader", "Reader", "io", null); Writer = $pkg.Writer = $newType(8, $kindInterface, "io.Writer", "Writer", "io", null); Closer = $pkg.Closer = $newType(8, $kindInterface, "io.Closer", "Closer", "io", null); ReadCloser = $pkg.ReadCloser = $newType(8, $kindInterface, "io.ReadCloser", "ReadCloser", "io", null); ReaderFrom = $pkg.ReaderFrom = $newType(8, $kindInterface, "io.ReaderFrom", "ReaderFrom", "io", null); WriterTo = $pkg.WriterTo = $newType(8, $kindInterface, "io.WriterTo", "WriterTo", "io", null); ReaderAt = $pkg.ReaderAt = $newType(8, $kindInterface, "io.ReaderAt", "ReaderAt", "io", null); ByteWriter = $pkg.ByteWriter = $newType(8, $kindInterface, "io.ByteWriter", "ByteWriter", "io", null); RuneReader = $pkg.RuneReader = $newType(8, $kindInterface, "io.RuneReader", "RuneReader", "io", null); RuneScanner = $pkg.RuneScanner = $newType(8, $kindInterface, "io.RuneScanner", "RuneScanner", "io", null); stringWriter = $pkg.stringWriter = $newType(8, $kindInterface, "io.stringWriter", "stringWriter", "io", null); LimitedReader = $pkg.LimitedReader = $newType(0, $kindStruct, "io.LimitedReader", "LimitedReader", "io", 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", "SectionReader", "io", 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_; }); multiReader = $pkg.multiReader = $newType(0, $kindStruct, "io.multiReader", "multiReader", "io", function(readers_) { this.$val = this; if (arguments.length === 0) { this.readers = sliceType$1.nil; return; } this.readers = readers_; }); pipe = $pkg.pipe = $newType(0, $kindStruct, "io.pipe", "pipe", "io", function(rl_, wl_, l_, data_, rwait_, wwait_, rerr_, werr_) { this.$val = this; if (arguments.length === 0) { this.rl = new sync.Mutex.ptr(); this.wl = new sync.Mutex.ptr(); this.l = new sync.Mutex.ptr(); this.data = sliceType.nil; this.rwait = new sync.Cond.ptr(); this.wwait = new sync.Cond.ptr(); this.rerr = $ifaceNil; this.werr = $ifaceNil; return; } this.rl = rl_; this.wl = wl_; this.l = l_; this.data = data_; this.rwait = rwait_; this.wwait = wwait_; this.rerr = rerr_; this.werr = werr_; }); PipeReader = $pkg.PipeReader = $newType(0, $kindStruct, "io.PipeReader", "PipeReader", "io", function(p_) { this.$val = this; if (arguments.length === 0) { this.p = ptrType$5.nil; return; } this.p = p_; }); PipeWriter = $pkg.PipeWriter = $newType(0, $kindStruct, "io.PipeWriter", "PipeWriter", "io", function(p_) { this.$val = this; if (arguments.length === 0) { this.p = ptrType$5.nil; return; } this.p = p_; }); arrayType = $arrayType($Uint8, 0); sliceType = $sliceType($Uint8); sliceType$1 = $sliceType(Reader); ptrType = $ptrType(LimitedReader); ptrType$1 = $ptrType(SectionReader); ptrType$3 = $ptrType(multiReader); ptrType$5 = $ptrType(pipe); ptrType$6 = $ptrType(PipeReader); ptrType$7 = $ptrType(PipeWriter); 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]; 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]; return [n, err]; /* */ $s = -1; case -1: } 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; 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; } return [n, err]; /* */ $s = -1; case -1: } 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]; return [n, err]; /* */ $s = -1; case -1: } 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; return [written, err]; } if ((written.$high < n.$high || (written.$high === n.$high && written.$low < n.$low)) && $interfaceIsEqual(err, $ifaceNil)) { err = $pkg.EOF; } return [written, err]; /* */ $s = -1; case -1: } 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, _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]; 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]; return [written, err]; /* } */ case 5: 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, $pkg.EOF)) { /* break; */ $s = 8; continue; } if (!($interfaceIsEqual(er, $ifaceNil))) { err = er; /* break; */ $s = 8; continue; } /* } */ $s = 7; continue; case 8: _tmp = written; _tmp$1 = err; written = _tmp; err = _tmp$1; return [written, err]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Copy }; } $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; }; $pkg.Copy = Copy; 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; 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)); return [n, err]; /* */ $s = -1; case -1: } 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; 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)); return [n, err]; /* */ $s = -1; case -1: } 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, _ref, offset, s, whence, x, x$1, x$2, x$3, x$4; s = this; _ref = whence; if (_ref === 0) { offset = (x = s.base, new $Int64(offset.$high + x.$high, offset.$low + x.$low)); } else if (_ref === 1) { offset = (x$1 = s.off, new $Int64(offset.$high + x$1.$high, offset.$low + x$1.$low)); } else if (_ref === 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; 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; 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]; return [n, err]; /* */ $s = -1; case -1: } 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(); }; multiReader.ptr.prototype.Read = function(p) { var $ptr, _r, _tmp, _tmp$1, _tuple, err, mr, n, 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; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; err = $f.err; mr = $f.mr; n = $f.n; p = $f.p; x = $f.x; $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; } _r = (x = mr.readers, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0])).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 (n > 0 || !($interfaceIsEqual(err, $pkg.EOF))) { if ($interfaceIsEqual(err, $pkg.EOF)) { err = $ifaceNil; } return [n, err]; } mr.readers = $subslice(mr.readers, 1); /* } */ $s = 1; continue; case 2: _tmp = 0; _tmp$1 = $pkg.EOF; n = _tmp; err = _tmp$1; return [n, err]; /* */ $s = -1; case -1: } 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.err = err; $f.mr = mr; $f.n = n; $f.p = p; $f.x = x; $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; pipe.ptr.prototype.read = function(b) { var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, 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; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; 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; p = this; $r = p.rl.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $deferred.push([$methodVal(p.rl, "Unlock"), []]); $r = p.l.Lock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $deferred.push([$methodVal(p.l, "Unlock"), []]); /* while (true) { */ case 3: if (!($interfaceIsEqual(p.rerr, $ifaceNil))) { _tmp = 0; _tmp$1 = $pkg.ErrClosedPipe; n = _tmp; err = _tmp$1; return [n, err]; } if (!(p.data === sliceType.nil)) { /* break; */ $s = 4; continue; } if (!($interfaceIsEqual(p.werr, $ifaceNil))) { _tmp$2 = 0; _tmp$3 = p.werr; n = _tmp$2; err = _tmp$3; return [n, err]; } $r = p.rwait.Wait(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ $s = 3; continue; case 4: n = $copySlice(b, p.data); p.data = $subslice(p.data, n); /* */ if (p.data.$length === 0) { $s = 6; continue; } /* */ $s = 7; continue; /* if (p.data.$length === 0) { */ case 6: p.data = sliceType.nil; $r = p.wwait.Signal(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 7: return [n, err]; /* */ $s = -1; case -1: } 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: pipe.ptr.prototype.read }; } $f.$ptr = $ptr; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f.b = b; $f.err = err; $f.n = n; $f.p = p; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } }; pipe.prototype.read = function(b) { return this.$val.read(b); }; pipe.ptr.prototype.write = function(b) { var $ptr, 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; 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; p = this; if (b === sliceType.nil) { b = new sliceType(zero); } $r = p.wl.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $deferred.push([$methodVal(p.wl, "Unlock"), []]); $r = p.l.Lock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $deferred.push([$methodVal(p.l, "Unlock"), []]); if (!($interfaceIsEqual(p.werr, $ifaceNil))) { err = $pkg.ErrClosedPipe; return [n, err]; } p.data = b; $r = p.rwait.Signal(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* while (true) { */ case 4: if (p.data === sliceType.nil) { /* break; */ $s = 5; continue; } if (!($interfaceIsEqual(p.rerr, $ifaceNil))) { err = p.rerr; /* break; */ $s = 5; continue; } if (!($interfaceIsEqual(p.werr, $ifaceNil))) { err = $pkg.ErrClosedPipe; } $r = p.wwait.Wait(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ $s = 4; continue; case 5: n = b.$length - p.data.$length >> 0; p.data = sliceType.nil; return [n, err]; /* */ $s = -1; case -1: } 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: pipe.ptr.prototype.write }; } $f.$ptr = $ptr; $f.b = b; $f.err = err; $f.n = n; $f.p = p; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } }; pipe.prototype.write = function(b) { return this.$val.write(b); }; pipe.ptr.prototype.rclose = function(err) { var $ptr, err, p, $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; 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)) { err = $pkg.ErrClosedPipe; } $r = p.l.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $deferred.push([$methodVal(p.l, "Unlock"), []]); p.rerr = err; $r = p.rwait.Signal(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = p.wwait.Signal(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: pipe.ptr.prototype.rclose }; } $f.$ptr = $ptr; $f.err = err; $f.p = p; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } }; pipe.prototype.rclose = function(err) { return this.$val.rclose(err); }; pipe.ptr.prototype.wclose = function(err) { var $ptr, err, p, $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; 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)) { err = $pkg.EOF; } $r = p.l.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $deferred.push([$methodVal(p.l, "Unlock"), []]); p.werr = err; $r = p.rwait.Signal(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = p.wwait.Signal(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: pipe.ptr.prototype.wclose }; } $f.$ptr = $ptr; $f.err = err; $f.p = p; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } }; pipe.prototype.wclose = function(err) { return this.$val.wclose(err); }; PipeReader.ptr.prototype.Read = function(data) { var $ptr, _r, _tuple, data, 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; data = $f.data; 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.p.read(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]; return [n, err]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: PipeReader.ptr.prototype.Read }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.data = data; $f.err = err; $f.n = n; $f.r = r; $f.$s = $s; $f.$r = $r; return $f; }; PipeReader.prototype.Read = function(data) { return this.$val.Read(data); }; PipeReader.ptr.prototype.Close = 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.CloseWithError($ifaceNil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: PipeReader.ptr.prototype.Close }; } $f.$ptr = $ptr; $f._r = _r; $f.r = r; $f.$s = $s; $f.$r = $r; return $f; }; PipeReader.prototype.Close = function() { return this.$val.Close(); }; PipeReader.ptr.prototype.CloseWithError = function(err) { var $ptr, err, r, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; err = $f.err; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: r = this; $r = r.p.rclose(err); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } return $ifaceNil; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: PipeReader.ptr.prototype.CloseWithError }; } $f.$ptr = $ptr; $f.err = err; $f.r = r; $f.$s = $s; $f.$r = $r; return $f; }; PipeReader.prototype.CloseWithError = function(err) { return this.$val.CloseWithError(err); }; PipeWriter.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.p.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]; return [n, err]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: PipeWriter.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; }; PipeWriter.prototype.Write = function(data) { return this.$val.Write(data); }; PipeWriter.ptr.prototype.Close = 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 = w.CloseWithError($ifaceNil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: PipeWriter.ptr.prototype.Close }; } $f.$ptr = $ptr; $f._r = _r; $f.w = w; $f.$s = $s; $f.$r = $r; return $f; }; PipeWriter.prototype.Close = function() { return this.$val.Close(); }; PipeWriter.ptr.prototype.CloseWithError = function(err) { var $ptr, err, w, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; err = $f.err; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: w = this; $r = w.p.wclose(err); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } return $ifaceNil; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: PipeWriter.ptr.prototype.CloseWithError }; } $f.$ptr = $ptr; $f.err = err; $f.w = w; $f.$s = $s; $f.$r = $r; return $f; }; PipeWriter.prototype.CloseWithError = function(err) { return this.$val.CloseWithError(err); }; Pipe = function() { var $ptr, p, r, w; p = new pipe.ptr(); p.rwait.L = p.l; p.wwait.L = p.l; r = new PipeReader.ptr(p); w = new PipeWriter.ptr(p); return [r, w]; }; $pkg.Pipe = Pipe; ptrType.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)}, {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)}]; ptrType$3.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}]; ptrType$5.methods = [{prop: "read", name: "read", pkg: "io", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "write", name: "write", pkg: "io", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "rclose", name: "rclose", pkg: "io", typ: $funcType([$error], [], false)}, {prop: "wclose", name: "wclose", pkg: "io", typ: $funcType([$error], [], false)}]; ptrType$6.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "CloseWithError", name: "CloseWithError", pkg: "", typ: $funcType([$error], [$error], false)}]; ptrType$7.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "CloseWithError", name: "CloseWithError", pkg: "", typ: $funcType([$error], [$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)}]); 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)}]); ByteWriter.init([{prop: "WriteByte", name: "WriteByte", pkg: "", typ: $funcType([$Uint8], [$error], false)}]); RuneReader.init([{prop: "ReadRune", name: "ReadRune", pkg: "", typ: $funcType([], [$Int32, $Int, $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", pkg: "", typ: Reader, tag: ""}, {prop: "N", name: "N", pkg: "", typ: $Int64, tag: ""}]); SectionReader.init([{prop: "r", name: "r", pkg: "io", typ: ReaderAt, tag: ""}, {prop: "base", name: "base", pkg: "io", typ: $Int64, tag: ""}, {prop: "off", name: "off", pkg: "io", typ: $Int64, tag: ""}, {prop: "limit", name: "limit", pkg: "io", typ: $Int64, tag: ""}]); multiReader.init([{prop: "readers", name: "readers", pkg: "io", typ: sliceType$1, tag: ""}]); pipe.init([{prop: "rl", name: "rl", pkg: "io", typ: sync.Mutex, tag: ""}, {prop: "wl", name: "wl", pkg: "io", typ: sync.Mutex, tag: ""}, {prop: "l", name: "l", pkg: "io", typ: sync.Mutex, tag: ""}, {prop: "data", name: "data", pkg: "io", typ: sliceType, tag: ""}, {prop: "rwait", name: "rwait", pkg: "io", typ: sync.Cond, tag: ""}, {prop: "wwait", name: "wwait", pkg: "io", typ: sync.Cond, tag: ""}, {prop: "rerr", name: "rerr", pkg: "io", typ: $error, tag: ""}, {prop: "werr", name: "werr", pkg: "io", typ: $error, tag: ""}]); PipeReader.init([{prop: "p", name: "p", pkg: "io", typ: ptrType$5, tag: ""}]); PipeWriter.init([{prop: "p", name: "p", pkg: "io", 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 = 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; } zero = arrayType.zero(); $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["math"] = (function() { var $pkg = {}, $init, js, arrayType, arrayType$1, arrayType$2, structType, arrayType$3, math, zero, posInf, negInf, nan, buf, pow10tab, Abs, 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([{prop: "uint32array", name: "uint32array", pkg: "math", typ: arrayType, tag: ""}, {prop: "float32array", name: "float32array", pkg: "math", typ: arrayType$1, tag: ""}, {prop: "float64array", name: "float64array", pkg: "math", typ: arrayType$2, tag: ""}]); arrayType$3 = $arrayType($Float64, 70); Abs = function(x) { var $ptr, x; return abs(x); }; $pkg.Abs = Abs; 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; } else if (x === 0) { return 0; } return x; }; 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]; 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") : pow10tab[i] = ((m < 0 || m >= pow10tab.length) ? $throwRuntimeError("index out of range") : pow10tab[m]) * (x = i - m >> 0, ((x < 0 || x >= pow10tab.length) ? $throwRuntimeError("index out of range") : 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(); 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["unicode"] = (function() { var $pkg = {}, $init, RangeTable, Range16, Range32, CaseRange, d, foldPair, sliceType, sliceType$1, ptrType, sliceType$2, sliceType$3, sliceType$4, _C, _Cc, _Cf, _Co, _Cs, _L, _Ll, _Lm, _Lo, _Lt, _Lu, _M, _Mc, _Me, _Mn, _N, _Nd, _Nl, _No, _P, _Pc, _Pd, _Pe, _Pf, _Pi, _Po, _Ps, _S, _Sc, _Sk, _Sm, _So, _Z, _Zl, _Zp, _Zs, _Arabic, _Armenian, _Avestan, _Balinese, _Bamum, _Bassa_Vah, _Batak, _Bengali, _Bopomofo, _Brahmi, _Braille, _Buginese, _Buhid, _Canadian_Aboriginal, _Carian, _Caucasian_Albanian, _Chakma, _Cham, _Cherokee, _Common, _Coptic, _Cuneiform, _Cypriot, _Cyrillic, _Deseret, _Devanagari, _Duployan, _Egyptian_Hieroglyphs, _Elbasan, _Ethiopic, _Georgian, _Glagolitic, _Gothic, _Grantha, _Greek, _Gujarati, _Gurmukhi, _Han, _Hangul, _Hanunoo, _Hebrew, _Hiragana, _Imperial_Aramaic, _Inherited, _Inscriptional_Pahlavi, _Inscriptional_Parthian, _Javanese, _Kaithi, _Kannada, _Katakana, _Kayah_Li, _Kharoshthi, _Khmer, _Khojki, _Khudawadi, _Lao, _Latin, _Lepcha, _Limbu, _Linear_A, _Linear_B, _Lisu, _Lycian, _Lydian, _Mahajani, _Malayalam, _Mandaic, _Manichaean, _Meetei_Mayek, _Mende_Kikakui, _Meroitic_Cursive, _Meroitic_Hieroglyphs, _Miao, _Modi, _Mongolian, _Mro, _Myanmar, _Nabataean, _New_Tai_Lue, _Nko, _Ogham, _Ol_Chiki, _Old_Italic, _Old_North_Arabian, _Old_Permic, _Old_Persian, _Old_South_Arabian, _Old_Turkic, _Oriya, _Osmanya, _Pahawh_Hmong, _Palmyrene, _Pau_Cin_Hau, _Phags_Pa, _Phoenician, _Psalter_Pahlavi, _Rejang, _Runic, _Samaritan, _Saurashtra, _Sharada, _Shavian, _Siddham, _Sinhala, _Sora_Sompeng, _Sundanese, _Syloti_Nagri, _Syriac, _Tagalog, _Tagbanwa, _Tai_Le, _Tai_Tham, _Tai_Viet, _Takri, _Tamil, _Telugu, _Thaana, _Thai, _Tibetan, _Tifinagh, _Tirhuta, _Ugaritic, _Vai, _Warang_Citi, _Yi, _White_Space, _CaseRanges, properties, caseOrbit, foldCommon, foldGreek, foldInherited, foldL, foldLl, foldLt, foldLu, foldM, foldMn, _map, _key, _map$1, _key$1, _map$3, _key$3, _map$4, _key$4, to, IsDigit, IsPrint, In, IsLetter, IsSpace, is16, is32, Is, isExcludingLatin, To, ToUpper, ToLower, SimpleFold; RangeTable = $pkg.RangeTable = $newType(0, $kindStruct, "unicode.RangeTable", "RangeTable", "unicode", 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", "Range16", "unicode", 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", "Range32", "unicode", 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", "CaseRange", "unicode", function(Lo_, Hi_, Delta_) { this.$val = this; if (arguments.length === 0) { this.Lo = 0; this.Hi = 0; this.Delta = d.zero(); return; } this.Lo = Lo_; this.Hi = Hi_; this.Delta = Delta_; }); d = $pkg.d = $newType(12, $kindArray, "unicode.d", "d", "unicode", null); foldPair = $pkg.foldPair = $newType(0, $kindStruct, "unicode.foldPair", "foldPair", "unicode", function(From_, To_) { this.$val = this; if (arguments.length === 0) { this.From = 0; this.To = 0; return; } this.From = From_; this.To = To_; }); sliceType = $sliceType(Range16); sliceType$1 = $sliceType(Range32); ptrType = $ptrType(RangeTable); sliceType$2 = $sliceType(ptrType); 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") : 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") : 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; IsPrint = 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") : properties[x])) & 128) >>> 0) === 0)); } return In(r, $pkg.PrintRanges); }; $pkg.IsPrint = IsPrint; In = function(r, ranges) { var $ptr, _i, _ref, inside, r, ranges; _ref = ranges; _i = 0; while (true) { if (!(_i < _ref.$length)) { break; } inside = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]); if (Is(inside, r)) { return true; } _i++; } return false; }; $pkg.In = In; 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") : properties[x])) & 96) >>> 0) === 0)); } return isExcludingLatin($pkg.Letter, r); }; $pkg.IsLetter = IsLetter; IsSpace = function(r) { var $ptr, _ref, r; if ((r >>> 0) <= 255) { _ref = r; if (_ref === 9 || _ref === 10 || _ref === 11 || _ref === 12 || _ref === 13 || _ref === 32 || _ref === 133 || _ref === 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") : 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") : 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") : 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") : 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; }; Is = function(rangeTab, r) { var $ptr, r, r16, r32, rangeTab, x; r16 = rangeTab.R16; if (r16.$length > 0 && r <= ((x = r16.$length - 1 >> 0, ((x < 0 || x >= r16.$length) ? $throwRuntimeError("index out of range") : r16.$array[r16.$offset + x])).Hi >> 0)) { return is16(r16, (r << 16 >>> 16)); } r32 = rangeTab.R32; if (r32.$length > 0 && r >= ((0 >= r32.$length ? $throwRuntimeError("index out of range") : r32.$array[r32.$offset + 0]).Lo >> 0)) { return is32(r32, (r >>> 0)); } return false; }; $pkg.Is = Is; 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") : 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") : 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; 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") : 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") : caseOrbit.$array[caseOrbit.$offset + lo]).From >> 0) === r)) { return (((lo < 0 || lo >= caseOrbit.$length) ? $throwRuntimeError("index out of range") : 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", pkg: "", typ: sliceType, tag: ""}, {prop: "R32", name: "R32", pkg: "", typ: sliceType$1, tag: ""}, {prop: "LatinOffset", name: "LatinOffset", pkg: "", typ: $Int, tag: ""}]); Range16.init([{prop: "Lo", name: "Lo", pkg: "", typ: $Uint16, tag: ""}, {prop: "Hi", name: "Hi", pkg: "", typ: $Uint16, tag: ""}, {prop: "Stride", name: "Stride", pkg: "", typ: $Uint16, tag: ""}]); Range32.init([{prop: "Lo", name: "Lo", pkg: "", typ: $Uint32, tag: ""}, {prop: "Hi", name: "Hi", pkg: "", typ: $Uint32, tag: ""}, {prop: "Stride", name: "Stride", pkg: "", typ: $Uint32, tag: ""}]); CaseRange.init([{prop: "Lo", name: "Lo", pkg: "", typ: $Uint32, tag: ""}, {prop: "Hi", name: "Hi", pkg: "", typ: $Uint32, tag: ""}, {prop: "Delta", name: "Delta", pkg: "", typ: d, tag: ""}]); d.init($Int32, 3); foldPair.init([{prop: "From", name: "From", pkg: "", typ: $Uint16, tag: ""}, {prop: "To", name: "To", pkg: "", 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: _C = new RangeTable.ptr(new sliceType([new Range16.ptr(1, 31, 1), new Range16.ptr(127, 159, 1), new Range16.ptr(173, 1536, 1363), new Range16.ptr(1537, 1541, 1), new Range16.ptr(1564, 1757, 193), new Range16.ptr(1807, 6158, 4351), new Range16.ptr(8203, 8207, 1), new Range16.ptr(8234, 8238, 1), new Range16.ptr(8288, 8292, 1), new Range16.ptr(8294, 8303, 1), new Range16.ptr(55296, 63743, 1), new Range16.ptr(65279, 65529, 250), new Range16.ptr(65530, 65531, 1)]), new sliceType$1([new Range32.ptr(69821, 113824, 44003), new Range32.ptr(113825, 113827, 1), new Range32.ptr(119155, 119162, 1), new Range32.ptr(917505, 917536, 31), new Range32.ptr(917537, 917631, 1), new Range32.ptr(983040, 1048573, 1), new Range32.ptr(1048576, 1114109, 1)]), 2); _Cc = new RangeTable.ptr(new sliceType([new Range16.ptr(1, 31, 1), new Range16.ptr(127, 159, 1)]), sliceType$1.nil, 2); _Cf = new RangeTable.ptr(new sliceType([new Range16.ptr(173, 1536, 1363), new Range16.ptr(1537, 1541, 1), new Range16.ptr(1564, 1757, 193), new Range16.ptr(1807, 6158, 4351), new Range16.ptr(8203, 8207, 1), new Range16.ptr(8234, 8238, 1), new Range16.ptr(8288, 8292, 1), new Range16.ptr(8294, 8303, 1), new Range16.ptr(65279, 65529, 250), new Range16.ptr(65530, 65531, 1)]), new sliceType$1([new Range32.ptr(69821, 113824, 44003), new Range32.ptr(113825, 113827, 1), new Range32.ptr(119155, 119162, 1), new Range32.ptr(917505, 917536, 31), new Range32.ptr(917537, 917631, 1)]), 0); _Co = new RangeTable.ptr(new sliceType([new Range16.ptr(57344, 63743, 1)]), new sliceType$1([new Range32.ptr(983040, 1048573, 1), new Range32.ptr(1048576, 1114109, 1)]), 0); _Cs = new RangeTable.ptr(new sliceType([new Range16.ptr(55296, 57343, 1)]), sliceType$1.nil, 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, 2226, 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(2821, 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, 3168, 7), new Range16.ptr(3169, 3205, 36), 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(3424, 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, 5108, 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, 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(6593, 6599, 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(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, 40908, 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, 42894, 1), new Range16.ptr(42896, 42925, 1), new Range16.ptr(42928, 42929, 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, 43274, 15), new Range16.ptr(43275, 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, 43871, 1), new Range16.ptr(43876, 43877, 1), new Range16.ptr(43968, 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(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(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(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, 70144, 38), new Range32.ptr(70145, 70161, 1), new Range32.ptr(70163, 70187, 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, 70493, 32), new Range32.ptr(70494, 70497, 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(71168, 71215, 1), new Range32.ptr(71236, 71296, 60), new Range32.ptr(71297, 71338, 1), new Range32.ptr(71840, 71903, 1), new Range32.ptr(71935, 72384, 449), new Range32.ptr(72385, 72440, 1), new Range32.ptr(73728, 74648, 1), new Range32.ptr(77824, 78894, 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(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(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(194560, 195101, 1)]), 6); _Ll = new RangeTable.ptr(new sliceType([new Range16.ptr(97, 122, 1), new Range16.ptr(181, 223, 42), new Range16.ptr(224, 246, 1), new Range16.ptr(248, 255, 1), new Range16.ptr(257, 311, 2), new Range16.ptr(312, 328, 2), new Range16.ptr(329, 375, 2), new Range16.ptr(378, 382, 2), new Range16.ptr(383, 384, 1), new Range16.ptr(387, 389, 2), new Range16.ptr(392, 396, 4), new Range16.ptr(397, 402, 5), new Range16.ptr(405, 409, 4), new Range16.ptr(410, 411, 1), new Range16.ptr(414, 417, 3), new Range16.ptr(419, 421, 2), new Range16.ptr(424, 426, 2), new Range16.ptr(427, 429, 2), new Range16.ptr(432, 436, 4), new Range16.ptr(438, 441, 3), new Range16.ptr(442, 445, 3), new Range16.ptr(446, 447, 1), new Range16.ptr(454, 460, 3), new Range16.ptr(462, 476, 2), new Range16.ptr(477, 495, 2), new Range16.ptr(496, 499, 3), new Range16.ptr(501, 505, 4), new Range16.ptr(507, 563, 2), new Range16.ptr(564, 569, 1), new Range16.ptr(572, 575, 3), new Range16.ptr(576, 578, 2), new Range16.ptr(583, 591, 2), new Range16.ptr(592, 659, 1), new Range16.ptr(661, 687, 1), new Range16.ptr(881, 883, 2), new Range16.ptr(887, 891, 4), new Range16.ptr(892, 893, 1), new Range16.ptr(912, 940, 28), new Range16.ptr(941, 974, 1), new Range16.ptr(976, 977, 1), new Range16.ptr(981, 983, 1), new Range16.ptr(985, 1007, 2), new Range16.ptr(1008, 1011, 1), new Range16.ptr(1013, 1019, 3), new Range16.ptr(1020, 1072, 52), new Range16.ptr(1073, 1119, 1), new Range16.ptr(1121, 1153, 2), new Range16.ptr(1163, 1215, 2), new Range16.ptr(1218, 1230, 2), new Range16.ptr(1231, 1327, 2), new Range16.ptr(1377, 1415, 1), new Range16.ptr(7424, 7467, 1), new Range16.ptr(7531, 7543, 1), new Range16.ptr(7545, 7578, 1), new Range16.ptr(7681, 7829, 2), new Range16.ptr(7830, 7837, 1), new Range16.ptr(7839, 7935, 2), new Range16.ptr(7936, 7943, 1), new Range16.ptr(7952, 7957, 1), new Range16.ptr(7968, 7975, 1), new Range16.ptr(7984, 7991, 1), new Range16.ptr(8000, 8005, 1), new Range16.ptr(8016, 8023, 1), new Range16.ptr(8032, 8039, 1), new Range16.ptr(8048, 8061, 1), new Range16.ptr(8064, 8071, 1), new Range16.ptr(8080, 8087, 1), new Range16.ptr(8096, 8103, 1), new Range16.ptr(8112, 8116, 1), new Range16.ptr(8118, 8119, 1), new Range16.ptr(8126, 8130, 4), new Range16.ptr(8131, 8132, 1), new Range16.ptr(8134, 8135, 1), new Range16.ptr(8144, 8147, 1), new Range16.ptr(8150, 8151, 1), new Range16.ptr(8160, 8167, 1), new Range16.ptr(8178, 8180, 1), new Range16.ptr(8182, 8183, 1), new Range16.ptr(8458, 8462, 4), new Range16.ptr(8463, 8467, 4), new Range16.ptr(8495, 8505, 5), new Range16.ptr(8508, 8509, 1), new Range16.ptr(8518, 8521, 1), new Range16.ptr(8526, 8580, 54), new Range16.ptr(11312, 11358, 1), new Range16.ptr(11361, 11365, 4), new Range16.ptr(11366, 11372, 2), new Range16.ptr(11377, 11379, 2), new Range16.ptr(11380, 11382, 2), new Range16.ptr(11383, 11387, 1), new Range16.ptr(11393, 11491, 2), new Range16.ptr(11492, 11500, 8), new Range16.ptr(11502, 11507, 5), new Range16.ptr(11520, 11557, 1), new Range16.ptr(11559, 11565, 6), new Range16.ptr(42561, 42605, 2), new Range16.ptr(42625, 42651, 2), new Range16.ptr(42787, 42799, 2), new Range16.ptr(42800, 42801, 1), new Range16.ptr(42803, 42865, 2), new Range16.ptr(42866, 42872, 1), new Range16.ptr(42874, 42876, 2), new Range16.ptr(42879, 42887, 2), new Range16.ptr(42892, 42894, 2), new Range16.ptr(42897, 42899, 2), new Range16.ptr(42900, 42901, 1), new Range16.ptr(42903, 42921, 2), new Range16.ptr(43002, 43824, 822), new Range16.ptr(43825, 43866, 1), new Range16.ptr(43876, 43877, 1), new Range16.ptr(64256, 64262, 1), new Range16.ptr(64275, 64279, 1), new Range16.ptr(65345, 65370, 1)]), new sliceType$1([new Range32.ptr(66600, 66639, 1), new Range32.ptr(71872, 71903, 1), new Range32.ptr(119834, 119859, 1), new Range32.ptr(119886, 119892, 1), new Range32.ptr(119894, 119911, 1), new Range32.ptr(119938, 119963, 1), new Range32.ptr(119990, 119993, 1), new Range32.ptr(119995, 119997, 2), new Range32.ptr(119998, 120003, 1), new Range32.ptr(120005, 120015, 1), new Range32.ptr(120042, 120067, 1), new Range32.ptr(120094, 120119, 1), new Range32.ptr(120146, 120171, 1), new Range32.ptr(120198, 120223, 1), new Range32.ptr(120250, 120275, 1), new Range32.ptr(120302, 120327, 1), new Range32.ptr(120354, 120379, 1), new Range32.ptr(120406, 120431, 1), new Range32.ptr(120458, 120485, 1), new Range32.ptr(120514, 120538, 1), new Range32.ptr(120540, 120545, 1), new Range32.ptr(120572, 120596, 1), new Range32.ptr(120598, 120603, 1), new Range32.ptr(120630, 120654, 1), new Range32.ptr(120656, 120661, 1), new Range32.ptr(120688, 120712, 1), new Range32.ptr(120714, 120719, 1), new Range32.ptr(120746, 120770, 1), new Range32.ptr(120772, 120777, 1), new Range32.ptr(120779, 120779, 1)]), 4); _Lm = new RangeTable.ptr(new sliceType([new Range16.ptr(688, 705, 1), new Range16.ptr(710, 721, 1), new Range16.ptr(736, 740, 1), new Range16.ptr(748, 750, 2), new Range16.ptr(884, 890, 6), new Range16.ptr(1369, 1600, 231), new Range16.ptr(1765, 1766, 1), new Range16.ptr(2036, 2037, 1), new Range16.ptr(2042, 2074, 32), new Range16.ptr(2084, 2088, 4), new Range16.ptr(2417, 3654, 1237), new Range16.ptr(3782, 4348, 566), new Range16.ptr(6103, 6211, 108), new Range16.ptr(6823, 7288, 465), new Range16.ptr(7289, 7293, 1), new Range16.ptr(7468, 7530, 1), new Range16.ptr(7544, 7579, 35), new Range16.ptr(7580, 7615, 1), new Range16.ptr(8305, 8319, 14), new Range16.ptr(8336, 8348, 1), new Range16.ptr(11388, 11389, 1), new Range16.ptr(11631, 11823, 192), new Range16.ptr(12293, 12337, 44), new Range16.ptr(12338, 12341, 1), new Range16.ptr(12347, 12445, 98), new Range16.ptr(12446, 12540, 94), new Range16.ptr(12541, 12542, 1), new Range16.ptr(40981, 42232, 1251), new Range16.ptr(42233, 42237, 1), new Range16.ptr(42508, 42623, 115), new Range16.ptr(42652, 42653, 1), new Range16.ptr(42775, 42783, 1), new Range16.ptr(42864, 42888, 24), new Range16.ptr(43000, 43001, 1), new Range16.ptr(43471, 43494, 23), new Range16.ptr(43632, 43741, 109), new Range16.ptr(43763, 43764, 1), new Range16.ptr(43868, 43871, 1), new Range16.ptr(65392, 65438, 46), new Range16.ptr(65439, 65439, 1)]), new sliceType$1([new Range32.ptr(92992, 92992, 1), new Range32.ptr(92993, 92995, 1), new Range32.ptr(94099, 94111, 1)]), 0); _Lo = new RangeTable.ptr(new sliceType([new Range16.ptr(170, 186, 16), new Range16.ptr(443, 448, 5), new Range16.ptr(449, 451, 1), new Range16.ptr(660, 1488, 828), new Range16.ptr(1489, 1514, 1), new Range16.ptr(1520, 1522, 1), new Range16.ptr(1568, 1599, 1), new Range16.ptr(1601, 1610, 1), new Range16.ptr(1646, 1647, 1), new Range16.ptr(1649, 1747, 1), new Range16.ptr(1749, 1774, 25), 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(2048, 2069, 1), new Range16.ptr(2112, 2136, 1), new Range16.ptr(2208, 2226, 1), new Range16.ptr(2308, 2361, 1), new Range16.ptr(2365, 2384, 19), new Range16.ptr(2392, 2401, 1), new Range16.ptr(2418, 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(2821, 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, 3168, 7), new Range16.ptr(3169, 3205, 36), 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(3424, 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, 3653, 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(3804, 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, 4304, 66), new Range16.ptr(4305, 4346, 1), new Range16.ptr(4349, 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, 5108, 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(6108, 6176, 68), new Range16.ptr(6177, 6210, 1), new Range16.ptr(6212, 6263, 1), new Range16.ptr(6272, 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(6593, 6599, 1), new Range16.ptr(6656, 6678, 1), new Range16.ptr(6688, 6740, 1), new Range16.ptr(6917, 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, 7287, 1), new Range16.ptr(7401, 7404, 1), new Range16.ptr(7406, 7409, 1), new Range16.ptr(7413, 7414, 1), new Range16.ptr(8501, 8504, 1), new Range16.ptr(11568, 11623, 1), new Range16.ptr(11648, 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(12294, 12348, 54), new Range16.ptr(12353, 12438, 1), new Range16.ptr(12447, 12449, 2), new Range16.ptr(12450, 12538, 1), new Range16.ptr(12543, 12549, 6), new Range16.ptr(12550, 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, 40908, 1), new Range16.ptr(40960, 40980, 1), new Range16.ptr(40982, 42124, 1), new Range16.ptr(42192, 42231, 1), new Range16.ptr(42240, 42507, 1), new Range16.ptr(42512, 42527, 1), new Range16.ptr(42538, 42539, 1), new Range16.ptr(42606, 42656, 50), new Range16.ptr(42657, 42725, 1), new Range16.ptr(42999, 43003, 4), new Range16.ptr(43004, 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, 43274, 15), new Range16.ptr(43275, 43301, 1), new Range16.ptr(43312, 43334, 1), new Range16.ptr(43360, 43388, 1), new Range16.ptr(43396, 43442, 1), new Range16.ptr(43488, 43492, 1), new Range16.ptr(43495, 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, 43631, 1), new Range16.ptr(43633, 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, 43740, 1), new Range16.ptr(43744, 43754, 1), new Range16.ptr(43762, 43777, 15), new Range16.ptr(43778, 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(43968, 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(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(65382, 65391, 1), new Range16.ptr(65393, 65437, 1), new Range16.ptr(65440, 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(66640, 66717, 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(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(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, 70144, 38), new Range32.ptr(70145, 70161, 1), new Range32.ptr(70163, 70187, 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, 70493, 32), new Range32.ptr(70494, 70497, 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(71168, 71215, 1), new Range32.ptr(71236, 71296, 60), new Range32.ptr(71297, 71338, 1), new Range32.ptr(71935, 72384, 449), new Range32.ptr(72385, 72440, 1), new Range32.ptr(73728, 74648, 1), new Range32.ptr(77824, 78894, 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(93027, 93047, 1), new Range32.ptr(93053, 93071, 1), new Range32.ptr(93952, 94020, 1), new Range32.ptr(94032, 110592, 16560), new Range32.ptr(110593, 113664, 3071), new Range32.ptr(113665, 113770, 1), new Range32.ptr(113776, 113788, 1), new Range32.ptr(113792, 113800, 1), new Range32.ptr(113808, 113817, 1), new Range32.ptr(124928, 125124, 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(194560, 195101, 1)]), 1); _Lt = new RangeTable.ptr(new sliceType([new Range16.ptr(453, 459, 3), new Range16.ptr(498, 8072, 7574), new Range16.ptr(8073, 8079, 1), new Range16.ptr(8088, 8095, 1), new Range16.ptr(8104, 8111, 1), new Range16.ptr(8124, 8140, 16), new Range16.ptr(8188, 8188, 1)]), sliceType$1.nil, 0); _Lu = new RangeTable.ptr(new sliceType([new Range16.ptr(65, 90, 1), new Range16.ptr(192, 214, 1), new Range16.ptr(216, 222, 1), new Range16.ptr(256, 310, 2), new Range16.ptr(313, 327, 2), new Range16.ptr(330, 376, 2), new Range16.ptr(377, 381, 2), new Range16.ptr(385, 386, 1), new Range16.ptr(388, 390, 2), new Range16.ptr(391, 393, 2), new Range16.ptr(394, 395, 1), new Range16.ptr(398, 401, 1), new Range16.ptr(403, 404, 1), new Range16.ptr(406, 408, 1), new Range16.ptr(412, 413, 1), new Range16.ptr(415, 416, 1), new Range16.ptr(418, 422, 2), new Range16.ptr(423, 425, 2), new Range16.ptr(428, 430, 2), new Range16.ptr(431, 433, 2), new Range16.ptr(434, 435, 1), new Range16.ptr(437, 439, 2), new Range16.ptr(440, 444, 4), new Range16.ptr(452, 461, 3), new Range16.ptr(463, 475, 2), new Range16.ptr(478, 494, 2), new Range16.ptr(497, 500, 3), new Range16.ptr(502, 504, 1), new Range16.ptr(506, 562, 2), new Range16.ptr(570, 571, 1), new Range16.ptr(573, 574, 1), new Range16.ptr(577, 579, 2), new Range16.ptr(580, 582, 1), new Range16.ptr(584, 590, 2), new Range16.ptr(880, 882, 2), new Range16.ptr(886, 895, 9), new Range16.ptr(902, 904, 2), new Range16.ptr(905, 906, 1), new Range16.ptr(908, 910, 2), new Range16.ptr(911, 913, 2), new Range16.ptr(914, 929, 1), new Range16.ptr(931, 939, 1), new Range16.ptr(975, 978, 3), new Range16.ptr(979, 980, 1), new Range16.ptr(984, 1006, 2), new Range16.ptr(1012, 1015, 3), new Range16.ptr(1017, 1018, 1), new Range16.ptr(1021, 1071, 1), new Range16.ptr(1120, 1152, 2), new Range16.ptr(1162, 1216, 2), new Range16.ptr(1217, 1229, 2), new Range16.ptr(1232, 1326, 2), new Range16.ptr(1329, 1366, 1), new Range16.ptr(4256, 4293, 1), new Range16.ptr(4295, 4301, 6), new Range16.ptr(7680, 7828, 2), new Range16.ptr(7838, 7934, 2), new Range16.ptr(7944, 7951, 1), new Range16.ptr(7960, 7965, 1), new Range16.ptr(7976, 7983, 1), new Range16.ptr(7992, 7999, 1), new Range16.ptr(8008, 8013, 1), new Range16.ptr(8025, 8031, 2), new Range16.ptr(8040, 8047, 1), new Range16.ptr(8120, 8123, 1), new Range16.ptr(8136, 8139, 1), new Range16.ptr(8152, 8155, 1), new Range16.ptr(8168, 8172, 1), new Range16.ptr(8184, 8187, 1), new Range16.ptr(8450, 8455, 5), new Range16.ptr(8459, 8461, 1), new Range16.ptr(8464, 8466, 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(8496, 8499, 1), new Range16.ptr(8510, 8511, 1), new Range16.ptr(8517, 8579, 62), new Range16.ptr(11264, 11310, 1), new Range16.ptr(11360, 11362, 2), new Range16.ptr(11363, 11364, 1), new Range16.ptr(11367, 11373, 2), new Range16.ptr(11374, 11376, 1), new Range16.ptr(11378, 11381, 3), new Range16.ptr(11390, 11392, 1), new Range16.ptr(11394, 11490, 2), new Range16.ptr(11499, 11501, 2), new Range16.ptr(11506, 42560, 31054), new Range16.ptr(42562, 42604, 2), new Range16.ptr(42624, 42650, 2), new Range16.ptr(42786, 42798, 2), new Range16.ptr(42802, 42862, 2), new Range16.ptr(42873, 42877, 2), new Range16.ptr(42878, 42886, 2), new Range16.ptr(42891, 42893, 2), new Range16.ptr(42896, 42898, 2), new Range16.ptr(42902, 42922, 2), new Range16.ptr(42923, 42925, 1), new Range16.ptr(42928, 42929, 1), new Range16.ptr(65313, 65338, 1)]), new sliceType$1([new Range32.ptr(66560, 66599, 1), new Range32.ptr(71840, 71871, 1), new Range32.ptr(119808, 119833, 1), new Range32.ptr(119860, 119885, 1), new Range32.ptr(119912, 119937, 1), new Range32.ptr(119964, 119966, 2), new Range32.ptr(119967, 119973, 3), new Range32.ptr(119974, 119977, 3), new Range32.ptr(119978, 119980, 1), new Range32.ptr(119982, 119989, 1), new Range32.ptr(120016, 120041, 1), new Range32.ptr(120068, 120069, 1), new Range32.ptr(120071, 120074, 1), new Range32.ptr(120077, 120084, 1), new Range32.ptr(120086, 120092, 1), new Range32.ptr(120120, 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(120172, 120197, 1), new Range32.ptr(120224, 120249, 1), new Range32.ptr(120276, 120301, 1), new Range32.ptr(120328, 120353, 1), new Range32.ptr(120380, 120405, 1), new Range32.ptr(120432, 120457, 1), new Range32.ptr(120488, 120512, 1), new Range32.ptr(120546, 120570, 1), new Range32.ptr(120604, 120628, 1), new Range32.ptr(120662, 120686, 1), new Range32.ptr(120720, 120744, 1), new Range32.ptr(120778, 120778, 1)]), 3); _M = new RangeTable.ptr(new sliceType([new Range16.ptr(768, 879, 1), new Range16.ptr(1155, 1161, 1), new Range16.ptr(1425, 1469, 1), new Range16.ptr(1471, 1473, 2), new Range16.ptr(1474, 1476, 2), new Range16.ptr(1477, 1479, 2), new Range16.ptr(1552, 1562, 1), new Range16.ptr(1611, 1631, 1), new Range16.ptr(1648, 1750, 102), new Range16.ptr(1751, 1756, 1), new Range16.ptr(1759, 1764, 1), new Range16.ptr(1767, 1768, 1), new Range16.ptr(1770, 1773, 1), new Range16.ptr(1809, 1840, 31), new Range16.ptr(1841, 1866, 1), new Range16.ptr(1958, 1968, 1), new Range16.ptr(2027, 2035, 1), new Range16.ptr(2070, 2073, 1), new Range16.ptr(2075, 2083, 1), new Range16.ptr(2085, 2087, 1), new Range16.ptr(2089, 2093, 1), new Range16.ptr(2137, 2139, 1), new Range16.ptr(2276, 2307, 1), new Range16.ptr(2362, 2364, 1), new Range16.ptr(2366, 2383, 1), new Range16.ptr(2385, 2391, 1), new Range16.ptr(2402, 2403, 1), new Range16.ptr(2433, 2435, 1), new Range16.ptr(2492, 2494, 2), new Range16.ptr(2495, 2500, 1), new Range16.ptr(2503, 2504, 1), new Range16.ptr(2507, 2509, 1), new Range16.ptr(2519, 2530, 11), new Range16.ptr(2531, 2561, 30), new Range16.ptr(2562, 2563, 1), new Range16.ptr(2620, 2622, 2), new Range16.ptr(2623, 2626, 1), new Range16.ptr(2631, 2632, 1), new Range16.ptr(2635, 2637, 1), new Range16.ptr(2641, 2672, 31), new Range16.ptr(2673, 2677, 4), new Range16.ptr(2689, 2691, 1), new Range16.ptr(2748, 2750, 2), new Range16.ptr(2751, 2757, 1), new Range16.ptr(2759, 2761, 1), new Range16.ptr(2763, 2765, 1), new Range16.ptr(2786, 2787, 1), new Range16.ptr(2817, 2819, 1), new Range16.ptr(2876, 2878, 2), new Range16.ptr(2879, 2884, 1), new Range16.ptr(2887, 2888, 1), new Range16.ptr(2891, 2893, 1), new Range16.ptr(2902, 2903, 1), new Range16.ptr(2914, 2915, 1), new Range16.ptr(2946, 3006, 60), new Range16.ptr(3007, 3010, 1), new Range16.ptr(3014, 3016, 1), new Range16.ptr(3018, 3021, 1), new Range16.ptr(3031, 3072, 41), new Range16.ptr(3073, 3075, 1), new Range16.ptr(3134, 3140, 1), new Range16.ptr(3142, 3144, 1), new Range16.ptr(3146, 3149, 1), new Range16.ptr(3157, 3158, 1), new Range16.ptr(3170, 3171, 1), new Range16.ptr(3201, 3203, 1), new Range16.ptr(3260, 3262, 2), new Range16.ptr(3263, 3268, 1), new Range16.ptr(3270, 3272, 1), new Range16.ptr(3274, 3277, 1), new Range16.ptr(3285, 3286, 1), new Range16.ptr(3298, 3299, 1), new Range16.ptr(3329, 3331, 1), new Range16.ptr(3390, 3396, 1), new Range16.ptr(3398, 3400, 1), new Range16.ptr(3402, 3405, 1), new Range16.ptr(3415, 3426, 11), new Range16.ptr(3427, 3458, 31), new Range16.ptr(3459, 3530, 71), new Range16.ptr(3535, 3540, 1), new Range16.ptr(3542, 3544, 2), new Range16.ptr(3545, 3551, 1), new Range16.ptr(3570, 3571, 1), new Range16.ptr(3633, 3636, 3), new Range16.ptr(3637, 3642, 1), new Range16.ptr(3655, 3662, 1), new Range16.ptr(3761, 3764, 3), new Range16.ptr(3765, 3769, 1), new Range16.ptr(3771, 3772, 1), new Range16.ptr(3784, 3789, 1), new Range16.ptr(3864, 3865, 1), new Range16.ptr(3893, 3897, 2), new Range16.ptr(3902, 3903, 1), new Range16.ptr(3953, 3972, 1), new Range16.ptr(3974, 3975, 1), new Range16.ptr(3981, 3991, 1), new Range16.ptr(3993, 4028, 1), new Range16.ptr(4038, 4139, 101), new Range16.ptr(4140, 4158, 1), new Range16.ptr(4182, 4185, 1), new Range16.ptr(4190, 4192, 1), new Range16.ptr(4194, 4196, 1), new Range16.ptr(4199, 4205, 1), new Range16.ptr(4209, 4212, 1), new Range16.ptr(4226, 4237, 1), new Range16.ptr(4239, 4250, 11), new Range16.ptr(4251, 4253, 1), new Range16.ptr(4957, 4959, 1), new Range16.ptr(5906, 5908, 1), new Range16.ptr(5938, 5940, 1), new Range16.ptr(5970, 5971, 1), new Range16.ptr(6002, 6003, 1), new Range16.ptr(6068, 6099, 1), new Range16.ptr(6109, 6155, 46), new Range16.ptr(6156, 6157, 1), new Range16.ptr(6313, 6432, 119), new Range16.ptr(6433, 6443, 1), new Range16.ptr(6448, 6459, 1), new Range16.ptr(6576, 6592, 1), new Range16.ptr(6600, 6601, 1), new Range16.ptr(6679, 6683, 1), new Range16.ptr(6741, 6750, 1), new Range16.ptr(6752, 6780, 1), new Range16.ptr(6783, 6832, 49), new Range16.ptr(6833, 6846, 1), new Range16.ptr(6912, 6916, 1), new Range16.ptr(6964, 6980, 1), new Range16.ptr(7019, 7027, 1), new Range16.ptr(7040, 7042, 1), new Range16.ptr(7073, 7085, 1), new Range16.ptr(7142, 7155, 1), new Range16.ptr(7204, 7223, 1), new Range16.ptr(7376, 7378, 1), new Range16.ptr(7380, 7400, 1), new Range16.ptr(7405, 7410, 5), new Range16.ptr(7411, 7412, 1), new Range16.ptr(7416, 7417, 1), new Range16.ptr(7616, 7669, 1), new Range16.ptr(7676, 7679, 1), new Range16.ptr(8400, 8432, 1), new Range16.ptr(11503, 11505, 1), new Range16.ptr(11647, 11744, 97), new Range16.ptr(11745, 11775, 1), new Range16.ptr(12330, 12335, 1), new Range16.ptr(12441, 12442, 1), new Range16.ptr(42607, 42610, 1), new Range16.ptr(42612, 42621, 1), new Range16.ptr(42655, 42736, 81), new Range16.ptr(42737, 43010, 273), new Range16.ptr(43014, 43019, 5), new Range16.ptr(43043, 43047, 1), new Range16.ptr(43136, 43137, 1), new Range16.ptr(43188, 43204, 1), new Range16.ptr(43232, 43249, 1), new Range16.ptr(43302, 43309, 1), new Range16.ptr(43335, 43347, 1), new Range16.ptr(43392, 43395, 1), new Range16.ptr(43443, 43456, 1), new Range16.ptr(43493, 43561, 68), new Range16.ptr(43562, 43574, 1), new Range16.ptr(43587, 43596, 9), new Range16.ptr(43597, 43643, 46), new Range16.ptr(43644, 43645, 1), new Range16.ptr(43696, 43698, 2), new Range16.ptr(43699, 43700, 1), new Range16.ptr(43703, 43704, 1), new Range16.ptr(43710, 43711, 1), new Range16.ptr(43713, 43755, 42), new Range16.ptr(43756, 43759, 1), new Range16.ptr(43765, 43766, 1), new Range16.ptr(44003, 44010, 1), new Range16.ptr(44012, 44013, 1), new Range16.ptr(64286, 65024, 738), new Range16.ptr(65025, 65039, 1), new Range16.ptr(65056, 65069, 1)]), new sliceType$1([new Range32.ptr(66045, 66272, 227), new Range32.ptr(66422, 66426, 1), new Range32.ptr(68097, 68099, 1), new Range32.ptr(68101, 68102, 1), new Range32.ptr(68108, 68111, 1), new Range32.ptr(68152, 68154, 1), new Range32.ptr(68159, 68325, 166), new Range32.ptr(68326, 69632, 1306), new Range32.ptr(69633, 69634, 1), new Range32.ptr(69688, 69702, 1), new Range32.ptr(69759, 69762, 1), new Range32.ptr(69808, 69818, 1), new Range32.ptr(69888, 69890, 1), new Range32.ptr(69927, 69940, 1), new Range32.ptr(70003, 70016, 13), new Range32.ptr(70017, 70018, 1), new Range32.ptr(70067, 70080, 1), new Range32.ptr(70188, 70199, 1), new Range32.ptr(70367, 70378, 1), new Range32.ptr(70401, 70403, 1), new Range32.ptr(70460, 70462, 2), new Range32.ptr(70463, 70468, 1), new Range32.ptr(70471, 70472, 1), new Range32.ptr(70475, 70477, 1), new Range32.ptr(70487, 70498, 11), new Range32.ptr(70499, 70502, 3), new Range32.ptr(70503, 70508, 1), new Range32.ptr(70512, 70516, 1), new Range32.ptr(70832, 70851, 1), new Range32.ptr(71087, 71093, 1), new Range32.ptr(71096, 71104, 1), new Range32.ptr(71216, 71232, 1), new Range32.ptr(71339, 71351, 1), new Range32.ptr(92912, 92916, 1), new Range32.ptr(92976, 92982, 1), new Range32.ptr(94033, 94078, 1), new Range32.ptr(94095, 94098, 1), new Range32.ptr(113821, 113822, 1), new Range32.ptr(119141, 119145, 1), new Range32.ptr(119149, 119154, 1), new Range32.ptr(119163, 119170, 1), new Range32.ptr(119173, 119179, 1), new Range32.ptr(119210, 119213, 1), new Range32.ptr(119362, 119364, 1), new Range32.ptr(125136, 125142, 1), new Range32.ptr(917760, 917999, 1)]), 0); _Mc = new RangeTable.ptr(new sliceType([new Range16.ptr(2307, 2363, 56), new Range16.ptr(2366, 2368, 1), new Range16.ptr(2377, 2380, 1), new Range16.ptr(2382, 2383, 1), new Range16.ptr(2434, 2435, 1), new Range16.ptr(2494, 2496, 1), new Range16.ptr(2503, 2504, 1), new Range16.ptr(2507, 2508, 1), new Range16.ptr(2519, 2563, 44), new Range16.ptr(2622, 2624, 1), new Range16.ptr(2691, 2750, 59), new Range16.ptr(2751, 2752, 1), new Range16.ptr(2761, 2763, 2), new Range16.ptr(2764, 2818, 54), new Range16.ptr(2819, 2878, 59), new Range16.ptr(2880, 2887, 7), new Range16.ptr(2888, 2891, 3), new Range16.ptr(2892, 2903, 11), new Range16.ptr(3006, 3007, 1), new Range16.ptr(3009, 3010, 1), new Range16.ptr(3014, 3016, 1), new Range16.ptr(3018, 3020, 1), new Range16.ptr(3031, 3073, 42), new Range16.ptr(3074, 3075, 1), new Range16.ptr(3137, 3140, 1), new Range16.ptr(3202, 3203, 1), new Range16.ptr(3262, 3264, 2), new Range16.ptr(3265, 3268, 1), new Range16.ptr(3271, 3272, 1), new Range16.ptr(3274, 3275, 1), new Range16.ptr(3285, 3286, 1), new Range16.ptr(3330, 3331, 1), new Range16.ptr(3390, 3392, 1), new Range16.ptr(3398, 3400, 1), new Range16.ptr(3402, 3404, 1), new Range16.ptr(3415, 3458, 43), new Range16.ptr(3459, 3535, 76), new Range16.ptr(3536, 3537, 1), new Range16.ptr(3544, 3551, 1), new Range16.ptr(3570, 3571, 1), new Range16.ptr(3902, 3903, 1), new Range16.ptr(3967, 4139, 172), new Range16.ptr(4140, 4145, 5), new Range16.ptr(4152, 4155, 3), new Range16.ptr(4156, 4182, 26), new Range16.ptr(4183, 4194, 11), new Range16.ptr(4195, 4196, 1), new Range16.ptr(4199, 4205, 1), new Range16.ptr(4227, 4228, 1), new Range16.ptr(4231, 4236, 1), new Range16.ptr(4239, 4250, 11), new Range16.ptr(4251, 4252, 1), new Range16.ptr(6070, 6078, 8), new Range16.ptr(6079, 6085, 1), new Range16.ptr(6087, 6088, 1), new Range16.ptr(6435, 6438, 1), new Range16.ptr(6441, 6443, 1), new Range16.ptr(6448, 6449, 1), new Range16.ptr(6451, 6456, 1), new Range16.ptr(6576, 6592, 1), new Range16.ptr(6600, 6601, 1), new Range16.ptr(6681, 6682, 1), new Range16.ptr(6741, 6743, 2), new Range16.ptr(6753, 6755, 2), new Range16.ptr(6756, 6765, 9), new Range16.ptr(6766, 6770, 1), new Range16.ptr(6916, 6965, 49), new Range16.ptr(6971, 6973, 2), new Range16.ptr(6974, 6977, 1), new Range16.ptr(6979, 6980, 1), new Range16.ptr(7042, 7073, 31), new Range16.ptr(7078, 7079, 1), new Range16.ptr(7082, 7143, 61), new Range16.ptr(7146, 7148, 1), new Range16.ptr(7150, 7154, 4), new Range16.ptr(7155, 7204, 49), new Range16.ptr(7205, 7211, 1), new Range16.ptr(7220, 7221, 1), new Range16.ptr(7393, 7410, 17), new Range16.ptr(7411, 12334, 4923), new Range16.ptr(12335, 43043, 30708), new Range16.ptr(43044, 43047, 3), new Range16.ptr(43136, 43137, 1), new Range16.ptr(43188, 43203, 1), new Range16.ptr(43346, 43347, 1), new Range16.ptr(43395, 43444, 49), new Range16.ptr(43445, 43450, 5), new Range16.ptr(43451, 43453, 2), new Range16.ptr(43454, 43456, 1), new Range16.ptr(43567, 43568, 1), new Range16.ptr(43571, 43572, 1), new Range16.ptr(43597, 43643, 46), new Range16.ptr(43645, 43755, 110), new Range16.ptr(43758, 43759, 1), new Range16.ptr(43765, 44003, 238), new Range16.ptr(44004, 44006, 2), new Range16.ptr(44007, 44009, 2), new Range16.ptr(44010, 44012, 2)]), new sliceType$1([new Range32.ptr(69632, 69634, 2), new Range32.ptr(69762, 69808, 46), new Range32.ptr(69809, 69810, 1), new Range32.ptr(69815, 69816, 1), new Range32.ptr(69932, 70018, 86), new Range32.ptr(70067, 70069, 1), new Range32.ptr(70079, 70080, 1), new Range32.ptr(70188, 70190, 1), new Range32.ptr(70194, 70195, 1), new Range32.ptr(70197, 70368, 171), new Range32.ptr(70369, 70370, 1), new Range32.ptr(70402, 70403, 1), new Range32.ptr(70462, 70463, 1), new Range32.ptr(70465, 70468, 1), new Range32.ptr(70471, 70472, 1), new Range32.ptr(70475, 70477, 1), new Range32.ptr(70487, 70498, 11), new Range32.ptr(70499, 70832, 333), new Range32.ptr(70833, 70834, 1), new Range32.ptr(70841, 70843, 2), new Range32.ptr(70844, 70846, 1), new Range32.ptr(70849, 71087, 238), new Range32.ptr(71088, 71089, 1), new Range32.ptr(71096, 71099, 1), new Range32.ptr(71102, 71216, 114), new Range32.ptr(71217, 71218, 1), new Range32.ptr(71227, 71228, 1), new Range32.ptr(71230, 71340, 110), new Range32.ptr(71342, 71343, 1), new Range32.ptr(71350, 94033, 22683), new Range32.ptr(94034, 94078, 1), new Range32.ptr(119141, 119142, 1), new Range32.ptr(119149, 119154, 1)]), 0); _Me = new RangeTable.ptr(new sliceType([new Range16.ptr(1160, 1161, 1), new Range16.ptr(6846, 8413, 1567), new Range16.ptr(8414, 8416, 1), new Range16.ptr(8418, 8420, 1), new Range16.ptr(42608, 42610, 1)]), sliceType$1.nil, 0); _Mn = new RangeTable.ptr(new sliceType([new Range16.ptr(768, 879, 1), new Range16.ptr(1155, 1159, 1), new Range16.ptr(1425, 1469, 1), new Range16.ptr(1471, 1473, 2), new Range16.ptr(1474, 1476, 2), new Range16.ptr(1477, 1479, 2), new Range16.ptr(1552, 1562, 1), new Range16.ptr(1611, 1631, 1), new Range16.ptr(1648, 1750, 102), new Range16.ptr(1751, 1756, 1), new Range16.ptr(1759, 1764, 1), new Range16.ptr(1767, 1768, 1), new Range16.ptr(1770, 1773, 1), new Range16.ptr(1809, 1840, 31), new Range16.ptr(1841, 1866, 1), new Range16.ptr(1958, 1968, 1), new Range16.ptr(2027, 2035, 1), new Range16.ptr(2070, 2073, 1), new Range16.ptr(2075, 2083, 1), new Range16.ptr(2085, 2087, 1), new Range16.ptr(2089, 2093, 1), new Range16.ptr(2137, 2139, 1), new Range16.ptr(2276, 2306, 1), new Range16.ptr(2362, 2364, 2), new Range16.ptr(2369, 2376, 1), new Range16.ptr(2381, 2385, 4), new Range16.ptr(2386, 2391, 1), new Range16.ptr(2402, 2403, 1), new Range16.ptr(2433, 2492, 59), new Range16.ptr(2497, 2500, 1), new Range16.ptr(2509, 2530, 21), new Range16.ptr(2531, 2561, 30), new Range16.ptr(2562, 2620, 58), new Range16.ptr(2625, 2626, 1), new Range16.ptr(2631, 2632, 1), new Range16.ptr(2635, 2637, 1), new Range16.ptr(2641, 2672, 31), new Range16.ptr(2673, 2677, 4), new Range16.ptr(2689, 2690, 1), new Range16.ptr(2748, 2753, 5), new Range16.ptr(2754, 2757, 1), new Range16.ptr(2759, 2760, 1), new Range16.ptr(2765, 2786, 21), new Range16.ptr(2787, 2817, 30), new Range16.ptr(2876, 2879, 3), new Range16.ptr(2881, 2884, 1), new Range16.ptr(2893, 2902, 9), new Range16.ptr(2914, 2915, 1), new Range16.ptr(2946, 3008, 62), new Range16.ptr(3021, 3072, 51), new Range16.ptr(3134, 3136, 1), new Range16.ptr(3142, 3144, 1), new Range16.ptr(3146, 3149, 1), new Range16.ptr(3157, 3158, 1), new Range16.ptr(3170, 3171, 1), new Range16.ptr(3201, 3260, 59), new Range16.ptr(3263, 3270, 7), new Range16.ptr(3276, 3277, 1), new Range16.ptr(3298, 3299, 1), new Range16.ptr(3329, 3393, 64), new Range16.ptr(3394, 3396, 1), new Range16.ptr(3405, 3426, 21), new Range16.ptr(3427, 3530, 103), new Range16.ptr(3538, 3540, 1), new Range16.ptr(3542, 3633, 91), new Range16.ptr(3636, 3642, 1), new Range16.ptr(3655, 3662, 1), new Range16.ptr(3761, 3764, 3), new Range16.ptr(3765, 3769, 1), new Range16.ptr(3771, 3772, 1), new Range16.ptr(3784, 3789, 1), new Range16.ptr(3864, 3865, 1), new Range16.ptr(3893, 3897, 2), new Range16.ptr(3953, 3966, 1), new Range16.ptr(3968, 3972, 1), new Range16.ptr(3974, 3975, 1), new Range16.ptr(3981, 3991, 1), new Range16.ptr(3993, 4028, 1), new Range16.ptr(4038, 4141, 103), new Range16.ptr(4142, 4144, 1), new Range16.ptr(4146, 4151, 1), new Range16.ptr(4153, 4154, 1), new Range16.ptr(4157, 4158, 1), new Range16.ptr(4184, 4185, 1), new Range16.ptr(4190, 4192, 1), new Range16.ptr(4209, 4212, 1), new Range16.ptr(4226, 4229, 3), new Range16.ptr(4230, 4237, 7), new Range16.ptr(4253, 4957, 704), new Range16.ptr(4958, 4959, 1), new Range16.ptr(5906, 5908, 1), new Range16.ptr(5938, 5940, 1), new Range16.ptr(5970, 5971, 1), new Range16.ptr(6002, 6003, 1), new Range16.ptr(6068, 6069, 1), new Range16.ptr(6071, 6077, 1), new Range16.ptr(6086, 6089, 3), new Range16.ptr(6090, 6099, 1), new Range16.ptr(6109, 6155, 46), new Range16.ptr(6156, 6157, 1), new Range16.ptr(6313, 6432, 119), new Range16.ptr(6433, 6434, 1), new Range16.ptr(6439, 6440, 1), new Range16.ptr(6450, 6457, 7), new Range16.ptr(6458, 6459, 1), new Range16.ptr(6679, 6680, 1), new Range16.ptr(6683, 6742, 59), new Range16.ptr(6744, 6750, 1), new Range16.ptr(6752, 6754, 2), new Range16.ptr(6757, 6764, 1), new Range16.ptr(6771, 6780, 1), new Range16.ptr(6783, 6832, 49), new Range16.ptr(6833, 6845, 1), new Range16.ptr(6912, 6915, 1), new Range16.ptr(6964, 6966, 2), new Range16.ptr(6967, 6970, 1), new Range16.ptr(6972, 6978, 6), new Range16.ptr(7019, 7027, 1), new Range16.ptr(7040, 7041, 1), new Range16.ptr(7074, 7077, 1), new Range16.ptr(7080, 7081, 1), new Range16.ptr(7083, 7085, 1), new Range16.ptr(7142, 7144, 2), new Range16.ptr(7145, 7149, 4), new Range16.ptr(7151, 7153, 1), new Range16.ptr(7212, 7219, 1), new Range16.ptr(7222, 7223, 1), new Range16.ptr(7376, 7378, 1), new Range16.ptr(7380, 7392, 1), new Range16.ptr(7394, 7400, 1), new Range16.ptr(7405, 7412, 7), new Range16.ptr(7416, 7417, 1), new Range16.ptr(7616, 7669, 1), new Range16.ptr(7676, 7679, 1), new Range16.ptr(8400, 8412, 1), new Range16.ptr(8417, 8421, 4), new Range16.ptr(8422, 8432, 1), new Range16.ptr(11503, 11505, 1), new Range16.ptr(11647, 11744, 97), new Range16.ptr(11745, 11775, 1), new Range16.ptr(12330, 12333, 1), new Range16.ptr(12441, 12442, 1), new Range16.ptr(42607, 42612, 5), new Range16.ptr(42613, 42621, 1), new Range16.ptr(42655, 42736, 81), new Range16.ptr(42737, 43010, 273), new Range16.ptr(43014, 43019, 5), new Range16.ptr(43045, 43046, 1), new Range16.ptr(43204, 43232, 28), new Range16.ptr(43233, 43249, 1), new Range16.ptr(43302, 43309, 1), new Range16.ptr(43335, 43345, 1), new Range16.ptr(43392, 43394, 1), new Range16.ptr(43443, 43446, 3), new Range16.ptr(43447, 43449, 1), new Range16.ptr(43452, 43493, 41), new Range16.ptr(43561, 43566, 1), new Range16.ptr(43569, 43570, 1), new Range16.ptr(43573, 43574, 1), new Range16.ptr(43587, 43596, 9), new Range16.ptr(43644, 43696, 52), new Range16.ptr(43698, 43700, 1), new Range16.ptr(43703, 43704, 1), new Range16.ptr(43710, 43711, 1), new Range16.ptr(43713, 43756, 43), new Range16.ptr(43757, 43766, 9), new Range16.ptr(44005, 44008, 3), new Range16.ptr(44013, 64286, 20273), new Range16.ptr(65024, 65039, 1), new Range16.ptr(65056, 65069, 1)]), new sliceType$1([new Range32.ptr(66045, 66272, 227), new Range32.ptr(66422, 66426, 1), new Range32.ptr(68097, 68099, 1), new Range32.ptr(68101, 68102, 1), new Range32.ptr(68108, 68111, 1), new Range32.ptr(68152, 68154, 1), new Range32.ptr(68159, 68325, 166), new Range32.ptr(68326, 69633, 1307), new Range32.ptr(69688, 69702, 1), new Range32.ptr(69759, 69761, 1), new Range32.ptr(69811, 69814, 1), new Range32.ptr(69817, 69818, 1), new Range32.ptr(69888, 69890, 1), new Range32.ptr(69927, 69931, 1), new Range32.ptr(69933, 69940, 1), new Range32.ptr(70003, 70016, 13), new Range32.ptr(70017, 70070, 53), new Range32.ptr(70071, 70078, 1), new Range32.ptr(70191, 70193, 1), new Range32.ptr(70196, 70198, 2), new Range32.ptr(70199, 70367, 168), new Range32.ptr(70371, 70378, 1), new Range32.ptr(70401, 70460, 59), new Range32.ptr(70464, 70502, 38), new Range32.ptr(70503, 70508, 1), new Range32.ptr(70512, 70516, 1), new Range32.ptr(70835, 70840, 1), new Range32.ptr(70842, 70847, 5), new Range32.ptr(70848, 70850, 2), new Range32.ptr(70851, 71090, 239), new Range32.ptr(71091, 71093, 1), new Range32.ptr(71100, 71101, 1), new Range32.ptr(71103, 71104, 1), new Range32.ptr(71219, 71226, 1), new Range32.ptr(71229, 71231, 2), new Range32.ptr(71232, 71339, 107), new Range32.ptr(71341, 71344, 3), new Range32.ptr(71345, 71349, 1), new Range32.ptr(71351, 92912, 21561), new Range32.ptr(92913, 92916, 1), new Range32.ptr(92976, 92982, 1), new Range32.ptr(94095, 94098, 1), new Range32.ptr(113821, 113822, 1), new Range32.ptr(119143, 119145, 1), new Range32.ptr(119163, 119170, 1), new Range32.ptr(119173, 119179, 1), new Range32.ptr(119210, 119213, 1), new Range32.ptr(119362, 119364, 1), new Range32.ptr(125136, 125142, 1), new Range32.ptr(917760, 917999, 1)]), 0); _N = new RangeTable.ptr(new sliceType([new Range16.ptr(48, 57, 1), new Range16.ptr(178, 179, 1), new Range16.ptr(185, 188, 3), new Range16.ptr(189, 190, 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(2548, 2553, 1), new Range16.ptr(2662, 2671, 1), new Range16.ptr(2790, 2799, 1), new Range16.ptr(2918, 2927, 1), new Range16.ptr(2930, 2935, 1), new Range16.ptr(3046, 3058, 1), new Range16.ptr(3174, 3183, 1), new Range16.ptr(3192, 3198, 1), new Range16.ptr(3302, 3311, 1), new Range16.ptr(3430, 3445, 1), new Range16.ptr(3558, 3567, 1), new Range16.ptr(3664, 3673, 1), new Range16.ptr(3792, 3801, 1), new Range16.ptr(3872, 3891, 1), new Range16.ptr(4160, 4169, 1), new Range16.ptr(4240, 4249, 1), new Range16.ptr(4969, 4988, 1), new Range16.ptr(5870, 5872, 1), new Range16.ptr(6112, 6121, 1), new Range16.ptr(6128, 6137, 1), new Range16.ptr(6160, 6169, 1), new Range16.ptr(6470, 6479, 1), new Range16.ptr(6608, 6618, 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(8304, 8308, 4), new Range16.ptr(8309, 8313, 1), new Range16.ptr(8320, 8329, 1), new Range16.ptr(8528, 8578, 1), new Range16.ptr(8581, 8585, 1), new Range16.ptr(9312, 9371, 1), new Range16.ptr(9450, 9471, 1), new Range16.ptr(10102, 10131, 1), new Range16.ptr(11517, 12295, 778), new Range16.ptr(12321, 12329, 1), new Range16.ptr(12344, 12346, 1), new Range16.ptr(12690, 12693, 1), new Range16.ptr(12832, 12841, 1), new Range16.ptr(12872, 12879, 1), new Range16.ptr(12881, 12895, 1), new Range16.ptr(12928, 12937, 1), new Range16.ptr(12977, 12991, 1), new Range16.ptr(42528, 42537, 1), new Range16.ptr(42726, 42735, 1), new Range16.ptr(43056, 43061, 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(65799, 65843, 1), new Range32.ptr(65856, 65912, 1), new Range32.ptr(65930, 65931, 1), new Range32.ptr(66273, 66299, 1), new Range32.ptr(66336, 66339, 1), new Range32.ptr(66369, 66378, 9), new Range32.ptr(66513, 66517, 1), new Range32.ptr(66720, 66729, 1), new Range32.ptr(67672, 67679, 1), new Range32.ptr(67705, 67711, 1), new Range32.ptr(67751, 67759, 1), new Range32.ptr(67862, 67867, 1), new Range32.ptr(68160, 68167, 1), new Range32.ptr(68221, 68222, 1), new Range32.ptr(68253, 68255, 1), new Range32.ptr(68331, 68335, 1), new Range32.ptr(68440, 68447, 1), new Range32.ptr(68472, 68479, 1), new Range32.ptr(68521, 68527, 1), new Range32.ptr(69216, 69246, 1), new Range32.ptr(69714, 69743, 1), new Range32.ptr(69872, 69881, 1), new Range32.ptr(69942, 69951, 1), new Range32.ptr(70096, 70105, 1), new Range32.ptr(70113, 70132, 1), new Range32.ptr(70384, 70393, 1), new Range32.ptr(70864, 70873, 1), new Range32.ptr(71248, 71257, 1), new Range32.ptr(71360, 71369, 1), new Range32.ptr(71904, 71922, 1), new Range32.ptr(74752, 74862, 1), new Range32.ptr(92768, 92777, 1), new Range32.ptr(93008, 93017, 1), new Range32.ptr(93019, 93025, 1), new Range32.ptr(119648, 119665, 1), new Range32.ptr(120782, 120831, 1), new Range32.ptr(125127, 125135, 1), new Range32.ptr(127232, 127244, 1)]), 4); _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(70864, 70873, 1), new Range32.ptr(71248, 71257, 1), new Range32.ptr(71360, 71369, 1), new Range32.ptr(71904, 71913, 1), new Range32.ptr(92768, 92777, 1), new Range32.ptr(93008, 93017, 1), new Range32.ptr(120782, 120831, 1)]), 1); _Nl = new RangeTable.ptr(new sliceType([new Range16.ptr(5870, 5872, 1), new Range16.ptr(8544, 8578, 1), new Range16.ptr(8581, 8584, 1), new Range16.ptr(12295, 12321, 26), new Range16.ptr(12322, 12329, 1), new Range16.ptr(12344, 12346, 1), new Range16.ptr(42726, 42735, 1)]), new sliceType$1([new Range32.ptr(65856, 65908, 1), new Range32.ptr(66369, 66378, 9), new Range32.ptr(66513, 66517, 1), new Range32.ptr(74752, 74862, 1)]), 0); _No = new RangeTable.ptr(new sliceType([new Range16.ptr(178, 179, 1), new Range16.ptr(185, 188, 3), new Range16.ptr(189, 190, 1), new Range16.ptr(2548, 2553, 1), new Range16.ptr(2930, 2935, 1), new Range16.ptr(3056, 3058, 1), new Range16.ptr(3192, 3198, 1), new Range16.ptr(3440, 3445, 1), new Range16.ptr(3882, 3891, 1), new Range16.ptr(4969, 4988, 1), new Range16.ptr(6128, 6137, 1), new Range16.ptr(6618, 8304, 1686), new Range16.ptr(8308, 8313, 1), new Range16.ptr(8320, 8329, 1), new Range16.ptr(8528, 8543, 1), new Range16.ptr(8585, 9312, 727), new Range16.ptr(9313, 9371, 1), new Range16.ptr(9450, 9471, 1), new Range16.ptr(10102, 10131, 1), new Range16.ptr(11517, 12690, 1173), new Range16.ptr(12691, 12693, 1), new Range16.ptr(12832, 12841, 1), new Range16.ptr(12872, 12879, 1), new Range16.ptr(12881, 12895, 1), new Range16.ptr(12928, 12937, 1), new Range16.ptr(12977, 12991, 1), new Range16.ptr(43056, 43061, 1)]), new sliceType$1([new Range32.ptr(65799, 65843, 1), new Range32.ptr(65909, 65912, 1), new Range32.ptr(65930, 65931, 1), new Range32.ptr(66273, 66299, 1), new Range32.ptr(66336, 66339, 1), new Range32.ptr(67672, 67679, 1), new Range32.ptr(67705, 67711, 1), new Range32.ptr(67751, 67759, 1), new Range32.ptr(67862, 67867, 1), new Range32.ptr(68160, 68167, 1), new Range32.ptr(68221, 68222, 1), new Range32.ptr(68253, 68255, 1), new Range32.ptr(68331, 68335, 1), new Range32.ptr(68440, 68447, 1), new Range32.ptr(68472, 68479, 1), new Range32.ptr(68521, 68527, 1), new Range32.ptr(69216, 69246, 1), new Range32.ptr(69714, 69733, 1), new Range32.ptr(70113, 70132, 1), new Range32.ptr(71914, 71922, 1), new Range32.ptr(93019, 93025, 1), new Range32.ptr(119648, 119665, 1), new Range32.ptr(125127, 125135, 1), new Range32.ptr(127232, 127244, 1)]), 3); _P = new RangeTable.ptr(new sliceType([new Range16.ptr(33, 35, 1), new Range16.ptr(37, 42, 1), new Range16.ptr(44, 47, 1), new Range16.ptr(58, 59, 1), new Range16.ptr(63, 64, 1), new Range16.ptr(91, 93, 1), new Range16.ptr(95, 123, 28), new Range16.ptr(125, 161, 36), new Range16.ptr(167, 171, 4), new Range16.ptr(182, 183, 1), new Range16.ptr(187, 191, 4), new Range16.ptr(894, 903, 9), new Range16.ptr(1370, 1375, 1), new Range16.ptr(1417, 1418, 1), new Range16.ptr(1470, 1472, 2), new Range16.ptr(1475, 1478, 3), new Range16.ptr(1523, 1524, 1), new Range16.ptr(1545, 1546, 1), new Range16.ptr(1548, 1549, 1), new Range16.ptr(1563, 1566, 3), new Range16.ptr(1567, 1642, 75), new Range16.ptr(1643, 1645, 1), new Range16.ptr(1748, 1792, 44), new Range16.ptr(1793, 1805, 1), new Range16.ptr(2039, 2041, 1), new Range16.ptr(2096, 2110, 1), new Range16.ptr(2142, 2404, 262), new Range16.ptr(2405, 2416, 11), new Range16.ptr(2800, 3572, 772), new Range16.ptr(3663, 3674, 11), new Range16.ptr(3675, 3844, 169), new Range16.ptr(3845, 3858, 1), new Range16.ptr(3860, 3898, 38), new Range16.ptr(3899, 3901, 1), new Range16.ptr(3973, 4048, 75), new Range16.ptr(4049, 4052, 1), new Range16.ptr(4057, 4058, 1), new Range16.ptr(4170, 4175, 1), new Range16.ptr(4347, 4960, 613), new Range16.ptr(4961, 4968, 1), new Range16.ptr(5120, 5741, 621), new Range16.ptr(5742, 5787, 45), new Range16.ptr(5788, 5867, 79), new Range16.ptr(5868, 5869, 1), new Range16.ptr(5941, 5942, 1), new Range16.ptr(6100, 6102, 1), new Range16.ptr(6104, 6106, 1), new Range16.ptr(6144, 6154, 1), new Range16.ptr(6468, 6469, 1), new Range16.ptr(6686, 6687, 1), new Range16.ptr(6816, 6822, 1), new Range16.ptr(6824, 6829, 1), new Range16.ptr(7002, 7008, 1), new Range16.ptr(7164, 7167, 1), new Range16.ptr(7227, 7231, 1), new Range16.ptr(7294, 7295, 1), new Range16.ptr(7360, 7367, 1), new Range16.ptr(7379, 8208, 829), new Range16.ptr(8209, 8231, 1), new Range16.ptr(8240, 8259, 1), new Range16.ptr(8261, 8273, 1), new Range16.ptr(8275, 8286, 1), new Range16.ptr(8317, 8318, 1), new Range16.ptr(8333, 8334, 1), new Range16.ptr(8968, 8971, 1), new Range16.ptr(9001, 9002, 1), new Range16.ptr(10088, 10101, 1), new Range16.ptr(10181, 10182, 1), new Range16.ptr(10214, 10223, 1), new Range16.ptr(10627, 10648, 1), new Range16.ptr(10712, 10715, 1), new Range16.ptr(10748, 10749, 1), new Range16.ptr(11513, 11516, 1), new Range16.ptr(11518, 11519, 1), new Range16.ptr(11632, 11776, 144), new Range16.ptr(11777, 11822, 1), new Range16.ptr(11824, 11842, 1), new Range16.ptr(12289, 12291, 1), new Range16.ptr(12296, 12305, 1), new Range16.ptr(12308, 12319, 1), new Range16.ptr(12336, 12349, 13), new Range16.ptr(12448, 12539, 91), new Range16.ptr(42238, 42239, 1), new Range16.ptr(42509, 42511, 1), new Range16.ptr(42611, 42622, 11), new Range16.ptr(42738, 42743, 1), new Range16.ptr(43124, 43127, 1), new Range16.ptr(43214, 43215, 1), new Range16.ptr(43256, 43258, 1), new Range16.ptr(43310, 43311, 1), new Range16.ptr(43359, 43457, 98), new Range16.ptr(43458, 43469, 1), new Range16.ptr(43486, 43487, 1), new Range16.ptr(43612, 43615, 1), new Range16.ptr(43742, 43743, 1), new Range16.ptr(43760, 43761, 1), new Range16.ptr(44011, 64830, 20819), new Range16.ptr(64831, 65040, 209), new Range16.ptr(65041, 65049, 1), new Range16.ptr(65072, 65106, 1), new Range16.ptr(65108, 65121, 1), new Range16.ptr(65123, 65128, 5), new Range16.ptr(65130, 65131, 1), new Range16.ptr(65281, 65283, 1), new Range16.ptr(65285, 65290, 1), new Range16.ptr(65292, 65295, 1), new Range16.ptr(65306, 65307, 1), new Range16.ptr(65311, 65312, 1), new Range16.ptr(65339, 65341, 1), new Range16.ptr(65343, 65371, 28), new Range16.ptr(65373, 65375, 2), new Range16.ptr(65376, 65381, 1)]), new sliceType$1([new Range32.ptr(65792, 65794, 1), new Range32.ptr(66463, 66512, 49), new Range32.ptr(66927, 67671, 744), new Range32.ptr(67871, 67903, 32), new Range32.ptr(68176, 68184, 1), new Range32.ptr(68223, 68336, 113), new Range32.ptr(68337, 68342, 1), new Range32.ptr(68409, 68415, 1), new Range32.ptr(68505, 68508, 1), new Range32.ptr(69703, 69709, 1), new Range32.ptr(69819, 69820, 1), new Range32.ptr(69822, 69825, 1), new Range32.ptr(69952, 69955, 1), new Range32.ptr(70004, 70005, 1), new Range32.ptr(70085, 70088, 1), new Range32.ptr(70093, 70200, 107), new Range32.ptr(70201, 70205, 1), new Range32.ptr(70854, 71105, 251), new Range32.ptr(71106, 71113, 1), new Range32.ptr(71233, 71235, 1), new Range32.ptr(74864, 74868, 1), new Range32.ptr(92782, 92783, 1), new Range32.ptr(92917, 92983, 66), new Range32.ptr(92984, 92987, 1), new Range32.ptr(92996, 113823, 20827)]), 11); _Pc = new RangeTable.ptr(new sliceType([new Range16.ptr(95, 8255, 8160), new Range16.ptr(8256, 8276, 20), new Range16.ptr(65075, 65076, 1), new Range16.ptr(65101, 65103, 1), new Range16.ptr(65343, 65343, 1)]), sliceType$1.nil, 0); _Pd = new RangeTable.ptr(new sliceType([new Range16.ptr(45, 1418, 1373), new Range16.ptr(1470, 5120, 3650), new Range16.ptr(6150, 8208, 2058), new Range16.ptr(8209, 8213, 1), new Range16.ptr(11799, 11802, 3), new Range16.ptr(11834, 11835, 1), new Range16.ptr(11840, 12316, 476), new Range16.ptr(12336, 12448, 112), new Range16.ptr(65073, 65074, 1), new Range16.ptr(65112, 65123, 11), new Range16.ptr(65293, 65293, 1)]), sliceType$1.nil, 0); _Pe = new RangeTable.ptr(new sliceType([new Range16.ptr(41, 93, 52), new Range16.ptr(125, 3899, 3774), new Range16.ptr(3901, 5788, 1887), new Range16.ptr(8262, 8318, 56), new Range16.ptr(8334, 8969, 635), new Range16.ptr(8971, 9002, 31), new Range16.ptr(10089, 10101, 2), new Range16.ptr(10182, 10215, 33), new Range16.ptr(10217, 10223, 2), new Range16.ptr(10628, 10648, 2), new Range16.ptr(10713, 10715, 2), new Range16.ptr(10749, 11811, 1062), new Range16.ptr(11813, 11817, 2), new Range16.ptr(12297, 12305, 2), new Range16.ptr(12309, 12315, 2), new Range16.ptr(12318, 12319, 1), new Range16.ptr(64830, 65048, 218), new Range16.ptr(65078, 65092, 2), new Range16.ptr(65096, 65114, 18), new Range16.ptr(65116, 65118, 2), new Range16.ptr(65289, 65341, 52), new Range16.ptr(65373, 65379, 3)]), sliceType$1.nil, 1); _Pf = new RangeTable.ptr(new sliceType([new Range16.ptr(187, 8217, 8030), new Range16.ptr(8221, 8250, 29), new Range16.ptr(11779, 11781, 2), new Range16.ptr(11786, 11789, 3), new Range16.ptr(11805, 11809, 4)]), sliceType$1.nil, 0); _Pi = new RangeTable.ptr(new sliceType([new Range16.ptr(171, 8216, 8045), new Range16.ptr(8219, 8220, 1), new Range16.ptr(8223, 8249, 26), new Range16.ptr(11778, 11780, 2), new Range16.ptr(11785, 11788, 3), new Range16.ptr(11804, 11808, 4)]), sliceType$1.nil, 0); _Po = new RangeTable.ptr(new sliceType([new Range16.ptr(33, 35, 1), new Range16.ptr(37, 39, 1), new Range16.ptr(42, 46, 2), new Range16.ptr(47, 58, 11), new Range16.ptr(59, 63, 4), new Range16.ptr(64, 92, 28), new Range16.ptr(161, 167, 6), new Range16.ptr(182, 183, 1), new Range16.ptr(191, 894, 703), new Range16.ptr(903, 1370, 467), new Range16.ptr(1371, 1375, 1), new Range16.ptr(1417, 1472, 55), new Range16.ptr(1475, 1478, 3), new Range16.ptr(1523, 1524, 1), new Range16.ptr(1545, 1546, 1), new Range16.ptr(1548, 1549, 1), new Range16.ptr(1563, 1566, 3), new Range16.ptr(1567, 1642, 75), new Range16.ptr(1643, 1645, 1), new Range16.ptr(1748, 1792, 44), new Range16.ptr(1793, 1805, 1), new Range16.ptr(2039, 2041, 1), new Range16.ptr(2096, 2110, 1), new Range16.ptr(2142, 2404, 262), new Range16.ptr(2405, 2416, 11), new Range16.ptr(2800, 3572, 772), new Range16.ptr(3663, 3674, 11), new Range16.ptr(3675, 3844, 169), new Range16.ptr(3845, 3858, 1), new Range16.ptr(3860, 3973, 113), new Range16.ptr(4048, 4052, 1), new Range16.ptr(4057, 4058, 1), new Range16.ptr(4170, 4175, 1), new Range16.ptr(4347, 4960, 613), new Range16.ptr(4961, 4968, 1), new Range16.ptr(5741, 5742, 1), new Range16.ptr(5867, 5869, 1), new Range16.ptr(5941, 5942, 1), new Range16.ptr(6100, 6102, 1), new Range16.ptr(6104, 6106, 1), new Range16.ptr(6144, 6149, 1), new Range16.ptr(6151, 6154, 1), new Range16.ptr(6468, 6469, 1), new Range16.ptr(6686, 6687, 1), new Range16.ptr(6816, 6822, 1), new Range16.ptr(6824, 6829, 1), new Range16.ptr(7002, 7008, 1), new Range16.ptr(7164, 7167, 1), new Range16.ptr(7227, 7231, 1), new Range16.ptr(7294, 7295, 1), new Range16.ptr(7360, 7367, 1), new Range16.ptr(7379, 8214, 835), new Range16.ptr(8215, 8224, 9), new Range16.ptr(8225, 8231, 1), new Range16.ptr(8240, 8248, 1), new Range16.ptr(8251, 8254, 1), new Range16.ptr(8257, 8259, 1), new Range16.ptr(8263, 8273, 1), new Range16.ptr(8275, 8277, 2), new Range16.ptr(8278, 8286, 1), new Range16.ptr(11513, 11516, 1), new Range16.ptr(11518, 11519, 1), new Range16.ptr(11632, 11776, 144), new Range16.ptr(11777, 11782, 5), new Range16.ptr(11783, 11784, 1), new Range16.ptr(11787, 11790, 3), new Range16.ptr(11791, 11798, 1), new Range16.ptr(11800, 11801, 1), new Range16.ptr(11803, 11806, 3), new Range16.ptr(11807, 11818, 11), new Range16.ptr(11819, 11822, 1), new Range16.ptr(11824, 11833, 1), new Range16.ptr(11836, 11839, 1), new Range16.ptr(11841, 12289, 448), new Range16.ptr(12290, 12291, 1), new Range16.ptr(12349, 12539, 190), new Range16.ptr(42238, 42239, 1), new Range16.ptr(42509, 42511, 1), new Range16.ptr(42611, 42622, 11), new Range16.ptr(42738, 42743, 1), new Range16.ptr(43124, 43127, 1), new Range16.ptr(43214, 43215, 1), new Range16.ptr(43256, 43258, 1), new Range16.ptr(43310, 43311, 1), new Range16.ptr(43359, 43457, 98), new Range16.ptr(43458, 43469, 1), new Range16.ptr(43486, 43487, 1), new Range16.ptr(43612, 43615, 1), new Range16.ptr(43742, 43743, 1), new Range16.ptr(43760, 43761, 1), new Range16.ptr(44011, 65040, 21029), new Range16.ptr(65041, 65046, 1), new Range16.ptr(65049, 65072, 23), new Range16.ptr(65093, 65094, 1), new Range16.ptr(65097, 65100, 1), new Range16.ptr(65104, 65106, 1), new Range16.ptr(65108, 65111, 1), new Range16.ptr(65119, 65121, 1), new Range16.ptr(65128, 65130, 2), new Range16.ptr(65131, 65281, 150), new Range16.ptr(65282, 65283, 1), new Range16.ptr(65285, 65287, 1), new Range16.ptr(65290, 65294, 2), new Range16.ptr(65295, 65306, 11), new Range16.ptr(65307, 65311, 4), new Range16.ptr(65312, 65340, 28), new Range16.ptr(65377, 65380, 3), new Range16.ptr(65381, 65381, 1)]), new sliceType$1([new Range32.ptr(65792, 65792, 1), new Range32.ptr(65793, 65794, 1), new Range32.ptr(66463, 66512, 49), new Range32.ptr(66927, 67671, 744), new Range32.ptr(67871, 67903, 32), new Range32.ptr(68176, 68184, 1), new Range32.ptr(68223, 68336, 113), new Range32.ptr(68337, 68342, 1), new Range32.ptr(68409, 68415, 1), new Range32.ptr(68505, 68508, 1), new Range32.ptr(69703, 69709, 1), new Range32.ptr(69819, 69820, 1), new Range32.ptr(69822, 69825, 1), new Range32.ptr(69952, 69955, 1), new Range32.ptr(70004, 70005, 1), new Range32.ptr(70085, 70088, 1), new Range32.ptr(70093, 70200, 107), new Range32.ptr(70201, 70205, 1), new Range32.ptr(70854, 71105, 251), new Range32.ptr(71106, 71113, 1), new Range32.ptr(71233, 71235, 1), new Range32.ptr(74864, 74868, 1), new Range32.ptr(92782, 92783, 1), new Range32.ptr(92917, 92983, 66), new Range32.ptr(92984, 92987, 1), new Range32.ptr(92996, 113823, 20827)]), 8); _Ps = new RangeTable.ptr(new sliceType([new Range16.ptr(40, 91, 51), new Range16.ptr(123, 3898, 3775), new Range16.ptr(3900, 5787, 1887), new Range16.ptr(8218, 8222, 4), new Range16.ptr(8261, 8317, 56), new Range16.ptr(8333, 8968, 635), new Range16.ptr(8970, 9001, 31), new Range16.ptr(10088, 10100, 2), new Range16.ptr(10181, 10214, 33), new Range16.ptr(10216, 10222, 2), new Range16.ptr(10627, 10647, 2), new Range16.ptr(10712, 10714, 2), new Range16.ptr(10748, 11810, 1062), new Range16.ptr(11812, 11816, 2), new Range16.ptr(11842, 12296, 454), new Range16.ptr(12298, 12304, 2), new Range16.ptr(12308, 12314, 2), new Range16.ptr(12317, 64831, 52514), new Range16.ptr(65047, 65077, 30), new Range16.ptr(65079, 65091, 2), new Range16.ptr(65095, 65113, 18), new Range16.ptr(65115, 65117, 2), new Range16.ptr(65288, 65339, 51), new Range16.ptr(65371, 65375, 4), new Range16.ptr(65378, 65378, 1)]), sliceType$1.nil, 1); _S = new RangeTable.ptr(new sliceType([new Range16.ptr(36, 43, 7), new Range16.ptr(60, 62, 1), new Range16.ptr(94, 96, 2), new Range16.ptr(124, 126, 2), new Range16.ptr(162, 166, 1), new Range16.ptr(168, 169, 1), new Range16.ptr(172, 174, 2), new Range16.ptr(175, 177, 1), new Range16.ptr(180, 184, 4), new Range16.ptr(215, 247, 32), new Range16.ptr(706, 709, 1), new Range16.ptr(722, 735, 1), new Range16.ptr(741, 747, 1), new Range16.ptr(749, 751, 2), new Range16.ptr(752, 767, 1), new Range16.ptr(885, 900, 15), new Range16.ptr(901, 1014, 113), new Range16.ptr(1154, 1421, 267), new Range16.ptr(1422, 1423, 1), new Range16.ptr(1542, 1544, 1), new Range16.ptr(1547, 1550, 3), new Range16.ptr(1551, 1758, 207), new Range16.ptr(1769, 1789, 20), new Range16.ptr(1790, 2038, 248), new Range16.ptr(2546, 2547, 1), new Range16.ptr(2554, 2555, 1), new Range16.ptr(2801, 2928, 127), new Range16.ptr(3059, 3066, 1), new Range16.ptr(3199, 3449, 250), new Range16.ptr(3647, 3841, 194), new Range16.ptr(3842, 3843, 1), new Range16.ptr(3859, 3861, 2), new Range16.ptr(3862, 3863, 1), new Range16.ptr(3866, 3871, 1), new Range16.ptr(3892, 3896, 2), new Range16.ptr(4030, 4037, 1), new Range16.ptr(4039, 4044, 1), new Range16.ptr(4046, 4047, 1), new Range16.ptr(4053, 4056, 1), new Range16.ptr(4254, 4255, 1), new Range16.ptr(5008, 5017, 1), new Range16.ptr(6107, 6464, 357), new Range16.ptr(6622, 6655, 1), new Range16.ptr(7009, 7018, 1), new Range16.ptr(7028, 7036, 1), new Range16.ptr(8125, 8127, 2), new Range16.ptr(8128, 8129, 1), new Range16.ptr(8141, 8143, 1), new Range16.ptr(8157, 8159, 1), new Range16.ptr(8173, 8175, 1), new Range16.ptr(8189, 8190, 1), new Range16.ptr(8260, 8274, 14), new Range16.ptr(8314, 8316, 1), new Range16.ptr(8330, 8332, 1), new Range16.ptr(8352, 8381, 1), new Range16.ptr(8448, 8449, 1), new Range16.ptr(8451, 8454, 1), new Range16.ptr(8456, 8457, 1), new Range16.ptr(8468, 8470, 2), new Range16.ptr(8471, 8472, 1), new Range16.ptr(8478, 8483, 1), new Range16.ptr(8485, 8489, 2), new Range16.ptr(8494, 8506, 12), new Range16.ptr(8507, 8512, 5), new Range16.ptr(8513, 8516, 1), new Range16.ptr(8522, 8525, 1), new Range16.ptr(8527, 8592, 65), new Range16.ptr(8593, 8967, 1), new Range16.ptr(8972, 9000, 1), new Range16.ptr(9003, 9210, 1), new Range16.ptr(9216, 9254, 1), new Range16.ptr(9280, 9290, 1), new Range16.ptr(9372, 9449, 1), new Range16.ptr(9472, 10087, 1), new Range16.ptr(10132, 10180, 1), new Range16.ptr(10183, 10213, 1), new Range16.ptr(10224, 10626, 1), new Range16.ptr(10649, 10711, 1), new Range16.ptr(10716, 10747, 1), new Range16.ptr(10750, 11123, 1), new Range16.ptr(11126, 11157, 1), new Range16.ptr(11160, 11193, 1), new Range16.ptr(11197, 11208, 1), new Range16.ptr(11210, 11217, 1), new Range16.ptr(11493, 11498, 1), new Range16.ptr(11904, 11929, 1), new Range16.ptr(11931, 12019, 1), new Range16.ptr(12032, 12245, 1), new Range16.ptr(12272, 12283, 1), new Range16.ptr(12292, 12306, 14), new Range16.ptr(12307, 12320, 13), new Range16.ptr(12342, 12343, 1), new Range16.ptr(12350, 12351, 1), new Range16.ptr(12443, 12444, 1), new Range16.ptr(12688, 12689, 1), new Range16.ptr(12694, 12703, 1), new Range16.ptr(12736, 12771, 1), new Range16.ptr(12800, 12830, 1), new Range16.ptr(12842, 12871, 1), new Range16.ptr(12880, 12896, 16), new Range16.ptr(12897, 12927, 1), new Range16.ptr(12938, 12976, 1), new Range16.ptr(12992, 13054, 1), new Range16.ptr(13056, 13311, 1), new Range16.ptr(19904, 19967, 1), new Range16.ptr(42128, 42182, 1), new Range16.ptr(42752, 42774, 1), new Range16.ptr(42784, 42785, 1), new Range16.ptr(42889, 42890, 1), new Range16.ptr(43048, 43051, 1), new Range16.ptr(43062, 43065, 1), new Range16.ptr(43639, 43641, 1), new Range16.ptr(43867, 64297, 20430), new Range16.ptr(64434, 64449, 1), new Range16.ptr(65020, 65021, 1), new Range16.ptr(65122, 65124, 2), new Range16.ptr(65125, 65126, 1), new Range16.ptr(65129, 65284, 155), new Range16.ptr(65291, 65308, 17), new Range16.ptr(65309, 65310, 1), new Range16.ptr(65342, 65344, 2), new Range16.ptr(65372, 65374, 2), new Range16.ptr(65504, 65510, 1), new Range16.ptr(65512, 65518, 1), new Range16.ptr(65532, 65533, 1)]), new sliceType$1([new Range32.ptr(65847, 65855, 1), new Range32.ptr(65913, 65929, 1), new Range32.ptr(65932, 65936, 4), new Range32.ptr(65937, 65947, 1), new Range32.ptr(65952, 66000, 48), new Range32.ptr(66001, 66044, 1), new Range32.ptr(67703, 67704, 1), new Range32.ptr(68296, 92988, 24692), new Range32.ptr(92989, 92991, 1), new Range32.ptr(92997, 113820, 20823), new Range32.ptr(118784, 119029, 1), new Range32.ptr(119040, 119078, 1), new Range32.ptr(119081, 119140, 1), new Range32.ptr(119146, 119148, 1), new Range32.ptr(119171, 119172, 1), new Range32.ptr(119180, 119209, 1), new Range32.ptr(119214, 119261, 1), new Range32.ptr(119296, 119361, 1), new Range32.ptr(119365, 119552, 187), new Range32.ptr(119553, 119638, 1), new Range32.ptr(120513, 120539, 26), new Range32.ptr(120571, 120597, 26), new Range32.ptr(120629, 120655, 26), new Range32.ptr(120687, 120713, 26), new Range32.ptr(120745, 120771, 26), new Range32.ptr(126704, 126705, 1), new Range32.ptr(126976, 127019, 1), new Range32.ptr(127024, 127123, 1), new Range32.ptr(127136, 127150, 1), new Range32.ptr(127153, 127167, 1), new Range32.ptr(127169, 127183, 1), new Range32.ptr(127185, 127221, 1), new Range32.ptr(127248, 127278, 1), new Range32.ptr(127280, 127339, 1), new Range32.ptr(127344, 127386, 1), new Range32.ptr(127462, 127490, 1), new Range32.ptr(127504, 127546, 1), new Range32.ptr(127552, 127560, 1), new Range32.ptr(127568, 127569, 1), new Range32.ptr(127744, 127788, 1), new Range32.ptr(127792, 127869, 1), new Range32.ptr(127872, 127950, 1), new Range32.ptr(127956, 127991, 1), new Range32.ptr(128000, 128254, 1), new Range32.ptr(128256, 128330, 1), new Range32.ptr(128336, 128377, 1), new Range32.ptr(128379, 128419, 1), new Range32.ptr(128421, 128578, 1), new Range32.ptr(128581, 128719, 1), new Range32.ptr(128736, 128748, 1), new Range32.ptr(128752, 128755, 1), new Range32.ptr(128768, 128883, 1), new Range32.ptr(128896, 128980, 1), new Range32.ptr(129024, 129035, 1), new Range32.ptr(129040, 129095, 1), new Range32.ptr(129104, 129113, 1), new Range32.ptr(129120, 129159, 1), new Range32.ptr(129168, 129197, 1)]), 10); _Sc = new RangeTable.ptr(new sliceType([new Range16.ptr(36, 162, 126), new Range16.ptr(163, 165, 1), new Range16.ptr(1423, 1547, 124), new Range16.ptr(2546, 2547, 1), new Range16.ptr(2555, 2801, 246), new Range16.ptr(3065, 3647, 582), new Range16.ptr(6107, 8352, 2245), new Range16.ptr(8353, 8381, 1), new Range16.ptr(43064, 65020, 21956), new Range16.ptr(65129, 65284, 155), new Range16.ptr(65504, 65505, 1), new Range16.ptr(65509, 65510, 1)]), sliceType$1.nil, 2); _Sk = new RangeTable.ptr(new sliceType([new Range16.ptr(94, 96, 2), new Range16.ptr(168, 175, 7), new Range16.ptr(180, 184, 4), new Range16.ptr(706, 709, 1), new Range16.ptr(722, 735, 1), new Range16.ptr(741, 747, 1), new Range16.ptr(749, 751, 2), new Range16.ptr(752, 767, 1), new Range16.ptr(885, 900, 15), new Range16.ptr(901, 8125, 7224), new Range16.ptr(8127, 8129, 1), new Range16.ptr(8141, 8143, 1), new Range16.ptr(8157, 8159, 1), new Range16.ptr(8173, 8175, 1), new Range16.ptr(8189, 8190, 1), new Range16.ptr(12443, 12444, 1), new Range16.ptr(42752, 42774, 1), new Range16.ptr(42784, 42785, 1), new Range16.ptr(42889, 42890, 1), new Range16.ptr(43867, 64434, 20567), new Range16.ptr(64435, 64449, 1), new Range16.ptr(65342, 65344, 2), new Range16.ptr(65507, 65507, 1)]), sliceType$1.nil, 3); _Sm = new RangeTable.ptr(new sliceType([new Range16.ptr(43, 60, 17), new Range16.ptr(61, 62, 1), new Range16.ptr(124, 126, 2), new Range16.ptr(172, 177, 5), new Range16.ptr(215, 247, 32), new Range16.ptr(1014, 1542, 528), new Range16.ptr(1543, 1544, 1), new Range16.ptr(8260, 8274, 14), new Range16.ptr(8314, 8316, 1), new Range16.ptr(8330, 8332, 1), new Range16.ptr(8472, 8512, 40), new Range16.ptr(8513, 8516, 1), new Range16.ptr(8523, 8592, 69), new Range16.ptr(8593, 8596, 1), new Range16.ptr(8602, 8603, 1), new Range16.ptr(8608, 8614, 3), new Range16.ptr(8622, 8654, 32), new Range16.ptr(8655, 8658, 3), new Range16.ptr(8660, 8692, 32), new Range16.ptr(8693, 8959, 1), new Range16.ptr(8992, 8993, 1), new Range16.ptr(9084, 9115, 31), new Range16.ptr(9116, 9139, 1), new Range16.ptr(9180, 9185, 1), new Range16.ptr(9655, 9665, 10), new Range16.ptr(9720, 9727, 1), new Range16.ptr(9839, 10176, 337), new Range16.ptr(10177, 10180, 1), new Range16.ptr(10183, 10213, 1), new Range16.ptr(10224, 10239, 1), new Range16.ptr(10496, 10626, 1), new Range16.ptr(10649, 10711, 1), new Range16.ptr(10716, 10747, 1), new Range16.ptr(10750, 11007, 1), new Range16.ptr(11056, 11076, 1), new Range16.ptr(11079, 11084, 1), new Range16.ptr(64297, 65122, 825), new Range16.ptr(65124, 65126, 1), new Range16.ptr(65291, 65308, 17), new Range16.ptr(65309, 65310, 1), new Range16.ptr(65372, 65374, 2), new Range16.ptr(65506, 65513, 7), new Range16.ptr(65514, 65516, 1)]), new sliceType$1([new Range32.ptr(120513, 120539, 26), new Range32.ptr(120571, 120597, 26), new Range32.ptr(120629, 120655, 26), new Range32.ptr(120687, 120713, 26), new Range32.ptr(120745, 120771, 26), new Range32.ptr(126704, 126705, 1)]), 5); _So = new RangeTable.ptr(new sliceType([new Range16.ptr(166, 169, 3), new Range16.ptr(174, 176, 2), new Range16.ptr(1154, 1421, 267), new Range16.ptr(1422, 1550, 128), new Range16.ptr(1551, 1758, 207), new Range16.ptr(1769, 1789, 20), new Range16.ptr(1790, 2038, 248), new Range16.ptr(2554, 2928, 374), new Range16.ptr(3059, 3064, 1), new Range16.ptr(3066, 3199, 133), new Range16.ptr(3449, 3841, 392), new Range16.ptr(3842, 3843, 1), new Range16.ptr(3859, 3861, 2), new Range16.ptr(3862, 3863, 1), new Range16.ptr(3866, 3871, 1), new Range16.ptr(3892, 3896, 2), new Range16.ptr(4030, 4037, 1), new Range16.ptr(4039, 4044, 1), new Range16.ptr(4046, 4047, 1), new Range16.ptr(4053, 4056, 1), new Range16.ptr(4254, 4255, 1), new Range16.ptr(5008, 5017, 1), new Range16.ptr(6464, 6622, 158), new Range16.ptr(6623, 6655, 1), new Range16.ptr(7009, 7018, 1), new Range16.ptr(7028, 7036, 1), new Range16.ptr(8448, 8449, 1), new Range16.ptr(8451, 8454, 1), new Range16.ptr(8456, 8457, 1), new Range16.ptr(8468, 8470, 2), new Range16.ptr(8471, 8478, 7), new Range16.ptr(8479, 8483, 1), new Range16.ptr(8485, 8489, 2), new Range16.ptr(8494, 8506, 12), new Range16.ptr(8507, 8522, 15), new Range16.ptr(8524, 8525, 1), new Range16.ptr(8527, 8597, 70), new Range16.ptr(8598, 8601, 1), new Range16.ptr(8604, 8607, 1), new Range16.ptr(8609, 8610, 1), new Range16.ptr(8612, 8613, 1), new Range16.ptr(8615, 8621, 1), new Range16.ptr(8623, 8653, 1), new Range16.ptr(8656, 8657, 1), new Range16.ptr(8659, 8661, 2), new Range16.ptr(8662, 8691, 1), new Range16.ptr(8960, 8967, 1), new Range16.ptr(8972, 8991, 1), new Range16.ptr(8994, 9000, 1), new Range16.ptr(9003, 9083, 1), new Range16.ptr(9085, 9114, 1), new Range16.ptr(9140, 9179, 1), new Range16.ptr(9186, 9210, 1), new Range16.ptr(9216, 9254, 1), new Range16.ptr(9280, 9290, 1), new Range16.ptr(9372, 9449, 1), new Range16.ptr(9472, 9654, 1), new Range16.ptr(9656, 9664, 1), new Range16.ptr(9666, 9719, 1), new Range16.ptr(9728, 9838, 1), new Range16.ptr(9840, 10087, 1), new Range16.ptr(10132, 10175, 1), new Range16.ptr(10240, 10495, 1), new Range16.ptr(11008, 11055, 1), new Range16.ptr(11077, 11078, 1), new Range16.ptr(11085, 11123, 1), new Range16.ptr(11126, 11157, 1), new Range16.ptr(11160, 11193, 1), new Range16.ptr(11197, 11208, 1), new Range16.ptr(11210, 11217, 1), new Range16.ptr(11493, 11498, 1), new Range16.ptr(11904, 11929, 1), new Range16.ptr(11931, 12019, 1), new Range16.ptr(12032, 12245, 1), new Range16.ptr(12272, 12283, 1), new Range16.ptr(12292, 12306, 14), new Range16.ptr(12307, 12320, 13), new Range16.ptr(12342, 12343, 1), new Range16.ptr(12350, 12351, 1), new Range16.ptr(12688, 12689, 1), new Range16.ptr(12694, 12703, 1), new Range16.ptr(12736, 12771, 1), new Range16.ptr(12800, 12830, 1), new Range16.ptr(12842, 12871, 1), new Range16.ptr(12880, 12896, 16), new Range16.ptr(12897, 12927, 1), new Range16.ptr(12938, 12976, 1), new Range16.ptr(12992, 13054, 1), new Range16.ptr(13056, 13311, 1), new Range16.ptr(19904, 19967, 1), new Range16.ptr(42128, 42182, 1), new Range16.ptr(43048, 43051, 1), new Range16.ptr(43062, 43063, 1), new Range16.ptr(43065, 43639, 574), new Range16.ptr(43640, 43641, 1), new Range16.ptr(65021, 65508, 487), new Range16.ptr(65512, 65517, 5), new Range16.ptr(65518, 65532, 14), new Range16.ptr(65533, 65533, 1)]), new sliceType$1([new Range32.ptr(65847, 65847, 1), new Range32.ptr(65848, 65855, 1), new Range32.ptr(65913, 65929, 1), new Range32.ptr(65932, 65936, 4), new Range32.ptr(65937, 65947, 1), new Range32.ptr(65952, 66000, 48), new Range32.ptr(66001, 66044, 1), new Range32.ptr(67703, 67704, 1), new Range32.ptr(68296, 92988, 24692), new Range32.ptr(92989, 92991, 1), new Range32.ptr(92997, 113820, 20823), new Range32.ptr(118784, 119029, 1), new Range32.ptr(119040, 119078, 1), new Range32.ptr(119081, 119140, 1), new Range32.ptr(119146, 119148, 1), new Range32.ptr(119171, 119172, 1), new Range32.ptr(119180, 119209, 1), new Range32.ptr(119214, 119261, 1), new Range32.ptr(119296, 119361, 1), new Range32.ptr(119365, 119552, 187), new Range32.ptr(119553, 119638, 1), new Range32.ptr(126976, 127019, 1), new Range32.ptr(127024, 127123, 1), new Range32.ptr(127136, 127150, 1), new Range32.ptr(127153, 127167, 1), new Range32.ptr(127169, 127183, 1), new Range32.ptr(127185, 127221, 1), new Range32.ptr(127248, 127278, 1), new Range32.ptr(127280, 127339, 1), new Range32.ptr(127344, 127386, 1), new Range32.ptr(127462, 127490, 1), new Range32.ptr(127504, 127546, 1), new Range32.ptr(127552, 127560, 1), new Range32.ptr(127568, 127569, 1), new Range32.ptr(127744, 127788, 1), new Range32.ptr(127792, 127869, 1), new Range32.ptr(127872, 127950, 1), new Range32.ptr(127956, 127991, 1), new Range32.ptr(128000, 128254, 1), new Range32.ptr(128256, 128330, 1), new Range32.ptr(128336, 128377, 1), new Range32.ptr(128379, 128419, 1), new Range32.ptr(128421, 128578, 1), new Range32.ptr(128581, 128719, 1), new Range32.ptr(128736, 128748, 1), new Range32.ptr(128752, 128755, 1), new Range32.ptr(128768, 128883, 1), new Range32.ptr(128896, 128980, 1), new Range32.ptr(129024, 129035, 1), new Range32.ptr(129040, 129095, 1), new Range32.ptr(129104, 129113, 1), new Range32.ptr(129120, 129159, 1), new Range32.ptr(129168, 129197, 1)]), 2); _Z = new RangeTable.ptr(new sliceType([new Range16.ptr(32, 160, 128), new Range16.ptr(5760, 8192, 2432), new Range16.ptr(8193, 8202, 1), new Range16.ptr(8232, 8233, 1), new Range16.ptr(8239, 8287, 48), new Range16.ptr(12288, 12288, 1)]), sliceType$1.nil, 1); _Zl = new RangeTable.ptr(new sliceType([new Range16.ptr(8232, 8232, 1)]), sliceType$1.nil, 0); _Zp = new RangeTable.ptr(new sliceType([new Range16.ptr(8233, 8233, 1)]), sliceType$1.nil, 0); _Zs = new RangeTable.ptr(new sliceType([new Range16.ptr(32, 160, 128), new Range16.ptr(5760, 8192, 2432), new Range16.ptr(8193, 8202, 1), new Range16.ptr(8239, 8287, 48), new Range16.ptr(12288, 12288, 1)]), sliceType$1.nil, 1); $pkg.Cc = _Cc; $pkg.Cf = _Cf; $pkg.Co = _Co; $pkg.Cs = _Cs; $pkg.Digit = _Nd; $pkg.Nd = _Nd; $pkg.Letter = _L; $pkg.L = _L; $pkg.Lm = _Lm; $pkg.Lo = _Lo; $pkg.Ll = _Ll; $pkg.M = _M; $pkg.Mc = _Mc; $pkg.Me = _Me; $pkg.Mn = _Mn; $pkg.Nl = _Nl; $pkg.No = _No; $pkg.N = _N; $pkg.C = _C; $pkg.Pc = _Pc; $pkg.Pd = _Pd; $pkg.Pe = _Pe; $pkg.Pf = _Pf; $pkg.Pi = _Pi; $pkg.Po = _Po; $pkg.Ps = _Ps; $pkg.P = _P; $pkg.Sc = _Sc; $pkg.Sk = _Sk; $pkg.Sm = _Sm; $pkg.So = _So; $pkg.Z = _Z; $pkg.S = _S; $pkg.PrintRanges = new sliceType$2([$pkg.L, $pkg.M, $pkg.N, $pkg.P, $pkg.S]); $pkg.Lt = _Lt; $pkg.Lu = _Lu; $pkg.Zl = _Zl; $pkg.Zp = _Zp; $pkg.Zs = _Zs; $pkg.Categories = (_map = new $Map(), _key = "C", _map[_key] = { k: _key, v: $pkg.C }, _key = "Cc", _map[_key] = { k: _key, v: $pkg.Cc }, _key = "Cf", _map[_key] = { k: _key, v: $pkg.Cf }, _key = "Co", _map[_key] = { k: _key, v: $pkg.Co }, _key = "Cs", _map[_key] = { k: _key, v: $pkg.Cs }, _key = "L", _map[_key] = { k: _key, v: $pkg.L }, _key = "Ll", _map[_key] = { k: _key, v: $pkg.Ll }, _key = "Lm", _map[_key] = { k: _key, v: $pkg.Lm }, _key = "Lo", _map[_key] = { k: _key, v: $pkg.Lo }, _key = "Lt", _map[_key] = { k: _key, v: $pkg.Lt }, _key = "Lu", _map[_key] = { k: _key, v: $pkg.Lu }, _key = "M", _map[_key] = { k: _key, v: $pkg.M }, _key = "Mc", _map[_key] = { k: _key, v: $pkg.Mc }, _key = "Me", _map[_key] = { k: _key, v: $pkg.Me }, _key = "Mn", _map[_key] = { k: _key, v: $pkg.Mn }, _key = "N", _map[_key] = { k: _key, v: $pkg.N }, _key = "Nd", _map[_key] = { k: _key, v: $pkg.Nd }, _key = "Nl", _map[_key] = { k: _key, v: $pkg.Nl }, _key = "No", _map[_key] = { k: _key, v: $pkg.No }, _key = "P", _map[_key] = { k: _key, v: $pkg.P }, _key = "Pc", _map[_key] = { k: _key, v: $pkg.Pc }, _key = "Pd", _map[_key] = { k: _key, v: $pkg.Pd }, _key = "Pe", _map[_key] = { k: _key, v: $pkg.Pe }, _key = "Pf", _map[_key] = { k: _key, v: $pkg.Pf }, _key = "Pi", _map[_key] = { k: _key, v: $pkg.Pi }, _key = "Po", _map[_key] = { k: _key, v: $pkg.Po }, _key = "Ps", _map[_key] = { k: _key, v: $pkg.Ps }, _key = "S", _map[_key] = { k: _key, v: $pkg.S }, _key = "Sc", _map[_key] = { k: _key, v: $pkg.Sc }, _key = "Sk", _map[_key] = { k: _key, v: $pkg.Sk }, _key = "Sm", _map[_key] = { k: _key, v: $pkg.Sm }, _key = "So", _map[_key] = { k: _key, v: $pkg.So }, _key = "Z", _map[_key] = { k: _key, v: $pkg.Z }, _key = "Zl", _map[_key] = { k: _key, v: $pkg.Zl }, _key = "Zp", _map[_key] = { k: _key, v: $pkg.Zp }, _key = "Zs", _map[_key] = { k: _key, v: $pkg.Zs }, _map); _Arabic = new RangeTable.ptr(new sliceType([new Range16.ptr(1536, 1540, 1), new Range16.ptr(1542, 1547, 1), new Range16.ptr(1549, 1562, 1), new Range16.ptr(1566, 1566, 1), new Range16.ptr(1568, 1599, 1), new Range16.ptr(1601, 1610, 1), new Range16.ptr(1622, 1631, 1), new Range16.ptr(1642, 1647, 1), new Range16.ptr(1649, 1756, 1), new Range16.ptr(1758, 1791, 1), new Range16.ptr(1872, 1919, 1), new Range16.ptr(2208, 2226, 1), new Range16.ptr(2276, 2303, 1), new Range16.ptr(64336, 64449, 1), new Range16.ptr(64467, 64829, 1), new Range16.ptr(64848, 64911, 1), new Range16.ptr(64914, 64967, 1), new Range16.ptr(65008, 65021, 1), new Range16.ptr(65136, 65140, 1), new Range16.ptr(65142, 65276, 1)]), new sliceType$1([new Range32.ptr(69216, 69246, 1), new Range32.ptr(126464, 126467, 1), new Range32.ptr(126469, 126495, 1), new Range32.ptr(126497, 126498, 1), new Range32.ptr(126500, 126500, 1), new Range32.ptr(126503, 126503, 1), new Range32.ptr(126505, 126514, 1), new Range32.ptr(126516, 126519, 1), new Range32.ptr(126521, 126521, 1), new Range32.ptr(126523, 126523, 1), new Range32.ptr(126530, 126530, 1), new Range32.ptr(126535, 126535, 1), new Range32.ptr(126537, 126537, 1), new Range32.ptr(126539, 126539, 1), new Range32.ptr(126541, 126543, 1), new Range32.ptr(126545, 126546, 1), new Range32.ptr(126548, 126548, 1), new Range32.ptr(126551, 126551, 1), new Range32.ptr(126553, 126553, 1), new Range32.ptr(126555, 126555, 1), new Range32.ptr(126557, 126557, 1), new Range32.ptr(126559, 126559, 1), new Range32.ptr(126561, 126562, 1), new Range32.ptr(126564, 126564, 1), 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, 126590, 1), new Range32.ptr(126592, 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(126704, 126705, 1)]), 0); _Armenian = new RangeTable.ptr(new sliceType([new Range16.ptr(1329, 1366, 1), new Range16.ptr(1369, 1375, 1), new Range16.ptr(1377, 1415, 1), new Range16.ptr(1418, 1418, 1), new Range16.ptr(1421, 1423, 1), new Range16.ptr(64275, 64279, 1)]), sliceType$1.nil, 0); _Avestan = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(68352, 68405, 1), new Range32.ptr(68409, 68415, 1)]), 0); _Balinese = new RangeTable.ptr(new sliceType([new Range16.ptr(6912, 6987, 1), new Range16.ptr(6992, 7036, 1)]), sliceType$1.nil, 0); _Bamum = new RangeTable.ptr(new sliceType([new Range16.ptr(42656, 42743, 1)]), new sliceType$1([new Range32.ptr(92160, 92728, 1)]), 0); _Bassa_Vah = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(92880, 92909, 1), new Range32.ptr(92912, 92917, 1)]), 0); _Batak = new RangeTable.ptr(new sliceType([new Range16.ptr(7104, 7155, 1), new Range16.ptr(7164, 7167, 1)]), sliceType$1.nil, 0); _Bengali = new RangeTable.ptr(new sliceType([new Range16.ptr(2432, 2435, 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, 2482, 1), new Range16.ptr(2486, 2489, 1), new Range16.ptr(2492, 2500, 1), new Range16.ptr(2503, 2504, 1), new Range16.ptr(2507, 2510, 1), new Range16.ptr(2519, 2519, 1), new Range16.ptr(2524, 2525, 1), new Range16.ptr(2527, 2531, 1), new Range16.ptr(2534, 2555, 1)]), sliceType$1.nil, 0); _Bopomofo = new RangeTable.ptr(new sliceType([new Range16.ptr(746, 747, 1), new Range16.ptr(12549, 12589, 1), new Range16.ptr(12704, 12730, 1)]), sliceType$1.nil, 0); _Brahmi = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(69632, 69709, 1), new Range32.ptr(69714, 69743, 1), new Range32.ptr(69759, 69759, 1)]), 0); _Braille = new RangeTable.ptr(new sliceType([new Range16.ptr(10240, 10495, 1)]), sliceType$1.nil, 0); _Buginese = new RangeTable.ptr(new sliceType([new Range16.ptr(6656, 6683, 1), new Range16.ptr(6686, 6687, 1)]), sliceType$1.nil, 0); _Buhid = new RangeTable.ptr(new sliceType([new Range16.ptr(5952, 5971, 1)]), sliceType$1.nil, 0); _Canadian_Aboriginal = new RangeTable.ptr(new sliceType([new Range16.ptr(5120, 5759, 1), new Range16.ptr(6320, 6389, 1)]), sliceType$1.nil, 0); _Carian = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(66208, 66256, 1)]), 0); _Caucasian_Albanian = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(66864, 66915, 1), new Range32.ptr(66927, 66927, 1)]), 0); _Chakma = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(69888, 69940, 1), new Range32.ptr(69942, 69955, 1)]), 0); _Cham = new RangeTable.ptr(new sliceType([new Range16.ptr(43520, 43574, 1), new Range16.ptr(43584, 43597, 1), new Range16.ptr(43600, 43609, 1), new Range16.ptr(43612, 43615, 1)]), sliceType$1.nil, 0); _Cherokee = new RangeTable.ptr(new sliceType([new Range16.ptr(5024, 5108, 1)]), sliceType$1.nil, 0); _Common = new RangeTable.ptr(new sliceType([new Range16.ptr(0, 64, 1), new Range16.ptr(91, 96, 1), new Range16.ptr(123, 169, 1), new Range16.ptr(171, 185, 1), new Range16.ptr(187, 191, 1), new Range16.ptr(215, 215, 1), new Range16.ptr(247, 247, 1), new Range16.ptr(697, 735, 1), new Range16.ptr(741, 745, 1), new Range16.ptr(748, 767, 1), new Range16.ptr(884, 884, 1), new Range16.ptr(894, 894, 1), new Range16.ptr(901, 901, 1), new Range16.ptr(903, 903, 1), new Range16.ptr(1417, 1417, 1), new Range16.ptr(1541, 1541, 1), new Range16.ptr(1548, 1548, 1), new Range16.ptr(1563, 1564, 1), new Range16.ptr(1567, 1567, 1), new Range16.ptr(1600, 1600, 1), new Range16.ptr(1632, 1641, 1), new Range16.ptr(1757, 1757, 1), new Range16.ptr(2404, 2405, 1), new Range16.ptr(3647, 3647, 1), new Range16.ptr(4053, 4056, 1), new Range16.ptr(4347, 4347, 1), new Range16.ptr(5867, 5869, 1), new Range16.ptr(5941, 5942, 1), new Range16.ptr(6146, 6147, 1), new Range16.ptr(6149, 6149, 1), new Range16.ptr(7379, 7379, 1), new Range16.ptr(7393, 7393, 1), new Range16.ptr(7401, 7404, 1), new Range16.ptr(7406, 7411, 1), new Range16.ptr(7413, 7414, 1), new Range16.ptr(8192, 8203, 1), new Range16.ptr(8206, 8292, 1), new Range16.ptr(8294, 8304, 1), new Range16.ptr(8308, 8318, 1), new Range16.ptr(8320, 8334, 1), new Range16.ptr(8352, 8381, 1), new Range16.ptr(8448, 8485, 1), new Range16.ptr(8487, 8489, 1), new Range16.ptr(8492, 8497, 1), new Range16.ptr(8499, 8525, 1), new Range16.ptr(8527, 8543, 1), new Range16.ptr(8585, 8585, 1), new Range16.ptr(8592, 9210, 1), new Range16.ptr(9216, 9254, 1), new Range16.ptr(9280, 9290, 1), new Range16.ptr(9312, 10239, 1), new Range16.ptr(10496, 11123, 1), new Range16.ptr(11126, 11157, 1), new Range16.ptr(11160, 11193, 1), new Range16.ptr(11197, 11208, 1), new Range16.ptr(11210, 11217, 1), new Range16.ptr(11776, 11842, 1), new Range16.ptr(12272, 12283, 1), new Range16.ptr(12288, 12292, 1), new Range16.ptr(12294, 12294, 1), new Range16.ptr(12296, 12320, 1), new Range16.ptr(12336, 12343, 1), new Range16.ptr(12348, 12351, 1), new Range16.ptr(12443, 12444, 1), new Range16.ptr(12448, 12448, 1), new Range16.ptr(12539, 12540, 1), new Range16.ptr(12688, 12703, 1), new Range16.ptr(12736, 12771, 1), new Range16.ptr(12832, 12895, 1), new Range16.ptr(12927, 13007, 1), new Range16.ptr(13144, 13311, 1), new Range16.ptr(19904, 19967, 1), new Range16.ptr(42752, 42785, 1), new Range16.ptr(42888, 42890, 1), new Range16.ptr(43056, 43065, 1), new Range16.ptr(43310, 43310, 1), new Range16.ptr(43471, 43471, 1), new Range16.ptr(43867, 43867, 1), new Range16.ptr(64830, 64831, 1), new Range16.ptr(65040, 65049, 1), new Range16.ptr(65072, 65106, 1), new Range16.ptr(65108, 65126, 1), new Range16.ptr(65128, 65131, 1), new Range16.ptr(65279, 65279, 1), new Range16.ptr(65281, 65312, 1), new Range16.ptr(65339, 65344, 1), new Range16.ptr(65371, 65381, 1), new Range16.ptr(65392, 65392, 1), new Range16.ptr(65438, 65439, 1), new Range16.ptr(65504, 65510, 1), new Range16.ptr(65512, 65518, 1), new Range16.ptr(65529, 65533, 1)]), new sliceType$1([new Range32.ptr(65792, 65794, 1), new Range32.ptr(65799, 65843, 1), new Range32.ptr(65847, 65855, 1), new Range32.ptr(65936, 65947, 1), new Range32.ptr(66000, 66044, 1), new Range32.ptr(66273, 66299, 1), new Range32.ptr(113824, 113827, 1), new Range32.ptr(118784, 119029, 1), new Range32.ptr(119040, 119078, 1), new Range32.ptr(119081, 119142, 1), new Range32.ptr(119146, 119162, 1), new Range32.ptr(119171, 119172, 1), new Range32.ptr(119180, 119209, 1), new Range32.ptr(119214, 119261, 1), new Range32.ptr(119552, 119638, 1), new Range32.ptr(119648, 119665, 1), new Range32.ptr(119808, 119892, 1), new Range32.ptr(119894, 119964, 1), new Range32.ptr(119966, 119967, 1), new Range32.ptr(119970, 119970, 1), new Range32.ptr(119973, 119974, 1), new Range32.ptr(119977, 119980, 1), new Range32.ptr(119982, 119993, 1), new Range32.ptr(119995, 119995, 1), new Range32.ptr(119997, 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, 120134, 1), new Range32.ptr(120138, 120144, 1), new Range32.ptr(120146, 120485, 1), new Range32.ptr(120488, 120779, 1), new Range32.ptr(120782, 120831, 1), new Range32.ptr(126976, 127019, 1), new Range32.ptr(127024, 127123, 1), new Range32.ptr(127136, 127150, 1), new Range32.ptr(127153, 127167, 1), new Range32.ptr(127169, 127183, 1), new Range32.ptr(127185, 127221, 1), new Range32.ptr(127232, 127244, 1), new Range32.ptr(127248, 127278, 1), new Range32.ptr(127280, 127339, 1), new Range32.ptr(127344, 127386, 1), new Range32.ptr(127462, 127487, 1), new Range32.ptr(127489, 127490, 1), new Range32.ptr(127504, 127546, 1), new Range32.ptr(127552, 127560, 1), new Range32.ptr(127568, 127569, 1), new Range32.ptr(127744, 127788, 1), new Range32.ptr(127792, 127869, 1), new Range32.ptr(127872, 127950, 1), new Range32.ptr(127956, 127991, 1), new Range32.ptr(128000, 128254, 1), new Range32.ptr(128256, 128330, 1), new Range32.ptr(128336, 128377, 1), new Range32.ptr(128379, 128419, 1), new Range32.ptr(128421, 128578, 1), new Range32.ptr(128581, 128719, 1), new Range32.ptr(128736, 128748, 1), new Range32.ptr(128752, 128755, 1), new Range32.ptr(128768, 128883, 1), new Range32.ptr(128896, 128980, 1), new Range32.ptr(129024, 129035, 1), new Range32.ptr(129040, 129095, 1), new Range32.ptr(129104, 129113, 1), new Range32.ptr(129120, 129159, 1), new Range32.ptr(129168, 129197, 1), new Range32.ptr(917505, 917505, 1), new Range32.ptr(917536, 917631, 1)]), 7); _Coptic = new RangeTable.ptr(new sliceType([new Range16.ptr(994, 1007, 1), new Range16.ptr(11392, 11507, 1), new Range16.ptr(11513, 11519, 1)]), sliceType$1.nil, 0); _Cuneiform = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(73728, 74648, 1), new Range32.ptr(74752, 74862, 1), new Range32.ptr(74864, 74868, 1)]), 0); _Cypriot = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(67584, 67589, 1), new Range32.ptr(67592, 67592, 1), new Range32.ptr(67594, 67637, 1), new Range32.ptr(67639, 67640, 1), new Range32.ptr(67644, 67644, 1), new Range32.ptr(67647, 67647, 1)]), 0); _Cyrillic = new RangeTable.ptr(new sliceType([new Range16.ptr(1024, 1156, 1), new Range16.ptr(1159, 1327, 1), new Range16.ptr(7467, 7467, 1), new Range16.ptr(7544, 7544, 1), new Range16.ptr(11744, 11775, 1), new Range16.ptr(42560, 42653, 1), new Range16.ptr(42655, 42655, 1)]), sliceType$1.nil, 0); _Deseret = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(66560, 66639, 1)]), 0); _Devanagari = new RangeTable.ptr(new sliceType([new Range16.ptr(2304, 2384, 1), new Range16.ptr(2387, 2403, 1), new Range16.ptr(2406, 2431, 1), new Range16.ptr(43232, 43259, 1)]), sliceType$1.nil, 0); _Duployan = new RangeTable.ptr(new sliceType([]), new sliceType$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(113820, 113823, 1)]), 0); _Egyptian_Hieroglyphs = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(77824, 78894, 1)]), 0); _Elbasan = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(66816, 66855, 1)]), 0); _Ethiopic = new RangeTable.ptr(new sliceType([new Range16.ptr(4608, 4680, 1), new Range16.ptr(4682, 4685, 1), new Range16.ptr(4688, 4694, 1), new Range16.ptr(4696, 4696, 1), new Range16.ptr(4698, 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, 4800, 1), new Range16.ptr(4802, 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(4957, 4988, 1), new Range16.ptr(4992, 5017, 1), new Range16.ptr(11648, 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(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)]), sliceType$1.nil, 0); _Georgian = new RangeTable.ptr(new sliceType([new Range16.ptr(4256, 4293, 1), new Range16.ptr(4295, 4295, 1), new Range16.ptr(4301, 4301, 1), new Range16.ptr(4304, 4346, 1), new Range16.ptr(4348, 4351, 1), new Range16.ptr(11520, 11557, 1), new Range16.ptr(11559, 11559, 1), new Range16.ptr(11565, 11565, 1)]), sliceType$1.nil, 0); _Glagolitic = new RangeTable.ptr(new sliceType([new Range16.ptr(11264, 11310, 1), new Range16.ptr(11312, 11358, 1)]), sliceType$1.nil, 0); _Gothic = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(66352, 66378, 1)]), 0); _Grantha = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(70401, 70403, 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(70460, 70468, 1), new Range32.ptr(70471, 70472, 1), new Range32.ptr(70475, 70477, 1), new Range32.ptr(70487, 70487, 1), new Range32.ptr(70493, 70499, 1), new Range32.ptr(70502, 70508, 1), new Range32.ptr(70512, 70516, 1)]), 0); _Greek = new RangeTable.ptr(new sliceType([new Range16.ptr(880, 883, 1), new Range16.ptr(885, 887, 1), new Range16.ptr(890, 893, 1), new Range16.ptr(895, 895, 1), new Range16.ptr(900, 900, 1), new Range16.ptr(902, 902, 1), new Range16.ptr(904, 906, 1), new Range16.ptr(908, 908, 1), new Range16.ptr(910, 929, 1), new Range16.ptr(931, 993, 1), new Range16.ptr(1008, 1023, 1), new Range16.ptr(7462, 7466, 1), new Range16.ptr(7517, 7521, 1), new Range16.ptr(7526, 7530, 1), new Range16.ptr(7615, 7615, 1), new Range16.ptr(7936, 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, 8025, 1), new Range16.ptr(8027, 8027, 1), new Range16.ptr(8029, 8029, 1), new Range16.ptr(8031, 8061, 1), new Range16.ptr(8064, 8116, 1), new Range16.ptr(8118, 8132, 1), new Range16.ptr(8134, 8147, 1), new Range16.ptr(8150, 8155, 1), new Range16.ptr(8157, 8175, 1), new Range16.ptr(8178, 8180, 1), new Range16.ptr(8182, 8190, 1), new Range16.ptr(8486, 8486, 1), new Range16.ptr(43877, 43877, 1)]), new sliceType$1([new Range32.ptr(65856, 65932, 1), new Range32.ptr(65952, 65952, 1), new Range32.ptr(119296, 119365, 1)]), 0); _Gujarati = new RangeTable.ptr(new sliceType([new Range16.ptr(2689, 2691, 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(2748, 2757, 1), new Range16.ptr(2759, 2761, 1), new Range16.ptr(2763, 2765, 1), new Range16.ptr(2768, 2768, 1), new Range16.ptr(2784, 2787, 1), new Range16.ptr(2790, 2801, 1)]), sliceType$1.nil, 0); _Gurmukhi = new RangeTable.ptr(new sliceType([new Range16.ptr(2561, 2563, 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(2620, 2620, 1), new Range16.ptr(2622, 2626, 1), new Range16.ptr(2631, 2632, 1), new Range16.ptr(2635, 2637, 1), new Range16.ptr(2641, 2641, 1), new Range16.ptr(2649, 2652, 1), new Range16.ptr(2654, 2654, 1), new Range16.ptr(2662, 2677, 1)]), sliceType$1.nil, 0); _Han = new RangeTable.ptr(new sliceType([new Range16.ptr(11904, 11929, 1), new Range16.ptr(11931, 12019, 1), new Range16.ptr(12032, 12245, 1), new Range16.ptr(12293, 12293, 1), new Range16.ptr(12295, 12295, 1), new Range16.ptr(12321, 12329, 1), new Range16.ptr(12344, 12347, 1), new Range16.ptr(13312, 19893, 1), new Range16.ptr(19968, 40908, 1), new Range16.ptr(63744, 64109, 1), new Range16.ptr(64112, 64217, 1)]), new sliceType$1([new Range32.ptr(131072, 173782, 1), new Range32.ptr(173824, 177972, 1), new Range32.ptr(177984, 178205, 1), new Range32.ptr(194560, 195101, 1)]), 0); _Hangul = new RangeTable.ptr(new sliceType([new Range16.ptr(4352, 4607, 1), new Range16.ptr(12334, 12335, 1), new Range16.ptr(12593, 12686, 1), new Range16.ptr(12800, 12830, 1), new Range16.ptr(12896, 12926, 1), new Range16.ptr(43360, 43388, 1), new Range16.ptr(44032, 55203, 1), new Range16.ptr(55216, 55238, 1), new Range16.ptr(55243, 55291, 1), new Range16.ptr(65440, 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)]), sliceType$1.nil, 0); _Hanunoo = new RangeTable.ptr(new sliceType([new Range16.ptr(5920, 5940, 1)]), sliceType$1.nil, 0); _Hebrew = new RangeTable.ptr(new sliceType([new Range16.ptr(1425, 1479, 1), new Range16.ptr(1488, 1514, 1), new Range16.ptr(1520, 1524, 1), new Range16.ptr(64285, 64310, 1), new Range16.ptr(64312, 64316, 1), new Range16.ptr(64318, 64318, 1), new Range16.ptr(64320, 64321, 1), new Range16.ptr(64323, 64324, 1), new Range16.ptr(64326, 64335, 1)]), sliceType$1.nil, 0); _Hiragana = new RangeTable.ptr(new sliceType([new Range16.ptr(12353, 12438, 1), new Range16.ptr(12445, 12447, 1)]), new sliceType$1([new Range32.ptr(110593, 110593, 1), new Range32.ptr(127488, 127488, 1)]), 0); _Imperial_Aramaic = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(67648, 67669, 1), new Range32.ptr(67671, 67679, 1)]), 0); _Inherited = new RangeTable.ptr(new sliceType([new Range16.ptr(768, 879, 1), new Range16.ptr(1157, 1158, 1), new Range16.ptr(1611, 1621, 1), new Range16.ptr(1648, 1648, 1), new Range16.ptr(2385, 2386, 1), new Range16.ptr(6832, 6846, 1), new Range16.ptr(7376, 7378, 1), new Range16.ptr(7380, 7392, 1), new Range16.ptr(7394, 7400, 1), new Range16.ptr(7405, 7405, 1), new Range16.ptr(7412, 7412, 1), new Range16.ptr(7416, 7417, 1), new Range16.ptr(7616, 7669, 1), new Range16.ptr(7676, 7679, 1), new Range16.ptr(8204, 8205, 1), new Range16.ptr(8400, 8432, 1), new Range16.ptr(12330, 12333, 1), new Range16.ptr(12441, 12442, 1), new Range16.ptr(65024, 65039, 1), new Range16.ptr(65056, 65069, 1)]), new sliceType$1([new Range32.ptr(66045, 66045, 1), new Range32.ptr(66272, 66272, 1), new Range32.ptr(119143, 119145, 1), new Range32.ptr(119163, 119170, 1), new Range32.ptr(119173, 119179, 1), new Range32.ptr(119210, 119213, 1), new Range32.ptr(917760, 917999, 1)]), 0); _Inscriptional_Pahlavi = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(68448, 68466, 1), new Range32.ptr(68472, 68479, 1)]), 0); _Inscriptional_Parthian = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(68416, 68437, 1), new Range32.ptr(68440, 68447, 1)]), 0); _Javanese = new RangeTable.ptr(new sliceType([new Range16.ptr(43392, 43469, 1), new Range16.ptr(43472, 43481, 1), new Range16.ptr(43486, 43487, 1)]), sliceType$1.nil, 0); _Kaithi = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(69760, 69825, 1)]), 0); _Kannada = new RangeTable.ptr(new sliceType([new Range16.ptr(3201, 3203, 1), new Range16.ptr(3205, 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(3260, 3268, 1), new Range16.ptr(3270, 3272, 1), new Range16.ptr(3274, 3277, 1), new Range16.ptr(3285, 3286, 1), new Range16.ptr(3294, 3294, 1), new Range16.ptr(3296, 3299, 1), new Range16.ptr(3302, 3311, 1), new Range16.ptr(3313, 3314, 1)]), sliceType$1.nil, 0); _Katakana = new RangeTable.ptr(new sliceType([new Range16.ptr(12449, 12538, 1), new Range16.ptr(12541, 12543, 1), new Range16.ptr(12784, 12799, 1), new Range16.ptr(13008, 13054, 1), new Range16.ptr(13056, 13143, 1), new Range16.ptr(65382, 65391, 1), new Range16.ptr(65393, 65437, 1)]), new sliceType$1([new Range32.ptr(110592, 110592, 1)]), 0); _Kayah_Li = new RangeTable.ptr(new sliceType([new Range16.ptr(43264, 43309, 1), new Range16.ptr(43311, 43311, 1)]), sliceType$1.nil, 0); _Kharoshthi = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(68096, 68099, 1), new Range32.ptr(68101, 68102, 1), new Range32.ptr(68108, 68115, 1), new Range32.ptr(68117, 68119, 1), new Range32.ptr(68121, 68147, 1), new Range32.ptr(68152, 68154, 1), new Range32.ptr(68159, 68167, 1), new Range32.ptr(68176, 68184, 1)]), 0); _Khmer = new RangeTable.ptr(new sliceType([new Range16.ptr(6016, 6109, 1), new Range16.ptr(6112, 6121, 1), new Range16.ptr(6128, 6137, 1), new Range16.ptr(6624, 6655, 1)]), sliceType$1.nil, 0); _Khojki = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(70144, 70161, 1), new Range32.ptr(70163, 70205, 1)]), 0); _Khudawadi = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(70320, 70378, 1), new Range32.ptr(70384, 70393, 1)]), 0); _Lao = new RangeTable.ptr(new sliceType([new Range16.ptr(3713, 3714, 1), new Range16.ptr(3716, 3716, 1), new Range16.ptr(3719, 3720, 1), new Range16.ptr(3722, 3722, 1), new Range16.ptr(3725, 3725, 1), new Range16.ptr(3732, 3735, 1), new Range16.ptr(3737, 3743, 1), new Range16.ptr(3745, 3747, 1), new Range16.ptr(3749, 3749, 1), new Range16.ptr(3751, 3751, 1), new Range16.ptr(3754, 3755, 1), new Range16.ptr(3757, 3769, 1), new Range16.ptr(3771, 3773, 1), new Range16.ptr(3776, 3780, 1), new Range16.ptr(3782, 3782, 1), new Range16.ptr(3784, 3789, 1), new Range16.ptr(3792, 3801, 1), new Range16.ptr(3804, 3807, 1)]), sliceType$1.nil, 0); _Latin = new RangeTable.ptr(new sliceType([new Range16.ptr(65, 90, 1), new Range16.ptr(97, 122, 1), new Range16.ptr(170, 170, 1), new Range16.ptr(186, 186, 1), new Range16.ptr(192, 214, 1), new Range16.ptr(216, 246, 1), new Range16.ptr(248, 696, 1), new Range16.ptr(736, 740, 1), new Range16.ptr(7424, 7461, 1), new Range16.ptr(7468, 7516, 1), new Range16.ptr(7522, 7525, 1), new Range16.ptr(7531, 7543, 1), new Range16.ptr(7545, 7614, 1), new Range16.ptr(7680, 7935, 1), new Range16.ptr(8305, 8305, 1), new Range16.ptr(8319, 8319, 1), new Range16.ptr(8336, 8348, 1), new Range16.ptr(8490, 8491, 1), new Range16.ptr(8498, 8498, 1), new Range16.ptr(8526, 8526, 1), new Range16.ptr(8544, 8584, 1), new Range16.ptr(11360, 11391, 1), new Range16.ptr(42786, 42887, 1), new Range16.ptr(42891, 42894, 1), new Range16.ptr(42896, 42925, 1), new Range16.ptr(42928, 42929, 1), new Range16.ptr(42999, 43007, 1), new Range16.ptr(43824, 43866, 1), new Range16.ptr(43868, 43871, 1), new Range16.ptr(43876, 43876, 1), new Range16.ptr(64256, 64262, 1), new Range16.ptr(65313, 65338, 1), new Range16.ptr(65345, 65370, 1)]), sliceType$1.nil, 6); _Lepcha = new RangeTable.ptr(new sliceType([new Range16.ptr(7168, 7223, 1), new Range16.ptr(7227, 7241, 1), new Range16.ptr(7245, 7247, 1)]), sliceType$1.nil, 0); _Limbu = new RangeTable.ptr(new sliceType([new Range16.ptr(6400, 6430, 1), new Range16.ptr(6432, 6443, 1), new Range16.ptr(6448, 6459, 1), new Range16.ptr(6464, 6464, 1), new Range16.ptr(6468, 6479, 1)]), sliceType$1.nil, 0); _Linear_A = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(67072, 67382, 1), new Range32.ptr(67392, 67413, 1), new Range32.ptr(67424, 67431, 1)]), 0); _Linear_B = new RangeTable.ptr(new sliceType([]), 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)]), 0); _Lisu = new RangeTable.ptr(new sliceType([new Range16.ptr(42192, 42239, 1)]), sliceType$1.nil, 0); _Lycian = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(66176, 66204, 1)]), 0); _Lydian = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(67872, 67897, 1), new Range32.ptr(67903, 67903, 1)]), 0); _Mahajani = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(69968, 70006, 1)]), 0); _Malayalam = new RangeTable.ptr(new sliceType([new Range16.ptr(3329, 3331, 1), new Range16.ptr(3333, 3340, 1), new Range16.ptr(3342, 3344, 1), new Range16.ptr(3346, 3386, 1), new Range16.ptr(3389, 3396, 1), new Range16.ptr(3398, 3400, 1), new Range16.ptr(3402, 3406, 1), new Range16.ptr(3415, 3415, 1), new Range16.ptr(3424, 3427, 1), new Range16.ptr(3430, 3445, 1), new Range16.ptr(3449, 3455, 1)]), sliceType$1.nil, 0); _Mandaic = new RangeTable.ptr(new sliceType([new Range16.ptr(2112, 2139, 1), new Range16.ptr(2142, 2142, 1)]), sliceType$1.nil, 0); _Manichaean = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(68288, 68326, 1), new Range32.ptr(68331, 68342, 1)]), 0); _Meetei_Mayek = new RangeTable.ptr(new sliceType([new Range16.ptr(43744, 43766, 1), new Range16.ptr(43968, 44013, 1), new Range16.ptr(44016, 44025, 1)]), sliceType$1.nil, 0); _Mende_Kikakui = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(124928, 125124, 1), new Range32.ptr(125127, 125142, 1)]), 0); _Meroitic_Cursive = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(68000, 68023, 1), new Range32.ptr(68030, 68031, 1)]), 0); _Meroitic_Hieroglyphs = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(67968, 67999, 1)]), 0); _Miao = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(93952, 94020, 1), new Range32.ptr(94032, 94078, 1), new Range32.ptr(94095, 94111, 1)]), 0); _Modi = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(71168, 71236, 1), new Range32.ptr(71248, 71257, 1)]), 0); _Mongolian = new RangeTable.ptr(new sliceType([new Range16.ptr(6144, 6145, 1), new Range16.ptr(6148, 6148, 1), new Range16.ptr(6150, 6158, 1), new Range16.ptr(6160, 6169, 1), new Range16.ptr(6176, 6263, 1), new Range16.ptr(6272, 6314, 1)]), sliceType$1.nil, 0); _Mro = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(92736, 92766, 1), new Range32.ptr(92768, 92777, 1), new Range32.ptr(92782, 92783, 1)]), 0); _Myanmar = new RangeTable.ptr(new sliceType([new Range16.ptr(4096, 4255, 1), new Range16.ptr(43488, 43518, 1), new Range16.ptr(43616, 43647, 1)]), sliceType$1.nil, 0); _Nabataean = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(67712, 67742, 1), new Range32.ptr(67751, 67759, 1)]), 0); _New_Tai_Lue = new RangeTable.ptr(new sliceType([new Range16.ptr(6528, 6571, 1), new Range16.ptr(6576, 6601, 1), new Range16.ptr(6608, 6618, 1), new Range16.ptr(6622, 6623, 1)]), sliceType$1.nil, 0); _Nko = new RangeTable.ptr(new sliceType([new Range16.ptr(1984, 2042, 1)]), sliceType$1.nil, 0); _Ogham = new RangeTable.ptr(new sliceType([new Range16.ptr(5760, 5788, 1)]), sliceType$1.nil, 0); _Ol_Chiki = new RangeTable.ptr(new sliceType([new Range16.ptr(7248, 7295, 1)]), sliceType$1.nil, 0); _Old_Italic = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(66304, 66339, 1)]), 0); _Old_North_Arabian = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(68224, 68255, 1)]), 0); _Old_Permic = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(66384, 66426, 1)]), 0); _Old_Persian = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(66464, 66499, 1), new Range32.ptr(66504, 66517, 1)]), 0); _Old_South_Arabian = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(68192, 68223, 1)]), 0); _Old_Turkic = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(68608, 68680, 1)]), 0); _Oriya = new RangeTable.ptr(new sliceType([new Range16.ptr(2817, 2819, 1), new Range16.ptr(2821, 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(2876, 2884, 1), new Range16.ptr(2887, 2888, 1), new Range16.ptr(2891, 2893, 1), new Range16.ptr(2902, 2903, 1), new Range16.ptr(2908, 2909, 1), new Range16.ptr(2911, 2915, 1), new Range16.ptr(2918, 2935, 1)]), sliceType$1.nil, 0); _Osmanya = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(66688, 66717, 1), new Range32.ptr(66720, 66729, 1)]), 0); _Pahawh_Hmong = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(92928, 92997, 1), new Range32.ptr(93008, 93017, 1), new Range32.ptr(93019, 93025, 1), new Range32.ptr(93027, 93047, 1), new Range32.ptr(93053, 93071, 1)]), 0); _Palmyrene = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(67680, 67711, 1)]), 0); _Pau_Cin_Hau = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(72384, 72440, 1)]), 0); _Phags_Pa = new RangeTable.ptr(new sliceType([new Range16.ptr(43072, 43127, 1)]), sliceType$1.nil, 0); _Phoenician = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(67840, 67867, 1), new Range32.ptr(67871, 67871, 1)]), 0); _Psalter_Pahlavi = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(68480, 68497, 1), new Range32.ptr(68505, 68508, 1), new Range32.ptr(68521, 68527, 1)]), 0); _Rejang = new RangeTable.ptr(new sliceType([new Range16.ptr(43312, 43347, 1), new Range16.ptr(43359, 43359, 1)]), sliceType$1.nil, 0); _Runic = new RangeTable.ptr(new sliceType([new Range16.ptr(5792, 5866, 1), new Range16.ptr(5870, 5880, 1)]), sliceType$1.nil, 0); _Samaritan = new RangeTable.ptr(new sliceType([new Range16.ptr(2048, 2093, 1), new Range16.ptr(2096, 2110, 1)]), sliceType$1.nil, 0); _Saurashtra = new RangeTable.ptr(new sliceType([new Range16.ptr(43136, 43204, 1), new Range16.ptr(43214, 43225, 1)]), sliceType$1.nil, 0); _Sharada = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(70016, 70088, 1), new Range32.ptr(70093, 70093, 1), new Range32.ptr(70096, 70106, 1)]), 0); _Shavian = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(66640, 66687, 1)]), 0); _Siddham = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(71040, 71093, 1), new Range32.ptr(71096, 71113, 1)]), 0); _Sinhala = new RangeTable.ptr(new sliceType([new Range16.ptr(3458, 3459, 1), new Range16.ptr(3461, 3478, 1), new Range16.ptr(3482, 3505, 1), new Range16.ptr(3507, 3515, 1), new Range16.ptr(3517, 3517, 1), new Range16.ptr(3520, 3526, 1), new Range16.ptr(3530, 3530, 1), new Range16.ptr(3535, 3540, 1), new Range16.ptr(3542, 3542, 1), new Range16.ptr(3544, 3551, 1), new Range16.ptr(3558, 3567, 1), new Range16.ptr(3570, 3572, 1)]), new sliceType$1([new Range32.ptr(70113, 70132, 1)]), 0); _Sora_Sompeng = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(69840, 69864, 1), new Range32.ptr(69872, 69881, 1)]), 0); _Sundanese = new RangeTable.ptr(new sliceType([new Range16.ptr(7040, 7103, 1), new Range16.ptr(7360, 7367, 1)]), sliceType$1.nil, 0); _Syloti_Nagri = new RangeTable.ptr(new sliceType([new Range16.ptr(43008, 43051, 1)]), sliceType$1.nil, 0); _Syriac = new RangeTable.ptr(new sliceType([new Range16.ptr(1792, 1805, 1), new Range16.ptr(1807, 1866, 1), new Range16.ptr(1869, 1871, 1)]), sliceType$1.nil, 0); _Tagalog = new RangeTable.ptr(new sliceType([new Range16.ptr(5888, 5900, 1), new Range16.ptr(5902, 5908, 1)]), sliceType$1.nil, 0); _Tagbanwa = new RangeTable.ptr(new sliceType([new Range16.ptr(5984, 5996, 1), new Range16.ptr(5998, 6000, 1), new Range16.ptr(6002, 6003, 1)]), sliceType$1.nil, 0); _Tai_Le = new RangeTable.ptr(new sliceType([new Range16.ptr(6480, 6509, 1), new Range16.ptr(6512, 6516, 1)]), sliceType$1.nil, 0); _Tai_Tham = new RangeTable.ptr(new sliceType([new Range16.ptr(6688, 6750, 1), new Range16.ptr(6752, 6780, 1), new Range16.ptr(6783, 6793, 1), new Range16.ptr(6800, 6809, 1), new Range16.ptr(6816, 6829, 1)]), sliceType$1.nil, 0); _Tai_Viet = new RangeTable.ptr(new sliceType([new Range16.ptr(43648, 43714, 1), new Range16.ptr(43739, 43743, 1)]), sliceType$1.nil, 0); _Takri = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(71296, 71351, 1), new Range32.ptr(71360, 71369, 1)]), 0); _Tamil = new RangeTable.ptr(new sliceType([new Range16.ptr(2946, 2947, 1), 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, 2972, 1), new Range16.ptr(2974, 2975, 1), new Range16.ptr(2979, 2980, 1), new Range16.ptr(2984, 2986, 1), new Range16.ptr(2990, 3001, 1), new Range16.ptr(3006, 3010, 1), new Range16.ptr(3014, 3016, 1), new Range16.ptr(3018, 3021, 1), new Range16.ptr(3024, 3024, 1), new Range16.ptr(3031, 3031, 1), new Range16.ptr(3046, 3066, 1)]), sliceType$1.nil, 0); _Telugu = new RangeTable.ptr(new sliceType([new Range16.ptr(3072, 3075, 1), new Range16.ptr(3077, 3084, 1), new Range16.ptr(3086, 3088, 1), new Range16.ptr(3090, 3112, 1), new Range16.ptr(3114, 3129, 1), new Range16.ptr(3133, 3140, 1), new Range16.ptr(3142, 3144, 1), new Range16.ptr(3146, 3149, 1), new Range16.ptr(3157, 3158, 1), new Range16.ptr(3160, 3161, 1), new Range16.ptr(3168, 3171, 1), new Range16.ptr(3174, 3183, 1), new Range16.ptr(3192, 3199, 1)]), sliceType$1.nil, 0); _Thaana = new RangeTable.ptr(new sliceType([new Range16.ptr(1920, 1969, 1)]), sliceType$1.nil, 0); _Thai = new RangeTable.ptr(new sliceType([new Range16.ptr(3585, 3642, 1), new Range16.ptr(3648, 3675, 1)]), sliceType$1.nil, 0); _Tibetan = new RangeTable.ptr(new sliceType([new Range16.ptr(3840, 3911, 1), new Range16.ptr(3913, 3948, 1), new Range16.ptr(3953, 3991, 1), new Range16.ptr(3993, 4028, 1), new Range16.ptr(4030, 4044, 1), new Range16.ptr(4046, 4052, 1), new Range16.ptr(4057, 4058, 1)]), sliceType$1.nil, 0); _Tifinagh = new RangeTable.ptr(new sliceType([new Range16.ptr(11568, 11623, 1), new Range16.ptr(11631, 11632, 1), new Range16.ptr(11647, 11647, 1)]), sliceType$1.nil, 0); _Tirhuta = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(70784, 70855, 1), new Range32.ptr(70864, 70873, 1)]), 0); _Ugaritic = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(66432, 66461, 1), new Range32.ptr(66463, 66463, 1)]), 0); _Vai = new RangeTable.ptr(new sliceType([new Range16.ptr(42240, 42539, 1)]), sliceType$1.nil, 0); _Warang_Citi = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(71840, 71922, 1), new Range32.ptr(71935, 71935, 1)]), 0); _Yi = new RangeTable.ptr(new sliceType([new Range16.ptr(40960, 42124, 1), new Range16.ptr(42128, 42182, 1)]), sliceType$1.nil, 0); $pkg.Arabic = _Arabic; $pkg.Armenian = _Armenian; $pkg.Avestan = _Avestan; $pkg.Balinese = _Balinese; $pkg.Bamum = _Bamum; $pkg.Bassa_Vah = _Bassa_Vah; $pkg.Batak = _Batak; $pkg.Bengali = _Bengali; $pkg.Bopomofo = _Bopomofo; $pkg.Brahmi = _Brahmi; $pkg.Braille = _Braille; $pkg.Buginese = _Buginese; $pkg.Buhid = _Buhid; $pkg.Canadian_Aboriginal = _Canadian_Aboriginal; $pkg.Carian = _Carian; $pkg.Caucasian_Albanian = _Caucasian_Albanian; $pkg.Chakma = _Chakma; $pkg.Cham = _Cham; $pkg.Cherokee = _Cherokee; $pkg.Common = _Common; $pkg.Coptic = _Coptic; $pkg.Cuneiform = _Cuneiform; $pkg.Cypriot = _Cypriot; $pkg.Cyrillic = _Cyrillic; $pkg.Deseret = _Deseret; $pkg.Devanagari = _Devanagari; $pkg.Duployan = _Duployan; $pkg.Egyptian_Hieroglyphs = _Egyptian_Hieroglyphs; $pkg.Elbasan = _Elbasan; $pkg.Ethiopic = _Ethiopic; $pkg.Georgian = _Georgian; $pkg.Glagolitic = _Glagolitic; $pkg.Gothic = _Gothic; $pkg.Grantha = _Grantha; $pkg.Greek = _Greek; $pkg.Gujarati = _Gujarati; $pkg.Gurmukhi = _Gurmukhi; $pkg.Han = _Han; $pkg.Hangul = _Hangul; $pkg.Hanunoo = _Hanunoo; $pkg.Hebrew = _Hebrew; $pkg.Hiragana = _Hiragana; $pkg.Imperial_Aramaic = _Imperial_Aramaic; $pkg.Inherited = _Inherited; $pkg.Inscriptional_Pahlavi = _Inscriptional_Pahlavi; $pkg.Inscriptional_Parthian = _Inscriptional_Parthian; $pkg.Javanese = _Javanese; $pkg.Kaithi = _Kaithi; $pkg.Kannada = _Kannada; $pkg.Katakana = _Katakana; $pkg.Kayah_Li = _Kayah_Li; $pkg.Kharoshthi = _Kharoshthi; $pkg.Khmer = _Khmer; $pkg.Khojki = _Khojki; $pkg.Khudawadi = _Khudawadi; $pkg.Lao = _Lao; $pkg.Latin = _Latin; $pkg.Lepcha = _Lepcha; $pkg.Limbu = _Limbu; $pkg.Linear_A = _Linear_A; $pkg.Linear_B = _Linear_B; $pkg.Lisu = _Lisu; $pkg.Lycian = _Lycian; $pkg.Lydian = _Lydian; $pkg.Mahajani = _Mahajani; $pkg.Malayalam = _Malayalam; $pkg.Mandaic = _Mandaic; $pkg.Manichaean = _Manichaean; $pkg.Meetei_Mayek = _Meetei_Mayek; $pkg.Mende_Kikakui = _Mende_Kikakui; $pkg.Meroitic_Cursive = _Meroitic_Cursive; $pkg.Meroitic_Hieroglyphs = _Meroitic_Hieroglyphs; $pkg.Miao = _Miao; $pkg.Modi = _Modi; $pkg.Mongolian = _Mongolian; $pkg.Mro = _Mro; $pkg.Myanmar = _Myanmar; $pkg.Nabataean = _Nabataean; $pkg.New_Tai_Lue = _New_Tai_Lue; $pkg.Nko = _Nko; $pkg.Ogham = _Ogham; $pkg.Ol_Chiki = _Ol_Chiki; $pkg.Old_Italic = _Old_Italic; $pkg.Old_North_Arabian = _Old_North_Arabian; $pkg.Old_Permic = _Old_Permic; $pkg.Old_Persian = _Old_Persian; $pkg.Old_South_Arabian = _Old_South_Arabian; $pkg.Old_Turkic = _Old_Turkic; $pkg.Oriya = _Oriya; $pkg.Osmanya = _Osmanya; $pkg.Pahawh_Hmong = _Pahawh_Hmong; $pkg.Palmyrene = _Palmyrene; $pkg.Pau_Cin_Hau = _Pau_Cin_Hau; $pkg.Phags_Pa = _Phags_Pa; $pkg.Phoenician = _Phoenician; $pkg.Psalter_Pahlavi = _Psalter_Pahlavi; $pkg.Rejang = _Rejang; $pkg.Runic = _Runic; $pkg.Samaritan = _Samaritan; $pkg.Saurashtra = _Saurashtra; $pkg.Sharada = _Sharada; $pkg.Shavian = _Shavian; $pkg.Siddham = _Siddham; $pkg.Sinhala = _Sinhala; $pkg.Sora_Sompeng = _Sora_Sompeng; $pkg.Sundanese = _Sundanese; $pkg.Syloti_Nagri = _Syloti_Nagri; $pkg.Syriac = _Syriac; $pkg.Tagalog = _Tagalog; $pkg.Tagbanwa = _Tagbanwa; $pkg.Tai_Le = _Tai_Le; $pkg.Tai_Tham = _Tai_Tham; $pkg.Tai_Viet = _Tai_Viet; $pkg.Takri = _Takri; $pkg.Tamil = _Tamil; $pkg.Telugu = _Telugu; $pkg.Thaana = _Thaana; $pkg.Thai = _Thai; $pkg.Tibetan = _Tibetan; $pkg.Tifinagh = _Tifinagh; $pkg.Tirhuta = _Tirhuta; $pkg.Ugaritic = _Ugaritic; $pkg.Vai = _Vai; $pkg.Warang_Citi = _Warang_Citi; $pkg.Yi = _Yi; $pkg.Scripts = (_map$1 = new $Map(), _key$1 = "Arabic", _map$1[_key$1] = { k: _key$1, v: $pkg.Arabic }, _key$1 = "Armenian", _map$1[_key$1] = { k: _key$1, v: $pkg.Armenian }, _key$1 = "Avestan", _map$1[_key$1] = { k: _key$1, v: $pkg.Avestan }, _key$1 = "Balinese", _map$1[_key$1] = { k: _key$1, v: $pkg.Balinese }, _key$1 = "Bamum", _map$1[_key$1] = { k: _key$1, v: $pkg.Bamum }, _key$1 = "Bassa_Vah", _map$1[_key$1] = { k: _key$1, v: $pkg.Bassa_Vah }, _key$1 = "Batak", _map$1[_key$1] = { k: _key$1, v: $pkg.Batak }, _key$1 = "Bengali", _map$1[_key$1] = { k: _key$1, v: $pkg.Bengali }, _key$1 = "Bopomofo", _map$1[_key$1] = { k: _key$1, v: $pkg.Bopomofo }, _key$1 = "Brahmi", _map$1[_key$1] = { k: _key$1, v: $pkg.Brahmi }, _key$1 = "Braille", _map$1[_key$1] = { k: _key$1, v: $pkg.Braille }, _key$1 = "Buginese", _map$1[_key$1] = { k: _key$1, v: $pkg.Buginese }, _key$1 = "Buhid", _map$1[_key$1] = { k: _key$1, v: $pkg.Buhid }, _key$1 = "Canadian_Aboriginal", _map$1[_key$1] = { k: _key$1, v: $pkg.Canadian_Aboriginal }, _key$1 = "Carian", _map$1[_key$1] = { k: _key$1, v: $pkg.Carian }, _key$1 = "Caucasian_Albanian", _map$1[_key$1] = { k: _key$1, v: $pkg.Caucasian_Albanian }, _key$1 = "Chakma", _map$1[_key$1] = { k: _key$1, v: $pkg.Chakma }, _key$1 = "Cham", _map$1[_key$1] = { k: _key$1, v: $pkg.Cham }, _key$1 = "Cherokee", _map$1[_key$1] = { k: _key$1, v: $pkg.Cherokee }, _key$1 = "Common", _map$1[_key$1] = { k: _key$1, v: $pkg.Common }, _key$1 = "Coptic", _map$1[_key$1] = { k: _key$1, v: $pkg.Coptic }, _key$1 = "Cuneiform", _map$1[_key$1] = { k: _key$1, v: $pkg.Cuneiform }, _key$1 = "Cypriot", _map$1[_key$1] = { k: _key$1, v: $pkg.Cypriot }, _key$1 = "Cyrillic", _map$1[_key$1] = { k: _key$1, v: $pkg.Cyrillic }, _key$1 = "Deseret", _map$1[_key$1] = { k: _key$1, v: $pkg.Deseret }, _key$1 = "Devanagari", _map$1[_key$1] = { k: _key$1, v: $pkg.Devanagari }, _key$1 = "Duployan", _map$1[_key$1] = { k: _key$1, v: $pkg.Duployan }, _key$1 = "Egyptian_Hieroglyphs", _map$1[_key$1] = { k: _key$1, v: $pkg.Egyptian_Hieroglyphs }, _key$1 = "Elbasan", _map$1[_key$1] = { k: _key$1, v: $pkg.Elbasan }, _key$1 = "Ethiopic", _map$1[_key$1] = { k: _key$1, v: $pkg.Ethiopic }, _key$1 = "Georgian", _map$1[_key$1] = { k: _key$1, v: $pkg.Georgian }, _key$1 = "Glagolitic", _map$1[_key$1] = { k: _key$1, v: $pkg.Glagolitic }, _key$1 = "Gothic", _map$1[_key$1] = { k: _key$1, v: $pkg.Gothic }, _key$1 = "Grantha", _map$1[_key$1] = { k: _key$1, v: $pkg.Grantha }, _key$1 = "Greek", _map$1[_key$1] = { k: _key$1, v: $pkg.Greek }, _key$1 = "Gujarati", _map$1[_key$1] = { k: _key$1, v: $pkg.Gujarati }, _key$1 = "Gurmukhi", _map$1[_key$1] = { k: _key$1, v: $pkg.Gurmukhi }, _key$1 = "Han", _map$1[_key$1] = { k: _key$1, v: $pkg.Han }, _key$1 = "Hangul", _map$1[_key$1] = { k: _key$1, v: $pkg.Hangul }, _key$1 = "Hanunoo", _map$1[_key$1] = { k: _key$1, v: $pkg.Hanunoo }, _key$1 = "Hebrew", _map$1[_key$1] = { k: _key$1, v: $pkg.Hebrew }, _key$1 = "Hiragana", _map$1[_key$1] = { k: _key$1, v: $pkg.Hiragana }, _key$1 = "Imperial_Aramaic", _map$1[_key$1] = { k: _key$1, v: $pkg.Imperial_Aramaic }, _key$1 = "Inherited", _map$1[_key$1] = { k: _key$1, v: $pkg.Inherited }, _key$1 = "Inscriptional_Pahlavi", _map$1[_key$1] = { k: _key$1, v: $pkg.Inscriptional_Pahlavi }, _key$1 = "Inscriptional_Parthian", _map$1[_key$1] = { k: _key$1, v: $pkg.Inscriptional_Parthian }, _key$1 = "Javanese", _map$1[_key$1] = { k: _key$1, v: $pkg.Javanese }, _key$1 = "Kaithi", _map$1[_key$1] = { k: _key$1, v: $pkg.Kaithi }, _key$1 = "Kannada", _map$1[_key$1] = { k: _key$1, v: $pkg.Kannada }, _key$1 = "Katakana", _map$1[_key$1] = { k: _key$1, v: $pkg.Katakana }, _key$1 = "Kayah_Li", _map$1[_key$1] = { k: _key$1, v: $pkg.Kayah_Li }, _key$1 = "Kharoshthi", _map$1[_key$1] = { k: _key$1, v: $pkg.Kharoshthi }, _key$1 = "Khmer", _map$1[_key$1] = { k: _key$1, v: $pkg.Khmer }, _key$1 = "Khojki", _map$1[_key$1] = { k: _key$1, v: $pkg.Khojki }, _key$1 = "Khudawadi", _map$1[_key$1] = { k: _key$1, v: $pkg.Khudawadi }, _key$1 = "Lao", _map$1[_key$1] = { k: _key$1, v: $pkg.Lao }, _key$1 = "Latin", _map$1[_key$1] = { k: _key$1, v: $pkg.Latin }, _key$1 = "Lepcha", _map$1[_key$1] = { k: _key$1, v: $pkg.Lepcha }, _key$1 = "Limbu", _map$1[_key$1] = { k: _key$1, v: $pkg.Limbu }, _key$1 = "Linear_A", _map$1[_key$1] = { k: _key$1, v: $pkg.Linear_A }, _key$1 = "Linear_B", _map$1[_key$1] = { k: _key$1, v: $pkg.Linear_B }, _key$1 = "Lisu", _map$1[_key$1] = { k: _key$1, v: $pkg.Lisu }, _key$1 = "Lycian", _map$1[_key$1] = { k: _key$1, v: $pkg.Lycian }, _key$1 = "Lydian", _map$1[_key$1] = { k: _key$1, v: $pkg.Lydian }, _key$1 = "Mahajani", _map$1[_key$1] = { k: _key$1, v: $pkg.Mahajani }, _key$1 = "Malayalam", _map$1[_key$1] = { k: _key$1, v: $pkg.Malayalam }, _key$1 = "Mandaic", _map$1[_key$1] = { k: _key$1, v: $pkg.Mandaic }, _key$1 = "Manichaean", _map$1[_key$1] = { k: _key$1, v: $pkg.Manichaean }, _key$1 = "Meetei_Mayek", _map$1[_key$1] = { k: _key$1, v: $pkg.Meetei_Mayek }, _key$1 = "Mende_Kikakui", _map$1[_key$1] = { k: _key$1, v: $pkg.Mende_Kikakui }, _key$1 = "Meroitic_Cursive", _map$1[_key$1] = { k: _key$1, v: $pkg.Meroitic_Cursive }, _key$1 = "Meroitic_Hieroglyphs", _map$1[_key$1] = { k: _key$1, v: $pkg.Meroitic_Hieroglyphs }, _key$1 = "Miao", _map$1[_key$1] = { k: _key$1, v: $pkg.Miao }, _key$1 = "Modi", _map$1[_key$1] = { k: _key$1, v: $pkg.Modi }, _key$1 = "Mongolian", _map$1[_key$1] = { k: _key$1, v: $pkg.Mongolian }, _key$1 = "Mro", _map$1[_key$1] = { k: _key$1, v: $pkg.Mro }, _key$1 = "Myanmar", _map$1[_key$1] = { k: _key$1, v: $pkg.Myanmar }, _key$1 = "Nabataean", _map$1[_key$1] = { k: _key$1, v: $pkg.Nabataean }, _key$1 = "New_Tai_Lue", _map$1[_key$1] = { k: _key$1, v: $pkg.New_Tai_Lue }, _key$1 = "Nko", _map$1[_key$1] = { k: _key$1, v: $pkg.Nko }, _key$1 = "Ogham", _map$1[_key$1] = { k: _key$1, v: $pkg.Ogham }, _key$1 = "Ol_Chiki", _map$1[_key$1] = { k: _key$1, v: $pkg.Ol_Chiki }, _key$1 = "Old_Italic", _map$1[_key$1] = { k: _key$1, v: $pkg.Old_Italic }, _key$1 = "Old_North_Arabian", _map$1[_key$1] = { k: _key$1, v: $pkg.Old_North_Arabian }, _key$1 = "Old_Permic", _map$1[_key$1] = { k: _key$1, v: $pkg.Old_Permic }, _key$1 = "Old_Persian", _map$1[_key$1] = { k: _key$1, v: $pkg.Old_Persian }, _key$1 = "Old_South_Arabian", _map$1[_key$1] = { k: _key$1, v: $pkg.Old_South_Arabian }, _key$1 = "Old_Turkic", _map$1[_key$1] = { k: _key$1, v: $pkg.Old_Turkic }, _key$1 = "Oriya", _map$1[_key$1] = { k: _key$1, v: $pkg.Oriya }, _key$1 = "Osmanya", _map$1[_key$1] = { k: _key$1, v: $pkg.Osmanya }, _key$1 = "Pahawh_Hmong", _map$1[_key$1] = { k: _key$1, v: $pkg.Pahawh_Hmong }, _key$1 = "Palmyrene", _map$1[_key$1] = { k: _key$1, v: $pkg.Palmyrene }, _key$1 = "Pau_Cin_Hau", _map$1[_key$1] = { k: _key$1, v: $pkg.Pau_Cin_Hau }, _key$1 = "Phags_Pa", _map$1[_key$1] = { k: _key$1, v: $pkg.Phags_Pa }, _key$1 = "Phoenician", _map$1[_key$1] = { k: _key$1, v: $pkg.Phoenician }, _key$1 = "Psalter_Pahlavi", _map$1[_key$1] = { k: _key$1, v: $pkg.Psalter_Pahlavi }, _key$1 = "Rejang", _map$1[_key$1] = { k: _key$1, v: $pkg.Rejang }, _key$1 = "Runic", _map$1[_key$1] = { k: _key$1, v: $pkg.Runic }, _key$1 = "Samaritan", _map$1[_key$1] = { k: _key$1, v: $pkg.Samaritan }, _key$1 = "Saurashtra", _map$1[_key$1] = { k: _key$1, v: $pkg.Saurashtra }, _key$1 = "Sharada", _map$1[_key$1] = { k: _key$1, v: $pkg.Sharada }, _key$1 = "Shavian", _map$1[_key$1] = { k: _key$1, v: $pkg.Shavian }, _key$1 = "Siddham", _map$1[_key$1] = { k: _key$1, v: $pkg.Siddham }, _key$1 = "Sinhala", _map$1[_key$1] = { k: _key$1, v: $pkg.Sinhala }, _key$1 = "Sora_Sompeng", _map$1[_key$1] = { k: _key$1, v: $pkg.Sora_Sompeng }, _key$1 = "Sundanese", _map$1[_key$1] = { k: _key$1, v: $pkg.Sundanese }, _key$1 = "Syloti_Nagri", _map$1[_key$1] = { k: _key$1, v: $pkg.Syloti_Nagri }, _key$1 = "Syriac", _map$1[_key$1] = { k: _key$1, v: $pkg.Syriac }, _key$1 = "Tagalog", _map$1[_key$1] = { k: _key$1, v: $pkg.Tagalog }, _key$1 = "Tagbanwa", _map$1[_key$1] = { k: _key$1, v: $pkg.Tagbanwa }, _key$1 = "Tai_Le", _map$1[_key$1] = { k: _key$1, v: $pkg.Tai_Le }, _key$1 = "Tai_Tham", _map$1[_key$1] = { k: _key$1, v: $pkg.Tai_Tham }, _key$1 = "Tai_Viet", _map$1[_key$1] = { k: _key$1, v: $pkg.Tai_Viet }, _key$1 = "Takri", _map$1[_key$1] = { k: _key$1, v: $pkg.Takri }, _key$1 = "Tamil", _map$1[_key$1] = { k: _key$1, v: $pkg.Tamil }, _key$1 = "Telugu", _map$1[_key$1] = { k: _key$1, v: $pkg.Telugu }, _key$1 = "Thaana", _map$1[_key$1] = { k: _key$1, v: $pkg.Thaana }, _key$1 = "Thai", _map$1[_key$1] = { k: _key$1, v: $pkg.Thai }, _key$1 = "Tibetan", _map$1[_key$1] = { k: _key$1, v: $pkg.Tibetan }, _key$1 = "Tifinagh", _map$1[_key$1] = { k: _key$1, v: $pkg.Tifinagh }, _key$1 = "Tirhuta", _map$1[_key$1] = { k: _key$1, v: $pkg.Tirhuta }, _key$1 = "Ugaritic", _map$1[_key$1] = { k: _key$1, v: $pkg.Ugaritic }, _key$1 = "Vai", _map$1[_key$1] = { k: _key$1, v: $pkg.Vai }, _key$1 = "Warang_Citi", _map$1[_key$1] = { k: _key$1, v: $pkg.Warang_Citi }, _key$1 = "Yi", _map$1[_key$1] = { k: _key$1, v: $pkg.Yi }, _map$1); _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(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(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(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(42928, 42928, $toNativeArray($kindInt32, [0, -42258, 0])), new CaseRange.ptr(42929, 42929, $toNativeArray($kindInt32, [0, -42282, 0])), 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(71840, 71871, $toNativeArray($kindInt32, [0, 32, 0])), new CaseRange.ptr(71872, 71903, $toNativeArray($kindInt32, [-32, 0, -32]))]); $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]); 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(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)]); foldCommon = new RangeTable.ptr(new sliceType([new Range16.ptr(924, 956, 32)]), sliceType$1.nil, 0); foldGreek = new RangeTable.ptr(new sliceType([new Range16.ptr(181, 837, 656)]), sliceType$1.nil, 0); foldInherited = new RangeTable.ptr(new sliceType([new Range16.ptr(921, 953, 32), new Range16.ptr(8126, 8126, 1)]), sliceType$1.nil, 0); foldL = new RangeTable.ptr(new sliceType([new Range16.ptr(837, 837, 1)]), sliceType$1.nil, 0); foldLl = new RangeTable.ptr(new sliceType([new Range16.ptr(65, 90, 1), new Range16.ptr(192, 214, 1), new Range16.ptr(216, 222, 1), new Range16.ptr(256, 302, 2), new Range16.ptr(306, 310, 2), new Range16.ptr(313, 327, 2), new Range16.ptr(330, 376, 2), new Range16.ptr(377, 381, 2), new Range16.ptr(385, 386, 1), new Range16.ptr(388, 390, 2), new Range16.ptr(391, 393, 2), new Range16.ptr(394, 395, 1), new Range16.ptr(398, 401, 1), new Range16.ptr(403, 404, 1), new Range16.ptr(406, 408, 1), new Range16.ptr(412, 413, 1), new Range16.ptr(415, 416, 1), new Range16.ptr(418, 422, 2), new Range16.ptr(423, 425, 2), new Range16.ptr(428, 430, 2), new Range16.ptr(431, 433, 2), new Range16.ptr(434, 435, 1), new Range16.ptr(437, 439, 2), new Range16.ptr(440, 444, 4), new Range16.ptr(452, 453, 1), new Range16.ptr(455, 456, 1), new Range16.ptr(458, 459, 1), new Range16.ptr(461, 475, 2), new Range16.ptr(478, 494, 2), new Range16.ptr(497, 498, 1), new Range16.ptr(500, 502, 2), new Range16.ptr(503, 504, 1), new Range16.ptr(506, 562, 2), new Range16.ptr(570, 571, 1), new Range16.ptr(573, 574, 1), new Range16.ptr(577, 579, 2), new Range16.ptr(580, 582, 1), new Range16.ptr(584, 590, 2), new Range16.ptr(837, 880, 43), new Range16.ptr(882, 886, 4), new Range16.ptr(895, 902, 7), new Range16.ptr(904, 906, 1), new Range16.ptr(908, 910, 2), new Range16.ptr(911, 913, 2), new Range16.ptr(914, 929, 1), new Range16.ptr(931, 939, 1), new Range16.ptr(975, 984, 9), new Range16.ptr(986, 1006, 2), new Range16.ptr(1012, 1015, 3), new Range16.ptr(1017, 1018, 1), new Range16.ptr(1021, 1071, 1), new Range16.ptr(1120, 1152, 2), new Range16.ptr(1162, 1216, 2), new Range16.ptr(1217, 1229, 2), new Range16.ptr(1232, 1326, 2), new Range16.ptr(1329, 1366, 1), new Range16.ptr(4256, 4293, 1), new Range16.ptr(4295, 4301, 6), new Range16.ptr(7680, 7828, 2), new Range16.ptr(7838, 7934, 2), new Range16.ptr(7944, 7951, 1), new Range16.ptr(7960, 7965, 1), new Range16.ptr(7976, 7983, 1), new Range16.ptr(7992, 7999, 1), new Range16.ptr(8008, 8013, 1), new Range16.ptr(8025, 8031, 2), new Range16.ptr(8040, 8047, 1), new Range16.ptr(8072, 8079, 1), new Range16.ptr(8088, 8095, 1), new Range16.ptr(8104, 8111, 1), new Range16.ptr(8120, 8124, 1), new Range16.ptr(8136, 8140, 1), new Range16.ptr(8152, 8155, 1), new Range16.ptr(8168, 8172, 1), new Range16.ptr(8184, 8188, 1), new Range16.ptr(8486, 8490, 4), new Range16.ptr(8491, 8498, 7), new Range16.ptr(8579, 11264, 2685), new Range16.ptr(11265, 11310, 1), new Range16.ptr(11360, 11362, 2), new Range16.ptr(11363, 11364, 1), new Range16.ptr(11367, 11373, 2), new Range16.ptr(11374, 11376, 1), new Range16.ptr(11378, 11381, 3), new Range16.ptr(11390, 11392, 1), new Range16.ptr(11394, 11490, 2), new Range16.ptr(11499, 11501, 2), new Range16.ptr(11506, 42560, 31054), new Range16.ptr(42562, 42604, 2), new Range16.ptr(42624, 42650, 2), new Range16.ptr(42786, 42798, 2), new Range16.ptr(42802, 42862, 2), new Range16.ptr(42873, 42877, 2), new Range16.ptr(42878, 42886, 2), new Range16.ptr(42891, 42893, 2), new Range16.ptr(42896, 42898, 2), new Range16.ptr(42902, 42922, 2), new Range16.ptr(42923, 42925, 1), new Range16.ptr(42928, 42929, 1), new Range16.ptr(65313, 65338, 1)]), new sliceType$1([new Range32.ptr(66560, 66599, 1), new Range32.ptr(71840, 71871, 1)]), 3); foldLt = new RangeTable.ptr(new sliceType([new Range16.ptr(452, 454, 2), new Range16.ptr(455, 457, 2), new Range16.ptr(458, 460, 2), new Range16.ptr(497, 499, 2), new Range16.ptr(8064, 8071, 1), new Range16.ptr(8080, 8087, 1), new Range16.ptr(8096, 8103, 1), new Range16.ptr(8115, 8131, 16), new Range16.ptr(8179, 8179, 1)]), sliceType$1.nil, 0); foldLu = new RangeTable.ptr(new sliceType([new Range16.ptr(97, 122, 1), new Range16.ptr(181, 223, 42), new Range16.ptr(224, 246, 1), new Range16.ptr(248, 255, 1), new Range16.ptr(257, 303, 2), new Range16.ptr(307, 311, 2), new Range16.ptr(314, 328, 2), new Range16.ptr(331, 375, 2), new Range16.ptr(378, 382, 2), new Range16.ptr(383, 384, 1), new Range16.ptr(387, 389, 2), new Range16.ptr(392, 396, 4), new Range16.ptr(402, 405, 3), new Range16.ptr(409, 410, 1), new Range16.ptr(414, 417, 3), new Range16.ptr(419, 421, 2), new Range16.ptr(424, 429, 5), new Range16.ptr(432, 436, 4), new Range16.ptr(438, 441, 3), new Range16.ptr(445, 447, 2), new Range16.ptr(453, 454, 1), new Range16.ptr(456, 457, 1), new Range16.ptr(459, 460, 1), new Range16.ptr(462, 476, 2), new Range16.ptr(477, 495, 2), new Range16.ptr(498, 499, 1), new Range16.ptr(501, 505, 4), new Range16.ptr(507, 543, 2), new Range16.ptr(547, 563, 2), new Range16.ptr(572, 575, 3), new Range16.ptr(576, 578, 2), new Range16.ptr(583, 591, 2), new Range16.ptr(592, 596, 1), new Range16.ptr(598, 599, 1), new Range16.ptr(601, 603, 2), new Range16.ptr(604, 608, 4), new Range16.ptr(609, 613, 2), new Range16.ptr(614, 616, 2), new Range16.ptr(617, 619, 2), new Range16.ptr(620, 623, 3), new Range16.ptr(625, 626, 1), new Range16.ptr(629, 637, 8), new Range16.ptr(640, 643, 3), new Range16.ptr(647, 652, 1), new Range16.ptr(658, 670, 12), new Range16.ptr(837, 881, 44), new Range16.ptr(883, 891, 4), new Range16.ptr(892, 893, 1), new Range16.ptr(940, 943, 1), new Range16.ptr(945, 974, 1), new Range16.ptr(976, 977, 1), new Range16.ptr(981, 983, 1), new Range16.ptr(985, 1007, 2), new Range16.ptr(1008, 1011, 1), new Range16.ptr(1013, 1019, 3), new Range16.ptr(1072, 1119, 1), new Range16.ptr(1121, 1153, 2), new Range16.ptr(1163, 1215, 2), new Range16.ptr(1218, 1230, 2), new Range16.ptr(1231, 1327, 2), new Range16.ptr(1377, 1414, 1), new Range16.ptr(7545, 7549, 4), new Range16.ptr(7681, 7829, 2), new Range16.ptr(7835, 7841, 6), new Range16.ptr(7843, 7935, 2), new Range16.ptr(7936, 7943, 1), new Range16.ptr(7952, 7957, 1), new Range16.ptr(7968, 7975, 1), new Range16.ptr(7984, 7991, 1), new Range16.ptr(8000, 8005, 1), new Range16.ptr(8017, 8023, 2), new Range16.ptr(8032, 8039, 1), new Range16.ptr(8048, 8061, 1), new Range16.ptr(8112, 8113, 1), new Range16.ptr(8126, 8144, 18), new Range16.ptr(8145, 8160, 15), new Range16.ptr(8161, 8165, 4), new Range16.ptr(8526, 8580, 54), new Range16.ptr(11312, 11358, 1), new Range16.ptr(11361, 11365, 4), new Range16.ptr(11366, 11372, 2), new Range16.ptr(11379, 11382, 3), new Range16.ptr(11393, 11491, 2), new Range16.ptr(11500, 11502, 2), new Range16.ptr(11507, 11520, 13), new Range16.ptr(11521, 11557, 1), new Range16.ptr(11559, 11565, 6), new Range16.ptr(42561, 42605, 2), new Range16.ptr(42625, 42651, 2), new Range16.ptr(42787, 42799, 2), new Range16.ptr(42803, 42863, 2), new Range16.ptr(42874, 42876, 2), new Range16.ptr(42879, 42887, 2), new Range16.ptr(42892, 42897, 5), new Range16.ptr(42899, 42903, 4), new Range16.ptr(42905, 42921, 2), new Range16.ptr(65345, 65370, 1)]), new sliceType$1([new Range32.ptr(66600, 66639, 1), new Range32.ptr(71872, 71903, 1)]), 4); foldM = new RangeTable.ptr(new sliceType([new Range16.ptr(921, 953, 32), new Range16.ptr(8126, 8126, 1)]), sliceType$1.nil, 0); foldMn = new RangeTable.ptr(new sliceType([new Range16.ptr(921, 953, 32), new Range16.ptr(8126, 8126, 1)]), sliceType$1.nil, 0); $pkg.FoldCategory = (_map$3 = new $Map(), _key$3 = "Common", _map$3[_key$3] = { k: _key$3, v: foldCommon }, _key$3 = "Greek", _map$3[_key$3] = { k: _key$3, v: foldGreek }, _key$3 = "Inherited", _map$3[_key$3] = { k: _key$3, v: foldInherited }, _key$3 = "L", _map$3[_key$3] = { k: _key$3, v: foldL }, _key$3 = "Ll", _map$3[_key$3] = { k: _key$3, v: foldLl }, _key$3 = "Lt", _map$3[_key$3] = { k: _key$3, v: foldLt }, _key$3 = "Lu", _map$3[_key$3] = { k: _key$3, v: foldLu }, _key$3 = "M", _map$3[_key$3] = { k: _key$3, v: foldM }, _key$3 = "Mn", _map$3[_key$3] = { k: _key$3, v: foldMn }, _map$3); $pkg.FoldScript = (_map$4 = new $Map(), _map$4); /* */ } 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, decodeRuneInternal, decodeRuneInStringInternal, FullRune, DecodeRune, DecodeRuneInString, DecodeLastRune, DecodeLastRuneInString, RuneLen, EncodeRune, RuneCount, RuneCountInString, RuneStart, ValidString; decodeRuneInternal = function(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$40, _tmp$41, _tmp$42, _tmp$43, _tmp$44, _tmp$45, _tmp$46, _tmp$47, _tmp$48, _tmp$49, _tmp$5, _tmp$50, _tmp$6, _tmp$7, _tmp$8, _tmp$9, c0, c1, c2, c3, n, p, r, short$1, size; r = 0; size = 0; short$1 = false; n = p.$length; if (n < 1) { _tmp = 65533; _tmp$1 = 0; _tmp$2 = true; r = _tmp; size = _tmp$1; short$1 = _tmp$2; return [r, size, short$1]; } c0 = (0 >= p.$length ? $throwRuntimeError("index out of range") : p.$array[p.$offset + 0]); if (c0 < 128) { _tmp$3 = (c0 >> 0); _tmp$4 = 1; _tmp$5 = false; r = _tmp$3; size = _tmp$4; short$1 = _tmp$5; return [r, size, short$1]; } if (c0 < 192) { _tmp$6 = 65533; _tmp$7 = 1; _tmp$8 = false; r = _tmp$6; size = _tmp$7; short$1 = _tmp$8; return [r, size, short$1]; } if (n < 2) { _tmp$9 = 65533; _tmp$10 = 1; _tmp$11 = true; r = _tmp$9; size = _tmp$10; short$1 = _tmp$11; return [r, size, short$1]; } c1 = (1 >= p.$length ? $throwRuntimeError("index out of range") : p.$array[p.$offset + 1]); if (c1 < 128 || 192 <= c1) { _tmp$12 = 65533; _tmp$13 = 1; _tmp$14 = false; r = _tmp$12; size = _tmp$13; short$1 = _tmp$14; return [r, size, short$1]; } if (c0 < 224) { r = ((((c0 & 31) >>> 0) >> 0) << 6 >> 0) | (((c1 & 63) >>> 0) >> 0); if (r <= 127) { _tmp$15 = 65533; _tmp$16 = 1; _tmp$17 = false; r = _tmp$15; size = _tmp$16; short$1 = _tmp$17; return [r, size, short$1]; } _tmp$18 = r; _tmp$19 = 2; _tmp$20 = false; r = _tmp$18; size = _tmp$19; short$1 = _tmp$20; return [r, size, short$1]; } if (n < 3) { _tmp$21 = 65533; _tmp$22 = 1; _tmp$23 = true; r = _tmp$21; size = _tmp$22; short$1 = _tmp$23; return [r, size, short$1]; } c2 = (2 >= p.$length ? $throwRuntimeError("index out of range") : p.$array[p.$offset + 2]); if (c2 < 128 || 192 <= c2) { _tmp$24 = 65533; _tmp$25 = 1; _tmp$26 = false; r = _tmp$24; size = _tmp$25; short$1 = _tmp$26; return [r, size, short$1]; } if (c0 < 240) { r = (((((c0 & 15) >>> 0) >> 0) << 12 >> 0) | ((((c1 & 63) >>> 0) >> 0) << 6 >> 0)) | (((c2 & 63) >>> 0) >> 0); if (r <= 2047) { _tmp$27 = 65533; _tmp$28 = 1; _tmp$29 = false; r = _tmp$27; size = _tmp$28; short$1 = _tmp$29; return [r, size, short$1]; } if (55296 <= r && r <= 57343) { _tmp$30 = 65533; _tmp$31 = 1; _tmp$32 = false; r = _tmp$30; size = _tmp$31; short$1 = _tmp$32; return [r, size, short$1]; } _tmp$33 = r; _tmp$34 = 3; _tmp$35 = false; r = _tmp$33; size = _tmp$34; short$1 = _tmp$35; return [r, size, short$1]; } if (n < 4) { _tmp$36 = 65533; _tmp$37 = 1; _tmp$38 = true; r = _tmp$36; size = _tmp$37; short$1 = _tmp$38; return [r, size, short$1]; } c3 = (3 >= p.$length ? $throwRuntimeError("index out of range") : p.$array[p.$offset + 3]); if (c3 < 128 || 192 <= c3) { _tmp$39 = 65533; _tmp$40 = 1; _tmp$41 = false; r = _tmp$39; size = _tmp$40; short$1 = _tmp$41; return [r, size, short$1]; } if (c0 < 248) { r = ((((((c0 & 7) >>> 0) >> 0) << 18 >> 0) | ((((c1 & 63) >>> 0) >> 0) << 12 >> 0)) | ((((c2 & 63) >>> 0) >> 0) << 6 >> 0)) | (((c3 & 63) >>> 0) >> 0); if (r <= 65535 || 1114111 < r) { _tmp$42 = 65533; _tmp$43 = 1; _tmp$44 = false; r = _tmp$42; size = _tmp$43; short$1 = _tmp$44; return [r, size, short$1]; } _tmp$45 = r; _tmp$46 = 4; _tmp$47 = false; r = _tmp$45; size = _tmp$46; short$1 = _tmp$47; return [r, size, short$1]; } _tmp$48 = 65533; _tmp$49 = 1; _tmp$50 = false; r = _tmp$48; size = _tmp$49; short$1 = _tmp$50; return [r, size, short$1]; }; decodeRuneInStringInternal = 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$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$6, _tmp$7, _tmp$8, _tmp$9, c0, c1, c2, c3, n, r, s, short$1, size; r = 0; size = 0; short$1 = false; n = s.length; if (n < 1) { _tmp = 65533; _tmp$1 = 0; _tmp$2 = true; r = _tmp; size = _tmp$1; short$1 = _tmp$2; return [r, size, short$1]; } c0 = s.charCodeAt(0); if (c0 < 128) { _tmp$3 = (c0 >> 0); _tmp$4 = 1; _tmp$5 = false; r = _tmp$3; size = _tmp$4; short$1 = _tmp$5; return [r, size, short$1]; } if (c0 < 192) { _tmp$6 = 65533; _tmp$7 = 1; _tmp$8 = false; r = _tmp$6; size = _tmp$7; short$1 = _tmp$8; return [r, size, short$1]; } if (n < 2) { _tmp$9 = 65533; _tmp$10 = 1; _tmp$11 = true; r = _tmp$9; size = _tmp$10; short$1 = _tmp$11; return [r, size, short$1]; } c1 = s.charCodeAt(1); if (c1 < 128 || 192 <= c1) { _tmp$12 = 65533; _tmp$13 = 1; _tmp$14 = false; r = _tmp$12; size = _tmp$13; short$1 = _tmp$14; return [r, size, short$1]; } if (c0 < 224) { r = ((((c0 & 31) >>> 0) >> 0) << 6 >> 0) | (((c1 & 63) >>> 0) >> 0); if (r <= 127) { _tmp$15 = 65533; _tmp$16 = 1; _tmp$17 = false; r = _tmp$15; size = _tmp$16; short$1 = _tmp$17; return [r, size, short$1]; } _tmp$18 = r; _tmp$19 = 2; _tmp$20 = false; r = _tmp$18; size = _tmp$19; short$1 = _tmp$20; return [r, size, short$1]; } if (n < 3) { _tmp$21 = 65533; _tmp$22 = 1; _tmp$23 = true; r = _tmp$21; size = _tmp$22; short$1 = _tmp$23; return [r, size, short$1]; } c2 = s.charCodeAt(2); if (c2 < 128 || 192 <= c2) { _tmp$24 = 65533; _tmp$25 = 1; _tmp$26 = false; r = _tmp$24; size = _tmp$25; short$1 = _tmp$26; return [r, size, short$1]; } if (c0 < 240) { r = (((((c0 & 15) >>> 0) >> 0) << 12 >> 0) | ((((c1 & 63) >>> 0) >> 0) << 6 >> 0)) | (((c2 & 63) >>> 0) >> 0); if (r <= 2047) { _tmp$27 = 65533; _tmp$28 = 1; _tmp$29 = false; r = _tmp$27; size = _tmp$28; short$1 = _tmp$29; return [r, size, short$1]; } if (55296 <= r && r <= 57343) { _tmp$30 = 65533; _tmp$31 = 1; _tmp$32 = false; r = _tmp$30; size = _tmp$31; short$1 = _tmp$32; return [r, size, short$1]; } _tmp$33 = r; _tmp$34 = 3; _tmp$35 = false; r = _tmp$33; size = _tmp$34; short$1 = _tmp$35; return [r, size, short$1]; } if (n < 4) { _tmp$36 = 65533; _tmp$37 = 1; _tmp$38 = true; r = _tmp$36; size = _tmp$37; short$1 = _tmp$38; return [r, size, short$1]; } c3 = s.charCodeAt(3); if (c3 < 128 || 192 <= c3) { _tmp$39 = 65533; _tmp$40 = 1; _tmp$41 = false; r = _tmp$39; size = _tmp$40; short$1 = _tmp$41; return [r, size, short$1]; } if (c0 < 248) { r = ((((((c0 & 7) >>> 0) >> 0) << 18 >> 0) | ((((c1 & 63) >>> 0) >> 0) << 12 >> 0)) | ((((c2 & 63) >>> 0) >> 0) << 6 >> 0)) | (((c3 & 63) >>> 0) >> 0); if (r <= 65535 || 1114111 < r) { _tmp$42 = 65533; _tmp$43 = 1; _tmp$44 = false; r = _tmp$42; size = _tmp$43; short$1 = _tmp$44; return [r, size, short$1]; } _tmp$45 = r; _tmp$46 = 4; _tmp$47 = false; r = _tmp$45; size = _tmp$46; short$1 = _tmp$47; return [r, size, short$1]; } _tmp$48 = 65533; _tmp$49 = 1; _tmp$50 = false; r = _tmp$48; size = _tmp$49; short$1 = _tmp$50; return [r, size, short$1]; }; FullRune = function(p) { var $ptr, _tuple, p, short$1; _tuple = decodeRuneInternal(p); short$1 = _tuple[2]; return !short$1; }; $pkg.FullRune = FullRune; DecodeRune = function(p) { var $ptr, _tuple, p, r, size; r = 0; size = 0; _tuple = decodeRuneInternal(p); r = _tuple[0]; size = _tuple[1]; return [r, size]; }; $pkg.DecodeRune = DecodeRune; DecodeRuneInString = function(s) { var $ptr, _tuple, r, s, size; r = 0; size = 0; _tuple = decodeRuneInStringInternal(s); r = _tuple[0]; size = _tuple[1]; 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") : 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") : 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(s.substring(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") : p.$array[p.$offset + 0] = (r << 24 >>> 24)); return 1; } else if (i <= 2047) { (0 >= p.$length ? $throwRuntimeError("index out of range") : p.$array[p.$offset + 0] = (192 | ((r >> 6 >> 0) << 24 >>> 24)) >>> 0); (1 >= p.$length ? $throwRuntimeError("index out of range") : p.$array[p.$offset + 1] = (128 | (((r << 24 >>> 24) & 63) >>> 0)) >>> 0); return 2; } else if (i > 1114111 || 55296 <= i && i <= 57343) { r = 65533; (0 >= p.$length ? $throwRuntimeError("index out of range") : p.$array[p.$offset + 0] = (224 | ((r >> 12 >> 0) << 24 >>> 24)) >>> 0); (1 >= p.$length ? $throwRuntimeError("index out of range") : p.$array[p.$offset + 1] = (128 | ((((r >> 6 >> 0) << 24 >>> 24) & 63) >>> 0)) >>> 0); (2 >= p.$length ? $throwRuntimeError("index out of range") : p.$array[p.$offset + 2] = (128 | (((r << 24 >>> 24) & 63) >>> 0)) >>> 0); return 3; } else if (i <= 65535) { (0 >= p.$length ? $throwRuntimeError("index out of range") : p.$array[p.$offset + 0] = (224 | ((r >> 12 >> 0) << 24 >>> 24)) >>> 0); (1 >= p.$length ? $throwRuntimeError("index out of range") : p.$array[p.$offset + 1] = (128 | ((((r >> 6 >> 0) << 24 >>> 24) & 63) >>> 0)) >>> 0); (2 >= p.$length ? $throwRuntimeError("index out of range") : p.$array[p.$offset + 2] = (128 | (((r << 24 >>> 24) & 63) >>> 0)) >>> 0); return 3; } else { (0 >= p.$length ? $throwRuntimeError("index out of range") : p.$array[p.$offset + 0] = (240 | ((r >> 18 >> 0) << 24 >>> 24)) >>> 0); (1 >= p.$length ? $throwRuntimeError("index out of range") : p.$array[p.$offset + 1] = (128 | ((((r >> 12 >> 0) << 24 >>> 24) & 63) >>> 0)) >>> 0); (2 >= p.$length ? $throwRuntimeError("index out of range") : p.$array[p.$offset + 2] = (128 | ((((r >> 6 >> 0) << 24 >>> 24) & 63) >>> 0)) >>> 0); (3 >= p.$length ? $throwRuntimeError("index out of range") : p.$array[p.$offset + 3] = (128 | (((r << 24 >>> 24) & 63) >>> 0)) >>> 0); return 4; } }; $pkg.EncodeRune = EncodeRune; RuneCount = function(p) { var $ptr, _tuple, i, n, p, size; i = 0; n = 0; n = 0; while (true) { if (!(i < p.$length)) { break; } if (((i < 0 || i >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + i]) < 128) { i = i + (1) >> 0; } else { _tuple = DecodeRune($subslice(p, i)); size = _tuple[1]; i = i + (size) >> 0; } n = n + (1) >> 0; } return n; }; $pkg.RuneCount = RuneCount; RuneCountInString = function(s) { var $ptr, _i, _ref, _rune, n, s; n = 0; _ref = s; _i = 0; while (true) { if (!(_i < _ref.length)) { break; } _rune = $decodeRune(_ref, _i); n = n + (1) >> 0; _i += _rune[1]; } return n; }; $pkg.RuneCountInString = RuneCountInString; RuneStart = function(b) { var $ptr, b; return !((((b & 192) >>> 0) === 128)); }; $pkg.RuneStart = RuneStart; ValidString = function(s) { var $ptr, _i, _ref, _rune, _tuple, i, r, s, size; _ref = s; _i = 0; while (true) { if (!(_i < _ref.length)) { break; } _rune = $decodeRune(_ref, _i); i = _i; r = _rune[0]; if (r === 65533) { _tuple = DecodeRuneInString(s.substring(i)); size = _tuple[1]; if (size === 1) { return false; } } _i += _rune[1]; } return true; }; $pkg.ValidString = ValidString; $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["bytes"] = (function() { var $pkg = {}, $init, errors, io, unicode, utf8, Buffer, readOp, Reader, ptrType, sliceType, arrayType, arrayType$1, ptrType$1, IndexByte, Equal, makeSlice, NewBuffer, Index, HasPrefix, HasSuffix, Map, TrimLeftFunc, TrimRightFunc, TrimFunc, indexFunc, lastIndexFunc, makeCutsetFunc, TrimRight, TrimSpace, NewReader; errors = $packages["errors"]; io = $packages["io"]; unicode = $packages["unicode"]; utf8 = $packages["unicode/utf8"]; Buffer = $pkg.Buffer = $newType(0, $kindStruct, "bytes.Buffer", "Buffer", "bytes", function(buf_, off_, runeBytes_, bootstrap_, lastRead_) { this.$val = this; if (arguments.length === 0) { this.buf = sliceType.nil; this.off = 0; this.runeBytes = arrayType.zero(); this.bootstrap = arrayType$1.zero(); this.lastRead = 0; return; } this.buf = buf_; this.off = off_; this.runeBytes = runeBytes_; this.bootstrap = bootstrap_; this.lastRead = lastRead_; }); readOp = $pkg.readOp = $newType(4, $kindInt, "bytes.readOp", "readOp", "bytes", null); Reader = $pkg.Reader = $newType(0, $kindStruct, "bytes.Reader", "Reader", "bytes", 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, 4); arrayType$1 = $arrayType($Uint8, 64); ptrType$1 = $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") : _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") : _ref.$array[_ref.$offset + _i]); if (!((c === ((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : 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 ""; } 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.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((2 * b.buf.$capacity >> 0) + 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((2 * b.buf.$capacity >> 0) + 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; return [n, err]; } /* } */ $s = 1; continue; case 2: _tmp$2 = n; _tmp$3 = $ifaceNil; n = _tmp$2; err = _tmp$3; return [n, err]; /* */ $s = -1; case -1: } 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; return [n, err]; } if (!((m === nBytes))) { _tmp$2 = n; _tmp$3 = io.ErrShortWrite; n = _tmp$2; err = _tmp$3; return [n, err]; } /* } */ case 2: b.Truncate(0); return [n, err]; /* */ $s = -1; case -1: } 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") : 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, 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]; } n = utf8.EncodeRune($subslice(new sliceType(b.runeBytes), 0), r); b.Write($subslice(new sliceType(b.runeBytes), 0, n)); _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 = 2; } 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 = 2; } return data; }; Buffer.prototype.Next = function(n) { return this.$val.Next(n); }; Buffer.ptr.prototype.ReadByte = function() { var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, b, c, err, x, x$1; c = 0; err = $ifaceNil; b = this; b.lastRead = 0; if (b.off >= b.buf.$length) { b.Truncate(0); _tmp = 0; _tmp$1 = io.EOF; c = _tmp; err = _tmp$1; return [c, err]; } c = (x = b.buf, x$1 = b.off, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1])); b.off = b.off + (1) >> 0; b.lastRead = 2; _tmp$2 = c; _tmp$3 = $ifaceNil; c = _tmp$2; err = _tmp$3; return [c, err]; }; 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]; } b.lastRead = 1; c = (x = b.buf, x$1 = b.off, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1])); if (c < 128) { b.off = b.off + (1) >> 0; _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; _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, _tuple, b, n; b = this; if (!((b.lastRead === 1))) { return errors.New("bytes.Buffer: UnreadRune: previous operation was not ReadRune"); } b.lastRead = 0; if (b.off > 0) { _tuple = utf8.DecodeLastRune($subslice(b.buf, 0, b.off)); n = _tuple[1]; b.off = b.off - (n) >> 0; } return $ifaceNil; }; Buffer.prototype.UnreadRune = function() { return this.$val.UnreadRune(); }; Buffer.ptr.prototype.UnreadByte = function() { var $ptr, b; b = this; if (!((b.lastRead === 1)) && !((b.lastRead === 2))) { 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 = 2; _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(), arrayType$1.zero(), 0); }; $pkg.NewBuffer = NewBuffer; 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") : 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") : 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; 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; Map = function(mapping, s) { var $ptr, _r, _tuple, b, i, mapping, maxbytes, nb, nbytes, r, rl, 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; b = $f.b; i = $f.i; mapping = $f.mapping; maxbytes = $f.maxbytes; nb = $f.nb; nbytes = $f.nbytes; r = $f.r; rl = $f.rl; 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 = $makeSlice(sliceType, maxbytes); i = 0; /* while (true) { */ case 1: /* if (!(i < s.$length)) { break; } */ if(!(i < s.$length)) { $s = 2; continue; } wid = 1; r = (((i < 0 || i >= s.$length) ? $throwRuntimeError("index out of range") : s.$array[s.$offset + i]) >> 0); if (r >= 128) { _tuple = utf8.DecodeRune($subslice(s, i)); r = _tuple[0]; wid = _tuple[1]; } _r = mapping(r); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } r = _r; if (r >= 0) { rl = utf8.RuneLen(r); if (rl < 0) { rl = 3; } if ((nbytes + rl >> 0) > maxbytes) { maxbytes = (maxbytes * 2 >> 0) + 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 = i + (wid) >> 0; /* } */ $s = 1; continue; case 2: return $subslice(b, 0, nbytes); /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Map }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.b = b; $f.i = i; $f.mapping = mapping; $f.maxbytes = maxbytes; $f.nb = nb; $f.nbytes = nbytes; $f.r = r; $f.rl = rl; $f.s = s; $f.wid = wid; $f.$s = $s; $f.$r = $r; return $f; }; $pkg.Map = Map; 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) { return sliceType.nil; } return $subslice(s, i); /* */ $s = -1; case -1: } 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") : s.$array[s.$offset + i]) >= 128) { _tuple = utf8.DecodeRune($subslice(s, i)); wid = _tuple[1]; i = i + (wid) >> 0; } else { i = i + (1) >> 0; } return $subslice(s, 0, i); /* */ $s = -1; case -1: } 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; } return _r$1; /* */ $s = -1; case -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, 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") : 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: return start; /* } */ case 4: start = start + (wid) >> 0; /* } */ $s = 1; continue; case 2: return -1; /* */ $s = -1; case -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") : 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: return i; /* } */ case 4: /* } */ $s = 1; continue; case 2: return -1; /* */ $s = -1; case -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; }; makeCutsetFunc = function(cutset) { var $ptr, cutset; 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; } return _r; /* */ $s = -1; case -1: } 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; } return _r; /* */ $s = -1; case -1: } 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; 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.Read = function(b) { var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, b, err, n, r, x, x$1, x$2, x$3; n = 0; err = $ifaceNil; r = this; if (b.$length === 0) { _tmp = 0; _tmp$1 = $ifaceNil; n = _tmp; err = _tmp$1; return [n, err]; } 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$2 = 0; _tmp$3 = io.EOF; n = _tmp$2; err = _tmp$3; 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, _tmp, _tmp$1, b, err, r, x, x$1, x$2, x$3, x$4, x$5; b = 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 = 0; _tmp$1 = io.EOF; b = _tmp; err = _tmp$1; return [b, err]; } b = (x$2 = r.s, x$3 = r.i, (($flatten64(x$3) < 0 || $flatten64(x$3) >= x$2.$length) ? $throwRuntimeError("index out of range") : 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, err]; }; 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") : 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, _ref, abs, offset, r, whence, x, x$1; r = this; r.prevRune = -1; abs = new $Int64(0, 0); _ref = whence; if (_ref === 0) { abs = offset; } else if (_ref === 1) { abs = (x = r.i, new $Int64(x.$high + offset.$high, x.$low + offset.$low)); } else if (_ref === 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; 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; } return [n, err]; /* */ $s = -1; case -1: } 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); }; 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: "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: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], 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)}]; Buffer.init([{prop: "buf", name: "buf", pkg: "bytes", typ: sliceType, tag: ""}, {prop: "off", name: "off", pkg: "bytes", typ: $Int, tag: ""}, {prop: "runeBytes", name: "runeBytes", pkg: "bytes", typ: arrayType, tag: ""}, {prop: "bootstrap", name: "bootstrap", pkg: "bytes", typ: arrayType$1, tag: ""}, {prop: "lastRead", name: "lastRead", pkg: "bytes", typ: readOp, tag: ""}]); Reader.init([{prop: "s", name: "s", pkg: "bytes", typ: sliceType, tag: ""}, {prop: "i", name: "i", pkg: "bytes", typ: $Int64, tag: ""}, {prop: "prevRune", name: "prevRune", pkg: "bytes", 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["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 || IsSurrogate(r)) { _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") : _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") : _ref$1.$array[_ref$1.$offset + _i$1]); if (v$1 < 0 || 55296 <= v$1 && v$1 < 57344 || v$1 > 1114111) { v$1 = 65533; ((n < 0 || n >= a.$length) ? $throwRuntimeError("index out of range") : a.$array[a.$offset + n] = (v$1 << 16 >>> 16)); n = n + (1) >> 0; } else if (v$1 < 65536) { ((n < 0 || n >= a.$length) ? $throwRuntimeError("index out of range") : a.$array[a.$offset + n] = (v$1 << 16 >>> 16)); n = n + (1) >> 0; } else { _tuple = EncodeRune(v$1); r1 = _tuple[0]; r2 = _tuple[1]; ((n < 0 || n >= a.$length) ? $throwRuntimeError("index out of range") : a.$array[a.$offset + n] = (r1 << 16 >>> 16)); (x = n + 1 >> 0, ((x < 0 || x >= a.$length) ? $throwRuntimeError("index out of range") : a.$array[a.$offset + x] = (r2 << 16 >>> 16))); n = n + (2) >> 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") : s.$array[s.$offset + i]); 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") : s.$array[s.$offset + x])) && (x$1 = i + 1 >> 0, ((x$1 < 0 || x$1 >= s.$length) ? $throwRuntimeError("index out of range") : s.$array[s.$offset + x$1])) < 57344) { ((n < 0 || n >= a.$length) ? $throwRuntimeError("index out of range") : 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") : s.$array[s.$offset + x$2])) >> 0))); i = i + (1) >> 0; n = n + (1) >> 0; } else if (55296 <= r && r < 57344) { ((n < 0 || n >= a.$length) ? $throwRuntimeError("index out of range") : a.$array[a.$offset + n] = 65533); n = n + (1) >> 0; } else { ((n < 0 || n >= a.$length) ? $throwRuntimeError("index out of range") : a.$array[a.$offset + n] = (r >> 0)); 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, bytes, errors, js, 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, TransmitFileBuffers, SockaddrGen, InterfaceInfo, IpAddressString, IpMaskString, IpAddrString, IpAdapterInfo, MibIfRow, CertContext, CertChainContext, CertSimpleChain, CertChainElement, CertRevocationInfo, CertTrustStatus, CertUsageMatch, CertEnhKeyUsage, CertChainPara, CertChainPolicyPara, SSLExtraCertChainPolicyPara, CertChainPolicyStatus, TCPKeepalive, reparseDataBuffer, sliceType, ptrType, arrayType, ptrType$1, arrayType$1, ptrType$2, ptrType$3, ptrType$4, ptrType$5, sliceType$2, sliceType$3, ptrType$6, ptrType$10, ptrType$11, ptrType$15, arrayType$2, ptrType$18, ptrType$19, ptrType$20, arrayType$3, ptrType$23, ptrType$27, sliceType$6, ptrType$28, arrayType$4, arrayType$5, arrayType$6, arrayType$7, ptrType$29, ptrType$30, ptrType$31, ptrType$32, arrayType$8, arrayType$9, arrayType$10, arrayType$11, ptrType$35, ptrType$37, ptrType$38, arrayType$15, arrayType$16, arrayType$17, arrayType$18, ptrType$39, ptrType$40, ptrType$41, ptrType$42, ptrType$43, ptrType$44, ptrType$45, ptrType$46, arrayType$20, warningPrinted, lineBuffer, minusOne, errors$1, 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, Syscall, Syscall6, Syscall9, Syscall12, Syscall15, getprocaddress, getStdHandle, GetConsoleMode, WriteFile, GetCommandLine, CommandLineToArgv, Getenv, NewLazyDLL, CloseOnExec, FullPath, itoa, uitoa, ByteSliceFromString, BytePtrFromString, StringToUTF16, UTF16FromString, UTF16ToString, StringToUTF16Ptr, UTF16PtrFromString, langid, Exit, makeInheritSa, Open, Read, Write, Seek, Ftruncate, Fsync, Socket, SetsockoptInt, Shutdown, SetsockoptLinger, Getpid, FindFirstFile, FindNextFile, Fchdir, Fchmod, Fchown, Readlink, FreeLibrary, FormatMessage, ExitProcess, CreateFile, ReadFile, SetFilePointer, CloseHandle, findFirstFile1, findNextFile1, FindClose, GetFileInformationByHandle, RemoveDirectory, DeleteFile, SetEndOfFile, CancelIo, CancelIoEx, GetTempPath, GetFileType, CryptAcquireContext, CryptGenRandom, GetFileAttributes, GetFileAttributesEx, LocalFree, SetHandleInformation, FlushFileBuffers, GetFullPathName, TransmitFile, CertOpenStore, CertAddCertificateContextToStore, CertCloseStore, CertGetCertificateChain, CertFreeCertificateChain, CertCreateCertificateContext, CertFreeCertificateContext, CertVerifyCertificateChainPolicy, getCurrentProcessId, WriteConsole, ReadConsole, DeviceIoControl, WSAIoctl, socket, Setsockopt, shutdown, Closesocket, AcceptEx, GetAcceptExSockaddrs, WSARecv, WSASend, GetIfEntry, GetAdaptersInfo, SetFileCompletionNotificationModes, NsecToFiletime, copyFindData; bytes = $packages["bytes"]; errors = $packages["errors"]; js = $packages["github.com/gopherjs/gopherjs/js"]; sync = $packages["sync"]; atomic = $packages["sync/atomic"]; utf16 = $packages["unicode/utf16"]; DummyError = $pkg.DummyError = $newType(0, $kindStruct, "syscall.DummyError", "DummyError", "syscall", function() { this.$val = this; if (arguments.length === 0) { return; } }); DLLError = $pkg.DLLError = $newType(0, $kindStruct, "syscall.DLLError", "DLLError", "syscall", 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", "DLL", "syscall", 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", "Proc", "syscall", function(Dll_, Name_, addr_) { this.$val = this; if (arguments.length === 0) { this.Dll = ptrType$3.nil; this.Name = ""; this.addr = 0; return; } this.Dll = Dll_; this.Name = Name_; this.addr = addr_; }); LazyDLL = $pkg.LazyDLL = $newType(0, $kindStruct, "syscall.LazyDLL", "LazyDLL", "syscall", function(mu_, dll_, Name_) { this.$val = this; if (arguments.length === 0) { this.mu = new sync.Mutex.ptr(); this.dll = ptrType$3.nil; this.Name = ""; return; } this.mu = mu_; this.dll = dll_; this.Name = Name_; }); LazyProc = $pkg.LazyProc = $newType(0, $kindStruct, "syscall.LazyProc", "LazyProc", "syscall", function(mu_, Name_, l_, proc_) { this.$val = this; if (arguments.length === 0) { this.mu = new sync.Mutex.ptr(); this.Name = ""; this.l = ptrType$5.nil; this.proc = ptrType$4.nil; return; } this.mu = mu_; this.Name = Name_; this.l = l_; this.proc = proc_; }); Handle = $pkg.Handle = $newType(4, $kindUintptr, "syscall.Handle", "Handle", "syscall", null); Errno = $pkg.Errno = $newType(4, $kindUintptr, "syscall.Errno", "Errno", "syscall", null); RawSockaddrInet4 = $pkg.RawSockaddrInet4 = $newType(0, $kindStruct, "syscall.RawSockaddrInet4", "RawSockaddrInet4", "syscall", 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", "RawSockaddrInet6", "syscall", 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", "RawSockaddr", "syscall", 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", "RawSockaddrAny", "syscall", function(Addr_, Pad_) { this.$val = this; if (arguments.length === 0) { this.Addr = new RawSockaddr.ptr(); this.Pad = arrayType$7.zero(); return; } this.Addr = Addr_; this.Pad = Pad_; }); Sockaddr = $pkg.Sockaddr = $newType(8, $kindInterface, "syscall.Sockaddr", "Sockaddr", "syscall", null); SockaddrInet4 = $pkg.SockaddrInet4 = $newType(0, $kindStruct, "syscall.SockaddrInet4", "SockaddrInet4", "syscall", function(Port_, Addr_, raw_) { this.$val = this; if (arguments.length === 0) { this.Port = 0; this.Addr = arrayType$3.zero(); this.raw = new RawSockaddrInet4.ptr(); return; } this.Port = Port_; this.Addr = Addr_; this.raw = raw_; }); SockaddrInet6 = $pkg.SockaddrInet6 = $newType(0, $kindStruct, "syscall.SockaddrInet6", "SockaddrInet6", "syscall", 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(); return; } this.Port = Port_; this.ZoneId = ZoneId_; this.Addr = Addr_; this.raw = raw_; }); SockaddrUnix = $pkg.SockaddrUnix = $newType(0, $kindStruct, "syscall.SockaddrUnix", "SockaddrUnix", "syscall", function(Name_) { this.$val = this; if (arguments.length === 0) { this.Name = ""; return; } this.Name = Name_; }); Linger = $pkg.Linger = $newType(0, $kindStruct, "syscall.Linger", "Linger", "syscall", 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", "sysLinger", "syscall", 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", "SecurityAttributes", "syscall", 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", "Overlapped", "syscall", 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", "Filetime", "syscall", 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", "Win32finddata", "syscall", 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(); this.LastAccessTime = new Filetime.ptr(); this.LastWriteTime = new Filetime.ptr(); 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_; }); win32finddata1 = $pkg.win32finddata1 = $newType(0, $kindStruct, "syscall.win32finddata1", "win32finddata1", "syscall", 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(); this.LastAccessTime = new Filetime.ptr(); this.LastWriteTime = new Filetime.ptr(); this.FileSizeHigh = 0; this.FileSizeLow = 0; this.Reserved0 = 0; this.Reserved1 = 0; this.FileName = arrayType$10.zero(); this.AlternateFileName = arrayType$11.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", "ByHandleFileInformation", "syscall", 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(); this.LastAccessTime = new Filetime.ptr(); this.LastWriteTime = new Filetime.ptr(); 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", "Win32FileAttributeData", "syscall", function(FileAttributes_, CreationTime_, LastAccessTime_, LastWriteTime_, FileSizeHigh_, FileSizeLow_) { this.$val = this; if (arguments.length === 0) { this.FileAttributes = 0; this.CreationTime = new Filetime.ptr(); this.LastAccessTime = new Filetime.ptr(); this.LastWriteTime = new Filetime.ptr(); 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", "WSABuf", "syscall", function(Len_, Buf_) { this.$val = this; if (arguments.length === 0) { this.Len = 0; this.Buf = ptrType$15.nil; return; } this.Len = Len_; this.Buf = Buf_; }); TransmitFileBuffers = $pkg.TransmitFileBuffers = $newType(0, $kindStruct, "syscall.TransmitFileBuffers", "TransmitFileBuffers", "syscall", 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_; }); SockaddrGen = $pkg.SockaddrGen = $newType(24, $kindArray, "syscall.SockaddrGen", "SockaddrGen", "syscall", null); InterfaceInfo = $pkg.InterfaceInfo = $newType(0, $kindStruct, "syscall.InterfaceInfo", "InterfaceInfo", "syscall", function(Flags_, Address_, BroadcastAddress_, Netmask_) { this.$val = this; if (arguments.length === 0) { this.Flags = 0; this.Address = SockaddrGen.zero(); this.BroadcastAddress = SockaddrGen.zero(); this.Netmask = SockaddrGen.zero(); return; } this.Flags = Flags_; this.Address = Address_; this.BroadcastAddress = BroadcastAddress_; this.Netmask = Netmask_; }); IpAddressString = $pkg.IpAddressString = $newType(0, $kindStruct, "syscall.IpAddressString", "IpAddressString", "syscall", function(String_) { this.$val = this; if (arguments.length === 0) { this.String = arrayType$5.zero(); return; } this.String = String_; }); IpMaskString = $pkg.IpMaskString = $newType(0, $kindStruct, "syscall.IpMaskString", "IpMaskString", "syscall", function(String_) { this.$val = this; if (arguments.length === 0) { this.String = arrayType$5.zero(); return; } this.String = String_; }); IpAddrString = $pkg.IpAddrString = $newType(0, $kindStruct, "syscall.IpAddrString", "IpAddrString", "syscall", function(Next_, IpAddress_, IpMask_, Context_) { this.$val = this; if (arguments.length === 0) { this.Next = ptrType$37.nil; this.IpAddress = new IpAddressString.ptr(); this.IpMask = new IpMaskString.ptr(); this.Context = 0; return; } this.Next = Next_; this.IpAddress = IpAddress_; this.IpMask = IpMask_; this.Context = Context_; }); IpAdapterInfo = $pkg.IpAdapterInfo = $newType(0, $kindStruct, "syscall.IpAdapterInfo", "IpAdapterInfo", "syscall", function(Next_, ComboIndex_, AdapterName_, Description_, AddressLength_, Address_, Index_, Type_, DhcpEnabled_, CurrentIpAddress_, IpAddressList_, GatewayList_, DhcpServer_, HaveWins_, PrimaryWinsServer_, SecondaryWinsServer_, LeaseObtained_, LeaseExpires_) { this.$val = this; if (arguments.length === 0) { this.Next = ptrType$38.nil; this.ComboIndex = 0; this.AdapterName = arrayType$15.zero(); this.Description = arrayType$16.zero(); this.AddressLength = 0; this.Address = arrayType$4.zero(); this.Index = 0; this.Type = 0; this.DhcpEnabled = 0; this.CurrentIpAddress = ptrType$37.nil; this.IpAddressList = new IpAddrString.ptr(); this.GatewayList = new IpAddrString.ptr(); this.DhcpServer = new IpAddrString.ptr(); this.HaveWins = false; this.PrimaryWinsServer = new IpAddrString.ptr(); this.SecondaryWinsServer = new IpAddrString.ptr(); this.LeaseObtained = new $Int64(0, 0); this.LeaseExpires = new $Int64(0, 0); return; } this.Next = Next_; this.ComboIndex = ComboIndex_; this.AdapterName = AdapterName_; this.Description = Description_; this.AddressLength = AddressLength_; this.Address = Address_; this.Index = Index_; this.Type = Type_; this.DhcpEnabled = DhcpEnabled_; this.CurrentIpAddress = CurrentIpAddress_; this.IpAddressList = IpAddressList_; this.GatewayList = GatewayList_; this.DhcpServer = DhcpServer_; this.HaveWins = HaveWins_; this.PrimaryWinsServer = PrimaryWinsServer_; this.SecondaryWinsServer = SecondaryWinsServer_; this.LeaseObtained = LeaseObtained_; this.LeaseExpires = LeaseExpires_; }); MibIfRow = $pkg.MibIfRow = $newType(0, $kindStruct, "syscall.MibIfRow", "MibIfRow", "syscall", function(Name_, Index_, Type_, Mtu_, Speed_, PhysAddrLen_, PhysAddr_, AdminStatus_, OperStatus_, LastChange_, InOctets_, InUcastPkts_, InNUcastPkts_, InDiscards_, InErrors_, InUnknownProtos_, OutOctets_, OutUcastPkts_, OutNUcastPkts_, OutDiscards_, OutErrors_, OutQLen_, DescrLen_, Descr_) { this.$val = this; if (arguments.length === 0) { this.Name = arrayType$17.zero(); this.Index = 0; this.Type = 0; this.Mtu = 0; this.Speed = 0; this.PhysAddrLen = 0; this.PhysAddr = arrayType$4.zero(); this.AdminStatus = 0; this.OperStatus = 0; this.LastChange = 0; this.InOctets = 0; this.InUcastPkts = 0; this.InNUcastPkts = 0; this.InDiscards = 0; this.InErrors = 0; this.InUnknownProtos = 0; this.OutOctets = 0; this.OutUcastPkts = 0; this.OutNUcastPkts = 0; this.OutDiscards = 0; this.OutErrors = 0; this.OutQLen = 0; this.DescrLen = 0; this.Descr = arrayType$18.zero(); return; } this.Name = Name_; this.Index = Index_; this.Type = Type_; this.Mtu = Mtu_; this.Speed = Speed_; this.PhysAddrLen = PhysAddrLen_; this.PhysAddr = PhysAddr_; this.AdminStatus = AdminStatus_; this.OperStatus = OperStatus_; this.LastChange = LastChange_; this.InOctets = InOctets_; this.InUcastPkts = InUcastPkts_; this.InNUcastPkts = InNUcastPkts_; this.InDiscards = InDiscards_; this.InErrors = InErrors_; this.InUnknownProtos = InUnknownProtos_; this.OutOctets = OutOctets_; this.OutUcastPkts = OutUcastPkts_; this.OutNUcastPkts = OutNUcastPkts_; this.OutDiscards = OutDiscards_; this.OutErrors = OutErrors_; this.OutQLen = OutQLen_; this.DescrLen = DescrLen_; this.Descr = Descr_; }); CertContext = $pkg.CertContext = $newType(0, $kindStruct, "syscall.CertContext", "CertContext", "syscall", function(EncodingType_, EncodedCert_, Length_, CertInfo_, Store_) { this.$val = this; if (arguments.length === 0) { this.EncodingType = 0; this.EncodedCert = ptrType$15.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", "CertChainContext", "syscall", function(Size_, TrustStatus_, ChainCount_, Chains_, LowerQualityChainCount_, LowerQualityChains_, HasRevocationFreshnessTime_, RevocationFreshnessTime_) { this.$val = this; if (arguments.length === 0) { this.Size = 0; this.TrustStatus = new CertTrustStatus.ptr(); this.ChainCount = 0; this.Chains = ptrType$40.nil; this.LowerQualityChainCount = 0; this.LowerQualityChains = ptrType$42.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", "CertSimpleChain", "syscall", function(Size_, TrustStatus_, NumElements_, Elements_, TrustListInfo_, HasRevocationFreshnessTime_, RevocationFreshnessTime_) { this.$val = this; if (arguments.length === 0) { this.Size = 0; this.TrustStatus = new CertTrustStatus.ptr(); this.NumElements = 0; this.Elements = ptrType$44.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", "CertChainElement", "syscall", function(Size_, CertContext_, TrustStatus_, RevocationInfo_, IssuanceUsage_, ApplicationUsage_, ExtendedErrorInfo_) { this.$val = this; if (arguments.length === 0) { this.Size = 0; this.CertContext = ptrType$23.nil; this.TrustStatus = new CertTrustStatus.ptr(); this.RevocationInfo = ptrType$45.nil; this.IssuanceUsage = ptrType$46.nil; this.ApplicationUsage = ptrType$46.nil; this.ExtendedErrorInfo = ptrType.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", "CertRevocationInfo", "syscall", function(Size_, RevocationResult_, RevocationOid_, OidSpecificInfo_, HasFreshnessTime_, FreshnessTime_, CrlInfo_) { this.$val = this; if (arguments.length === 0) { this.Size = 0; this.RevocationResult = 0; this.RevocationOid = ptrType$15.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", "CertTrustStatus", "syscall", 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", "CertUsageMatch", "syscall", function(Type_, Usage_) { this.$val = this; if (arguments.length === 0) { this.Type = 0; this.Usage = new CertEnhKeyUsage.ptr(); return; } this.Type = Type_; this.Usage = Usage_; }); CertEnhKeyUsage = $pkg.CertEnhKeyUsage = $newType(0, $kindStruct, "syscall.CertEnhKeyUsage", "CertEnhKeyUsage", "syscall", function(Length_, UsageIdentifiers_) { this.$val = this; if (arguments.length === 0) { this.Length = 0; this.UsageIdentifiers = ptrType$35.nil; return; } this.Length = Length_; this.UsageIdentifiers = UsageIdentifiers_; }); CertChainPara = $pkg.CertChainPara = $newType(0, $kindStruct, "syscall.CertChainPara", "CertChainPara", "syscall", function(Size_, RequestedUsage_, RequstedIssuancePolicy_, URLRetrievalTimeout_, CheckRevocationFreshnessTime_, RevocationFreshnessTime_, CacheResync_) { this.$val = this; if (arguments.length === 0) { this.Size = 0; this.RequestedUsage = new CertUsageMatch.ptr(); this.RequstedIssuancePolicy = new CertUsageMatch.ptr(); this.URLRetrievalTimeout = 0; this.CheckRevocationFreshnessTime = 0; this.RevocationFreshnessTime = 0; this.CacheResync = ptrType$20.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", "CertChainPolicyPara", "syscall", 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", "SSLExtraCertChainPolicyPara", "syscall", function(Size_, AuthType_, Checks_, ServerName_) { this.$val = this; if (arguments.length === 0) { this.Size = 0; this.AuthType = 0; this.Checks = 0; this.ServerName = ptrType.nil; return; } this.Size = Size_; this.AuthType = AuthType_; this.Checks = Checks_; this.ServerName = ServerName_; }); CertChainPolicyStatus = $pkg.CertChainPolicyStatus = $newType(0, $kindStruct, "syscall.CertChainPolicyStatus", "CertChainPolicyStatus", "syscall", 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_; }); TCPKeepalive = $pkg.TCPKeepalive = $newType(0, $kindStruct, "syscall.TCPKeepalive", "TCPKeepalive", "syscall", 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_; }); reparseDataBuffer = $pkg.reparseDataBuffer = $newType(0, $kindStruct, "syscall.reparseDataBuffer", "reparseDataBuffer", "syscall", function(ReparseTag_, ReparseDataLength_, Reserved_, SubstituteNameOffset_, SubstituteNameLength_, PrintNameOffset_, PrintNameLength_, Flags_, PathBuffer_) { this.$val = this; if (arguments.length === 0) { this.ReparseTag = 0; this.ReparseDataLength = 0; this.Reserved = 0; this.SubstituteNameOffset = 0; this.SubstituteNameLength = 0; this.PrintNameOffset = 0; this.PrintNameLength = 0; this.Flags = 0; this.PathBuffer = arrayType$20.zero(); return; } this.ReparseTag = ReparseTag_; this.ReparseDataLength = ReparseDataLength_; this.Reserved = Reserved_; this.SubstituteNameOffset = SubstituteNameOffset_; this.SubstituteNameLength = SubstituteNameLength_; this.PrintNameOffset = PrintNameOffset_; this.PrintNameLength = PrintNameLength_; this.Flags = Flags_; this.PathBuffer = PathBuffer_; }); sliceType = $sliceType($Uint8); ptrType = $ptrType($Uint16); arrayType = $arrayType($Uint16, 8192); ptrType$1 = $ptrType(arrayType); arrayType$1 = $arrayType(ptrType$1, 8192); ptrType$2 = $ptrType(arrayType$1); ptrType$3 = $ptrType(DLL); ptrType$4 = $ptrType(Proc); ptrType$5 = $ptrType(LazyDLL); sliceType$2 = $sliceType($Uint16); sliceType$3 = $sliceType($Int32); ptrType$6 = $ptrType(ptrType); ptrType$10 = $ptrType(SecurityAttributes); ptrType$11 = $ptrType($Uint32); ptrType$15 = $ptrType($Uint8); arrayType$2 = $arrayType($Uint8, 32); ptrType$18 = $ptrType(Overlapped); ptrType$19 = $ptrType($Int32); ptrType$20 = $ptrType(Filetime); arrayType$3 = $arrayType($Uint8, 4); ptrType$23 = $ptrType(CertContext); ptrType$27 = $ptrType(DLLError); sliceType$6 = $sliceType($Uintptr); ptrType$28 = $ptrType(LazyProc); arrayType$4 = $arrayType($Uint8, 8); arrayType$5 = $arrayType($Uint8, 16); arrayType$6 = $arrayType($Int8, 14); arrayType$7 = $arrayType($Int8, 96); ptrType$29 = $ptrType(RawSockaddrAny); ptrType$30 = $ptrType(SockaddrInet4); ptrType$31 = $ptrType(SockaddrInet6); ptrType$32 = $ptrType(SockaddrUnix); arrayType$8 = $arrayType($Uint16, 259); arrayType$9 = $arrayType($Uint16, 13); arrayType$10 = $arrayType($Uint16, 260); arrayType$11 = $arrayType($Uint16, 14); ptrType$35 = $ptrType(ptrType$15); ptrType$37 = $ptrType(IpAddrString); ptrType$38 = $ptrType(IpAdapterInfo); arrayType$15 = $arrayType($Uint8, 260); arrayType$16 = $arrayType($Uint8, 132); arrayType$17 = $arrayType($Uint16, 256); arrayType$18 = $arrayType($Uint8, 256); ptrType$39 = $ptrType(CertSimpleChain); ptrType$40 = $ptrType(ptrType$39); ptrType$41 = $ptrType(CertChainContext); ptrType$42 = $ptrType(ptrType$41); ptrType$43 = $ptrType(CertChainElement); ptrType$44 = $ptrType(ptrType$43); ptrType$45 = $ptrType(CertRevocationInfo); ptrType$46 = $ptrType(CertEnhKeyUsage); arrayType$20 = $arrayType($Uint16, 1); 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) { console.log("warning: system calls not available, see https://github.com/gopherjs/gopherjs/blob/master/doc/syscalls.md"); } 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 = bytes.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; }; 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; GetCommandLine = function() { var $ptr, cmd; cmd = ptrType.nil; return cmd; }; $pkg.GetCommandLine = GetCommandLine; CommandLineToArgv = function(cmd, argc) { var $ptr, _tmp, _tmp$1, argc, argv, cmd, err, x; argv = ptrType$2.nil; err = $ifaceNil; _tmp = ptrType$2.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 = $clone(this, DummyError); 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$4.nil; err = $ifaceNil; d = this; _tuple = BytePtrFromString(name); namep = _tuple[0]; err = _tuple[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { _tmp = ptrType$4.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$4.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, _ref, _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; _ref = a.$length; if (_ref === 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 (_ref === 1) { _tuple$1 = Syscall(p.Addr(), (a.$length >>> 0), (0 >= a.$length ? $throwRuntimeError("index out of range") : 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 (_ref === 2) { _tuple$2 = Syscall(p.Addr(), (a.$length >>> 0), (0 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 0]), (1 >= a.$length ? $throwRuntimeError("index out of range") : 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 (_ref === 3) { _tuple$3 = Syscall(p.Addr(), (a.$length >>> 0), (0 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 0]), (1 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 1]), (2 >= a.$length ? $throwRuntimeError("index out of range") : 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 (_ref === 4) { _tuple$4 = Syscall6(p.Addr(), (a.$length >>> 0), (0 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 0]), (1 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 1]), (2 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 2]), (3 >= a.$length ? $throwRuntimeError("index out of range") : 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 (_ref === 5) { _tuple$5 = Syscall6(p.Addr(), (a.$length >>> 0), (0 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 0]), (1 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 1]), (2 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 2]), (3 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 3]), (4 >= a.$length ? $throwRuntimeError("index out of range") : 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 (_ref === 6) { _tuple$6 = Syscall6(p.Addr(), (a.$length >>> 0), (0 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 0]), (1 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 1]), (2 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 2]), (3 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 3]), (4 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 4]), (5 >= a.$length ? $throwRuntimeError("index out of range") : 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 (_ref === 7) { _tuple$7 = Syscall9(p.Addr(), (a.$length >>> 0), (0 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 0]), (1 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 1]), (2 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 2]), (3 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 3]), (4 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 4]), (5 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 5]), (6 >= a.$length ? $throwRuntimeError("index out of range") : 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 (_ref === 8) { _tuple$8 = Syscall9(p.Addr(), (a.$length >>> 0), (0 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 0]), (1 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 1]), (2 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 2]), (3 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 3]), (4 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 4]), (5 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 5]), (6 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 6]), (7 >= a.$length ? $throwRuntimeError("index out of range") : 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 (_ref === 9) { _tuple$9 = Syscall9(p.Addr(), (a.$length >>> 0), (0 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 0]), (1 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 1]), (2 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 2]), (3 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 3]), (4 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 4]), (5 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 5]), (6 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 6]), (7 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 7]), (8 >= a.$length ? $throwRuntimeError("index out of range") : 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 (_ref === 10) { _tuple$10 = Syscall12(p.Addr(), (a.$length >>> 0), (0 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 0]), (1 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 1]), (2 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 2]), (3 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 3]), (4 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 4]), (5 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 5]), (6 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 6]), (7 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 7]), (8 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 8]), (9 >= a.$length ? $throwRuntimeError("index out of range") : 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 (_ref === 11) { _tuple$11 = Syscall12(p.Addr(), (a.$length >>> 0), (0 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 0]), (1 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 1]), (2 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 2]), (3 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 3]), (4 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 4]), (5 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 5]), (6 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 6]), (7 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 7]), (8 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 8]), (9 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 9]), (10 >= a.$length ? $throwRuntimeError("index out of range") : 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 (_ref === 12) { _tuple$12 = Syscall12(p.Addr(), (a.$length >>> 0), (0 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 0]), (1 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 1]), (2 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 2]), (3 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 3]), (4 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 4]), (5 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 5]), (6 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 6]), (7 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 7]), (8 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 8]), (9 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 9]), (10 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 10]), (11 >= a.$length ? $throwRuntimeError("index out of range") : 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 (_ref === 13) { _tuple$13 = Syscall15(p.Addr(), (a.$length >>> 0), (0 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 0]), (1 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 1]), (2 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 2]), (3 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 3]), (4 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 4]), (5 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 5]), (6 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 6]), (7 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 7]), (8 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 8]), (9 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 9]), (10 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 10]), (11 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 11]), (12 >= a.$length ? $throwRuntimeError("index out of range") : 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 (_ref === 14) { _tuple$14 = Syscall15(p.Addr(), (a.$length >>> 0), (0 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 0]), (1 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 1]), (2 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 2]), (3 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 3]), (4 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 4]), (5 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 5]), (6 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 6]), (7 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 7]), (8 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 8]), (9 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 9]), (10 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 10]), (11 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 11]), (12 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 12]), (13 >= a.$length ? $throwRuntimeError("index out of range") : 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 (_ref === 15) { _tuple$15 = Syscall15(p.Addr(), (a.$length >>> 0), (0 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 0]), (1 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 1]), (2 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 2]), (3 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 3]), (4 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 4]), (5 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 5]), (6 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 6]), (7 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 7]), (8 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 8]), (9 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 9]), (10 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 10]), (11 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 11]), (12 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 12]), (13 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 13]), (14 >= a.$length ? $throwRuntimeError("index out of range") : 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) + ".")); } return [r1, r2, lastErr]; }; 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(), name, d, ptrType$4.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(), ptrType$3.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, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, 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]; } buf = $makeSlice(sliceType$2, 100); _tuple$1 = GetFullPathName(p, (buf.$length >>> 0), $indexPtr(buf.$array, buf.$offset + 0, ptrType), ptrType$6.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)) { buf = $makeSlice(sliceType$2, n); _tuple$2 = GetFullPathName(p, (buf.$length >>> 0), $indexPtr(buf.$array, buf.$offset + 0, ptrType), ptrType$6.nil); n = _tuple$2[0]; err = _tuple$2[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { _tmp$4 = ""; _tmp$5 = err; path = _tmp$4; err = _tmp$5; return [path, err]; } if (n > (buf.$length >>> 0)) { _tmp$6 = ""; _tmp$7 = new Errno(536870951); path = _tmp$6; err = _tmp$7; return [path, err]; } } _tmp$8 = UTF16ToString($subslice(buf, 0, n)); _tmp$9 = $ifaceNil; path = _tmp$8; err = _tmp$9; return [path, err]; }; $pkg.FullPath = FullPath; 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 = $clone(arrayType$2.zero(), arrayType$2); i = 31; while (true) { if (!(val >= 10)) { break; } ((i < 0 || i >= buf.length) ? $throwRuntimeError("index out of range") : 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") : 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$15.nil, err]; } return [$indexPtr(a.$array, a.$offset + 0, ptrType$15), $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$2.nil, new Errno(536870951)]; } i = i + (1) >> 0; } return [utf16.Encode(new sliceType$3($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") : _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)); }; $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.nil, err]; } return [$indexPtr(a.$array, a.$offset + 0, ptrType), $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") : errors$1[idx]); } flags = 12800; b = $makeSlice(sliceType$2, 300); _tuple = FormatMessage(flags, 0, (e >>> 0), langid(9, 1), b, ptrType$15.nil); n = _tuple[0]; err = _tuple[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { _tuple$1 = FormatMessage(flags, 0, (e >>> 0), 0, b, ptrType$15.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") : b.$array[b.$offset + x])) === 10) || ((x$1 = n - 1 >>> 0, ((x$1 < 0 || x$1 >= b.$length) ? $throwRuntimeError("index out of range") : 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 = $clone(new SecurityAttributes.ptr(), SecurityAttributes); sa.Length = 12; sa.InheritHandle = 1; return sa; }; Open = function(path, mode, perm) { var $ptr, _ref, _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; _ref = mode & 3; if (_ref === 0) { access = 2147483648; } else if (_ref === 1) { access = 1073741824; } else if (_ref === 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$10.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_ptr, e, err, fd, n, p; n = 0; err = $ifaceNil; done = 0; e = ReadFile(fd, p, (done_ptr || (done_ptr = new ptrType$11(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]; } _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_ptr, e, err, fd, n, p; n = 0; err = $ifaceNil; done = 0; e = WriteFile(fd, p, (done_ptr || (done_ptr = new ptrType$11(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]; } _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, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, e, err, fd, ft, hi, hi_ptr, lo, newoffset, offset, rlo, w, whence, x, x$1, x$2; newoffset = new $Int64(0, 0); err = $ifaceNil; w = 0; _ref = whence; if (_ref === 0) { w = 0; } else if (_ref === 1) { w = 1; } else if (_ref === 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_ptr || (hi_ptr = new ptrType$19(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; RawSockaddrAny.ptr.prototype.Sockaddr = function() { var $ptr, _array, _array$1, _array$2, _array$3, _ref, _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; _ref = rsa.Addr.Family; if (_ref === 1) { return [$ifaceNil, new Errno(536871042)]; } else if (_ref === 2) { _array$1 = new Uint8Array(112); pp = (_array = _array$1, _struct = new RawSockaddrInet4.ptr(), _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(); p = (pp.$ptr_Port || (pp.$ptr_Port = new ptrType(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") : x$1[i] = (x = pp.Addr, ((i < 0 || i >= x.length) ? $throwRuntimeError("index out of range") : x[i])))); i = i + (1) >> 0; } return [sa, $ifaceNil]; } else if (_ref === 23) { _array$3 = new Uint8Array(112); pp$1 = (_array$2 = _array$3, _struct$2 = new RawSockaddrInet6.ptr(), _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(); p$1 = (pp$1.$ptr_Port || (pp$1.$ptr_Port = new ptrType(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") : x$3[i$1] = (x$2 = pp$1.Addr, ((i$1 < 0 || i$1 >= x$2.length) ? $throwRuntimeError("index out of range") : 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_ptr, value; err = $ifaceNil; v = (value >> 0); err = Setsockopt(fd, (level >> 0), (opt >> 0), (v_ptr || (v_ptr = new ptrType$19(function() { return v; }, function($v) { v = $v; }))), 4); return err; }; $pkg.SetsockoptInt = SetsockoptInt; Shutdown = function(fd, how) { var $ptr, err, fd, how; err = $ifaceNil; err = shutdown(fd, (how >> 0)); return err; }; $pkg.Shutdown = Shutdown; 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 = $clone(new win32finddata1.ptr(), win32finddata1); _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 = $clone(new win32finddata1.ptr(), win32finddata1); 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, _array, _q, _struct, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, _view, buf, bytesReturned, bytesReturned_ptr, err, fd, n, 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$10.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$15.nil, 0, $indexPtr(rdbbuf.$array, rdbbuf.$offset + 0, ptrType$15), (rdbbuf.$length >>> 0), (bytesReturned_ptr || (bytesReturned_ptr = new ptrType$11(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(), _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.SubstituteNameOffset = _view.getUint16(8, true), _struct.SubstituteNameLength = _view.getUint16(10, true), _struct.PrintNameOffset = _view.getUint16(12, true), _struct.PrintNameLength = _view.getUint16(14, true), _struct.Flags = _view.getUint32(16, true), _struct.PathBuffer = new ($nativeArray($kindUint16))(_array.buffer, $min(_array.byteOffset + 20, _array.buffer.byteLength)), _struct); if ((bytesReturned >>> 0) < 22 || !((rdb.ReparseTag === 2684354572))) { _tmp$4 = -1; _tmp$5 = new Errno(2); n = _tmp$4; err = _tmp$5; return [n, err]; } s = UTF16ToString($subslice(new sliceType$2($sliceToArray(new sliceType(rdb.PathBuffer))), 0, (_q = rdb.PrintNameLength / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")))); 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; 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 = new Errno(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.nil; if (buf.$length > 0) { _p0 = $indexPtr(buf.$array, buf.$offset + 0, ptrType); } _tuple = Syscall9(procFormatMessageW.Addr(), 7, (flags >>> 0), (msgsrc >>> 0), (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 = new Errno(e1); } else { err = new Errno(536870951); } } return [n, err]; }; $pkg.FormatMessage = FormatMessage; ExitProcess = function(exitcode) { var $ptr, exitcode; Syscall(procExitProcess.Addr(), 1, (exitcode >>> 0), 0, 0); return; }; $pkg.ExitProcess = ExitProcess; 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); r0 = _tuple[0]; e1 = _tuple[2]; _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); handle = (r0 >>> 0); if (handle === 4294967295) { if (!((e1 === 0))) { err = new Errno(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$15.nil; if (buf.$length > 0) { _p0 = $indexPtr(buf.$array, buf.$offset + 0, ptrType$15); } _array = new Uint8Array(20); _tuple = Syscall6(procReadFile.Addr(), 5, (handle >>> 0), _p0, (buf.$length >>> 0), done, _array, 0); r1 = _tuple[0]; e1 = _tuple[2]; _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); if (r1 === 0) { if (!((e1 === 0))) { err = new Errno(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 = new Errno(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 = new Errno(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); r0 = _tuple[0]; e1 = _tuple[2]; _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)); handle = (r0 >>> 0); if (handle === 4294967295) { if (!((e1 === 0))) { err = new Errno(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); r1 = _tuple[0]; e1 = _tuple[2]; _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)); if (r1 === 0) { if (!((e1 === 0))) { err = new Errno(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 = new Errno(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); r1 = _tuple[0]; e1 = _tuple[2]; _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); if (r1 === 0) { if (!((e1 === 0))) { err = new Errno(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 = new Errno(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 = new Errno(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 = new Errno(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 = new Errno(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); r1 = _tuple[0]; e1 = _tuple[2]; _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); if (r1 === 0) { if (!((e1 === 0))) { err = new Errno(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 = new Errno(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 = new Errno(e1); } else { err = new Errno(536870951); } } return [n, err]; }; $pkg.GetFileType = GetFileType; CryptAcquireContext = function(provhandle, container, provider, provtype, flags) { var $ptr, _tuple, container, e1, err, flags, provhandle, provider, provtype, r1; err = $ifaceNil; _tuple = Syscall6(procCryptAcquireContextW.Addr(), 5, provhandle, container, provider, (provtype >>> 0), (flags >>> 0), 0); r1 = _tuple[0]; e1 = _tuple[2]; if (r1 === 0) { if (!((e1 === 0))) { err = new Errno(e1); } else { err = new Errno(536870951); } } return err; }; $pkg.CryptAcquireContext = CryptAcquireContext; CryptGenRandom = function(provhandle, buflen, buf) { var $ptr, _tuple, buf, buflen, e1, err, provhandle, r1; err = $ifaceNil; _tuple = Syscall(procCryptGenRandom.Addr(), 3, (provhandle >>> 0), (buflen >>> 0), buf); r1 = _tuple[0]; e1 = _tuple[2]; if (r1 === 0) { if (!((e1 === 0))) { err = new Errno(e1); } else { err = new Errno(536870951); } } return err; }; $pkg.CryptGenRandom = CryptGenRandom; 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 = new Errno(e1); } else { err = new Errno(536870951); } } return [attrs, err]; }; $pkg.GetFileAttributes = GetFileAttributes; 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 = new Errno(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 = new Errno(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 = new Errno(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 = new Errno(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 = new Errno(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); r1 = _tuple[0]; e1 = _tuple[2]; _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); if (r1 === 0) { if (!((e1 === 0))) { err = new Errno(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 = new Errno(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); r1 = _tuple[0]; e1 = _tuple[2]; _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); if (r1 === 0) { if (!((e1 === 0))) { err = new Errno(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 = new Errno(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); r1 = _tuple[0]; e1 = _tuple[2]; _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); if (r1 === 0) { if (!((e1 === 0))) { err = new Errno(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$23.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(), _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$23.nil) { if (!((e1 === 0))) { err = new Errno(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); r1 = _tuple[0]; e1 = _tuple[2]; _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); if (r1 === 0) { if (!((e1 === 0))) { err = new Errno(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); r1 = _tuple[0]; e1 = _tuple[2]; _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); if (r1 === 0) { if (!((e1 === 0))) { err = new Errno(e1); } else { err = new Errno(536870951); } } return err; }; $pkg.CertVerifyCertificateChainPolicy = CertVerifyCertificateChainPolicy; 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 = new Errno(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 = new Errno(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); r1 = _tuple[0]; e1 = _tuple[2]; _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); if (r1 === 0) { if (!((e1 === 0))) { err = new Errno(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); r1 = _tuple[0]; e1 = _tuple[2]; _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); if (r1 === 4294967295) { if (!((e1 === 0))) { err = new Errno(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 = new Errno(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 = new Errno(e1); } else { err = new Errno(536870951); } } return err; }; $pkg.Setsockopt = Setsockopt; 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 = new Errno(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 = new Errno(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); r1 = _tuple[0]; e1 = _tuple[2]; _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); if (r1 === 0) { if (!((e1 === 0))) { err = new Errno(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); r1 = _tuple[0]; e1 = _tuple[2]; _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); if (r1 === 4294967295) { if (!((e1 === 0))) { err = new Errno(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); r1 = _tuple[0]; e1 = _tuple[2]; _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); if (r1 === 4294967295) { if (!((e1 === 0))) { err = new Errno(e1); } else { err = new Errno(536870951); } } return err; }; $pkg.WSASend = WSASend; GetIfEntry = function(pIfRow) { var $ptr, _array, _struct, _tuple, _view, errcode, pIfRow, r0; errcode = $ifaceNil; _array = new Uint8Array(860); _tuple = Syscall(procGetIfEntry.Addr(), 1, _array, 0, 0); r0 = _tuple[0]; _struct = pIfRow, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Name = new ($nativeArray($kindUint16))(_array.buffer, $min(_array.byteOffset + 0, _array.buffer.byteLength)), _struct.Index = _view.getUint32(512, true), _struct.Type = _view.getUint32(516, true), _struct.Mtu = _view.getUint32(520, true), _struct.Speed = _view.getUint32(524, true), _struct.PhysAddrLen = _view.getUint32(528, true), _struct.PhysAddr = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 532, _array.buffer.byteLength)), _struct.AdminStatus = _view.getUint32(540, true), _struct.OperStatus = _view.getUint32(544, true), _struct.LastChange = _view.getUint32(548, true), _struct.InOctets = _view.getUint32(552, true), _struct.InUcastPkts = _view.getUint32(556, true), _struct.InNUcastPkts = _view.getUint32(560, true), _struct.InDiscards = _view.getUint32(564, true), _struct.InErrors = _view.getUint32(568, true), _struct.InUnknownProtos = _view.getUint32(572, true), _struct.OutOctets = _view.getUint32(576, true), _struct.OutUcastPkts = _view.getUint32(580, true), _struct.OutNUcastPkts = _view.getUint32(584, true), _struct.OutDiscards = _view.getUint32(588, true), _struct.OutErrors = _view.getUint32(592, true), _struct.OutQLen = _view.getUint32(596, true), _struct.DescrLen = _view.getUint32(600, true), _struct.Descr = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 604, _array.buffer.byteLength)); if (!((r0 === 0))) { errcode = new Errno((r0 >>> 0)); } return errcode; }; $pkg.GetIfEntry = GetIfEntry; GetAdaptersInfo = function(ai, ol) { var $ptr, _array, _struct, _tuple, _view, ai, errcode, ol, r0; errcode = $ifaceNil; _array = new Uint8Array(648); _tuple = Syscall(procGetAdaptersInfo.Addr(), 2, _array, ol, 0); r0 = _tuple[0]; _struct = ai, _view = new DataView(_array.buffer, _array.byteOffset), _struct.ComboIndex = _view.getUint32(4, true), _struct.AdapterName = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 8, _array.buffer.byteLength)), _struct.Description = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 268, _array.buffer.byteLength)), _struct.AddressLength = _view.getUint32(400, true), _struct.Address = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 404, _array.buffer.byteLength)), _struct.Index = _view.getUint32(412, true), _struct.Type = _view.getUint32(416, true), _struct.DhcpEnabled = _view.getUint32(420, true), _struct.IpAddressList.IpAddress.String = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 432, _array.buffer.byteLength)), _struct.IpAddressList.IpMask.String = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 448, _array.buffer.byteLength)), _struct.IpAddressList.Context = _view.getUint32(464, true), _struct.GatewayList.IpAddress.String = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 472, _array.buffer.byteLength)), _struct.GatewayList.IpMask.String = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 488, _array.buffer.byteLength)), _struct.GatewayList.Context = _view.getUint32(504, true), _struct.DhcpServer.IpAddress.String = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 512, _array.buffer.byteLength)), _struct.DhcpServer.IpMask.String = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 528, _array.buffer.byteLength)), _struct.DhcpServer.Context = _view.getUint32(544, true), _struct.PrimaryWinsServer.IpAddress.String = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 556, _array.buffer.byteLength)), _struct.PrimaryWinsServer.IpMask.String = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 572, _array.buffer.byteLength)), _struct.PrimaryWinsServer.Context = _view.getUint32(588, true), _struct.SecondaryWinsServer.IpAddress.String = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 596, _array.buffer.byteLength)), _struct.SecondaryWinsServer.IpMask.String = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 612, _array.buffer.byteLength)), _struct.SecondaryWinsServer.Context = _view.getUint32(628, true), _struct.LeaseObtained = new $Int64(_view.getUint32(636, true), _view.getUint32(632, true)), _struct.LeaseExpires = new $Int64(_view.getUint32(644, true), _view.getUint32(640, true)); if (!((r0 === 0))) { errcode = new Errno((r0 >>> 0)); } return errcode; }; $pkg.GetAdaptersInfo = GetAdaptersInfo; 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 = new Errno(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(); 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); $copy(ft, ft, Filetime); return ft; }; $pkg.NsecToFiletime = NsecToFiletime; copyFindData = function(dst, src) { var $ptr, dst, src; dst.FileAttributes = src.FileAttributes; $copy(dst.CreationTime, src.CreationTime, Filetime); $copy(dst.LastAccessTime, src.LastAccessTime, Filetime); $copy(dst.LastWriteTime, src.LastWriteTime, Filetime); dst.FileSizeHigh = src.FileSizeHigh; dst.FileSizeLow = src.FileSizeLow; dst.Reserved0 = src.Reserved0; dst.Reserved1 = src.Reserved1; $copySlice(new sliceType$2(dst.FileName), new sliceType$2(src.FileName)); $copySlice(new sliceType$2(dst.AlternateFileName), new sliceType$2(src.AlternateFileName)); }; DummyError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; ptrType$27.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; ptrType$3.methods = [{prop: "FindProc", name: "FindProc", pkg: "", typ: $funcType([$String], [ptrType$4, $error], false)}, {prop: "MustFindProc", name: "MustFindProc", pkg: "", typ: $funcType([$String], [ptrType$4], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([], [$error], false)}]; ptrType$4.methods = [{prop: "Addr", name: "Addr", pkg: "", typ: $funcType([], [$Uintptr], false)}, {prop: "Call", name: "Call", pkg: "", typ: $funcType([sliceType$6], [$Uintptr, $Uintptr, $error], true)}]; ptrType$5.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$28], false)}]; ptrType$28.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$6], [$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$29.methods = [{prop: "Sockaddr", name: "Sockaddr", pkg: "", typ: $funcType([], [Sockaddr, $error], false)}]; ptrType$30.methods = [{prop: "sockaddr", name: "sockaddr", pkg: "syscall", typ: $funcType([], [$UnsafePointer, $Int32, $error], false)}]; ptrType$31.methods = [{prop: "sockaddr", name: "sockaddr", pkg: "syscall", typ: $funcType([], [$UnsafePointer, $Int32, $error], false)}]; ptrType$32.methods = [{prop: "sockaddr", name: "sockaddr", pkg: "syscall", typ: $funcType([], [$UnsafePointer, $Int32, $error], false)}]; ptrType$20.methods = [{prop: "Nanoseconds", name: "Nanoseconds", pkg: "", typ: $funcType([], [$Int64], false)}]; DummyError.init([]); DLLError.init([{prop: "Err", name: "Err", pkg: "", typ: $error, tag: ""}, {prop: "ObjName", name: "ObjName", pkg: "", typ: $String, tag: ""}, {prop: "Msg", name: "Msg", pkg: "", typ: $String, tag: ""}]); DLL.init([{prop: "Name", name: "Name", pkg: "", typ: $String, tag: ""}, {prop: "Handle", name: "Handle", pkg: "", typ: Handle, tag: ""}]); Proc.init([{prop: "Dll", name: "Dll", pkg: "", typ: ptrType$3, tag: ""}, {prop: "Name", name: "Name", pkg: "", typ: $String, tag: ""}, {prop: "addr", name: "addr", pkg: "syscall", typ: $Uintptr, tag: ""}]); LazyDLL.init([{prop: "mu", name: "mu", pkg: "syscall", typ: sync.Mutex, tag: ""}, {prop: "dll", name: "dll", pkg: "syscall", typ: ptrType$3, tag: ""}, {prop: "Name", name: "Name", pkg: "", typ: $String, tag: ""}]); LazyProc.init([{prop: "mu", name: "mu", pkg: "syscall", typ: sync.Mutex, tag: ""}, {prop: "Name", name: "Name", pkg: "", typ: $String, tag: ""}, {prop: "l", name: "l", pkg: "syscall", typ: ptrType$5, tag: ""}, {prop: "proc", name: "proc", pkg: "syscall", typ: ptrType$4, tag: ""}]); RawSockaddrInet4.init([{prop: "Family", name: "Family", pkg: "", typ: $Uint16, tag: ""}, {prop: "Port", name: "Port", pkg: "", typ: $Uint16, tag: ""}, {prop: "Addr", name: "Addr", pkg: "", typ: arrayType$3, tag: ""}, {prop: "Zero", name: "Zero", pkg: "", typ: arrayType$4, tag: ""}]); RawSockaddrInet6.init([{prop: "Family", name: "Family", pkg: "", typ: $Uint16, tag: ""}, {prop: "Port", name: "Port", pkg: "", typ: $Uint16, tag: ""}, {prop: "Flowinfo", name: "Flowinfo", pkg: "", typ: $Uint32, tag: ""}, {prop: "Addr", name: "Addr", pkg: "", typ: arrayType$5, tag: ""}, {prop: "Scope_id", name: "Scope_id", pkg: "", typ: $Uint32, tag: ""}]); RawSockaddr.init([{prop: "Family", name: "Family", pkg: "", typ: $Uint16, tag: ""}, {prop: "Data", name: "Data", pkg: "", typ: arrayType$6, tag: ""}]); RawSockaddrAny.init([{prop: "Addr", name: "Addr", pkg: "", typ: RawSockaddr, tag: ""}, {prop: "Pad", name: "Pad", pkg: "", typ: arrayType$7, tag: ""}]); Sockaddr.init([{prop: "sockaddr", name: "sockaddr", pkg: "syscall", typ: $funcType([], [$UnsafePointer, $Int32, $error], false)}]); SockaddrInet4.init([{prop: "Port", name: "Port", pkg: "", typ: $Int, tag: ""}, {prop: "Addr", name: "Addr", pkg: "", typ: arrayType$3, tag: ""}, {prop: "raw", name: "raw", pkg: "syscall", typ: RawSockaddrInet4, tag: ""}]); SockaddrInet6.init([{prop: "Port", name: "Port", pkg: "", typ: $Int, tag: ""}, {prop: "ZoneId", name: "ZoneId", pkg: "", typ: $Uint32, tag: ""}, {prop: "Addr", name: "Addr", pkg: "", typ: arrayType$5, tag: ""}, {prop: "raw", name: "raw", pkg: "syscall", typ: RawSockaddrInet6, tag: ""}]); SockaddrUnix.init([{prop: "Name", name: "Name", pkg: "", typ: $String, tag: ""}]); Linger.init([{prop: "Onoff", name: "Onoff", pkg: "", typ: $Int32, tag: ""}, {prop: "Linger", name: "Linger", pkg: "", typ: $Int32, tag: ""}]); sysLinger.init([{prop: "Onoff", name: "Onoff", pkg: "", typ: $Uint16, tag: ""}, {prop: "Linger", name: "Linger", pkg: "", typ: $Uint16, tag: ""}]); SecurityAttributes.init([{prop: "Length", name: "Length", pkg: "", typ: $Uint32, tag: ""}, {prop: "SecurityDescriptor", name: "SecurityDescriptor", pkg: "", typ: $Uintptr, tag: ""}, {prop: "InheritHandle", name: "InheritHandle", pkg: "", typ: $Uint32, tag: ""}]); Overlapped.init([{prop: "Internal", name: "Internal", pkg: "", typ: $Uintptr, tag: ""}, {prop: "InternalHigh", name: "InternalHigh", pkg: "", typ: $Uintptr, tag: ""}, {prop: "Offset", name: "Offset", pkg: "", typ: $Uint32, tag: ""}, {prop: "OffsetHigh", name: "OffsetHigh", pkg: "", typ: $Uint32, tag: ""}, {prop: "HEvent", name: "HEvent", pkg: "", typ: Handle, tag: ""}]); Filetime.init([{prop: "LowDateTime", name: "LowDateTime", pkg: "", typ: $Uint32, tag: ""}, {prop: "HighDateTime", name: "HighDateTime", pkg: "", typ: $Uint32, tag: ""}]); Win32finddata.init([{prop: "FileAttributes", name: "FileAttributes", pkg: "", typ: $Uint32, tag: ""}, {prop: "CreationTime", name: "CreationTime", pkg: "", typ: Filetime, tag: ""}, {prop: "LastAccessTime", name: "LastAccessTime", pkg: "", typ: Filetime, tag: ""}, {prop: "LastWriteTime", name: "LastWriteTime", pkg: "", typ: Filetime, tag: ""}, {prop: "FileSizeHigh", name: "FileSizeHigh", pkg: "", typ: $Uint32, tag: ""}, {prop: "FileSizeLow", name: "FileSizeLow", pkg: "", typ: $Uint32, tag: ""}, {prop: "Reserved0", name: "Reserved0", pkg: "", typ: $Uint32, tag: ""}, {prop: "Reserved1", name: "Reserved1", pkg: "", typ: $Uint32, tag: ""}, {prop: "FileName", name: "FileName", pkg: "", typ: arrayType$8, tag: ""}, {prop: "AlternateFileName", name: "AlternateFileName", pkg: "", typ: arrayType$9, tag: ""}]); win32finddata1.init([{prop: "FileAttributes", name: "FileAttributes", pkg: "", typ: $Uint32, tag: ""}, {prop: "CreationTime", name: "CreationTime", pkg: "", typ: Filetime, tag: ""}, {prop: "LastAccessTime", name: "LastAccessTime", pkg: "", typ: Filetime, tag: ""}, {prop: "LastWriteTime", name: "LastWriteTime", pkg: "", typ: Filetime, tag: ""}, {prop: "FileSizeHigh", name: "FileSizeHigh", pkg: "", typ: $Uint32, tag: ""}, {prop: "FileSizeLow", name: "FileSizeLow", pkg: "", typ: $Uint32, tag: ""}, {prop: "Reserved0", name: "Reserved0", pkg: "", typ: $Uint32, tag: ""}, {prop: "Reserved1", name: "Reserved1", pkg: "", typ: $Uint32, tag: ""}, {prop: "FileName", name: "FileName", pkg: "", typ: arrayType$10, tag: ""}, {prop: "AlternateFileName", name: "AlternateFileName", pkg: "", typ: arrayType$11, tag: ""}]); ByHandleFileInformation.init([{prop: "FileAttributes", name: "FileAttributes", pkg: "", typ: $Uint32, tag: ""}, {prop: "CreationTime", name: "CreationTime", pkg: "", typ: Filetime, tag: ""}, {prop: "LastAccessTime", name: "LastAccessTime", pkg: "", typ: Filetime, tag: ""}, {prop: "LastWriteTime", name: "LastWriteTime", pkg: "", typ: Filetime, tag: ""}, {prop: "VolumeSerialNumber", name: "VolumeSerialNumber", pkg: "", typ: $Uint32, tag: ""}, {prop: "FileSizeHigh", name: "FileSizeHigh", pkg: "", typ: $Uint32, tag: ""}, {prop: "FileSizeLow", name: "FileSizeLow", pkg: "", typ: $Uint32, tag: ""}, {prop: "NumberOfLinks", name: "NumberOfLinks", pkg: "", typ: $Uint32, tag: ""}, {prop: "FileIndexHigh", name: "FileIndexHigh", pkg: "", typ: $Uint32, tag: ""}, {prop: "FileIndexLow", name: "FileIndexLow", pkg: "", typ: $Uint32, tag: ""}]); Win32FileAttributeData.init([{prop: "FileAttributes", name: "FileAttributes", pkg: "", typ: $Uint32, tag: ""}, {prop: "CreationTime", name: "CreationTime", pkg: "", typ: Filetime, tag: ""}, {prop: "LastAccessTime", name: "LastAccessTime", pkg: "", typ: Filetime, tag: ""}, {prop: "LastWriteTime", name: "LastWriteTime", pkg: "", typ: Filetime, tag: ""}, {prop: "FileSizeHigh", name: "FileSizeHigh", pkg: "", typ: $Uint32, tag: ""}, {prop: "FileSizeLow", name: "FileSizeLow", pkg: "", typ: $Uint32, tag: ""}]); WSABuf.init([{prop: "Len", name: "Len", pkg: "", typ: $Uint32, tag: ""}, {prop: "Buf", name: "Buf", pkg: "", typ: ptrType$15, tag: ""}]); TransmitFileBuffers.init([{prop: "Head", name: "Head", pkg: "", typ: $Uintptr, tag: ""}, {prop: "HeadLength", name: "HeadLength", pkg: "", typ: $Uint32, tag: ""}, {prop: "Tail", name: "Tail", pkg: "", typ: $Uintptr, tag: ""}, {prop: "TailLength", name: "TailLength", pkg: "", typ: $Uint32, tag: ""}]); SockaddrGen.init($Uint8, 24); InterfaceInfo.init([{prop: "Flags", name: "Flags", pkg: "", typ: $Uint32, tag: ""}, {prop: "Address", name: "Address", pkg: "", typ: SockaddrGen, tag: ""}, {prop: "BroadcastAddress", name: "BroadcastAddress", pkg: "", typ: SockaddrGen, tag: ""}, {prop: "Netmask", name: "Netmask", pkg: "", typ: SockaddrGen, tag: ""}]); IpAddressString.init([{prop: "String", name: "String", pkg: "", typ: arrayType$5, tag: ""}]); IpMaskString.init([{prop: "String", name: "String", pkg: "", typ: arrayType$5, tag: ""}]); IpAddrString.init([{prop: "Next", name: "Next", pkg: "", typ: ptrType$37, tag: ""}, {prop: "IpAddress", name: "IpAddress", pkg: "", typ: IpAddressString, tag: ""}, {prop: "IpMask", name: "IpMask", pkg: "", typ: IpMaskString, tag: ""}, {prop: "Context", name: "Context", pkg: "", typ: $Uint32, tag: ""}]); IpAdapterInfo.init([{prop: "Next", name: "Next", pkg: "", typ: ptrType$38, tag: ""}, {prop: "ComboIndex", name: "ComboIndex", pkg: "", typ: $Uint32, tag: ""}, {prop: "AdapterName", name: "AdapterName", pkg: "", typ: arrayType$15, tag: ""}, {prop: "Description", name: "Description", pkg: "", typ: arrayType$16, tag: ""}, {prop: "AddressLength", name: "AddressLength", pkg: "", typ: $Uint32, tag: ""}, {prop: "Address", name: "Address", pkg: "", typ: arrayType$4, tag: ""}, {prop: "Index", name: "Index", pkg: "", typ: $Uint32, tag: ""}, {prop: "Type", name: "Type", pkg: "", typ: $Uint32, tag: ""}, {prop: "DhcpEnabled", name: "DhcpEnabled", pkg: "", typ: $Uint32, tag: ""}, {prop: "CurrentIpAddress", name: "CurrentIpAddress", pkg: "", typ: ptrType$37, tag: ""}, {prop: "IpAddressList", name: "IpAddressList", pkg: "", typ: IpAddrString, tag: ""}, {prop: "GatewayList", name: "GatewayList", pkg: "", typ: IpAddrString, tag: ""}, {prop: "DhcpServer", name: "DhcpServer", pkg: "", typ: IpAddrString, tag: ""}, {prop: "HaveWins", name: "HaveWins", pkg: "", typ: $Bool, tag: ""}, {prop: "PrimaryWinsServer", name: "PrimaryWinsServer", pkg: "", typ: IpAddrString, tag: ""}, {prop: "SecondaryWinsServer", name: "SecondaryWinsServer", pkg: "", typ: IpAddrString, tag: ""}, {prop: "LeaseObtained", name: "LeaseObtained", pkg: "", typ: $Int64, tag: ""}, {prop: "LeaseExpires", name: "LeaseExpires", pkg: "", typ: $Int64, tag: ""}]); MibIfRow.init([{prop: "Name", name: "Name", pkg: "", typ: arrayType$17, tag: ""}, {prop: "Index", name: "Index", pkg: "", typ: $Uint32, tag: ""}, {prop: "Type", name: "Type", pkg: "", typ: $Uint32, tag: ""}, {prop: "Mtu", name: "Mtu", pkg: "", typ: $Uint32, tag: ""}, {prop: "Speed", name: "Speed", pkg: "", typ: $Uint32, tag: ""}, {prop: "PhysAddrLen", name: "PhysAddrLen", pkg: "", typ: $Uint32, tag: ""}, {prop: "PhysAddr", name: "PhysAddr", pkg: "", typ: arrayType$4, tag: ""}, {prop: "AdminStatus", name: "AdminStatus", pkg: "", typ: $Uint32, tag: ""}, {prop: "OperStatus", name: "OperStatus", pkg: "", typ: $Uint32, tag: ""}, {prop: "LastChange", name: "LastChange", pkg: "", typ: $Uint32, tag: ""}, {prop: "InOctets", name: "InOctets", pkg: "", typ: $Uint32, tag: ""}, {prop: "InUcastPkts", name: "InUcastPkts", pkg: "", typ: $Uint32, tag: ""}, {prop: "InNUcastPkts", name: "InNUcastPkts", pkg: "", typ: $Uint32, tag: ""}, {prop: "InDiscards", name: "InDiscards", pkg: "", typ: $Uint32, tag: ""}, {prop: "InErrors", name: "InErrors", pkg: "", typ: $Uint32, tag: ""}, {prop: "InUnknownProtos", name: "InUnknownProtos", pkg: "", typ: $Uint32, tag: ""}, {prop: "OutOctets", name: "OutOctets", pkg: "", typ: $Uint32, tag: ""}, {prop: "OutUcastPkts", name: "OutUcastPkts", pkg: "", typ: $Uint32, tag: ""}, {prop: "OutNUcastPkts", name: "OutNUcastPkts", pkg: "", typ: $Uint32, tag: ""}, {prop: "OutDiscards", name: "OutDiscards", pkg: "", typ: $Uint32, tag: ""}, {prop: "OutErrors", name: "OutErrors", pkg: "", typ: $Uint32, tag: ""}, {prop: "OutQLen", name: "OutQLen", pkg: "", typ: $Uint32, tag: ""}, {prop: "DescrLen", name: "DescrLen", pkg: "", typ: $Uint32, tag: ""}, {prop: "Descr", name: "Descr", pkg: "", typ: arrayType$18, tag: ""}]); CertContext.init([{prop: "EncodingType", name: "EncodingType", pkg: "", typ: $Uint32, tag: ""}, {prop: "EncodedCert", name: "EncodedCert", pkg: "", typ: ptrType$15, tag: ""}, {prop: "Length", name: "Length", pkg: "", typ: $Uint32, tag: ""}, {prop: "CertInfo", name: "CertInfo", pkg: "", typ: $Uintptr, tag: ""}, {prop: "Store", name: "Store", pkg: "", typ: Handle, tag: ""}]); CertChainContext.init([{prop: "Size", name: "Size", pkg: "", typ: $Uint32, tag: ""}, {prop: "TrustStatus", name: "TrustStatus", pkg: "", typ: CertTrustStatus, tag: ""}, {prop: "ChainCount", name: "ChainCount", pkg: "", typ: $Uint32, tag: ""}, {prop: "Chains", name: "Chains", pkg: "", typ: ptrType$40, tag: ""}, {prop: "LowerQualityChainCount", name: "LowerQualityChainCount", pkg: "", typ: $Uint32, tag: ""}, {prop: "LowerQualityChains", name: "LowerQualityChains", pkg: "", typ: ptrType$42, tag: ""}, {prop: "HasRevocationFreshnessTime", name: "HasRevocationFreshnessTime", pkg: "", typ: $Uint32, tag: ""}, {prop: "RevocationFreshnessTime", name: "RevocationFreshnessTime", pkg: "", typ: $Uint32, tag: ""}]); CertSimpleChain.init([{prop: "Size", name: "Size", pkg: "", typ: $Uint32, tag: ""}, {prop: "TrustStatus", name: "TrustStatus", pkg: "", typ: CertTrustStatus, tag: ""}, {prop: "NumElements", name: "NumElements", pkg: "", typ: $Uint32, tag: ""}, {prop: "Elements", name: "Elements", pkg: "", typ: ptrType$44, tag: ""}, {prop: "TrustListInfo", name: "TrustListInfo", pkg: "", typ: $Uintptr, tag: ""}, {prop: "HasRevocationFreshnessTime", name: "HasRevocationFreshnessTime", pkg: "", typ: $Uint32, tag: ""}, {prop: "RevocationFreshnessTime", name: "RevocationFreshnessTime", pkg: "", typ: $Uint32, tag: ""}]); CertChainElement.init([{prop: "Size", name: "Size", pkg: "", typ: $Uint32, tag: ""}, {prop: "CertContext", name: "CertContext", pkg: "", typ: ptrType$23, tag: ""}, {prop: "TrustStatus", name: "TrustStatus", pkg: "", typ: CertTrustStatus, tag: ""}, {prop: "RevocationInfo", name: "RevocationInfo", pkg: "", typ: ptrType$45, tag: ""}, {prop: "IssuanceUsage", name: "IssuanceUsage", pkg: "", typ: ptrType$46, tag: ""}, {prop: "ApplicationUsage", name: "ApplicationUsage", pkg: "", typ: ptrType$46, tag: ""}, {prop: "ExtendedErrorInfo", name: "ExtendedErrorInfo", pkg: "", typ: ptrType, tag: ""}]); CertRevocationInfo.init([{prop: "Size", name: "Size", pkg: "", typ: $Uint32, tag: ""}, {prop: "RevocationResult", name: "RevocationResult", pkg: "", typ: $Uint32, tag: ""}, {prop: "RevocationOid", name: "RevocationOid", pkg: "", typ: ptrType$15, tag: ""}, {prop: "OidSpecificInfo", name: "OidSpecificInfo", pkg: "", typ: $Uintptr, tag: ""}, {prop: "HasFreshnessTime", name: "HasFreshnessTime", pkg: "", typ: $Uint32, tag: ""}, {prop: "FreshnessTime", name: "FreshnessTime", pkg: "", typ: $Uint32, tag: ""}, {prop: "CrlInfo", name: "CrlInfo", pkg: "", typ: $Uintptr, tag: ""}]); CertTrustStatus.init([{prop: "ErrorStatus", name: "ErrorStatus", pkg: "", typ: $Uint32, tag: ""}, {prop: "InfoStatus", name: "InfoStatus", pkg: "", typ: $Uint32, tag: ""}]); CertUsageMatch.init([{prop: "Type", name: "Type", pkg: "", typ: $Uint32, tag: ""}, {prop: "Usage", name: "Usage", pkg: "", typ: CertEnhKeyUsage, tag: ""}]); CertEnhKeyUsage.init([{prop: "Length", name: "Length", pkg: "", typ: $Uint32, tag: ""}, {prop: "UsageIdentifiers", name: "UsageIdentifiers", pkg: "", typ: ptrType$35, tag: ""}]); CertChainPara.init([{prop: "Size", name: "Size", pkg: "", typ: $Uint32, tag: ""}, {prop: "RequestedUsage", name: "RequestedUsage", pkg: "", typ: CertUsageMatch, tag: ""}, {prop: "RequstedIssuancePolicy", name: "RequstedIssuancePolicy", pkg: "", typ: CertUsageMatch, tag: ""}, {prop: "URLRetrievalTimeout", name: "URLRetrievalTimeout", pkg: "", typ: $Uint32, tag: ""}, {prop: "CheckRevocationFreshnessTime", name: "CheckRevocationFreshnessTime", pkg: "", typ: $Uint32, tag: ""}, {prop: "RevocationFreshnessTime", name: "RevocationFreshnessTime", pkg: "", typ: $Uint32, tag: ""}, {prop: "CacheResync", name: "CacheResync", pkg: "", typ: ptrType$20, tag: ""}]); CertChainPolicyPara.init([{prop: "Size", name: "Size", pkg: "", typ: $Uint32, tag: ""}, {prop: "Flags", name: "Flags", pkg: "", typ: $Uint32, tag: ""}, {prop: "ExtraPolicyPara", name: "ExtraPolicyPara", pkg: "", typ: $Uintptr, tag: ""}]); SSLExtraCertChainPolicyPara.init([{prop: "Size", name: "Size", pkg: "", typ: $Uint32, tag: ""}, {prop: "AuthType", name: "AuthType", pkg: "", typ: $Uint32, tag: ""}, {prop: "Checks", name: "Checks", pkg: "", typ: $Uint32, tag: ""}, {prop: "ServerName", name: "ServerName", pkg: "", typ: ptrType, tag: ""}]); CertChainPolicyStatus.init([{prop: "Size", name: "Size", pkg: "", typ: $Uint32, tag: ""}, {prop: "Error", name: "Error", pkg: "", typ: $Uint32, tag: ""}, {prop: "ChainIndex", name: "ChainIndex", pkg: "", typ: $Uint32, tag: ""}, {prop: "ElementIndex", name: "ElementIndex", pkg: "", typ: $Uint32, tag: ""}, {prop: "ExtraPolicyStatus", name: "ExtraPolicyStatus", pkg: "", typ: $Uintptr, tag: ""}]); TCPKeepalive.init([{prop: "OnOff", name: "OnOff", pkg: "", typ: $Uint32, tag: ""}, {prop: "Time", name: "Time", pkg: "", typ: $Uint32, tag: ""}, {prop: "Interval", name: "Interval", pkg: "", typ: $Uint32, tag: ""}]); reparseDataBuffer.init([{prop: "ReparseTag", name: "ReparseTag", pkg: "", typ: $Uint32, tag: ""}, {prop: "ReparseDataLength", name: "ReparseDataLength", pkg: "", typ: $Uint16, tag: ""}, {prop: "Reserved", name: "Reserved", pkg: "", typ: $Uint16, tag: ""}, {prop: "SubstituteNameOffset", name: "SubstituteNameOffset", pkg: "", typ: $Uint16, tag: ""}, {prop: "SubstituteNameLength", name: "SubstituteNameLength", pkg: "", typ: $Uint16, tag: ""}, {prop: "PrintNameOffset", name: "PrintNameOffset", pkg: "", typ: $Uint16, tag: ""}, {prop: "PrintNameLength", name: "PrintNameLength", pkg: "", typ: $Uint16, tag: ""}, {prop: "Flags", name: "Flags", pkg: "", typ: $Uint32, tag: ""}, {prop: "PathBuffer", name: "PathBuffer", pkg: "", typ: arrayType$20, 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 = js.$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 = atomic.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = utf16.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } lineBuffer = sliceType.nil; $pkg.ForkLock = new sync.RWMutex.ptr(); $pkg.SocketDisableIPv6 = false; 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"]); modkernel32 = NewLazyDLL("kernel32.dll"); modadvapi32 = NewLazyDLL("advapi32.dll"); modshell32 = NewLazyDLL("shell32.dll"); modmswsock = NewLazyDLL("mswsock.dll"); modcrypt32 = NewLazyDLL("crypt32.dll"); modws2_32 = NewLazyDLL("ws2_32.dll"); moddnsapi = NewLazyDLL("dnsapi.dll"); modiphlpapi = NewLazyDLL("iphlpapi.dll"); modsecur32 = NewLazyDLL("secur32.dll"); modnetapi32 = NewLazyDLL("netapi32.dll"); moduserenv = NewLazyDLL("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")); init(); /* */ } 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, ptrType, funcType, ptrType$3; Mutex = $pkg.Mutex = $newType(0, $kindStruct, "nosync.Mutex", "Mutex", "github.com/gopherjs/gopherjs/nosync", function(locked_) { this.$val = this; if (arguments.length === 0) { this.locked = false; return; } this.locked = locked_; }); Once = $pkg.Once = $newType(0, $kindStruct, "nosync.Once", "Once", "github.com/gopherjs/gopherjs/nosync", function(doing_, done_) { this.$val = this; if (arguments.length === 0) { this.doing = false; this.done = false; return; } this.doing = doing_; this.done = done_; }); ptrType = $ptrType(Mutex); funcType = $funcType([], [], false); ptrType$3 = $ptrType(Once); 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) { 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; case -1: } 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); }; 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)}]; Mutex.init([{prop: "locked", name: "locked", pkg: "github.com/gopherjs/gopherjs/nosync", typ: $Bool, tag: ""}]); Once.init([{prop: "doing", name: "doing", pkg: "github.com/gopherjs/gopherjs/nosync", typ: $Bool, tag: ""}, {prop: "done", name: "done", pkg: "github.com/gopherjs/gopherjs/nosync", 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: /* */ } 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, arrayType, ptrType, sliceType, arrayType$1, ptrType$1, ptrType$2, sliceType$1, ptrType$3, ptrType$4, arrayType$2, sliceType$2, sliceType$3, ptrType$5, ptrType$6, ptrType$7, ptrType$8, IndexByte, NewReader, NewReplacer, makeGenericReplacer, getStringWriter, makeSingleStringReplacer, makeStringFinder, longestCommonSuffix, max, explode, hashStr, hashStrRev, Count, Contains, Index, LastIndex, IndexRune, IndexAny, genSplit, SplitN, Split, Join, HasPrefix, HasSuffix, Map, ToLower, TrimLeftFunc, TrimRightFunc, TrimFunc, IndexFunc, indexFunc, lastIndexFunc, makeCutsetFunc, TrimLeft, TrimRight, TrimSpace, TrimPrefix, 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", "Reader", "strings", 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", "Replacer", "strings", function(r_) { this.$val = this; if (arguments.length === 0) { this.r = $ifaceNil; return; } this.r = r_; }); replacer = $pkg.replacer = $newType(8, $kindInterface, "strings.replacer", "replacer", "strings", null); trieNode = $pkg.trieNode = $newType(0, $kindStruct, "strings.trieNode", "trieNode", "strings", 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", "genericReplacer", "strings", function(root_, tableSize_, mapping_) { this.$val = this; if (arguments.length === 0) { this.root = new trieNode.ptr(); 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", "appendSliceWriter", "strings", null); stringWriterIface = $pkg.stringWriterIface = $newType(8, $kindInterface, "strings.stringWriterIface", "stringWriterIface", "strings", null); stringWriter = $pkg.stringWriter = $newType(0, $kindStruct, "strings.stringWriter", "stringWriter", "strings", function(w_) { this.$val = this; if (arguments.length === 0) { this.w = $ifaceNil; return; } this.w = w_; }); singleStringReplacer = $pkg.singleStringReplacer = $newType(0, $kindStruct, "strings.singleStringReplacer", "singleStringReplacer", "strings", 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", "byteReplacer", "strings", null); byteStringReplacer = $pkg.byteStringReplacer = $newType(4092, $kindArray, "strings.byteStringReplacer", "byteStringReplacer", "strings", null); stringFinder = $pkg.stringFinder = $newType(0, $kindStruct, "strings.stringFinder", "stringFinder", "strings", 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_; }); 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(Reader); ptrType$6 = $ptrType(Replacer); ptrType$7 = $ptrType(genericReplacer); ptrType$8 = $ptrType(singleStringReplacer); IndexByte = function(s, c) { var $ptr, c, s; return $parseInt(s.indexOf($global.String.fromCharCode(c))) >> 0; }; $pkg.IndexByte = IndexByte; 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.Read = function(b) { var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, b, err, n, r, x, x$1, x$2, x$3; n = 0; err = $ifaceNil; r = this; if (b.$length === 0) { _tmp = 0; _tmp$1 = $ifaceNil; n = _tmp; err = _tmp$1; return [n, err]; } 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$2 = 0; _tmp$3 = io.EOF; n = _tmp$2; err = _tmp$3; return [n, err]; } r.prevRune = -1; n = $copyString(b, r.s.substring($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, r.s.substring($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, _tmp, _tmp$1, b, err, r, x, x$1, x$2, x$3; b = 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 = 0; _tmp$1 = io.EOF; b = _tmp; err = _tmp$1; return [b, err]; } 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, err]; }; 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(r.s.substring($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, _ref, abs, offset, r, whence, x, x$1; r = this; r.prevRune = -1; abs = new $Int64(0, 0); _ref = whence; if (_ref === 0) { abs = offset; } else if (_ref === 1) { abs = (x = r.i, new $Int64(x.$high + offset.$high, x.$low + offset.$low)); } else if (_ref === 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; return [n, err]; } s = r.s.substring($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; } return [n, err]; /* */ $s = -1; case -1: } 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); }; 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") : oldnew.$array[oldnew.$offset + 0]).length > 1) { return new Replacer.ptr(makeSingleStringReplacer((0 >= oldnew.$length ? $throwRuntimeError("index out of range") : oldnew.$array[oldnew.$offset + 0]), (1 >= oldnew.$length ? $throwRuntimeError("index out of range") : 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") : 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") : 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") : 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") : 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") : oldnew.$array[oldnew.$offset + x$1])).charCodeAt(0); ((o < 0 || o >= r.length) ? $throwRuntimeError("index out of range") : 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") : 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") : oldnew.$array[oldnew.$offset + x$2])); ((o$1 < 0 || o$1 >= r$1.length) ? $throwRuntimeError("index out of range") : 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; } return _r; /* */ $s = -1; case -1: } 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]; return [n, err]; /* */ $s = -1; case -1: } 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(key.substring(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, t.prefix.substring(1), t.next, sliceType$1.nil); } keyNode = new trieNode.ptr(); 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") : x$2[x$3])), ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : 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") : x$6[x$7])), ((x$5 < 0 || x$5 >= x$4.$length) ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + x$5] = keyNode)); t.prefix = ""; t.next = ptrType$2.nil; keyNode.add(key.substring(1), val, priority, r); } else { next = new trieNode.ptr("", 0, t.prefix.substring(n), t.next, sliceType$1.nil); t.prefix = t.prefix.substring(0, n); t.next = next; next.add(key.substring(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") : x$8[x$9])); if ((x$10 = t.table, ((m < 0 || m >= x$10.$length) ? $throwRuntimeError("index out of range") : 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") : x$11.$array[x$11.$offset + m] = new trieNode.ptr())); } (x$12 = t.table, ((m < 0 || m >= x$12.$length) ? $throwRuntimeError("index out of range") : x$12.$array[x$12.$offset + m])).add(key.substring(1), val, priority, r); } else { t.prefix = key; t.next = new trieNode.ptr(); 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") : 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") : x$2.$array[x$2.$offset + index])); s = s.substring(1); n = n + (1) >> 0; } else if (!(node.prefix === "") && HasPrefix(s, node.prefix)) { n = n + (node.prefix.length) >> 0; s = s.substring(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(); i = 0; while (true) { if (!(i < oldnew.$length)) { break; } key = ((i < 0 || i >= oldnew.$length) ? $throwRuntimeError("index out of range") : 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") : 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") : _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") : _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") : 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") : 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") : oldnew.$array[oldnew.$offset + i$2]), (x$4 = i$2 + 1 >> 0, ((x$4 < 0 || x$4 >= oldnew.$length) ? $throwRuntimeError("index out of range") : 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(), new appendSliceWriter($stringToBytes(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 = $clone(this, stringWriter); _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; } return _r; /* */ $s = -1; case -1: } 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; return $bytesToString(buf[0]); /* */ $s = -1; case -1: } 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") : x[x$1])) >> 0); if ((index === r.tableSize) || (x$2 = r.root.table, ((index < 0 || index >= x$2.$length) ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + index])) === ptrType$2.nil) { i = i + (1) >> 0; /* continue; */ $s = 1; continue; } /* } */ case 4: _tuple = r.lookup(s.substring(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(s.substring(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))) { 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))) { 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(s.substring(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: return [n, err]; /* */ $s = -1; case -1: } 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(s.substring(i)); if (match === -1) { break; } matched = true; buf = $appendSlice(buf, new sliceType($stringToBytes(s.substring(i, (i + match >> 0))))); buf = $appendSlice(buf, new sliceType($stringToBytes(r.value))); i = i + ((match + r.finder.pattern.length >> 0)) >> 0; } if (!matched) { return s; } buf = $appendSlice(buf, new sliceType($stringToBytes(s.substring(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(s.substring(i)); if (match === -1) { /* break; */ $s = 2; continue; } _r = sw.WriteString(s.substring(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))) { 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))) { return [n, err]; } i = i + ((match + r.finder.pattern.length >> 0)) >> 0; /* } */ $s = 1; continue; case 2: _r$2 = sw.WriteString(s.substring(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; return [n, err]; /* */ $s = -1; case -1: } 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") : r[b])) === b))) { if (buf === sliceType.nil) { buf = new sliceType($stringToBytes(s)); } ((i < 0 || i >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + i] = (r.nilCheck, ((b < 0 || b >= r.length) ? $throwRuntimeError("index out of range") : 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 = s.substring(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") : _ref.$array[_ref.$offset + _i]); ((i < 0 || i >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + i] = (r.nilCheck, ((b < 0 || b >= r.length) ? $throwRuntimeError("index out of range") : 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; return [n, err]; } /* } */ $s = 1; continue; case 2: _tmp$2 = n; _tmp$3 = $ifaceNil; n = _tmp$2; err = _tmp$3; return [n, err]; /* */ $s = -1; case -1: } 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") : r[b])) === sliceType.nil)) { anyChanges = true; newSize = newSize + (((r.nilCheck, ((b < 0 || b >= r.length) ? $throwRuntimeError("index out of range") : 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") : r[b$1])) === sliceType.nil)) { n = $copySlice(bi, (r.nilCheck, ((b$1 < 0 || b$1 >= r.length) ? $throwRuntimeError("index out of range") : r[b$1]))); bi = $subslice(bi, n); } else { (0 >= bi.$length ? $throwRuntimeError("index out of range") : 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") : r[b])) === sliceType.nil) { $s = 3; continue; } /* */ $s = 4; continue; /* if ((r.nilCheck, ((b < 0 || b >= r.length) ? $throwRuntimeError("index out of range") : 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(s.substring(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; 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") : 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; 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(s.substring(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: return [n, err]; /* */ $s = -1; case -1: } 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") : 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") : 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, pattern.substring((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") : 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, pattern.substring(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") : 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") : x[x$1])), (x$2 = f.goodSuffixSkip, ((j < 0 || j >= x$2.$length) ? $throwRuntimeError("index out of range") : 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, _tmp, _tmp$1, _tuple, a, ch, cur, i, l, n, s, size; if (n === 0) { return sliceType$3.nil; } l = utf8.RuneCountInString(s); if (n <= 0 || n > l) { n = l; } a = $makeSlice(sliceType$3, n); size = 0; ch = 0; _tmp = 0; _tmp$1 = 0; i = _tmp; cur = _tmp$1; while (true) { if (!((i + 1 >> 0) < n)) { break; } _tuple = utf8.DecodeRuneInString(s.substring(cur)); ch = _tuple[0]; size = _tuple[1]; if (ch === 65533) { ((i < 0 || i >= a.$length) ? $throwRuntimeError("index out of range") : a.$array[a.$offset + i] = "\xEF\xBF\xBD"); } else { ((i < 0 || i >= a.$length) ? $throwRuntimeError("index out of range") : a.$array[a.$offset + i] = s.substring(cur, (cur + size >> 0))); } cur = cur + (size) >> 0; i = i + (1) >> 0; } if (cur < s.length) { ((i < 0 || i >= a.$length) ? $throwRuntimeError("index out of range") : a.$array[a.$offset + i] = s.substring(cur)); } return a; }; hashStr = function(sep) { var $ptr, _tmp, _tmp$1, hash, i, i$1, pow, sep, sq, x, x$1; hash = 0; i = 0; while (true) { if (!(i < sep.length)) { break; } hash = ((((hash >>> 16 << 16) * 16777619 >>> 0) + (hash << 16 >>> 16) * 16777619) >>> 0) + (sep.charCodeAt(i) >>> 0) >>> 0; i = i + (1) >> 0; } _tmp = 1; _tmp$1 = 16777619; pow = _tmp; sq = _tmp$1; i$1 = sep.length; while (true) { if (!(i$1 > 0)) { break; } if (!(((i$1 & 1) === 0))) { pow = (x = sq, (((pow >>> 16 << 16) * x >>> 0) + (pow << 16 >>> 16) * x) >>> 0); } sq = (x$1 = sq, (((sq >>> 16 << 16) * x$1 >>> 0) + (sq << 16 >>> 16) * x$1) >>> 0); i$1 = (i$1 >> $min((1), 31)) >> 0; } return [hash, pow]; }; hashStrRev = function(sep) { var $ptr, _tmp, _tmp$1, hash, i, i$1, pow, sep, sq, x, x$1; hash = 0; i = sep.length - 1 >> 0; while (true) { if (!(i >= 0)) { break; } hash = ((((hash >>> 16 << 16) * 16777619 >>> 0) + (hash << 16 >>> 16) * 16777619) >>> 0) + (sep.charCodeAt(i) >>> 0) >>> 0; i = i - (1) >> 0; } _tmp = 1; _tmp$1 = 16777619; pow = _tmp; sq = _tmp$1; i$1 = sep.length; while (true) { if (!(i$1 > 0)) { break; } if (!(((i$1 & 1) === 0))) { pow = (x = sq, (((pow >>> 16 << 16) * x >>> 0) + (pow << 16 >>> 16) * x) >>> 0); } sq = (x$1 = sq, (((sq >>> 16 << 16) * x$1 >>> 0) + (sq << 16 >>> 16) * x$1) >>> 0); i$1 = (i$1 >> $min((1), 31)) >> 0; } return [hash, pow]; }; Count = function(s, sep) { var $ptr, _tuple, c, h, hashsep, i, i$1, i$2, lastmatch, n, pow, s, sep, x, x$1; n = 0; if (sep.length === 0) { return utf8.RuneCountInString(s) + 1 >> 0; } else if (sep.length === 1) { c = sep.charCodeAt(0); i = 0; while (true) { if (!(i < s.length)) { break; } if (s.charCodeAt(i) === c) { n = n + (1) >> 0; } i = i + (1) >> 0; } return n; } else if (sep.length > s.length) { return 0; } else if (sep.length === s.length) { if (sep === s) { return 1; } return 0; } _tuple = hashStr(sep); hashsep = _tuple[0]; pow = _tuple[1]; h = 0; i$1 = 0; while (true) { if (!(i$1 < sep.length)) { break; } h = ((((h >>> 16 << 16) * 16777619 >>> 0) + (h << 16 >>> 16) * 16777619) >>> 0) + (s.charCodeAt(i$1) >>> 0) >>> 0; i$1 = i$1 + (1) >> 0; } lastmatch = 0; if ((h === hashsep) && s.substring(0, sep.length) === sep) { n = n + (1) >> 0; lastmatch = sep.length; } i$2 = sep.length; while (true) { if (!(i$2 < s.length)) { break; } h = (x = 16777619, (((h >>> 16 << 16) * x >>> 0) + (h << 16 >>> 16) * x) >>> 0); h = h + ((s.charCodeAt(i$2) >>> 0)) >>> 0; h = h - ((x$1 = (s.charCodeAt((i$2 - sep.length >> 0)) >>> 0), (((pow >>> 16 << 16) * x$1 >>> 0) + (pow << 16 >>> 16) * x$1) >>> 0)) >>> 0; i$2 = i$2 + (1) >> 0; if ((h === hashsep) && lastmatch <= (i$2 - sep.length >> 0) && s.substring((i$2 - sep.length >> 0), i$2) === sep) { n = n + (1) >> 0; lastmatch = i$2; } } return n; }; $pkg.Count = Count; Contains = function(s, substr) { var $ptr, s, substr; return Index(s, substr) >= 0; }; $pkg.Contains = Contains; Index = function(s, sep) { var $ptr, _tuple, h, hashsep, i, i$1, n, pow, s, sep, x, x$1; n = sep.length; if (n === 0) { return 0; } else if (n === 1) { return IndexByte(s, sep.charCodeAt(0)); } else if (n === s.length) { if (sep === s) { return 0; } return -1; } else if (n > s.length) { return -1; } _tuple = hashStr(sep); hashsep = _tuple[0]; pow = _tuple[1]; h = 0; i = 0; while (true) { if (!(i < n)) { break; } h = ((((h >>> 16 << 16) * 16777619 >>> 0) + (h << 16 >>> 16) * 16777619) >>> 0) + (s.charCodeAt(i) >>> 0) >>> 0; i = i + (1) >> 0; } if ((h === hashsep) && s.substring(0, n) === sep) { return 0; } i$1 = n; while (true) { if (!(i$1 < s.length)) { break; } h = (x = 16777619, (((h >>> 16 << 16) * x >>> 0) + (h << 16 >>> 16) * x) >>> 0); h = h + ((s.charCodeAt(i$1) >>> 0)) >>> 0; h = h - ((x$1 = (s.charCodeAt((i$1 - n >> 0)) >>> 0), (((pow >>> 16 << 16) * x$1 >>> 0) + (pow << 16 >>> 16) * x$1) >>> 0)) >>> 0; i$1 = i$1 + (1) >> 0; if ((h === hashsep) && s.substring((i$1 - n >> 0), i$1) === sep) { return i$1 - n >> 0; } } return -1; }; $pkg.Index = Index; LastIndex = function(s, sep) { var $ptr, _tuple, c, h, hashsep, i, i$1, i$2, last, n, pow, s, sep, x, x$1; n = sep.length; if (n === 0) { return s.length; } else if (n === 1) { c = sep.charCodeAt(0); i = s.length - 1 >> 0; while (true) { if (!(i >= 0)) { break; } if (s.charCodeAt(i) === c) { return i; } i = i - (1) >> 0; } return -1; } else if (n === s.length) { if (sep === s) { return 0; } return -1; } else if (n > s.length) { return -1; } _tuple = hashStrRev(sep); hashsep = _tuple[0]; pow = _tuple[1]; last = s.length - n >> 0; h = 0; i$1 = s.length - 1 >> 0; while (true) { if (!(i$1 >= last)) { break; } h = ((((h >>> 16 << 16) * 16777619 >>> 0) + (h << 16 >>> 16) * 16777619) >>> 0) + (s.charCodeAt(i$1) >>> 0) >>> 0; i$1 = i$1 - (1) >> 0; } if ((h === hashsep) && s.substring(last) === sep) { return last; } i$2 = last - 1 >> 0; while (true) { if (!(i$2 >= 0)) { break; } h = (x = 16777619, (((h >>> 16 << 16) * x >>> 0) + (h << 16 >>> 16) * x) >>> 0); h = h + ((s.charCodeAt(i$2) >>> 0)) >>> 0; h = h - ((x$1 = (s.charCodeAt((i$2 + n >> 0)) >>> 0), (((pow >>> 16 << 16) * x$1 >>> 0) + (pow << 16 >>> 16) * x$1) >>> 0)) >>> 0; if ((h === hashsep) && s.substring(i$2, (i$2 + n >> 0)) === sep) { return i$2; } i$2 = i$2 - (1) >> 0; } return -1; }; $pkg.LastIndex = LastIndex; IndexRune = function(s, r) { var $ptr, _i, _ref, _rune, c, i, r, s; if (r < 128) { return IndexByte(s, (r << 24 >>> 24)); } else { _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; }; $pkg.IndexRune = IndexRune; IndexAny = function(s, chars) { var $ptr, _i, _i$1, _ref, _ref$1, _rune, _rune$1, c, chars, i, m, s; if (chars.length > 0) { _ref = s; _i = 0; while (true) { if (!(_i < _ref.length)) { break; } _rune = $decodeRune(_ref, _i); i = _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; } _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) || s.substring(i, (i + sep.length >> 0)) === sep)) { ((na < 0 || na >= a.$length) ? $throwRuntimeError("index out of range") : a.$array[a.$offset + na] = s.substring(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") : a.$array[a.$offset + na] = s.substring(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, _i, _ref, a, b, bp, i, n, s, sep; if (a.$length === 0) { return ""; } if (a.$length === 1) { return (0 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 0]); } n = sep.length * ((a.$length - 1 >> 0)) >> 0; i = 0; while (true) { if (!(i < a.$length)) { break; } n = n + (((i < 0 || i >= a.$length) ? $throwRuntimeError("index out of range") : 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") : 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") : _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 && s.substring(0, prefix.length) === prefix; }; $pkg.HasPrefix = HasPrefix; HasSuffix = function(s, suffix) { var $ptr, s, suffix; return s.length >= suffix.length && s.substring((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, s.substring(0, i)); } if (r >= 0) { wid = 1; if (r >= 128) { wid = utf8.RuneLen(r); } if ((nbytes + wid >> 0) > maxbytes) { maxbytes = (maxbytes * 2 >> 0) + 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) { return s; } return $bytesToString($subslice(b, 0, nbytes)); /* */ $s = -1; case -1: } 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; } return _r; /* */ $s = -1; case -1: } 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) { return ""; } return s.substring(i); /* */ $s = -1; case -1: } 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(s.substring(i)); wid = _tuple[1]; i = i + (wid) >> 0; } else { i = i + (1) >> 0; } return s.substring(0, i); /* */ $s = -1; case -1: } 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; } return _r$1; /* */ $s = -1; case -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; } return _r; /* */ $s = -1; case -1: } 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(s.substring(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: return start; /* } */ case 4: start = start + (wid) >> 0; /* } */ $s = 1; continue; case 2: return -1; /* */ $s = -1; case -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(s.substring(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: return i; /* } */ case 4: /* } */ $s = 1; continue; case 2: return -1; /* */ $s = -1; case -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; }; makeCutsetFunc = function(cutset) { var $ptr, cutset; return (function(r) { var $ptr, r; return IndexRune(cutset, r) >= 0; }); }; 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 === "") { 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; } return _r; /* */ $s = -1; case -1: } 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 === "") { 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; } return _r; /* */ $s = -1; case -1: } 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; } return _r; /* */ $s = -1; case -1: } 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 s.substring(prefix.length); } return s; }; $pkg.TrimPrefix = TrimPrefix; 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 + (n * ((new$1.length - old.length >> 0)) >> 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(s.substring(start)); wid = _tuple[1]; j = j + (wid) >> 0; } } else { j = j + (Index(s.substring(start), old)) >> 0; } w = w + ($copyString($subslice(t, w), s.substring(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), s.substring(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 = s.substring(1); sr = _tmp$2; s = _tmp$3; } else { _tuple = utf8.DecodeRuneInString(s); r = _tuple[0]; size = _tuple[1]; _tmp$4 = r; _tmp$5 = s.substring(size); sr = _tmp$4; s = _tmp$5; } if (t.charCodeAt(0) < 128) { _tmp$6 = (t.charCodeAt(0) >> 0); _tmp$7 = t.substring(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 = t.substring(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$5.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], 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)}]; ptrType$6.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$7], [], false)}]; ptrType$7.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$8.methods = [{prop: "Replace", name: "Replace", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([io.Writer, $String], [$Int, $error], false)}]; 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)}]; Reader.init([{prop: "s", name: "s", pkg: "strings", typ: $String, tag: ""}, {prop: "i", name: "i", pkg: "strings", typ: $Int64, tag: ""}, {prop: "prevRune", name: "prevRune", pkg: "strings", typ: $Int, tag: ""}]); Replacer.init([{prop: "r", name: "r", pkg: "strings", 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([{prop: "value", name: "value", pkg: "strings", typ: $String, tag: ""}, {prop: "priority", name: "priority", pkg: "strings", typ: $Int, tag: ""}, {prop: "prefix", name: "prefix", pkg: "strings", typ: $String, tag: ""}, {prop: "next", name: "next", pkg: "strings", typ: ptrType$2, tag: ""}, {prop: "table", name: "table", pkg: "strings", typ: sliceType$1, tag: ""}]); genericReplacer.init([{prop: "root", name: "root", pkg: "strings", typ: trieNode, tag: ""}, {prop: "tableSize", name: "tableSize", pkg: "strings", typ: $Int, tag: ""}, {prop: "mapping", name: "mapping", pkg: "strings", typ: arrayType, tag: ""}]); appendSliceWriter.init($Uint8); stringWriterIface.init([{prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([$String], [$Int, $error], false)}]); stringWriter.init([{prop: "w", name: "w", pkg: "strings", typ: io.Writer, tag: ""}]); singleStringReplacer.init([{prop: "finder", name: "finder", pkg: "strings", typ: ptrType$4, tag: ""}, {prop: "value", name: "value", pkg: "strings", typ: $String, tag: ""}]); byteReplacer.init($Uint8, 256); byteStringReplacer.init(sliceType, 256); stringFinder.init([{prop: "pattern", name: "pattern", pkg: "strings", typ: $String, tag: ""}, {prop: "badCharSkip", name: "badCharSkip", pkg: "strings", typ: arrayType$2, tag: ""}, {prop: "goodSuffixSkip", name: "goodSuffixSkip", pkg: "strings", typ: sliceType$2, 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 = 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["time"] = (function() { var $pkg = {}, $init, errors, js, nosync, runtime, strings, syscall, runtimeTimer, ParseError, Timer, Time, Month, Weekday, Duration, Location, zone, zoneTrans, sliceType, sliceType$1, sliceType$2, ptrType, structType, chanType, funcType, arrayType$1, sliceType$3, arrayType$2, arrayType$3, ptrType$1, chanType$2, funcType$1, ptrType$6, ptrType$7, ptrType$8, ptrType$10, std0x, longDayNames, shortDayNames, shortMonthNames, longMonthNames, atoiError, errBad, errLeadingInt, unitMap, months, days, daysBefore, utcLoc, utcLoc_ptr, localLoc, localLoc_ptr, localOnce, zoneinfo, badData, _map, _key, _tuple, initLocal, runtimeNano, now, Sleep, startTimer, stopTimer, startsWithLowerCase, nextStdChunk, match, lookup, appendUint, atoi, formatNano, quote, isDigit, getnum, cutspace, skip, Parse, parse, parseTimeZone, parseGMT, parseNanoseconds, leadingInt, ParseDuration, when, AfterFunc, goFunc, absWeekday, absClock, fmtFrac, fmtInt, absDate, Now, Unix, isLeap, norm, Date, div, FixedZone; errors = $packages["errors"]; js = $packages["github.com/gopherjs/gopherjs/js"]; nosync = $packages["github.com/gopherjs/gopherjs/nosync"]; runtime = $packages["runtime"]; strings = $packages["strings"]; syscall = $packages["syscall"]; runtimeTimer = $pkg.runtimeTimer = $newType(0, $kindStruct, "time.runtimeTimer", "runtimeTimer", "time", 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", "ParseError", "time", 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", "Timer", "time", function(C_, r_) { this.$val = this; if (arguments.length === 0) { this.C = chanType$2.nil; this.r = new runtimeTimer.ptr(); return; } this.C = C_; this.r = r_; }); Time = $pkg.Time = $newType(0, $kindStruct, "time.Time", "Time", "time", 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", "Month", "time", null); Weekday = $pkg.Weekday = $newType(4, $kindInt, "time.Weekday", "Weekday", "time", null); Duration = $pkg.Duration = $newType(8, $kindInt64, "time.Duration", "Duration", "time", null); Location = $pkg.Location = $newType(0, $kindStruct, "time.Location", "Location", "time", function(name_, zone_, tx_, cacheStart_, cacheEnd_, cacheZone_) { this.$val = this; if (arguments.length === 0) { this.name = ""; this.zone = sliceType$1.nil; this.tx = sliceType$2.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", "zone", "time", 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", "zoneTrans", "time", 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($String); sliceType$1 = $sliceType(zone); sliceType$2 = $sliceType(zoneTrans); ptrType = $ptrType(zone); structType = $structType([]); chanType = $chanType(structType, false, false); funcType = $funcType([], [], false); arrayType$1 = $arrayType($Uint8, 32); sliceType$3 = $sliceType($Uint8); arrayType$2 = $arrayType($Uint8, 9); arrayType$3 = $arrayType($Uint8, 64); ptrType$1 = $ptrType(Location); chanType$2 = $chanType(Time, false, true); funcType$1 = $funcType([$emptyInterface, $Uintptr], [], false); ptrType$6 = $ptrType(js.Object); ptrType$7 = $ptrType(ParseError); ptrType$8 = $ptrType(Timer); ptrType$10 = $ptrType(Time); initLocal = function() { var $ptr, d, i, j, s; d = new ($global.Date)(); s = $internalize(d, $String); i = strings.IndexByte(s, 40); j = strings.IndexByte(s, 41); if ((i === -1) || (j === -1)) { localLoc.name = "UTC"; return; } localLoc.name = s.substring((i + 1 >> 0), j); localLoc.zone = new sliceType$1([new zone.ptr(localLoc.name, ($parseInt(d.getTimezoneOffset()) >> 0) * -60 >> 0, 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 chanType(0); $global.setTimeout($externalize((function(c) { return function() { var $ptr; $close(c[0]); }; })(c), funcType), ((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; case -1: } 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 = $global.setTimeout($externalize((function() { var $ptr, x$2, x$3, x$4; t.active = false; $go(t.f, [t.arg, 0]); 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); } }), funcType), $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; }; 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, _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$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$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); _ref = c; if (_ref === 74) { if (layout.length >= (i + 3 >> 0) && layout.substring(i, (i + 3 >> 0)) === "Jan") { if (layout.length >= (i + 7 >> 0) && layout.substring(i, (i + 7 >> 0)) === "January") { _tmp = layout.substring(0, i); _tmp$1 = 257; _tmp$2 = layout.substring((i + 7 >> 0)); prefix = _tmp; std = _tmp$1; suffix = _tmp$2; return [prefix, std, suffix]; } if (!startsWithLowerCase(layout.substring((i + 3 >> 0)))) { _tmp$3 = layout.substring(0, i); _tmp$4 = 258; _tmp$5 = layout.substring((i + 3 >> 0)); prefix = _tmp$3; std = _tmp$4; suffix = _tmp$5; return [prefix, std, suffix]; } } } else if (_ref === 77) { if (layout.length >= (i + 3 >> 0)) { if (layout.substring(i, (i + 3 >> 0)) === "Mon") { if (layout.length >= (i + 6 >> 0) && layout.substring(i, (i + 6 >> 0)) === "Monday") { _tmp$6 = layout.substring(0, i); _tmp$7 = 261; _tmp$8 = layout.substring((i + 6 >> 0)); prefix = _tmp$6; std = _tmp$7; suffix = _tmp$8; return [prefix, std, suffix]; } if (!startsWithLowerCase(layout.substring((i + 3 >> 0)))) { _tmp$9 = layout.substring(0, i); _tmp$10 = 262; _tmp$11 = layout.substring((i + 3 >> 0)); prefix = _tmp$9; std = _tmp$10; suffix = _tmp$11; return [prefix, std, suffix]; } } if (layout.substring(i, (i + 3 >> 0)) === "MST") { _tmp$12 = layout.substring(0, i); _tmp$13 = 21; _tmp$14 = layout.substring((i + 3 >> 0)); prefix = _tmp$12; std = _tmp$13; suffix = _tmp$14; return [prefix, std, suffix]; } } } else if (_ref === 48) { if (layout.length >= (i + 2 >> 0) && 49 <= layout.charCodeAt((i + 1 >> 0)) && layout.charCodeAt((i + 1 >> 0)) <= 54) { _tmp$15 = layout.substring(0, i); _tmp$16 = (x = layout.charCodeAt((i + 1 >> 0)) - 49 << 24 >>> 24, ((x < 0 || x >= std0x.length) ? $throwRuntimeError("index out of range") : std0x[x])); _tmp$17 = layout.substring((i + 2 >> 0)); prefix = _tmp$15; std = _tmp$16; suffix = _tmp$17; return [prefix, std, suffix]; } } else if (_ref === 49) { if (layout.length >= (i + 2 >> 0) && (layout.charCodeAt((i + 1 >> 0)) === 53)) { _tmp$18 = layout.substring(0, i); _tmp$19 = 522; _tmp$20 = layout.substring((i + 2 >> 0)); prefix = _tmp$18; std = _tmp$19; suffix = _tmp$20; return [prefix, std, suffix]; } _tmp$21 = layout.substring(0, i); _tmp$22 = 259; _tmp$23 = layout.substring((i + 1 >> 0)); prefix = _tmp$21; std = _tmp$22; suffix = _tmp$23; return [prefix, std, suffix]; } else if (_ref === 50) { if (layout.length >= (i + 4 >> 0) && layout.substring(i, (i + 4 >> 0)) === "2006") { _tmp$24 = layout.substring(0, i); _tmp$25 = 273; _tmp$26 = layout.substring((i + 4 >> 0)); prefix = _tmp$24; std = _tmp$25; suffix = _tmp$26; return [prefix, std, suffix]; } _tmp$27 = layout.substring(0, i); _tmp$28 = 263; _tmp$29 = layout.substring((i + 1 >> 0)); prefix = _tmp$27; std = _tmp$28; suffix = _tmp$29; return [prefix, std, suffix]; } else if (_ref === 95) { if (layout.length >= (i + 2 >> 0) && (layout.charCodeAt((i + 1 >> 0)) === 50)) { _tmp$30 = layout.substring(0, i); _tmp$31 = 264; _tmp$32 = layout.substring((i + 2 >> 0)); prefix = _tmp$30; std = _tmp$31; suffix = _tmp$32; return [prefix, std, suffix]; } } else if (_ref === 51) { _tmp$33 = layout.substring(0, i); _tmp$34 = 523; _tmp$35 = layout.substring((i + 1 >> 0)); prefix = _tmp$33; std = _tmp$34; suffix = _tmp$35; return [prefix, std, suffix]; } else if (_ref === 52) { _tmp$36 = layout.substring(0, i); _tmp$37 = 525; _tmp$38 = layout.substring((i + 1 >> 0)); prefix = _tmp$36; std = _tmp$37; suffix = _tmp$38; return [prefix, std, suffix]; } else if (_ref === 53) { _tmp$39 = layout.substring(0, i); _tmp$40 = 527; _tmp$41 = layout.substring((i + 1 >> 0)); prefix = _tmp$39; std = _tmp$40; suffix = _tmp$41; return [prefix, std, suffix]; } else if (_ref === 80) { if (layout.length >= (i + 2 >> 0) && (layout.charCodeAt((i + 1 >> 0)) === 77)) { _tmp$42 = layout.substring(0, i); _tmp$43 = 531; _tmp$44 = layout.substring((i + 2 >> 0)); prefix = _tmp$42; std = _tmp$43; suffix = _tmp$44; return [prefix, std, suffix]; } } else if (_ref === 112) { if (layout.length >= (i + 2 >> 0) && (layout.charCodeAt((i + 1 >> 0)) === 109)) { _tmp$45 = layout.substring(0, i); _tmp$46 = 532; _tmp$47 = layout.substring((i + 2 >> 0)); prefix = _tmp$45; std = _tmp$46; suffix = _tmp$47; return [prefix, std, suffix]; } } else if (_ref === 45) { if (layout.length >= (i + 7 >> 0) && layout.substring(i, (i + 7 >> 0)) === "-070000") { _tmp$48 = layout.substring(0, i); _tmp$49 = 27; _tmp$50 = layout.substring((i + 7 >> 0)); prefix = _tmp$48; std = _tmp$49; suffix = _tmp$50; return [prefix, std, suffix]; } if (layout.length >= (i + 9 >> 0) && layout.substring(i, (i + 9 >> 0)) === "-07:00:00") { _tmp$51 = layout.substring(0, i); _tmp$52 = 30; _tmp$53 = layout.substring((i + 9 >> 0)); prefix = _tmp$51; std = _tmp$52; suffix = _tmp$53; return [prefix, std, suffix]; } if (layout.length >= (i + 5 >> 0) && layout.substring(i, (i + 5 >> 0)) === "-0700") { _tmp$54 = layout.substring(0, i); _tmp$55 = 26; _tmp$56 = layout.substring((i + 5 >> 0)); prefix = _tmp$54; std = _tmp$55; suffix = _tmp$56; return [prefix, std, suffix]; } if (layout.length >= (i + 6 >> 0) && layout.substring(i, (i + 6 >> 0)) === "-07:00") { _tmp$57 = layout.substring(0, i); _tmp$58 = 29; _tmp$59 = layout.substring((i + 6 >> 0)); prefix = _tmp$57; std = _tmp$58; suffix = _tmp$59; return [prefix, std, suffix]; } if (layout.length >= (i + 3 >> 0) && layout.substring(i, (i + 3 >> 0)) === "-07") { _tmp$60 = layout.substring(0, i); _tmp$61 = 28; _tmp$62 = layout.substring((i + 3 >> 0)); prefix = _tmp$60; std = _tmp$61; suffix = _tmp$62; return [prefix, std, suffix]; } } else if (_ref === 90) { if (layout.length >= (i + 7 >> 0) && layout.substring(i, (i + 7 >> 0)) === "Z070000") { _tmp$63 = layout.substring(0, i); _tmp$64 = 23; _tmp$65 = layout.substring((i + 7 >> 0)); prefix = _tmp$63; std = _tmp$64; suffix = _tmp$65; return [prefix, std, suffix]; } if (layout.length >= (i + 9 >> 0) && layout.substring(i, (i + 9 >> 0)) === "Z07:00:00") { _tmp$66 = layout.substring(0, i); _tmp$67 = 25; _tmp$68 = layout.substring((i + 9 >> 0)); prefix = _tmp$66; std = _tmp$67; suffix = _tmp$68; return [prefix, std, suffix]; } if (layout.length >= (i + 5 >> 0) && layout.substring(i, (i + 5 >> 0)) === "Z0700") { _tmp$69 = layout.substring(0, i); _tmp$70 = 22; _tmp$71 = layout.substring((i + 5 >> 0)); prefix = _tmp$69; std = _tmp$70; suffix = _tmp$71; return [prefix, std, suffix]; } if (layout.length >= (i + 6 >> 0) && layout.substring(i, (i + 6 >> 0)) === "Z07:00") { _tmp$72 = layout.substring(0, i); _tmp$73 = 24; _tmp$74 = layout.substring((i + 6 >> 0)); prefix = _tmp$72; std = _tmp$73; suffix = _tmp$74; return [prefix, std, suffix]; } } else if (_ref === 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 = 31; if (layout.charCodeAt((i + 1 >> 0)) === 57) { std$1 = 32; } std$1 = std$1 | ((((j - ((i + 1 >> 0)) >> 0)) << 16 >> 0)); _tmp$75 = layout.substring(0, i); _tmp$76 = std$1; _tmp$77 = layout.substring(j); prefix = _tmp$75; std = _tmp$76; suffix = _tmp$77; return [prefix, std, suffix]; } } } i = i + (1) >> 0; } _tmp$78 = layout; _tmp$79 = 0; _tmp$80 = ""; prefix = _tmp$78; std = _tmp$79; suffix = _tmp$80; 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") : _ref.$array[_ref.$offset + _i]); if (val.length >= v.length && match(val.substring(0, v.length), v)) { return [i, val.substring(v.length), $ifaceNil]; } _i++; } return [-1, val, errBad]; }; appendUint = function(b, x, pad) { var $ptr, _q, _q$1, _r, _r$1, b, buf, n, pad, x; if (x < 10) { if (!((pad === 0))) { b = $append(b, pad); } return $append(b, ((48 + x >>> 0) << 24 >>> 24)); } if (x < 100) { b = $append(b, ((48 + (_q = x / 10, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")) >>> 0) << 24 >>> 24)); b = $append(b, ((48 + (_r = x % 10, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) >>> 0) << 24 >>> 24)); return b; } buf = $clone(arrayType$1.zero(), arrayType$1); n = 32; if (x === 0) { return $append(b, 48); } while (true) { if (!(x >= 10)) { break; } n = n - (1) >> 0; ((n < 0 || n >= buf.length) ? $throwRuntimeError("index out of range") : buf[n] = (((_r$1 = x % 10, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) + 48 >>> 0) << 24 >>> 24)); x = (_q$1 = x / (10), (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >>> 0 : $throwRuntimeError("integer divide by zero")); } n = n - (1) >> 0; ((n < 0 || n >= buf.length) ? $throwRuntimeError("index out of range") : buf[n] = ((x + 48 >>> 0) << 24 >>> 24)); return $appendSlice(b, $subslice(new sliceType$3(buf), n)); }; 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 = s.substring(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 = $clone(arrayType$2.zero(), arrayType$2); start = 9; while (true) { if (!(start > 0)) { break; } start = start - (1) >> 0; ((start < 0 || start >= buf.length) ? $throwRuntimeError("index out of range") : 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") : 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 = $clone(this, Time); _r = t.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; } return _r; /* */ $s = -1; case -1: } 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, _q, _q$1, _q$2, _q$3, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _ref, _tuple$1, _tuple$2, _tuple$3, _tuple$4, abs, absoffset, b, buf, day, hour, hr, hr$1, layout, m, max, min, month, name, offset, prefix, s, sec, std, suffix, t, y, y$1, 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; _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; _ref = $f._ref; _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; buf = $f.buf; day = $f.day; hour = $f.hour; hr = $f.hr; hr$1 = $f.hr$1; layout = $f.layout; m = $f.m; max = $f.max; 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; y$1 = $f.y$1; 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 = $clone(this, Time); _r = t.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; b = sliceType$3.nil; buf = $clone(arrayType$3.zero(), arrayType$3); max = layout.length + 10 >> 0; if (max <= 64) { b = $subslice(new sliceType$3(buf), 0, 0); } else { b = $makeSlice(sliceType$3, 0, max); } 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, new sliceType$3($stringToBytes(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]; } _ref = std & 65535; switch (0) { default: if (_ref === 274) { y = year; if (y < 0) { y = -y; } b = appendUint(b, ((_r$1 = y % 100, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) >>> 0), 48); } else if (_ref === 273) { y$1 = year; if (year <= -1000) { b = $append(b, 45); y$1 = -y$1; } else if (year <= -100) { b = $appendSlice(b, new sliceType$3($stringToBytes("-0"))); y$1 = -y$1; } else if (year <= -10) { b = $appendSlice(b, new sliceType$3($stringToBytes("-00"))); y$1 = -y$1; } else if (year < 0) { b = $appendSlice(b, new sliceType$3($stringToBytes("-000"))); y$1 = -y$1; } else if (year < 10) { b = $appendSlice(b, new sliceType$3($stringToBytes("000"))); } else if (year < 100) { b = $appendSlice(b, new sliceType$3($stringToBytes("00"))); } else if (year < 1000) { b = $append(b, 48); } b = appendUint(b, (y$1 >>> 0), 0); } else if (_ref === 258) { b = $appendSlice(b, new sliceType$3($stringToBytes(new Month(month).String().substring(0, 3)))); } else if (_ref === 257) { m = new Month(month).String(); b = $appendSlice(b, new sliceType$3($stringToBytes(m))); } else if (_ref === 259) { b = appendUint(b, (month >>> 0), 0); } else if (_ref === 260) { b = appendUint(b, (month >>> 0), 48); } else if (_ref === 262) { b = $appendSlice(b, new sliceType$3($stringToBytes(new Weekday(absWeekday(abs)).String().substring(0, 3)))); } else if (_ref === 261) { s = new Weekday(absWeekday(abs)).String(); b = $appendSlice(b, new sliceType$3($stringToBytes(s))); } else if (_ref === 263) { b = appendUint(b, (day >>> 0), 0); } else if (_ref === 264) { b = appendUint(b, (day >>> 0), 32); } else if (_ref === 265) { b = appendUint(b, (day >>> 0), 48); } else if (_ref === 522) { b = appendUint(b, (hour >>> 0), 48); } else if (_ref === 523) { hr = (_r$2 = hour % 12, _r$2 === _r$2 ? _r$2 : $throwRuntimeError("integer divide by zero")); if (hr === 0) { hr = 12; } b = appendUint(b, (hr >>> 0), 0); } else if (_ref === 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 = appendUint(b, (hr$1 >>> 0), 48); } else if (_ref === 525) { b = appendUint(b, (min >>> 0), 0); } else if (_ref === 526) { b = appendUint(b, (min >>> 0), 48); } else if (_ref === 527) { b = appendUint(b, (sec >>> 0), 0); } else if (_ref === 528) { b = appendUint(b, (sec >>> 0), 48); } else if (_ref === 531) { if (hour >= 12) { b = $appendSlice(b, new sliceType$3($stringToBytes("PM"))); } else { b = $appendSlice(b, new sliceType$3($stringToBytes("AM"))); } } else if (_ref === 532) { if (hour >= 12) { b = $appendSlice(b, new sliceType$3($stringToBytes("pm"))); } else { b = $appendSlice(b, new sliceType$3($stringToBytes("am"))); } } else if (_ref === 22 || _ref === 24 || _ref === 23 || _ref === 25 || _ref === 26 || _ref === 29 || _ref === 27 || _ref === 30) { if ((offset === 0) && ((std === 22) || (std === 24) || (std === 23) || (std === 25))) { 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 = appendUint(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")) >>> 0), 48); if ((std === 24) || (std === 29) || (std === 25) || (std === 30)) { b = $append(b, 58); } b = appendUint(b, ((_r$4 = zone$1 % 60, _r$4 === _r$4 ? _r$4 : $throwRuntimeError("integer divide by zero")) >>> 0), 48); if ((std === 23) || (std === 27) || (std === 30) || (std === 25)) { if ((std === 30) || (std === 25)) { b = $append(b, 58); } b = appendUint(b, ((_r$5 = absoffset % 60, _r$5 === _r$5 ? _r$5 : $throwRuntimeError("integer divide by zero")) >>> 0), 48); } } else if (_ref === 21) { if (!(name === "")) { b = $appendSlice(b, new sliceType$3($stringToBytes(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 = appendUint(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")) >>> 0), 48); b = appendUint(b, ((_r$6 = zone$2 % 60, _r$6 === _r$6 ? _r$6 : $throwRuntimeError("integer divide by zero")) >>> 0), 48); } else if (_ref === 31 || _ref === 32) { b = formatNano(b, (t.Nanosecond() >>> 0), std >> 16 >> 0, (std & 65535) === 32); } } } return $bytesToString(b); /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.Format }; } $f.$ptr = $ptr; $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._ref = _ref; $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.buf = buf; $f.day = day; $f.hour = hour; $f.hr = hr; $f.hr$1 = hr$1; $f.layout = layout; $f.m = m; $f.max = max; $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.y$1 = y$1; $f.year = year; $f.zone$1 = zone$1; $f.zone$2 = zone$2; $f.$s = $s; $f.$r = $r; return $f; }; Time.prototype.Format = function(layout) { return this.$val.Format(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), s.substring(1), $ifaceNil]; } return [(((s.charCodeAt(0) - 48 << 24 >>> 24) >> 0) * 10 >> 0) + ((s.charCodeAt(1) - 48 << 24 >>> 24) >> 0) >> 0, s.substring(2), $ifaceNil]; }; cutspace = function(s) { var $ptr, s; while (true) { if (!(s.length > 0 && (s.charCodeAt(0) === 32))) { break; } s = s.substring(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 = prefix.substring(1); value = value.substring(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; } return _r; /* */ $s = -1; case -1: } 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, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, _ref$1, _ref$2, _ref$3, _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; _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; _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 = layout.substring(prefix.length, (layout.length - suffix.length >> 0)); _tuple$2 = skip(value, prefix); value = _tuple$2[0]; err = _tuple$2[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { 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))) { 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 = ""; _ref = std & 65535; switch (0) { default: if (_ref === 274) { if (value.length < 2) { err = errBad; break; } _tmp$2 = value.substring(0, 2); _tmp$3 = value.substring(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 (_ref === 273) { if (value.length < 4 || !isDigit(value, 0)) { err = errBad; break; } _tmp$4 = value.substring(0, 4); _tmp$5 = value.substring(4); p = _tmp$4; value = _tmp$5; _tuple$4 = atoi(p); year = _tuple$4[0]; err = _tuple$4[1]; } else if (_ref === 258) { _tuple$5 = lookup(shortMonthNames, value); month = _tuple$5[0]; value = _tuple$5[1]; err = _tuple$5[2]; } else if (_ref === 257) { _tuple$6 = lookup(longMonthNames, value); month = _tuple$6[0]; value = _tuple$6[1]; err = _tuple$6[2]; } else if (_ref === 259 || _ref === 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 (_ref === 262) { _tuple$8 = lookup(shortDayNames, value); value = _tuple$8[1]; err = _tuple$8[2]; } else if (_ref === 261) { _tuple$9 = lookup(longDayNames, value); value = _tuple$9[1]; err = _tuple$9[2]; } else if (_ref === 263 || _ref === 264 || _ref === 265) { if ((std === 264) && value.length > 0 && (value.charCodeAt(0) === 32)) { value = value.substring(1); } _tuple$10 = getnum(value, std === 265); day = _tuple$10[0]; value = _tuple$10[1]; err = _tuple$10[2]; if (day < 0 || 31 < day) { rangeErrString = "day"; } } else if (_ref === 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 (_ref === 523 || _ref === 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 (_ref === 525 || _ref === 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 (_ref === 527 || _ref === 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"; } if (value.length >= 2 && (value.charCodeAt(0) === 46) && isDigit(value, 1)) { _tuple$15 = nextStdChunk(layout); std = _tuple$15[1]; std = std & (65535); if ((std === 31) || (std === 32)) { 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 = value.substring(n); } } else if (_ref === 531) { if (value.length < 2) { err = errBad; break; } _tmp$6 = value.substring(0, 2); _tmp$7 = value.substring(2); p = _tmp$6; value = _tmp$7; _ref$1 = p; if (_ref$1 === "PM") { pmSet = true; } else if (_ref$1 === "AM") { amSet = true; } else { err = errBad; } } else if (_ref === 532) { if (value.length < 2) { err = errBad; break; } _tmp$8 = value.substring(0, 2); _tmp$9 = value.substring(2); p = _tmp$8; value = _tmp$9; _ref$2 = p; if (_ref$2 === "pm") { pmSet = true; } else if (_ref$2 === "am") { amSet = true; } else { err = errBad; } } else if (_ref === 22 || _ref === 24 || _ref === 23 || _ref === 25 || _ref === 26 || _ref === 28 || _ref === 29 || _ref === 27 || _ref === 30) { if (((std === 22) || (std === 24)) && value.length >= 1 && (value.charCodeAt(0) === 90)) { value = value.substring(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 === 24) || (std === 29)) { if (value.length < 6) { err = errBad; break; } if (!((value.charCodeAt(3) === 58))) { err = errBad; break; } _tmp$14 = value.substring(0, 1); _tmp$15 = value.substring(1, 3); _tmp$16 = value.substring(4, 6); _tmp$17 = "00"; _tmp$18 = value.substring(6); sign = _tmp$14; hour$1 = _tmp$15; min$1 = _tmp$16; seconds = _tmp$17; value = _tmp$18; } else if (std === 28) { if (value.length < 3) { err = errBad; break; } _tmp$19 = value.substring(0, 1); _tmp$20 = value.substring(1, 3); _tmp$21 = "00"; _tmp$22 = "00"; _tmp$23 = value.substring(3); sign = _tmp$19; hour$1 = _tmp$20; min$1 = _tmp$21; seconds = _tmp$22; value = _tmp$23; } else if ((std === 25) || (std === 30)) { if (value.length < 9) { err = errBad; break; } if (!((value.charCodeAt(3) === 58)) || !((value.charCodeAt(6) === 58))) { err = errBad; break; } _tmp$24 = value.substring(0, 1); _tmp$25 = value.substring(1, 3); _tmp$26 = value.substring(4, 6); _tmp$27 = value.substring(7, 9); _tmp$28 = value.substring(9); sign = _tmp$24; hour$1 = _tmp$25; min$1 = _tmp$26; seconds = _tmp$27; value = _tmp$28; } else if ((std === 23) || (std === 27)) { if (value.length < 7) { err = errBad; break; } _tmp$29 = value.substring(0, 1); _tmp$30 = value.substring(1, 3); _tmp$31 = value.substring(3, 5); _tmp$32 = value.substring(5, 7); _tmp$33 = value.substring(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 = value.substring(0, 1); _tmp$35 = value.substring(1, 3); _tmp$36 = value.substring(3, 5); _tmp$37 = "00"; _tmp$38 = value.substring(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 = ((((hr * 60 >> 0) + mm >> 0)) * 60 >> 0) + ss >> 0; _ref$3 = sign.charCodeAt(0); if (_ref$3 === 43) { } else if (_ref$3 === 45) { zoneOffset = -zoneOffset; } else { err = errBad; } } else if (_ref === 21) { if (value.length >= 3 && value.substring(0, 3) === "UTC") { z = $pkg.UTC; value = value.substring(3); break; } _tuple$20 = parseTimeZone(value); n$1 = _tuple$20[0]; ok = _tuple$20[1]; if (!ok) { err = errBad; break; } _tmp$42 = value.substring(0, n$1); _tmp$43 = value.substring(n$1); zoneName = _tmp$42; value = _tmp$43; } else if (_ref === 31) { 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 = value.substring(ndigit); } else if (_ref === 32) { 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 = value.substring((1 + i >> 0)); } } if (!(rangeErrString === "")) { 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))) { 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 (!(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; } 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.loc = local; return [t, $ifaceNil]; } t.loc = FixedZone(zoneName, zoneOffset); 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.loc = local; return [t$1, $ifaceNil]; } if (zoneName.length > 3 && zoneName.substring(0, 3) === "GMT") { _tuple$25 = atoi(zoneName.substring(3)); offset$1 = _tuple$25[0]; offset$1 = offset$1 * (3600) >> 0; } t$1.loc = FixedZone(zoneName, offset$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; } return [_r$5, $ifaceNil]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parse }; } $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._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f._ref$3 = _ref$3; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$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, _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, 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 && (value.substring(0, 4) === "ChST" || value.substring(0, 4) === "MeST")) { _tmp$2 = 4; _tmp$3 = true; length = _tmp$2; ok = _tmp$3; return [length, ok]; } if (value.substring(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; } _ref = nUpper; if (_ref === 0 || _ref === 1 || _ref === 2 || _ref === 6) { _tmp$6 = 0; _tmp$7 = false; length = _tmp$6; ok = _tmp$7; return [length, ok]; } else if (_ref === 5) { if (value.charCodeAt(4) === 84) { _tmp$8 = 5; _tmp$9 = true; length = _tmp$8; ok = _tmp$9; return [length, ok]; } } else if (_ref === 4) { if (value.charCodeAt(3) === 84) { _tmp$10 = 4; _tmp$11 = true; length = _tmp$10; ok = _tmp$11; return [length, ok]; } } else if (_ref === 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 = value.substring(3); if (value.length === 0) { return 3; } sign = value.charCodeAt(0); if (!((sign === 45)) && !((sign === 43))) { return 3; } _tuple$1 = leadingInt(value.substring(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(value.substring(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 = ns * (10) >> 0; i = i + (1) >> 0; } return [ns, rangeErrString, err]; }; leadingInt = function(s) { var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, 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 >= 3435973835))) { _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)); i = i + (1) >> 0; } _tmp$3 = x; _tmp$4 = s.substring(i); _tmp$5 = $ifaceNil; x = _tmp$3; rem = _tmp$4; err = _tmp$5; return [x, rem, err]; }; ParseDuration = function(s) { var $ptr, _entry, _tuple$1, _tuple$2, _tuple$3, c, c$1, err, f, g, i, n, neg, ok, orig, pl, pl$1, post, pre, s, scale, u, unit, x; orig = s; f = 0; neg = false; if (!(s === "")) { c = s.charCodeAt(0); if ((c === 45) || (c === 43)) { neg = c === 45; s = s.substring(1); } } if (s === "0") { return [new Duration(0, 0), $ifaceNil]; } if (s === "") { return [new Duration(0, 0), errors.New("time: invalid duration " + orig)]; } while (true) { if (!(!(s === ""))) { break; } g = 0; x = new $Int64(0, 0); err = $ifaceNil; if (!((s.charCodeAt(0) === 46) || (48 <= s.charCodeAt(0) && s.charCodeAt(0) <= 57))) { return [new Duration(0, 0), errors.New("time: invalid duration " + orig)]; } pl = s.length; _tuple$1 = leadingInt(s); x = _tuple$1[0]; s = _tuple$1[1]; err = _tuple$1[2]; if (!($interfaceIsEqual(err, $ifaceNil))) { return [new Duration(0, 0), errors.New("time: invalid duration " + orig)]; } g = $flatten64(x); pre = !((pl === s.length)); post = false; if (!(s === "") && (s.charCodeAt(0) === 46)) { s = s.substring(1); pl$1 = s.length; _tuple$2 = leadingInt(s); x = _tuple$2[0]; s = _tuple$2[1]; err = _tuple$2[2]; if (!($interfaceIsEqual(err, $ifaceNil))) { return [new Duration(0, 0), errors.New("time: invalid duration " + orig)]; } scale = 1; n = pl$1 - s.length >> 0; while (true) { if (!(n > 0)) { break; } scale = scale * (10); n = n - (1) >> 0; } g = g + ($flatten64(x) / scale); post = !((pl$1 === s.length)); } if (!pre && !post) { return [new Duration(0, 0), errors.New("time: invalid duration " + orig)]; } i = 0; while (true) { if (!(i < s.length)) { break; } c$1 = s.charCodeAt(i); if ((c$1 === 46) || (48 <= c$1 && c$1 <= 57)) { break; } i = i + (1) >> 0; } if (i === 0) { return [new Duration(0, 0), errors.New("time: missing unit in duration " + orig)]; } u = s.substring(0, i); s = s.substring(i); _tuple$3 = (_entry = unitMap[u], _entry !== undefined ? [_entry.v, true] : [0, false]); unit = _tuple$3[0]; ok = _tuple$3[1]; if (!ok) { return [new Duration(0, 0), errors.New("time: unknown unit " + u + " in duration " + orig)]; } f = f + (g * unit); } if (neg) { f = -f; } if (f < -9.223372036854776e+18 || f > 9.223372036854776e+18) { return [new Duration(0, 0), errors.New("time: overflow parsing duration")]; } return [new Duration(0, f), $ifaceNil]; }; $pkg.ParseDuration = ParseDuration; 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(); }; 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); }; AfterFunc = function(d, f) { var $ptr, d, f, t; t = new Timer.ptr(chanType$2.nil, 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), []); }; Time.ptr.prototype.After = function(u) { var $ptr, t, u, x, x$1, x$2, x$3; t = $clone(this, Time); u = $clone(u, Time); 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 = $clone(this, Time); u = $clone(u, Time); 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 = $clone(this, Time); u = $clone(u, Time); 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, m, x; m = this.$val; return (x = m - 1 >> 0, ((x < 0 || x >= months.length) ? $throwRuntimeError("index out of range") : months[x])); }; $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") : days[d]); }; $ptrType(Weekday).prototype.String = function() { return new Weekday(this.$get()).String(); }; Time.ptr.prototype.IsZero = function() { var $ptr, t, x; t = $clone(this, Time); 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 = $clone(this, Time); 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: return (x$5 = new $Int64(sec.$high + 2147483646, sec.$low + 450480384), new $Uint64(x$5.$high, x$5.$low)); /* */ $s = -1; case -1: } 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 = $clone(this, Time); 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)); return [name, offset, abs]; /* */ $s = -1; case -1: } 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 = $clone(this, Time); _r = t.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]; return [year, month, day]; /* */ $s = -1; case -1: } 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 = $clone(this, Time); _r = t.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]; return year; /* */ $s = -1; case -1: } 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 = $clone(this, Time); _r = t.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]; return month; /* */ $s = -1; case -1: } 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 = $clone(this, Time); _r = t.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]; return day; /* */ $s = -1; case -1: } 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 = $clone(this, Time); _r = t.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; } return _r$1; /* */ $s = -1; case -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 = $clone(this, Time); _r = t.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 = t.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; } } return [year, week]; /* */ $s = -1; case -1: } 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 = $clone(this, Time); _r = t.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]; return [hour, min, sec]; /* */ $s = -1; case -1: } 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 - ((hour * 3600 >> 0)) >> 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 - ((min * 60 >> 0)) >> 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 = $clone(this, Time); _r = t.abs(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } 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")); /* */ $s = -1; case -1: } 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 = $clone(this, Time); _r = t.abs(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } 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")); /* */ $s = -1; case -1: } 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 = $clone(this, Time); _r = t.abs(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return ($div64(_r, new $Uint64(0, 60), true).$low >> 0); /* */ $s = -1; case -1: } 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 = $clone(this, Time); 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 = $clone(this, Time); _r = t.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]; return yday + 1 >> 0; /* */ $s = -1; case -1: } 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 = $clone(arrayType$1.zero(), arrayType$1); 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") : buf[w] = 115); w = w - (1) >> 0; if ((u.$high === 0 && u.$low === 0)) { return "0"; } else if ((u.$high < 0 || (u.$high === 0 && u.$low < 1000))) { prec = 0; ((w < 0 || w >= buf.length) ? $throwRuntimeError("index out of range") : 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") : 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") : 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") : 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") : 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") : 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") : 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") : 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") : 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") : 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) * 1.6666666666666667e-11; }; $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) * 2.777777777777778e-13; }; $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 = $clone(this, Time); 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 = $clone(this, Time); u = $clone(u, Time); 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 (u.Add(d).Equal(t)) { return d; } else if (t.Before(u)) { return new Duration(-2147483648, 0); } else { return new Duration(2147483647, 4294967295); } }; Time.prototype.Sub = function(u) { return this.$val.Sub(u); }; 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 = $clone(this, Time); _r = t.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 = t.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), t.loc); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } return _r$2; /* */ $s = -1; case -1: } 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 = $clone(this, Time); _r = t.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]; return [year, month, day, yday]; /* */ $s = -1; case -1: } 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") : 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") : daysBefore[month]) >> 0); } month = month + (1) >> 0; day = (day - begin >> 0) + 1 >> 0; return [year, month, day, yday]; }; 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 = $clone(this, Time); t.loc = $pkg.UTC; return t; }; Time.prototype.UTC = function() { return this.$val.UTC(); }; Time.ptr.prototype.Local = function() { var $ptr, t; t = $clone(this, Time); t.loc = $pkg.Local; return t; }; Time.prototype.Local = function() { return this.$val.Local(); }; Time.ptr.prototype.In = function(loc) { var $ptr, loc, t; t = $clone(this, Time); if (loc === ptrType$1.nil) { $panic(new $String("time: missing Location in call to Time.In")); } t.loc = loc; return t; }; Time.prototype.In = function(loc) { return this.$val.In(loc); }; Time.ptr.prototype.Location = function() { var $ptr, l, t; t = $clone(this, Time); 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 = $clone(this, Time); _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]; return [name, offset]; /* */ $s = -1; case -1: } 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 = $clone(this, Time); 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 = $clone(this, Time); 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 = $clone(this, Time); offsetMin = 0; /* */ if (t.Location() === utcLoc) { $s = 1; continue; } /* */ $s = 2; continue; /* if (t.Location() === utcLoc) { */ case 1: offsetMin = -1; $s = 3; continue; /* } else { */ case 2: _r = t.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))) { 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) { 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)]); return [enc, $ifaceNil]; /* */ $s = -1; case -1: } 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) { return errors.New("Time.UnmarshalBinary: no data"); } if (!(((0 >= buf.$length ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + 0]) === 1))) { return errors.New("Time.UnmarshalBinary: unsupported version"); } if (!((buf.$length === 15))) { 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") : buf.$array[buf.$offset + 7])), x$7 = $shiftLeft64(new $Int64(0, (6 >= buf.$length ? $throwRuntimeError("index out of range") : 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") : 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") : 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") : 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") : 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") : 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") : 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") : buf.$array[buf.$offset + 3]) >> 0) | (((2 >= buf.$length ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + 2]) >> 0) << 8 >> 0)) | (((1 >= buf.$length ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + 1]) >> 0) << 16 >> 0)) | (((0 >= buf.$length ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + 0]) >> 0) << 24 >> 0); buf = $subslice(buf, 4); offset = ((((1 >= buf.$length ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + 1]) << 16 >> 16) | (((0 >= buf.$length ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + 0]) << 16 >> 16) << 8 << 16 >> 16)) >> 0) * 60 >> 0; /* */ if (offset === -60) { $s = 1; continue; } /* */ $s = 2; continue; /* if (offset === -60) { */ case 1: t.loc = 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) { $s = 5; continue; } /* */ $s = 6; continue; /* if (offset === localoff) { */ case 5: t.loc = $pkg.Local; $s = 7; continue; /* } else { */ case 6: t.loc = FixedZone("", offset); /* } */ case 7: /* } */ case 3: return $ifaceNil; /* */ $s = -1; case -1: } 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 = $clone(this, Time); _r = t.MarshalBinary(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -1: } 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; } return _r; /* */ $s = -1; case -1: } 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, 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; t = $f.t; y = $f.y; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: t = $clone(this, Time); _r = t.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 = 2; continue; } /* */ $s = 3; continue; /* if (y < 0 || y >= 10000) { */ case 2: return [sliceType$3.nil, errors.New("Time.MarshalJSON: year outside of range [0,9999]")]; /* } */ case 3: _r$1 = t.Format("\"2006-01-02T15:04:05.999999999Z07:00\""); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } return [new sliceType$3($stringToBytes(_r$1)), $ifaceNil]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.MarshalJSON }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $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: err = $ifaceNil; t = this; _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; $copy(t, _tuple$1[0], Time); err = _tuple$1[1]; return err; /* */ $s = -1; case -1: } 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, 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; t = $f.t; y = $f.y; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: t = $clone(this, Time); _r = t.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 = 2; continue; } /* */ $s = 3; continue; /* if (y < 0 || y >= 10000) { */ case 2: return [sliceType$3.nil, errors.New("Time.MarshalText: year outside of range [0,9999]")]; /* } */ case 3: _r$1 = t.Format("2006-01-02T15:04:05.999999999Z07:00"); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } return [new sliceType$3($stringToBytes(_r$1)), $ifaceNil]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.MarshalText }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $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: err = $ifaceNil; t = this; _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; $copy(t, _tuple$1[0], Time); err = _tuple$1[1]; return err; /* */ $s = -1; case -1: } 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 + ((n * base >> 0)) >> 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 - ((n$1 * base >> 0)) >> 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, 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; 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") : 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, (((hour * 3600 >> 0) + (min * 60 >> 0) >> 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 = 4; continue; } /* */ if ((utc.$high > end.$high || (utc.$high === end.$high && utc.$low >= end.$low))) { $s = 5; continue; } /* */ $s = 6; continue; /* if ((utc.$high < start.$high || (utc.$high === start.$high && utc.$low < start.$low))) { */ case 4: _r$1 = loc.lookup(new $Int64(start.$high - 0, start.$low - 1)); /* */ $s = 7; case 7: 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 = 6; continue; /* } else if ((utc.$high > end.$high || (utc.$high === end.$high && utc.$low >= end.$low))) { */ case 5: _r$2 = loc.lookup(end); /* */ $s = 8; case 8: 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 6: unix = (x$15 = new $Int64(0, offset), new $Int64(unix.$high - x$15.$high, unix.$low - x$15.$low)); /* } */ case 3: return new Time.ptr(new $Int64(unix.$high + 14, unix.$low + 2006054656), (nsec >> 0), loc); /* */ $s = -1; case -1: } 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.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 = $clone(this, Time); if ((d.$high < 0 || (d.$high === 0 && d.$low <= 0))) { return t; } _tuple$1 = div(t, d); r = _tuple$1[1]; return t.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 = $clone(this, Time); if ((d.$high < 0 || (d.$high === 0 && d.$low <= 0))) { return t; } _tuple$1 = div(t, 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 t.Add(new Duration(-r.$high, -r.$low)); } return t.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); t = $clone(t, Time); 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) { 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: return l; /* */ $s = -1; case -1: } 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; } return _r.name; /* */ $s = -1; case -1: } 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$1([new zone.ptr(name, offset, false)]), new sliceType$2([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") : 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); 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; 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") : 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") : 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") : x$6.$array[x$6.$offset + 0])).when; } else { end = new $Int64(2147483647, 4294967295); } 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") : 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") : tx.$array[tx.$offset + lo]).index, ((x$8 < 0 || x$8 >= x$7.$length) ? $throwRuntimeError("index out of range") : 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") : tx.$array[tx.$offset + lo]).when; return [name, offset, isDST, start, end]; /* */ $s = -1; case -1: } 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") : x$2.$array[x$2.$offset + 0])).index, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1])).isDST) { zi = ((x$3 = l.tx, (0 >= x$3.$length ? $throwRuntimeError("index out of range") : 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") : 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") : 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") : _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") : 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; 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") : 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; return [offset, isDST, ok]; } _i$1++; } return [offset, isDST, ok]; /* */ $s = -1; case -1: } 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$7.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; ptrType$8.methods = [{prop: "Stop", name: "Stop", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Reset", name: "Reset", pkg: "", typ: $funcType([Duration], [$Bool], false)}]; Time.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Format", name: "Format", pkg: "", typ: $funcType([$String], [$String], 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$10.methods = [{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([{prop: "i", name: "i", pkg: "time", typ: $Int32, tag: ""}, {prop: "when", name: "when", pkg: "time", typ: $Int64, tag: ""}, {prop: "period", name: "period", pkg: "time", typ: $Int64, tag: ""}, {prop: "f", name: "f", pkg: "time", typ: funcType$1, tag: ""}, {prop: "arg", name: "arg", pkg: "time", typ: $emptyInterface, tag: ""}, {prop: "timeout", name: "timeout", pkg: "time", typ: ptrType$6, tag: ""}, {prop: "active", name: "active", pkg: "time", typ: $Bool, tag: ""}]); ParseError.init([{prop: "Layout", name: "Layout", pkg: "", typ: $String, tag: ""}, {prop: "Value", name: "Value", pkg: "", typ: $String, tag: ""}, {prop: "LayoutElem", name: "LayoutElem", pkg: "", typ: $String, tag: ""}, {prop: "ValueElem", name: "ValueElem", pkg: "", typ: $String, tag: ""}, {prop: "Message", name: "Message", pkg: "", typ: $String, tag: ""}]); Timer.init([{prop: "C", name: "C", pkg: "", typ: chanType$2, tag: ""}, {prop: "r", name: "r", pkg: "time", typ: runtimeTimer, tag: ""}]); Time.init([{prop: "sec", name: "sec", pkg: "time", typ: $Int64, tag: ""}, {prop: "nsec", name: "nsec", pkg: "time", typ: $Int32, tag: ""}, {prop: "loc", name: "loc", pkg: "time", typ: ptrType$1, tag: ""}]); Location.init([{prop: "name", name: "name", pkg: "time", typ: $String, tag: ""}, {prop: "zone", name: "zone", pkg: "time", typ: sliceType$1, tag: ""}, {prop: "tx", name: "tx", pkg: "time", typ: sliceType$2, tag: ""}, {prop: "cacheStart", name: "cacheStart", pkg: "time", typ: $Int64, tag: ""}, {prop: "cacheEnd", name: "cacheEnd", pkg: "time", typ: $Int64, tag: ""}, {prop: "cacheZone", name: "cacheZone", pkg: "time", typ: ptrType, tag: ""}]); zone.init([{prop: "name", name: "name", pkg: "time", typ: $String, tag: ""}, {prop: "offset", name: "offset", pkg: "time", typ: $Int, tag: ""}, {prop: "isDST", name: "isDST", pkg: "time", typ: $Bool, tag: ""}]); zoneTrans.init([{prop: "when", name: "when", pkg: "time", typ: $Int64, tag: ""}, {prop: "index", name: "index", pkg: "time", typ: $Uint8, tag: ""}, {prop: "isstd", name: "isstd", pkg: "time", typ: $Bool, tag: ""}, {prop: "isutc", name: "isutc", pkg: "time", 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 = 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; } $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(); localOnce = new nosync.Once.ptr(); std0x = $toNativeArray($kindInt, [260, 265, 524, 526, 528, 274]); longDayNames = new sliceType(["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]); shortDayNames = new sliceType(["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]); shortMonthNames = new sliceType(["---", "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]); longMonthNames = new sliceType(["---", "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"]); unitMap = (_map = new $Map(), _key = "ns", _map[_key] = { k: _key, v: 1 }, _key = "us", _map[_key] = { k: _key, v: 1000 }, _key = "\xC2\xB5s", _map[_key] = { k: _key, v: 1000 }, _key = "\xCE\xBCs", _map[_key] = { k: _key, v: 1000 }, _key = "ms", _map[_key] = { k: _key, v: 1e+06 }, _key = "s", _map[_key] = { k: _key, v: 1e+09 }, _key = "m", _map[_key] = { k: _key, v: 6e+10 }, _key = "h", _map[_key] = { k: _key, v: 3.6e+12 }, _map); daysBefore = $toNativeArray($kindInt32, [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365]); utcLoc = new Location.ptr("UTC", sliceType$1.nil, sliceType$2.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"); /* */ } 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, io, runtime, sync, atomic, syscall, time, utf16, utf8, PathError, SyscallError, LinkError, File, file, dirInfo, FileInfo, FileMode, fileStat, sliceType, sliceType$1, ptrType$1, sliceType$2, ptrType$2, ptrType$3, ptrType$4, arrayType, ptrType$8, arrayType$1, ptrType$9, sliceType$4, sliceType$5, ptrType$10, sliceType$7, ptrType$11, funcType$1, ptrType$12, ptrType$13, ptrType$14, ptrType$17, devNullStat, devNullStat_ptr, runtime_args, init, NewSyscallError, IsExist, isExist, Getpid, init$1, Open, fixCount, Readlink, syscallMode, newFile, NewFile, epipecheck, openFile, openDir, OpenFile, Remove, TempDir, IsPathSeparator, init$2, Exit, Stat, Lstat, basename, isAbs, volumeName; errors = $packages["errors"]; js = $packages["github.com/gopherjs/gopherjs/js"]; 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", "PathError", "os", 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", "SyscallError", "os", 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", "LinkError", "os", 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", "File", "os", function(file_) { this.$val = this; if (arguments.length === 0) { this.file = ptrType$11.nil; return; } this.file = file_; }); file = $pkg.file = $newType(0, $kindStruct, "os.file", "file", "os", function(fd_, name_, dirinfo_, l_, isConsole_, lastbits_, readbuf_) { this.$val = this; if (arguments.length === 0) { this.fd = 0; this.name = ""; this.dirinfo = ptrType$10.nil; this.l = new sync.Mutex.ptr(); this.isConsole = false; this.lastbits = sliceType$2.nil; this.readbuf = sliceType$7.nil; return; } this.fd = fd_; this.name = name_; this.dirinfo = dirinfo_; this.l = l_; this.isConsole = isConsole_; this.lastbits = lastbits_; this.readbuf = readbuf_; }); dirInfo = $pkg.dirInfo = $newType(0, $kindStruct, "os.dirInfo", "dirInfo", "os", function(data_, needdata_, path_, isempty_) { this.$val = this; if (arguments.length === 0) { this.data = new syscall.Win32finddata.ptr(); this.needdata = false; this.path = ""; this.isempty = false; return; } this.data = data_; this.needdata = needdata_; this.path = path_; this.isempty = isempty_; }); FileInfo = $pkg.FileInfo = $newType(8, $kindInterface, "os.FileInfo", "FileInfo", "os", null); FileMode = $pkg.FileMode = $newType(4, $kindUint32, "os.FileMode", "FileMode", "os", null); fileStat = $pkg.fileStat = $newType(0, $kindStruct, "os.fileStat", "fileStat", "os", function(name_, sys_, Mutex_, path_, vol_, idxhi_, idxlo_) { this.$val = this; if (arguments.length === 0) { this.name = ""; this.sys = new syscall.Win32FileAttributeData.ptr(); this.Mutex = new sync.Mutex.ptr(); this.path = ""; this.vol = 0; this.idxhi = 0; this.idxlo = 0; return; } this.name = name_; this.sys = sys_; this.Mutex = Mutex_; this.path = path_; this.vol = vol_; this.idxhi = idxhi_; this.idxlo = idxlo_; }); sliceType = $sliceType($String); sliceType$1 = $sliceType(FileInfo); ptrType$1 = $ptrType(File); sliceType$2 = $sliceType($Uint8); ptrType$2 = $ptrType(PathError); ptrType$3 = $ptrType(LinkError); ptrType$4 = $ptrType($Uint32); arrayType = $arrayType($Uint8, 32); ptrType$8 = $ptrType($Int32); arrayType$1 = $arrayType($Uint16, 8192); ptrType$9 = $ptrType(arrayType$1); sliceType$4 = $sliceType(ptrType$9); sliceType$5 = $sliceType($Uint16); ptrType$10 = $ptrType(dirInfo); sliceType$7 = $sliceType($Int32); ptrType$11 = $ptrType(file); funcType$1 = $funcType([ptrType$11], [$error], false); ptrType$12 = $ptrType($Uint16); ptrType$13 = $ptrType($Uint8); ptrType$14 = $ptrType(fileStat); ptrType$17 = $ptrType(SyscallError); 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") : $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(["?"]); } }; 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") : _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") : names.$array[names.$offset + i] = _r); _i++; /* } */ $s = 1; continue; case 2: _tmp = names; _tmp$1 = err; names = _tmp; err = _tmp$1; return [names, err]; /* */ $s = -1; case -1: } 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); }; File.ptr.prototype.Readdir = function(n) { var $ptr, _tmp, _tmp$1, _tuple, err, f, fi, n; fi = sliceType$1.nil; err = $ifaceNil; f = this; if (f === ptrType$1.nil) { _tmp = sliceType$1.nil; _tmp$1 = $pkg.ErrInvalid; fi = _tmp; err = _tmp$1; return [fi, err]; } _tuple = f.readdir(n); fi = _tuple[0]; err = _tuple[1]; return [fi, err]; }; 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$1.nil) { _tmp = sliceType.nil; _tmp$1 = $pkg.ErrInvalid; names = _tmp; err = _tmp$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]; return [names, err]; /* */ $s = -1; case -1: } 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); }; 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; } return e.Op + " " + e.Path + ": " + _r; /* */ $s = -1; case -1: } 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; } return e.Syscall + ": " + _r; /* */ $s = -1; case -1: } 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; isExist = function(err) { var $ptr, _ref, err, pe, pe$1, pe$2; _ref = err; if (_ref === $ifaceNil) { pe = _ref; return false; } else if ($assertType(_ref, ptrType$2, true)[1]) { pe$1 = _ref.$val; err = pe$1.Err; } else if ($assertType(_ref, ptrType$3, true)[1]) { pe$2 = _ref.$val; err = pe$2.Err; } return $interfaceIsEqual(err, new syscall.Errno(183)) || $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_ptr, 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_ptr || (argc_ptr = new ptrType$8(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$4((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") : _ref.$array[_ref.$offset + _i]); ((i < 0 || i >= $pkg.Args.$length) ? $throwRuntimeError("index out of range") : $pkg.Args.$array[$pkg.Args.$offset + i] = syscall.UTF16ToString(new sliceType$5((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; } return e.Op + " " + e.Old + " " + e.New + ": " + _r; /* */ $s = -1; case -1: } 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, 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; 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; if (f === ptrType$1.nil) { _tmp = 0; _tmp$1 = $pkg.ErrInvalid; n = _tmp; err = _tmp$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) { n = 0; } if ((n === 0) && b.$length > 0 && $interfaceIsEqual(e, $ifaceNil)) { _tmp$2 = 0; _tmp$3 = io.EOF; n = _tmp$2; err = _tmp$3; 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; return [n, err]; /* */ $s = -1; case -1: } 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.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, 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; 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; if (f === ptrType$1.nil) { _tmp = 0; _tmp$1 = $pkg.ErrInvalid; n = _tmp; err = _tmp$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; 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: return [n, err]; /* */ $s = -1; case -1: } 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.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, 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; 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; if (f === ptrType$1.nil) { _tmp = 0; _tmp$1 = $pkg.ErrInvalid; n = _tmp; err = _tmp$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; return [n, err]; /* */ $s = -1; case -1: } 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.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, 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; 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; if (f === ptrType$1.nil) { _tmp = 0; _tmp$1 = $pkg.ErrInvalid; n = _tmp; err = _tmp$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: return [n, err]; /* */ $s = -1; case -1: } 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.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, 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; 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; if (f === ptrType$1.nil) { _tmp = new $Int64(0, 0); _tmp$1 = $pkg.ErrInvalid; ret = _tmp; err = _tmp$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$10.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; return [ret, err]; } _tmp$4 = r; _tmp$5 = $ifaceNil; ret = _tmp$4; err = _tmp$5; return [ret, err]; /* */ $s = -1; case -1: } 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.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, _tmp, _tmp$1, _tuple, err, f, ret, 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; err = $f.err; f = $f.f; ret = $f.ret; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: ret = 0; err = $ifaceNil; f = this; if (f === ptrType$1.nil) { _tmp = 0; _tmp$1 = $pkg.ErrInvalid; ret = _tmp; err = _tmp$1; return [ret, err]; } _r = f.Write(new sliceType$2($stringToBytes(s))); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _tuple = _r; ret = _tuple[0]; err = _tuple[1]; return [ret, err]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.WriteString }; } $f.$ptr = $ptr; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.err = err; $f.f = f; $f.ret = ret; $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, f; f = this; if (f === ptrType$1.nil) { return $pkg.ErrInvalid; } 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, _tuple, err, file$1, name; file$1 = ptrType$1.nil; err = $ifaceNil; _tuple = OpenFile(name, 0, 0); file$1 = _tuple[0]; err = _tuple[1]; return [file$1, err]; }; $pkg.Open = Open; fixCount = function(n, err) { var $ptr, err, n; if (n < 0) { n = 0; } return [n, err]; }; Readlink = function(name) { var $ptr, _tuple, _tuple$1, b, e, len, n, name; len = 128; while (true) { b = $makeSlice(sliceType$2, len); _tuple$1 = syscall.Readlink(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 = len * (2) >> 0; } }; $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, f, mode; f = this; if (f === ptrType$1.nil) { return $pkg.ErrInvalid; } 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, f, gid, uid; f = this; if (f === ptrType$1.nil) { return $pkg.ErrInvalid; } 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, f, size; f = this; if (f === ptrType$1.nil) { return $pkg.ErrInvalid; } 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; err = $ifaceNil; f = this; if (f === ptrType$1.nil) { err = $pkg.ErrInvalid; return err; } e = syscall.Fsync(f.file.fd); if (!($interfaceIsEqual(e, $ifaceNil))) { err = NewSyscallError("fsync", e); return err; } err = $ifaceNil; return err; }; File.prototype.Sync = function() { return this.$val.Sync(); }; File.ptr.prototype.Fd = function() { var $ptr, file$1; file$1 = this; if (file$1 === ptrType$1.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, m, m_ptr, name; f = new File.ptr(new file.ptr(h, name, ptrType$10.nil, new sync.Mutex.ptr(), false, sliceType$2.nil, sliceType$7.nil)); m = 0; if ($interfaceIsEqual(syscall.GetConsoleMode(f.file.fd, (m_ptr || (m_ptr = new ptrType$4(function() { return m; }, function($v) { m = $v; })))), $ifaceNil)) { f.file.isConsole = true; } runtime.SetFinalizer(f.file, new funcType$1($methodExpr(ptrType$11.prototype.close))); return f; }; NewFile = function(fd, name) { var $ptr, fd, h, name; h = (fd >>> 0); if (h === 4294967295) { return ptrType$1.nil; } 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$11.nil) && !(f.dirinfo === ptrType$10.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$1.nil; err = $ifaceNil; _tuple = syscall.Open(name, flag | 524288, syscallMode(perm)); r = _tuple[0]; e = _tuple[1]; if (!($interfaceIsEqual(e, $ifaceNil))) { _tmp = ptrType$1.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, maskp, name, namep, r; file$1 = ptrType$1.nil; err = $ifaceNil; _tuple = syscall.UTF16PtrFromString(name + "\\*"); maskp = _tuple[0]; e = _tuple[1]; if (!($interfaceIsEqual(e, $ifaceNil))) { _tmp = ptrType$1.nil; _tmp$1 = e; file$1 = _tmp; err = _tmp$1; return [file$1, err]; } d = new dirInfo.ptr(); _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$1.nil; _tmp$3 = e; file$1 = _tmp$2; err = _tmp$3; return [file$1, err]; } fa = $clone(new syscall.Win32FileAttributeData.ptr(), syscall.Win32FileAttributeData); _tuple$2 = syscall.UTF16PtrFromString(name); namep = _tuple$2[0]; e$1 = _tuple$2[1]; if (!($interfaceIsEqual(e$1, $ifaceNil))) { _tmp$4 = ptrType$1.nil; _tmp$5 = e$1; file$1 = _tmp$4; err = _tmp$5; return [file$1, err]; } e$1 = syscall.GetFileAttributesEx(namep, 0, fa); if (!($interfaceIsEqual(e$1, $ifaceNil))) { _tmp$6 = ptrType$1.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$1.nil; _tmp$9 = e$1; file$1 = _tmp$8; err = _tmp$9; return [file$1, err]; } d.isempty = true; } d.path = name; 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$1.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, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, err, errd, errf, file$1, flag, name, perm, r; file$1 = ptrType$1.nil; err = $ifaceNil; if (name === "") { _tmp = ptrType$1.nil; _tmp$1 = new PathError.ptr("open", name, new syscall.Errno(2)); file$1 = _tmp; err = _tmp$1; return [file$1, err]; } _tuple = openFile(name, flag, perm); r = _tuple[0]; errf = _tuple[1]; if ($interfaceIsEqual(errf, $ifaceNil)) { _tmp$2 = r; _tmp$3 = $ifaceNil; file$1 = _tmp$2; err = _tmp$3; return [file$1, err]; } _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(); _tmp$4 = ptrType$1.nil; _tmp$5 = new PathError.ptr("open", name, new syscall.Errno(536870954)); file$1 = _tmp$4; err = _tmp$5; return [file$1, err]; } _tmp$6 = r; _tmp$7 = $ifaceNil; file$1 = _tmp$6; err = _tmp$7; return [file$1, err]; } _tmp$8 = ptrType$1.nil; _tmp$9 = new PathError.ptr("open", name, errf); file$1 = _tmp$8; err = _tmp$9; return [file$1, err]; }; $pkg.OpenFile = OpenFile; File.ptr.prototype.Close = function() { var $ptr, file$1; file$1 = this; if (file$1 === ptrType$1.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$11.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.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$1.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$5(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), new sync.Mutex.ptr(), 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.readConsole = function(b) { var $ptr, _i, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, b, err, err$1, f, i, n, nr, numBytes, nw, nw_ptr, p, r, wchars; n = 0; err = $ifaceNil; f = this; if (b.$length === 0) { _tmp = 0; _tmp$1 = $ifaceNil; n = _tmp; err = _tmp$1; return [n, err]; } if (f.file.readbuf.$length === 0) { numBytes = b.$length; if (numBytes > 16000) { numBytes = 16000; } wchars = $makeSlice(sliceType$5, numBytes); p = ptrType$12.nil; if (b.$length > 0) { p = $indexPtr(wchars.$array, wchars.$offset + 0, ptrType$12); } nw = 0; err$1 = syscall.ReadConsole(f.file.fd, p, (wchars.$length >>> 0), (nw_ptr || (nw_ptr = new ptrType$4(function() { return nw; }, function($v) { nw = $v; }))), ptrType$13.nil); if (!($interfaceIsEqual(err$1, $ifaceNil))) { _tmp$2 = 0; _tmp$3 = err$1; n = _tmp$2; err = _tmp$3; return [n, err]; } f.file.readbuf = utf16.Decode($subslice(wchars, 0, nw)); } _ref = f.file.readbuf; _i = 0; while (true) { if (!(_i < _ref.$length)) { break; } i = _i; r = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]); if (utf8.RuneLen(r) > b.$length) { f.file.readbuf = $subslice(f.file.readbuf, i); _tmp$4 = n; _tmp$5 = $ifaceNil; n = _tmp$4; err = _tmp$5; return [n, err]; } nr = utf8.EncodeRune(b, r); b = $subslice(b, nr); n = n + (nr) >> 0; _i++; } f.file.readbuf = sliceType$7.nil; _tmp$6 = n; _tmp$7 = $ifaceNil; n = _tmp$6; err = _tmp$7; return [n, err]; }; File.prototype.readConsole = function(b) { return this.$val.readConsole(b); }; File.ptr.prototype.read = 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.readConsole(b); n = _tuple[0]; err = _tuple[1]; return [n, err]; } _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]; return [n, err]; /* */ $s = -1; case -1: } 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._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; 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$4(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; return [n, err]; } _tmp$4 = 0; _tmp$5 = e; n = _tmp$4; err = _tmp$5; return [n, err]; } _tmp$6 = (done[0] >> 0); _tmp$7 = $ifaceNil; n = _tmp$6; err = _tmp$7; return [n, err]; /* */ $s = -1; case -1: } 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$2.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$2, 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$12), (uint16s.$length >>> 0), (written.$ptr || (written.$ptr = new ptrType$4(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, written))), ptrType$13.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]; 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]; return [n, err]; /* */ $s = -1; case -1: } 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; 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$4(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; return [n, err]; } _tmp$4 = (done[0] >> 0); _tmp$5 = $ifaceNil; n = _tmp$4; err = _tmp$5; return [n, err]; /* */ $s = -1; case -1: } 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]; return [ret, err]; /* */ $s = -1; case -1: } 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(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; } } } return new PathError.ptr("remove", name, e); }; $pkg.Remove = Remove; TempDir = function() { var $ptr, _tuple, _tuple$1, dirw, n, x; dirw = $makeSlice(sliceType$5, 260); _tuple = syscall.GetTempPath((dirw.$length >>> 0), $indexPtr(dirw.$array, dirw.$offset + 0, ptrType$12)); n = _tuple[0]; if (n > (dirw.$length >>> 0)) { dirw = $makeSlice(sliceType$5, n); _tuple$1 = syscall.GetTempPath((dirw.$length >>> 0), $indexPtr(dirw.$array, dirw.$offset + 0, ptrType$12)); n = _tuple$1[0]; if (n > (dirw.$length >>> 0)) { n = 0; } } if (n > 0 && ((x = n - 1 >>> 0, ((x < 0 || x >= dirw.$length) ? $throwRuntimeError("index out of range") : dirw.$array[dirw.$offset + x])) === 92)) { n = n - (1) >>> 0; } return $runesToString(utf16.Decode($subslice(dirw, 0, n))); }; $pkg.TempDir = TempDir; IsPathSeparator = function(c) { var $ptr, c; return (c === 92) || (c === 47); }; $pkg.IsPathSeparator = IsPathSeparator; init$2 = function() { var $ptr; return; $pkg.Args = runtime_args(); }; Exit = function(code) { var $ptr, code; syscall.Exit(code); }; $pkg.Exit = Exit; File.ptr.prototype.Stat = function() { var $ptr, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, d, e, err, fi, file$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; _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; d = $f.d; e = $f.e; err = $f.err; fi = $f.fi; file$1 = $f.file$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: d = [d]; fi = $ifaceNil; err = $ifaceNil; file$1 = this; if (file$1 === ptrType$1.nil) { _tmp = $ifaceNil; _tmp$1 = $pkg.ErrInvalid; fi = _tmp; err = _tmp$1; return [fi, err]; } if (file$1 === ptrType$1.nil || file$1.file.fd < 0) { _tmp$2 = $ifaceNil; _tmp$3 = new syscall.Errno(536870951); fi = _tmp$2; err = _tmp$3; return [fi, err]; } /* */ if (file$1.file.isdir()) { $s = 1; continue; } /* */ $s = 2; continue; /* if (file$1.file.isdir()) { */ case 1: _r = Stat(file$1.file.name); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _tuple = _r; fi = _tuple[0]; err = _tuple[1]; return [fi, err]; /* } */ case 2: if (file$1.file.name === "NUL") { _tmp$4 = devNullStat; _tmp$5 = $ifaceNil; fi = _tmp$4; err = _tmp$5; return [fi, err]; } d[0] = $clone(new syscall.ByHandleFileInformation.ptr(), syscall.ByHandleFileInformation); e = syscall.GetFileInformationByHandle(file$1.file.fd, d[0]); if (!($interfaceIsEqual(e, $ifaceNil))) { _tmp$6 = $ifaceNil; _tmp$7 = new PathError.ptr("GetFileInformationByHandle", file$1.file.name, e); fi = _tmp$6; err = _tmp$7; return [fi, err]; } _tmp$8 = 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), new sync.Mutex.ptr(), "", d[0].VolumeSerialNumber, d[0].FileIndexHigh, d[0].FileIndexLow); _tmp$9 = $ifaceNil; fi = _tmp$8; err = _tmp$9; return [fi, err]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.Stat }; } $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.d = d; $f.e = e; $f.err = err; $f.fi = fi; $f.file$1 = file$1; $f.$s = $s; $f.$r = $r; return $f; }; File.prototype.Stat = function() { return this.$val.Stat(); }; Stat = function(name) { var $ptr, _r, _tmp, _tmp$1, _tuple, _tuple$1, err, fi, 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; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; err = $f.err; fi = $f.fi; name = $f.name; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: fi = $ifaceNil; err = $ifaceNil; /* while (true) { */ case 1: _tuple = Lstat(name); fi = _tuple[0]; err = _tuple[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { 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: return [fi, err]; /* } */ case 4: _tuple$1 = Readlink(name); name = _tuple$1[0]; err = _tuple$1[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { return [fi, err]; } /* } */ $s = 1; continue; case 2: _tmp = fi; _tmp$1 = err; fi = _tmp; err = _tmp$1; return [fi, err]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Stat }; } $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.fi = fi; $f.name = name; $f.$s = $s; $f.$r = $r; return $f; }; $pkg.Stat = Stat; Lstat = function(name) { 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, e, err, fi, fs, name, namep; fi = $ifaceNil; err = $ifaceNil; if (name.length === 0) { _tmp = $ifaceNil; _tmp$1 = new PathError.ptr("Lstat", name, new syscall.Errno(3)); fi = _tmp; err = _tmp$1; return [fi, err]; } if (name === "NUL") { _tmp$2 = devNullStat; _tmp$3 = $ifaceNil; fi = _tmp$2; err = _tmp$3; return [fi, err]; } fs = new fileStat.ptr(basename(name), new syscall.Win32FileAttributeData.ptr(), new sync.Mutex.ptr(), "", 0, 0, 0); _tuple = syscall.UTF16PtrFromString(name); namep = _tuple[0]; e = _tuple[1]; if (!($interfaceIsEqual(e, $ifaceNil))) { _tmp$4 = $ifaceNil; _tmp$5 = new PathError.ptr("Lstat", name, e); fi = _tmp$4; err = _tmp$5; return [fi, err]; } e = syscall.GetFileAttributesEx(namep, 0, fs.sys); if (!($interfaceIsEqual(e, $ifaceNil))) { _tmp$6 = $ifaceNil; _tmp$7 = new PathError.ptr("GetFileAttributesEx", name, e); fi = _tmp$6; err = _tmp$7; return [fi, err]; } fs.path = name; if (!isAbs(fs.path)) { _tuple$1 = syscall.FullPath(fs.path); fs.path = _tuple$1[0]; e = _tuple$1[1]; if (!($interfaceIsEqual(e, $ifaceNil))) { _tmp$8 = $ifaceNil; _tmp$9 = e; fi = _tmp$8; err = _tmp$9; return [fi, err]; } } _tmp$10 = fs; _tmp$11 = $ifaceNil; fi = _tmp$10; err = _tmp$11; return [fi, err]; }; $pkg.Lstat = Lstat; 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 = name.substring(2); } i = name.length - 1 >> 0; while (true) { if (!(i > 0 && ((name.charCodeAt(i) === 47) || (name.charCodeAt(i) === 92)))) { break; } name = name.substring(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 = name.substring((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 = path.substring(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 = path.substring(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 = path.substring(0, n); return v; } break; } n = n + (1) >> 0; } } v = ""; return v; }; 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 = $clone(arrayType.zero(), arrayType); 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") : 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") : 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") : buf[w] = (c$1 << 24 >>> 24)); } else { ((w < 0 || w >= buf.length) ? $throwRuntimeError("index out of range") : buf[w] = 45); } w = w + (1) >> 0; _i$1 += _rune$1[1]; } return $bytesToString($subslice(new sliceType$2(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; } 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$2.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; ptrType$17.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; ptrType$3.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; ptrType$1.methods = [{prop: "readdirnames", name: "readdirnames", pkg: "os", typ: $funcType([$Int], [sliceType, $error], false)}, {prop: "Readdir", name: "Readdir", pkg: "", typ: $funcType([$Int], [sliceType$1, $error], false)}, {prop: "Readdirnames", name: "Readdirnames", pkg: "", typ: $funcType([$Int], [sliceType, $error], false)}, {prop: "Name", name: "Name", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "ReadAt", name: "ReadAt", pkg: "", typ: $funcType([sliceType$2, $Int64], [$Int, $error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "WriteAt", name: "WriteAt", pkg: "", typ: $funcType([sliceType$2, $Int64], [$Int, $error], false)}, {prop: "Seek", name: "Seek", pkg: "", typ: $funcType([$Int64, $Int], [$Int64, $error], false)}, {prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([$String], [$Int, $error], false)}, {prop: "Chdir", name: "Chdir", pkg: "", typ: $funcType([], [$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: "readdir", name: "readdir", pkg: "os", typ: $funcType([$Int], [sliceType$1, $error], false)}, {prop: "readConsole", name: "readConsole", pkg: "os", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "read", name: "read", pkg: "os", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "pread", name: "pread", pkg: "os", typ: $funcType([sliceType$2, $Int64], [$Int, $error], false)}, {prop: "writeConsole", name: "writeConsole", pkg: "os", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "write", name: "write", pkg: "os", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "pwrite", name: "pwrite", pkg: "os", typ: $funcType([sliceType$2, $Int64], [$Int, $error], false)}, {prop: "seek", name: "seek", pkg: "os", typ: $funcType([$Int64, $Int], [$Int64, $error], false)}, {prop: "Stat", name: "Stat", pkg: "", typ: $funcType([], [FileInfo, $error], false)}]; ptrType$11.methods = [{prop: "isdir", name: "isdir", pkg: "os", typ: $funcType([], [$Bool], false)}, {prop: "close", name: "close", pkg: "os", typ: $funcType([], [$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$14.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", pkg: "", typ: $String, tag: ""}, {prop: "Path", name: "Path", pkg: "", typ: $String, tag: ""}, {prop: "Err", name: "Err", pkg: "", typ: $error, tag: ""}]); SyscallError.init([{prop: "Syscall", name: "Syscall", pkg: "", typ: $String, tag: ""}, {prop: "Err", name: "Err", pkg: "", typ: $error, tag: ""}]); LinkError.init([{prop: "Op", name: "Op", pkg: "", typ: $String, tag: ""}, {prop: "Old", name: "Old", pkg: "", typ: $String, tag: ""}, {prop: "New", name: "New", pkg: "", typ: $String, tag: ""}, {prop: "Err", name: "Err", pkg: "", typ: $error, tag: ""}]); File.init([{prop: "file", name: "", pkg: "os", typ: ptrType$11, tag: ""}]); file.init([{prop: "fd", name: "fd", pkg: "os", typ: syscall.Handle, tag: ""}, {prop: "name", name: "name", pkg: "os", typ: $String, tag: ""}, {prop: "dirinfo", name: "dirinfo", pkg: "os", typ: ptrType$10, tag: ""}, {prop: "l", name: "l", pkg: "os", typ: sync.Mutex, tag: ""}, {prop: "isConsole", name: "isConsole", pkg: "os", typ: $Bool, tag: ""}, {prop: "lastbits", name: "lastbits", pkg: "os", typ: sliceType$2, tag: ""}, {prop: "readbuf", name: "readbuf", pkg: "os", typ: sliceType$7, tag: ""}]); dirInfo.init([{prop: "data", name: "data", pkg: "os", typ: syscall.Win32finddata, tag: ""}, {prop: "needdata", name: "needdata", pkg: "os", typ: $Bool, tag: ""}, {prop: "path", name: "path", pkg: "os", typ: $String, tag: ""}, {prop: "isempty", name: "isempty", pkg: "os", typ: $Bool, 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([{prop: "name", name: "name", pkg: "os", typ: $String, tag: ""}, {prop: "sys", name: "sys", pkg: "os", typ: syscall.Win32FileAttributeData, tag: ""}, {prop: "Mutex", name: "", pkg: "", typ: sync.Mutex, tag: ""}, {prop: "path", name: "path", pkg: "os", typ: $String, tag: ""}, {prop: "vol", name: "vol", pkg: "os", typ: $Uint32, tag: ""}, {prop: "idxhi", name: "idxhi", pkg: "os", typ: $Uint32, tag: ""}, {prop: "idxlo", name: "idxlo", pkg: "os", 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 = 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; } $r = sync.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = atomic.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = syscall.$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; } $r = utf16.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = utf8.$init(); /* */ $s = 10; case 10: 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.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(), new sync.Mutex.ptr(), "", 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["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, sliceType$6, ptrType, arrayType, arrayType$1, ptrType$1, arrayType$2, arrayType$3, arrayType$4, arrayType$5, arrayType$6, ptrType$2, ptrType$3, ptrType$4, optimize, powtab, float64pow10, float32pow10, leftcheats, smallPowersOfTen, powersOfTen, uint64pow10, float32info, float32info_ptr, float64info, float64info_ptr, isPrint16, isNotPrint16, isPrint32, isNotPrint32, shifts, ParseBool, equalIgnoreCase, special, readFloat, atof64exact, atof32exact, atof32, atof64, ParseFloat, syntaxError, rangeError, cutoff64, ParseUint, ParseInt, Atoi, digitZero, trim, rightShift, prefixIsLessThan, leftShift, shouldRoundUp, frexp10Many, adjustLastDigitFixed, adjustLastDigit, FormatFloat, AppendFloat, genericFtoa, bigFtoa, formatDigits, roundShortest, fmtE, fmtF, fmtB, max, FormatUint, FormatInt, Itoa, AppendInt, formatBits, quoteWith, Quote, QuoteToASCII, QuoteRune, AppendQuoteRune, QuoteRuneToASCII, AppendQuoteRuneToASCII, CanBackquote, unhex, UnquoteChar, Unquote, contains, bsearch16, bsearch32, IsPrint; errors = $packages["errors"]; math = $packages["math"]; utf8 = $packages["unicode/utf8"]; NumError = $pkg.NumError = $newType(0, $kindStruct, "strconv.NumError", "NumError", "strconv", 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", "decimal", "strconv", function(d_, nd_, dp_, neg_, trunc_) { this.$val = this; if (arguments.length === 0) { this.d = arrayType$6.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", "leftCheat", "strconv", 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", "extFloat", "strconv", 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", "floatInfo", "strconv", 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", "decimalSlice", "strconv", 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); sliceType$6 = $sliceType($Uint8); ptrType = $ptrType(NumError); arrayType = $arrayType($Uint8, 24); arrayType$1 = $arrayType($Uint8, 32); ptrType$1 = $ptrType(floatInfo); arrayType$2 = $arrayType($Uint8, 3); arrayType$3 = $arrayType($Uint8, 50); arrayType$4 = $arrayType($Uint8, 65); arrayType$5 = $arrayType($Uint8, 4); arrayType$6 = $arrayType($Uint8, 800); ptrType$2 = $ptrType(decimal); ptrType$3 = $ptrType(decimalSlice); ptrType$4 = $ptrType(extFloat); ParseBool = function(str) { var $ptr, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, err, str, value; value = false; err = $ifaceNil; _ref = str; if (_ref === "1" || _ref === "t" || _ref === "T" || _ref === "true" || _ref === "TRUE" || _ref === "True") { _tmp = true; _tmp$1 = $ifaceNil; value = _tmp; err = _tmp$1; return [value, err]; } else if (_ref === "0" || _ref === "f" || _ref === "F" || _ref === "false" || _ref === "FALSE" || _ref === "False") { _tmp$2 = false; _tmp$3 = $ifaceNil; value = _tmp$2; err = _tmp$3; return [value, err]; } _tmp$4 = false; _tmp$5 = syntaxError("ParseBool", str); value = _tmp$4; err = _tmp$5; return [value, err]; }; $pkg.ParseBool = ParseBool; 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, _ref, _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]; } _ref = s.charCodeAt(0); if (_ref === 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 (_ref === 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 (_ref === 110 || _ref === 78) { if (equalIgnoreCase(s, "nan")) { _tmp$4 = math.NaN(); _tmp$5 = true; f = _tmp$4; ok = _tmp$5; return [f, ok]; } } else if (_ref === 105 || _ref === 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") : 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 = ((e * 10 >> 0) + (s.charCodeAt(i) >> 0) >> 0) - 48 >> 0; } i = i + (1) >> 0; } b.dp = b.dp + ((e * esign >> 0)) >> 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, _ref, 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); _ref = true; if (_ref === (c === 46)) { if (sawdot) { return [mantissa, exp, neg, trunc, ok]; } sawdot = true; dp = nd; i = i + (1) >> 0; continue; } else if (_ref === 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 = ((e * 10 >> 0) + (s.charCodeAt(i) >> 0) >> 0) - 48 >> 0; } i = i + (1) >> 0; } dp = dp + ((e * esign >> 0)) >> 0; } if (!((i === s.length))) { return [mantissa, exp, neg, trunc, ok]; } 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") : 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") : 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; return [b, overflow]; /* */ $s = -1; case -1: } 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") : 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") : 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") : 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") : 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") : 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") : 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(); 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 = $clone(new decimal.ptr(), decimal); 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(); 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 = $clone(new decimal.ptr(), decimal); 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, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, bitSize, err, err1, err1$1, f, f1, f1$1, s; f = 0; err = $ifaceNil; if (bitSize === 32) { _tuple = atof32(s); f1 = _tuple[0]; err1 = _tuple[1]; _tmp = f1; _tmp$1 = err1; f = _tmp; err = _tmp$1; return [f, err]; } _tuple$1 = atof64(s); f1$1 = _tuple$1[0]; err1$1 = _tuple$1[1]; _tmp$2 = f1$1; _tmp$3 = err1$1; f = _tmp$2; err = _tmp$3; return [f, err]; }; $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; } return "strconv." + e.Func + ": " + "parsing " + Quote(e.Num) + ": " + _r; /* */ $s = -1; case -1: } 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); }; cutoff64 = function(base) { var $ptr, base, x; if (base < 2) { return new $Uint64(0, 0); } return (x = $div64(new $Uint64(4294967295, 4294967295), new $Uint64(0, base), false), new $Uint64(x.$high + 0, x.$low + 1)); }; ParseUint = 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, x$1, $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 = 1; continue; } /* */ if (2 <= base && base <= 36) { $s = 2; continue; } /* */ if (base === 0) { $s = 3; continue; } /* */ $s = 4; continue; /* if (s.length < 1) { */ case 1: err = $pkg.ErrSyntax; /* goto Error */ $s = 6; continue; $s = 5; continue; /* } else if (2 <= base && base <= 36) { */ case 2: $s = 5; continue; /* } else if (base === 0) { */ case 3: /* */ if ((s.charCodeAt(0) === 48) && s.length > 1 && ((s.charCodeAt(1) === 120) || (s.charCodeAt(1) === 88))) { $s = 7; continue; } /* */ if (s.charCodeAt(0) === 48) { $s = 8; continue; } /* */ $s = 9; continue; /* if ((s.charCodeAt(0) === 48) && s.length > 1 && ((s.charCodeAt(1) === 120) || (s.charCodeAt(1) === 88))) { */ case 7: base = 16; s = s.substring(2); /* */ if (s.length < 1) { $s = 11; continue; } /* */ $s = 12; continue; /* if (s.length < 1) { */ case 11: err = $pkg.ErrSyntax; /* goto Error */ $s = 6; continue; /* } */ case 12: $s = 10; continue; /* } else if (s.charCodeAt(0) === 48) { */ case 8: base = 8; $s = 10; continue; /* } else { */ case 9: base = 10; /* } */ case 10: $s = 5; continue; /* } else { */ case 4: err = errors.New("invalid base " + Itoa(base)); /* goto Error */ $s = 6; continue; /* } */ case 5: n = new $Uint64(0, 0); cutoff = cutoff64(base); maxVal = (x = $shiftLeft64(new $Uint64(0, 1), (bitSize >>> 0)), new $Uint64(x.$high - 0, x.$low - 1)); i = 0; /* while (true) { */ case 13: /* if (!(i < s.length)) { break; } */ if(!(i < s.length)) { $s = 14; continue; } v = 0; d = s.charCodeAt(i); /* */ if (48 <= d && d <= 57) { $s = 15; continue; } /* */ if (97 <= d && d <= 122) { $s = 16; continue; } /* */ if (65 <= d && d <= 90) { $s = 17; continue; } /* */ $s = 18; continue; /* if (48 <= d && d <= 57) { */ case 15: v = d - 48 << 24 >>> 24; $s = 19; continue; /* } else if (97 <= d && d <= 122) { */ case 16: v = (d - 97 << 24 >>> 24) + 10 << 24 >>> 24; $s = 19; continue; /* } else if (65 <= d && d <= 90) { */ case 17: v = (d - 65 << 24 >>> 24) + 10 << 24 >>> 24; $s = 19; continue; /* } else { */ case 18: n = new $Uint64(0, 0); err = $pkg.ErrSyntax; /* goto Error */ $s = 6; continue; /* } */ case 19: /* */ if ((v >> 0) >= base) { $s = 20; continue; } /* */ $s = 21; continue; /* if ((v >> 0) >= base) { */ case 20: n = new $Uint64(0, 0); err = $pkg.ErrSyntax; /* goto Error */ $s = 6; continue; /* } */ case 21: /* */ if ((n.$high > cutoff.$high || (n.$high === cutoff.$high && n.$low >= cutoff.$low))) { $s = 22; continue; } /* */ $s = 23; continue; /* if ((n.$high > cutoff.$high || (n.$high === cutoff.$high && n.$low >= cutoff.$low))) { */ case 22: n = new $Uint64(4294967295, 4294967295); err = $pkg.ErrRange; /* goto Error */ $s = 6; continue; /* } */ case 23: n = $mul64(n, (new $Uint64(0, base))); n1 = (x$1 = new $Uint64(0, v), new $Uint64(n.$high + x$1.$high, n.$low + x$1.$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 = 24; continue; } /* */ $s = 25; 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 24: n = new $Uint64(4294967295, 4294967295); err = $pkg.ErrRange; /* goto Error */ $s = 6; continue; /* } */ case 25: n = n1; i = i + (1) >> 0; /* } */ $s = 13; continue; case 14: _tmp$2 = n; _tmp$3 = $ifaceNil; n = _tmp$2; err = _tmp$3; return [n, err]; /* Error: */ case 6: _tmp$4 = n; _tmp$5 = new NumError.ptr("ParseUint", s0, err); n = _tmp$4; err = _tmp$5; return [n, err]; /* */ $s = -1; case -1: } 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 = s.substring(1); } else if (s.charCodeAt(0) === 45) { neg = true; s = s.substring(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, _tmp, _tmp$1, _tuple, err, i, i64, s; i = 0; err = $ifaceNil; _tuple = ParseInt(s, 10, 0); i64 = _tuple[0]; err = _tuple[1]; _tmp = ((i64.$low + ((i64.$high >> 31) * 4294967296)) >> 0); _tmp$1 = err; i = _tmp; err = _tmp$1; return [i, 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") : buf.$array[buf.$offset + w] = 48); w = w + (1) >> 0; ((w < 0 || w >= buf.$length) ? $throwRuntimeError("index out of range") : 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") : 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") : 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") : 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 = $clone(arrayType.zero(), arrayType); 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") : 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") : x$1[x$2] = ((n < 0 || n >= buf.length) ? $throwRuntimeError("index out of range") : 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, n, r, w, x, x$1, x$2, x$3, y, y$1; r = 0; w = 0; n = 0; while (true) { if (!(((n >> $min(k, 31)) >> 0) === 0)) { break; } if (r >= a.nd) { if (n === 0) { a.nd = 0; return; } while (true) { if (!(((n >> $min(k, 31)) >> 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") : x[r])) >> 0); n = ((n * 10 >> 0) + c >> 0) - 48 >> 0; r = r + (1) >> 0; } a.dp = a.dp - ((r - 1 >> 0)) >> 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") : x$1[r])) >> 0); dig = (n >> $min(k, 31)) >> 0; n = n - (((y = k, y < 32 ? (dig << y) : 0) >> 0)) >> 0; (x$2 = a.d, ((w < 0 || w >= x$2.length) ? $throwRuntimeError("index out of range") : 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 = (n >> $min(k, 31)) >> 0; n = n - (((y$1 = k, y$1 < 32 ? (dig$1 << y$1) : 0) >> 0)) >> 0; if (w < 800) { (x$3 = a.d, ((w < 0 || w >= x$3.length) ? $throwRuntimeError("index out of range") : 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") : b.$array[b.$offset + i]) === s.charCodeAt(i)))) { return ((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : 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") : 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") : 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") : 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") : 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") : 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 > 27)) { break; } leftShift(a, 27); k = k - (27) >> 0; } leftShift(a, (k >>> 0)); } else if (k < 0) { while (true) { if (!(k < -27)) { break; } rightShift(a, 27); k = k + (27) >> 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") : 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") : 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") : 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") : x[i])); if (c < 57) { (x$2 = a.d, ((i < 0 || i >= x$2.length) ? $throwRuntimeError("index out of range") : x$2[i] = (x$1 = a.d, ((i < 0 || i >= x$1.length) ? $throwRuntimeError("index out of range") : 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") : 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(); upper = new extFloat.ptr(); 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); $copy(lower, _tmp, extFloat); $copy(upper, _tmp$1, extFloat); return [lower, upper]; } expBiased = exp - flt.bias >> 0; $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), extFloat); if (!((x$2 = $shiftLeft64(new $Uint64(0, 1), flt.mantbits), (mant.$high === x$2.$high && mant.$low === x$2.$low))) || (expBiased === 1)) { $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), extFloat); } else { $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), extFloat); } 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; g = $clone(g, extFloat); _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") : 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") : uint64pow10[adjExp]))); f.Normalize(); } else { f.Normalize(); f.Multiply(((adjExp < 0 || adjExp >= smallPowersOfTen.length) ? $throwRuntimeError("index out of range") : smallPowersOfTen[adjExp])); errors$1 = errors$1 + (4) >> 0; } f.Multiply(((i < 0 || i >= powersOfTen.length) ? $throwRuntimeError("index out of range") : powersOfTen[i])); 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 = (((-46 - f.exp >> 0)) * 28 >> 0) / 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") : 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(((i < 0 || i >= powersOfTen.length) ? $throwRuntimeError("index out of range") : powersOfTen[i])); _tmp = -((-348 + (i * 8 >> 0) >> 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(((i < 0 || i >= powersOfTen.length) ? $throwRuntimeError("index out of range") : powersOfTen[i])); b.Multiply(((i < 0 || i >= powersOfTen.length) ? $throwRuntimeError("index out of range") : powersOfTen[i])); return exp10; }; extFloat.ptr.prototype.FixedDecimal = function(d, n) { var $ptr, _q, _q$1, _tmp, _tmp$1, _tuple, buf, d, digit, exp10, f, fraction, i, i$1, i$2, integer, integerDigits, n, nd, needed, nonAsciiName, ok, pos, pow, pow10, rest, shift, v, v1, 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; 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)); nonAsciiName = 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") : 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 - ((x$5 = (pow10.$low >>> 0), (((integer >>> 16 << 16) * x$5 >>> 0) + (integer << 16 >>> 16) * x$5) >>> 0)) >>> 0; } else { rest = 0; } buf = $clone(arrayType$1.zero(), arrayType$1); 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 - (((((10 >>> 16 << 16) * v1 >>> 0) + (10 << 16 >>> 16) * v1) >>> 0)) >>> 0; pos = pos - (1) >> 0; ((pos < 0 || pos >= buf.length) ? $throwRuntimeError("index out of range") : buf[pos] = ((v + 48 >>> 0) << 24 >>> 24)); v = v1; } i$1 = pos; while (true) { if (!(i$1 < 32)) { break; } (x$6 = d.d, x$7 = i$1 - pos >> 0, ((x$7 < 0 || x$7 >= x$6.$length) ? $throwRuntimeError("index out of range") : x$6.$array[x$6.$offset + x$7] = ((i$1 < 0 || i$1 >= buf.length) ? $throwRuntimeError("index out of range") : 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))); nonAsciiName = $mul64(nonAsciiName, (new $Uint64(0, 10))); if ((x$8 = $mul64(new $Uint64(0, 2), nonAsciiName), x$9 = $shiftLeft64(new $Uint64(0, 1), shift), (x$8.$high > x$9.$high || (x$8.$high === x$9.$high && x$8.$low > x$9.$low)))) { return false; } digit = $shiftRightUint64(fraction, shift); (x$10 = d.d, ((nd < 0 || nd >= x$10.$length) ? $throwRuntimeError("index out of range") : x$10.$array[x$10.$offset + nd] = (new $Uint64(digit.$high + 0, digit.$low + 48).$low << 24 >>> 24))); fraction = (x$11 = $shiftLeft64(digit, shift), new $Uint64(fraction.$high - x$11.$high, fraction.$low - x$11.$low)); nd = nd + (1) >> 0; needed = needed - (1) >> 0; } d.nd = nd; } ok = adjustLastDigitFixed(d, (x$12 = $shiftLeft64(new $Uint64(0, rest), shift), new $Uint64(x$12.$high | fraction.$high, (x$12.$low | fraction.$low) >>> 0)), pow10, shift, nonAsciiName); if (!ok) { return false; } i$2 = d.nd - 1 >> 0; while (true) { if (!(i$2 >= 0)) { break; } if (!(((x$13 = d.d, ((i$2 < 0 || i$2 >= x$13.$length) ? $throwRuntimeError("index out of range") : x$13.$array[x$13.$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, nonAsciiName) { var $ptr, d, den, i, nonAsciiName, 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< x$2.$high || (x$1.$high === x$2.$high && x$1.$low > x$2.$low)))) { $panic(new $String("strconv: \xCE\xB5 > (den< 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") : 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") : 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") : x$10.$array[x$10.$offset + i] = (x$9 = d.d, ((i < 0 || i >= x$9.$length) ? $throwRuntimeError("index out of range") : 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$24, 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 = $clone(arrayType.zero(), arrayType); 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") : 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") : 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") : 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") : 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") : 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") : x$18.$array[x$18.$offset + i$2] = ((digit + 48 >>> 0) << 24 >>> 24))); integer = integer - ((x$19 = (pow$1.$low >>> 0), (((digit >>> 16 << 16) * x$19 >>> 0) + (digit << 16 >>> 16) * x$19) >>> 0)) >>> 0; currentDiff = (x$20 = $shiftLeft64(new $Uint64(0, integer), shift), new $Uint64(x$20.$high + fraction.$high, x$20.$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$21 = d.d, x$22 = d.nd, ((x$22 < 0 || x$22 >= x$21.$length) ? $throwRuntimeError("index out of range") : x$21.$array[x$21.$offset + x$22] = ((digit$1 + 48 >> 0) << 24 >>> 24))); d.nd = d.nd + (1) >> 0; fraction = (x$23 = $shiftLeft64(new $Uint64(0, digit$1), shift), new $Uint64(fraction.$high - x$23.$high, fraction.$low - x$23.$low)); if ((x$24 = $mul64(allowance, multiplier), (fraction.$high < x$24.$high || (fraction.$high === x$24.$high && fraction.$low < x$24.$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") : x$5.$array[x$5.$offset + _index] = (x$4 = d.d, ((_index < 0 || _index >= x$4.$length) ? $throwRuntimeError("index out of range") : 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") : x$12.$array[x$12.$offset + 0])) === 48)) { d.nd = 0; d.dp = 0; } return true; }; FormatFloat = function(f, fmt, prec, bitSize) { var $ptr, bitSize, f, fmt, prec; return $bytesToString(genericFtoa($makeSlice(sliceType$6, 0, max(prec + 4 >> 0, 24)), f, fmt, prec, bitSize)); }; $pkg.FormatFloat = FormatFloat; 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, _ref, _ref$1, _ref$2, _ref$3, _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; _ref = bitSize; if (_ref === 32) { bits = new $Uint64(0, math.Float32bits($fround(val))); flt = float32info; } else if (_ref === 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)); _ref$1 = exp; if (_ref$1 === (((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, new sliceType$6($stringToBytes(s))); } else if (_ref$1 === 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 = $clone(new decimalSlice.ptr(), decimalSlice); ok = false; shortest = prec < 0; if (shortest) { f = new extFloat.ptr(); _tuple = f.AssignComputeBounds(mant, exp, neg, flt); lower = $clone(_tuple[0], extFloat); upper = $clone(_tuple[1], extFloat); buf = $clone(arrayType$1.zero(), arrayType$1); digs.d = new sliceType$6(buf); ok = f.ShortestDecimal(digs, lower, upper); if (!ok) { return bigFtoa(dst, prec, fmt, neg, mant, exp, flt); } _ref$2 = fmt; if (_ref$2 === 101 || _ref$2 === 69) { prec = digs.nd - 1 >> 0; } else if (_ref$2 === 102) { prec = max(digs.nd - digs.dp >> 0, 0); } else if (_ref$2 === 103 || _ref$2 === 71) { prec = digs.nd; } } else if (!((fmt === 102))) { digits = prec; _ref$3 = fmt; if (_ref$3 === 101 || _ref$3 === 69) { digits = digits + (1) >> 0; } else if (_ref$3 === 103 || _ref$3 === 71) { if (prec === 0) { prec = 1; } digits = prec; } if (digits <= 15) { buf$1 = $clone(arrayType.zero(), arrayType); 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, digs, prec, fmt); }; bigFtoa = function(dst, prec, fmt, neg, mant, exp, flt) { var $ptr, _ref, _ref$1, d, digs, dst, exp, flt, fmt, mant, neg, prec, shortest; d = new decimal.ptr(); d.Assign(mant); d.Shift(exp - (flt.mantbits >> 0) >> 0); digs = $clone(new decimalSlice.ptr(), decimalSlice); shortest = prec < 0; if (shortest) { roundShortest(d, mant, exp, flt); $copy(digs, new decimalSlice.ptr(new sliceType$6(d.d), d.nd, d.dp, false), decimalSlice); _ref = fmt; if (_ref === 101 || _ref === 69) { prec = digs.nd - 1 >> 0; } else if (_ref === 102) { prec = max(digs.nd - digs.dp >> 0, 0); } else if (_ref === 103 || _ref === 71) { prec = digs.nd; } } else { _ref$1 = fmt; if (_ref$1 === 101 || _ref$1 === 69) { d.Round(prec + 1 >> 0); } else if (_ref$1 === 102) { d.Round(d.dp + prec >> 0); } else if (_ref$1 === 103 || _ref$1 === 71) { if (prec === 0) { prec = 1; } d.Round(prec); } $copy(digs, new decimalSlice.ptr(new sliceType$6(d.d), d.nd, d.dp, false), decimalSlice); } return formatDigits(dst, shortest, neg, digs, prec, fmt); }; formatDigits = function(dst, shortest, neg, digs, prec, fmt) { var $ptr, _ref, digs, dst, eprec, exp, fmt, neg, prec, shortest; digs = $clone(digs, decimalSlice); _ref = fmt; if (_ref === 101 || _ref === 69) { return fmtE(dst, neg, digs, prec, fmt); } else if (_ref === 102) { return fmtF(dst, neg, digs, prec); } else if (_ref === 103 || _ref === 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, digs, prec - 1 >> 0, (fmt + 101 << 24 >>> 24) - 103 << 24 >>> 24); } if (prec > digs.dp) { prec = digs.nd; } return fmtF(dst, neg, digs, max(prec - digs.dp >> 0, 0)); } return $append(dst, 37, fmt); }; roundShortest = function(d, mant, exp, flt) { var $ptr, _tmp, _tmp$1, _tmp$2, 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 && (332 * ((d.dp - d.nd >> 0)) >> 0) >= (100 * ((exp - (flt.mantbits >> 0) >> 0)) >> 0)) { return; } upper = new decimal.ptr(); 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(); 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; } _tmp = 0; _tmp$1 = 0; _tmp$2 = 0; l = _tmp; m = _tmp$1; u = _tmp$2; if (i < lower.nd) { l = (x$5 = lower.d, ((i < 0 || i >= x$5.length) ? $throwRuntimeError("index out of range") : x$5[i])); } else { l = 48; } m = (x$6 = d.d, ((i < 0 || i >= x$6.length) ? $throwRuntimeError("index out of range") : x$6[i])); if (i < upper.nd) { u = (x$7 = upper.d, ((i < 0 || i >= x$7.length) ? $throwRuntimeError("index out of range") : x$7[i])); } else { u = 48; } okdown = !((l === m)) || (inclusive && (l === m) && ((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, _r, _ref, buf, ch, d, dst, exp, fmt, i, i$1, m, neg, prec, x, x$1; d = $clone(d, decimalSlice); if (neg) { dst = $append(dst, 45); } ch = 48; if (!((d.nd === 0))) { ch = (x = d.d, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0])); } dst = $append(dst, ch); if (prec > 0) { dst = $append(dst, 46); i = 1; m = ((d.nd + prec >> 0) + 1 >> 0) - max(d.nd, prec + 1 >> 0) >> 0; while (true) { if (!(i < m)) { break; } dst = $append(dst, (x$1 = d.d, ((i < 0 || i >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + i]))); i = i + (1) >> 0; } 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); buf = $clone(arrayType$2.zero(), arrayType$2); i$1 = 3; while (true) { if (!(exp >= 10)) { break; } i$1 = i$1 - (1) >> 0; ((i$1 < 0 || i$1 >= buf.length) ? $throwRuntimeError("index out of range") : buf[i$1] = (((_r = exp % 10, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) + 48 >> 0) << 24 >>> 24)); exp = (_q = exp / (10), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); } i$1 = i$1 - (1) >> 0; ((i$1 < 0 || i$1 >= buf.length) ? $throwRuntimeError("index out of range") : buf[i$1] = ((exp + 48 >> 0) << 24 >>> 24)); _ref = i$1; if (_ref === 0) { dst = $append(dst, buf[0], buf[1], buf[2]); } else if (_ref === 1) { dst = $append(dst, buf[1], buf[2]); } else if (_ref === 2) { dst = $append(dst, 48, buf[2]); } return dst; }; fmtF = function(dst, neg, d, prec) { var $ptr, ch, d, dst, i, i$1, j, neg, prec, x, x$1; d = $clone(d, decimalSlice); if (neg) { dst = $append(dst, 45); } if (d.dp > 0) { i = 0; i = 0; while (true) { if (!(i < d.dp && i < d.nd)) { break; } dst = $append(dst, (x = d.d, ((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i]))); i = i + (1) >> 0; } while (true) { if (!(i < d.dp)) { break; } dst = $append(dst, 48); i = i + (1) >> 0; } } else { dst = $append(dst, 48); } if (prec > 0) { dst = $append(dst, 46); i$1 = 0; while (true) { if (!(i$1 < prec)) { break; } ch = 48; j = d.dp + i$1 >> 0; if (0 <= j && j < d.nd) { ch = (x$1 = d.d, ((j < 0 || j >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + j])); } dst = $append(dst, ch); i$1 = i$1 + (1) >> 0; } } return dst; }; fmtB = function(dst, neg, mant, exp, flt) { var $ptr, _q, _r, buf, dst, esign, exp, flt, mant, n, neg, w, x; buf = $clone(arrayType$3.zero(), arrayType$3); w = 50; exp = exp - ((flt.mantbits >> 0)) >> 0; esign = 43; if (exp < 0) { esign = 45; exp = -exp; } n = 0; while (true) { if (!(exp > 0 || n < 1)) { break; } n = n + (1) >> 0; w = w - (1) >> 0; ((w < 0 || w >= buf.length) ? $throwRuntimeError("index out of range") : buf[w] = (((_r = exp % 10, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) + 48 >> 0) << 24 >>> 24)); exp = (_q = exp / (10), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); } w = w - (1) >> 0; ((w < 0 || w >= buf.length) ? $throwRuntimeError("index out of range") : buf[w] = esign); w = w - (1) >> 0; ((w < 0 || w >= buf.length) ? $throwRuntimeError("index out of range") : buf[w] = 112); n = 0; while (true) { if (!((mant.$high > 0 || (mant.$high === 0 && mant.$low > 0)) || n < 1)) { break; } n = n + (1) >> 0; w = w - (1) >> 0; ((w < 0 || w >= buf.length) ? $throwRuntimeError("index out of range") : buf[w] = ((x = $div64(mant, new $Uint64(0, 10), true), new $Uint64(x.$high + 0, x.$low + 48)).$low << 24 >>> 24)); mant = $div64(mant, (new $Uint64(0, 10)), false); } if (neg) { w = w - (1) >> 0; ((w < 0 || w >= buf.length) ? $throwRuntimeError("index out of range") : buf[w] = 45); } return $appendSlice(dst, $subslice(new sliceType$6(buf), w)); }; max = function(a, b) { var $ptr, a, b; if (a > b) { return a; } return b; }; FormatUint = function(i, base) { var $ptr, _tuple, base, i, s; _tuple = formatBits(sliceType$6.nil, i, base, false, false); s = _tuple[1]; return s; }; $pkg.FormatUint = FormatUint; 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, a, append_, b, b$1, base, d, dst, i, j, m, neg, q, q$1, s, s$1, u, x, x$1, x$2, x$3; d = sliceType$6.nil; s = ""; if (base < 2 || base > 36) { $panic(new $String("strconv: illegal AppendInt/FormatInt base")); } a = $clone(arrayType$4.zero(), arrayType$4); i = 65; if (neg) { u = new $Uint64(-u.$high, -u.$low); } if (base === 10) { while (true) { if (!((u.$high > 0 || (u.$high === 0 && u.$low >= 100)))) { break; } i = i - (2) >> 0; q = $div64(u, new $Uint64(0, 100), false); j = ((x = $mul64(q, new $Uint64(0, 100)), new $Uint64(u.$high - x.$high, u.$low - x.$low)).$low >>> 0); (x$1 = i + 1 >> 0, ((x$1 < 0 || x$1 >= a.length) ? $throwRuntimeError("index out of range") : a[x$1] = "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789".charCodeAt(j))); (x$2 = i + 0 >> 0, ((x$2 < 0 || x$2 >= a.length) ? $throwRuntimeError("index out of range") : a[x$2] = "0000000000111111111122222222223333333333444444444455555555556666666666777777777788888888889999999999".charCodeAt(j))); u = q; } if ((u.$high > 0 || (u.$high === 0 && u.$low >= 10))) { i = i - (1) >> 0; q$1 = $div64(u, new $Uint64(0, 10), false); ((i < 0 || i >= a.length) ? $throwRuntimeError("index out of range") : a[i] = "0123456789abcdefghijklmnopqrstuvwxyz".charCodeAt(((x$3 = $mul64(q$1, new $Uint64(0, 10)), new $Uint64(u.$high - x$3.$high, u.$low - x$3.$low)).$low >>> 0))); u = q$1; } } else { s$1 = ((base < 0 || base >= shifts.length) ? $throwRuntimeError("index out of range") : 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") : a[i] = "0123456789abcdefghijklmnopqrstuvwxyz".charCodeAt((((u.$low >>> 0) & m) >>> 0))); u = $shiftRightUint64(u, (s$1)); } } 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; ((i < 0 || i >= a.length) ? $throwRuntimeError("index out of range") : a[i] = "0123456789abcdefghijklmnopqrstuvwxyz".charCodeAt(($div64(u, b$1, true).$low >>> 0))); u = $div64(u, (b$1), false); } } } i = i - (1) >> 0; ((i < 0 || i >= a.length) ? $throwRuntimeError("index out of range") : a[i] = "0123456789abcdefghijklmnopqrstuvwxyz".charCodeAt((u.$low >>> 0))); if (neg) { i = i - (1) >> 0; ((i < 0 || i >= a.length) ? $throwRuntimeError("index out of range") : 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) { var $ptr, ASCIIonly, _q, _ref, _tuple, buf, n, quote, r, runeTmp, s, s$1, s$2, width; runeTmp = $clone(arrayType$5.zero(), arrayType$5); buf = $makeSlice(sliceType$6, 0, (_q = (3 * s.length >> 0) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"))); 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, new sliceType$6($stringToBytes("\\x"))); buf = $append(buf, "0123456789abcdef".charCodeAt((s.charCodeAt(0) >>> 4 << 24 >>> 24))); buf = $append(buf, "0123456789abcdef".charCodeAt(((s.charCodeAt(0) & 15) >>> 0))); s = s.substring(width); continue; } if ((r === (quote >> 0)) || (r === 92)) { buf = $append(buf, 92); buf = $append(buf, (r << 24 >>> 24)); s = s.substring(width); continue; } if (ASCIIonly) { if (r < 128 && IsPrint(r)) { buf = $append(buf, (r << 24 >>> 24)); s = s.substring(width); continue; } } else if (IsPrint(r)) { n = utf8.EncodeRune(new sliceType$6(runeTmp), r); buf = $appendSlice(buf, $subslice(new sliceType$6(runeTmp), 0, n)); s = s.substring(width); continue; } _ref = r; if (_ref === 7) { buf = $appendSlice(buf, new sliceType$6($stringToBytes("\\a"))); } else if (_ref === 8) { buf = $appendSlice(buf, new sliceType$6($stringToBytes("\\b"))); } else if (_ref === 12) { buf = $appendSlice(buf, new sliceType$6($stringToBytes("\\f"))); } else if (_ref === 10) { buf = $appendSlice(buf, new sliceType$6($stringToBytes("\\n"))); } else if (_ref === 13) { buf = $appendSlice(buf, new sliceType$6($stringToBytes("\\r"))); } else if (_ref === 9) { buf = $appendSlice(buf, new sliceType$6($stringToBytes("\\t"))); } else if (_ref === 11) { buf = $appendSlice(buf, new sliceType$6($stringToBytes("\\v"))); } else { if (r < 32) { buf = $appendSlice(buf, new sliceType$6($stringToBytes("\\x"))); buf = $append(buf, "0123456789abcdef".charCodeAt((s.charCodeAt(0) >>> 4 << 24 >>> 24))); buf = $append(buf, "0123456789abcdef".charCodeAt(((s.charCodeAt(0) & 15) >>> 0))); } else if (r > 1114111) { r = 65533; buf = $appendSlice(buf, new sliceType$6($stringToBytes("\\u"))); s$1 = 12; 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; } } else if (r < 65536) { buf = $appendSlice(buf, new sliceType$6($stringToBytes("\\u"))); s$1 = 12; 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; } } else { buf = $appendSlice(buf, new sliceType$6($stringToBytes("\\U"))); s$2 = 28; while (true) { if (!(s$2 >= 0)) { break; } buf = $append(buf, "0123456789abcdef".charCodeAt((((r >> $min((s$2 >>> 0), 31)) >> 0) & 15))); s$2 = s$2 - (4) >> 0; } } } s = s.substring(width); } buf = $append(buf, quote); return $bytesToString(buf); }; Quote = function(s) { var $ptr, s; return quoteWith(s, 34, false); }; $pkg.Quote = Quote; QuoteToASCII = function(s) { var $ptr, s; return quoteWith(s, 34, true); }; $pkg.QuoteToASCII = QuoteToASCII; QuoteRune = function(r) { var $ptr, r; return quoteWith($encodeRune(r), 39, false); }; $pkg.QuoteRune = QuoteRune; AppendQuoteRune = function(dst, r) { var $ptr, dst, r; return $appendSlice(dst, new sliceType$6($stringToBytes(QuoteRune(r)))); }; $pkg.AppendQuoteRune = AppendQuoteRune; QuoteRuneToASCII = function(r) { var $ptr, r; return quoteWith($encodeRune(r), 39, true); }; $pkg.QuoteRuneToASCII = QuoteRuneToASCII; AppendQuoteRuneToASCII = function(dst, r) { var $ptr, dst, r; return $appendSlice(dst, new sliceType$6($stringToBytes(QuoteRuneToASCII(r)))); }; $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 = s.substring(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, _ref, _ref$1, _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 = s.substring(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 = s.substring(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 = s.substring(2); _ref = c$1; switch (0) { default: if (_ref === 97) { value = 7; } else if (_ref === 98) { value = 8; } else if (_ref === 102) { value = 12; } else if (_ref === 110) { value = 10; } else if (_ref === 114) { value = 13; } else if (_ref === 116) { value = 9; } else if (_ref === 118) { value = 11; } else if (_ref === 120 || _ref === 117 || _ref === 85) { n = 0; _ref$1 = c$1; if (_ref$1 === 120) { n = 2; } else if (_ref$1 === 117) { n = 4; } else if (_ref$1 === 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 = s.substring(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 (_ref === 48 || _ref === 49 || _ref === 50 || _ref === 51 || _ref === 52 || _ref === 53 || _ref === 54 || _ref === 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 = s.substring(2); if (v$1 > 255) { err = $pkg.ErrSyntax; return [value, multibyte, tail, err]; } value = v$1; } else if (_ref === 92) { value = 92; } else if (_ref === 39 || _ref === 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, _q, _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$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, buf, c, err, err$1, multibyte, n, n$1, quote, r, runeTmp, s, size, ss, t; t = ""; err = $ifaceNil; n = s.length; if (n < 2) { _tmp = ""; _tmp$1 = $pkg.ErrSyntax; t = _tmp; err = _tmp$1; return [t, err]; } quote = s.charCodeAt(0); if (!((quote === s.charCodeAt((n - 1 >> 0))))) { _tmp$2 = ""; _tmp$3 = $pkg.ErrSyntax; t = _tmp$2; err = _tmp$3; return [t, err]; } s = s.substring(1, (n - 1 >> 0)); if (quote === 96) { if (contains(s, 96)) { _tmp$4 = ""; _tmp$5 = $pkg.ErrSyntax; t = _tmp$4; err = _tmp$5; return [t, err]; } _tmp$6 = s; _tmp$7 = $ifaceNil; t = _tmp$6; err = _tmp$7; return [t, err]; } if (!((quote === 34)) && !((quote === 39))) { _tmp$8 = ""; _tmp$9 = $pkg.ErrSyntax; t = _tmp$8; err = _tmp$9; return [t, err]; } if (contains(s, 10)) { _tmp$10 = ""; _tmp$11 = $pkg.ErrSyntax; t = _tmp$10; err = _tmp$11; return [t, err]; } if (!contains(s, 92) && !contains(s, quote)) { _ref = quote; if (_ref === 34) { _tmp$12 = s; _tmp$13 = $ifaceNil; t = _tmp$12; err = _tmp$13; return [t, err]; } else if (_ref === 39) { _tuple = utf8.DecodeRuneInString(s); r = _tuple[0]; size = _tuple[1]; if ((size === s.length) && (!((r === 65533)) || !((size === 1)))) { _tmp$14 = s; _tmp$15 = $ifaceNil; t = _tmp$14; err = _tmp$15; return [t, err]; } } } runeTmp = $clone(arrayType$5.zero(), arrayType$5); buf = $makeSlice(sliceType$6, 0, (_q = (3 * s.length >> 0) / 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$1 = _tuple$1[3]; if (!($interfaceIsEqual(err$1, $ifaceNil))) { _tmp$16 = ""; _tmp$17 = err$1; t = _tmp$16; err = _tmp$17; return [t, err]; } s = ss; if (c < 128 || !multibyte) { buf = $append(buf, (c << 24 >>> 24)); } else { n$1 = utf8.EncodeRune(new sliceType$6(runeTmp), c); buf = $appendSlice(buf, $subslice(new sliceType$6(runeTmp), 0, n$1)); } if ((quote === 39) && !((s.length === 0))) { _tmp$18 = ""; _tmp$19 = $pkg.ErrSyntax; t = _tmp$18; err = _tmp$19; return [t, err]; } } _tmp$20 = $bytesToString(buf); _tmp$21 = $ifaceNil; t = _tmp$20; err = _tmp$21; return [t, err]; }; $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") : 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") : 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") : isPrint.$array[isPrint.$offset + x])) || (x$1 = i | 1, ((x$1 < 0 || x$1 >= isPrint.$length) ? $throwRuntimeError("index out of range") : 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") : 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") : 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") : 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") : isNotPrint$1.$array[isNotPrint$1.$offset + j$1]) === (r << 16 >>> 16))); }; $pkg.IsPrint = IsPrint; 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", pkg: "", typ: $String, tag: ""}, {prop: "Num", name: "Num", pkg: "", typ: $String, tag: ""}, {prop: "Err", name: "Err", pkg: "", typ: $error, tag: ""}]); decimal.init([{prop: "d", name: "d", pkg: "strconv", typ: arrayType$6, tag: ""}, {prop: "nd", name: "nd", pkg: "strconv", typ: $Int, tag: ""}, {prop: "dp", name: "dp", pkg: "strconv", typ: $Int, tag: ""}, {prop: "neg", name: "neg", pkg: "strconv", typ: $Bool, tag: ""}, {prop: "trunc", name: "trunc", pkg: "strconv", typ: $Bool, tag: ""}]); leftCheat.init([{prop: "delta", name: "delta", pkg: "strconv", typ: $Int, tag: ""}, {prop: "cutoff", name: "cutoff", pkg: "strconv", typ: $String, tag: ""}]); extFloat.init([{prop: "mant", name: "mant", pkg: "strconv", typ: $Uint64, tag: ""}, {prop: "exp", name: "exp", pkg: "strconv", typ: $Int, tag: ""}, {prop: "neg", name: "neg", pkg: "strconv", typ: $Bool, tag: ""}]); floatInfo.init([{prop: "mantbits", name: "mantbits", pkg: "strconv", typ: $Uint, tag: ""}, {prop: "expbits", name: "expbits", pkg: "strconv", typ: $Uint, tag: ""}, {prop: "bias", name: "bias", pkg: "strconv", typ: $Int, tag: ""}]); decimalSlice.init([{prop: "d", name: "d", pkg: "strconv", typ: sliceType$6, tag: ""}, {prop: "nd", name: "nd", pkg: "strconv", typ: $Int, tag: ""}, {prop: "dp", name: "dp", pkg: "strconv", typ: $Int, tag: ""}, {prop: "neg", name: "neg", pkg: "strconv", 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")]); 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, 2226, 2276, 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, 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, 3161, 3168, 3171, 3174, 3183, 3192, 3257, 3260, 3277, 3285, 3286, 3294, 3299, 3302, 3314, 3329, 3386, 3389, 3406, 3415, 3415, 3424, 3427, 3430, 3445, 3449, 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, 5108, 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, 7295, 7360, 7367, 7376, 7417, 7424, 7669, 7676, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8061, 8064, 8147, 8150, 8175, 8178, 8190, 8208, 8231, 8240, 8286, 8304, 8305, 8308, 8348, 8352, 8381, 8400, 8432, 8448, 8585, 8592, 9210, 9216, 9254, 9280, 9290, 9312, 11123, 11126, 11157, 11160, 11193, 11197, 11217, 11264, 11507, 11513, 11559, 11565, 11565, 11568, 11623, 11631, 11632, 11647, 11670, 11680, 11842, 11904, 12019, 12032, 12245, 12272, 12283, 12289, 12438, 12441, 12543, 12549, 12589, 12593, 12730, 12736, 12771, 12784, 19893, 19904, 40908, 40960, 42124, 42128, 42182, 42192, 42539, 42560, 42743, 42752, 42925, 42928, 42929, 42999, 43051, 43056, 43065, 43072, 43127, 43136, 43204, 43214, 43225, 43232, 43259, 43264, 43347, 43359, 43388, 43392, 43481, 43486, 43574, 43584, 43597, 43600, 43609, 43612, 43714, 43739, 43766, 43777, 43782, 43785, 43790, 43793, 43798, 43808, 43871, 43876, 43877, 43968, 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, 65069, 65072, 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, 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, 3200, 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, 11209, 11311, 11359, 11558, 11687, 11695, 11703, 11711, 11719, 11727, 11735, 11743, 11930, 12352, 12687, 12831, 13055, 42654, 42895, 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, 65932, 65936, 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, 66816, 66855, 66864, 66915, 66927, 66927, 67072, 67382, 67392, 67413, 67424, 67431, 67584, 67589, 67592, 67640, 67644, 67644, 67647, 67742, 67751, 67759, 67840, 67867, 67871, 67897, 67903, 67903, 67968, 68023, 68030, 68031, 68096, 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, 69216, 69246, 69632, 69709, 69714, 69743, 69759, 69825, 69840, 69864, 69872, 69881, 69888, 69955, 69968, 70006, 70016, 70088, 70093, 70093, 70096, 70106, 70113, 70132, 70144, 70205, 70320, 70378, 70384, 70393, 70401, 70412, 70415, 70416, 70419, 70457, 70460, 70468, 70471, 70472, 70475, 70477, 70487, 70487, 70493, 70499, 70502, 70508, 70512, 70516, 70784, 70855, 70864, 70873, 71040, 71093, 71096, 71113, 71168, 71236, 71248, 71257, 71296, 71351, 71360, 71369, 71840, 71922, 71935, 71935, 72384, 72440, 73728, 74648, 74752, 74868, 77824, 78894, 92160, 92728, 92736, 92777, 92782, 92783, 92880, 92909, 92912, 92917, 92928, 92997, 93008, 93047, 93053, 93071, 93952, 94020, 94032, 94078, 94095, 94111, 110592, 110593, 113664, 113770, 113776, 113788, 113792, 113800, 113808, 113817, 113820, 113823, 118784, 119029, 119040, 119078, 119081, 119154, 119163, 119261, 119296, 119365, 119552, 119638, 119648, 119665, 119808, 119967, 119970, 119970, 119973, 119974, 119977, 120074, 120077, 120134, 120138, 120485, 120488, 120779, 120782, 120831, 124928, 125124, 125127, 125142, 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, 127386, 127462, 127490, 127504, 127546, 127552, 127560, 127568, 127569, 127744, 127788, 127792, 127869, 127872, 127950, 127956, 127991, 128000, 128330, 128336, 128578, 128581, 128719, 128736, 128748, 128752, 128755, 128768, 128883, 128896, 128980, 129024, 129035, 129040, 129095, 129104, 129113, 129120, 129159, 129168, 129197, 131072, 173782, 173824, 177972, 177984, 178205, 194560, 195101, 917760, 917999]); isNotPrint32 = new sliceType$4([12, 39, 59, 62, 926, 2057, 2102, 2134, 2564, 2580, 2584, 4285, 4405, 4626, 4868, 4905, 4913, 4916, 9327, 27231, 27482, 27490, 54357, 54429, 54445, 54458, 54460, 54468, 54534, 54549, 54557, 54586, 54591, 54597, 54609, 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, 62719, 62842, 62884]); 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["reflect"] = (function() { var $pkg = {}, $init, js, math, runtime, strconv, sync, mapIter, Type, Kind, rtype, typeAlg, method, uncommonType, ChanDir, arrayType, chanType, funcType, imethod, interfaceType, mapType, ptrType, sliceType, structField, structType, Method, StructField, StructTag, fieldScan, Value, flag, ValueError, nonEmptyInterface, ptrType$1, sliceType$1, ptrType$3, funcType$1, sliceType$2, ptrType$4, arrayType$1, ptrType$5, ptrType$6, sliceType$3, sliceType$4, sliceType$5, sliceType$6, structType$5, sliceType$7, ptrType$7, arrayType$2, structType$6, ptrType$8, sliceType$8, ptrType$9, sliceType$9, sliceType$10, ptrType$10, ptrType$11, ptrType$12, sliceType$11, sliceType$12, ptrType$13, ptrType$18, sliceType$14, sliceType$15, funcType$3, funcType$4, funcType$5, arrayType$3, ptrType$21, initialized, stringPtrMap, callHelper, jsObjectPtr, selectHelper, kindNames, uint8Type, init, jsType, reflectType, setKindType, newStringPtr, isWrapped, copyStruct, makeValue, MakeSlice, TypeOf, ValueOf, MapOf, SliceOf, Zero, unsafe_New, makeInt, memmove, makemap, mapaccess, mapassign, mapdelete, mapiterinit, mapiterkey, mapiternext, maplen, cvtDirect, Copy, methodReceiver, valueInterface, ifaceE2I, methodName, makeMethodValue, wrapJsObject, unwrapJsObject, getJsTag, chanrecv, chansend, DeepEqual, deepValueEqualJs, PtrTo, implements$1, directlyAssignable, haveIdenticalUnderlyingType, toType, ifaceIndir, overflowFloat32, typesMustMatch, MakeMap, Indirect, New, convertOp, makeFloat, makeComplex, makeString, makeBytes, makeRunes, cvtInt, cvtUint, cvtFloatInt, cvtFloatUint, cvtIntFloat, cvtUintFloat, cvtFloat, cvtComplex, cvtIntString, cvtUintString, cvtBytesString, cvtStringBytes, cvtRunesString, cvtStringRunes, cvtT2I, cvtI2I; js = $packages["github.com/gopherjs/gopherjs/js"]; math = $packages["math"]; runtime = $packages["runtime"]; strconv = $packages["strconv"]; sync = $packages["sync"]; mapIter = $pkg.mapIter = $newType(0, $kindStruct, "reflect.mapIter", "mapIter", "reflect", 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", "Type", "reflect", null); Kind = $pkg.Kind = $newType(4, $kindUint, "reflect.Kind", "Kind", "reflect", null); rtype = $pkg.rtype = $newType(0, $kindStruct, "reflect.rtype", "rtype", "reflect", function(size_, hash_, _$2_, align_, fieldAlign_, kind_, alg_, gc_, string_, uncommonType_, ptrToThis_, zero_) { this.$val = this; if (arguments.length === 0) { this.size = 0; this.hash = 0; this._$2 = 0; this.align = 0; this.fieldAlign = 0; this.kind = 0; this.alg = ptrType$4.nil; this.gc = arrayType$1.zero(); this.string = ptrType$5.nil; this.uncommonType = ptrType$6.nil; this.ptrToThis = ptrType$1.nil; this.zero = 0; return; } this.size = size_; this.hash = hash_; this._$2 = _$2_; this.align = align_; this.fieldAlign = fieldAlign_; this.kind = kind_; this.alg = alg_; this.gc = gc_; this.string = string_; this.uncommonType = uncommonType_; this.ptrToThis = ptrToThis_; this.zero = zero_; }); typeAlg = $pkg.typeAlg = $newType(0, $kindStruct, "reflect.typeAlg", "typeAlg", "reflect", 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", "method", "reflect", function(name_, pkgPath_, mtyp_, typ_, ifn_, tfn_) { this.$val = this; if (arguments.length === 0) { this.name = ptrType$5.nil; this.pkgPath = ptrType$5.nil; this.mtyp = ptrType$1.nil; this.typ = ptrType$1.nil; this.ifn = 0; this.tfn = 0; return; } this.name = name_; this.pkgPath = pkgPath_; this.mtyp = mtyp_; this.typ = typ_; this.ifn = ifn_; this.tfn = tfn_; }); uncommonType = $pkg.uncommonType = $newType(0, $kindStruct, "reflect.uncommonType", "uncommonType", "reflect", function(name_, pkgPath_, methods_) { this.$val = this; if (arguments.length === 0) { this.name = ptrType$5.nil; this.pkgPath = ptrType$5.nil; this.methods = sliceType$3.nil; return; } this.name = name_; this.pkgPath = pkgPath_; this.methods = methods_; }); ChanDir = $pkg.ChanDir = $newType(4, $kindInt, "reflect.ChanDir", "ChanDir", "reflect", null); arrayType = $pkg.arrayType = $newType(0, $kindStruct, "reflect.arrayType", "arrayType", "reflect", function(rtype_, elem_, slice_, len_) { this.$val = this; if (arguments.length === 0) { this.rtype = new rtype.ptr(); 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", "chanType", "reflect", function(rtype_, elem_, dir_) { this.$val = this; if (arguments.length === 0) { this.rtype = new rtype.ptr(); this.elem = ptrType$1.nil; this.dir = 0; return; } this.rtype = rtype_; this.elem = elem_; this.dir = dir_; }); funcType = $pkg.funcType = $newType(0, $kindStruct, "reflect.funcType", "funcType", "reflect", function(rtype_, dotdotdot_, in$2_, out_) { this.$val = this; if (arguments.length === 0) { this.rtype = new rtype.ptr(); this.dotdotdot = false; this.in$2 = sliceType$4.nil; this.out = sliceType$4.nil; return; } this.rtype = rtype_; this.dotdotdot = dotdotdot_; this.in$2 = in$2_; this.out = out_; }); imethod = $pkg.imethod = $newType(0, $kindStruct, "reflect.imethod", "imethod", "reflect", function(name_, pkgPath_, typ_) { this.$val = this; if (arguments.length === 0) { this.name = ptrType$5.nil; this.pkgPath = ptrType$5.nil; this.typ = ptrType$1.nil; return; } this.name = name_; this.pkgPath = pkgPath_; this.typ = typ_; }); interfaceType = $pkg.interfaceType = $newType(0, $kindStruct, "reflect.interfaceType", "interfaceType", "reflect", function(rtype_, methods_) { this.$val = this; if (arguments.length === 0) { this.rtype = new rtype.ptr(); this.methods = sliceType$5.nil; return; } this.rtype = rtype_; this.methods = methods_; }); mapType = $pkg.mapType = $newType(0, $kindStruct, "reflect.mapType", "mapType", "reflect", function(rtype_, key_, elem_, bucket_, hmap_, keysize_, indirectkey_, valuesize_, indirectvalue_, bucketsize_) { this.$val = this; if (arguments.length === 0) { this.rtype = new rtype.ptr(); 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; 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_; }); ptrType = $pkg.ptrType = $newType(0, $kindStruct, "reflect.ptrType", "ptrType", "reflect", function(rtype_, elem_) { this.$val = this; if (arguments.length === 0) { this.rtype = new rtype.ptr(); this.elem = ptrType$1.nil; return; } this.rtype = rtype_; this.elem = elem_; }); sliceType = $pkg.sliceType = $newType(0, $kindStruct, "reflect.sliceType", "sliceType", "reflect", function(rtype_, elem_) { this.$val = this; if (arguments.length === 0) { this.rtype = new rtype.ptr(); this.elem = ptrType$1.nil; return; } this.rtype = rtype_; this.elem = elem_; }); structField = $pkg.structField = $newType(0, $kindStruct, "reflect.structField", "structField", "reflect", function(name_, pkgPath_, typ_, tag_, offset_) { this.$val = this; if (arguments.length === 0) { this.name = ptrType$5.nil; this.pkgPath = ptrType$5.nil; this.typ = ptrType$1.nil; this.tag = ptrType$5.nil; this.offset = 0; return; } this.name = name_; this.pkgPath = pkgPath_; this.typ = typ_; this.tag = tag_; this.offset = offset_; }); structType = $pkg.structType = $newType(0, $kindStruct, "reflect.structType", "structType", "reflect", function(rtype_, fields_) { this.$val = this; if (arguments.length === 0) { this.rtype = new rtype.ptr(); this.fields = sliceType$6.nil; return; } this.rtype = rtype_; this.fields = fields_; }); Method = $pkg.Method = $newType(0, $kindStruct, "reflect.Method", "Method", "reflect", 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(); this.Index = 0; return; } this.Name = Name_; this.PkgPath = PkgPath_; this.Type = Type_; this.Func = Func_; this.Index = Index_; }); StructField = $pkg.StructField = $newType(0, $kindStruct, "reflect.StructField", "StructField", "reflect", 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$11.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", "StructTag", "reflect", null); fieldScan = $pkg.fieldScan = $newType(0, $kindStruct, "reflect.fieldScan", "fieldScan", "reflect", function(typ_, index_) { this.$val = this; if (arguments.length === 0) { this.typ = ptrType$13.nil; this.index = sliceType$11.nil; return; } this.typ = typ_; this.index = index_; }); Value = $pkg.Value = $newType(0, $kindStruct, "reflect.Value", "Value", "reflect", 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", "flag", "reflect", null); ValueError = $pkg.ValueError = $newType(0, $kindStruct, "reflect.ValueError", "ValueError", "reflect", function(Method_, Kind_) { this.$val = this; if (arguments.length === 0) { this.Method = ""; this.Kind = 0; return; } this.Method = Method_; this.Kind = Kind_; }); nonEmptyInterface = $pkg.nonEmptyInterface = $newType(0, $kindStruct, "reflect.nonEmptyInterface", "nonEmptyInterface", "reflect", function(itab_, word_) { this.$val = this; if (arguments.length === 0) { this.itab = ptrType$8.nil; this.word = 0; return; } this.itab = itab_; this.word = word_; }); ptrType$1 = $ptrType(rtype); sliceType$1 = $sliceType($emptyInterface); ptrType$3 = $ptrType(js.Object); funcType$1 = $funcType([sliceType$1], [ptrType$3], true); sliceType$2 = $sliceType($String); ptrType$4 = $ptrType(typeAlg); arrayType$1 = $arrayType($UnsafePointer, 2); ptrType$5 = $ptrType($String); ptrType$6 = $ptrType(uncommonType); sliceType$3 = $sliceType(method); sliceType$4 = $sliceType(ptrType$1); sliceType$5 = $sliceType(imethod); sliceType$6 = $sliceType(structField); structType$5 = $structType([{prop: "str", name: "str", pkg: "reflect", typ: $String, tag: ""}]); sliceType$7 = $sliceType(Value); ptrType$7 = $ptrType(nonEmptyInterface); arrayType$2 = $arrayType($UnsafePointer, 100000); structType$6 = $structType([{prop: "ityp", name: "ityp", pkg: "reflect", typ: ptrType$1, tag: ""}, {prop: "typ", name: "typ", pkg: "reflect", typ: ptrType$1, tag: ""}, {prop: "link", name: "link", pkg: "reflect", typ: $UnsafePointer, tag: ""}, {prop: "bad", name: "bad", pkg: "reflect", typ: $Int32, tag: ""}, {prop: "unused", name: "unused", pkg: "reflect", typ: $Int32, tag: ""}, {prop: "fun", name: "fun", pkg: "reflect", typ: arrayType$2, tag: ""}]); ptrType$8 = $ptrType(structType$6); sliceType$8 = $sliceType(ptrType$3); ptrType$9 = $ptrType($Uint8); sliceType$9 = $sliceType(sliceType$1); sliceType$10 = $sliceType(arrayType$1); ptrType$10 = $ptrType(method); ptrType$11 = $ptrType(interfaceType); ptrType$12 = $ptrType(imethod); sliceType$11 = $sliceType($Int); sliceType$12 = $sliceType(fieldScan); ptrType$13 = $ptrType(structType); ptrType$18 = $ptrType($UnsafePointer); sliceType$14 = $sliceType($Uint8); sliceType$15 = $sliceType($Int32); funcType$3 = $funcType([$String], [$Bool], false); funcType$4 = $funcType([$UnsafePointer, $Uintptr, $Uintptr], [$Uintptr], false); funcType$5 = $funcType([$UnsafePointer, $UnsafePointer, $Uintptr], [$Bool], false); arrayType$3 = $arrayType($Uintptr, 2); ptrType$21 = $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, ptrType$4.nil, arrayType$1.zero(), ptrType$5.nil, ptrType$6.nil, ptrType$1.nil, 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(ptrType$5.nil, ptrType$5.nil, 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(ptrType$5.nil, ptrType$5.nil, ptrType$1.nil, ptrType$1.nil, 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(), 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(), 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(), false, sliceType$4.nil, sliceType$4.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(), sliceType$5.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(), ptrType$1.nil, ptrType$1.nil, ptrType$1.nil, ptrType$1.nil, 0, 0, 0, 0, 0), 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(), 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(), 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(), sliceType$6.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(ptrType$5.nil, ptrType$5.nil, ptrType$1.nil), 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(ptrType$5.nil, ptrType$5.nil, ptrType$1.nil, ptrType$5.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; case -1: } 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, _i, _i$1, _i$2, _i$3, _i$4, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _ref$5, dir, f, fields, i, i$1, i$2, i$3, i$4, imethods, in$1, m, m$1, methodSet, methods, out, params, reflectFields, reflectMethods, results, rt, t, typ; if (typ.reflectType === undefined) { rt = new rtype.ptr((($parseInt(typ.size) >> 0) >>> 0), 0, 0, 0, 0, (($parseInt(typ.kind) >> 0) << 24 >>> 24), ptrType$4.nil, arrayType$1.zero(), newStringPtr(typ.string), ptrType$6.nil, ptrType$1.nil, 0); rt.jsType = typ; typ.reflectType = rt; methodSet = $methodSet(typ); if (!($internalize(typ.typeName, $String) === "") || !(($parseInt(methodSet.length) === 0))) { reflectMethods = $makeSlice(sliceType$3, $parseInt(methodSet.length)); _ref = reflectMethods; _i = 0; while (true) { if (!(_i < _ref.$length)) { break; } i = _i; m = methodSet[i]; t = m.typ; $copy(((i < 0 || i >= reflectMethods.$length) ? $throwRuntimeError("index out of range") : reflectMethods.$array[reflectMethods.$offset + i]), new method.ptr(newStringPtr(m.name), newStringPtr(m.pkg), reflectType(t), reflectType($funcType(new ($global.Array)(typ).concat(t.params), t.results, t.variadic)), 0, 0), method); _i++; } rt.uncommonType = new uncommonType.ptr(newStringPtr(typ.typeName), newStringPtr(typ.pkg), reflectMethods); rt.uncommonType.jsType = typ; } _ref$1 = rt.Kind(); if (_ref$1 === 17) { setKindType(rt, new arrayType.ptr(new rtype.ptr(), reflectType(typ.elem), ptrType$1.nil, (($parseInt(typ.len) >> 0) >>> 0))); } else if (_ref$1 === 18) { dir = 3; if (!!(typ.sendOnly)) { dir = 2; } if (!!(typ.recvOnly)) { dir = 1; } setKindType(rt, new chanType.ptr(new rtype.ptr(), reflectType(typ.elem), (dir >>> 0))); } else if (_ref$1 === 19) { params = typ.params; in$1 = $makeSlice(sliceType$4, $parseInt(params.length)); _ref$2 = in$1; _i$1 = 0; while (true) { if (!(_i$1 < _ref$2.$length)) { break; } i$1 = _i$1; ((i$1 < 0 || i$1 >= in$1.$length) ? $throwRuntimeError("index out of range") : in$1.$array[in$1.$offset + i$1] = reflectType(params[i$1])); _i$1++; } results = typ.results; out = $makeSlice(sliceType$4, $parseInt(results.length)); _ref$3 = out; _i$2 = 0; while (true) { if (!(_i$2 < _ref$3.$length)) { break; } i$2 = _i$2; ((i$2 < 0 || i$2 >= out.$length) ? $throwRuntimeError("index out of range") : out.$array[out.$offset + i$2] = reflectType(results[i$2])); _i$2++; } setKindType(rt, new funcType.ptr($clone(rt, rtype), !!(typ.variadic), in$1, out)); } else if (_ref$1 === 20) { methods = typ.methods; imethods = $makeSlice(sliceType$5, $parseInt(methods.length)); _ref$4 = imethods; _i$3 = 0; while (true) { if (!(_i$3 < _ref$4.$length)) { break; } i$3 = _i$3; m$1 = methods[i$3]; $copy(((i$3 < 0 || i$3 >= imethods.$length) ? $throwRuntimeError("index out of range") : imethods.$array[imethods.$offset + i$3]), new imethod.ptr(newStringPtr(m$1.name), newStringPtr(m$1.pkg), reflectType(m$1.typ)), imethod); _i$3++; } setKindType(rt, new interfaceType.ptr($clone(rt, rtype), imethods)); } else if (_ref$1 === 21) { setKindType(rt, new mapType.ptr(new rtype.ptr(), reflectType(typ.key), reflectType(typ.elem), ptrType$1.nil, ptrType$1.nil, 0, 0, 0, 0, 0)); } else if (_ref$1 === 22) { setKindType(rt, new ptrType.ptr(new rtype.ptr(), reflectType(typ.elem))); } else if (_ref$1 === 23) { setKindType(rt, new sliceType.ptr(new rtype.ptr(), reflectType(typ.elem))); } else if (_ref$1 === 25) { fields = typ.fields; reflectFields = $makeSlice(sliceType$6, $parseInt(fields.length)); _ref$5 = reflectFields; _i$4 = 0; while (true) { if (!(_i$4 < _ref$5.$length)) { break; } i$4 = _i$4; f = fields[i$4]; $copy(((i$4 < 0 || i$4 >= reflectFields.$length) ? $throwRuntimeError("index out of range") : reflectFields.$array[reflectFields.$offset + i$4]), new structField.ptr(newStringPtr(f.name), newStringPtr(f.pkg), reflectType(f.typ), newStringPtr(f.tag), (i$4 >>> 0)), structField); _i$4++; } setKindType(rt, new structType.ptr($clone(rt, rtype), reflectFields)); } } return typ.reflectType; }; setKindType = function(rt, kindType) { var $ptr, kindType, rt; rt.kindType = kindType; kindType.rtype = rt; }; newStringPtr = function(strObj) { var $ptr, _entry, _key, _tuple, c, ok, ptr, str, strObj, str_ptr; c = $clone(new structType$5.ptr(), structType$5); c.str = strObj; str = c.str; if (str === "") { return ptrType$5.nil; } _tuple = (_entry = stringPtrMap[str], _entry !== undefined ? [_entry.v, true] : [ptrType$5.nil, false]); ptr = _tuple[0]; ok = _tuple[1]; if (!ok) { ptr = (str_ptr || (str_ptr = new ptrType$5(function() { return str; }, function($v) { str = $v; }))); _key = str; (stringPtrMap || $throwRuntimeError("assignment to entry in nil map"))[_key] = { k: _key, v: ptr }; } return ptr; }; isWrapped = function(typ) { var $ptr, _r, _r$1, _r$2, _ref, 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; _r$2 = $f._r$2; _ref = $f._ref; typ = $f.typ; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: _r = typ.Kind(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _ref = _r; /* */ if (_ref === 1 || _ref === 2 || _ref === 3 || _ref === 4 || _ref === 5 || _ref === 7 || _ref === 8 || _ref === 9 || _ref === 10 || _ref === 12 || _ref === 13 || _ref === 14 || _ref === 17 || _ref === 21 || _ref === 19 || _ref === 24 || _ref === 25) { $s = 2; continue; } /* */ if (_ref === 22) { $s = 3; continue; } /* */ $s = 4; continue; /* if (_ref === 1 || _ref === 2 || _ref === 3 || _ref === 4 || _ref === 5 || _ref === 7 || _ref === 8 || _ref === 9 || _ref === 10 || _ref === 12 || _ref === 13 || _ref === 14 || _ref === 17 || _ref === 21 || _ref === 19 || _ref === 24 || _ref === 25) { */ case 2: return true; $s = 4; continue; /* } else if (_ref === 22) { */ case 3: _r$1 = typ.Elem(); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } _r$2 = _r$1.Kind(); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } return _r$2 === 17; /* } */ case 4: return false; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: isWrapped }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._ref = _ref; $f.typ = typ; $f.$s = $s; $f.$r = $r; return $f; }; 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; } 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; } return new Value.ptr(rt, $newDataPointer(v, jsType(rt.ptrTo())), (((fl | (_r$5 >>> 0)) >>> 0) | 64) >>> 0); /* */ $s = -1; case -1: } 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; } return _r$2.zero(); /* */ $s = -1; case -1: } 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; } return _r$1; /* */ $s = -1; case -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, ptrType$4.nil, arrayType$1.zero(), ptrType$5.nil, ptrType$6.nil, ptrType$1.nil, 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)) { 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; } return _r; /* */ $s = -1; case -1: } 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; MapOf = function(key, elem) { var $ptr, _r, _r$1, _ref, elem, 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; _ref = $f._ref; elem = $f.elem; key = $f.key; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: _r = key.Kind(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _ref = _r; /* */ if (_ref === 19 || _ref === 21 || _ref === 23) { $s = 2; continue; } /* */ $s = 3; continue; /* if (_ref === 19 || _ref === 21 || _ref === 23) { */ case 2: _r$1 = key.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("reflect.MapOf: invalid key type " + _r$1)); /* } */ case 3: return reflectType($mapType(jsType(key), jsType(elem))); /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: MapOf }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f.elem = elem; $f.key = key; $f.$s = $s; $f.$r = $r; return $f; }; $pkg.MapOf = MapOf; 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; } return _r; /* */ $s = -1; case -1: } 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, _ref, typ; _ref = typ.Kind(); if (_ref === 25) { return new (jsType(typ).ptr)(); } else if (_ref === 17) { return jsType(typ).zero(); } else { return $newDataPointer(jsType(typ).zero(), jsType(typ.ptrTo())); } }; makeInt = function(f, bits, t) { var $ptr, _r, _ref, 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; _r = $f._r; _ref = $f._ref; 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); _ref = typ.Kind(); if (_ref === 3) { ptr.$set((bits.$low << 24 >> 24)); } else if (_ref === 4) { ptr.$set((bits.$low << 16 >> 16)); } else if (_ref === 2 || _ref === 5) { ptr.$set((bits.$low >> 0)); } else if (_ref === 6) { ptr.$set(new $Int64(bits.$high, bits.$low)); } else if (_ref === 8) { ptr.$set((bits.$low << 24 >>> 24)); } else if (_ref === 9) { ptr.$set((bits.$low << 16 >>> 16)); } else if (_ref === 7 || _ref === 10 || _ref === 12) { ptr.$set((bits.$low >>> 0)); } else if (_ref === 11) { ptr.$set(bits); } return new Value.ptr(typ, ptr, (((f | 64) >>> 0) | (typ.Kind() >>> 0)) >>> 0); /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: makeInt }; } $f.$ptr = $ptr; $f._r = _r; $f._ref = _ref; $f.bits = bits; $f.f = f; $f.ptr = ptr; $f.t = t; $f.typ = typ; $f.$s = $s; $f.$r = $r; return $f; }; memmove = function(adst, asrc, n) { var $ptr, adst, asrc, n; adst.$set(asrc.$get()); }; makemap = function(t) { var $ptr, m, t; m = 0; m = new ($Map)(); return m; }; mapaccess = function(t, m, key) { var $ptr, entry, k, key, m, t; k = key.$get(); if (!(k.$key === undefined)) { k = k.$key(); } entry = m[$externalize($internalize(k, $String), $String)]; if (entry === undefined) { return 0; } return $newDataPointer(entry.v, jsType(PtrTo(t.Elem()))); }; mapassign = function(t, m, key, val) { var $ptr, _r, 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; 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: kv = key.$get(); k = kv; if (!(k.$key === undefined)) { k = k.$key(); } 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($internalize(k, $String), $String)] = entry; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: mapassign }; } $f.$ptr = $ptr; $f._r = _r; $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, k, key, m, t; k = key.$get(); if (!(k.$key === undefined)) { k = k.$key(); } delete m[$externalize($internalize(k, $String), $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; } return $newDataPointer(iter.m[$externalize($internalize(k, $String), $String)].k, _r$2); /* */ $s = -1; case -1: } 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, _arg, _arg$1, _arg$2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _ref, 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; _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; _ref = $f._ref; 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: v = v; srcVal = v.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; } return _r; /* } */ case 2: val = null; _r$1 = typ.Kind(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } k = _r$1; _ref = k; /* */ if (_ref === 18) { $s = 5; continue; } /* */ if (_ref === 23) { $s = 6; continue; } /* */ if (_ref === 22) { $s = 7; continue; } /* */ if (_ref === 25) { $s = 8; continue; } /* */ if (_ref === 17 || _ref === 19 || _ref === 20 || _ref === 21 || _ref === 24) { $s = 9; continue; } /* */ $s = 10; continue; /* switch (0) { default: if (_ref === 18) { */ case 5: val = new (jsType(typ))(); $s = 11; continue; /* } else if (_ref === 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 (_ref === 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 = 11; 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 = 11; continue; /* } */ case 13: val = new (jsType(typ))(srcVal.$get, srcVal.$set); $s = 11; continue; /* } else if (_ref === 25) { */ case 8: val = new (jsType(typ).ptr)(); copyStruct(val, srcVal, typ); $s = 11; continue; /* } else if (_ref === 17 || _ref === 19 || _ref === 20 || _ref === 21 || _ref === 24) { */ case 9: val = v.ptr; $s = 11; continue; /* } else { */ case 10: $panic(new ValueError.ptr("reflect.Convert", k)); /* } } */ case 11: _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; } return new Value.ptr(_r$6, val, (((v.flag & 96) >>> 0) | (_r$7 >>> 0)) >>> 0); /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: cvtDirect }; } $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._ref = _ref; $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: src = src; dst = dst; 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 = dst.object(); if (dk === 17) { dstVal = new (jsType(SliceOf(dst.typ.Elem())))(dstVal); } srcVal = src.object(); if (sk === 17) { srcVal = new (jsType(SliceOf(src.typ.Elem())))(srcVal); } return $parseInt($copySlice(dstVal, srcVal)) >> 0; /* */ $s = -1; case -1: } 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, _r, fn, i, iface, m, m$1, op, prop, rcvr, rcvrtype, t, tt, ut, 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; fn = $f.fn; i = $f.i; iface = $f.iface; m = $f.m; m$1 = $f.m$1; op = $f.op; prop = $f.prop; rcvr = $f.rcvr; rcvrtype = $f.rcvrtype; t = $f.t; tt = $f.tt; ut = $f.ut; v = $f.v; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: rcvrtype = ptrType$1.nil; t = ptrType$1.nil; fn = 0; v = v; 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") : x.$array[x.$offset + i])); if (!(m.pkgPath === ptrType$5.nil)) { $panic(new $String("reflect: " + op + " of unexported method")); } iface = $pointerOfStructConversion(v.ptr, ptrType$7); if (iface.itab === ptrType$8.nil) { $panic(new $String("reflect: " + op + " of method on nil interface value")); } t = m.typ; prop = m.name.$get(); } else { ut = v.typ.uncommonType.uncommon(); if (ut === ptrType$6.nil || i < 0 || i >= ut.methods.$length) { $panic(new $String("reflect: internal error: invalid method index")); } m$1 = (x$1 = ut.methods, ((i < 0 || i >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + i])); if (!(m$1.pkgPath === ptrType$5.nil)) { $panic(new $String("reflect: " + op + " of unexported method")); } t = m$1.mtyp; prop = $internalize($methodSet(jsType(v.typ))[i].prop, $String); } rcvr = v.object(); _r = isWrapped(v.typ); /* */ $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: rcvr = new (jsType(v.typ))(rcvr); /* } */ case 2: fn = rcvr[$externalize(prop, $String)]; return [rcvrtype, t, fn]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: methodReceiver }; } $f.$ptr = $ptr; $f._r = _r; $f.fn = fn; $f.i = i; $f.iface = iface; $f.m = m; $f.m$1 = m$1; $f.op = op; $f.prop = prop; $f.rcvr = rcvr; $f.rcvrtype = rcvrtype; $f.t = t; $f.tt = tt; $f.ut = ut; $f.v = v; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f; }; valueInterface = function(v, safe) { var $ptr, _r, _r$1, 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; _r$1 = $f._r$1; safe = $f.safe; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: v = v; if (v.flag === 0) { $panic(new ValueError.ptr("reflect.Value.Interface", 0)); } if (safe && !((((v.flag & 32) >>> 0) === 0))) { $panic(new $String("reflect.Value.Interface: cannot return value obtained from unexported field or method")); } /* */ if (!((((v.flag & 256) >>> 0) === 0))) { $s = 1; continue; } /* */ $s = 2; continue; /* if (!((((v.flag & 256) >>> 0) === 0))) { */ case 1: _r = makeMethodValue("Interface", v); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } v = _r; /* } */ case 2: _r$1 = isWrapped(v.typ); /* */ $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: return new (jsType(v.typ))(v.object()); /* } */ case 5: return v.object(); /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: valueInterface }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $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, _r$1, _r$2, _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; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; fn = $f.fn; fv = $f.fv; op = $f.op; rcvr = $f.rcvr; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: fn = [fn]; rcvr = [rcvr]; v = v; if (((v.flag & 256) >>> 0) === 0) { $panic(new $String("reflect: internal error: invalid use of makePartialFunc")); } _r = methodReceiver(op, v, (v.flag >> 0) >> 9 >> 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _tuple = _r; fn[0] = _tuple[2]; rcvr[0] = v.object(); _r$1 = isWrapped(v.typ); /* */ $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: rcvr[0] = new (jsType(v.typ))(rcvr[0]); /* } */ case 3: fv = $makeFunc((function(fn, rcvr) { return function(arguments$1) { var $ptr, arguments$1; return fn[0].apply(rcvr[0], $externalize(arguments$1, sliceType$8)); }; })(fn, rcvr)); _r$2 = v.Type().common(); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } return new Value.ptr(_r$2, fv, (((v.flag & 32) >>> 0) | 19) >>> 0); /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: makeMethodValue }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f.fn = fn; $f.fv = fv; $f.op = op; $f.rcvr = rcvr; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; }; rtype.ptr.prototype.pointers = function() { var $ptr, _ref, t; t = this; _ref = t.Kind(); if (_ref === 22 || _ref === 21 || _ref === 18 || _ref === 19 || _ref === 25 || _ref === 17) { return true; } else { return false; } }; rtype.prototype.pointers = function() { return this.$val.pointers(); }; rtype.ptr.prototype.Comparable = function() { var $ptr, _r, _r$1, _r$2, _ref, i, 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; _ref = $f._ref; i = $f.i; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: t = this; _ref = t.Kind(); /* */ if (_ref === 19 || _ref === 23 || _ref === 21) { $s = 1; continue; } /* */ if (_ref === 17) { $s = 2; continue; } /* */ if (_ref === 25) { $s = 3; continue; } /* */ $s = 4; continue; /* if (_ref === 19 || _ref === 23 || _ref === 21) { */ case 1: return false; $s = 4; continue; /* } else if (_ref === 17) { */ case 2: _r = t.Elem().Comparable(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; $s = 4; continue; /* } else if (_ref === 25) { */ case 3: i = 0; /* while (true) { */ case 6: /* if (!(i < t.NumField())) { break; } */ if(!(i < t.NumField())) { $s = 7; continue; } _r$1 = t.Field(i); /* */ $s = 10; case 10: 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 = 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 = 8; continue; } /* */ $s = 9; continue; /* if (!_r$2) { */ case 8: return false; /* } */ case 9: i = i + (1) >> 0; /* } */ $s = 6; continue; case 7: /* } */ case 4: return true; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: rtype.ptr.prototype.Comparable }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._ref = _ref; $f.i = i; $f.t = t; $f.$s = $s; $f.$r = $r; return $f; }; rtype.prototype.Comparable = function() { return this.$val.Comparable(); }; uncommonType.ptr.prototype.Method = function(i) { var $ptr, fl, fn, i, m, mt, p, prop, t, x; m = new Method.ptr(); t = this; if (t === ptrType$6.nil || i < 0 || i >= t.methods.$length) { $panic(new $String("reflect: Method index out of range")); } p = (x = t.methods, ((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i])); if (!(p.name === ptrType$5.nil)) { m.Name = p.name.$get(); } fl = 19; if (!(p.pkgPath === ptrType$5.nil)) { m.PkgPath = p.pkgPath.$get(); fl = (fl | (32)) >>> 0; } mt = p.typ; m.Type = mt; prop = $internalize($methodSet(t.jsType)[i].prop, $String); fn = $makeFunc((function(arguments$1) { var $ptr, arguments$1, rcvr; rcvr = (0 >= arguments$1.$length ? $throwRuntimeError("index out of range") : arguments$1.$array[arguments$1.$offset + 0]); return rcvr[$externalize(prop, $String)].apply(rcvr, $externalize($subslice(arguments$1, 1), sliceType$8)); })); m.Func = new Value.ptr(mt, fn, fl); m.Index = i; return m; }; uncommonType.prototype.Method = function(i) { return this.$val.Method(i); }; Value.ptr.prototype.object = function() { var $ptr, _ref, newVal, v, val; v = this; if ((v.typ.Kind() === 17) || (v.typ.Kind() === 25)) { return v.ptr; } if (!((((v.flag & 64) >>> 0) === 0))) { val = v.ptr.$get(); if (!(val === $ifaceNil) && !(val.constructor === jsType(v.typ))) { _ref = v.typ.Kind(); switch (0) { default: if (_ref === 11 || _ref === 6) { val = new (jsType(v.typ))(val.$high, val.$low); } else if (_ref === 15 || _ref === 16) { val = new (jsType(v.typ))(val.$real, val.$imag); } else if (_ref === 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, _arg, _arg$1, _arg$2, _arg$3, _i, _i$1, _i$2, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _ref$3, _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; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _arg$3 = $f._arg$3; _i = $f._i; _i$1 = $f._i$1; _i$2 = $f._i$2; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$17 = $f._r$17; _r$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; _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 = v.typ; fn = 0; rcvr = null; /* */ if (!((((v.flag & 256) >>> 0) === 0))) { $s = 1; continue; } /* */ $s = 2; continue; /* if (!((((v.flag & 256) >>> 0) === 0))) { */ case 1: _r = methodReceiver(op, v, (v.flag >> 0) >> 9 >> 0); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _tuple = _r; t = _tuple[1]; fn = _tuple[2]; rcvr = v.object(); _r$1 = isWrapped(v.typ); /* */ $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: rcvr = new (jsType(v.typ))(rcvr); /* } */ case 6: $s = 3; continue; /* } else { */ case 2: fn = v.object(); rcvr = undefined; /* } */ case 3: 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") : _ref.$array[_ref.$offset + _i]); if (x.Kind() === 0) { $panic(new $String("reflect: " + op + " using zero Value argument")); } _i++; } i = 0; /* while (true) { */ case 8: /* if (!(i < n)) { break; } */ if(!(i < n)) { $s = 9; continue; } _tmp = ((i < 0 || i >= in$1.$length) ? $throwRuntimeError("index out of range") : in$1.$array[in$1.$offset + i]).Type(); _tmp$1 = t.In(i); xt = _tmp; targ = _tmp$1; _r$2 = xt.AssignableTo(targ); /* */ $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 = 10; continue; } /* */ $s = 11; continue; /* if (!_r$2) { */ case 10: _r$3 = xt.String(); /* */ $s = 13; case 13: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } _r$4 = targ.String(); /* */ $s = 14; case 14: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } $panic(new $String("reflect: " + op + " using " + _r$3 + " as type " + _r$4)); /* } */ case 11: i = i + (1) >> 0; /* } */ $s = 8; continue; case 9: /* */ if (!isSlice && t.IsVariadic()) { $s = 15; continue; } /* */ $s = 16; continue; /* if (!isSlice && t.IsVariadic()) { */ case 15: m = in$1.$length - n >> 0; _r$5 = MakeSlice(t.In(n), m, m); /* */ $s = 17; case 17: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } slice = _r$5; _r$6 = t.In(n).Elem(); /* */ $s = 18; case 18: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } elem = _r$6; i$1 = 0; /* while (true) { */ case 19: /* if (!(i$1 < m)) { break; } */ if(!(i$1 < m)) { $s = 20; continue; } x$2 = (x$1 = n + i$1 >> 0, ((x$1 < 0 || x$1 >= in$1.$length) ? $throwRuntimeError("index out of range") : in$1.$array[in$1.$offset + x$1])); xt$1 = x$2.Type(); _r$7 = xt$1.AssignableTo(elem); /* */ $s = 23; case 23: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } /* */ if (!_r$7) { $s = 21; continue; } /* */ $s = 22; continue; /* if (!_r$7) { */ case 21: _r$8 = xt$1.String(); /* */ $s = 24; case 24: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } _r$9 = elem.String(); /* */ $s = 25; case 25: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } $panic(new $String("reflect: cannot use " + _r$8 + " as type " + _r$9 + " in " + op)); /* } */ case 22: _r$10 = slice.Index(i$1); /* */ $s = 26; case 26: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } $r = _r$10.Set(x$2); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } i$1 = i$1 + (1) >> 0; /* } */ $s = 19; continue; case 20: origIn = in$1; in$1 = $makeSlice(sliceType$7, (n + 1 >> 0)); $copySlice($subslice(in$1, 0, n), origIn); ((n < 0 || n >= in$1.$length) ? $throwRuntimeError("index out of range") : in$1.$array[in$1.$offset + n] = slice); /* } */ case 16: 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 28: /* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 29; continue; } i$2 = _i$1; arg = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? $throwRuntimeError("index out of range") : _ref$1.$array[_ref$1.$offset + _i$1]); _arg = t.In(i$2); _r$11 = t.In(i$2).common(); /* */ $s = 30; case 30: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } _arg$1 = _r$11; _arg$2 = 0; _r$12 = arg.assignTo("reflect.Value.Call", _arg$1, _arg$2); /* */ $s = 31; case 31: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } _r$13 = _r$12.object(); /* */ $s = 32; case 32: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } _arg$3 = _r$13; _r$14 = unwrapJsObject(_arg, _arg$3); /* */ $s = 33; case 33: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } argsArray[i$2] = _r$14; _i$1++; /* } */ $s = 28; continue; case 29: _r$15 = callHelper(new sliceType$1([new $jsObjectPtr(fn), new $jsObjectPtr(rcvr), new $jsObjectPtr(argsArray)])); /* */ $s = 34; case 34: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } results = _r$15; _ref$2 = nout; /* */ if (_ref$2 === 0) { $s = 35; continue; } /* */ if (_ref$2 === 1) { $s = 36; continue; } /* */ $s = 37; continue; /* if (_ref$2 === 0) { */ case 35: return sliceType$7.nil; $s = 38; continue; /* } else if (_ref$2 === 1) { */ case 36: _r$16 = makeValue(t.Out(0), wrapJsObject(t.Out(0), results), 0); /* */ $s = 39; case 39: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } return new sliceType$7([$clone(_r$16, Value)]); $s = 38; continue; /* } else { */ case 37: ret = $makeSlice(sliceType$7, nout); _ref$3 = ret; _i$2 = 0; /* while (true) { */ case 40: /* if (!(_i$2 < _ref$3.$length)) { break; } */ if(!(_i$2 < _ref$3.$length)) { $s = 41; continue; } i$3 = _i$2; _r$17 = makeValue(t.Out(i$3), wrapJsObject(t.Out(i$3), results[i$3]), 0); /* */ $s = 42; case 42: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } ((i$3 < 0 || i$3 >= ret.$length) ? $throwRuntimeError("index out of range") : ret.$array[ret.$offset + i$3] = _r$17); _i$2++; /* } */ $s = 40; continue; case 41: return ret; /* } */ case 38: /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.call }; } $f.$ptr = $ptr; $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._arg$3 = _arg$3; $f._i = _i; $f._i$1 = _i$1; $f._i$2 = _i$2; $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$17 = _r$17; $f._r$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._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, _ref, k, v; v = this; k = new flag(v.flag).kind(); _ref = k; if (_ref === 17) { return v.typ.Len(); } else if (_ref === 18 || _ref === 23) { return $parseInt(v.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, _r, _ref, 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; _r = $f._r; _ref = $f._ref; 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(); _ref = k; /* */ if (_ref === 20) { $s = 1; continue; } /* */ if (_ref === 22) { $s = 2; continue; } /* */ $s = 3; continue; /* if (_ref === 20) { */ case 1: val = v.object(); if (val === $ifaceNil) { return new Value.ptr(ptrType$1.nil, 0, 0); } typ = reflectType(val.constructor); _r = makeValue(typ, val.$val, (v.flag & 32) >>> 0); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; $s = 4; continue; /* } else if (_ref === 22) { */ case 2: if (v.IsNil()) { return new Value.ptr(ptrType$1.nil, 0, 0); } val$1 = v.object(); tt = v.typ.kindType; fl = (((((v.flag & 32) >>> 0) | 64) >>> 0) | 128) >>> 0; fl = (fl | ((tt.elem.Kind() >>> 0))) >>> 0; return new Value.ptr(tt.elem, wrapJsObject(tt.elem, val$1), fl); $s = 4; continue; /* } else { */ case 3: $panic(new ValueError.ptr("reflect.Value.Elem", k)); /* } */ case 4: /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Elem }; } $f.$ptr = $ptr; $f._r = _r; $f._ref = _ref; $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; new flag(v.flag).mustBe(25); tt = v.typ.kindType; if (i < 0 || i >= tt.fields.$length) { $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") : x.$array[x.$offset + i])); typ[0] = field.typ; fl = (v.flag & 224) >>> 0; if (!(field.pkgPath === ptrType$5.nil)) { fl = (fl | (32)) >>> 0; } fl = (fl | ((typ[0].Kind() >>> 0))) >>> 0; tag = (x$1 = tt.fields, ((i < 0 || i >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + i])).tag; /* */ if (!(tag === ptrType$5.nil) && !((i === 0))) { $s = 1; continue; } /* */ $s = 2; continue; /* if (!(tag === ptrType$5.nil) && !((i === 0))) { */ case 1: jsTag[0] = getJsTag(tag.$get()); /* */ if (!(jsTag[0] === "")) { $s = 3; continue; } /* */ $s = 4; continue; /* if (!(jsTag[0] === "")) { */ case 3: /* while (true) { */ case 5: o = [o]; _r = v.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] = v.object().object; 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 = v.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 & 64) >>> 0) === 0)) && !((typ[0].Kind() === 17)) && !((typ[0].Kind() === 25))) { $s = 13; continue; } /* */ $s = 14; continue; /* if (!((((fl & 64) >>> 0) === 0)) && !((typ[0].Kind() === 17)) && !((typ[0].Kind() === 25))) { */ case 13: 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; } return _r$2; /* */ $s = -1; case -1: } 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, 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 = tag.substring(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 = tag.substring(0, i); tag = tag.substring((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 = tag.substring(0, (i + 1 >> 0)); tag = tag.substring((i + 1 >> 0)); if (name === "js") { _tuple = strconv.Unquote(qvalue); value = _tuple[0]; return value; } } return ""; }; Value.ptr.prototype.Index = function(i) { var $ptr, _r, _r$1, _ref, 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; _r = $f._r; _r$1 = $f._r$1; _ref = $f._ref; 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(); _ref = k; /* */ if (_ref === 17) { $s = 1; continue; } /* */ if (_ref === 23) { $s = 2; continue; } /* */ if (_ref === 24) { $s = 3; continue; } /* */ $s = 4; continue; /* if (_ref === 17) { */ case 1: 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 & 224) >>> 0; fl = (fl | ((typ$1[0].Kind() >>> 0))) >>> 0; a$1[0] = v.ptr; /* */ if (!((((fl & 64) >>> 0) === 0)) && !((typ$1[0].Kind() === 17)) && !((typ$1[0].Kind() === 25))) { $s = 6; continue; } /* */ $s = 7; continue; /* if (!((((fl & 64) >>> 0) === 0)) && !((typ$1[0].Kind() === 17)) && !((typ$1[0].Kind() === 25))) { */ case 6: 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$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$1[0], x); }; })(a, a$1, c, i, typ, typ$1)), fl); /* } */ case 7: _r = makeValue(typ$1[0], wrapJsObject(typ$1[0], a$1[0][i[0]]), fl); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; $s = 5; continue; /* } else if (_ref === 23) { */ case 2: s = v.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 = (192 | ((v.flag & 32) >>> 0)) >>> 0; fl$1 = (fl$1 | ((typ[0].Kind() >>> 0))) >>> 0; i[0] = i[0] + (($parseInt(s.$offset) >> 0)) >> 0; a[0] = s.$array; /* */ if (!((((fl$1 & 64) >>> 0) === 0)) && !((typ[0].Kind() === 17)) && !((typ[0].Kind() === 25))) { $s = 9; continue; } /* */ $s = 10; continue; /* if (!((((fl$1 & 64) >>> 0) === 0)) && !((typ[0].Kind() === 17)) && !((typ[0].Kind() === 25))) { */ case 9: 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[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[0], x); }; })(a, a$1, c, i, typ, typ$1)), fl$1); /* } */ case 10: _r$1 = makeValue(typ[0], wrapJsObject(typ[0], a[0][i[0]]), fl$1); /* */ $s = 11; case 11: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } return _r$1; $s = 5; continue; /* } else if (_ref === 24) { */ case 3: 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 & 32) >>> 0) | 8) >>> 0; c[0] = str.charCodeAt(i[0]); return new Value.ptr(uint8Type, (c.$ptr || (c.$ptr = new ptrType$9(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, c))), (fl$2 | 64) >>> 0); $s = 5; continue; /* } else { */ case 4: $panic(new ValueError.ptr("reflect.Value.Index", k)); /* } */ case 5: /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Index }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $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.IsNil = function() { var $ptr, _ref, k, v; v = this; k = new flag(v.flag).kind(); _ref = k; if (_ref === 18 || _ref === 22 || _ref === 23) { return v.object() === jsType(v.typ).nil; } else if (_ref === 19) { return v.object() === $throwNilPointerError; } else if (_ref === 21) { return v.object() === false; } else if (_ref === 20) { return v.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, _ref, k, v; v = this; k = new flag(v.flag).kind(); _ref = k; if (_ref === 17 || _ref === 24) { return $parseInt(v.object().length); } else if (_ref === 23) { return $parseInt(v.object().$length) >> 0; } else if (_ref === 18) { return $parseInt(v.object().$buffer.length) >> 0; } else if (_ref === 21) { return $parseInt($keys(v.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, _ref, k, v; v = this; k = new flag(v.flag).kind(); _ref = k; if (_ref === 18 || _ref === 21 || _ref === 22 || _ref === 26) { if (v.IsNil()) { return 0; } return v.object(); } else if (_ref === 19) { if (v.IsNil()) { return 0; } return 1; } else if (_ref === 23) { if (v.IsNil()) { return 0; } return v.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, _r, _r$1, _ref, 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; _ref = $f._ref; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: v = this; x = x; new flag(v.flag).mustBeAssignable(); new flag(x.flag).mustBeExported(); _r = x.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 & 64) >>> 0) === 0))) { $s = 2; continue; } /* */ $s = 3; continue; /* if (!((((v.flag & 64) >>> 0) === 0))) { */ case 2: _ref = v.typ.Kind(); /* */ if (_ref === 17) { $s = 4; continue; } /* */ if (_ref === 20) { $s = 5; continue; } /* */ if (_ref === 25) { $s = 6; continue; } /* */ $s = 7; continue; /* if (_ref === 17) { */ case 4: $copy(v.ptr, x.ptr, jsType(v.typ)); $s = 8; continue; /* } else if (_ref === 20) { */ case 5: _r$1 = valueInterface(x, false); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } v.ptr.$set(_r$1); $s = 8; continue; /* } else if (_ref === 25) { */ case 6: copyStruct(v.ptr, x.ptr, v.typ); $s = 8; continue; /* } else { */ case 7: v.ptr.$set(x.object()); /* } */ case 8: return; /* } */ case 3: v.ptr = x.ptr; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Set }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $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.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, _r, _r$1, _ref, 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; _r = $f._r; _r$1 = $f._r$1; _ref = $f._ref; 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(); _ref = kind; /* */ if (_ref === 17) { $s = 1; continue; } /* */ if (_ref === 23) { $s = 2; continue; } /* */ if (_ref === 24) { $s = 3; continue; } /* */ $s = 4; continue; /* if (_ref === 17) { */ case 1: if (((v.flag & 128) >>> 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))(v.object()); $s = 5; continue; /* } else if (_ref === 23) { */ case 2: typ = v.typ; s = v.object(); cap = $parseInt(s.$capacity) >> 0; $s = 5; continue; /* } else if (_ref === 24) { */ case 3: 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(str.substring(i, j))); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; $s = 5; continue; /* } else { */ case 4: $panic(new ValueError.ptr("reflect.Value.Slice", kind)); /* } */ case 5: 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 & 32) >>> 0); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } return _r$1; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Slice }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $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, _r, _ref, 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; _r = $f._r; _ref = $f._ref; 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(); _ref = kind; if (_ref === 17) { if (((v.flag & 128) >>> 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))(v.object()); } else if (_ref === 23) { typ = v.typ; s = v.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 & 32) >>> 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Slice3 }; } $f.$ptr = $ptr; $f._r = _r; $f._ref = _ref; $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(v.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$9([new sliceType$1([new $jsObjectPtr(ch)])]); if (nb) { comms = $append(comms, new sliceType$1([])); } _r = selectHelper(new sliceType$1([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; return [selected, received]; } recvRes = selectRes[1]; val.$set(recvRes[0]); _tmp$2 = true; _tmp$3 = !!(recvRes[1]); selected = _tmp$2; received = _tmp$3; return [selected, received]; /* */ $s = -1; case -1: } 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$9([new sliceType$1([new $jsObjectPtr(ch), new $jsObjectPtr(val.$get())])]); if (nb) { comms = $append(comms, new sliceType$1([])); } _r = selectHelper(new sliceType$1([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)) { return false; } return true; /* */ $s = -1; case -1: } 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) { return true; } if (i1 === null || i2 === null || !(i1.constructor === i2.constructor)) { return false; } _r = ValueOf(a1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _arg = _r; _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 = _r$1; _arg$2 = sliceType$10.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; } return _r$2; /* */ $s = -1; case -1: } 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, _arg, _arg$1, _arg$10, _arg$11, _arg$12, _arg$13, _arg$14, _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, _ref$2, _ref$3, entry, i, i$1, k, keys, n, n$1, v1, v2, visited, $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$10 = $f._arg$10; _arg$11 = $f._arg$11; _arg$12 = $f._arg$12; _arg$13 = $f._arg$13; _arg$14 = $f._arg$14; _arg$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; _ref$2 = $f._ref$2; _ref$3 = $f._ref$3; 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; visited = $f.visited; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: v2 = v2; v1 = v1; if (!v1.IsValid() || !v2.IsValid()) { return !v1.IsValid() && !v2.IsValid(); } if (!($interfaceIsEqual(v1.Type(), v2.Type()))) { return false; } _ref = v1.Kind(); if (_ref === 17 || _ref === 21 || _ref === 23 || _ref === 25) { _ref$1 = visited; _i = 0; while (true) { if (!(_i < _ref$1.$length)) { break; } entry = $clone(((_i < 0 || _i >= _ref$1.$length) ? $throwRuntimeError("index out of range") : _ref$1.$array[_ref$1.$offset + _i]), arrayType$1); if (v1.ptr === entry[0] && v2.ptr === entry[1]) { return true; } _i++; } visited = $append(visited, $toNativeArray($kindUnsafePointer, [v1.ptr, v2.ptr])); } _ref$2 = v1.Kind(); /* */ if (_ref$2 === 17 || _ref$2 === 23) { $s = 1; continue; } /* */ if (_ref$2 === 20) { $s = 2; continue; } /* */ if (_ref$2 === 22) { $s = 3; continue; } /* */ if (_ref$2 === 25) { $s = 4; continue; } /* */ if (_ref$2 === 21) { $s = 5; continue; } /* */ if (_ref$2 === 19) { $s = 6; continue; } /* */ if (_ref$2 === 26) { $s = 7; continue; } /* */ $s = 8; continue; /* if (_ref$2 === 17 || _ref$2 === 23) { */ case 1: if (v1.Kind() === 23) { if (!(v1.IsNil() === v2.IsNil())) { return false; } if (v1.object() === v2.object()) { return true; } } n = v1.Len(); if (!((n === v2.Len()))) { return false; } i = 0; /* while (true) { */ case 9: /* if (!(i < n)) { break; } */ if(!(i < n)) { $s = 10; continue; } _r = v1.Index(i); /* */ $s = 13; case 13: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _arg = _r; _r$1 = v2.Index(i); /* */ $s = 14; case 14: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } _arg$1 = _r$1; _arg$2 = visited; _r$2 = deepValueEqualJs(_arg, _arg$1, _arg$2); /* */ $s = 15; case 15: 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: return false; /* } */ case 12: i = i + (1) >> 0; /* } */ $s = 9; continue; case 10: return true; $s = 8; continue; /* } else if (_ref$2 === 20) { */ case 2: if (v1.IsNil() || v2.IsNil()) { return v1.IsNil() && v2.IsNil(); } _r$3 = v1.Elem(); /* */ $s = 16; case 16: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } _arg$3 = _r$3; _r$4 = v2.Elem(); /* */ $s = 17; case 17: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } _arg$4 = _r$4; _arg$5 = visited; _r$5 = deepValueEqualJs(_arg$3, _arg$4, _arg$5); /* */ $s = 18; case 18: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } return _r$5; $s = 8; continue; /* } else if (_ref$2 === 22) { */ case 3: _r$6 = v1.Elem(); /* */ $s = 19; case 19: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } _arg$6 = _r$6; _r$7 = v2.Elem(); /* */ $s = 20; case 20: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } _arg$7 = _r$7; _arg$8 = visited; _r$8 = deepValueEqualJs(_arg$6, _arg$7, _arg$8); /* */ $s = 21; case 21: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } return _r$8; $s = 8; continue; /* } else if (_ref$2 === 25) { */ case 4: n$1 = v1.NumField(); i$1 = 0; /* while (true) { */ case 22: /* if (!(i$1 < n$1)) { break; } */ if(!(i$1 < n$1)) { $s = 23; continue; } _r$9 = v1.Field(i$1); /* */ $s = 26; case 26: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } _arg$9 = _r$9; _r$10 = v2.Field(i$1); /* */ $s = 27; case 27: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } _arg$10 = _r$10; _arg$11 = visited; _r$11 = deepValueEqualJs(_arg$9, _arg$10, _arg$11); /* */ $s = 28; case 28: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } /* */ if (!_r$11) { $s = 24; continue; } /* */ $s = 25; continue; /* if (!_r$11) { */ case 24: return false; /* } */ case 25: i$1 = i$1 + (1) >> 0; /* } */ $s = 22; continue; case 23: return true; $s = 8; continue; /* } else if (_ref$2 === 21) { */ case 5: if (!(v1.IsNil() === v2.IsNil())) { return false; } if (v1.object() === v2.object()) { return true; } _r$12 = v1.MapKeys(); /* */ $s = 29; case 29: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } keys = _r$12; if (!((keys.$length === v2.Len()))) { return false; } _ref$3 = keys; _i$1 = 0; /* while (true) { */ case 30: /* if (!(_i$1 < _ref$3.$length)) { break; } */ if(!(_i$1 < _ref$3.$length)) { $s = 31; continue; } k = ((_i$1 < 0 || _i$1 >= _ref$3.$length) ? $throwRuntimeError("index out of range") : _ref$3.$array[_ref$3.$offset + _i$1]); _r$13 = v1.MapIndex(k); /* */ $s = 34; case 34: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } _arg$12 = _r$13; _r$14 = v2.MapIndex(k); /* */ $s = 35; case 35: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } _arg$13 = _r$14; _arg$14 = visited; _r$15 = deepValueEqualJs(_arg$12, _arg$13, _arg$14); /* */ $s = 36; case 36: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } /* */ if (!_r$15) { $s = 32; continue; } /* */ $s = 33; continue; /* if (!_r$15) { */ case 32: return false; /* } */ case 33: _i$1++; /* } */ $s = 30; continue; case 31: return true; $s = 8; continue; /* } else if (_ref$2 === 19) { */ case 6: return v1.IsNil() && v2.IsNil(); $s = 8; continue; /* } else if (_ref$2 === 26) { */ case 7: return v1.object() === v2.object(); /* } */ case 8: _r$16 = valueInterface(v1, false); /* */ $s = 37; case 37: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } _r$17 = valueInterface(v2, false); /* */ $s = 38; case 38: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } return !!($interfaceIsEqual(_r$16, _r$17)); /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: deepValueEqualJs }; } $f.$ptr = $ptr; $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$10 = _arg$10; $f._arg$11 = _arg$11; $f._arg$12 = _arg$12; $f._arg$13 = _arg$13; $f._arg$14 = _arg$14; $f._arg$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._ref$2 = _ref$2; $f._ref$3 = _ref$3; $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.visited = visited; $f.$s = $s; $f.$r = $r; return $f; }; 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") : kindNames.$array[kindNames.$offset + k]); } return "kind" + strconv.Itoa((k >> 0)); }; $ptrType(Kind).prototype.String = function() { return new Kind(this.$get()).String(); }; uncommonType.ptr.prototype.uncommon = function() { var $ptr, t; t = this; return t; }; uncommonType.prototype.uncommon = function() { return this.$val.uncommon(); }; uncommonType.ptr.prototype.PkgPath = function() { var $ptr, t; t = this; if (t === ptrType$6.nil || t.pkgPath === ptrType$5.nil) { return ""; } return t.pkgPath.$get(); }; uncommonType.prototype.PkgPath = function() { return this.$val.PkgPath(); }; uncommonType.ptr.prototype.Name = function() { var $ptr, t; t = this; if (t === ptrType$6.nil || t.name === ptrType$5.nil) { return ""; } return t.name.$get(); }; uncommonType.prototype.Name = function() { return this.$val.Name(); }; rtype.ptr.prototype.String = function() { var $ptr, t; t = this; return t.string.$get(); }; 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 (t.size >> 0) * 8 >> 0; }; 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(); }; uncommonType.ptr.prototype.NumMethod = function() { var $ptr, t; t = this; if (t === ptrType$6.nil) { return 0; } return t.methods.$length; }; uncommonType.prototype.NumMethod = function() { return this.$val.NumMethod(); }; uncommonType.ptr.prototype.MethodByName = function(name) { var $ptr, _i, _ref, _tmp, _tmp$1, i, m, name, ok, p, t, x; m = new Method.ptr(); ok = false; t = this; if (t === ptrType$6.nil) { return [m, ok]; } p = ptrType$10.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") : x.$array[x.$offset + i])); if (!(p.name === ptrType$5.nil) && p.name.$get() === name) { _tmp = $clone(t.Method(i), Method); _tmp$1 = true; $copy(m, _tmp, Method); ok = _tmp$1; return [m, ok]; } _i++; } return [m, ok]; }; uncommonType.prototype.MethodByName = function(name) { return this.$val.MethodByName(name); }; rtype.ptr.prototype.NumMethod = function() { var $ptr, t, tt; t = this; if (t.Kind() === 20) { tt = t.kindType; return tt.NumMethod(); } return t.uncommonType.NumMethod(); }; rtype.prototype.NumMethod = function() { return this.$val.NumMethod(); }; rtype.ptr.prototype.Method = function(i) { var $ptr, i, m, t, tt; m = new Method.ptr(); t = this; if (t.Kind() === 20) { tt = t.kindType; $copy(m, tt.Method(i), Method); return m; } $copy(m, t.uncommonType.Method(i), Method); return m; }; rtype.prototype.Method = function(i) { return this.$val.Method(i); }; rtype.ptr.prototype.MethodByName = function(name) { var $ptr, _tuple, _tuple$1, m, name, ok, t, tt; m = new Method.ptr(); ok = false; t = this; if (t.Kind() === 20) { tt = t.kindType; _tuple = tt.MethodByName(name); $copy(m, _tuple[0], Method); ok = _tuple[1]; return [m, ok]; } _tuple$1 = t.uncommonType.MethodByName(name); $copy(m, _tuple$1[0], Method); ok = _tuple$1[1]; return [m, ok]; }; rtype.prototype.MethodByName = function(name) { return this.$val.MethodByName(name); }; rtype.ptr.prototype.PkgPath = function() { var $ptr, t; t = this; return t.uncommonType.PkgPath(); }; rtype.prototype.PkgPath = function() { return this.$val.PkgPath(); }; rtype.ptr.prototype.Name = function() { var $ptr, t; t = this; return t.uncommonType.Name(); }; 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.dotdotdot; }; rtype.prototype.IsVariadic = function() { return this.$val.IsVariadic(); }; rtype.ptr.prototype.Elem = function() { var $ptr, _ref, t, tt, tt$1, tt$2, tt$3, tt$4; t = this; _ref = t.Kind(); if (_ref === 17) { tt = t.kindType; return toType(tt.elem); } else if (_ref === 18) { tt$1 = t.kindType; return toType(tt$1.elem); } else if (_ref === 21) { tt$2 = t.kindType; return toType(tt$2.elem); } else if (_ref === 22) { tt$3 = t.kindType; return toType(tt$3.elem); } else if (_ref === 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; } return _r; /* */ $s = -1; case -1: } 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; } return _r; /* */ $s = -1; case -1: } 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) { var $ptr, _r, name, 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 = $f.name; 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); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: rtype.ptr.prototype.FieldByName }; } $f.$ptr = $ptr; $f._r = _r; $f.name = name; $f.t = t; $f.tt = tt; $f.$s = $s; $f.$r = $r; return $f; }; rtype.prototype.FieldByName = function(name) { return this.$val.FieldByName(name); }; 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; } return _r; /* */ $s = -1; case -1: } 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$2, ((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : 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.in$2.$length; }; 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") : x.$array[x.$offset + i]))); }; rtype.prototype.Out = function(i) { return this.$val.Out(i); }; ChanDir.prototype.String = function() { var $ptr, _ref, d; d = this.$val; _ref = d; if (_ref === 2) { return "chan<-"; } else if (_ref === 1) { return "<-chan"; } else if (_ref === 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, t, x; m = new Method.ptr(); 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") : x.$array[x.$offset + i])); m.Name = p.name.$get(); if (!(p.pkgPath === ptrType$5.nil)) { m.PkgPath = p.pkgPath.$get(); } m.Type = toType(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) { var $ptr, _i, _ref, _tmp, _tmp$1, i, m, name, ok, p, t, x; m = new Method.ptr(); ok = false; t = this; if (t === ptrType$11.nil) { return [m, ok]; } p = ptrType$12.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") : x.$array[x.$offset + i])); if (p.name.$get() === name) { _tmp = $clone(t.Method(i), Method); _tmp$1 = true; $copy(m, _tmp, Method); ok = _tmp$1; return [m, ok]; } _i++; } return [m, ok]; }; interfaceType.prototype.MethodByName = function(name) { return this.$val.MethodByName(name); }; StructTag.prototype.Get = function(key) { var $ptr, _tuple, i, key, name, qvalue, tag, value; 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 = tag.substring(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 = tag.substring(0, i); tag = tag.substring((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 = tag.substring(0, (i + 1 >> 0)); tag = tag.substring((i + 1 >> 0)); if (key === name) { _tuple = strconv.Unquote(qvalue); value = _tuple[0]; return value; } } return ""; }; $ptrType(StructTag).prototype.Get = function(key) { return new StructTag(this.$get()).Get(key); }; structType.ptr.prototype.Field = function(i) { var $ptr, _r, _r$1, _r$2, f, i, p, t, t$1, 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; p = $f.p; t = $f.t; t$1 = $f.t$1; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: f = new StructField.ptr(); t = this; if (i < 0 || i >= t.fields.$length) { return f; } p = (x = t.fields, ((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i])); f.Type = toType(p.typ); /* */ if (!(p.name === ptrType$5.nil)) { $s = 1; continue; } /* */ $s = 2; continue; /* if (!(p.name === ptrType$5.nil)) { */ case 1: f.Name = p.name.$get(); $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 (!(p.pkgPath === ptrType$5.nil)) { f.PkgPath = p.pkgPath.$get(); } if (!(p.tag === ptrType$5.nil)) { f.Tag = p.tag.$get(); } f.Offset = p.offset; f.Index = new sliceType$11([i]); return f; /* */ $s = -1; case -1: } 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.p = p; $f.t = t; $f.t$1 = t$1; $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(); 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") : _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; } $copy(f, _r$4, StructField); _i++; /* } */ $s = 1; continue; case 2: return f; /* */ $s = -1; case -1: } 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, _key$4, _key$5, _map, _map$1, _r, _r$1, _r$2, _ref, _ref$1, _tmp, _tmp$1, _tmp$2, _tmp$3, count, current, f, fname, i, index, match, next, nextCount, ntyp, ok, result, scan, styp, t, t$1, visited, x, $s, $r; /* */ $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; _key$4 = $f._key$4; _key$5 = $f._key$5; _map = $f._map; _map$1 = $f._map$1; _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; 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(); ok = false; t = this; current = new sliceType$12([]); next = new sliceType$12([new fieldScan.ptr(t, sliceType$11.nil)]); nextCount = false; visited = (_map = new $Map(), _map); /* 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") : _ref.$array[_ref.$offset + _i]), fieldScan); t$1 = scan.typ; /* */ if ((_entry = visited[t$1.$key()], _entry !== undefined ? _entry.v : false)) { $s = 5; continue; } /* */ $s = 6; continue; /* if ((_entry = visited[t$1.$key()], _entry !== undefined ? _entry.v : false)) { */ case 5: _i++; /* continue; */ $s = 3; continue; /* } */ case 6: _key$1 = t$1; (visited || $throwRuntimeError("assignment to entry in nil map"))[_key$1.$key()] = { k: _key$1, 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") : x.$array[x.$offset + i])); fname = ""; ntyp = ptrType$1.nil; /* */ if (!(f.name === ptrType$5.nil)) { $s = 9; continue; } /* */ $s = 10; continue; /* if (!(f.name === ptrType$5.nil)) { */ case 9: fname = f.name.$get(); $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[t$1.$key()], _entry$1 !== undefined ? _entry$1.v : 0) > 1 || ok) { _tmp$2 = new StructField.ptr("", "", $ifaceNil, "", 0, sliceType$11.nil, false); _tmp$3 = false; $copy(result, _tmp$2, StructField); ok = _tmp$3; 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; } $copy(result, _r$2, StructField); result.Index = sliceType$11.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[styp.$key()], _entry$2 !== undefined ? _entry$2.v : 0) > 0) { _key$2 = styp; (nextCount || $throwRuntimeError("assignment to entry in nil map"))[_key$2.$key()] = { k: _key$2, v: 2 }; _i$1++; /* continue; */ $s = 7; continue; } if (nextCount === false) { nextCount = (_map$1 = new $Map(), _map$1); } _key$4 = styp; (nextCount || $throwRuntimeError("assignment to entry in nil map"))[_key$4.$key()] = { k: _key$4, v: 1 }; if ((_entry$3 = count[t$1.$key()], _entry$3 !== undefined ? _entry$3.v : 0) > 1) { _key$5 = styp; (nextCount || $throwRuntimeError("assignment to entry in nil map"))[_key$5.$key()] = { k: _key$5, v: 2 }; } index = sliceType$11.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: return [result, ok]; /* */ $s = -1; case -1: } 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._key$4 = _key$4; $f._key$5 = _key$5; $f._map = _map; $f._map$1 = _map$1; $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.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) { var $ptr, _i, _r, _r$1, _ref, _tmp, _tmp$1, _tuple, f, hasAnon, i, name, present, t, tf, 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 = $f.name; present = $f.present; t = $f.t; tf = $f.tf; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: name = [name]; f = new StructField.ptr(); present = false; t = this; hasAnon = false; /* */ if (!(name[0] === "")) { $s = 1; continue; } /* */ $s = 2; continue; /* if (!(name[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") : x.$array[x.$offset + i])); /* */ if (tf.name === ptrType$5.nil) { $s = 5; continue; } /* */ $s = 6; continue; /* if (tf.name === ptrType$5.nil) { */ case 5: hasAnon = true; _i++; /* continue; */ $s = 3; continue; /* } */ case 6: /* */ if (tf.name.$get() === name[0]) { $s = 7; continue; } /* */ $s = 8; continue; /* if (tf.name.$get() === name[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; $copy(f, _tmp, StructField); present = _tmp$1; return [f, present]; /* } */ case 8: _i++; /* } */ $s = 3; continue; case 4: /* } */ case 2: if (!hasAnon) { return [f, present]; } _r$1 = t.FieldByNameFunc((function(name) { return function(s) { var $ptr, s; return s === name[0]; }; })(name)); /* */ $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; $copy(f, _tuple[0], StructField); present = _tuple[1]; return [f, present]; /* */ $s = -1; case -1: } 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 = name; $f.present = present; $f.t = t; $f.tf = tf; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; }; structType.prototype.FieldByName = function(name) { return this.$val.FieldByName(name); }; 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: return implements$1($assertType(u, ptrType$1), t); /* */ $s = -1; case -1: } 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, t, u, uu; t = this; if ($interfaceIsEqual(u, $ifaceNil)) { $panic(new $String("reflect: nil type passed to Type.AssignableTo")); } uu = $assertType(u, ptrType$1); return directlyAssignable(uu, t) || implements$1(uu, t); }; 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; } return !(_r === $throwNilPointerError); /* */ $s = -1; case -1: } 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, x, x$1, x$2, x$3; 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") : x.$array[x.$offset + i])); vm = (x$1 = v.methods, ((j < 0 || j >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + j])); if (vm.name === tm.name && vm.pkgPath === tm.pkgPath && vm.typ === tm.typ) { i = i + (1) >> 0; if (i >= t.methods.$length) { return true; } } j = j + (1) >> 0; } return false; } v$1 = V.uncommonType.uncommon(); if (v$1 === ptrType$6.nil) { return false; } i$1 = 0; j$1 = 0; while (true) { if (!(j$1 < v$1.methods.$length)) { break; } tm$1 = (x$2 = t.methods, ((i$1 < 0 || i$1 >= x$2.$length) ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + i$1])); vm$1 = (x$3 = v$1.methods, ((j$1 < 0 || j$1 >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + j$1])); if (vm$1.name === tm$1.name && vm$1.pkgPath === tm$1.pkgPath && vm$1.mtyp === 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; if (T === V) { return true; } if (!(T.Name() === "") && !(V.Name() === "") || !((T.Kind() === V.Kind()))) { return false; } return haveIdenticalUnderlyingType(T, V); }; haveIdenticalUnderlyingType = function(T, V) { var $ptr, T, V, _i, _i$1, _i$2, _ref, _ref$1, _ref$2, _ref$3, i, i$1, i$2, kind, t, t$1, t$2, tf, typ, typ$1, v, v$1, v$2, vf, x, x$1, x$2, x$3; if (T === V) { return true; } kind = T.Kind(); if (!((kind === V.Kind()))) { return false; } if (1 <= kind && kind <= 16 || (kind === 24) || (kind === 26)) { return true; } _ref = kind; if (_ref === 17) { return $interfaceIsEqual(T.Elem(), V.Elem()) && (T.Len() === V.Len()); } else if (_ref === 18) { if ((V.ChanDir() === 3) && $interfaceIsEqual(T.Elem(), V.Elem())) { return true; } return (V.ChanDir() === T.ChanDir()) && $interfaceIsEqual(T.Elem(), V.Elem()); } else if (_ref === 19) { t = T.kindType; v = V.kindType; if (!(t.dotdotdot === v.dotdotdot) || !((t.in$2.$length === v.in$2.$length)) || !((t.out.$length === v.out.$length))) { return false; } _ref$1 = t.in$2; _i = 0; while (true) { if (!(_i < _ref$1.$length)) { break; } i = _i; typ = ((_i < 0 || _i >= _ref$1.$length) ? $throwRuntimeError("index out of range") : _ref$1.$array[_ref$1.$offset + _i]); if (!(typ === (x = v.in$2, ((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i])))) { return false; } _i++; } _ref$2 = t.out; _i$1 = 0; while (true) { if (!(_i$1 < _ref$2.$length)) { break; } i$1 = _i$1; typ$1 = ((_i$1 < 0 || _i$1 >= _ref$2.$length) ? $throwRuntimeError("index out of range") : _ref$2.$array[_ref$2.$offset + _i$1]); if (!(typ$1 === (x$1 = v.out, ((i$1 < 0 || i$1 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + i$1])))) { return false; } _i$1++; } return true; } else if (_ref === 20) { t$1 = T.kindType; v$1 = V.kindType; if ((t$1.methods.$length === 0) && (v$1.methods.$length === 0)) { return true; } return false; } else if (_ref === 21) { return $interfaceIsEqual(T.Key(), V.Key()) && $interfaceIsEqual(T.Elem(), V.Elem()); } else if (_ref === 22 || _ref === 23) { return $interfaceIsEqual(T.Elem(), V.Elem()); } else if (_ref === 25) { t$2 = T.kindType; v$2 = V.kindType; if (!((t$2.fields.$length === v$2.fields.$length))) { return false; } _ref$3 = t$2.fields; _i$2 = 0; while (true) { if (!(_i$2 < _ref$3.$length)) { break; } i$2 = _i$2; tf = (x$2 = t$2.fields, ((i$2 < 0 || i$2 >= x$2.$length) ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + i$2])); vf = (x$3 = v$2.fields, ((i$2 < 0 || i$2 >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + i$2])); if (!(tf.name === vf.name) && (tf.name === ptrType$5.nil || vf.name === ptrType$5.nil || !(tf.name.$get() === vf.name.$get()))) { return false; } if (!(tf.pkgPath === vf.pkgPath) && (tf.pkgPath === ptrType$5.nil || vf.pkgPath === ptrType$5.nil || !(tf.pkgPath.$get() === vf.pkgPath.$get()))) { return false; } if (!(tf.typ === vf.typ)) { return false; } if (!(tf.tag === vf.tag) && (tf.tag === ptrType$5.nil || vf.tag === ptrType$5.nil || !(tf.tag.$get() === vf.tag.$get()))) { return false; } if (!((tf.offset === vf.offset))) { return false; } _i$2++; } return true; } return false; }; 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 & 64) >>> 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 & 32) >>> 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 & 32) >>> 0) === 0))) { $panic(new $String("reflect: " + methodName() + " using value obtained using unexported field")); } if (((f & 128) >>> 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 & 128) >>> 0) === 0) { $panic(new $String("reflect.Value.Addr of unaddressable value")); } return new Value.ptr(v.typ.ptrTo(), v.ptr, ((((v.flag & 32) >>> 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: return v.ptr.$get(); /* */ $s = -1; case -1: } 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: return v.ptr.$get(); /* */ $s = -1; case -1: } 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 & 128) >>> 0) === 0)); }; Value.prototype.CanAddr = function() { return this.$val.CanAddr(); }; Value.ptr.prototype.CanSet = function() { var $ptr, v; v = this; return ((v.flag & 160) >>> 0) === 128; }; 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 = v.call("Call", in$1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -1: } 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 = v.call("CallSlice", in$1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -1: } 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, _ref, k, v, x; v = this; k = new flag(v.flag).kind(); _ref = k; if (_ref === 15) { return (x = v.ptr.$get(), new $Complex128(x.$real, x.$imag)); } else if (_ref === 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 = v.Field((0 >= index.$length ? $throwRuntimeError("index out of range") : index.$array[index.$offset + 0])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } 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") : _ref.$array[_ref.$offset + _i]); /* */ if (i > 0) { $s = 6; continue; } /* */ $s = 7; continue; /* if (i > 0) { */ case 6: if (!(v.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 (v.IsNil()) { $panic(new $String("reflect: indirection through nil pointer to embedded struct")); } _r$2 = v.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 = v.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: return v; /* */ $s = -1; case -1: } 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) { var $ptr, _r, _r$1, _tuple, f, name, 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 = $f.name; 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); /* */ $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 = v.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; } return _r$1; /* } */ case 3: return new Value.ptr(ptrType$1.nil, 0, 0); /* */ $s = -1; case -1: } 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 = name; $f.ok = ok; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; }; Value.prototype.FieldByName = function(name) { return this.$val.FieldByName(name); }; 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 = v.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; } return _r$1; /* } */ case 3: return new Value.ptr(ptrType$1.nil, 0, 0); /* */ $s = -1; case -1: } 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, _ref, k, v; v = this; k = new flag(v.flag).kind(); _ref = k; if (_ref === 13) { return v.ptr.$get(); } else if (_ref === 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, _ref, k, p, v; v = this; k = new flag(v.flag).kind(); p = v.ptr; _ref = k; if (_ref === 2) { return new $Int64(0, p.$get()); } else if (_ref === 3) { return new $Int64(0, p.$get()); } else if (_ref === 4) { return new $Int64(0, p.$get()); } else if (_ref === 5) { return new $Int64(0, p.$get()); } else if (_ref === 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 & 32) >>> 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(v, true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } i = _r; return i; /* */ $s = -1; case -1: } 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.InterfaceData = function() { var $ptr, v; v = this; new flag(v.flag).mustBe(20); return v.ptr; }; Value.prototype.InterfaceData = function() { return this.$val.InterfaceData(); }; 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; key = key; new flag(v.flag).mustBe(21); tt = v.typ.kindType; _r = key.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 & 64) >>> 0) === 0))) { k = key.ptr; } else { k = (key.$ptr_ptr || (key.$ptr_ptr = new ptrType$18(function() { return this.$target.ptr; }, function($v) { this.$target.ptr = $v; }, key))); } e = mapaccess(v.typ, v.pointer(), k); if (e === 0) { return new Value.ptr(ptrType$1.nil, 0, 0); } typ = tt.elem; fl = ((((v.flag | key.flag) >>> 0)) & 32) >>> 0; fl = (fl | ((typ.Kind() >>> 0))) >>> 0; if (ifaceIndir(typ)) { c = unsafe_New(typ); memmove(c, e, typ.size); return new Value.ptr(typ, c, (fl | 64) >>> 0); } else { return new Value.ptr(typ, e.$get(), fl); } /* */ $s = -1; case -1: } 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 & 32) >>> 0) | (keyType.Kind() >>> 0)) >>> 0; m = v.pointer(); mlen = 0; if (!(m === 0)) { mlen = maplen(m); } it = mapiterinit(v.typ, m); a = $makeSlice(sliceType$7, 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); memmove(c, key, keyType.size); ((i < 0 || i >= a.$length) ? $throwRuntimeError("index out of range") : a.$array[a.$offset + i] = new Value.ptr(keyType, c, (fl | 64) >>> 0)); } else { ((i < 0 || i >= a.$length) ? $throwRuntimeError("index out of range") : a.$array[a.$offset + i] = new Value.ptr(keyType, key.$get(), fl)); } mapiternext(it); i = i + (1) >> 0; /* } */ $s = 1; continue; case 2: return $subslice(a, 0, i); /* */ $s = -1; case -1: } 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, fl, i, v; v = this; if (v.typ === ptrType$1.nil) { $panic(new ValueError.ptr("reflect.Value.Method", 0)); } if (!((((v.flag & 256) >>> 0) === 0)) || (i >>> 0) >= (v.typ.NumMethod() >>> 0)) { $panic(new $String("reflect: Method index out of range")); } if ((v.typ.Kind() === 20) && v.IsNil()) { $panic(new $String("reflect: Method on nil interface value")); } fl = (v.flag & 96) >>> 0; fl = (fl | (19)) >>> 0; fl = (fl | (((((i >>> 0) << 9 >>> 0) | 256) >>> 0))) >>> 0; return new Value.ptr(v.typ, v.ptr, fl); }; Value.prototype.Method = function(i) { return this.$val.Method(i); }; Value.ptr.prototype.NumMethod = function() { var $ptr, v; v = this; if (v.typ === ptrType$1.nil) { $panic(new ValueError.ptr("reflect.Value.NumMethod", 0)); } if (!((((v.flag & 256) >>> 0) === 0))) { return 0; } return v.typ.NumMethod(); }; Value.prototype.NumMethod = function() { return this.$val.NumMethod(); }; Value.ptr.prototype.MethodByName = function(name) { var $ptr, _tuple, m, name, ok, v; v = this; if (v.typ === ptrType$1.nil) { $panic(new ValueError.ptr("reflect.Value.MethodByName", 0)); } if (!((((v.flag & 256) >>> 0) === 0))) { return new Value.ptr(ptrType$1.nil, 0, 0); } _tuple = v.typ.MethodByName(name); m = $clone(_tuple[0], Method); ok = _tuple[1]; if (!ok) { return new Value.ptr(ptrType$1.nil, 0, 0); } return v.Method(m.Index); }; Value.prototype.MethodByName = function(name) { return this.$val.MethodByName(name); }; 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, _ref, k, v, x; v = this; k = new flag(v.flag).kind(); _ref = k; if (_ref === 15) { return overflowFloat32(x.$real) || overflowFloat32(x.$imag); } else if (_ref === 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, _ref, k, v, x; v = this; k = new flag(v.flag).kind(); _ref = k; if (_ref === 13) { return overflowFloat32(x); } else if (_ref === 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, _ref, bitSize, k, trunc, v, x, x$1; v = this; k = new flag(v.flag).kind(); _ref = k; if (_ref === 2 || _ref === 3 || _ref === 4 || _ref === 5 || _ref === 6) { bitSize = (x$1 = v.typ.size, (((x$1 >>> 16 << 16) * 8 >>> 0) + (x$1 << 16 >>> 16) * 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, _ref, bitSize, k, trunc, v, x, x$1; v = this; k = new flag(v.flag).kind(); _ref = k; if (_ref === 7 || _ref === 12 || _ref === 8 || _ref === 9 || _ref === 10 || _ref === 11) { bitSize = (x$1 = v.typ.size, (((x$1 >>> 16 << 16) * 8 >>> 0) + (x$1 << 16 >>> 16) * 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(); ok = false; v = this; new flag(v.flag).mustBe(18); new flag(v.flag).mustBeExported(); _r = v.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]; return [x, ok]; /* */ $s = -1; case -1: } 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(); 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 | (64)) >>> 0; } else { p = (val.$ptr_ptr || (val.$ptr_ptr = new ptrType$18(function() { return this.$target.ptr; }, function($v) { this.$target.ptr = $v; }, val))); } _r = chanrecv(v.typ, v.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); } return [val, ok]; /* */ $s = -1; case -1: } 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; x = x; new flag(v.flag).mustBe(18); new flag(v.flag).mustBeExported(); _r = v.send(x, false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _r; /* */ $s = -1; case -1: } 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; x = x; 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 = x.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 & 64) >>> 0) === 0))) { p = x.ptr; } else { p = (x.$ptr_ptr || (x.$ptr_ptr = new ptrType$18(function() { return this.$target.ptr; }, function($v) { this.$target.ptr = $v; }, x))); } _r$1 = chansend(v.typ, v.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; return selected; /* */ $s = -1; case -1: } 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.SetBytes = 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 === 8))) { $s = 1; continue; } /* */ $s = 2; continue; /* if (!((_r === 8))) { */ case 1: $panic(new $String("reflect.Value.SetBytes of non-byte slice")); /* } */ case 2: v.ptr.$set(x); /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.SetBytes }; } $f.$ptr = $ptr; $f._r = _r; $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.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; case -1: } 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, _ref, k, v, x; v = this; new flag(v.flag).mustBeAssignable(); k = new flag(v.flag).kind(); _ref = k; if (_ref === 15) { v.ptr.$set(new $Complex64(x.$real, x.$imag)); } else if (_ref === 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, _ref, k, v, x; v = this; new flag(v.flag).mustBeAssignable(); k = new flag(v.flag).kind(); _ref = k; if (_ref === 13) { v.ptr.$set($fround(x)); } else if (_ref === 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, _ref, k, v, x; v = this; new flag(v.flag).mustBeAssignable(); k = new flag(v.flag).kind(); _ref = k; if (_ref === 2) { v.ptr.$set(((x.$low + ((x.$high >> 31) * 4294967296)) >> 0)); } else if (_ref === 3) { v.ptr.$set(((x.$low + ((x.$high >> 31) * 4294967296)) << 24 >> 24)); } else if (_ref === 4) { v.ptr.$set(((x.$low + ((x.$high >> 31) * 4294967296)) << 16 >> 16)); } else if (_ref === 5) { v.ptr.$set(((x.$low + ((x.$high >> 31) * 4294967296)) >> 0)); } else if (_ref === 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; val = val; key = key; new flag(v.flag).mustBe(21); new flag(v.flag).mustBeExported(); new flag(key.flag).mustBeExported(); tt = v.typ.kindType; _r = key.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 & 64) >>> 0) === 0))) { k = key.ptr; } else { k = (key.$ptr_ptr || (key.$ptr_ptr = new ptrType$18(function() { return this.$target.ptr; }, function($v) { this.$target.ptr = $v; }, key))); } if (val.typ === ptrType$1.nil) { mapdelete(v.typ, v.pointer(), k); return; } new flag(val.flag).mustBeExported(); _r$1 = val.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 & 64) >>> 0) === 0))) { e = val.ptr; } else { e = (val.$ptr_ptr || (val.$ptr_ptr = new ptrType$18(function() { return this.$target.ptr; }, function($v) { this.$target.ptr = $v; }, val))); } $r = mapassign(v.typ, v.pointer(), k, e); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* */ $s = -1; case -1: } 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, _ref, k, v, x; v = this; new flag(v.flag).mustBeAssignable(); k = new flag(v.flag).kind(); _ref = k; if (_ref === 7) { v.ptr.$set((x.$low >>> 0)); } else if (_ref === 8) { v.ptr.$set((x.$low << 24 >>> 24)); } else if (_ref === 9) { v.ptr.$set((x.$low << 16 >>> 16)); } else if (_ref === 10) { v.ptr.$set((x.$low >>> 0)); } else if (_ref === 11) { v.ptr.$set(x); } else if (_ref === 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, _r, _ref, 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; _ref = $f._ref; 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(); _ref = k; if (_ref === 0) { return ""; } else if (_ref === 24) { return v.ptr.$get(); } _r = v.Type().String(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return "<" + _r + " Value>"; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.String }; } $f.$ptr = $ptr; $f._r = _r; $f._ref = _ref; $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(); ok = false; v = this; new flag(v.flag).mustBe(18); new flag(v.flag).mustBeExported(); _r = v.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]; return [x, ok]; /* */ $s = -1; case -1: } 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; x = x; new flag(v.flag).mustBe(18); new flag(v.flag).mustBeExported(); _r = v.send(x, true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -1: } 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 & 256) >>> 0) === 0) { return v.typ; } i = (v.flag >> 0) >> 9 >> 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") : x.$array[x.$offset + i])); return m.typ; } ut = v.typ.uncommonType.uncommon(); if (ut === ptrType$6.nil || (i >>> 0) >= (ut.methods.$length >>> 0)) { $panic(new $String("reflect: internal error: invalid method index")); } m$1 = (x$1 = ut.methods, ((i < 0 || i >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + i])); return m$1.mtyp; }; Value.prototype.Type = function() { return this.$val.Type(); }; Value.ptr.prototype.Uint = function() { var $ptr, _ref, k, p, v, x; v = this; k = new flag(v.flag).kind(); p = v.ptr; _ref = k; if (_ref === 7) { return new $Uint64(0, p.$get()); } else if (_ref === 8) { return new $Uint64(0, p.$get()); } else if (_ref === 9) { return new $Uint64(0, p.$get()); } else if (_ref === 10) { return new $Uint64(0, p.$get()); } else if (_ref === 11) { return p.$get(); } else if (_ref === 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 & 128) >>> 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; case -1: } 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; } return new Value.ptr(_r$1, m, 21); /* */ $s = -1; case -1: } 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; Indirect = 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: v = v; if (!((v.Kind() === 22))) { return v; } _r = v.Elem(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Indirect }; } $f.$ptr = $ptr; $f._r = _r; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; }; $pkg.Indirect = Indirect; 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; } return new Value.ptr(_r$1, ptr, fl); /* */ $s = -1; case -1: } 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, 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; 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 & 256) >>> 0) === 0))) { $s = 1; continue; } /* */ $s = 2; continue; /* if (!((((v.flag & 256) >>> 0) === 0))) { */ case 1: _r = makeMethodValue(context, v); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } v = _r; /* } */ case 2: /* */ if (directlyAssignable(dst, v.typ)) { $s = 4; continue; } /* */ if (implements$1(dst, v.typ)) { $s = 5; continue; } /* */ $s = 6; continue; /* if (directlyAssignable(dst, v.typ)) { */ case 4: v.typ = dst; fl = (v.flag & 224) >>> 0; fl = (fl | ((dst.Kind() >>> 0))) >>> 0; return new Value.ptr(dst, v.ptr, fl); $s = 6; continue; /* } else if (implements$1(dst, v.typ)) { */ case 5: if (target === 0) { target = unsafe_New(dst); } _r$1 = valueInterface(v, false); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } x = _r$1; if (dst.NumMethod() === 0) { target.$set(x); } else { ifaceE2I(dst, x, target); } return new Value.ptr(dst, target, 84); /* } */ case 6: $panic(new $String(context + ": value of type " + v.typ.String() + " is not assignable to type " + dst.String())); /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.assignTo }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $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 & 256) >>> 0) === 0))) { $s = 1; continue; } /* */ $s = 2; continue; /* if (!((((v.flag & 256) >>> 0) === 0))) { */ case 1: _r = makeMethodValue("Convert", v); /* */ $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(v, t); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } return _r$4; /* */ $s = -1; case -1: } 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, _arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _ref$5, _ref$6, _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; _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; _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; _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: _ref = src.Kind(); /* */ if (_ref === 2 || _ref === 3 || _ref === 4 || _ref === 5 || _ref === 6) { $s = 1; continue; } /* */ if (_ref === 7 || _ref === 8 || _ref === 9 || _ref === 10 || _ref === 11 || _ref === 12) { $s = 2; continue; } /* */ if (_ref === 13 || _ref === 14) { $s = 3; continue; } /* */ if (_ref === 15 || _ref === 16) { $s = 4; continue; } /* */ if (_ref === 24) { $s = 5; continue; } /* */ if (_ref === 23) { $s = 6; continue; } /* */ $s = 7; continue; /* if (_ref === 2 || _ref === 3 || _ref === 4 || _ref === 5 || _ref === 6) { */ case 1: _ref$1 = dst.Kind(); if (_ref$1 === 2 || _ref$1 === 3 || _ref$1 === 4 || _ref$1 === 5 || _ref$1 === 6 || _ref$1 === 7 || _ref$1 === 8 || _ref$1 === 9 || _ref$1 === 10 || _ref$1 === 11 || _ref$1 === 12) { return cvtInt; } else if (_ref$1 === 13 || _ref$1 === 14) { return cvtIntFloat; } else if (_ref$1 === 24) { return cvtIntString; } $s = 7; continue; /* } else if (_ref === 7 || _ref === 8 || _ref === 9 || _ref === 10 || _ref === 11 || _ref === 12) { */ case 2: _ref$2 = dst.Kind(); if (_ref$2 === 2 || _ref$2 === 3 || _ref$2 === 4 || _ref$2 === 5 || _ref$2 === 6 || _ref$2 === 7 || _ref$2 === 8 || _ref$2 === 9 || _ref$2 === 10 || _ref$2 === 11 || _ref$2 === 12) { return cvtUint; } else if (_ref$2 === 13 || _ref$2 === 14) { return cvtUintFloat; } else if (_ref$2 === 24) { return cvtUintString; } $s = 7; continue; /* } else if (_ref === 13 || _ref === 14) { */ case 3: _ref$3 = dst.Kind(); if (_ref$3 === 2 || _ref$3 === 3 || _ref$3 === 4 || _ref$3 === 5 || _ref$3 === 6) { return cvtFloatInt; } else if (_ref$3 === 7 || _ref$3 === 8 || _ref$3 === 9 || _ref$3 === 10 || _ref$3 === 11 || _ref$3 === 12) { return cvtFloatUint; } else if (_ref$3 === 13 || _ref$3 === 14) { return cvtFloat; } $s = 7; continue; /* } else if (_ref === 15 || _ref === 16) { */ case 4: _ref$4 = dst.Kind(); if (_ref$4 === 15 || _ref$4 === 16) { return cvtComplex; } $s = 7; continue; /* } else if (_ref === 24) { */ case 5: if (!(dst.Kind() === 23)) { _v = false; $s = 10; continue s; } _r = dst.Elem().PkgPath(); /* */ $s = 11; case 11: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _v = _r === ""; case 10: /* */ if (_v) { $s = 8; continue; } /* */ $s = 9; continue; /* if (_v) { */ case 8: _r$1 = dst.Elem().Kind(); /* */ $s = 12; case 12: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } _ref$5 = _r$1; /* */ if (_ref$5 === 8) { $s = 13; continue; } /* */ if (_ref$5 === 5) { $s = 14; continue; } /* */ $s = 15; continue; /* if (_ref$5 === 8) { */ case 13: return cvtStringBytes; $s = 15; continue; /* } else if (_ref$5 === 5) { */ case 14: return cvtStringRunes; /* } */ case 15: /* } */ case 9: $s = 7; continue; /* } else if (_ref === 23) { */ case 6: if (!(dst.Kind() === 24)) { _v$1 = false; $s = 18; continue s; } _r$2 = src.Elem().PkgPath(); /* */ $s = 19; case 19: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } _v$1 = _r$2 === ""; case 18: /* */ if (_v$1) { $s = 16; continue; } /* */ $s = 17; continue; /* if (_v$1) { */ case 16: _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; } _ref$6 = _r$3; /* */ if (_ref$6 === 8) { $s = 21; continue; } /* */ if (_ref$6 === 5) { $s = 22; continue; } /* */ $s = 23; continue; /* if (_ref$6 === 8) { */ case 21: return cvtBytesString; $s = 23; continue; /* } else if (_ref$6 === 5) { */ case 22: return cvtRunesString; /* } */ case 23: /* } */ case 17: /* } */ case 7: if (haveIdenticalUnderlyingType(dst, src)) { return cvtDirect; } if (!((dst.Kind() === 22) && dst.Name() === "" && (src.Kind() === 22) && src.Name() === "")) { _v$2 = false; $s = 26; continue s; } _r$4 = dst.Elem().common(); /* */ $s = 27; case 27: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } _arg = _r$4; _r$5 = src.Elem().common(); /* */ $s = 28; case 28: 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); /* */ $s = 29; case 29: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } _v$2 = _r$6; case 26: /* */ if (_v$2) { $s = 24; continue; } /* */ $s = 25; continue; /* if (_v$2) { */ case 24: return cvtDirect; /* } */ case 25: if (implements$1(dst, src)) { if (src.Kind() === 20) { return cvtI2I; } return cvtT2I; } return $throwNilPointerError; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: convertOp }; } $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._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._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, _r, _ref, 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; _r = $f._r; _ref = $f._ref; 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); _ref = typ.size; if (_ref === 4) { ptr.$set($fround(v)); } else if (_ref === 8) { ptr.$set(v); } return new Value.ptr(typ, ptr, (((f | 64) >>> 0) | (typ.Kind() >>> 0)) >>> 0); /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: makeFloat }; } $f.$ptr = $ptr; $f._r = _r; $f._ref = _ref; $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, _r, _ref, 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; _r = $f._r; _ref = $f._ref; 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); _ref = typ.size; if (_ref === 8) { ptr.$set(new $Complex64(v.$real, v.$imag)); } else if (_ref === 16) { ptr.$set(v); } return new Value.ptr(typ, ptr, (((f | 64) >>> 0) | (typ.Kind() >>> 0)) >>> 0); /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: makeComplex }; } $f.$ptr = $ptr; $f._r = _r; $f._ref = _ref; $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 = _r.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; ret.SetString(v); ret.flag = (((ret.flag & ~128) >>> 0) | f) >>> 0; return ret; /* */ $s = -1; case -1: } 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 = _r.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 = ret.SetBytes(v); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } ret.flag = (((ret.flag & ~128) >>> 0) | f) >>> 0; return ret; /* */ $s = -1; case -1: } 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 = _r.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 = ret.setRunes(v); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } ret.flag = (((ret.flag & ~128) >>> 0) | f) >>> 0; return ret; /* */ $s = -1; case -1: } 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: v = v; _r = makeInt((v.flag & 32) >>> 0, (x = v.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; } return _r; /* */ $s = -1; case -1: } 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: v = v; _r = makeInt((v.flag & 32) >>> 0, v.Uint(), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -1: } 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: v = v; _r = makeInt((v.flag & 32) >>> 0, (x = new $Int64(0, v.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; } return _r; /* */ $s = -1; case -1: } 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: v = v; _r = makeInt((v.flag & 32) >>> 0, new $Uint64(0, v.Float()), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -1: } 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: v = v; _r = makeFloat((v.flag & 32) >>> 0, $flatten64(v.Int()), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -1: } 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: v = v; _r = makeFloat((v.flag & 32) >>> 0, $flatten64(v.Uint()), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -1: } 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: v = v; _r = makeFloat((v.flag & 32) >>> 0, v.Float(), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -1: } 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: v = v; _r = makeComplex((v.flag & 32) >>> 0, v.Complex(), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -1: } 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: v = v; _r = makeString((v.flag & 32) >>> 0, $encodeRune(v.Int().$low), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -1: } 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: v = v; _r = makeString((v.flag & 32) >>> 0, $encodeRune(v.Uint().$low), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -1: } 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: v = v; _arg = (v.flag & 32) >>> 0; _r = v.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; } return _r$1; /* */ $s = -1; case -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: v = v; _arg = (v.flag & 32) >>> 0; _r = v.String(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _arg$1 = new sliceType$14($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; } return _r$1; /* */ $s = -1; case -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: v = v; _arg = (v.flag & 32) >>> 0; _r = v.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; } return _r$1; /* */ $s = -1; case -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: v = v; _arg = (v.flag & 32) >>> 0; _r = v.String(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _arg$1 = new sliceType$15($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; } return _r$1; /* */ $s = -1; case -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: v = v; _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(v, 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; } return new Value.ptr(_r$4, target, (((((v.flag & 32) >>> 0) | 64) >>> 0) | 20) >>> 0); /* */ $s = -1; case -1: } 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: v = v; /* */ if (v.IsNil()) { $s = 1; continue; } /* */ $s = 2; continue; /* if (v.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 & 32) >>> 0))) >>> 0; return ret; /* } */ case 2: _r$1 = v.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(_r$1, typ); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } return _r$2; /* */ $s = -1; case -1: } 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; }; Kind.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; ptrType$1.methods = [{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: "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: "NumMethod", name: "NumMethod", 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: "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$11], [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)}]; ptrType$6.methods = [{prop: "Method", name: "Method", pkg: "", typ: $funcType([$Int], [Method], false)}, {prop: "uncommon", name: "uncommon", pkg: "reflect", typ: $funcType([], [ptrType$6], false)}, {prop: "PkgPath", name: "PkgPath", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Name", name: "Name", pkg: "", typ: $funcType([], [$String], false)}, {prop: "NumMethod", name: "NumMethod", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "MethodByName", name: "MethodByName", pkg: "", typ: $funcType([$String], [Method, $Bool], false)}]; ChanDir.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; ptrType$11.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$13.methods = [{prop: "Field", name: "Field", pkg: "", typ: $funcType([$Int], [StructField], false)}, {prop: "FieldByIndex", name: "FieldByIndex", pkg: "", typ: $funcType([sliceType$11], [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)}]; Value.methods = [{prop: "object", name: "object", pkg: "reflect", typ: $funcType([], [ptrType$3], false)}, {prop: "call", name: "call", pkg: "reflect", typ: $funcType([$String, sliceType$7], [sliceType$7], 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: "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: "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$14], false)}, {prop: "runes", name: "runes", pkg: "reflect", typ: $funcType([], [sliceType$15], 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$7], [sliceType$7], false)}, {prop: "CallSlice", name: "CallSlice", pkg: "", typ: $funcType([sliceType$7], [sliceType$7], false)}, {prop: "Complex", name: "Complex", pkg: "", typ: $funcType([], [$Complex128], false)}, {prop: "FieldByIndex", name: "FieldByIndex", pkg: "", typ: $funcType([sliceType$11], [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: "InterfaceData", name: "InterfaceData", pkg: "", typ: $funcType([], [arrayType$3], 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$7], 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: "SetBytes", name: "SetBytes", pkg: "", typ: $funcType([sliceType$14], [], false)}, {prop: "setRunes", name: "setRunes", pkg: "reflect", typ: $funcType([sliceType$15], [], 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$21.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; mapIter.init([{prop: "t", name: "t", pkg: "reflect", typ: Type, tag: ""}, {prop: "m", name: "m", pkg: "reflect", typ: ptrType$3, tag: ""}, {prop: "keys", name: "keys", pkg: "reflect", typ: ptrType$3, tag: ""}, {prop: "i", name: "i", pkg: "reflect", 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$11], [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([{prop: "size", name: "size", pkg: "reflect", typ: $Uintptr, tag: ""}, {prop: "hash", name: "hash", pkg: "reflect", typ: $Uint32, tag: ""}, {prop: "_$2", name: "_", pkg: "reflect", typ: $Uint8, tag: ""}, {prop: "align", name: "align", pkg: "reflect", typ: $Uint8, tag: ""}, {prop: "fieldAlign", name: "fieldAlign", pkg: "reflect", typ: $Uint8, tag: ""}, {prop: "kind", name: "kind", pkg: "reflect", typ: $Uint8, tag: ""}, {prop: "alg", name: "alg", pkg: "reflect", typ: ptrType$4, tag: ""}, {prop: "gc", name: "gc", pkg: "reflect", typ: arrayType$1, tag: ""}, {prop: "string", name: "string", pkg: "reflect", typ: ptrType$5, tag: ""}, {prop: "uncommonType", name: "", pkg: "reflect", typ: ptrType$6, tag: ""}, {prop: "ptrToThis", name: "ptrToThis", pkg: "reflect", typ: ptrType$1, tag: ""}, {prop: "zero", name: "zero", pkg: "reflect", typ: $UnsafePointer, tag: ""}]); typeAlg.init([{prop: "hash", name: "hash", pkg: "reflect", typ: funcType$4, tag: ""}, {prop: "equal", name: "equal", pkg: "reflect", typ: funcType$5, tag: ""}]); method.init([{prop: "name", name: "name", pkg: "reflect", typ: ptrType$5, tag: ""}, {prop: "pkgPath", name: "pkgPath", pkg: "reflect", typ: ptrType$5, tag: ""}, {prop: "mtyp", name: "mtyp", pkg: "reflect", typ: ptrType$1, tag: ""}, {prop: "typ", name: "typ", pkg: "reflect", typ: ptrType$1, tag: ""}, {prop: "ifn", name: "ifn", pkg: "reflect", typ: $UnsafePointer, tag: ""}, {prop: "tfn", name: "tfn", pkg: "reflect", typ: $UnsafePointer, tag: ""}]); uncommonType.init([{prop: "name", name: "name", pkg: "reflect", typ: ptrType$5, tag: ""}, {prop: "pkgPath", name: "pkgPath", pkg: "reflect", typ: ptrType$5, tag: ""}, {prop: "methods", name: "methods", pkg: "reflect", typ: sliceType$3, tag: ""}]); arrayType.init([{prop: "rtype", name: "", pkg: "reflect", typ: rtype, tag: "reflect:\"array\""}, {prop: "elem", name: "elem", pkg: "reflect", typ: ptrType$1, tag: ""}, {prop: "slice", name: "slice", pkg: "reflect", typ: ptrType$1, tag: ""}, {prop: "len", name: "len", pkg: "reflect", typ: $Uintptr, tag: ""}]); chanType.init([{prop: "rtype", name: "", pkg: "reflect", typ: rtype, tag: "reflect:\"chan\""}, {prop: "elem", name: "elem", pkg: "reflect", typ: ptrType$1, tag: ""}, {prop: "dir", name: "dir", pkg: "reflect", typ: $Uintptr, tag: ""}]); funcType.init([{prop: "rtype", name: "", pkg: "reflect", typ: rtype, tag: "reflect:\"func\""}, {prop: "dotdotdot", name: "dotdotdot", pkg: "reflect", typ: $Bool, tag: ""}, {prop: "in$2", name: "in", pkg: "reflect", typ: sliceType$4, tag: ""}, {prop: "out", name: "out", pkg: "reflect", typ: sliceType$4, tag: ""}]); imethod.init([{prop: "name", name: "name", pkg: "reflect", typ: ptrType$5, tag: ""}, {prop: "pkgPath", name: "pkgPath", pkg: "reflect", typ: ptrType$5, tag: ""}, {prop: "typ", name: "typ", pkg: "reflect", typ: ptrType$1, tag: ""}]); interfaceType.init([{prop: "rtype", name: "", pkg: "reflect", typ: rtype, tag: "reflect:\"interface\""}, {prop: "methods", name: "methods", pkg: "reflect", typ: sliceType$5, tag: ""}]); mapType.init([{prop: "rtype", name: "", pkg: "reflect", typ: rtype, tag: "reflect:\"map\""}, {prop: "key", name: "key", pkg: "reflect", typ: ptrType$1, tag: ""}, {prop: "elem", name: "elem", pkg: "reflect", typ: ptrType$1, tag: ""}, {prop: "bucket", name: "bucket", pkg: "reflect", typ: ptrType$1, tag: ""}, {prop: "hmap", name: "hmap", pkg: "reflect", typ: ptrType$1, tag: ""}, {prop: "keysize", name: "keysize", pkg: "reflect", typ: $Uint8, tag: ""}, {prop: "indirectkey", name: "indirectkey", pkg: "reflect", typ: $Uint8, tag: ""}, {prop: "valuesize", name: "valuesize", pkg: "reflect", typ: $Uint8, tag: ""}, {prop: "indirectvalue", name: "indirectvalue", pkg: "reflect", typ: $Uint8, tag: ""}, {prop: "bucketsize", name: "bucketsize", pkg: "reflect", typ: $Uint16, tag: ""}]); ptrType.init([{prop: "rtype", name: "", pkg: "reflect", typ: rtype, tag: "reflect:\"ptr\""}, {prop: "elem", name: "elem", pkg: "reflect", typ: ptrType$1, tag: ""}]); sliceType.init([{prop: "rtype", name: "", pkg: "reflect", typ: rtype, tag: "reflect:\"slice\""}, {prop: "elem", name: "elem", pkg: "reflect", typ: ptrType$1, tag: ""}]); structField.init([{prop: "name", name: "name", pkg: "reflect", typ: ptrType$5, tag: ""}, {prop: "pkgPath", name: "pkgPath", pkg: "reflect", typ: ptrType$5, tag: ""}, {prop: "typ", name: "typ", pkg: "reflect", typ: ptrType$1, tag: ""}, {prop: "tag", name: "tag", pkg: "reflect", typ: ptrType$5, tag: ""}, {prop: "offset", name: "offset", pkg: "reflect", typ: $Uintptr, tag: ""}]); structType.init([{prop: "rtype", name: "", pkg: "reflect", typ: rtype, tag: "reflect:\"struct\""}, {prop: "fields", name: "fields", pkg: "reflect", typ: sliceType$6, tag: ""}]); Method.init([{prop: "Name", name: "Name", pkg: "", typ: $String, tag: ""}, {prop: "PkgPath", name: "PkgPath", pkg: "", typ: $String, tag: ""}, {prop: "Type", name: "Type", pkg: "", typ: Type, tag: ""}, {prop: "Func", name: "Func", pkg: "", typ: Value, tag: ""}, {prop: "Index", name: "Index", pkg: "", typ: $Int, tag: ""}]); StructField.init([{prop: "Name", name: "Name", pkg: "", typ: $String, tag: ""}, {prop: "PkgPath", name: "PkgPath", pkg: "", typ: $String, tag: ""}, {prop: "Type", name: "Type", pkg: "", typ: Type, tag: ""}, {prop: "Tag", name: "Tag", pkg: "", typ: StructTag, tag: ""}, {prop: "Offset", name: "Offset", pkg: "", typ: $Uintptr, tag: ""}, {prop: "Index", name: "Index", pkg: "", typ: sliceType$11, tag: ""}, {prop: "Anonymous", name: "Anonymous", pkg: "", typ: $Bool, tag: ""}]); fieldScan.init([{prop: "typ", name: "typ", pkg: "reflect", typ: ptrType$13, tag: ""}, {prop: "index", name: "index", pkg: "reflect", typ: sliceType$11, tag: ""}]); Value.init([{prop: "typ", name: "typ", pkg: "reflect", typ: ptrType$1, tag: ""}, {prop: "ptr", name: "ptr", pkg: "reflect", typ: $UnsafePointer, tag: ""}, {prop: "flag", name: "", pkg: "reflect", typ: flag, tag: ""}]); ValueError.init([{prop: "Method", name: "Method", pkg: "", typ: $String, tag: ""}, {prop: "Kind", name: "Kind", pkg: "", typ: Kind, tag: ""}]); nonEmptyInterface.init([{prop: "itab", name: "itab", pkg: "reflect", typ: ptrType$8, tag: ""}, {prop: "word", name: "word", pkg: "reflect", typ: $UnsafePointer, 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 = math.$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 = strconv.$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; } initialized = false; stringPtrMap = new $Map(); callHelper = $assertType($internalize($call, $emptyInterface), funcType$1); selectHelper = $assertType($internalize($select, $emptyInterface), funcType$1); kindNames = new sliceType$2(["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"]); jsObjectPtr = reflectType($jsObjectPtr); uint8Type = $assertType(TypeOf(new $Uint8(0)), ptrType$1); $r = 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["fmt"] = (function() { var $pkg = {}, $init, errors, io, math, os, reflect, strconv, sync, utf8, fmtFlags, fmt, State, Formatter, Stringer, GoStringer, buffer, pp, runeUnreader, ScanState, scanError, ss, ssave, sliceType, sliceType$1, arrayType, sliceType$2, ptrType, ptrType$1, ptrType$2, ptrType$5, arrayType$1, arrayType$2, ptrType$25, funcType, padZeroBytes, padSpaceBytes, trueBytes, falseBytes, commaSpaceBytes, nilAngleBytes, nilParenBytes, nilBytes, mapBytes, percentBangBytes, missingBytes, badIndexBytes, panicBytes, extraBytes, irparenBytes, bytesBytes, badWidthBytes, badPrecBytes, noVerbBytes, ppFree, intBits, uintptrBits, byteType, space, ssFree, complexError, boolError, _r, _r$1, init, doPrec, newPrinter, Fprintf, Sprintf, Errorf, Fprint, Sprint, Fprintln, Sprintln, getField, 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", "fmtFlags", "fmt", function(widPresent_, precPresent_, minus_, plus_, sharp_, space_, unicode_, uniQuote_, 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.unicode = false; this.uniQuote = 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.unicode = unicode_; this.uniQuote = uniQuote_; this.zero = zero_; this.plusV = plusV_; this.sharpV = sharpV_; }); fmt = $pkg.fmt = $newType(0, $kindStruct, "fmt.fmt", "fmt", "fmt", function(intbuf_, buf_, wid_, prec_, fmtFlags_) { this.$val = this; if (arguments.length === 0) { this.intbuf = arrayType$2.zero(); this.buf = ptrType$1.nil; this.wid = 0; this.prec = 0; this.fmtFlags = new fmtFlags.ptr(); return; } this.intbuf = intbuf_; this.buf = buf_; this.wid = wid_; this.prec = prec_; this.fmtFlags = fmtFlags_; }); State = $pkg.State = $newType(8, $kindInterface, "fmt.State", "State", "fmt", null); Formatter = $pkg.Formatter = $newType(8, $kindInterface, "fmt.Formatter", "Formatter", "fmt", null); Stringer = $pkg.Stringer = $newType(8, $kindInterface, "fmt.Stringer", "Stringer", "fmt", null); GoStringer = $pkg.GoStringer = $newType(8, $kindInterface, "fmt.GoStringer", "GoStringer", "fmt", null); buffer = $pkg.buffer = $newType(12, $kindSlice, "fmt.buffer", "buffer", "fmt", null); pp = $pkg.pp = $newType(0, $kindStruct, "fmt.pp", "pp", "fmt", function(n_, panicking_, erroring_, buf_, arg_, value_, reordered_, goodArgNum_, runeBuf_, fmt_) { this.$val = this; if (arguments.length === 0) { this.n = 0; this.panicking = false; this.erroring = false; this.buf = buffer.nil; this.arg = $ifaceNil; this.value = new reflect.Value.ptr(); this.reordered = false; this.goodArgNum = false; this.runeBuf = arrayType$1.zero(); this.fmt = new fmt.ptr(); return; } this.n = n_; this.panicking = panicking_; this.erroring = erroring_; this.buf = buf_; this.arg = arg_; this.value = value_; this.reordered = reordered_; this.goodArgNum = goodArgNum_; this.runeBuf = runeBuf_; this.fmt = fmt_; }); runeUnreader = $pkg.runeUnreader = $newType(8, $kindInterface, "fmt.runeUnreader", "runeUnreader", "fmt", null); ScanState = $pkg.ScanState = $newType(8, $kindInterface, "fmt.ScanState", "ScanState", "fmt", null); scanError = $pkg.scanError = $newType(0, $kindStruct, "fmt.scanError", "scanError", "fmt", function(err_) { this.$val = this; if (arguments.length === 0) { this.err = $ifaceNil; return; } this.err = err_; }); ss = $pkg.ss = $newType(0, $kindStruct, "fmt.ss", "ss", "fmt", function(rr_, buf_, peekRune_, prevRune_, count_, atEOF_, ssave_) { this.$val = this; if (arguments.length === 0) { this.rr = $ifaceNil; this.buf = buffer.nil; this.peekRune = 0; this.prevRune = 0; this.count = 0; this.atEOF = false; this.ssave = new ssave.ptr(); return; } this.rr = rr_; this.buf = buf_; this.peekRune = peekRune_; this.prevRune = prevRune_; this.count = count_; this.atEOF = atEOF_; this.ssave = ssave_; }); ssave = $pkg.ssave = $newType(0, $kindStruct, "fmt.ssave", "ssave", "fmt", 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($Uint8); sliceType$1 = $sliceType($emptyInterface); arrayType = $arrayType($Uint16, 2); sliceType$2 = $sliceType(arrayType); ptrType = $ptrType(pp); ptrType$1 = $ptrType(buffer); ptrType$2 = $ptrType(reflect.rtype); ptrType$5 = $ptrType(ss); arrayType$1 = $arrayType($Uint8, 4); arrayType$2 = $arrayType($Uint8, 65); ptrType$25 = $ptrType(fmt); funcType = $funcType([$Int32], [$Bool], false); init = function() { var $ptr, i; i = 0; while (true) { if (!(i < 65)) { break; } ((i < 0 || i >= padZeroBytes.$length) ? $throwRuntimeError("index out of range") : padZeroBytes.$array[padZeroBytes.$offset + i] = 48); ((i < 0 || i >= padSpaceBytes.$length) ? $throwRuntimeError("index out of range") : padSpaceBytes.$array[padSpaceBytes.$offset + i] = 32); i = i + (1) >> 0; } }; fmt.ptr.prototype.clearflags = function() { var $ptr, f; f = this; $copy(f.fmtFlags, new fmtFlags.ptr(false, false, false, false, false, false, false, false, false, false, false), fmtFlags); }; 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.computePadding = function(width) { var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, f, left, leftWidth, padding, rightWidth, w, width; padding = sliceType.nil; leftWidth = 0; rightWidth = 0; f = this; left = !f.fmtFlags.minus; w = f.wid; if (w < 0) { left = false; w = -w; } w = w - (width) >> 0; if (w > 0) { if (left && f.fmtFlags.zero) { _tmp = padZeroBytes; _tmp$1 = w; _tmp$2 = 0; padding = _tmp; leftWidth = _tmp$1; rightWidth = _tmp$2; return [padding, leftWidth, rightWidth]; } if (left) { _tmp$3 = padSpaceBytes; _tmp$4 = w; _tmp$5 = 0; padding = _tmp$3; leftWidth = _tmp$4; rightWidth = _tmp$5; return [padding, leftWidth, rightWidth]; } else { _tmp$6 = padSpaceBytes; _tmp$7 = 0; _tmp$8 = w; padding = _tmp$6; leftWidth = _tmp$7; rightWidth = _tmp$8; return [padding, leftWidth, rightWidth]; } } return [padding, leftWidth, rightWidth]; }; fmt.prototype.computePadding = function(width) { return this.$val.computePadding(width); }; fmt.ptr.prototype.writePadding = function(n, padding) { var $ptr, f, m, n, padding; f = this; while (true) { if (!(n > 0)) { break; } m = n; if (m > 65) { m = 65; } f.buf.Write($subslice(padding, 0, m)); n = n - (m) >> 0; } }; fmt.prototype.writePadding = function(n, padding) { return this.$val.writePadding(n, padding); }; fmt.ptr.prototype.pad = function(b) { var $ptr, _tuple, b, f, left, padding, right; f = this; if (!f.fmtFlags.widPresent || (f.wid === 0)) { f.buf.Write(b); return; } _tuple = f.computePadding(utf8.RuneCount(b)); padding = _tuple[0]; left = _tuple[1]; right = _tuple[2]; if (left > 0) { f.writePadding(left, padding); } f.buf.Write(b); if (right > 0) { f.writePadding(right, padding); } }; fmt.prototype.pad = function(b) { return this.$val.pad(b); }; fmt.ptr.prototype.padString = function(s) { var $ptr, _tuple, f, left, padding, right, s; f = this; if (!f.fmtFlags.widPresent || (f.wid === 0)) { f.buf.WriteString(s); return; } _tuple = f.computePadding(utf8.RuneCountInString(s)); padding = _tuple[0]; left = _tuple[1]; right = _tuple[2]; if (left > 0) { f.writePadding(left, padding); } f.buf.WriteString(s); if (right > 0) { f.writePadding(right, padding); } }; 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.pad(trueBytes); } else { f.pad(falseBytes); } }; fmt.prototype.fmt_boolean = function(v) { return this.$val.fmt_boolean(v); }; fmt.ptr.prototype.integer = function(a, base, signedness, digits) { var $ptr, _ref, _ref$1, a, base, buf, digits, f, i, j, negative, next, prec, runeWidth, signedness, ua, width, width$1, x, x$1, x$2, x$3; f = this; if (f.fmtFlags.precPresent && (f.prec === 0) && (a.$high === 0 && a.$low === 0)) { return; } buf = $subslice(new sliceType(f.intbuf), 0); if (f.fmtFlags.widPresent) { width = f.wid; if ((base.$high === 0 && base.$low === 16) && f.fmtFlags.sharp) { width = width + (2) >> 0; } if (width > 65) { buf = $makeSlice(sliceType, width); } } negative = signedness === true && (a.$high < 0 || (a.$high === 0 && a.$low < 0)); if (negative) { a = new $Int64(-a.$high, -a.$low); } prec = 0; if (f.fmtFlags.precPresent) { prec = f.prec; f.fmtFlags.zero = false; } else if (f.fmtFlags.zero && f.fmtFlags.widPresent && !f.fmtFlags.minus && f.wid > 0) { prec = f.wid; if (negative || f.fmtFlags.plus || f.fmtFlags.space) { prec = prec - (1) >> 0; } } i = buf.$length; ua = new $Uint64(a.$high, a.$low); _ref = base; if ((_ref.$high === 0 && _ref.$low === 10)) { while (true) { if (!((ua.$high > 0 || (ua.$high === 0 && ua.$low >= 10)))) { break; } i = i - (1) >> 0; next = $div64(ua, new $Uint64(0, 10), false); ((i < 0 || i >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + i] = ((x = new $Uint64(0 + ua.$high, 48 + ua.$low), x$1 = $mul64(next, new $Uint64(0, 10)), new $Uint64(x.$high - x$1.$high, x.$low - x$1.$low)).$low << 24 >>> 24)); ua = next; } } else if ((_ref.$high === 0 && _ref.$low === 16)) { while (true) { if (!((ua.$high > 0 || (ua.$high === 0 && ua.$low >= 16)))) { break; } i = i - (1) >> 0; ((i < 0 || i >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + i] = digits.charCodeAt($flatten64(new $Uint64(ua.$high & 0, (ua.$low & 15) >>> 0)))); ua = $shiftRightUint64(ua, (4)); } } else if ((_ref.$high === 0 && _ref.$low === 8)) { while (true) { if (!((ua.$high > 0 || (ua.$high === 0 && ua.$low >= 8)))) { break; } i = i - (1) >> 0; ((i < 0 || i >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + i] = ((x$2 = new $Uint64(ua.$high & 0, (ua.$low & 7) >>> 0), new $Uint64(0 + x$2.$high, 48 + x$2.$low)).$low << 24 >>> 24)); ua = $shiftRightUint64(ua, (3)); } } else if ((_ref.$high === 0 && _ref.$low === 2)) { while (true) { if (!((ua.$high > 0 || (ua.$high === 0 && ua.$low >= 2)))) { break; } i = i - (1) >> 0; ((i < 0 || i >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + i] = ((x$3 = new $Uint64(ua.$high & 0, (ua.$low & 1) >>> 0), new $Uint64(0 + x$3.$high, 48 + x$3.$low)).$low << 24 >>> 24)); ua = $shiftRightUint64(ua, (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") : buf.$array[buf.$offset + i] = digits.charCodeAt($flatten64(ua))); 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") : buf.$array[buf.$offset + i] = 48); } if (f.fmtFlags.sharp) { _ref$1 = base; if ((_ref$1.$high === 0 && _ref$1.$low === 8)) { if (!((((i < 0 || i >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + i]) === 48))) { i = i - (1) >> 0; ((i < 0 || i >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + i] = 48); } } else if ((_ref$1.$high === 0 && _ref$1.$low === 16)) { i = i - (1) >> 0; ((i < 0 || i >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + i] = (120 + digits.charCodeAt(10) << 24 >>> 24) - 97 << 24 >>> 24); i = i - (1) >> 0; ((i < 0 || i >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + i] = 48); } } if (f.fmtFlags.unicode) { i = i - (1) >> 0; ((i < 0 || i >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + i] = 43); i = i - (1) >> 0; ((i < 0 || i >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + i] = 85); } if (negative) { i = i - (1) >> 0; ((i < 0 || i >= buf.$length) ? $throwRuntimeError("index out of range") : 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") : 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") : buf.$array[buf.$offset + i] = 32); } if (f.fmtFlags.unicode && f.fmtFlags.uniQuote && (a.$high > 0 || (a.$high === 0 && a.$low >= 0)) && (a.$high < 0 || (a.$high === 0 && a.$low <= 1114111)) && strconv.IsPrint(((a.$low + ((a.$high >> 31) * 4294967296)) >> 0))) { runeWidth = utf8.RuneLen(((a.$low + ((a.$high >> 31) * 4294967296)) >> 0)); width$1 = (2 + runeWidth >> 0) + 1 >> 0; $copySlice($subslice(buf, (i - width$1 >> 0)), $subslice(buf, i)); i = i - (width$1) >> 0; j = buf.$length - width$1 >> 0; ((j < 0 || j >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + j] = 32); j = j + (1) >> 0; ((j < 0 || j >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + j] = 39); j = j + (1) >> 0; utf8.EncodeRune($subslice(buf, j), ((a.$low + ((a.$high >> 31) * 4294967296)) >> 0)); j = j + (runeWidth) >> 0; ((j < 0 || j >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + j] = 39); } f.pad($subslice(buf, i)); }; fmt.prototype.integer = function(a, base, signedness, digits) { return this.$val.integer(a, base, signedness, digits); }; fmt.ptr.prototype.truncate = function(s) { var $ptr, _i, _ref, _rune, f, i, n, s; f = this; if (f.fmtFlags.precPresent && f.prec < utf8.RuneCountInString(s)) { n = f.prec; _ref = s; _i = 0; while (true) { if (!(_i < _ref.length)) { break; } _rune = $decodeRune(_ref, _i); i = _i; if (n === 0) { s = s.substring(0, i); break; } n = n - (1) >> 0; _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, n, s, x; f = this; n = b.$length; if (b === sliceType.nil) { n = s.length; } x = (digits.charCodeAt(10) - 97 << 24 >>> 24) + 120 << 24 >>> 24; buf = sliceType.nil; i = 0; while (true) { if (!(i < n)) { break; } if (i > 0 && f.fmtFlags.space) { buf = $append(buf, 32); } if (f.fmtFlags.sharp && (f.fmtFlags.space || (i === 0))) { buf = $append(buf, 48, x); } c = 0; if (b === sliceType.nil) { c = s.charCodeAt(i); } else { c = ((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]); } buf = $append(buf, digits.charCodeAt((c >>> 4 << 24 >>> 24)), digits.charCodeAt(((c & 15) >>> 0))); i = i + (1) >> 0; } f.pad(buf); }; 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; if (f.fmtFlags.precPresent && f.prec < s.length) { s = s.substring(0, f.prec); } f.fmt_sbx(s, sliceType.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; if (f.fmtFlags.precPresent && f.prec < b.$length) { b = $subslice(b, 0, f.prec); } 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, f, quoted, s; f = this; s = f.truncate(s); quoted = ""; if (f.fmtFlags.sharp && strconv.CanBackquote(s)) { quoted = "`" + s + "`"; } else { if (f.fmtFlags.plus) { quoted = strconv.QuoteToASCII(s); } else { quoted = strconv.Quote(s); } } f.padString(quoted); }; fmt.prototype.fmt_q = function(s) { return this.$val.fmt_q(s); }; fmt.ptr.prototype.fmt_qc = function(c) { var $ptr, c, f, quoted; f = this; quoted = sliceType.nil; if (f.fmtFlags.plus) { quoted = strconv.AppendQuoteRuneToASCII($subslice(new sliceType(f.intbuf), 0, 0), ((c.$low + ((c.$high >> 31) * 4294967296)) >> 0)); } else { quoted = strconv.AppendQuoteRune($subslice(new sliceType(f.intbuf), 0, 0), ((c.$low + ((c.$high >> 31) * 4294967296)) >> 0)); } f.pad(quoted); }; fmt.prototype.fmt_qc = function(c) { return this.$val.fmt_qc(c); }; doPrec = function(f, def) { var $ptr, def, f; if (f.fmtFlags.precPresent) { return f.prec; } return def; }; fmt.ptr.prototype.formatFloat = function(v, verb, prec, n) { var $ptr, f, n, num, prec, v, verb, $deferred; /* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); f = this; num = strconv.AppendFloat($subslice(new sliceType(f.intbuf), 0, 1), v, verb, prec, n); if (((1 >= num.$length ? $throwRuntimeError("index out of range") : num.$array[num.$offset + 1]) === 45) || ((1 >= num.$length ? $throwRuntimeError("index out of range") : num.$array[num.$offset + 1]) === 43)) { num = $subslice(num, 1); } else { (0 >= num.$length ? $throwRuntimeError("index out of range") : num.$array[num.$offset + 0] = 43); } if (math.IsInf(v, 0)) { if (f.fmtFlags.zero) { $deferred.push([(function() { var $ptr; f.fmtFlags.zero = true; }), []]); f.fmtFlags.zero = false; } } if (f.fmtFlags.zero && f.fmtFlags.widPresent && f.wid > num.$length) { if (f.fmtFlags.space && v >= 0) { f.buf.WriteByte(32); f.wid = f.wid - (1) >> 0; } else if (f.fmtFlags.plus || v < 0) { f.buf.WriteByte((0 >= num.$length ? $throwRuntimeError("index out of range") : num.$array[num.$offset + 0])); f.wid = f.wid - (1) >> 0; } f.pad($subslice(num, 1)); return; } if (f.fmtFlags.space && ((0 >= num.$length ? $throwRuntimeError("index out of range") : num.$array[num.$offset + 0]) === 43)) { (0 >= num.$length ? $throwRuntimeError("index out of range") : num.$array[num.$offset + 0] = 32); f.pad(num); return; } if (f.fmtFlags.plus || ((0 >= num.$length ? $throwRuntimeError("index out of range") : num.$array[num.$offset + 0]) === 45) || math.IsInf(v, 0)) { f.pad(num); return; } f.pad($subslice(num, 1)); /* */ } catch(err) { $err = err; } finally { $callDeferred($deferred, $err); } }; fmt.prototype.formatFloat = function(v, verb, prec, n) { return this.$val.formatFloat(v, verb, prec, n); }; fmt.ptr.prototype.fmt_e64 = function(v) { var $ptr, f, v; f = this; f.formatFloat(v, 101, doPrec(f, 6), 64); }; fmt.prototype.fmt_e64 = function(v) { return this.$val.fmt_e64(v); }; fmt.ptr.prototype.fmt_E64 = function(v) { var $ptr, f, v; f = this; f.formatFloat(v, 69, doPrec(f, 6), 64); }; fmt.prototype.fmt_E64 = function(v) { return this.$val.fmt_E64(v); }; fmt.ptr.prototype.fmt_f64 = function(v) { var $ptr, f, v; f = this; f.formatFloat(v, 102, doPrec(f, 6), 64); }; fmt.prototype.fmt_f64 = function(v) { return this.$val.fmt_f64(v); }; fmt.ptr.prototype.fmt_g64 = function(v) { var $ptr, f, v; f = this; f.formatFloat(v, 103, doPrec(f, -1), 64); }; fmt.prototype.fmt_g64 = function(v) { return this.$val.fmt_g64(v); }; fmt.ptr.prototype.fmt_G64 = function(v) { var $ptr, f, v; f = this; f.formatFloat(v, 71, doPrec(f, -1), 64); }; fmt.prototype.fmt_G64 = function(v) { return this.$val.fmt_G64(v); }; fmt.ptr.prototype.fmt_fb64 = function(v) { var $ptr, f, v; f = this; f.formatFloat(v, 98, 0, 64); }; fmt.prototype.fmt_fb64 = function(v) { return this.$val.fmt_fb64(v); }; fmt.ptr.prototype.fmt_e32 = function(v) { var $ptr, f, v; f = this; f.formatFloat(v, 101, doPrec(f, 6), 32); }; fmt.prototype.fmt_e32 = function(v) { return this.$val.fmt_e32(v); }; fmt.ptr.prototype.fmt_E32 = function(v) { var $ptr, f, v; f = this; f.formatFloat(v, 69, doPrec(f, 6), 32); }; fmt.prototype.fmt_E32 = function(v) { return this.$val.fmt_E32(v); }; fmt.ptr.prototype.fmt_f32 = function(v) { var $ptr, f, v; f = this; f.formatFloat(v, 102, doPrec(f, 6), 32); }; fmt.prototype.fmt_f32 = function(v) { return this.$val.fmt_f32(v); }; fmt.ptr.prototype.fmt_g32 = function(v) { var $ptr, f, v; f = this; f.formatFloat(v, 103, doPrec(f, -1), 32); }; fmt.prototype.fmt_g32 = function(v) { return this.$val.fmt_g32(v); }; fmt.ptr.prototype.fmt_G32 = function(v) { var $ptr, f, v; f = this; f.formatFloat(v, 71, doPrec(f, -1), 32); }; fmt.prototype.fmt_G32 = function(v) { return this.$val.fmt_G32(v); }; fmt.ptr.prototype.fmt_fb32 = function(v) { var $ptr, f, v; f = this; f.formatFloat(v, 98, 0, 32); }; fmt.prototype.fmt_fb32 = function(v) { return this.$val.fmt_fb32(v); }; fmt.ptr.prototype.fmt_c64 = function(v, verb) { var $ptr, f, v, verb; f = this; f.fmt_complex(v.$real, v.$imag, 32, verb); }; fmt.prototype.fmt_c64 = function(v, verb) { return this.$val.fmt_c64(v, verb); }; fmt.ptr.prototype.fmt_c128 = function(v, verb) { var $ptr, f, v, verb; f = this; f.fmt_complex(v.$real, v.$imag, 64, verb); }; fmt.prototype.fmt_c128 = function(v, verb) { return this.$val.fmt_c128(v, verb); }; fmt.ptr.prototype.fmt_complex = function(r, j, size, verb) { var $ptr, _ref, f, i, j, oldPlus, oldSpace, oldWid, r, size, verb; f = this; f.buf.WriteByte(40); oldPlus = f.fmtFlags.plus; oldSpace = f.fmtFlags.space; oldWid = f.wid; i = 0; while (true) { _ref = verb; if (_ref === 98) { f.formatFloat(r, 98, 0, size); } else if (_ref === 101) { f.formatFloat(r, 101, doPrec(f, 6), size); } else if (_ref === 69) { f.formatFloat(r, 69, doPrec(f, 6), size); } else if (_ref === 102 || _ref === 70) { f.formatFloat(r, 102, doPrec(f, 6), size); } else if (_ref === 103) { f.formatFloat(r, 103, doPrec(f, -1), size); } else if (_ref === 71) { f.formatFloat(r, 71, doPrec(f, -1), size); } if (!((i === 0))) { break; } f.fmtFlags.plus = true; f.fmtFlags.space = false; f.wid = oldWid; r = j; i = i + (1) >> 0; } f.fmtFlags.space = oldSpace; f.fmtFlags.plus = oldPlus; f.wid = oldWid; f.buf.Write(irparenBytes); }; fmt.prototype.fmt_complex = function(r, j, size, verb) { return this.$val.fmt_complex(r, j, size, verb); }; $ptrType(buffer).prototype.Write = function(p) { var $ptr, _tmp, _tmp$1, b, err, n, p; n = 0; err = $ifaceNil; b = this; b.$set($appendSlice(b.$get(), p)); _tmp = p.$length; _tmp$1 = $ifaceNil; n = _tmp; err = _tmp$1; return [n, err]; }; $ptrType(buffer).prototype.WriteString = function(s) { var $ptr, _tmp, _tmp$1, b, err, n, s; n = 0; err = $ifaceNil; b = this; b.$set($appendSlice(b.$get(), new buffer($stringToBytes(s)))); _tmp = s.length; _tmp$1 = $ifaceNil; n = _tmp; err = _tmp$1; return [n, err]; }; $ptrType(buffer).prototype.WriteByte = function(c) { var $ptr, b, c; b = this; b.$set($append(b.$get(), c)); return $ifaceNil; }; $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 $ifaceNil; } 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(x.$array), x.$offset, x.$offset + x.$length)), r); bp.$set($subslice(b, 0, (n + w >> 0))); return $ifaceNil; }; newPrinter = function() { var $ptr, _r$2, p, $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; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: _r$2 = ppFree.Get(); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } p = $assertType(_r$2, ptrType); 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)))); return p; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: newPrinter }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f.p = p; $f.$s = $s; $f.$r = $r; return $f; }; pp.ptr.prototype.free = function() { var $ptr, p; p = this; if (p.buf.$capacity > 1024) { return; } p.buf = $subslice(p.buf, 0, 0); p.arg = $ifaceNil; p.value = new reflect.Value.ptr(ptrType$2.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, _ref, b, p; p = this; _ref = b; if (_ref === 45) { return p.fmt.fmtFlags.minus; } else if (_ref === 43) { return p.fmt.fmtFlags.plus; } else if (_ref === 35) { return p.fmt.fmtFlags.sharp; } else if (_ref === 32) { return p.fmt.fmtFlags.space; } else if (_ref === 48) { return p.fmt.fmtFlags.zero; } return false; }; pp.prototype.Flag = function(b) { return this.$val.Flag(b); }; pp.ptr.prototype.add = function(c) { var $ptr, c, p; p = this; (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteRune(c); }; pp.prototype.add = function(c) { return this.$val.add(c); }; pp.ptr.prototype.Write = function(b) { var $ptr, _tuple, b, err, p, ret; ret = 0; err = $ifaceNil; p = this; _tuple = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).Write(b); ret = _tuple[0]; err = _tuple[1]; return [ret, err]; }; pp.prototype.Write = function(b) { return this.$val.Write(b); }; Fprintf = function(w, format, a) { var $ptr, _r$2, _r$3, _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$2 = $f._r$2; _r$3 = $f._r$3; _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$2 = newPrinter(); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } p = _r$2; $r = p.doPrintf(format, a); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } _r$3 = w.Write((x = p.buf, $subslice(new sliceType(x.$array), x.$offset, x.$offset + x.$length))); /* */ $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; n = _tuple[0]; err = _tuple[1]; p.free(); return [n, err]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Fprintf }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $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$2, 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$2 = $f._r$2; 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$2 = newPrinter(); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } p = _r$2; $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(); return s; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Sprintf }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $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$2, _r$3, a, format, $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; _r$3 = $f._r$3; a = $f.a; format = $f.format; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: _r$2 = Sprintf(format, a); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } _r$3 = errors.New(_r$2); /* */ $s = 2; case 2: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } return _r$3; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Errorf }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f.a = a; $f.format = format; $f.$s = $s; $f.$r = $r; return $f; }; $pkg.Errorf = Errorf; Fprint = function(w, a) { var $ptr, _r$2, _r$3, _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$2 = $f._r$2; _r$3 = $f._r$3; _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$2 = newPrinter(); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } p = _r$2; $r = p.doPrint(a, false, false); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } _r$3 = w.Write((x = p.buf, $subslice(new sliceType(x.$array), x.$offset, x.$offset + x.$length))); /* */ $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; n = _tuple[0]; err = _tuple[1]; p.free(); return [n, err]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Fprint }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $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$2, 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$2 = $f._r$2; a = $f.a; p = $f.p; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: _r$2 = newPrinter(); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } p = _r$2; $r = p.doPrint(a, false, false); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } s = $bytesToString(p.buf); p.free(); return s; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Sprint }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $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$2, _r$3, _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$2 = $f._r$2; _r$3 = $f._r$3; _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$2 = newPrinter(); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } p = _r$2; $r = p.doPrint(a, true, true); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } _r$3 = w.Write((x = p.buf, $subslice(new sliceType(x.$array), x.$offset, x.$offset + x.$length))); /* */ $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; n = _tuple[0]; err = _tuple[1]; p.free(); return [n, err]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Fprintln }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $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; Sprintln = function(a) { var $ptr, _r$2, 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$2 = $f._r$2; a = $f.a; p = $f.p; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: _r$2 = newPrinter(); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } p = _r$2; $r = p.doPrint(a, true, true); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } s = $bytesToString(p.buf); p.free(); return s; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Sprintln }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $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$2, _r$3, 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$2 = $f._r$2; _r$3 = $f._r$3; i = $f.i; v = $f.v; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: v = v; _r$2 = v.Field(i); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } val = _r$2; /* */ if ((val.Kind() === 20) && !val.IsNil()) { $s = 2; continue; } /* */ $s = 3; continue; /* if ((val.Kind() === 20) && !val.IsNil()) { */ case 2: _r$3 = val.Elem(); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } val = _r$3; /* } */ case 3: return val; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: getField }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f.i = i; $f.v = v; $f.val = val; $f.$s = $s; $f.$r = $r; return $f; }; parsenum = function(s, start, end) { var $ptr, _tmp, _tmp$1, _tmp$2, 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; } num = (num * 10 >> 0) + ((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$2, _r$3, p, v, $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; _r$3 = $f._r$3; p = $f.p; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: p = this; v = v; if (!v.IsValid()) { (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).Write(nilAngleBytes); 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$2 = v.Type().String(); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } _r$3 = (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 = 2; case 2: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } _r$3; (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; case -1: } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.unknownType }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $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$2, _r$3, _r$4, _r$5, _r$6, _r$7, p, verb, $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; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; p = $f.p; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: p = this; p.erroring = true; p.add(37); p.add(33); p.add(verb); p.add(40); /* */ if (!($interfaceIsEqual(p.arg, $ifaceNil))) { $s = 1; continue; } /* */ if (p.value.IsValid()) { $s = 2; continue; } /* */ $s = 3; continue; /* if (!($interfaceIsEqual(p.arg, $ifaceNil))) { */ case 1: _r$2 = reflect.TypeOf(p.arg).String(); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } _r$3 = (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 = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } _r$3; p.add(61); _r$4 = p.printArg(p.arg, 118, 0); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } _r$4; $s = 4; continue; /* } else if (p.value.IsValid()) { */ case 2: _r$5 = p.value.Type().String(); /* */ $s = 8; case 8: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } _r$6 = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(_r$5); /* */ $s = 9; case 9: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } _r$6; p.add(61); _r$7 = p.printValue(p.value, 118, 0); /* */ $s = 10; case 10: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } _r$7; $s = 4; continue; /* } else { */ case 3: (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).Write(nilAngleBytes); /* } */ case 4: p.add(41); p.erroring = false; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.badVerb }; } $f.$ptr = $ptr; $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.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, _ref, p, v, verb, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _ref = $f._ref; p = $f.p; v = $f.v; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: p = this; _ref = verb; /* */ if (_ref === 116 || _ref === 118) { $s = 1; continue; } /* */ $s = 2; continue; /* if (_ref === 116 || _ref === 118) { */ case 1: p.fmt.fmt_boolean(v); $s = 3; continue; /* } else { */ case 2: $r = p.badVerb(verb); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 3: /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.fmtBool }; } $f.$ptr = $ptr; $f._ref = _ref; $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.fmtC = function(c) { var $ptr, c, p, r, w, x; p = this; r = ((c.$low + ((c.$high >> 31) * 4294967296)) >> 0); if (!((x = new $Int64(0, r), (x.$high === c.$high && x.$low === c.$low)))) { r = 65533; } w = utf8.EncodeRune($subslice(new sliceType(p.runeBuf), 0, 4), r); p.fmt.pad($subslice(new sliceType(p.runeBuf), 0, w)); }; pp.prototype.fmtC = function(c) { return this.$val.fmtC(c); }; pp.ptr.prototype.fmtInt64 = function(v, verb) { var $ptr, _ref, p, v, verb, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _ref = $f._ref; p = $f.p; v = $f.v; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: p = this; _ref = verb; /* */ if (_ref === 98) { $s = 1; continue; } /* */ if (_ref === 99) { $s = 2; continue; } /* */ if (_ref === 100 || _ref === 118) { $s = 3; continue; } /* */ if (_ref === 111) { $s = 4; continue; } /* */ if (_ref === 113) { $s = 5; continue; } /* */ if (_ref === 120) { $s = 6; continue; } /* */ if (_ref === 85) { $s = 7; continue; } /* */ if (_ref === 88) { $s = 8; continue; } /* */ $s = 9; continue; /* if (_ref === 98) { */ case 1: p.fmt.integer(v, new $Uint64(0, 2), true, "0123456789abcdef"); $s = 10; continue; /* } else if (_ref === 99) { */ case 2: p.fmtC(v); $s = 10; continue; /* } else if (_ref === 100 || _ref === 118) { */ case 3: p.fmt.integer(v, new $Uint64(0, 10), true, "0123456789abcdef"); $s = 10; continue; /* } else if (_ref === 111) { */ case 4: p.fmt.integer(v, new $Uint64(0, 8), true, "0123456789abcdef"); $s = 10; continue; /* } else if (_ref === 113) { */ case 5: /* */ if ((0 < v.$high || (0 === v.$high && 0 <= v.$low)) && (v.$high < 0 || (v.$high === 0 && v.$low <= 1114111))) { $s = 11; continue; } /* */ $s = 12; continue; /* if ((0 < v.$high || (0 === v.$high && 0 <= v.$low)) && (v.$high < 0 || (v.$high === 0 && v.$low <= 1114111))) { */ case 11: p.fmt.fmt_qc(v); $s = 13; continue; /* } else { */ case 12: $r = p.badVerb(verb); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 13: $s = 10; continue; /* } else if (_ref === 120) { */ case 6: p.fmt.integer(v, new $Uint64(0, 16), true, "0123456789abcdef"); $s = 10; continue; /* } else if (_ref === 85) { */ case 7: p.fmtUnicode(v); $s = 10; continue; /* } else if (_ref === 88) { */ case 8: p.fmt.integer(v, new $Uint64(0, 16), true, "0123456789ABCDEF"); $s = 10; continue; /* } else { */ case 9: $r = p.badVerb(verb); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 10: /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.fmtInt64 }; } $f.$ptr = $ptr; $f._ref = _ref; $f.p = p; $f.v = v; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f; }; pp.prototype.fmtInt64 = function(v, verb) { return this.$val.fmtInt64(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.integer(new $Int64(v.$high, v.$low), new $Uint64(0, 16), false, "0123456789abcdef"); p.fmt.fmtFlags.sharp = sharp; }; pp.prototype.fmt0x64 = function(v, leading0x) { return this.$val.fmt0x64(v, leading0x); }; pp.ptr.prototype.fmtUnicode = function(v) { var $ptr, p, prec, precPresent, sharp, v; p = this; precPresent = p.fmt.fmtFlags.precPresent; sharp = p.fmt.fmtFlags.sharp; p.fmt.fmtFlags.sharp = false; prec = p.fmt.prec; if (!precPresent) { p.fmt.prec = 4; p.fmt.fmtFlags.precPresent = true; } p.fmt.fmtFlags.unicode = true; p.fmt.fmtFlags.uniQuote = sharp; p.fmt.integer(v, new $Uint64(0, 16), false, "0123456789ABCDEF"); p.fmt.fmtFlags.unicode = false; p.fmt.fmtFlags.uniQuote = false; p.fmt.prec = prec; p.fmt.fmtFlags.precPresent = precPresent; p.fmt.fmtFlags.sharp = sharp; }; pp.prototype.fmtUnicode = function(v) { return this.$val.fmtUnicode(v); }; pp.ptr.prototype.fmtUint64 = function(v, verb) { var $ptr, _ref, p, v, verb, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _ref = $f._ref; p = $f.p; v = $f.v; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: p = this; _ref = verb; /* */ if (_ref === 98) { $s = 1; continue; } /* */ if (_ref === 99) { $s = 2; continue; } /* */ if (_ref === 100) { $s = 3; continue; } /* */ if (_ref === 118) { $s = 4; continue; } /* */ if (_ref === 111) { $s = 5; continue; } /* */ if (_ref === 113) { $s = 6; continue; } /* */ if (_ref === 120) { $s = 7; continue; } /* */ if (_ref === 88) { $s = 8; continue; } /* */ if (_ref === 85) { $s = 9; continue; } /* */ $s = 10; continue; /* if (_ref === 98) { */ case 1: p.fmt.integer(new $Int64(v.$high, v.$low), new $Uint64(0, 2), false, "0123456789abcdef"); $s = 11; continue; /* } else if (_ref === 99) { */ case 2: p.fmtC(new $Int64(v.$high, v.$low)); $s = 11; continue; /* } else if (_ref === 100) { */ case 3: p.fmt.integer(new $Int64(v.$high, v.$low), new $Uint64(0, 10), false, "0123456789abcdef"); $s = 11; continue; /* } else if (_ref === 118) { */ case 4: if (p.fmt.fmtFlags.sharpV) { p.fmt0x64(v, true); } else { p.fmt.integer(new $Int64(v.$high, v.$low), new $Uint64(0, 10), false, "0123456789abcdef"); } $s = 11; continue; /* } else if (_ref === 111) { */ case 5: p.fmt.integer(new $Int64(v.$high, v.$low), new $Uint64(0, 8), false, "0123456789abcdef"); $s = 11; continue; /* } else if (_ref === 113) { */ case 6: /* */ if ((0 < v.$high || (0 === v.$high && 0 <= v.$low)) && (v.$high < 0 || (v.$high === 0 && v.$low <= 1114111))) { $s = 12; continue; } /* */ $s = 13; continue; /* if ((0 < v.$high || (0 === v.$high && 0 <= v.$low)) && (v.$high < 0 || (v.$high === 0 && v.$low <= 1114111))) { */ case 12: p.fmt.fmt_qc(new $Int64(v.$high, v.$low)); $s = 14; continue; /* } else { */ case 13: $r = p.badVerb(verb); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 14: $s = 11; continue; /* } else if (_ref === 120) { */ case 7: p.fmt.integer(new $Int64(v.$high, v.$low), new $Uint64(0, 16), false, "0123456789abcdef"); $s = 11; continue; /* } else if (_ref === 88) { */ case 8: p.fmt.integer(new $Int64(v.$high, v.$low), new $Uint64(0, 16), false, "0123456789ABCDEF"); $s = 11; continue; /* } else if (_ref === 85) { */ case 9: p.fmtUnicode(new $Int64(v.$high, v.$low)); $s = 11; continue; /* } else { */ case 10: $r = p.badVerb(verb); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 11: /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.fmtUint64 }; } $f.$ptr = $ptr; $f._ref = _ref; $f.p = p; $f.v = v; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f; }; pp.prototype.fmtUint64 = function(v, verb) { return this.$val.fmtUint64(v, verb); }; pp.ptr.prototype.fmtFloat32 = function(v, verb) { var $ptr, _ref, p, v, verb, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _ref = $f._ref; p = $f.p; v = $f.v; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: p = this; _ref = verb; /* */ if (_ref === 98) { $s = 1; continue; } /* */ if (_ref === 101) { $s = 2; continue; } /* */ if (_ref === 69) { $s = 3; continue; } /* */ if (_ref === 102 || _ref === 70) { $s = 4; continue; } /* */ if (_ref === 103 || _ref === 118) { $s = 5; continue; } /* */ if (_ref === 71) { $s = 6; continue; } /* */ $s = 7; continue; /* if (_ref === 98) { */ case 1: p.fmt.fmt_fb32(v); $s = 8; continue; /* } else if (_ref === 101) { */ case 2: p.fmt.fmt_e32(v); $s = 8; continue; /* } else if (_ref === 69) { */ case 3: p.fmt.fmt_E32(v); $s = 8; continue; /* } else if (_ref === 102 || _ref === 70) { */ case 4: p.fmt.fmt_f32(v); $s = 8; continue; /* } else if (_ref === 103 || _ref === 118) { */ case 5: p.fmt.fmt_g32(v); $s = 8; continue; /* } else if (_ref === 71) { */ case 6: p.fmt.fmt_G32(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: /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.fmtFloat32 }; } $f.$ptr = $ptr; $f._ref = _ref; $f.p = p; $f.v = v; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f; }; pp.prototype.fmtFloat32 = function(v, verb) { return this.$val.fmtFloat32(v, verb); }; pp.ptr.prototype.fmtFloat64 = function(v, verb) { var $ptr, _ref, p, v, verb, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _ref = $f._ref; p = $f.p; v = $f.v; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: p = this; _ref = verb; /* */ if (_ref === 98) { $s = 1; continue; } /* */ if (_ref === 101) { $s = 2; continue; } /* */ if (_ref === 69) { $s = 3; continue; } /* */ if (_ref === 102 || _ref === 70) { $s = 4; continue; } /* */ if (_ref === 103 || _ref === 118) { $s = 5; continue; } /* */ if (_ref === 71) { $s = 6; continue; } /* */ $s = 7; continue; /* if (_ref === 98) { */ case 1: p.fmt.fmt_fb64(v); $s = 8; continue; /* } else if (_ref === 101) { */ case 2: p.fmt.fmt_e64(v); $s = 8; continue; /* } else if (_ref === 69) { */ case 3: p.fmt.fmt_E64(v); $s = 8; continue; /* } else if (_ref === 102 || _ref === 70) { */ case 4: p.fmt.fmt_f64(v); $s = 8; continue; /* } else if (_ref === 103 || _ref === 118) { */ case 5: p.fmt.fmt_g64(v); $s = 8; continue; /* } else if (_ref === 71) { */ case 6: p.fmt.fmt_G64(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: /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.fmtFloat64 }; } $f.$ptr = $ptr; $f._ref = _ref; $f.p = p; $f.v = v; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f; }; pp.prototype.fmtFloat64 = function(v, verb) { return this.$val.fmtFloat64(v, verb); }; pp.ptr.prototype.fmtComplex64 = function(v, verb) { var $ptr, _ref, p, v, verb, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _ref = $f._ref; p = $f.p; v = $f.v; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: p = this; _ref = verb; /* */ if (_ref === 98 || _ref === 101 || _ref === 69 || _ref === 102 || _ref === 70 || _ref === 103 || _ref === 71) { $s = 1; continue; } /* */ if (_ref === 118) { $s = 2; continue; } /* */ $s = 3; continue; /* if (_ref === 98 || _ref === 101 || _ref === 69 || _ref === 102 || _ref === 70 || _ref === 103 || _ref === 71) { */ case 1: p.fmt.fmt_c64(v, verb); $s = 4; continue; /* } else if (_ref === 118) { */ case 2: p.fmt.fmt_c64(v, 103); $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: /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.fmtComplex64 }; } $f.$ptr = $ptr; $f._ref = _ref; $f.p = p; $f.v = v; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f; }; pp.prototype.fmtComplex64 = function(v, verb) { return this.$val.fmtComplex64(v, verb); }; pp.ptr.prototype.fmtComplex128 = function(v, verb) { var $ptr, _ref, p, v, verb, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _ref = $f._ref; p = $f.p; v = $f.v; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: p = this; _ref = verb; /* */ if (_ref === 98 || _ref === 101 || _ref === 69 || _ref === 102 || _ref === 70 || _ref === 103 || _ref === 71) { $s = 1; continue; } /* */ if (_ref === 118) { $s = 2; continue; } /* */ $s = 3; continue; /* if (_ref === 98 || _ref === 101 || _ref === 69 || _ref === 102 || _ref === 70 || _ref === 103 || _ref === 71) { */ case 1: p.fmt.fmt_c128(v, verb); $s = 4; continue; /* } else if (_ref === 118) { */ case 2: p.fmt.fmt_c128(v, 103); $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: /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.fmtComplex128 }; } $f.$ptr = $ptr; $f._ref = _ref; $f.p = p; $f.v = v; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f; }; pp.prototype.fmtComplex128 = function(v, verb) { return this.$val.fmtComplex128(v, verb); }; pp.ptr.prototype.fmtString = function(v, verb) { var $ptr, _ref, p, v, verb, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _ref = $f._ref; p = $f.p; v = $f.v; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: p = this; _ref = verb; /* */ if (_ref === 118) { $s = 1; continue; } /* */ if (_ref === 115) { $s = 2; continue; } /* */ if (_ref === 120) { $s = 3; continue; } /* */ if (_ref === 88) { $s = 4; continue; } /* */ if (_ref === 113) { $s = 5; continue; } /* */ $s = 6; continue; /* if (_ref === 118) { */ case 1: if (p.fmt.fmtFlags.sharpV) { p.fmt.fmt_q(v); } else { p.fmt.fmt_s(v); } $s = 7; continue; /* } else if (_ref === 115) { */ case 2: p.fmt.fmt_s(v); $s = 7; continue; /* } else if (_ref === 120) { */ case 3: p.fmt.fmt_sx(v, "0123456789abcdef"); $s = 7; continue; /* } else if (_ref === 88) { */ case 4: p.fmt.fmt_sx(v, "0123456789ABCDEF"); $s = 7; continue; /* } else if (_ref === 113) { */ case 5: p.fmt.fmt_q(v); $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: /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.fmtString }; } $f.$ptr = $ptr; $f._ref = _ref; $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, typ, depth) { var $ptr, _i, _r$2, _r$3, _r$4, _r$5, _r$6, _ref, _ref$1, c, depth, i, p, typ, v, verb, $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$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; c = $f.c; depth = $f.depth; i = $f.i; p = $f.p; typ = $f.typ; v = $f.v; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: p = this; /* */ if ((verb === 118) || (verb === 100)) { $s = 1; continue; } /* */ $s = 2; continue; /* if ((verb === 118) || (verb === 100)) { */ case 1: /* */ if (p.fmt.fmtFlags.sharpV) { $s = 3; continue; } /* */ $s = 4; continue; /* if (p.fmt.fmtFlags.sharpV) { */ case 3: /* */ if (v === sliceType.nil) { $s = 6; continue; } /* */ $s = 7; continue; /* if (v === sliceType.nil) { */ case 6: /* */ if ($interfaceIsEqual(typ, $ifaceNil)) { $s = 8; continue; } /* */ $s = 9; continue; /* if ($interfaceIsEqual(typ, $ifaceNil)) { */ case 8: (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("[]byte(nil)"); $s = 10; continue; /* } else { */ case 9: _r$2 = typ.String(); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } _r$3 = (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 = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } _r$3; (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).Write(nilParenBytes); /* } */ case 10: return; /* } */ case 7: /* */ if ($interfaceIsEqual(typ, $ifaceNil)) { $s = 13; continue; } /* */ $s = 14; continue; /* if ($interfaceIsEqual(typ, $ifaceNil)) { */ case 13: (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).Write(bytesBytes); $s = 15; continue; /* } else { */ case 14: _r$4 = typ.String(); /* */ $s = 16; case 16: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } _r$5 = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(_r$4); /* */ $s = 17; case 17: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } _r$5; (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(123); /* } */ case 15: $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))).WriteByte(91); /* } */ case 5: _ref = v; _i = 0; /* while (true) { */ case 18: /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 19; continue; } i = _i; c = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _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))).Write(commaSpaceBytes); } 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$6 = p.printArg(new $Uint8(c), 118, depth + 1 >> 0); /* */ $s = 20; case 20: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } _r$6; _i++; /* } */ $s = 18; continue; case 19: 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); } return; /* } */ case 2: _ref$1 = verb; /* */ if (_ref$1 === 115) { $s = 21; continue; } /* */ if (_ref$1 === 120) { $s = 22; continue; } /* */ if (_ref$1 === 88) { $s = 23; continue; } /* */ if (_ref$1 === 113) { $s = 24; continue; } /* */ $s = 25; continue; /* if (_ref$1 === 115) { */ case 21: p.fmt.fmt_s($bytesToString(v)); $s = 26; continue; /* } else if (_ref$1 === 120) { */ case 22: p.fmt.fmt_bx(v, "0123456789abcdef"); $s = 26; continue; /* } else if (_ref$1 === 88) { */ case 23: p.fmt.fmt_bx(v, "0123456789ABCDEF"); $s = 26; continue; /* } else if (_ref$1 === 113) { */ case 24: p.fmt.fmt_q($bytesToString(v)); $s = 26; continue; /* } else { */ case 25: $r = p.badVerb(verb); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 26: /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.fmtBytes }; } $f.$ptr = $ptr; $f._i = _i; $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.c = c; $f.depth = depth; $f.i = i; $f.p = p; $f.typ = typ; $f.v = v; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f; }; pp.prototype.fmtBytes = function(v, verb, typ, depth) { return this.$val.fmtBytes(v, verb, typ, depth); }; pp.ptr.prototype.fmtPointer = function(value, verb) { var $ptr, _r$2, _r$3, _ref, _ref$1, p, u, use0x64, value, verb, $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; _r$3 = $f._r$3; _ref = $f._ref; _ref$1 = $f._ref$1; p = $f.p; u = $f.u; use0x64 = $f.use0x64; value = $f.value; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: p = this; value = value; use0x64 = true; _ref = verb; /* */ if (_ref === 112 || _ref === 118) { $s = 1; continue; } /* */ if (_ref === 98 || _ref === 100 || _ref === 111 || _ref === 120 || _ref === 88) { $s = 2; continue; } /* */ $s = 3; continue; /* if (_ref === 112 || _ref === 118) { */ case 1: $s = 4; continue; /* } else if (_ref === 98 || _ref === 100 || _ref === 111 || _ref === 120 || _ref === 88) { */ case 2: use0x64 = false; $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; } return; /* } */ case 4: u = 0; _ref$1 = value.Kind(); /* */ if (_ref$1 === 18 || _ref$1 === 19 || _ref$1 === 21 || _ref$1 === 22 || _ref$1 === 23 || _ref$1 === 26) { $s = 6; continue; } /* */ $s = 7; continue; /* if (_ref$1 === 18 || _ref$1 === 19 || _ref$1 === 21 || _ref$1 === 22 || _ref$1 === 23 || _ref$1 === 26) { */ case 6: u = value.Pointer(); $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; } return; /* } */ case 8: /* */ if (p.fmt.fmtFlags.sharpV) { $s = 10; continue; } /* */ if ((verb === 118) && (u === 0)) { $s = 11; continue; } /* */ $s = 12; continue; /* if (p.fmt.fmtFlags.sharpV) { */ case 10: p.add(40); _r$2 = value.Type().String(); /* */ $s = 14; case 14: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } _r$3 = (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 = 15; case 15: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } _r$3; p.add(41); p.add(40); if (u === 0) { (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).Write(nilBytes); } else { p.fmt0x64(new $Uint64(0, u.constructor === Number ? u : 1), true); } p.add(41); $s = 13; continue; /* } else if ((verb === 118) && (u === 0)) { */ case 11: (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).Write(nilAngleBytes); $s = 13; continue; /* } else { */ case 12: /* */ if (use0x64) { $s = 16; continue; } /* */ $s = 17; continue; /* if (use0x64) { */ case 16: p.fmt0x64(new $Uint64(0, u.constructor === Number ? u : 1), !p.fmt.fmtFlags.sharp); $s = 18; continue; /* } else { */ case 17: $r = p.fmtUint64(new $Uint64(0, u.constructor === Number ? u : 1), verb); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 18: /* } */ case 13: /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.fmtPointer }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._ref = _ref; $f._ref$1 = _ref$1; $f.p = p; $f.u = u; $f.use0x64 = use0x64; $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$2, _r$3, arg, err, 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$2 = $f._r$2; _r$3 = $f._r$3; arg = $f.arg; err = $f.err; 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$2 = reflect.ValueOf(arg); /* */ $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; /* */ if ((v.Kind() === 22) && v.IsNil()) { $s = 4; continue; } /* */ $s = 5; continue; /* if ((v.Kind() === 22) && v.IsNil()) { */ case 4: (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).Write(nilAngleBytes); return; /* } */ case 5: if (p.panicking) { $panic(err); } p.fmt.clearflags(); (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).Write(percentBangBytes); p.add(verb); (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).Write(panicBytes); p.panicking = true; _r$3 = p.printArg(err, 118, 0); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } _r$3; 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); /* } */ case 2: /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.catchPanic }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f.arg = arg; $f.err = err; $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.clearSpecialFlags = function() { var $ptr, p, plusV, sharpV; plusV = false; sharpV = false; p = this; plusV = p.fmt.fmtFlags.plusV; if (plusV) { p.fmt.fmtFlags.plus = true; p.fmt.fmtFlags.plusV = false; } sharpV = p.fmt.fmtFlags.sharpV; if (sharpV) { p.fmt.fmtFlags.sharp = true; p.fmt.fmtFlags.sharpV = false; } return [plusV, sharpV]; }; pp.prototype.clearSpecialFlags = function() { return this.$val.clearSpecialFlags(); }; pp.ptr.prototype.restoreSpecialFlags = function(plusV, sharpV) { var $ptr, p, plusV, sharpV; p = this; if (plusV) { p.fmt.fmtFlags.plus = false; p.fmt.fmtFlags.plusV = true; } if (sharpV) { p.fmt.fmtFlags.sharp = false; p.fmt.fmtFlags.sharpV = true; } }; pp.prototype.restoreSpecialFlags = function(plusV, sharpV) { return this.$val.restoreSpecialFlags(plusV, sharpV); }; pp.ptr.prototype.handleMethods = function(verb, depth) { var $ptr, _r$2, _r$3, _r$4, _r$5, _r$6, _ref, _ref$1, _tuple, _tuple$1, _tuple$2, depth, 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; _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; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; depth = $f.depth; 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) { 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; _tuple$1 = p.clearSpecialFlags(); $deferred.push([$methodVal(p, "restoreSpecialFlags"), [_tuple$1[0], _tuple$1[1]]]); $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; } return handled; /* } */ case 2: /* */ if (p.fmt.fmtFlags.sharpV) { $s = 4; continue; } /* */ $s = 5; continue; /* if (p.fmt.fmtFlags.sharpV) { */ case 4: _tuple$2 = $assertType(p.arg, GoStringer, true); stringer = _tuple$2[0]; ok$1 = _tuple$2[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$2 = stringer.GoString(); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } $r = p.fmt.fmt_s(_r$2); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } return handled; /* } */ case 8: $s = 6; continue; /* } else { */ case 5: _ref = verb; /* */ if (_ref === 118 || _ref === 115 || _ref === 120 || _ref === 88 || _ref === 113) { $s = 11; continue; } /* */ $s = 12; continue; /* if (_ref === 118 || _ref === 115 || _ref === 120 || _ref === 88 || _ref === 113) { */ case 11: _ref$1 = p.arg; /* */ if ($assertType(_ref$1, $error, true)[1]) { $s = 13; continue; } /* */ if ($assertType(_ref$1, Stringer, true)[1]) { $s = 14; continue; } /* */ $s = 15; continue; /* if ($assertType(_ref$1, $error, true)[1]) { */ case 13: v = _ref$1; handled = true; $deferred.push([$methodVal(p, "catchPanic"), [p.arg, verb]]); _r$3 = v.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 = p.printArg(new $String(_r$3), verb, depth); /* */ $s = 17; case 17: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } _r$4; return handled; $s = 15; continue; /* } else if ($assertType(_ref$1, Stringer, true)[1]) { */ case 14: v$1 = _ref$1; handled = true; $deferred.push([$methodVal(p, "catchPanic"), [p.arg, verb]]); _r$5 = v$1.String(); /* */ $s = 18; case 18: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } _r$6 = p.printArg(new $String(_r$5), verb, depth); /* */ $s = 19; case 19: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } _r$6; return handled; /* } */ case 15: /* } */ case 12: /* } */ case 6: handled = false; return handled; /* */ $s = -1; case -1: } 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._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._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.depth = depth; $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, depth) { return this.$val.handleMethods(verb, depth); }; pp.ptr.prototype.printArg = function(arg, verb, depth) { var $ptr, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _ref, _ref$1, arg, depth, f, f$1, f$10, f$11, f$12, f$13, f$14, f$15, f$16, f$17, f$18, f$2, f$3, f$4, f$5, f$6, f$7, f$8, f$9, handled, p, verb, wasString, $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; _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; arg = $f.arg; depth = $f.depth; 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$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; handled = $f.handled; p = $f.p; verb = $f.verb; wasString = $f.wasString; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: wasString = false; p = this; p.arg = arg; p.value = new reflect.Value.ptr(ptrType$2.nil, 0, 0); /* */ if ($interfaceIsEqual(arg, $ifaceNil)) { $s = 1; continue; } /* */ $s = 2; continue; /* if ($interfaceIsEqual(arg, $ifaceNil)) { */ case 1: /* */ if ((verb === 84) || (verb === 118)) { $s = 3; continue; } /* */ $s = 4; continue; /* if ((verb === 84) || (verb === 118)) { */ case 3: p.fmt.pad(nilAngleBytes); $s = 5; continue; /* } else { */ case 4: $r = p.badVerb(verb); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 5: wasString = false; return wasString; /* } */ case 2: _ref = verb; /* */ if (_ref === 84) { $s = 7; continue; } /* */ if (_ref === 112) { $s = 8; continue; } /* */ $s = 9; continue; /* if (_ref === 84) { */ case 7: _r$2 = reflect.TypeOf(arg).String(); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } _r$3 = p.printArg(new $String(_r$2), 115, 0); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } _r$3; wasString = false; return wasString; $s = 9; continue; /* } else if (_ref === 112) { */ case 8: _r$4 = reflect.ValueOf(arg); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } $r = p.fmtPointer(_r$4, verb); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } wasString = false; return wasString; /* } */ case 9: _ref$1 = arg; /* */ if ($assertType(_ref$1, $Bool, true)[1]) { $s = 14; continue; } /* */ if ($assertType(_ref$1, $Float32, true)[1]) { $s = 15; continue; } /* */ if ($assertType(_ref$1, $Float64, true)[1]) { $s = 16; continue; } /* */ if ($assertType(_ref$1, $Complex64, true)[1]) { $s = 17; continue; } /* */ if ($assertType(_ref$1, $Complex128, true)[1]) { $s = 18; continue; } /* */ if ($assertType(_ref$1, $Int, true)[1]) { $s = 19; continue; } /* */ if ($assertType(_ref$1, $Int8, true)[1]) { $s = 20; continue; } /* */ if ($assertType(_ref$1, $Int16, true)[1]) { $s = 21; continue; } /* */ if ($assertType(_ref$1, $Int32, true)[1]) { $s = 22; continue; } /* */ if ($assertType(_ref$1, $Int64, true)[1]) { $s = 23; continue; } /* */ if ($assertType(_ref$1, $Uint, true)[1]) { $s = 24; continue; } /* */ if ($assertType(_ref$1, $Uint8, true)[1]) { $s = 25; continue; } /* */ if ($assertType(_ref$1, $Uint16, true)[1]) { $s = 26; continue; } /* */ if ($assertType(_ref$1, $Uint32, true)[1]) { $s = 27; continue; } /* */ if ($assertType(_ref$1, $Uint64, true)[1]) { $s = 28; continue; } /* */ if ($assertType(_ref$1, $Uintptr, true)[1]) { $s = 29; continue; } /* */ if ($assertType(_ref$1, $String, true)[1]) { $s = 30; continue; } /* */ if ($assertType(_ref$1, sliceType, true)[1]) { $s = 31; continue; } /* */ $s = 32; continue; /* if ($assertType(_ref$1, $Bool, true)[1]) { */ case 14: f = _ref$1.$val; $r = p.fmtBool(f, verb); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $s = 33; continue; /* } else if ($assertType(_ref$1, $Float32, true)[1]) { */ case 15: f$1 = _ref$1.$val; $r = p.fmtFloat32(f$1, verb); /* */ $s = 35; case 35: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $s = 33; continue; /* } else if ($assertType(_ref$1, $Float64, true)[1]) { */ case 16: f$2 = _ref$1.$val; $r = p.fmtFloat64(f$2, verb); /* */ $s = 36; case 36: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $s = 33; continue; /* } else if ($assertType(_ref$1, $Complex64, true)[1]) { */ case 17: f$3 = _ref$1.$val; $r = p.fmtComplex64(f$3, verb); /* */ $s = 37; case 37: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $s = 33; continue; /* } else if ($assertType(_ref$1, $Complex128, true)[1]) { */ case 18: f$4 = _ref$1.$val; $r = p.fmtComplex128(f$4, verb); /* */ $s = 38; case 38: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $s = 33; continue; /* } else if ($assertType(_ref$1, $Int, true)[1]) { */ case 19: f$5 = _ref$1.$val; $r = p.fmtInt64(new $Int64(0, f$5), verb); /* */ $s = 39; case 39: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $s = 33; continue; /* } else if ($assertType(_ref$1, $Int8, true)[1]) { */ case 20: f$6 = _ref$1.$val; $r = p.fmtInt64(new $Int64(0, f$6), verb); /* */ $s = 40; case 40: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $s = 33; continue; /* } else if ($assertType(_ref$1, $Int16, true)[1]) { */ case 21: f$7 = _ref$1.$val; $r = p.fmtInt64(new $Int64(0, f$7), verb); /* */ $s = 41; case 41: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $s = 33; continue; /* } else if ($assertType(_ref$1, $Int32, true)[1]) { */ case 22: f$8 = _ref$1.$val; $r = p.fmtInt64(new $Int64(0, f$8), verb); /* */ $s = 42; case 42: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $s = 33; continue; /* } else if ($assertType(_ref$1, $Int64, true)[1]) { */ case 23: f$9 = _ref$1.$val; $r = p.fmtInt64(f$9, verb); /* */ $s = 43; case 43: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $s = 33; continue; /* } else if ($assertType(_ref$1, $Uint, true)[1]) { */ case 24: f$10 = _ref$1.$val; $r = p.fmtUint64(new $Uint64(0, f$10), verb); /* */ $s = 44; case 44: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $s = 33; continue; /* } else if ($assertType(_ref$1, $Uint8, true)[1]) { */ case 25: f$11 = _ref$1.$val; $r = p.fmtUint64(new $Uint64(0, f$11), verb); /* */ $s = 45; case 45: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $s = 33; continue; /* } else if ($assertType(_ref$1, $Uint16, true)[1]) { */ case 26: f$12 = _ref$1.$val; $r = p.fmtUint64(new $Uint64(0, f$12), verb); /* */ $s = 46; case 46: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $s = 33; continue; /* } else if ($assertType(_ref$1, $Uint32, true)[1]) { */ case 27: f$13 = _ref$1.$val; $r = p.fmtUint64(new $Uint64(0, f$13), verb); /* */ $s = 47; case 47: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $s = 33; continue; /* } else if ($assertType(_ref$1, $Uint64, true)[1]) { */ case 28: f$14 = _ref$1.$val; $r = p.fmtUint64(f$14, verb); /* */ $s = 48; case 48: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $s = 33; continue; /* } else if ($assertType(_ref$1, $Uintptr, true)[1]) { */ case 29: f$15 = _ref$1.$val; $r = p.fmtUint64(new $Uint64(0, f$15.constructor === Number ? f$15 : 1), verb); /* */ $s = 49; case 49: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $s = 33; continue; /* } else if ($assertType(_ref$1, $String, true)[1]) { */ case 30: f$16 = _ref$1.$val; $r = p.fmtString(f$16, verb); /* */ $s = 50; case 50: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } wasString = (verb === 115) || (verb === 118); $s = 33; continue; /* } else if ($assertType(_ref$1, sliceType, true)[1]) { */ case 31: f$17 = _ref$1.$val; $r = p.fmtBytes(f$17, verb, $ifaceNil, depth); /* */ $s = 51; case 51: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } wasString = verb === 115; $s = 33; continue; /* } else { */ case 32: f$18 = _ref$1; _r$5 = p.handleMethods(verb, depth); /* */ $s = 52; case 52: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } handled = _r$5; /* */ if (handled) { $s = 53; continue; } /* */ $s = 54; continue; /* if (handled) { */ case 53: wasString = false; return wasString; /* } */ case 54: _r$6 = reflect.ValueOf(arg); /* */ $s = 55; case 55: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } _r$7 = p.printReflectValue(_r$6, verb, depth); /* */ $s = 56; case 56: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } wasString = _r$7; return wasString; /* } */ case 33: p.arg = $ifaceNil; return wasString; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.printArg }; } $f.$ptr = $ptr; $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.arg = arg; $f.depth = depth; $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$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.handled = handled; $f.p = p; $f.verb = verb; $f.wasString = wasString; $f.$s = $s; $f.$r = $r; return $f; }; pp.prototype.printArg = function(arg, verb, depth) { return this.$val.printArg(arg, verb, depth); }; pp.ptr.prototype.printValue = function(value, verb, depth) { var $ptr, _r$2, _r$3, _r$4, _r$5, _r$6, _ref, depth, handled, p, value, verb, wasString, $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; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _ref = $f._ref; depth = $f.depth; handled = $f.handled; p = $f.p; value = $f.value; verb = $f.verb; wasString = $f.wasString; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: wasString = false; p = this; value = value; /* */ if (!value.IsValid()) { $s = 1; continue; } /* */ $s = 2; continue; /* if (!value.IsValid()) { */ case 1: /* */ if ((verb === 84) || (verb === 118)) { $s = 3; continue; } /* */ $s = 4; continue; /* if ((verb === 84) || (verb === 118)) { */ case 3: (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).Write(nilAngleBytes); $s = 5; continue; /* } else { */ case 4: $r = p.badVerb(verb); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 5: wasString = false; return wasString; /* } */ case 2: _ref = verb; /* */ if (_ref === 84) { $s = 7; continue; } /* */ if (_ref === 112) { $s = 8; continue; } /* */ $s = 9; continue; /* if (_ref === 84) { */ case 7: _r$2 = value.Type().String(); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } _r$3 = p.printArg(new $String(_r$2), 115, 0); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } _r$3; wasString = false; return wasString; $s = 9; continue; /* } else if (_ref === 112) { */ case 8: $r = p.fmtPointer(value, verb); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } wasString = false; return wasString; /* } */ case 9: p.arg = $ifaceNil; /* */ if (value.CanInterface()) { $s = 13; continue; } /* */ $s = 14; continue; /* if (value.CanInterface()) { */ case 13: _r$4 = value.Interface(); /* */ $s = 15; case 15: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } p.arg = _r$4; /* } */ case 14: _r$5 = p.handleMethods(verb, depth); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } handled = _r$5; /* */ if (handled) { $s = 17; continue; } /* */ $s = 18; continue; /* if (handled) { */ case 17: wasString = false; return wasString; /* } */ case 18: _r$6 = p.printReflectValue(value, verb, depth); /* */ $s = 19; case 19: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } wasString = _r$6; return wasString; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.printValue }; } $f.$ptr = $ptr; $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.depth = depth; $f.handled = handled; $f.p = p; $f.value = value; $f.verb = verb; $f.wasString = wasString; $f.$s = $s; $f.$r = $r; return $f; }; pp.prototype.printValue = function(value, verb, depth) { return this.$val.printValue(value, verb, depth); }; pp.ptr.prototype.printReflectValue = function(value, verb, depth) { var $ptr, _i, _i$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$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _ref$3, _v, a, bytes, depth, f, f$1, i, i$1, i$2, i$3, key, keys, oldValue, p, t, typ, v, v$1, value, value$1, verb, wasString, 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$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$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; _v = $f._v; a = $f.a; bytes = $f.bytes; depth = $f.depth; f = $f.f; f$1 = $f.f$1; i = $f.i; i$1 = $f.i$1; i$2 = $f.i$2; i$3 = $f.i$3; key = $f.key; keys = $f.keys; oldValue = $f.oldValue; p = $f.p; t = $f.t; typ = $f.typ; v = $f.v; v$1 = $f.v$1; value = $f.value; value$1 = $f.value$1; verb = $f.verb; wasString = $f.wasString; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: wasString = false; p = this; value = value; oldValue = p.value; p.value = value; f = value; _ref = f.Kind(); /* */ if (_ref === 1) { $s = 1; continue; } /* */ if (_ref === 2 || _ref === 3 || _ref === 4 || _ref === 5 || _ref === 6) { $s = 2; continue; } /* */ if (_ref === 7 || _ref === 8 || _ref === 9 || _ref === 10 || _ref === 11 || _ref === 12) { $s = 3; continue; } /* */ if (_ref === 13 || _ref === 14) { $s = 4; continue; } /* */ if (_ref === 15 || _ref === 16) { $s = 5; continue; } /* */ if (_ref === 24) { $s = 6; continue; } /* */ if (_ref === 21) { $s = 7; continue; } /* */ if (_ref === 25) { $s = 8; continue; } /* */ if (_ref === 20) { $s = 9; continue; } /* */ if (_ref === 17 || _ref === 23) { $s = 10; continue; } /* */ if (_ref === 22) { $s = 11; continue; } /* */ if (_ref === 18 || _ref === 19 || _ref === 26) { $s = 12; continue; } /* */ $s = 13; continue; /* switch (0) { default: if (_ref === 1) { */ case 1: $r = p.fmtBool(f.Bool(), verb); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $s = 14; continue; /* } else if (_ref === 2 || _ref === 3 || _ref === 4 || _ref === 5 || _ref === 6) { */ case 2: $r = p.fmtInt64(f.Int(), verb); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $s = 14; continue; /* } else if (_ref === 7 || _ref === 8 || _ref === 9 || _ref === 10 || _ref === 11 || _ref === 12) { */ case 3: $r = p.fmtUint64(f.Uint(), verb); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $s = 14; continue; /* } else if (_ref === 13 || _ref === 14) { */ case 4: _r$2 = f.Type().Size(); /* */ $s = 21; case 21: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } /* */ if (_r$2 === 4) { $s = 18; continue; } /* */ $s = 19; continue; /* if (_r$2 === 4) { */ case 18: $r = p.fmtFloat32($fround(f.Float()), verb); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $s = 20; continue; /* } else { */ case 19: $r = p.fmtFloat64(f.Float(), verb); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 20: $s = 14; continue; /* } else if (_ref === 15 || _ref === 16) { */ case 5: _r$3 = f.Type().Size(); /* */ $s = 27; case 27: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } /* */ if (_r$3 === 8) { $s = 24; continue; } /* */ $s = 25; continue; /* if (_r$3 === 8) { */ case 24: $r = p.fmtComplex64((x = f.Complex(), new $Complex64(x.$real, x.$imag)), verb); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $s = 26; continue; /* } else { */ case 25: $r = p.fmtComplex128(f.Complex(), verb); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 26: $s = 14; continue; /* } else if (_ref === 24) { */ case 6: _r$4 = f.String(); /* */ $s = 30; case 30: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } $r = p.fmtString(_r$4, verb); /* */ $s = 31; case 31: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $s = 14; continue; /* } else if (_ref === 21) { */ case 7: /* */ if (p.fmt.fmtFlags.sharpV) { $s = 32; continue; } /* */ $s = 33; continue; /* if (p.fmt.fmtFlags.sharpV) { */ case 32: _r$5 = f.Type().String(); /* */ $s = 35; case 35: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } _r$6 = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(_r$5); /* */ $s = 36; case 36: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } _r$6; if (f.IsNil()) { (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("(nil)"); /* break; */ $s = 14; continue; } (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(123); $s = 34; continue; /* } else { */ case 33: (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).Write(mapBytes); /* } */ case 34: _r$7 = f.MapKeys(); /* */ $s = 37; case 37: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } keys = _r$7; _ref$1 = keys; _i = 0; /* while (true) { */ case 38: /* if (!(_i < _ref$1.$length)) { break; } */ if(!(_i < _ref$1.$length)) { $s = 39; continue; } i = _i; key = ((_i < 0 || _i >= _ref$1.$length) ? $throwRuntimeError("index out of range") : _ref$1.$array[_ref$1.$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))).Write(commaSpaceBytes); } 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$8 = p.printValue(key, verb, depth + 1 >> 0); /* */ $s = 40; case 40: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } _r$8; (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(58); _r$9 = f.MapIndex(key); /* */ $s = 41; case 41: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } _r$10 = p.printValue(_r$9, verb, depth + 1 >> 0); /* */ $s = 42; case 42: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } _r$10; _i++; /* } */ $s = 38; continue; case 39: 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 = 14; continue; /* } else if (_ref === 25) { */ case 8: /* */ if (p.fmt.fmtFlags.sharpV) { $s = 43; continue; } /* */ $s = 44; continue; /* if (p.fmt.fmtFlags.sharpV) { */ case 43: _r$11 = value.Type().String(); /* */ $s = 45; case 45: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } _r$12 = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(_r$11); /* */ $s = 46; case 46: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } _r$12; /* } */ case 44: p.add(123); v = f; t = v.Type(); i$1 = 0; /* while (true) { */ case 47: /* if (!(i$1 < v.NumField())) { break; } */ if(!(i$1 < v.NumField())) { $s = 48; 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))).Write(commaSpaceBytes); } 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 = 49; continue; } /* */ $s = 50; continue; /* if (p.fmt.fmtFlags.plusV || p.fmt.fmtFlags.sharpV) { */ case 49: _r$13 = t.Field(i$1); /* */ $s = 51; case 51: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } f$1 = $clone(_r$13, reflect.StructField); /* */ if (!(f$1.Name === "")) { $s = 52; continue; } /* */ $s = 53; continue; /* if (!(f$1.Name === "")) { */ case 52: (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(f$1.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 53: /* } */ case 50: _r$14 = getField(v, i$1); /* */ $s = 54; case 54: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } _r$15 = p.printValue(_r$14, verb, depth + 1 >> 0); /* */ $s = 55; case 55: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } _r$15; i$1 = i$1 + (1) >> 0; /* } */ $s = 47; continue; case 48: (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(125); $s = 14; continue; /* } else if (_ref === 20) { */ case 9: _r$16 = f.Elem(); /* */ $s = 56; case 56: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } value$1 = _r$16; /* */ if (!value$1.IsValid()) { $s = 57; continue; } /* */ $s = 58; continue; /* if (!value$1.IsValid()) { */ case 57: /* */ if (p.fmt.fmtFlags.sharpV) { $s = 60; continue; } /* */ $s = 61; continue; /* if (p.fmt.fmtFlags.sharpV) { */ case 60: _r$17 = f.Type().String(); /* */ $s = 63; case 63: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } _r$18 = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(_r$17); /* */ $s = 64; case 64: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; } _r$18; (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).Write(nilParenBytes); $s = 62; continue; /* } else { */ case 61: (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).Write(nilAngleBytes); /* } */ case 62: $s = 59; continue; /* } else { */ case 58: _r$19 = p.printValue(value$1, verb, depth + 1 >> 0); /* */ $s = 65; case 65: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; } wasString = _r$19; /* } */ case 59: $s = 14; continue; /* } else if (_ref === 17 || _ref === 23) { */ case 10: typ = f.Type(); _r$20 = typ.Elem(); /* */ $s = 69; case 69: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; } _r$21 = _r$20.Kind(); /* */ $s = 70; case 70: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; } if (!(_r$21 === 8)) { _v = false; $s = 68; continue s; } _r$22 = typ.Elem(); /* */ $s = 71; case 71: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } _v = $interfaceIsEqual(_r$22, byteType) || (verb === 115) || (verb === 113) || (verb === 120); case 68: /* */ if (_v) { $s = 66; continue; } /* */ $s = 67; continue; /* if (_v) { */ case 66: bytes = sliceType.nil; /* */ if (f.Kind() === 23) { $s = 72; continue; } /* */ if (f.CanAddr()) { $s = 73; continue; } /* */ $s = 74; continue; /* if (f.Kind() === 23) { */ case 72: _r$23 = f.Bytes(); /* */ $s = 76; case 76: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } bytes = _r$23; $s = 75; continue; /* } else if (f.CanAddr()) { */ case 73: _r$24 = f.Slice(0, f.Len()); /* */ $s = 77; case 77: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } _r$25 = _r$24.Bytes(); /* */ $s = 78; case 78: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; } bytes = _r$25; $s = 75; continue; /* } else { */ case 74: bytes = $makeSlice(sliceType, f.Len()); _ref$2 = bytes; _i$1 = 0; /* while (true) { */ case 79: /* if (!(_i$1 < _ref$2.$length)) { break; } */ if(!(_i$1 < _ref$2.$length)) { $s = 80; continue; } i$2 = _i$1; _r$26 = f.Index(i$2); /* */ $s = 81; case 81: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; } _r$27 = _r$26.Uint(); /* */ $s = 82; case 82: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; } ((i$2 < 0 || i$2 >= bytes.$length) ? $throwRuntimeError("index out of range") : bytes.$array[bytes.$offset + i$2] = (_r$27.$low << 24 >>> 24)); _i$1++; /* } */ $s = 79; continue; case 80: /* } */ case 75: $r = p.fmtBytes(bytes, verb, typ, depth); /* */ $s = 83; case 83: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } wasString = verb === 115; /* break; */ $s = 14; continue; /* } */ case 67: /* */ if (p.fmt.fmtFlags.sharpV) { $s = 84; continue; } /* */ $s = 85; continue; /* if (p.fmt.fmtFlags.sharpV) { */ case 84: _r$28 = value.Type().String(); /* */ $s = 87; case 87: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; } _r$29 = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(_r$28); /* */ $s = 88; case 88: if($c) { $c = false; _r$29 = _r$29.$blk(); } if (_r$29 && _r$29.$blk !== undefined) { break s; } _r$29; if ((f.Kind() === 23) && f.IsNil()) { (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("(nil)"); /* break; */ $s = 14; continue; } (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(123); $s = 86; continue; /* } else { */ case 85: (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(91); /* } */ case 86: i$3 = 0; /* while (true) { */ case 89: /* if (!(i$3 < f.Len())) { break; } */ if(!(i$3 < f.Len())) { $s = 90; continue; } if (i$3 > 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))).Write(commaSpaceBytes); } 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$30 = f.Index(i$3); /* */ $s = 91; case 91: if($c) { $c = false; _r$30 = _r$30.$blk(); } if (_r$30 && _r$30.$blk !== undefined) { break s; } _r$31 = p.printValue(_r$30, verb, depth + 1 >> 0); /* */ $s = 92; case 92: if($c) { $c = false; _r$31 = _r$31.$blk(); } if (_r$31 && _r$31.$blk !== undefined) { break s; } _r$31; i$3 = i$3 + (1) >> 0; /* } */ $s = 89; continue; case 90: 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 = 14; continue; /* } else if (_ref === 22) { */ case 11: v$1 = f.Pointer(); /* */ if (!((v$1 === 0)) && (depth === 0)) { $s = 93; continue; } /* */ $s = 94; continue; /* if (!((v$1 === 0)) && (depth === 0)) { */ case 93: _r$32 = f.Elem(); /* */ $s = 95; case 95: if($c) { $c = false; _r$32 = _r$32.$blk(); } if (_r$32 && _r$32.$blk !== undefined) { break s; } a = _r$32; _ref$3 = a.Kind(); /* */ if (_ref$3 === 17 || _ref$3 === 23) { $s = 96; continue; } /* */ if (_ref$3 === 25) { $s = 97; continue; } /* */ if (_ref$3 === 21) { $s = 98; continue; } /* */ $s = 99; continue; /* if (_ref$3 === 17 || _ref$3 === 23) { */ case 96: (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(38); _r$33 = p.printValue(a, verb, depth + 1 >> 0); /* */ $s = 100; case 100: if($c) { $c = false; _r$33 = _r$33.$blk(); } if (_r$33 && _r$33.$blk !== undefined) { break s; } _r$33; /* break BigSwitch; */ $s = 14; continue s; $s = 99; continue; /* } else if (_ref$3 === 25) { */ case 97: (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(38); _r$34 = p.printValue(a, verb, depth + 1 >> 0); /* */ $s = 101; case 101: if($c) { $c = false; _r$34 = _r$34.$blk(); } if (_r$34 && _r$34.$blk !== undefined) { break s; } _r$34; /* break BigSwitch; */ $s = 14; continue s; $s = 99; continue; /* } else if (_ref$3 === 21) { */ case 98: (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(38); _r$35 = p.printValue(a, verb, depth + 1 >> 0); /* */ $s = 102; case 102: if($c) { $c = false; _r$35 = _r$35.$blk(); } if (_r$35 && _r$35.$blk !== undefined) { break s; } _r$35; /* break BigSwitch; */ $s = 14; continue s; /* } */ case 99: /* } */ case 94: $r = p.fmtPointer(value, verb); /* */ $s = 103; case 103: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $s = 14; continue; /* } else if (_ref === 18 || _ref === 19 || _ref === 26) { */ case 12: $r = p.fmtPointer(value, verb); /* */ $s = 104; case 104: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $s = 14; continue; /* } else { */ case 13: $r = p.unknownType(f); /* */ $s = 105; case 105: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } } */ case 14: p.value = oldValue; wasString = wasString; return wasString; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.printReflectValue }; } $f.$ptr = $ptr; $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$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$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._v = _v; $f.a = a; $f.bytes = bytes; $f.depth = depth; $f.f = f; $f.f$1 = f$1; $f.i = i; $f.i$1 = i$1; $f.i$2 = i$2; $f.i$3 = i$3; $f.key = key; $f.keys = keys; $f.oldValue = oldValue; $f.p = p; $f.t = t; $f.typ = typ; $f.v = v; $f.v$1 = v$1; $f.value = value; $f.value$1 = value$1; $f.verb = verb; $f.wasString = wasString; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; }; pp.prototype.printReflectValue = function(value, verb, depth) { return this.$val.printReflectValue(value, verb, depth); }; intFromArg = function(a, argNum) { var $ptr, _tuple, a, argNum, isInt, newArgNum, num; num = 0; isInt = false; newArgNum = 0; newArgNum = argNum; if (argNum < a.$length) { _tuple = $assertType(((argNum < 0 || argNum >= a.$length) ? $throwRuntimeError("index out of range") : a.$array[a.$offset + argNum]), $Int, true); num = _tuple[0]; isInt = _tuple[1]; newArgNum = argNum + 1 >> 0; } return [num, isInt, newArgNum]; }; parseArgNumber = function(format) { var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tuple, format, i, index, newi, ok, ok$1, wid, width; index = 0; wid = 0; ok = false; 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 = 0; _tmp$1 = i + 1 >> 0; _tmp$2 = false; index = _tmp; wid = _tmp$1; ok = _tmp$2; return [index, wid, ok]; } _tmp$3 = width - 1 >> 0; _tmp$4 = i + 1 >> 0; _tmp$5 = true; index = _tmp$3; wid = _tmp$4; ok = _tmp$5; return [index, wid, ok]; } i = i + (1) >> 0; } _tmp$6 = 0; _tmp$7 = 1; _tmp$8 = false; index = _tmp$6; wid = _tmp$7; ok = _tmp$8; 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(format.substring(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 = true; 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.doPrintf = function(format, a) { var $ptr, _r$2, _r$3, _r$4, _r$5, _ref, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, a, afterIndex, arg, arg$1, argNum, c, end, format, i, lasti, p, w, $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; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; _tuple$6 = $f._tuple$6; _tuple$7 = $f._tuple$7; a = $f.a; afterIndex = $f.afterIndex; arg = $f.arg; arg$1 = $f.arg$1; argNum = $f.argNum; c = $f.c; end = $f.end; format = $f.format; i = $f.i; lasti = $f.lasti; p = $f.p; 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(format.substring(lasti, i)); } if (i >= end) { /* break; */ $s = 2; continue; } i = i + (1) >> 0; p.fmt.clearflags(); F: while (true) { if (!(i < end)) { break; } _ref = format.charCodeAt(i); if (_ref === 35) { p.fmt.fmtFlags.sharp = true; } else if (_ref === 48) { p.fmt.fmtFlags.zero = true; } else if (_ref === 43) { p.fmt.fmtFlags.plus = true; } else if (_ref === 45) { p.fmt.fmtFlags.minus = true; } else if (_ref === 32) { p.fmt.fmtFlags.space = true; } else { break F; } i = i + (1) >> 0; } _tuple = p.argNumber(argNum, format, i, a.$length); argNum = _tuple[0]; i = _tuple[1]; afterIndex = _tuple[2]; if (i < end && (format.charCodeAt(i) === 42)) { i = i + (1) >> 0; _tuple$1 = intFromArg(a, argNum); 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))).Write(badWidthBytes); } afterIndex = false; } else { _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; } } if ((i + 1 >> 0) < end && (format.charCodeAt(i) === 46)) { 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 (format.charCodeAt(i) === 42) { i = i + (1) >> 0; _tuple$4 = intFromArg(a, argNum); p.fmt.prec = _tuple$4[0]; p.fmt.fmtFlags.precPresent = _tuple$4[1]; argNum = _tuple$4[2]; 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))).Write(badPrecBytes); } afterIndex = false; } else { _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; } } } 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) { $s = 3; continue; } /* */ $s = 4; continue; /* if (i >= end) { */ case 3: (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).Write(noVerbBytes); /* continue; */ $s = 1; continue; /* } */ case 4: _tuple$7 = utf8.DecodeRuneInString(format.substring(i)); c = _tuple$7[0]; w = _tuple$7[1]; i = i + (w) >> 0; /* */ if (c === 37) { $s = 5; continue; } /* */ $s = 6; continue; /* if (c === 37) { */ case 5: (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(37); /* continue; */ $s = 1; continue; /* } */ case 6: /* */ if (!p.goodArgNum) { $s = 7; continue; } /* */ if (argNum >= a.$length) { $s = 8; continue; } /* */ $s = 9; continue; /* if (!p.goodArgNum) { */ case 7: (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).Write(percentBangBytes); p.add(c); (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).Write(badIndexBytes); /* continue; */ $s = 1; continue; $s = 9; continue; /* } else if (argNum >= a.$length) { */ case 8: (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).Write(percentBangBytes); p.add(c); (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).Write(missingBytes); /* continue; */ $s = 1; continue; /* } */ case 9: arg = ((argNum < 0 || argNum >= a.$length) ? $throwRuntimeError("index out of range") : a.$array[a.$offset + argNum]); argNum = argNum + (1) >> 0; if (c === 118) { if (p.fmt.fmtFlags.sharp) { p.fmt.fmtFlags.sharp = false; p.fmt.fmtFlags.sharpV = true; } if (p.fmt.fmtFlags.plus) { p.fmt.fmtFlags.plus = false; p.fmt.fmtFlags.plusV = true; } } _r$2 = p.printArg(arg, c, 0); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } _r$2; /* } */ $s = 1; continue; case 2: /* */ if (!p.reordered && argNum < a.$length) { $s = 11; continue; } /* */ $s = 12; continue; /* if (!p.reordered && argNum < a.$length) { */ case 11: (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).Write(extraBytes); /* while (true) { */ case 13: /* if (!(argNum < a.$length)) { break; } */ if(!(argNum < a.$length)) { $s = 14; continue; } arg$1 = ((argNum < 0 || argNum >= a.$length) ? $throwRuntimeError("index out of range") : a.$array[a.$offset + argNum]); /* */ if (!($interfaceIsEqual(arg$1, $ifaceNil))) { $s = 15; continue; } /* */ $s = 16; continue; /* if (!($interfaceIsEqual(arg$1, $ifaceNil))) { */ case 15: _r$3 = reflect.TypeOf(arg$1).String(); /* */ $s = 17; case 17: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } _r$4 = (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 = 18; case 18: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } _r$4; (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(61); /* } */ case 16: _r$5 = p.printArg(arg$1, 118, 0); /* */ $s = 19; case 19: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } _r$5; if ((argNum + 1 >> 0) < a.$length) { (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).Write(commaSpaceBytes); } argNum = argNum + (1) >> 0; /* } */ $s = 13; continue; case 14: (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(41); /* } */ case 12: /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.doPrintf }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f._tuple$6 = _tuple$6; $f._tuple$7 = _tuple$7; $f.a = a; $f.afterIndex = afterIndex; $f.arg = arg; $f.arg$1 = arg$1; $f.argNum = argNum; $f.c = c; $f.end = end; $f.format = format; $f.i = i; $f.lasti = lasti; $f.p = p; $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, addspace, addnewline) { var $ptr, _r$2, _r$3, _v, a, addnewline, addspace, 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; _r$2 = $f._r$2; _r$3 = $f._r$3; _v = $f._v; a = $f.a; addnewline = $f.addnewline; addspace = $f.addspace; 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; argNum = 0; /* while (true) { */ case 1: /* if (!(argNum < a.$length)) { break; } */ if(!(argNum < a.$length)) { $s = 2; continue; } p.fmt.clearflags(); arg = ((argNum < 0 || argNum >= a.$length) ? $throwRuntimeError("index out of range") : a.$array[a.$offset + argNum]); /* */ if (argNum > 0) { $s = 3; continue; } /* */ $s = 4; continue; /* if (argNum > 0) { */ case 3: if (!(!($interfaceIsEqual(arg, $ifaceNil)))) { _v = false; $s = 5; continue s; } _r$2 = reflect.TypeOf(arg).Kind(); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } _v = _r$2 === 24; case 5: isString = _v; if (addspace || !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); } /* } */ case 4: _r$3 = p.printArg(arg, 118, 0); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } prevString = _r$3; argNum = argNum + (1) >> 0; /* } */ $s = 1; continue; case 2: if (addnewline) { (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; case -1: } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.doPrint }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._v = _v; $f.a = a; $f.addnewline = addnewline; $f.addspace = addspace; $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, addspace, addnewline) { return this.$val.doPrint(a, addspace, addnewline); }; 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$2, _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$2 = $f._r$2; _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.peekRune >= 0) { s.count = s.count + (1) >> 0; r = s.peekRune; size = utf8.RuneLen(r); s.prevRune = r; s.peekRune = -1; return [r, size, err]; } if (s.atEOF || s.ssave.nlIsEnd && (s.prevRune === 10) || s.count >= s.ssave.argLimit) { err = io.EOF; return [r, size, err]; } _r$2 = s.rr.ReadRune(); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } _tuple = _r$2; r = _tuple[0]; size = _tuple[1]; err = _tuple[2]; if ($interfaceIsEqual(err, $ifaceNil)) { s.count = s.count + (1) >> 0; s.prevRune = r; } else if ($interfaceIsEqual(err, io.EOF)) { s.atEOF = true; } return [r, size, err]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: ss.ptr.prototype.ReadRune }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $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$2, _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$2 = $f._r$2; _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$2 = s.ReadRune(); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } _tuple = _r$2; r = _tuple[0]; err = _tuple[2]; if (!($interfaceIsEqual(err, $ifaceNil))) { if ($interfaceIsEqual(err, io.EOF)) { r = -1; return r; } s.error(err); } return r; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: ss.ptr.prototype.getRune }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $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$2, _tuple, ok, s, u, $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; _tuple = $f._tuple; ok = $f.ok; s = $f.s; u = $f.u; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: s = this; _tuple = $assertType(s.rr, runeUnreader, true); u = _tuple[0]; ok = _tuple[1]; /* */ if (ok) { $s = 1; continue; } /* */ $s = 2; continue; /* if (ok) { */ case 1: _r$2 = u.UnreadRune(); /* */ $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 = 3; continue; /* } else { */ case 2: s.peekRune = s.prevRune; /* } */ case 3: s.prevRune = -1; s.count = s.count - (1) >> 0; return $ifaceNil; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: ss.ptr.prototype.UnreadRune }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._tuple = _tuple; $f.ok = ok; $f.s = s; $f.u = u; $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$2, 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$2 = $f._r$2; 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.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$2 = s.token(skipSpace, f); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } tok = _r$2; return [tok, err[0]]; /* */ $s = -1; case -1: } 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$2 = _r$2; $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") : _ref.$array[_ref.$offset + _i]), arrayType); 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; case -1: } 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; old = $clone(old, ssave); if (old.validSave) { $copy(s.ssave, old, ssave); return; } if (s.buf.$capacity > 1024) { return; } s.buf = $subslice(s.buf, 0, 0); s.rr = $ifaceNil; ssFree.Put(s); }; ss.prototype.free = function(old) { return this.$val.free(old); }; ss.ptr.prototype.skipSpace = function(stopAtNewline) { var $ptr, _r$2, _r$3, _r$4, _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$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _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$2 = s.getRune(); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } r = _r$2; if (r === -1) { return; } if (!(r === 13)) { _v = false; $s = 6; continue s; } _r$3 = s.peek("\n"); /* */ $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; 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"); return; /* } */ case 9: /* */ if (!isSpace(r)) { $s = 10; continue; } /* */ $s = 11; continue; /* if (!isSpace(r)) { */ case 10: _r$4 = s.UnreadRune(); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } _r$4; /* break; */ $s = 2; continue; /* } */ case 11: /* } */ $s = 1; continue; case 2: /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: ss.ptr.prototype.skipSpace }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $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$2, _r$3, _r$4, 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$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; 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$2 = s.getRune(); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } r = _r$2; if (r === -1) { /* break; */ $s = 5; continue; } _r$3 = f(r); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } /* */ if (!_r$3) { $s = 7; continue; } /* */ $s = 8; continue; /* if (!_r$3) { */ case 7: _r$4 = s.UnreadRune(); /* */ $s = 10; case 10: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } _r$4; /* 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: return (x = s.buf, $subslice(new sliceType(x.$array), x.$offset, x.$offset + x.$length)); /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: ss.ptr.prototype.token }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $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$2, _r$3, 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$2 = $f._r$2; _r$3 = $f._r$3; 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$2 = s.getRune(); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } r = _r$2; /* */ if (!((r === -1))) { $s = 2; continue; } /* */ $s = 3; continue; /* if (!((r === -1))) { */ case 2: _r$3 = s.UnreadRune(); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } _r$3; /* } */ case 3: return indexRune(ok, r) >= 0; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: ss.ptr.prototype.peek }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $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: "computePadding", name: "computePadding", pkg: "fmt", typ: $funcType([$Int], [sliceType, $Int, $Int], false)}, {prop: "writePadding", name: "writePadding", pkg: "fmt", typ: $funcType([$Int, sliceType], [], false)}, {prop: "pad", name: "pad", pkg: "fmt", typ: $funcType([sliceType], [], false)}, {prop: "padString", name: "padString", pkg: "fmt", typ: $funcType([$String], [], false)}, {prop: "fmt_boolean", name: "fmt_boolean", pkg: "fmt", typ: $funcType([$Bool], [], false)}, {prop: "integer", name: "integer", pkg: "fmt", typ: $funcType([$Int64, $Uint64, $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, $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, $String], [], false)}, {prop: "fmt_q", name: "fmt_q", pkg: "fmt", typ: $funcType([$String], [], false)}, {prop: "fmt_qc", name: "fmt_qc", pkg: "fmt", typ: $funcType([$Int64], [], false)}, {prop: "formatFloat", name: "formatFloat", pkg: "fmt", typ: $funcType([$Float64, $Uint8, $Int, $Int], [], false)}, {prop: "fmt_e64", name: "fmt_e64", pkg: "fmt", typ: $funcType([$Float64], [], false)}, {prop: "fmt_E64", name: "fmt_E64", pkg: "fmt", typ: $funcType([$Float64], [], false)}, {prop: "fmt_f64", name: "fmt_f64", pkg: "fmt", typ: $funcType([$Float64], [], false)}, {prop: "fmt_g64", name: "fmt_g64", pkg: "fmt", typ: $funcType([$Float64], [], false)}, {prop: "fmt_G64", name: "fmt_G64", pkg: "fmt", typ: $funcType([$Float64], [], false)}, {prop: "fmt_fb64", name: "fmt_fb64", pkg: "fmt", typ: $funcType([$Float64], [], false)}, {prop: "fmt_e32", name: "fmt_e32", pkg: "fmt", typ: $funcType([$Float32], [], false)}, {prop: "fmt_E32", name: "fmt_E32", pkg: "fmt", typ: $funcType([$Float32], [], false)}, {prop: "fmt_f32", name: "fmt_f32", pkg: "fmt", typ: $funcType([$Float32], [], false)}, {prop: "fmt_g32", name: "fmt_g32", pkg: "fmt", typ: $funcType([$Float32], [], false)}, {prop: "fmt_G32", name: "fmt_G32", pkg: "fmt", typ: $funcType([$Float32], [], false)}, {prop: "fmt_fb32", name: "fmt_fb32", pkg: "fmt", typ: $funcType([$Float32], [], false)}, {prop: "fmt_c64", name: "fmt_c64", pkg: "fmt", typ: $funcType([$Complex64, $Int32], [], false)}, {prop: "fmt_c128", name: "fmt_c128", pkg: "fmt", typ: $funcType([$Complex128, $Int32], [], false)}, {prop: "fmt_complex", name: "fmt_complex", pkg: "fmt", typ: $funcType([$Float64, $Float64, $Int, $Int32], [], false)}]; ptrType$1.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([$String], [$Int, $error], false)}, {prop: "WriteByte", name: "WriteByte", pkg: "", typ: $funcType([$Uint8], [$error], false)}, {prop: "WriteRune", name: "WriteRune", pkg: "", typ: $funcType([$Int32], [$error], false)}]; ptrType.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: "add", name: "add", pkg: "fmt", typ: $funcType([$Int32], [], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType], [$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: "fmtC", name: "fmtC", pkg: "fmt", typ: $funcType([$Int64], [], false)}, {prop: "fmtInt64", name: "fmtInt64", pkg: "fmt", typ: $funcType([$Int64, $Int32], [], false)}, {prop: "fmt0x64", name: "fmt0x64", pkg: "fmt", typ: $funcType([$Uint64, $Bool], [], false)}, {prop: "fmtUnicode", name: "fmtUnicode", pkg: "fmt", typ: $funcType([$Int64], [], false)}, {prop: "fmtUint64", name: "fmtUint64", pkg: "fmt", typ: $funcType([$Uint64, $Int32], [], false)}, {prop: "fmtFloat32", name: "fmtFloat32", pkg: "fmt", typ: $funcType([$Float32, $Int32], [], false)}, {prop: "fmtFloat64", name: "fmtFloat64", pkg: "fmt", typ: $funcType([$Float64, $Int32], [], false)}, {prop: "fmtComplex64", name: "fmtComplex64", pkg: "fmt", typ: $funcType([$Complex64, $Int32], [], false)}, {prop: "fmtComplex128", name: "fmtComplex128", pkg: "fmt", typ: $funcType([$Complex128, $Int32], [], false)}, {prop: "fmtString", name: "fmtString", pkg: "fmt", typ: $funcType([$String, $Int32], [], false)}, {prop: "fmtBytes", name: "fmtBytes", pkg: "fmt", typ: $funcType([sliceType, $Int32, reflect.Type, $Int], [], 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: "clearSpecialFlags", name: "clearSpecialFlags", pkg: "fmt", typ: $funcType([], [$Bool, $Bool], false)}, {prop: "restoreSpecialFlags", name: "restoreSpecialFlags", pkg: "fmt", typ: $funcType([$Bool, $Bool], [], false)}, {prop: "handleMethods", name: "handleMethods", pkg: "fmt", typ: $funcType([$Int32, $Int], [$Bool], false)}, {prop: "printArg", name: "printArg", pkg: "fmt", typ: $funcType([$emptyInterface, $Int32, $Int], [$Bool], false)}, {prop: "printValue", name: "printValue", pkg: "fmt", typ: $funcType([reflect.Value, $Int32, $Int], [$Bool], false)}, {prop: "printReflectValue", name: "printReflectValue", pkg: "fmt", typ: $funcType([reflect.Value, $Int32, $Int], [$Bool], false)}, {prop: "argNumber", name: "argNumber", pkg: "fmt", typ: $funcType([$Int, $String, $Int, $Int], [$Int, $Int, $Bool], false)}, {prop: "doPrintf", name: "doPrintf", pkg: "fmt", typ: $funcType([$String, sliceType$1], [], false)}, {prop: "doPrint", name: "doPrint", pkg: "fmt", typ: $funcType([sliceType$1, $Bool, $Bool], [], false)}]; ptrType$5.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$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, $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], 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: "hexDigit", name: "hexDigit", pkg: "fmt", typ: $funcType([$Int32], [$Int], 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$1], [$Int, $error], false)}, {prop: "advance", name: "advance", pkg: "fmt", typ: $funcType([$String], [$Int], false)}, {prop: "doScanf", name: "doScanf", pkg: "fmt", typ: $funcType([$String, sliceType$1], [$Int, $error], false)}]; fmtFlags.init([{prop: "widPresent", name: "widPresent", pkg: "fmt", typ: $Bool, tag: ""}, {prop: "precPresent", name: "precPresent", pkg: "fmt", typ: $Bool, tag: ""}, {prop: "minus", name: "minus", pkg: "fmt", typ: $Bool, tag: ""}, {prop: "plus", name: "plus", pkg: "fmt", typ: $Bool, tag: ""}, {prop: "sharp", name: "sharp", pkg: "fmt", typ: $Bool, tag: ""}, {prop: "space", name: "space", pkg: "fmt", typ: $Bool, tag: ""}, {prop: "unicode", name: "unicode", pkg: "fmt", typ: $Bool, tag: ""}, {prop: "uniQuote", name: "uniQuote", pkg: "fmt", typ: $Bool, tag: ""}, {prop: "zero", name: "zero", pkg: "fmt", typ: $Bool, tag: ""}, {prop: "plusV", name: "plusV", pkg: "fmt", typ: $Bool, tag: ""}, {prop: "sharpV", name: "sharpV", pkg: "fmt", typ: $Bool, tag: ""}]); fmt.init([{prop: "intbuf", name: "intbuf", pkg: "fmt", typ: arrayType$2, tag: ""}, {prop: "buf", name: "buf", pkg: "fmt", typ: ptrType$1, tag: ""}, {prop: "wid", name: "wid", pkg: "fmt", typ: $Int, tag: ""}, {prop: "prec", name: "prec", pkg: "fmt", typ: $Int, tag: ""}, {prop: "fmtFlags", name: "", pkg: "fmt", typ: fmtFlags, 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], [$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([{prop: "n", name: "n", pkg: "fmt", typ: $Int, tag: ""}, {prop: "panicking", name: "panicking", pkg: "fmt", typ: $Bool, tag: ""}, {prop: "erroring", name: "erroring", pkg: "fmt", typ: $Bool, tag: ""}, {prop: "buf", name: "buf", pkg: "fmt", typ: buffer, tag: ""}, {prop: "arg", name: "arg", pkg: "fmt", typ: $emptyInterface, tag: ""}, {prop: "value", name: "value", pkg: "fmt", typ: reflect.Value, tag: ""}, {prop: "reordered", name: "reordered", pkg: "fmt", typ: $Bool, tag: ""}, {prop: "goodArgNum", name: "goodArgNum", pkg: "fmt", typ: $Bool, tag: ""}, {prop: "runeBuf", name: "runeBuf", pkg: "fmt", typ: arrayType$1, tag: ""}, {prop: "fmt", name: "fmt", pkg: "fmt", typ: fmt, tag: ""}]); runeUnreader.init([{prop: "UnreadRune", name: "UnreadRune", pkg: "", typ: $funcType([], [$error], false)}]); ScanState.init([{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$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, $error], false)}, {prop: "UnreadRune", name: "UnreadRune", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Width", name: "Width", pkg: "", typ: $funcType([], [$Int, $Bool], false)}]); scanError.init([{prop: "err", name: "err", pkg: "fmt", typ: $error, tag: ""}]); ss.init([{prop: "rr", name: "rr", pkg: "fmt", typ: io.RuneReader, tag: ""}, {prop: "buf", name: "buf", pkg: "fmt", typ: buffer, tag: ""}, {prop: "peekRune", name: "peekRune", pkg: "fmt", typ: $Int32, tag: ""}, {prop: "prevRune", name: "prevRune", pkg: "fmt", typ: $Int32, tag: ""}, {prop: "count", name: "count", pkg: "fmt", typ: $Int, tag: ""}, {prop: "atEOF", name: "atEOF", pkg: "fmt", typ: $Bool, tag: ""}, {prop: "ssave", name: "", pkg: "fmt", typ: ssave, tag: ""}]); ssave.init([{prop: "validSave", name: "validSave", pkg: "fmt", typ: $Bool, tag: ""}, {prop: "nlIsEnd", name: "nlIsEnd", pkg: "fmt", typ: $Bool, tag: ""}, {prop: "nlIsSpace", name: "nlIsSpace", pkg: "fmt", typ: $Bool, tag: ""}, {prop: "argLimit", name: "argLimit", pkg: "fmt", typ: $Int, tag: ""}, {prop: "limit", name: "limit", pkg: "fmt", typ: $Int, tag: ""}, {prop: "maxWid", name: "maxWid", pkg: "fmt", 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; } padZeroBytes = $makeSlice(sliceType, 65); padSpaceBytes = $makeSlice(sliceType, 65); trueBytes = new sliceType($stringToBytes("true")); falseBytes = new sliceType($stringToBytes("false")); commaSpaceBytes = new sliceType($stringToBytes(", ")); nilAngleBytes = new sliceType($stringToBytes("")); nilParenBytes = new sliceType($stringToBytes("(nil)")); nilBytes = new sliceType($stringToBytes("nil")); mapBytes = new sliceType($stringToBytes("map[")); percentBangBytes = new sliceType($stringToBytes("%!")); missingBytes = new sliceType($stringToBytes("(MISSING)")); badIndexBytes = new sliceType($stringToBytes("(BADINDEX)")); panicBytes = new sliceType($stringToBytes("(PANIC=")); extraBytes = new sliceType($stringToBytes("%!(EXTRA ")); irparenBytes = new sliceType($stringToBytes("i)")); bytesBytes = new sliceType($stringToBytes("[]byte{")); badWidthBytes = new sliceType($stringToBytes("%!(BADWIDTH)")); badPrecBytes = new sliceType($stringToBytes("%!(BADPREC)")); noVerbBytes = new sliceType($stringToBytes("%!(NOVERB)")); ppFree = new sync.Pool.ptr(0, 0, sliceType$1.nil, (function() { var $ptr; return new pp.ptr(); })); _r = reflect.TypeOf(new $Int(0)).Bits(); /* */ $s = 9; case 9: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } intBits = _r; _r$1 = reflect.TypeOf(new $Uintptr(0)).Bits(); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } uintptrBits = _r$1; byteType = reflect.TypeOf(new $Uint8(0)); space = new sliceType$2([$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$1.nil, (function() { var $ptr; return new ss.ptr(); })); complexError = errors.New("syntax error scanning complex number"); boolError = errors.New("syntax error scanning boolean"); init(); /* */ } 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, Println; 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", "Logger", "log", function(mu_, prefix_, flag_, out_, buf_) { this.$val = this; if (arguments.length === 0) { this.mu = new nosync.Mutex.ptr(); 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, 32); 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(), prefix, flag, out, sliceType.nil); }; $pkg.New = New; itoa = function(buf, i, wid) { var $ptr, _q, _r, b, bp, buf, i, u, wid; u = (i >>> 0); if ((u === 0) && wid <= 1) { buf.$set($append(buf.$get(), 48)); return; } b = $clone(arrayType.zero(), arrayType); bp = 32; while (true) { if (!(u > 0 || wid > 0)) { break; } bp = bp - (1) >> 0; wid = wid - (1) >> 0; ((bp < 0 || bp >= b.length) ? $throwRuntimeError("index out of range") : b[bp] = ((_r = u % 10, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) << 24 >>> 24) + 48 << 24 >>> 24); u = (_q = u / (10), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")); } 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; t = $clone(t, time.Time); buf.$set($appendSlice(buf.$get(), new sliceType($stringToBytes(l.prefix)))); /* */ 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 = t.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 = t.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 = t.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 = file.substring((i + 1 >> 0)); break; } i = i - (1) >> 0; } file = short$1; } buf.$set($appendSlice(buf.$get(), new sliceType($stringToBytes(file)))); buf.$set($append(buf.$get(), 58)); itoa(buf, line, -1); buf.$set($appendSlice(buf.$get(), new sliceType($stringToBytes(": ")))); } /* */ $s = -1; case -1: } 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))), now, 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, new sliceType($stringToBytes(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]; return err; /* */ $s = -1; case -1: } 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; case -1: } 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; case -1: } 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; case -1: } 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; case -1: } 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; case -1: } 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; case -1: } 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; case -1: } 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; case -1: } 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; case -1: } 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; case -1: } 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; Println = function(v) { var $ptr, _arg, _r, _r$1, 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; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: _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 = 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; case -1: } return; } if ($f === undefined) { $f = { $blk: Println }; } $f.$ptr = $ptr; $f._arg = _arg; $f._r = _r; $f._r$1 = _r$1; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; }; $pkg.Println = Println; ptrType$1.methods = [{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([{prop: "mu", name: "mu", pkg: "log", typ: nosync.Mutex, tag: ""}, {prop: "prefix", name: "prefix", pkg: "log", typ: $String, tag: ""}, {prop: "flag", name: "flag", pkg: "log", typ: $Int, tag: ""}, {prop: "out", name: "out", pkg: "log", typ: io.Writer, tag: ""}, {prop: "buf", name: "buf", pkg: "log", 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["sort"] = (function() { var $pkg = {}, $init, StringSlice, sliceType$2, Search, SearchStrings, min, insertionSort, siftDown, heapSort, medianOfThree, swapRange, doPivot, quickSort, Sort, Strings; StringSlice = $pkg.StringSlice = $newType(12, $kindSlice, "sort.StringSlice", "StringSlice", "sort", null); sliceType$2 = $sliceType($String); 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: return i; /* */ $s = -1; case -1: } 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") : 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; } return _r; /* */ $s = -1; case -1: } 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; } return _r; /* */ $s = -1; case -1: } 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); }; min = function(a, b) { var $ptr, a, b; if (a < b) { return a; } return b; }; 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; case -1: } 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 = (2 * root >> 0) + 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: 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; case -1: } 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; case -1: } 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, a, b, c) { var $ptr, _r, _r$1, _r$2, a, b, c, 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; a = $f.a; b = $f.b; c = $f.c; 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: m0 = b; m1 = a; m2 = c; _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; } /* } */ case 6: _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: /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: medianOfThree }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.a = a; $f.b = b; $f.c = c; $f.data = data; $f.m0 = m0; $f.m1 = m1; $f.m2 = m2; $f.$s = $s; $f.$r = $r; return $f; }; swapRange = function(data, a, b, n) { var $ptr, a, b, data, i, n, $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; data = $f.data; i = $f.i; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: i = 0; /* while (true) { */ case 1: /* if (!(i < n)) { break; } */ if(!(i < n)) { $s = 2; continue; } $r = data.Swap(a + i >> 0, b + i >> 0); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } i = i + (1) >> 0; /* } */ $s = 1; continue; case 2: /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: swapRange }; } $f.$ptr = $ptr; $f.a = a; $f.b = b; $f.data = data; $f.i = i; $f.n = n; $f.$s = $s; $f.$r = $r; return $f; }; doPivot = function(data, lo, hi) { var $ptr, _q, _q$1, _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, a, b, c, d, data, hi, lo, m, midhi, midlo, n, pivot, 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; _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; a = $f.a; b = $f.b; c = $f.c; d = $f.d; data = $f.data; hi = $f.hi; lo = $f.lo; m = $f.m; midhi = $f.midhi; midlo = $f.midlo; n = $f.n; pivot = $f.pivot; 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 + (2 * s >> 0) >> 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) - (2 * s >> 0) >> 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 = lo + 1 >> 0; _tmp$2 = hi; _tmp$3 = hi; a = _tmp; b = _tmp$1; c = _tmp$2; d = _tmp$3; /* while (true) { */ case 7: /* while (true) { */ case 9: /* if (!(b < c)) { break; } */ if(!(b < c)) { $s = 10; continue; } _r = data.Less(b, pivot); /* */ $s = 15; case 15: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } /* */ if (_r) { $s = 11; continue; } _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; } /* */ if (!_r$1) { $s = 12; continue; } /* */ $s = 13; continue; /* if (_r) { */ case 11: b = b + (1) >> 0; $s = 14; continue; /* } else if (!_r$1) { */ case 12: $r = data.Swap(a, b); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } a = a + (1) >> 0; b = b + (1) >> 0; $s = 14; continue; /* } else { */ case 13: /* break; */ $s = 10; continue; /* } */ case 14: /* } */ $s = 9; continue; case 10: /* while (true) { */ case 18: /* if (!(b < c)) { break; } */ if(!(b < c)) { $s = 19; continue; } _r$2 = data.Less(pivot, c - 1 >> 0); /* */ $s = 24; case 24: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } /* */ if (_r$2) { $s = 20; continue; } _r$3 = data.Less(c - 1 >> 0, pivot); /* */ $s = 25; case 25: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } /* */ if (!_r$3) { $s = 21; continue; } /* */ $s = 22; continue; /* if (_r$2) { */ case 20: c = c - (1) >> 0; $s = 23; continue; /* } else if (!_r$3) { */ case 21: $r = data.Swap(c - 1 >> 0, d - 1 >> 0); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } c = c - (1) >> 0; d = d - (1) >> 0; $s = 23; continue; /* } else { */ case 22: /* break; */ $s = 19; continue; /* } */ case 23: /* } */ $s = 18; continue; case 19: if (b >= c) { /* break; */ $s = 8; continue; } $r = data.Swap(b, c - 1 >> 0); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } b = b + (1) >> 0; c = c - (1) >> 0; /* } */ $s = 7; continue; case 8: n = min(b - a >> 0, a - lo >> 0); $r = swapRange(data, lo, b - n >> 0, n); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } n = min(hi - d >> 0, d - c >> 0); $r = swapRange(data, c, hi - n >> 0, n); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } _tmp$4 = (lo + b >> 0) - a >> 0; _tmp$5 = hi - ((d - c >> 0)) >> 0; midlo = _tmp$4; midhi = _tmp$5; return [midlo, midhi]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: doPivot }; } $f.$ptr = $ptr; $f._q = _q; $f._q$1 = _q$1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._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.a = a; $f.b = b; $f.c = c; $f.d = d; $f.data = data; $f.hi = hi; $f.lo = lo; $f.m = m; $f.midhi = midhi; $f.midlo = midlo; $f.n = n; $f.pivot = pivot; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; }; quickSort = function(data, a, b, maxDepth) { var $ptr, _r, _tuple, a, b, data, maxDepth, 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; _tuple = $f._tuple; a = $f.a; b = $f.b; data = $f.data; maxDepth = $f.maxDepth; 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) > 7)) { break; } */ if(!((b - a >> 0) > 7)) { $s = 2; continue; } /* */ if (maxDepth === 0) { $s = 3; continue; } /* */ $s = 4; continue; /* if (maxDepth === 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; } return; /* } */ case 4: maxDepth = maxDepth - (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); /* */ $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); /* */ $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: $r = insertionSort(data, a, b); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 13: /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: quickSort }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.a = a; $f.b = b; $f.data = data; $f.maxDepth = maxDepth; $f.mhi = mhi; $f.mlo = mlo; $f.$s = $s; $f.$r = $r; return $f; }; Sort = function(data) { var $ptr, _r, data, i, maxDepth, 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; i = $f.i; maxDepth = $f.maxDepth; 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; maxDepth = 0; i = n; while (true) { if (!(i > 0)) { break; } maxDepth = maxDepth + (1) >> 0; i = (i >> $min((1), 31)) >> 0; } maxDepth = maxDepth * (2) >> 0; $r = quickSort(data, 0, n, maxDepth); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Sort }; } $f.$ptr = $ptr; $f._r = _r; $f.data = data; $f.i = i; $f.maxDepth = maxDepth; $f.n = n; $f.$s = $s; $f.$r = $r; return $f; }; $pkg.Sort = Sort; 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") : p.$array[p.$offset + i]) < ((j < 0 || j >= p.$length) ? $throwRuntimeError("index out of range") : 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") : p.$array[p.$offset + j]); _tmp$1 = ((i < 0 || i >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + i]); ((i < 0 || i >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + i] = _tmp); ((j < 0 || j >= p.$length) ? $throwRuntimeError("index out of range") : 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; case -1: } 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; case -1: } return; } if ($f === undefined) { $f = { $blk: Strings }; } $f.$ptr = $ptr; $f.a = a; $f.$s = $s; $f.$r = $r; return $f; }; $pkg.Strings = Strings; 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)}]; 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: /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; }; $pkg.$init = $init; return $pkg; })(); $packages["github.com/mitchellh/mapstructure"] = (function() { var $pkg = {}, $init, errors, fmt, reflect, sort, strconv, strings, Error, DecodeHookFunc, DecoderConfig, Decoder, Metadata, sliceType, sliceType$1, sliceType$2, ptrType, ptrType$1, ptrType$2, ptrType$3, structType, sliceType$3, appendErrors, Decode, NewDecoder, getKind; errors = $packages["errors"]; fmt = $packages["fmt"]; reflect = $packages["reflect"]; sort = $packages["sort"]; strconv = $packages["strconv"]; strings = $packages["strings"]; Error = $pkg.Error = $newType(0, $kindStruct, "mapstructure.Error", "Error", "github.com/mitchellh/mapstructure", function(Errors_) { this.$val = this; if (arguments.length === 0) { this.Errors = sliceType.nil; return; } this.Errors = Errors_; }); DecodeHookFunc = $pkg.DecodeHookFunc = $newType(4, $kindFunc, "mapstructure.DecodeHookFunc", "DecodeHookFunc", "github.com/mitchellh/mapstructure", null); DecoderConfig = $pkg.DecoderConfig = $newType(0, $kindStruct, "mapstructure.DecoderConfig", "DecoderConfig", "github.com/mitchellh/mapstructure", function(DecodeHook_, ErrorUnused_, WeaklyTypedInput_, Metadata_, Result_, TagName_) { this.$val = this; if (arguments.length === 0) { this.DecodeHook = $throwNilPointerError; this.ErrorUnused = false; this.WeaklyTypedInput = false; this.Metadata = ptrType$1.nil; this.Result = $ifaceNil; this.TagName = ""; return; } this.DecodeHook = DecodeHook_; this.ErrorUnused = ErrorUnused_; this.WeaklyTypedInput = WeaklyTypedInput_; this.Metadata = Metadata_; this.Result = Result_; this.TagName = TagName_; }); Decoder = $pkg.Decoder = $newType(0, $kindStruct, "mapstructure.Decoder", "Decoder", "github.com/mitchellh/mapstructure", function(config_) { this.$val = this; if (arguments.length === 0) { this.config = ptrType$3.nil; return; } this.config = config_; }); Metadata = $pkg.Metadata = $newType(0, $kindStruct, "mapstructure.Metadata", "Metadata", "github.com/mitchellh/mapstructure", function(Keys_, Unused_) { this.$val = this; if (arguments.length === 0) { this.Keys = sliceType.nil; this.Unused = sliceType.nil; return; } this.Keys = Keys_; this.Unused = Unused_; }); sliceType = $sliceType($String); sliceType$1 = $sliceType($Uint8); sliceType$2 = $sliceType($emptyInterface); ptrType = $ptrType(Error); ptrType$1 = $ptrType(Metadata); ptrType$2 = $ptrType(Decoder); ptrType$3 = $ptrType(DecoderConfig); structType = $structType([]); sliceType$3 = $sliceType(reflect.Value); Error.ptr.prototype.Error = function() { var $ptr, _i, _r, _r$1, _ref, e, err, i, points, $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; e = $f.e; err = $f.err; i = $f.i; points = $f.points; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: e = this; points = $makeSlice(sliceType, e.Errors.$length); _ref = e.Errors; _i = 0; /* while (true) { */ case 1: /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } i = _i; err = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]); _r = fmt.Sprintf("* %s", new sliceType$2([new $String(err)])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } ((i < 0 || i >= points.$length) ? $throwRuntimeError("index out of range") : points.$array[points.$offset + i] = _r); _i++; /* } */ $s = 1; continue; case 2: $r = sort.Strings(points); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } _r$1 = fmt.Sprintf("%d error(s) decoding:\n\n%s", new sliceType$2([new $Int(e.Errors.$length), new $String(strings.Join(points, "\n"))])); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } return _r$1; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Error.ptr.prototype.Error }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f.e = e; $f.err = err; $f.i = i; $f.points = points; $f.$s = $s; $f.$r = $r; return $f; }; Error.prototype.Error = function() { return this.$val.Error(); }; appendErrors = function(errors$1, err) { var $ptr, _r, _ref, e, e$1, err, errors$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; e = $f.e; e$1 = $f.e$1; err = $f.err; errors$1 = $f.errors$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: _ref = err; /* */ if ($assertType(_ref, ptrType, true)[1]) { $s = 1; continue; } /* */ $s = 2; continue; /* if ($assertType(_ref, ptrType, true)[1]) { */ case 1: e = _ref.$val; return $appendSlice(errors$1, e.Errors); $s = 3; continue; /* } else { */ case 2: e$1 = _ref; _r = e$1.Error(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return $append(errors$1, _r); /* } */ case 3: /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: appendErrors }; } $f.$ptr = $ptr; $f._r = _r; $f._ref = _ref; $f.e = e; $f.e$1 = e$1; $f.err = err; $f.errors$1 = errors$1; $f.$s = $s; $f.$r = $r; return $f; }; Decode = function(m, rawVal) { var $ptr, _r, _r$1, _tuple, config, decoder, err, m, rawVal, $s, $r; /* */ $s = 0; var $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; config = $f.config; decoder = $f.decoder; err = $f.err; m = $f.m; rawVal = $f.rawVal; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: config = new DecoderConfig.ptr($throwNilPointerError, false, false, ptrType$1.nil, rawVal, ""); _r = NewDecoder(config); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _tuple = _r; decoder = _tuple[0]; err = _tuple[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } _r$1 = decoder.Decode(m); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } return _r$1; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Decode }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.config = config; $f.decoder = decoder; $f.err = err; $f.m = m; $f.rawVal = rawVal; $f.$s = $s; $f.$r = $r; return $f; }; $pkg.Decode = Decode; NewDecoder = function(config) { var $ptr, _r, _r$1, config, result, 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; config = $f.config; result = $f.result; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: _r = reflect.ValueOf(config.Result); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } val = _r; if (!((val.Kind() === 22))) { return [ptrType$2.nil, errors.New("result must be a pointer")]; } _r$1 = val.Elem(); /* */ $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; if (!val.CanAddr()) { return [ptrType$2.nil, errors.New("result must be addressable (a pointer)")]; } if (!(config.Metadata === ptrType$1.nil)) { if (config.Metadata.Keys === sliceType.nil) { config.Metadata.Keys = $makeSlice(sliceType, 0); } if (config.Metadata.Unused === sliceType.nil) { config.Metadata.Unused = $makeSlice(sliceType, 0); } } if (config.TagName === "") { config.TagName = "mapstructure"; } result = new Decoder.ptr(config); return [result, $ifaceNil]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: NewDecoder }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.config = config; $f.result = result; $f.val = val; $f.$s = $s; $f.$r = $r; return $f; }; $pkg.NewDecoder = NewDecoder; Decoder.ptr.prototype.Decode = function(raw) { var $ptr, _arg, _arg$1, _r, _r$1, _r$2, d, raw, $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; d = $f.d; raw = $f.raw; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: d = this; _arg = raw; _r = reflect.ValueOf(d.config.Result); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _r$1 = _r.Elem(); /* */ $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 = d.decode("", _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; } return _r$2; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Decoder.ptr.prototype.Decode }; } $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.d = d; $f.raw = raw; $f.$s = $s; $f.$r = $r; return $f; }; Decoder.prototype.Decode = function(raw) { return this.$val.Decode(raw); }; Decoder.ptr.prototype.decode = function(name, data, val) { var $ptr, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tuple, d, data, dataKind, dataVal, err, err$1, name, 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$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _tuple = $f._tuple; d = $f.d; data = $f.data; dataKind = $f.dataKind; dataVal = $f.dataVal; err = $f.err; err$1 = $f.err$1; name = $f.name; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: d = this; val = val; if ($interfaceIsEqual(data, $ifaceNil)) { return $ifaceNil; } _r = reflect.ValueOf(data); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } dataVal = _r; /* */ if (!dataVal.IsValid()) { $s = 2; continue; } /* */ $s = 3; continue; /* if (!dataVal.IsValid()) { */ case 2: _r$1 = reflect.Zero(val.Type()); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } $r = val.Set(_r$1); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } return $ifaceNil; /* } */ case 3: /* */ if (!(d.config.DecodeHook === $throwNilPointerError)) { $s = 6; continue; } /* */ $s = 7; continue; /* if (!(d.config.DecodeHook === $throwNilPointerError)) { */ case 6: err = $ifaceNil; _r$2 = d.config.DecodeHook(getKind(dataVal), getKind(val), data); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } _tuple = _r$2; data = _tuple[0]; err = _tuple[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } /* } */ case 7: err$1 = $ifaceNil; dataKind = getKind(val); _ref = dataKind; /* */ if (_ref === 1) { $s = 9; continue; } /* */ if (_ref === 20) { $s = 10; continue; } /* */ if (_ref === 24) { $s = 11; continue; } /* */ if (_ref === 2) { $s = 12; continue; } /* */ if (_ref === 7) { $s = 13; continue; } /* */ if (_ref === 13) { $s = 14; continue; } /* */ if (_ref === 25) { $s = 15; continue; } /* */ if (_ref === 21) { $s = 16; continue; } /* */ if (_ref === 22) { $s = 17; continue; } /* */ if (_ref === 23) { $s = 18; continue; } /* */ $s = 19; continue; /* if (_ref === 1) { */ case 9: _r$3 = d.decodeBool(name, data, val); /* */ $s = 21; case 21: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } err$1 = _r$3; $s = 20; continue; /* } else if (_ref === 20) { */ case 10: _r$4 = d.decodeBasic(name, data, val); /* */ $s = 22; case 22: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } err$1 = _r$4; $s = 20; continue; /* } else if (_ref === 24) { */ case 11: _r$5 = d.decodeString(name, data, val); /* */ $s = 23; case 23: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } err$1 = _r$5; $s = 20; continue; /* } else if (_ref === 2) { */ case 12: _r$6 = d.decodeInt(name, data, val); /* */ $s = 24; case 24: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } err$1 = _r$6; $s = 20; continue; /* } else if (_ref === 7) { */ case 13: _r$7 = d.decodeUint(name, data, val); /* */ $s = 25; case 25: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } err$1 = _r$7; $s = 20; continue; /* } else if (_ref === 13) { */ case 14: _r$8 = d.decodeFloat(name, data, val); /* */ $s = 26; case 26: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } err$1 = _r$8; $s = 20; continue; /* } else if (_ref === 25) { */ case 15: _r$9 = d.decodeStruct(name, data, val); /* */ $s = 27; case 27: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } err$1 = _r$9; $s = 20; continue; /* } else if (_ref === 21) { */ case 16: _r$10 = d.decodeMap(name, data, val); /* */ $s = 28; case 28: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } err$1 = _r$10; $s = 20; continue; /* } else if (_ref === 22) { */ case 17: _r$11 = d.decodePtr(name, data, val); /* */ $s = 29; case 29: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } err$1 = _r$11; $s = 20; continue; /* } else if (_ref === 23) { */ case 18: _r$12 = d.decodeSlice(name, data, val); /* */ $s = 30; case 30: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } err$1 = _r$12; $s = 20; continue; /* } else { */ case 19: _r$13 = fmt.Errorf("%s: unsupported type: %s", new sliceType$2([new $String(name), new reflect.Kind(dataKind)])); /* */ $s = 31; case 31: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } return _r$13; /* } */ case 20: if (!(d.config.Metadata === ptrType$1.nil) && !(name === "")) { d.config.Metadata.Keys = $append(d.config.Metadata.Keys, name); } return err$1; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Decoder.ptr.prototype.decode }; } $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$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.d = d; $f.data = data; $f.dataKind = dataKind; $f.dataVal = dataVal; $f.err = err; $f.err$1 = err$1; $f.name = name; $f.val = val; $f.$s = $s; $f.$r = $r; return $f; }; Decoder.prototype.decode = function(name, data, val) { return this.$val.decode(name, data, val); }; Decoder.ptr.prototype.decodeBasic = function(name, data, val) { var $ptr, _r, _r$1, _r$2, d, data, dataVal, dataValType, name, 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; d = $f.d; data = $f.data; dataVal = $f.dataVal; dataValType = $f.dataValType; name = $f.name; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: d = this; val = val; _r = reflect.ValueOf(data); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } dataVal = _r; dataValType = dataVal.Type(); _r$1 = dataValType.AssignableTo(val.Type()); /* */ $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 = fmt.Errorf("'%s' expected type '%s', got '%s'", new sliceType$2([new $String(name), val.Type(), dataValType])); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } return _r$2; /* } */ case 3: $r = val.Set(dataVal); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } return $ifaceNil; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Decoder.ptr.prototype.decodeBasic }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.d = d; $f.data = data; $f.dataVal = dataVal; $f.dataValType = dataValType; $f.name = name; $f.val = val; $f.$s = $s; $f.$r = $r; return $f; }; Decoder.prototype.decodeBasic = function(name, data, val) { return this.$val.decodeBasic(name, data, val); }; Decoder.ptr.prototype.decodeString = function(name, data, val) { var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _r$5, converted, d, data, dataKind, dataType, dataVal, elemKind, name, 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; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; converted = $f.converted; d = $f.d; data = $f.data; dataKind = $f.dataKind; dataType = $f.dataType; dataVal = $f.dataVal; elemKind = $f.elemKind; name = $f.name; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: d = this; val = val; _r = reflect.ValueOf(data); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } dataVal = _r; dataKind = getKind(dataVal); converted = true; /* */ if (dataKind === 24) { $s = 2; continue; } /* */ if ((dataKind === 1) && d.config.WeaklyTypedInput) { $s = 3; continue; } /* */ if ((dataKind === 2) && d.config.WeaklyTypedInput) { $s = 4; continue; } /* */ if ((dataKind === 7) && d.config.WeaklyTypedInput) { $s = 5; continue; } /* */ if ((dataKind === 13) && d.config.WeaklyTypedInput) { $s = 6; continue; } /* */ if ((dataKind === 23) && d.config.WeaklyTypedInput) { $s = 7; continue; } /* */ $s = 8; continue; /* if (dataKind === 24) { */ case 2: _r$1 = dataVal.String(); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } $r = val.SetString(_r$1); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $s = 9; continue; /* } else if ((dataKind === 1) && d.config.WeaklyTypedInput) { */ case 3: if (dataVal.Bool()) { val.SetString("1"); } else { val.SetString("0"); } $s = 9; continue; /* } else if ((dataKind === 2) && d.config.WeaklyTypedInput) { */ case 4: val.SetString(strconv.FormatInt(dataVal.Int(), 10)); $s = 9; continue; /* } else if ((dataKind === 7) && d.config.WeaklyTypedInput) { */ case 5: val.SetString(strconv.FormatUint(dataVal.Uint(), 10)); $s = 9; continue; /* } else if ((dataKind === 13) && d.config.WeaklyTypedInput) { */ case 6: val.SetString(strconv.FormatFloat(dataVal.Float(), 102, -1, 64)); $s = 9; continue; /* } else if ((dataKind === 23) && d.config.WeaklyTypedInput) { */ case 7: dataType = dataVal.Type(); _r$2 = dataType.Elem(); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } _r$3 = _r$2.Kind(); /* */ $s = 13; case 13: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } elemKind = _r$3; /* */ if (elemKind === 8) { $s = 14; continue; } /* */ $s = 15; continue; /* if (elemKind === 8) { */ case 14: _r$4 = dataVal.Interface(); /* */ $s = 17; case 17: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } $r = val.SetString($bytesToString($assertType(_r$4, sliceType$1))); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $s = 16; continue; /* } else { */ case 15: converted = false; /* } */ case 16: $s = 9; continue; /* } else { */ case 8: converted = false; /* } */ case 9: /* */ if (!converted) { $s = 19; continue; } /* */ $s = 20; continue; /* if (!converted) { */ case 19: _r$5 = fmt.Errorf("'%s' expected type '%s', got unconvertible type '%s'", new sliceType$2([new $String(name), val.Type(), dataVal.Type()])); /* */ $s = 21; case 21: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } return _r$5; /* } */ case 20: return $ifaceNil; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Decoder.ptr.prototype.decodeString }; } $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.converted = converted; $f.d = d; $f.data = data; $f.dataKind = dataKind; $f.dataType = dataType; $f.dataVal = dataVal; $f.elemKind = elemKind; $f.name = name; $f.val = val; $f.$s = $s; $f.$r = $r; return $f; }; Decoder.prototype.decodeString = function(name, data, val) { return this.$val.decodeString(name, data, val); }; Decoder.ptr.prototype.decodeInt = function(name, data, val) { var $ptr, _arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, d, data, dataKind, dataVal, err, i, name, val, 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; _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; d = $f.d; data = $f.data; dataKind = $f.dataKind; dataVal = $f.dataVal; err = $f.err; i = $f.i; name = $f.name; val = $f.val; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: d = this; val = val; _r = reflect.ValueOf(data); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } dataVal = _r; dataKind = getKind(dataVal); /* */ if (dataKind === 2) { $s = 2; continue; } /* */ if (dataKind === 7) { $s = 3; continue; } /* */ if (dataKind === 13) { $s = 4; continue; } /* */ if ((dataKind === 1) && d.config.WeaklyTypedInput) { $s = 5; continue; } /* */ if ((dataKind === 24) && d.config.WeaklyTypedInput) { $s = 6; continue; } /* */ $s = 7; continue; /* if (dataKind === 2) { */ case 2: val.SetInt(dataVal.Int()); $s = 8; continue; /* } else if (dataKind === 7) { */ case 3: val.SetInt((x = dataVal.Uint(), new $Int64(x.$high, x.$low))); $s = 8; continue; /* } else if (dataKind === 13) { */ case 4: val.SetInt(new $Int64(0, dataVal.Float())); $s = 8; continue; /* } else if ((dataKind === 1) && d.config.WeaklyTypedInput) { */ case 5: if (dataVal.Bool()) { val.SetInt(new $Int64(0, 1)); } else { val.SetInt(new $Int64(0, 0)); } $s = 8; continue; /* } else if ((dataKind === 24) && d.config.WeaklyTypedInput) { */ case 6: _r$1 = dataVal.String(); /* */ $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$2 = val.Type().Bits(); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } _arg$1 = _r$2; _r$3 = strconv.ParseInt(_arg, 0, _arg$1); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } _tuple = _r$3; i = _tuple[0]; err = _tuple[1]; /* */ if ($interfaceIsEqual(err, $ifaceNil)) { $s = 12; continue; } /* */ $s = 13; continue; /* if ($interfaceIsEqual(err, $ifaceNil)) { */ case 12: val.SetInt(i); $s = 14; continue; /* } else { */ case 13: _r$4 = fmt.Errorf("cannot parse '%s' as int: %s", new sliceType$2([new $String(name), err])); /* */ $s = 15; case 15: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } return _r$4; /* } */ case 14: $s = 8; continue; /* } else { */ case 7: _r$5 = fmt.Errorf("'%s' expected type '%s', got unconvertible type '%s'", new sliceType$2([new $String(name), val.Type(), dataVal.Type()])); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } return _r$5; /* } */ case 8: return $ifaceNil; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Decoder.ptr.prototype.decodeInt }; } $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.d = d; $f.data = data; $f.dataKind = dataKind; $f.dataVal = dataVal; $f.err = err; $f.i = i; $f.name = name; $f.val = val; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; }; Decoder.prototype.decodeInt = function(name, data, val) { return this.$val.decodeInt(name, data, val); }; Decoder.ptr.prototype.decodeUint = function(name, data, val) { var $ptr, _arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, d, data, dataKind, dataVal, err, i, name, val, 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; _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; d = $f.d; data = $f.data; dataKind = $f.dataKind; dataVal = $f.dataVal; err = $f.err; i = $f.i; name = $f.name; val = $f.val; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: d = this; val = val; _r = reflect.ValueOf(data); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } dataVal = _r; dataKind = getKind(dataVal); /* */ if (dataKind === 2) { $s = 2; continue; } /* */ if (dataKind === 7) { $s = 3; continue; } /* */ if (dataKind === 13) { $s = 4; continue; } /* */ if ((dataKind === 1) && d.config.WeaklyTypedInput) { $s = 5; continue; } /* */ if ((dataKind === 24) && d.config.WeaklyTypedInput) { $s = 6; continue; } /* */ $s = 7; continue; /* if (dataKind === 2) { */ case 2: val.SetUint((x = dataVal.Int(), new $Uint64(x.$high, x.$low))); $s = 8; continue; /* } else if (dataKind === 7) { */ case 3: val.SetUint(dataVal.Uint()); $s = 8; continue; /* } else if (dataKind === 13) { */ case 4: val.SetUint(new $Uint64(0, dataVal.Float())); $s = 8; continue; /* } else if ((dataKind === 1) && d.config.WeaklyTypedInput) { */ case 5: if (dataVal.Bool()) { val.SetUint(new $Uint64(0, 1)); } else { val.SetUint(new $Uint64(0, 0)); } $s = 8; continue; /* } else if ((dataKind === 24) && d.config.WeaklyTypedInput) { */ case 6: _r$1 = dataVal.String(); /* */ $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$2 = val.Type().Bits(); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } _arg$1 = _r$2; _r$3 = strconv.ParseUint(_arg, 0, _arg$1); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } _tuple = _r$3; i = _tuple[0]; err = _tuple[1]; /* */ if ($interfaceIsEqual(err, $ifaceNil)) { $s = 12; continue; } /* */ $s = 13; continue; /* if ($interfaceIsEqual(err, $ifaceNil)) { */ case 12: val.SetUint(i); $s = 14; continue; /* } else { */ case 13: _r$4 = fmt.Errorf("cannot parse '%s' as uint: %s", new sliceType$2([new $String(name), err])); /* */ $s = 15; case 15: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } return _r$4; /* } */ case 14: $s = 8; continue; /* } else { */ case 7: _r$5 = fmt.Errorf("'%s' expected type '%s', got unconvertible type '%s'", new sliceType$2([new $String(name), val.Type(), dataVal.Type()])); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } return _r$5; /* } */ case 8: return $ifaceNil; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Decoder.ptr.prototype.decodeUint }; } $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.d = d; $f.data = data; $f.dataKind = dataKind; $f.dataVal = dataVal; $f.err = err; $f.i = i; $f.name = name; $f.val = val; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; }; Decoder.prototype.decodeUint = function(name, data, val) { return this.$val.decodeUint(name, data, val); }; Decoder.ptr.prototype.decodeBool = function(name, data, val) { var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, b, d, data, dataKind, dataVal, err, name, val, 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; _tuple = $f._tuple; b = $f.b; d = $f.d; data = $f.data; dataKind = $f.dataKind; dataVal = $f.dataVal; err = $f.err; name = $f.name; val = $f.val; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: d = this; val = val; _r = reflect.ValueOf(data); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } dataVal = _r; dataKind = getKind(dataVal); /* */ if (dataKind === 1) { $s = 2; continue; } /* */ if ((dataKind === 2) && d.config.WeaklyTypedInput) { $s = 3; continue; } /* */ if ((dataKind === 7) && d.config.WeaklyTypedInput) { $s = 4; continue; } /* */ if ((dataKind === 13) && d.config.WeaklyTypedInput) { $s = 5; continue; } /* */ if ((dataKind === 24) && d.config.WeaklyTypedInput) { $s = 6; continue; } /* */ $s = 7; continue; /* if (dataKind === 1) { */ case 2: val.SetBool(dataVal.Bool()); $s = 8; continue; /* } else if ((dataKind === 2) && d.config.WeaklyTypedInput) { */ case 3: val.SetBool(!((x = dataVal.Int(), (x.$high === 0 && x.$low === 0)))); $s = 8; continue; /* } else if ((dataKind === 7) && d.config.WeaklyTypedInput) { */ case 4: val.SetBool(!((x$1 = dataVal.Uint(), (x$1.$high === 0 && x$1.$low === 0)))); $s = 8; continue; /* } else if ((dataKind === 13) && d.config.WeaklyTypedInput) { */ case 5: val.SetBool(!((dataVal.Float() === 0))); $s = 8; continue; /* } else if ((dataKind === 24) && d.config.WeaklyTypedInput) { */ case 6: _r$1 = dataVal.String(); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } _r$2 = strconv.ParseBool(_r$1); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } _tuple = _r$2; b = _tuple[0]; err = _tuple[1]; /* */ if ($interfaceIsEqual(err, $ifaceNil)) { $s = 11; continue; } _r$3 = dataVal.String(); /* */ $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 === "") { $s = 12; continue; } /* */ $s = 13; continue; /* if ($interfaceIsEqual(err, $ifaceNil)) { */ case 11: val.SetBool(b); $s = 14; continue; /* } else if (_r$3 === "") { */ case 12: val.SetBool(false); $s = 14; continue; /* } else { */ case 13: _r$4 = fmt.Errorf("cannot parse '%s' as bool: %s", new sliceType$2([new $String(name), err])); /* */ $s = 16; case 16: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } return _r$4; /* } */ case 14: $s = 8; continue; /* } else { */ case 7: _r$5 = fmt.Errorf("'%s' expected type '%s', got unconvertible type '%s'", new sliceType$2([new $String(name), val.Type(), dataVal.Type()])); /* */ $s = 17; case 17: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } return _r$5; /* } */ case 8: return $ifaceNil; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Decoder.ptr.prototype.decodeBool }; } $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.b = b; $f.d = d; $f.data = data; $f.dataKind = dataKind; $f.dataVal = dataVal; $f.err = err; $f.name = name; $f.val = val; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f; }; Decoder.prototype.decodeBool = function(name, data, val) { return this.$val.decodeBool(name, data, val); }; Decoder.ptr.prototype.decodeFloat = function(name, data, val) { var $ptr, _arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, d, data, dataKind, dataVal, err, f, name, val, $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; d = $f.d; data = $f.data; dataKind = $f.dataKind; dataVal = $f.dataVal; err = $f.err; f = $f.f; name = $f.name; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: d = this; val = val; _r = reflect.ValueOf(data); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } dataVal = _r; dataKind = getKind(dataVal); /* */ if (dataKind === 2) { $s = 2; continue; } /* */ if (dataKind === 7) { $s = 3; continue; } /* */ if (dataKind === 13) { $s = 4; continue; } /* */ if ((dataKind === 1) && d.config.WeaklyTypedInput) { $s = 5; continue; } /* */ if ((dataKind === 24) && d.config.WeaklyTypedInput) { $s = 6; continue; } /* */ $s = 7; continue; /* if (dataKind === 2) { */ case 2: val.SetFloat($flatten64(dataVal.Int())); $s = 8; continue; /* } else if (dataKind === 7) { */ case 3: val.SetFloat($flatten64(dataVal.Uint())); $s = 8; continue; /* } else if (dataKind === 13) { */ case 4: val.SetFloat(dataVal.Float()); $s = 8; continue; /* } else if ((dataKind === 1) && d.config.WeaklyTypedInput) { */ case 5: if (dataVal.Bool()) { val.SetFloat(1); } else { val.SetFloat(0); } $s = 8; continue; /* } else if ((dataKind === 24) && d.config.WeaklyTypedInput) { */ case 6: _r$1 = dataVal.String(); /* */ $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$2 = val.Type().Bits(); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } _arg$1 = _r$2; _r$3 = strconv.ParseFloat(_arg, _arg$1); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } _tuple = _r$3; f = _tuple[0]; err = _tuple[1]; /* */ if ($interfaceIsEqual(err, $ifaceNil)) { $s = 12; continue; } /* */ $s = 13; continue; /* if ($interfaceIsEqual(err, $ifaceNil)) { */ case 12: val.SetFloat(f); $s = 14; continue; /* } else { */ case 13: _r$4 = fmt.Errorf("cannot parse '%s' as float: %s", new sliceType$2([new $String(name), err])); /* */ $s = 15; case 15: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } return _r$4; /* } */ case 14: $s = 8; continue; /* } else { */ case 7: _r$5 = fmt.Errorf("'%s' expected type '%s', got unconvertible type '%s'", new sliceType$2([new $String(name), val.Type(), dataVal.Type()])); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } return _r$5; /* } */ case 8: return $ifaceNil; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Decoder.ptr.prototype.decodeFloat }; } $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.d = d; $f.data = data; $f.dataKind = dataKind; $f.dataVal = dataVal; $f.err = err; $f.f = f; $f.name = name; $f.val = val; $f.$s = $s; $f.$r = $r; return $f; }; Decoder.prototype.decodeFloat = function(name, data, val) { return this.$val.decodeFloat(name, data, val); }; Decoder.ptr.prototype.decodeMap = function(name, data, val) { var $ptr, _arg, _arg$1, _arg$2, _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$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, currentKey, currentVal, d, data, dataVal, err, err$1, errors$1, fieldName, k, mapType, name, v, val, valElemType, valKeyType, valMap, valType, $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$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$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; currentKey = $f.currentKey; currentVal = $f.currentVal; d = $f.d; data = $f.data; dataVal = $f.dataVal; err = $f.err; err$1 = $f.err$1; errors$1 = $f.errors$1; fieldName = $f.fieldName; k = $f.k; mapType = $f.mapType; name = $f.name; v = $f.v; val = $f.val; valElemType = $f.valElemType; valKeyType = $f.valKeyType; valMap = $f.valMap; valType = $f.valType; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: d = this; val = val; valType = val.Type(); _r = valType.Key(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } valKeyType = _r; _r$1 = valType.Elem(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } valElemType = _r$1; _r$2 = reflect.MapOf(valKeyType, valElemType); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } mapType = _r$2; _r$3 = reflect.MakeMap(mapType); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } valMap = _r$3; _r$4 = reflect.ValueOf(data); /* */ $s = 5; case 5: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } _r$5 = reflect.Indirect(_r$4); /* */ $s = 6; case 6: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } dataVal = _r$5; /* */ if (!((dataVal.Kind() === 21))) { $s = 7; continue; } /* */ $s = 8; continue; /* if (!((dataVal.Kind() === 21))) { */ case 7: /* */ if (d.config.WeaklyTypedInput && ((dataVal.Kind() === 23) || (dataVal.Kind() === 17)) && (dataVal.Len() === 0)) { $s = 9; continue; } /* */ $s = 10; continue; /* if (d.config.WeaklyTypedInput && ((dataVal.Kind() === 23) || (dataVal.Kind() === 17)) && (dataVal.Len() === 0)) { */ case 9: $r = val.Set(valMap); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } return $ifaceNil; $s = 11; continue; /* } else { */ case 10: _r$6 = fmt.Errorf("'%s' expected a map, got '%s'", new sliceType$2([new $String(name), new reflect.Kind(dataVal.Kind())])); /* */ $s = 13; case 13: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } return _r$6; /* } */ case 11: /* } */ case 8: errors$1 = $makeSlice(sliceType, 0); _r$7 = dataVal.MapKeys(); /* */ $s = 14; case 14: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } _ref = _r$7; _i = 0; /* while (true) { */ case 15: /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 16; continue; } k = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]); _r$8 = fmt.Sprintf("%s[%s]", new sliceType$2([new $String(name), new k.constructor.elem(k)])); /* */ $s = 17; case 17: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } fieldName = _r$8; _r$9 = reflect.New(valKeyType); /* */ $s = 18; case 18: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } _r$10 = reflect.Indirect(_r$9); /* */ $s = 19; case 19: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } currentKey = _r$10; _arg = fieldName; _r$11 = k.Interface(); /* */ $s = 20; case 20: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } _arg$1 = _r$11; _arg$2 = currentKey; _r$12 = d.decode(_arg, _arg$1, _arg$2); /* */ $s = 21; case 21: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } err = _r$12; /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 22; continue; } /* */ $s = 23; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 22: _r$13 = appendErrors(errors$1, err); /* */ $s = 24; case 24: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } errors$1 = _r$13; _i++; /* continue; */ $s = 15; continue; /* } */ case 23: _r$14 = dataVal.MapIndex(k); /* */ $s = 25; case 25: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } _r$15 = _r$14.Interface(); /* */ $s = 26; case 26: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } v = _r$15; _r$16 = reflect.New(valElemType); /* */ $s = 27; case 27: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } _r$17 = reflect.Indirect(_r$16); /* */ $s = 28; case 28: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } currentVal = _r$17; _r$18 = d.decode(fieldName, v, currentVal); /* */ $s = 29; case 29: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; } err$1 = _r$18; /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 30; continue; } /* */ $s = 31; continue; /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 30: _r$19 = appendErrors(errors$1, err$1); /* */ $s = 32; case 32: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; } errors$1 = _r$19; _i++; /* continue; */ $s = 15; continue; /* } */ case 31: $r = valMap.SetMapIndex(currentKey, currentVal); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } _i++; /* } */ $s = 15; continue; case 16: $r = val.Set(valMap); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } if (errors$1.$length > 0) { return new Error.ptr(errors$1); } return $ifaceNil; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Decoder.ptr.prototype.decodeMap }; } $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$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$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.currentKey = currentKey; $f.currentVal = currentVal; $f.d = d; $f.data = data; $f.dataVal = dataVal; $f.err = err; $f.err$1 = err$1; $f.errors$1 = errors$1; $f.fieldName = fieldName; $f.k = k; $f.mapType = mapType; $f.name = name; $f.v = v; $f.val = val; $f.valElemType = valElemType; $f.valKeyType = valKeyType; $f.valMap = valMap; $f.valType = valType; $f.$s = $s; $f.$r = $r; return $f; }; Decoder.prototype.decodeMap = function(name, data, val) { return this.$val.decodeMap(name, data, val); }; Decoder.ptr.prototype.decodePtr = function(name, data, val) { var $ptr, _arg, _arg$1, _arg$2, _r, _r$1, _r$2, _r$3, d, data, err, name, realVal, val, valElemType, valType, $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; d = $f.d; data = $f.data; err = $f.err; name = $f.name; realVal = $f.realVal; val = $f.val; valElemType = $f.valElemType; valType = $f.valType; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: d = this; val = val; valType = val.Type(); _r = valType.Elem(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } valElemType = _r; _r$1 = reflect.New(valElemType); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } realVal = _r$1; _arg = name; _arg$1 = data; _r$2 = reflect.Indirect(realVal); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } _arg$2 = _r$2; _r$3 = d.decode(_arg, _arg$1, _arg$2); /* */ $s = 4; case 4: 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 = 5; continue; } /* */ $s = 6; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 5: return err; /* } */ case 6: $r = val.Set(realVal); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } return $ifaceNil; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Decoder.ptr.prototype.decodePtr }; } $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.d = d; $f.data = data; $f.err = err; $f.name = name; $f.realVal = realVal; $f.val = val; $f.valElemType = valElemType; $f.valType = valType; $f.$s = $s; $f.$r = $r; return $f; }; Decoder.prototype.decodePtr = function(name, data, val) { return this.$val.decodePtr(name, data, val); }; Decoder.ptr.prototype.decodeSlice = function(name, data, val) { 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, currentData, currentField, d, data, dataVal, dataValKind, err, errors$1, fieldName, i, name, sliceType$3, val, valElemType, valSlice, valType, $s, $r; /* */ $s = 0; var $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; currentData = $f.currentData; currentField = $f.currentField; d = $f.d; data = $f.data; dataVal = $f.dataVal; dataValKind = $f.dataValKind; err = $f.err; errors$1 = $f.errors$1; fieldName = $f.fieldName; i = $f.i; name = $f.name; sliceType$3 = $f.sliceType$3; val = $f.val; valElemType = $f.valElemType; valSlice = $f.valSlice; valType = $f.valType; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: d = this; val = val; _r = reflect.ValueOf(data); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _r$1 = reflect.Indirect(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } dataVal = _r$1; dataValKind = dataVal.Kind(); valType = val.Type(); _r$2 = valType.Elem(); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } valElemType = _r$2; sliceType$3 = reflect.SliceOf(valElemType); /* */ if (!((dataValKind === 17)) && !((dataValKind === 23))) { $s = 4; continue; } /* */ $s = 5; continue; /* if (!((dataValKind === 17)) && !((dataValKind === 23))) { */ case 4: /* */ if (d.config.WeaklyTypedInput && (dataVal.Kind() === 21) && (dataVal.Len() === 0)) { $s = 6; continue; } /* */ $s = 7; continue; /* if (d.config.WeaklyTypedInput && (dataVal.Kind() === 21) && (dataVal.Len() === 0)) { */ case 6: _r$3 = reflect.MakeSlice(sliceType$3, 0, 0); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } $r = val.Set(_r$3); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } return $ifaceNil; $s = 8; continue; /* } else { */ case 7: _r$4 = fmt.Errorf("'%s': source data must be an array or slice, got %s", new sliceType$2([new $String(name), new reflect.Kind(dataValKind)])); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } return _r$4; /* } */ case 8: /* } */ case 5: _r$5 = reflect.MakeSlice(sliceType$3, dataVal.Len(), dataVal.Len()); /* */ $s = 12; case 12: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } valSlice = _r$5; errors$1 = $makeSlice(sliceType, 0); i = 0; /* while (true) { */ case 13: /* if (!(i < dataVal.Len())) { break; } */ if(!(i < dataVal.Len())) { $s = 14; continue; } _r$6 = dataVal.Index(i); /* */ $s = 15; case 15: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } _r$7 = _r$6.Interface(); /* */ $s = 16; case 16: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } currentData = _r$7; _r$8 = valSlice.Index(i); /* */ $s = 17; case 17: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } currentField = _r$8; _r$9 = fmt.Sprintf("%s[%d]", new sliceType$2([new $String(name), new $Int(i)])); /* */ $s = 18; case 18: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } fieldName = _r$9; _r$10 = d.decode(fieldName, currentData, currentField); /* */ $s = 19; case 19: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } err = _r$10; /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 20; continue; } /* */ $s = 21; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 20: _r$11 = appendErrors(errors$1, err); /* */ $s = 22; case 22: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } errors$1 = _r$11; /* } */ case 21: i = i + (1) >> 0; /* } */ $s = 13; continue; case 14: $r = val.Set(valSlice); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } if (errors$1.$length > 0) { return new Error.ptr(errors$1); } return $ifaceNil; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Decoder.ptr.prototype.decodeSlice }; } $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.currentData = currentData; $f.currentField = currentField; $f.d = d; $f.data = data; $f.dataVal = dataVal; $f.dataValKind = dataValKind; $f.err = err; $f.errors$1 = errors$1; $f.fieldName = fieldName; $f.i = i; $f.name = name; $f.sliceType$3 = sliceType$3; $f.val = val; $f.valElemType = valElemType; $f.valSlice = valSlice; $f.valType = valType; $f.$s = $s; $f.$r = $r; return $f; }; Decoder.prototype.decodeSlice = function(name, data, val) { return this.$val.decodeSlice(name, data, val); }; Decoder.ptr.prototype.decodeStruct = function(name, data, val) { var $ptr, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _entry, _entry$1, _entry$2, _entry$3, _i, _i$1, _i$2, _i$3, _i$4, _i$5, _key, _key$1, _key$2, _keys, _keys$1, _keys$2, _keys$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$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _ref$5, _tuple, d, data, dataVal, dataValKey, dataValKey$1, dataValKeys, dataValKeysUnused, dataValKind, dataValType, err, err$1, errors$1, field, fieldKind, fieldName, fieldType, fieldType$1, fields, i, key, keys, kind, mK, name, ok, rawKey, rawKey$1, rawMapKey, rawMapVal, squash, structType$1, structVal, structs, tag, tagParts, tagValue, val, 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; _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; _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; _i$2 = $f._i$2; _i$3 = $f._i$3; _i$4 = $f._i$4; _i$5 = $f._i$5; _key = $f._key; _key$1 = $f._key$1; _key$2 = $f._key$2; _keys = $f._keys; _keys$1 = $f._keys$1; _keys$2 = $f._keys$2; _keys$3 = $f._keys$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$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; _tuple = $f._tuple; d = $f.d; data = $f.data; dataVal = $f.dataVal; dataValKey = $f.dataValKey; dataValKey$1 = $f.dataValKey$1; dataValKeys = $f.dataValKeys; dataValKeysUnused = $f.dataValKeysUnused; dataValKind = $f.dataValKind; dataValType = $f.dataValType; err = $f.err; err$1 = $f.err$1; errors$1 = $f.errors$1; field = $f.field; fieldKind = $f.fieldKind; fieldName = $f.fieldName; fieldType = $f.fieldType; fieldType$1 = $f.fieldType$1; fields = $f.fields; i = $f.i; key = $f.key; keys = $f.keys; kind = $f.kind; mK = $f.mK; name = $f.name; ok = $f.ok; rawKey = $f.rawKey; rawKey$1 = $f.rawKey$1; rawMapKey = $f.rawMapKey; rawMapVal = $f.rawMapVal; squash = $f.squash; structType$1 = $f.structType$1; structVal = $f.structVal; structs = $f.structs; tag = $f.tag; tagParts = $f.tagParts; tagValue = $f.tagValue; val = $f.val; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: d = this; val = val; _r = reflect.ValueOf(data); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _r$1 = reflect.Indirect(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } dataVal = _r$1; dataValKind = dataVal.Kind(); /* */ if (!((dataValKind === 21))) { $s = 3; continue; } /* */ $s = 4; continue; /* if (!((dataValKind === 21))) { */ case 3: _r$2 = fmt.Errorf("'%s' expected a map, got '%s'", new sliceType$2([new $String(name), new reflect.Kind(dataValKind)])); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } return _r$2; /* } */ case 4: dataValType = dataVal.Type(); _r$3 = dataValType.Key(); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } _r$4 = _r$3.Kind(); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } kind = _r$4; /* */ if (!((kind === 24)) && !((kind === 20))) { $s = 8; continue; } /* */ $s = 9; continue; /* if (!((kind === 24)) && !((kind === 20))) { */ case 8: _arg = new $String(name); _r$5 = dataValType.Key(); /* */ $s = 10; case 10: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } _r$6 = _r$5.Kind(); /* */ $s = 11; case 11: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } _arg$1 = new reflect.Kind(_r$6); _r$7 = fmt.Errorf("'%s' needs a map with string keys, has '%s' keys", new sliceType$2([_arg, _arg$1])); /* */ $s = 12; case 12: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } return _r$7; /* } */ case 9: dataValKeys = new $Map(); dataValKeysUnused = new $Map(); _r$8 = dataVal.MapKeys(); /* */ $s = 13; case 13: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } _ref = _r$8; _i = 0; /* while (true) { */ case 14: /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 15; continue; } dataValKey = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]); _key = $clone(dataValKey, reflect.Value); (dataValKeys || $throwRuntimeError("assignment to entry in nil map"))[(new reflect.Value(_key)).$key()] = { k: _key, v: new structType.ptr() }; _r$9 = dataValKey.Interface(); /* */ $s = 16; case 16: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } _key$1 = _r$9; (dataValKeysUnused || $throwRuntimeError("assignment to entry in nil map"))[_key$1.$key()] = { k: _key$1, v: new structType.ptr() }; _i++; /* } */ $s = 14; continue; case 15: errors$1 = $makeSlice(sliceType, 0); structs = $makeSlice(sliceType$3, 1, 5); (0 >= structs.$length ? $throwRuntimeError("index out of range") : structs.$array[structs.$offset + 0] = val); fields = new $Map(); /* while (true) { */ case 17: /* if (!(structs.$length > 0)) { break; } */ if(!(structs.$length > 0)) { $s = 18; continue; } structVal = (0 >= structs.$length ? $throwRuntimeError("index out of range") : structs.$array[structs.$offset + 0]); structs = $subslice(structs, 1); structType$1 = structVal.Type(); i = 0; /* while (true) { */ case 19: _r$10 = structType$1.NumField(); /* */ $s = 21; case 21: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } /* if (!(i < _r$10)) { break; } */ if(!(i < _r$10)) { $s = 20; continue; } fieldType = [fieldType]; _r$11 = structType$1.Field(i); /* */ $s = 22; case 22: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } fieldType[0] = $clone(_r$11, reflect.StructField); /* */ if (fieldType[0].Anonymous) { $s = 23; continue; } /* */ $s = 24; continue; /* if (fieldType[0].Anonymous) { */ case 23: _r$12 = fieldType[0].Type.Kind(); /* */ $s = 25; case 25: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } fieldKind = _r$12; /* */ if (!((fieldKind === 25))) { $s = 26; continue; } /* */ $s = 27; continue; /* if (!((fieldKind === 25))) { */ case 26: _arg$2 = errors$1; _r$13 = fmt.Errorf("%s: unsupported type: %s", new sliceType$2([new $String(fieldType[0].Name), new reflect.Kind(fieldKind)])); /* */ $s = 28; case 28: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } _arg$3 = _r$13; _r$14 = appendErrors(_arg$2, _arg$3); /* */ $s = 29; case 29: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } errors$1 = _r$14; i = i + (1) >> 0; /* continue; */ $s = 19; continue; /* } */ case 27: squash = false; tagParts = strings.Split(new reflect.StructTag(fieldType[0].Tag).Get(d.config.TagName), ","); _ref$1 = $subslice(tagParts, 1); _i$1 = 0; while (true) { if (!(_i$1 < _ref$1.$length)) { break; } tag = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? $throwRuntimeError("index out of range") : _ref$1.$array[_ref$1.$offset + _i$1]); if (tag === "squash") { squash = true; break; } _i$1++; } /* */ if (squash) { $s = 30; continue; } /* */ $s = 31; continue; /* if (squash) { */ case 30: _r$15 = val.FieldByName(fieldType[0].Name); /* */ $s = 32; case 32: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } structs = $append(structs, _r$15); i = i + (1) >> 0; /* continue; */ $s = 19; continue; /* } */ case 31: /* } */ case 24: _r$16 = structVal.Field(i); /* */ $s = 33; case 33: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } _key$2 = fieldType[0]; (fields || $throwRuntimeError("assignment to entry in nil map"))[_key$2.$key()] = { k: _key$2, v: $clone(_r$16, reflect.Value) }; i = i + (1) >> 0; /* } */ $s = 19; continue; case 20: /* } */ $s = 17; continue; case 18: _ref$2 = fields; _i$2 = 0; _keys = $keys(_ref$2); /* while (true) { */ case 34: /* if (!(_i$2 < _keys.length)) { break; } */ if(!(_i$2 < _keys.length)) { $s = 35; continue; } _entry = _ref$2[_keys[_i$2]]; if (_entry === undefined) { _i$2++; /* continue; */ $s = 34; continue; } fieldType$1 = _entry.k; field = _entry.v; fieldName = fieldType$1.Name; tagValue = new reflect.StructTag(fieldType$1.Tag).Get(d.config.TagName); tagValue = (x = strings.SplitN(tagValue, ",", 2), (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0])); if (!(tagValue === "")) { fieldName = tagValue; } _r$17 = reflect.ValueOf(new $String(fieldName)); /* */ $s = 36; case 36: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } rawMapKey = _r$17; _r$18 = dataVal.MapIndex(rawMapKey); /* */ $s = 37; case 37: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; } rawMapVal = _r$18; /* */ if (!rawMapVal.IsValid()) { $s = 38; continue; } /* */ $s = 39; continue; /* if (!rawMapVal.IsValid()) { */ case 38: _ref$3 = dataValKeys; _i$3 = 0; _keys$1 = $keys(_ref$3); /* while (true) { */ case 40: /* if (!(_i$3 < _keys$1.length)) { break; } */ if(!(_i$3 < _keys$1.length)) { $s = 41; continue; } _entry$1 = _ref$3[_keys$1[_i$3]]; if (_entry$1 === undefined) { _i$3++; /* continue; */ $s = 40; continue; } dataValKey$1 = _entry$1.k; _r$19 = dataValKey$1.Interface(); /* */ $s = 42; case 42: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; } _tuple = $assertType(_r$19, $String, true); mK = _tuple[0]; ok = _tuple[1]; /* */ if (!ok) { $s = 43; continue; } /* */ $s = 44; continue; /* if (!ok) { */ case 43: _i$3++; /* continue; */ $s = 40; continue; /* } */ case 44: /* */ if (strings.EqualFold(mK, fieldName)) { $s = 45; continue; } /* */ $s = 46; continue; /* if (strings.EqualFold(mK, fieldName)) { */ case 45: rawMapKey = dataValKey$1; _r$20 = dataVal.MapIndex(dataValKey$1); /* */ $s = 47; case 47: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; } rawMapVal = _r$20; /* break; */ $s = 41; continue; /* } */ case 46: _i$3++; /* } */ $s = 40; continue; case 41: if (!rawMapVal.IsValid()) { _i$2++; /* continue; */ $s = 34; continue; } /* } */ case 39: _r$21 = rawMapKey.Interface(); /* */ $s = 48; case 48: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; } delete dataValKeysUnused[_r$21.$key()]; if (!field.IsValid()) { $panic(new $String("field is not valid")); } /* */ if (!field.CanSet()) { $s = 49; continue; } /* */ $s = 50; continue; /* if (!field.CanSet()) { */ case 49: _i$2++; /* continue; */ $s = 34; continue; /* } */ case 50: /* */ if (!(name === "")) { $s = 51; continue; } /* */ $s = 52; continue; /* if (!(name === "")) { */ case 51: _r$22 = fmt.Sprintf("%s.%s", new sliceType$2([new $String(name), new $String(fieldName)])); /* */ $s = 53; case 53: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } fieldName = _r$22; /* } */ case 52: _arg$4 = fieldName; _r$23 = rawMapVal.Interface(); /* */ $s = 54; case 54: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } _arg$5 = _r$23; _arg$6 = field; _r$24 = d.decode(_arg$4, _arg$5, _arg$6); /* */ $s = 55; case 55: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } err = _r$24; /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 56; continue; } /* */ $s = 57; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 56: _r$25 = appendErrors(errors$1, err); /* */ $s = 58; case 58: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; } errors$1 = _r$25; /* } */ case 57: _i$2++; /* } */ $s = 34; continue; case 35: /* */ if (d.config.ErrorUnused && $keys(dataValKeysUnused).length > 0) { $s = 59; continue; } /* */ $s = 60; continue; /* if (d.config.ErrorUnused && $keys(dataValKeysUnused).length > 0) { */ case 59: keys = $makeSlice(sliceType, 0, $keys(dataValKeysUnused).length); _ref$4 = dataValKeysUnused; _i$4 = 0; _keys$2 = $keys(_ref$4); while (true) { if (!(_i$4 < _keys$2.length)) { break; } _entry$2 = _ref$4[_keys$2[_i$4]]; if (_entry$2 === undefined) { _i$4++; continue; } rawKey = _entry$2.k; keys = $append(keys, $assertType(rawKey, $String)); _i$4++; } $r = sort.Strings(keys); /* */ $s = 61; case 61: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } _r$26 = fmt.Errorf("'%s' has invalid keys: %s", new sliceType$2([new $String(name), new $String(strings.Join(keys, ", "))])); /* */ $s = 62; case 62: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; } err$1 = _r$26; _r$27 = appendErrors(errors$1, err$1); /* */ $s = 63; case 63: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; } errors$1 = _r$27; /* } */ case 60: if (errors$1.$length > 0) { return new Error.ptr(errors$1); } /* */ if (!(d.config.Metadata === ptrType$1.nil)) { $s = 64; continue; } /* */ $s = 65; continue; /* if (!(d.config.Metadata === ptrType$1.nil)) { */ case 64: _ref$5 = dataValKeysUnused; _i$5 = 0; _keys$3 = $keys(_ref$5); /* while (true) { */ case 66: /* if (!(_i$5 < _keys$3.length)) { break; } */ if(!(_i$5 < _keys$3.length)) { $s = 67; continue; } _entry$3 = _ref$5[_keys$3[_i$5]]; if (_entry$3 === undefined) { _i$5++; /* continue; */ $s = 66; continue; } rawKey$1 = _entry$3.k; key = $assertType(rawKey$1, $String); /* */ if (!(name === "")) { $s = 68; continue; } /* */ $s = 69; continue; /* if (!(name === "")) { */ case 68: _r$28 = fmt.Sprintf("%s.%s", new sliceType$2([new $String(name), new $String(key)])); /* */ $s = 70; case 70: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; } key = _r$28; /* } */ case 69: d.config.Metadata.Unused = $append(d.config.Metadata.Unused, key); _i$5++; /* } */ $s = 66; continue; case 67: /* } */ case 65: return $ifaceNil; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Decoder.ptr.prototype.decodeStruct }; } $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._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._i$2 = _i$2; $f._i$3 = _i$3; $f._i$4 = _i$4; $f._i$5 = _i$5; $f._key = _key; $f._key$1 = _key$1; $f._key$2 = _key$2; $f._keys = _keys; $f._keys$1 = _keys$1; $f._keys$2 = _keys$2; $f._keys$3 = _keys$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$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._tuple = _tuple; $f.d = d; $f.data = data; $f.dataVal = dataVal; $f.dataValKey = dataValKey; $f.dataValKey$1 = dataValKey$1; $f.dataValKeys = dataValKeys; $f.dataValKeysUnused = dataValKeysUnused; $f.dataValKind = dataValKind; $f.dataValType = dataValType; $f.err = err; $f.err$1 = err$1; $f.errors$1 = errors$1; $f.field = field; $f.fieldKind = fieldKind; $f.fieldName = fieldName; $f.fieldType = fieldType; $f.fieldType$1 = fieldType$1; $f.fields = fields; $f.i = i; $f.key = key; $f.keys = keys; $f.kind = kind; $f.mK = mK; $f.name = name; $f.ok = ok; $f.rawKey = rawKey; $f.rawKey$1 = rawKey$1; $f.rawMapKey = rawMapKey; $f.rawMapVal = rawMapVal; $f.squash = squash; $f.structType$1 = structType$1; $f.structVal = structVal; $f.structs = structs; $f.tag = tag; $f.tagParts = tagParts; $f.tagValue = tagValue; $f.val = val; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; }; Decoder.prototype.decodeStruct = function(name, data, val) { return this.$val.decodeStruct(name, data, val); }; getKind = function(val) { var $ptr, kind, val; val = val; kind = val.Kind(); if (kind >= 2 && kind <= 6) { return 2; } else if (kind >= 7 && kind <= 11) { return 7; } else if (kind >= 13 && kind <= 14) { return 13; } else { return kind; } }; ptrType.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; ptrType$2.methods = [{prop: "Decode", name: "Decode", pkg: "", typ: $funcType([$emptyInterface], [$error], false)}, {prop: "decode", name: "decode", pkg: "github.com/mitchellh/mapstructure", typ: $funcType([$String, $emptyInterface, reflect.Value], [$error], false)}, {prop: "decodeBasic", name: "decodeBasic", pkg: "github.com/mitchellh/mapstructure", typ: $funcType([$String, $emptyInterface, reflect.Value], [$error], false)}, {prop: "decodeString", name: "decodeString", pkg: "github.com/mitchellh/mapstructure", typ: $funcType([$String, $emptyInterface, reflect.Value], [$error], false)}, {prop: "decodeInt", name: "decodeInt", pkg: "github.com/mitchellh/mapstructure", typ: $funcType([$String, $emptyInterface, reflect.Value], [$error], false)}, {prop: "decodeUint", name: "decodeUint", pkg: "github.com/mitchellh/mapstructure", typ: $funcType([$String, $emptyInterface, reflect.Value], [$error], false)}, {prop: "decodeBool", name: "decodeBool", pkg: "github.com/mitchellh/mapstructure", typ: $funcType([$String, $emptyInterface, reflect.Value], [$error], false)}, {prop: "decodeFloat", name: "decodeFloat", pkg: "github.com/mitchellh/mapstructure", typ: $funcType([$String, $emptyInterface, reflect.Value], [$error], false)}, {prop: "decodeMap", name: "decodeMap", pkg: "github.com/mitchellh/mapstructure", typ: $funcType([$String, $emptyInterface, reflect.Value], [$error], false)}, {prop: "decodePtr", name: "decodePtr", pkg: "github.com/mitchellh/mapstructure", typ: $funcType([$String, $emptyInterface, reflect.Value], [$error], false)}, {prop: "decodeSlice", name: "decodeSlice", pkg: "github.com/mitchellh/mapstructure", typ: $funcType([$String, $emptyInterface, reflect.Value], [$error], false)}, {prop: "decodeStruct", name: "decodeStruct", pkg: "github.com/mitchellh/mapstructure", typ: $funcType([$String, $emptyInterface, reflect.Value], [$error], false)}]; Error.init([{prop: "Errors", name: "Errors", pkg: "", typ: sliceType, tag: ""}]); DecodeHookFunc.init([reflect.Kind, reflect.Kind, $emptyInterface], [$emptyInterface, $error], false); DecoderConfig.init([{prop: "DecodeHook", name: "DecodeHook", pkg: "", typ: DecodeHookFunc, tag: ""}, {prop: "ErrorUnused", name: "ErrorUnused", pkg: "", typ: $Bool, tag: ""}, {prop: "WeaklyTypedInput", name: "WeaklyTypedInput", pkg: "", typ: $Bool, tag: ""}, {prop: "Metadata", name: "Metadata", pkg: "", typ: ptrType$1, tag: ""}, {prop: "Result", name: "Result", pkg: "", typ: $emptyInterface, tag: ""}, {prop: "TagName", name: "TagName", pkg: "", typ: $String, tag: ""}]); Decoder.init([{prop: "config", name: "config", pkg: "github.com/mitchellh/mapstructure", typ: ptrType$3, tag: ""}]); Metadata.init([{prop: "Keys", name: "Keys", pkg: "", typ: sliceType, tag: ""}, {prop: "Unused", name: "Unused", pkg: "", 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 = 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 = 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["ypk/assert"] = (function() { var $pkg = {}, $init, fmt, sliceType, For; fmt = $packages["fmt"]; sliceType = $sliceType($emptyInterface); For = function(cond, code, msg) { var $ptr, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, code, cond, e, msg, $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; _arg$5 = $f._arg$5; _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; code = $f.code; cond = $f.cond; e = $f.e; msg = $f.msg; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: _r = fmt.Sprint(new sliceType([new $Int(code)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } e = _r; /* */ if (!cond) { $s = 2; continue; } /* */ $s = 3; continue; /* if (!cond) { */ case 2: /* */ if ((code >= 20) && (code < 40)) { $s = 4; continue; } /* */ if ((code >= 40) && (code < 60)) { $s = 5; continue; } /* */ if ((code >= 60) && (code < 80)) { $s = 6; continue; } /* */ $s = 7; continue; /* if ((code >= 20) && (code < 40)) { */ case 4: _arg = new $Int(code); _r$1 = fmt.Sprint(msg); /* */ $s = 9; case 9: 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.Sprintln(new sliceType([_arg, new $String("precondition violated"), _arg$1])); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } e = _r$2; $s = 8; continue; /* } else if ((code >= 40) && (code < 60)) { */ case 5: _arg$2 = new $Int(code); _r$3 = fmt.Sprint(msg); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } _arg$3 = new $String(_r$3); _r$4 = fmt.Sprintln(new sliceType([_arg$2, new $String("subcondition violated"), _arg$3])); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } e = _r$4; $s = 8; continue; /* } else if ((code >= 60) && (code < 80)) { */ case 6: _arg$4 = new $Int(code); _r$5 = fmt.Sprint(msg); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } _arg$5 = new $String(_r$5); _r$6 = fmt.Sprintln(new sliceType([_arg$4, new $String("postcondition violated"), _arg$5])); /* */ $s = 14; case 14: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } e = _r$6; $s = 8; continue; /* } else { */ case 7: /* } */ case 8: $panic(new $String(e)); /* } */ case 3: /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: For }; } $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._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.code = code; $f.cond = cond; $f.e = e; $f.msg = msg; $f.$s = $s; $f.$r = $r; return $f; }; $pkg.For = For; $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; } /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; }; $pkg.$init = $init; return $pkg; })(); $packages["sim3/bus"] = (function() { var $pkg = {}, $init, js, mapstructure, assert, Msg, ptrType, sliceType, ptrType$1, funcType, Process, Init; js = $packages["github.com/gopherjs/gopherjs/js"]; mapstructure = $packages["github.com/mitchellh/mapstructure"]; assert = $packages["ypk/assert"]; Msg = $pkg.Msg = $newType(0, $kindStruct, "bus.Msg", "Msg", "sim3/bus", function(Typ_) { this.$val = this; if (arguments.length === 0) { this.Typ = ""; return; } this.Typ = Typ_; }); ptrType = $ptrType(Msg); sliceType = $sliceType($emptyInterface); ptrType$1 = $ptrType(js.Object); funcType = $funcType([ptrType$1], [], false); Process = function(m) { var $ptr, m, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; m = $f.m; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: $r = assert.For(!(m === ptrType.nil), 20, new sliceType([])); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $global.postMessage($externalize(m, ptrType)); /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Process }; } $f.$ptr = $ptr; $f.m = m; $f.$s = $s; $f.$r = $r; return $f; }; $pkg.Process = Process; Init = function(handler) { var $ptr, handler; $global.onmessage = $externalize((function $b(oEvent) { var $ptr, _r, data, err, m, oEvent, $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; err = $f.err; m = $f.m; oEvent = $f.oEvent; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: data = $internalize(oEvent.data, $emptyInterface); m = new Msg.ptr(""); _r = mapstructure.Decode(data, m); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } err = _r; $r = assert.For($interfaceIsEqual(err, $ifaceNil), 40, new sliceType([])); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = handler(m); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r = _r; $f.data = data; $f.err = err; $f.m = m; $f.oEvent = oEvent; $f.$s = $s; $f.$r = $r; return $f; }), funcType); }; $pkg.Init = Init; Msg.init([{prop: "Typ", name: "Typ", pkg: "", 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 = mapstructure.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = assert.$init(); /* */ $s = 3; case 3: 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["sim3/tri"] = (function() { var $pkg = {}, $init, Trit, False, True, Nil, Not, Impl, CNot, Or, And, Ord, Sum3, Sum3r, CarryS, CarrySr, CarryM; Trit = $pkg.Trit = $newType(0, $kindStruct, "tri.Trit", "Trit", "sim3/tri", function(N_, T_) { this.$val = this; if (arguments.length === 0) { this.N = false; this.T = false; return; } this.N = N_; this.T = T_; }); Trit.ptr.prototype.String = function() { var $ptr, t; t = $clone(this, Trit); if (t.N) { return "%nil"; } else if (t.T) { return "%true"; } else { return "%false"; } }; Trit.prototype.String = function() { return this.$val.String(); }; False = function(t) { var $ptr, t; t = $clone(t, Trit); return $equal(t, $pkg.FALSE, Trit); }; $pkg.False = False; True = function(t) { var $ptr, t; t = $clone(t, Trit); return $equal(t, $pkg.TRUE, Trit); }; $pkg.True = True; Nil = function(t) { var $ptr, t; t = $clone(t, Trit); return $equal(t, $pkg.NIL, Trit); }; $pkg.Nil = Nil; Not = function(t) { var $ptr, t; t = $clone(t, Trit); if ($equal(t, $pkg.TRUE, Trit)) { return $pkg.FALSE; } else if ($equal(t, $pkg.FALSE, Trit)) { return $pkg.TRUE; } else if ($equal(t, $pkg.NIL, Trit)) { return $pkg.NIL; } $panic(new $Int(0)); }; $pkg.Not = Not; Impl = function(p, q) { var $ptr, p, q; q = $clone(q, Trit); p = $clone(p, Trit); if (False(p) && False(q)) { return $pkg.TRUE; } else if (False(p) && True(q)) { return $pkg.TRUE; } else if (True(p) && False(q)) { return $pkg.FALSE; } else if (True(p) && True(q)) { return $pkg.TRUE; } else if (True(p) && Nil(q)) { return $pkg.NIL; } else if (Nil(p) && False(q)) { return $pkg.NIL; } else if (False(p) && Nil(q)) { return $pkg.TRUE; } else if (Nil(p) && Nil(q)) { return $pkg.TRUE; } else if (Nil(p) && True(q)) { return $pkg.TRUE; } $panic(new $Int(0)); }; $pkg.Impl = Impl; CNot = function(t) { var $ptr, t; t = $clone(t, Trit); if ($equal(t, $pkg.TRUE, Trit)) { return $pkg.FALSE; } else if ($equal(t, $pkg.FALSE, Trit)) { return $pkg.NIL; } else { return $pkg.TRUE; } }; $pkg.CNot = CNot; Or = function(p, q) { var $ptr, p, q; q = $clone(q, Trit); p = $clone(p, Trit); return Impl(Impl(p, q), q); }; $pkg.Or = Or; And = function(p, q) { var $ptr, p, q; q = $clone(q, Trit); p = $clone(p, Trit); return Not(Or(Not(p), Not(q))); }; $pkg.And = And; Ord = function(t) { var $ptr, t; t = $clone(t, Trit); if ($equal(t, $pkg.FALSE, Trit)) { return -1; } else if ($equal(t, $pkg.NIL, Trit)) { return 0; } else if ($equal(t, $pkg.TRUE, Trit)) { return 1; } $panic(new $Int(0)); }; $pkg.Ord = Ord; Sum3 = function(p, q) { var $ptr, _ref, p, q; q = $clone(q, Trit); p = $clone(p, Trit); _ref = Ord(p); if (_ref === -1) { return q; } else if (_ref === 0) { if (False(q)) { return $pkg.NIL; } else if (Nil(q)) { return $pkg.TRUE; } else { return $pkg.FALSE; } } else if (_ref === 1) { if (False(q)) { return $pkg.TRUE; } else if (Nil(q)) { return $pkg.FALSE; } else { return $pkg.NIL; } } else { $panic(new $Int(0)); } }; $pkg.Sum3 = Sum3; Sum3r = function(p, q) { var $ptr, p, q; q = $clone(q, Trit); p = $clone(p, Trit); return CNot(CNot(Sum3(p, q))); }; $pkg.Sum3r = Sum3r; CarryS = function(p, q) { var $ptr, _ref, p, q; q = $clone(q, Trit); p = $clone(p, Trit); _ref = Ord(p); if (_ref === -1) { return $pkg.FALSE; } else if (_ref === 0) { if (True(q)) { return $pkg.NIL; } else { return $pkg.FALSE; } } else if (_ref === 1) { if (False(q)) { return $pkg.FALSE; } else { return $pkg.NIL; } } else { $panic(new $Int(0)); } }; $pkg.CarryS = CarryS; CarrySr = function(p, q) { var $ptr, p, q; q = $clone(q, Trit); p = $clone(p, Trit); if (False(p) && False(q)) { return $pkg.FALSE; } else if (True(p) && True(q)) { return $pkg.TRUE; } else { return $pkg.NIL; } }; $pkg.CarrySr = CarrySr; CarryM = function(p, q) { var $ptr, p, q; q = $clone(q, Trit); p = $clone(p, Trit); if (True(p) && True(q)) { return $pkg.NIL; } else { return $pkg.FALSE; } }; $pkg.CarryM = CarryM; Trit.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; Trit.init([{prop: "N", name: "N", pkg: "", typ: $Bool, tag: ""}, {prop: "T", name: "T", pkg: "", 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: $pkg.TRUE = new Trit.ptr(false, true); $pkg.FALSE = new Trit.ptr(false, false); $pkg.NIL = new Trit.ptr(true, false); /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; }; $pkg.$init = $init; return $pkg; })(); $packages["sim3/ncl"] = (function() { var $pkg = {}, $init, tri, time, PinCode, Pin, In, Out, Point, Element, Compound, Trigger, ptrType, sliceType, mapType, sliceType$1, sliceType$2, slow, Step; tri = $packages["sim3/tri"]; time = $packages["time"]; PinCode = $pkg.PinCode = $newType(4, $kindInt, "ncl.PinCode", "PinCode", "sim3/ncl", null); Pin = $pkg.Pin = $newType(8, $kindInterface, "ncl.Pin", "Pin", "sim3/ncl", null); In = $pkg.In = $newType(8, $kindInterface, "ncl.In", "In", "sim3/ncl", null); Out = $pkg.Out = $newType(8, $kindInterface, "ncl.Out", "Out", "sim3/ncl", null); Point = $pkg.Point = $newType(8, $kindInterface, "ncl.Point", "Point", "sim3/ncl", null); Element = $pkg.Element = $newType(8, $kindInterface, "ncl.Element", "Element", "sim3/ncl", null); Compound = $pkg.Compound = $newType(8, $kindInterface, "ncl.Compound", "Compound", "sim3/ncl", null); Trigger = $pkg.Trigger = $newType(8, $kindInterface, "ncl.Trigger", "Trigger", "sim3/ncl", null); ptrType = $ptrType(tri.Trit); sliceType = $sliceType(Pin); mapType = $mapType(PinCode, Pin); sliceType$1 = $sliceType(mapType); sliceType$2 = $sliceType(ptrType); Step = function(obj, step) { var $ptr, do$1, obj, step, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; do$1 = $f.do$1; obj = $f.obj; step = $f.step; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: step = [step]; do$1 = (function(step) { 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: /* while (true) { */ case 1: $r = step[0](); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = time.Sleep(slow); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ $s = 1; continue; case 2: /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f.$s = $s; $f.$r = $r; return $f; }; })(step); $r = do$1(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Step }; } $f.$ptr = $ptr; $f.do$1 = do$1; $f.obj = obj; $f.step = step; $f.$s = $s; $f.$r = $r; return $f; }; $pkg.Step = Step; Pin.init([]); In.init([{prop: "Select", name: "Select", pkg: "", typ: $funcType([], [ptrType], false)}]); Out.init([{prop: "Update", name: "Update", pkg: "", typ: $funcType([ptrType], [], false)}]); Point.init([{prop: "Solder", name: "Solder", pkg: "", typ: $funcType([sliceType], [], true)}]); Element.init([{prop: "Do", name: "Do", pkg: "", typ: $funcType([], [], false)}, {prop: "Pin", name: "Pin", pkg: "", typ: $funcType([PinCode], [Pin], false)}]); Compound.init([{prop: "Do", name: "Do", pkg: "", typ: $funcType([], [], false)}, {prop: "InnerPin", name: "InnerPin", pkg: "", typ: $funcType([PinCode], [Pin], false)}, {prop: "Pin", name: "Pin", pkg: "", typ: $funcType([PinCode], [Pin], false)}, {prop: "Pins", name: "Pins", pkg: "", typ: $funcType([sliceType$1], [mapType], true)}, {prop: "Point", name: "Point", pkg: "", typ: $funcType([$String], [Point], false)}]); Trigger.init([{prop: "Value", name: "Value", pkg: "", typ: $funcType([sliceType$2], [ptrType], true)}]); $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 = tri.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = time.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } slow = new time.Duration(0, 1000000); /* */ } 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, TextUnmarshaler, sliceType; TextUnmarshaler = $pkg.TextUnmarshaler = $newType(8, $kindInterface, "encoding.TextUnmarshaler", "TextUnmarshaler", "encoding", null); sliceType = $sliceType($Uint8); 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["encoding/base64"] = (function() { var $pkg = {}, $init, bytes, io, strconv, strings, Encoding, CorruptInputError, sliceType, ptrType, arrayType$2, arrayType$4, removeNewlinesMapper, NewEncoding; bytes = $packages["bytes"]; io = $packages["io"]; strconv = $packages["strconv"]; strings = $packages["strings"]; Encoding = $pkg.Encoding = $newType(0, $kindStruct, "base64.Encoding", "Encoding", "encoding/base64", function(encode_, decodeMap_) { this.$val = this; if (arguments.length === 0) { this.encode = ""; this.decodeMap = arrayType$4.zero(); return; } this.encode = encode_; this.decodeMap = decodeMap_; }); CorruptInputError = $pkg.CorruptInputError = $newType(8, $kindInt64, "base64.CorruptInputError", "CorruptInputError", "encoding/base64", null); sliceType = $sliceType($Uint8); ptrType = $ptrType(Encoding); arrayType$2 = $arrayType($Uint8, 4); arrayType$4 = $arrayType($Uint8, 256); NewEncoding = function(encoder$1) { var $ptr, e, encoder$1, i, i$1, x, x$1, x$2; e = new Encoding.ptr(); 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") : 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") : x$1[x$2] = (i$1 << 24 >>> 24))); i$1 = i$1 + (1) >> 0; } return e; }; $pkg.NewEncoding = NewEncoding; Encoding.ptr.prototype.Encode = function(dst, src) { var $ptr, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, b0, b1, b2, b3, dst, enc, src; enc = this; if (src.$length === 0) { return; } while (true) { if (!(src.$length > 0)) { break; } _tmp = 0; _tmp$1 = 0; _tmp$2 = 0; _tmp$3 = 0; b0 = _tmp; b1 = _tmp$1; b2 = _tmp$2; b3 = _tmp$3; _ref = src.$length; if (_ref === 2) { b2 = (b2 | ((((((1 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 1]) << 2 << 24 >>> 24)) & 63) >>> 0))) >>> 0; b1 = (1 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 1]) >>> 4 << 24 >>> 24; b1 = (b1 | ((((((0 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 0]) << 4 << 24 >>> 24)) & 63) >>> 0))) >>> 0; b0 = (0 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 0]) >>> 2 << 24 >>> 24; } else if (_ref === 1) { b1 = (b1 | ((((((0 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 0]) << 4 << 24 >>> 24)) & 63) >>> 0))) >>> 0; b0 = (0 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 0]) >>> 2 << 24 >>> 24; } else { b3 = ((2 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 2]) & 63) >>> 0; b2 = (2 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 2]) >>> 6 << 24 >>> 24; b2 = (b2 | ((((((1 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 1]) << 2 << 24 >>> 24)) & 63) >>> 0))) >>> 0; b1 = (1 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 1]) >>> 4 << 24 >>> 24; b1 = (b1 | ((((((0 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 0]) << 4 << 24 >>> 24)) & 63) >>> 0))) >>> 0; b0 = (0 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 0]) >>> 2 << 24 >>> 24; } (0 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 0] = enc.encode.charCodeAt(b0)); (1 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 1] = enc.encode.charCodeAt(b1)); (2 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 2] = enc.encode.charCodeAt(b2)); (3 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 3] = enc.encode.charCodeAt(b3)); if (src.$length < 3) { (3 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 3] = 61); if (src.$length < 2) { (2 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 2] = 61); } break; } src = $subslice(src, 3); dst = $subslice(dst, 4); } }; 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, enc, n; enc = this; return (_q = ((n + 2 >> 0)) / 3, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) * 4 >> 0; }; 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, _i, _ref, _ref$1, _ref$2, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, dbuf, dlen, dst, enc, end, err, in$1, j, n, olen, src, x; n = 0; end = false; err = $ifaceNil; enc = this; olen = src.$length; while (true) { if (!(src.$length > 0 && !end)) { break; } dbuf = $clone(arrayType$2.zero(), arrayType$2); dlen = 4; _ref = dbuf; _i = 0; while (true) { if (!(_i < 4)) { break; } j = _i; if (src.$length === 0) { _tmp = n; _tmp$1 = false; _tmp$2 = new CorruptInputError(0, ((olen - src.$length >> 0) - j >> 0)); n = _tmp; end = _tmp$1; err = _tmp$2; return [n, end, err]; } in$1 = (0 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 0]); src = $subslice(src, 1); if (in$1 === 61) { _ref$1 = j; if (_ref$1 === 0 || _ref$1 === 1) { _tmp$3 = n; _tmp$4 = false; _tmp$5 = new CorruptInputError(0, ((olen - src.$length >> 0) - 1 >> 0)); n = _tmp$3; end = _tmp$4; err = _tmp$5; return [n, end, err]; } else if (_ref$1 === 2) { if (src.$length === 0) { _tmp$6 = n; _tmp$7 = false; _tmp$8 = new CorruptInputError(0, olen); n = _tmp$6; end = _tmp$7; err = _tmp$8; return [n, end, err]; } if (!(((0 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 0]) === 61))) { _tmp$9 = n; _tmp$10 = false; _tmp$11 = new CorruptInputError(0, ((olen - src.$length >> 0) - 1 >> 0)); n = _tmp$9; end = _tmp$10; err = _tmp$11; return [n, end, err]; } src = $subslice(src, 1); } if (src.$length > 0) { err = new CorruptInputError(0, (olen - src.$length >> 0)); } _tmp$12 = j; _tmp$13 = true; dlen = _tmp$12; end = _tmp$13; break; } ((j < 0 || j >= dbuf.length) ? $throwRuntimeError("index out of range") : dbuf[j] = (x = enc.decodeMap, ((in$1 < 0 || in$1 >= x.length) ? $throwRuntimeError("index out of range") : x[in$1]))); if (((j < 0 || j >= dbuf.length) ? $throwRuntimeError("index out of range") : dbuf[j]) === 255) { _tmp$14 = n; _tmp$15 = false; _tmp$16 = new CorruptInputError(0, ((olen - src.$length >> 0) - 1 >> 0)); n = _tmp$14; end = _tmp$15; err = _tmp$16; return [n, end, err]; } _i++; } _ref$2 = dlen; if (_ref$2 === 4) { (2 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 2] = ((dbuf[2] << 6 << 24 >>> 24) | dbuf[3]) >>> 0); (1 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 1] = ((dbuf[1] << 4 << 24 >>> 24) | (dbuf[2] >>> 2 << 24 >>> 24)) >>> 0); (0 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 0] = ((dbuf[0] << 2 << 24 >>> 24) | (dbuf[1] >>> 4 << 24 >>> 24)) >>> 0); } else if (_ref$2 === 3) { (1 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 1] = ((dbuf[1] << 4 << 24 >>> 24) | (dbuf[2] >>> 2 << 24 >>> 24)) >>> 0); (0 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 0] = ((dbuf[0] << 2 << 24 >>> 24) | (dbuf[1] >>> 4 << 24 >>> 24)) >>> 0); } else if (_ref$2 === 2) { (0 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 0] = ((dbuf[0] << 2 << 24 >>> 24) | (dbuf[1] >>> 4 << 24 >>> 24)) >>> 0); } dst = $subslice(dst, 3); n = n + ((dlen - 1 >> 0)) >> 0; } _tmp$17 = n; _tmp$18 = end; _tmp$19 = err; n = _tmp$17; end = _tmp$18; err = _tmp$19; 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, _r, _tuple, dst, enc, err, n, 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; _tuple = $f._tuple; dst = $f.dst; enc = $f.enc; err = $f.err; n = $f.n; src = $f.src; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: n = 0; err = $ifaceNil; enc = this; _r = bytes.Map(removeNewlinesMapper, src); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } src = _r; _tuple = enc.decode(dst, src); n = _tuple[0]; err = _tuple[2]; return [n, err]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Encoding.ptr.prototype.Decode }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.dst = dst; $f.enc = enc; $f.err = err; $f.n = n; $f.src = src; $f.$s = $s; $f.$r = $r; return $f; }; Encoding.prototype.Decode = function(dst, src) { return this.$val.Decode(dst, src); }; Encoding.ptr.prototype.DecodeString = function(s) { var $ptr, _r, _tuple, dbuf, enc, err, 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; dbuf = $f.dbuf; enc = $f.enc; err = $f.err; n = $f.n; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: enc = this; _r = strings.Map(removeNewlinesMapper, s); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } s = _r; 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]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Encoding.ptr.prototype.DecodeString }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.dbuf = dbuf; $f.enc = enc; $f.err = err; $f.n = n; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; }; Encoding.prototype.DecodeString = function(s) { return this.$val.DecodeString(s); }; Encoding.ptr.prototype.DecodedLen = function(n) { var $ptr, _q, enc, n; enc = this; return (_q = n / 4, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) * 3 >> 0; }; Encoding.prototype.DecodedLen = function(n) { return this.$val.DecodedLen(n); }; 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([{prop: "encode", name: "encode", pkg: "encoding/base64", typ: $String, tag: ""}, {prop: "decodeMap", name: "decodeMap", pkg: "encoding/base64", typ: arrayType$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 = 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 = strconv.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = strings.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $pkg.StdEncoding = NewEncoding("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"); $pkg.URLEncoding = NewEncoding("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"); removeNewlinesMapper = (function(r) { var $ptr, r; if ((r === 13) || (r === 10)) { return -1; } return r; }); /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; }; $pkg.$init = $init; return $pkg; })(); $packages["regexp/syntax"] = (function() { var $pkg = {}, $init, bytes, sort, strconv, strings, unicode, utf8, patchList, frag, compiler, Error, ErrorCode, Flags, parser, charGroup, ranges, Prog, InstOp, EmptyOp, Inst, Regexp, Op, sliceType, sliceType$1, sliceType$2, sliceType$3, ptrType, sliceType$4, arrayType, arrayType$1, ptrType$1, ptrType$2, ptrType$3, ptrType$4, ptrType$5, ptrType$6, sliceType$5, ptrType$7, anyRuneNotNL, anyRune, anyTable, code1, code2, code3, perlGroup, code4, code5, code6, code7, code8, code9, code10, code11, code12, code13, code14, code15, code16, code17, posixGroup, instOpNames, _map, _key, _map$1, _key$1, Compile, minFoldRune, repeatIsValid, cleanAlt, literalRegexp, Parse, isValidCaptureName, isCharClass, matchRune, mergeCharClass, unicodeTable, cleanClass, appendLiteral, appendRange, appendFoldedRange, appendClass, appendFoldedClass, appendNegatedClass, appendTable, appendNegatedTable, negateClass, checkUTF8, nextRune, isalnum, unhex, EmptyOpContext, IsWordChar, wordRune, bw, dumpProg, u32, dumpInst, writeRegexp, escape, simplify1; bytes = $packages["bytes"]; sort = $packages["sort"]; strconv = $packages["strconv"]; strings = $packages["strings"]; unicode = $packages["unicode"]; utf8 = $packages["unicode/utf8"]; patchList = $pkg.patchList = $newType(4, $kindUint32, "syntax.patchList", "patchList", "regexp/syntax", null); frag = $pkg.frag = $newType(0, $kindStruct, "syntax.frag", "frag", "regexp/syntax", function(i_, out_) { this.$val = this; if (arguments.length === 0) { this.i = 0; this.out = 0; return; } this.i = i_; this.out = out_; }); compiler = $pkg.compiler = $newType(0, $kindStruct, "syntax.compiler", "compiler", "regexp/syntax", function(p_) { this.$val = this; if (arguments.length === 0) { this.p = ptrType$3.nil; return; } this.p = p_; }); Error = $pkg.Error = $newType(0, $kindStruct, "syntax.Error", "Error", "regexp/syntax", function(Code_, Expr_) { this.$val = this; if (arguments.length === 0) { this.Code = ""; this.Expr = ""; return; } this.Code = Code_; this.Expr = Expr_; }); ErrorCode = $pkg.ErrorCode = $newType(8, $kindString, "syntax.ErrorCode", "ErrorCode", "regexp/syntax", null); Flags = $pkg.Flags = $newType(2, $kindUint16, "syntax.Flags", "Flags", "regexp/syntax", null); parser = $pkg.parser = $newType(0, $kindStruct, "syntax.parser", "parser", "regexp/syntax", function(flags_, stack_, free_, numCap_, wholeRegexp_, tmpClass_) { this.$val = this; if (arguments.length === 0) { this.flags = 0; this.stack = sliceType$4.nil; this.free = ptrType.nil; this.numCap = 0; this.wholeRegexp = ""; this.tmpClass = sliceType.nil; return; } this.flags = flags_; this.stack = stack_; this.free = free_; this.numCap = numCap_; this.wholeRegexp = wholeRegexp_; this.tmpClass = tmpClass_; }); charGroup = $pkg.charGroup = $newType(0, $kindStruct, "syntax.charGroup", "charGroup", "regexp/syntax", function(sign_, class$1_) { this.$val = this; if (arguments.length === 0) { this.sign = 0; this.class$1 = sliceType.nil; return; } this.sign = sign_; this.class$1 = class$1_; }); ranges = $pkg.ranges = $newType(0, $kindStruct, "syntax.ranges", "ranges", "regexp/syntax", function(p_) { this.$val = this; if (arguments.length === 0) { this.p = ptrType$1.nil; return; } this.p = p_; }); Prog = $pkg.Prog = $newType(0, $kindStruct, "syntax.Prog", "Prog", "regexp/syntax", function(Inst_, Start_, NumCap_) { this.$val = this; if (arguments.length === 0) { this.Inst = sliceType$5.nil; this.Start = 0; this.NumCap = 0; return; } this.Inst = Inst_; this.Start = Start_; this.NumCap = NumCap_; }); InstOp = $pkg.InstOp = $newType(1, $kindUint8, "syntax.InstOp", "InstOp", "regexp/syntax", null); EmptyOp = $pkg.EmptyOp = $newType(1, $kindUint8, "syntax.EmptyOp", "EmptyOp", "regexp/syntax", null); Inst = $pkg.Inst = $newType(0, $kindStruct, "syntax.Inst", "Inst", "regexp/syntax", function(Op_, Out_, Arg_, Rune_) { this.$val = this; if (arguments.length === 0) { this.Op = 0; this.Out = 0; this.Arg = 0; this.Rune = sliceType.nil; return; } this.Op = Op_; this.Out = Out_; this.Arg = Arg_; this.Rune = Rune_; }); Regexp = $pkg.Regexp = $newType(0, $kindStruct, "syntax.Regexp", "Regexp", "regexp/syntax", function(Op_, Flags_, Sub_, Sub0_, Rune_, Rune0_, Min_, Max_, Cap_, Name_) { this.$val = this; if (arguments.length === 0) { this.Op = 0; this.Flags = 0; this.Sub = sliceType$4.nil; this.Sub0 = arrayType.zero(); this.Rune = sliceType.nil; this.Rune0 = arrayType$1.zero(); this.Min = 0; this.Max = 0; this.Cap = 0; this.Name = ""; return; } this.Op = Op_; this.Flags = Flags_; this.Sub = Sub_; this.Sub0 = Sub0_; this.Rune = Rune_; this.Rune0 = Rune0_; this.Min = Min_; this.Max = Max_; this.Cap = Cap_; this.Name = Name_; }); Op = $pkg.Op = $newType(1, $kindUint8, "syntax.Op", "Op", "regexp/syntax", null); sliceType = $sliceType($Int32); sliceType$1 = $sliceType(unicode.Range16); sliceType$2 = $sliceType(unicode.Range32); sliceType$3 = $sliceType($String); ptrType = $ptrType(Regexp); sliceType$4 = $sliceType(ptrType); arrayType = $arrayType(ptrType, 1); arrayType$1 = $arrayType($Int32, 2); ptrType$1 = $ptrType(sliceType); ptrType$2 = $ptrType(unicode.RangeTable); ptrType$3 = $ptrType(Prog); ptrType$4 = $ptrType(compiler); ptrType$5 = $ptrType(Error); ptrType$6 = $ptrType(parser); sliceType$5 = $sliceType(Inst); ptrType$7 = $ptrType(Inst); patchList.prototype.next = function(p) { var $ptr, i, l, p, x, x$1; l = this.$val; i = (x = p.Inst, x$1 = l >>> 1 >>> 0, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1])); if (((l & 1) >>> 0) === 0) { return (i.Out >>> 0); } return (i.Arg >>> 0); }; $ptrType(patchList).prototype.next = function(p) { return new patchList(this.$get()).next(p); }; patchList.prototype.patch = function(p, val) { var $ptr, i, l, p, val, x, x$1; l = this.$val; while (true) { if (!(!((l === 0)))) { break; } i = (x = p.Inst, x$1 = l >>> 1 >>> 0, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1])); if (((l & 1) >>> 0) === 0) { l = (i.Out >>> 0); i.Out = val; } else { l = (i.Arg >>> 0); i.Arg = val; } } }; $ptrType(patchList).prototype.patch = function(p, val) { return new patchList(this.$get()).patch(p, val); }; patchList.prototype.append = function(p, l2) { var $ptr, i, l1, l2, last, next, p, x, x$1; l1 = this.$val; if (l1 === 0) { return l2; } if (l2 === 0) { return l1; } last = l1; while (true) { next = new patchList(last).next(p); if (next === 0) { break; } last = next; } i = (x = p.Inst, x$1 = last >>> 1 >>> 0, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1])); if (((last & 1) >>> 0) === 0) { i.Out = (l2 >>> 0); } else { i.Arg = (l2 >>> 0); } return l1; }; $ptrType(patchList).prototype.append = function(p, l2) { return new patchList(this.$get()).append(p, l2); }; Compile = function(re) { var $ptr, c, f, re; c = $clone(new compiler.ptr(), compiler); c.init(); f = $clone(c.compile(re), frag); new patchList(f.out).patch(c.p, c.inst(4).i); c.p.Start = (f.i >> 0); return [c.p, $ifaceNil]; }; $pkg.Compile = Compile; compiler.ptr.prototype.init = function() { var $ptr, c; c = this; c.p = new Prog.ptr(); c.p.NumCap = 2; c.inst(5); }; compiler.prototype.init = function() { return this.$val.init(); }; compiler.ptr.prototype.compile = function(re) { var $ptr, _i, _i$1, _i$2, _ref, _ref$1, _ref$2, _ref$3, bra, c, f, f$1, f$2, f1, i, j, ket, re, sub, sub$1, sub$2, x, x$1, x$2, x$3; c = this; _ref = re.Op; if (_ref === 1) { return c.fail(); } else if (_ref === 2) { return c.nop(); } else if (_ref === 3) { if (re.Rune.$length === 0) { return c.nop(); } f = $clone(new frag.ptr(), frag); _ref$1 = re.Rune; _i = 0; while (true) { if (!(_i < _ref$1.$length)) { break; } j = _i; f1 = $clone(c.rune($subslice(re.Rune, j, (j + 1 >> 0)), re.Flags), frag); if (j === 0) { $copy(f, f1, frag); } else { $copy(f, c.cat(f, f1), frag); } _i++; } return f; } else if (_ref === 4) { return c.rune(re.Rune, re.Flags); } else if (_ref === 5) { return c.rune(anyRuneNotNL, 0); } else if (_ref === 6) { return c.rune(anyRune, 0); } else if (_ref === 7) { return c.empty(1); } else if (_ref === 8) { return c.empty(2); } else if (_ref === 9) { return c.empty(4); } else if (_ref === 10) { return c.empty(8); } else if (_ref === 11) { return c.empty(16); } else if (_ref === 12) { return c.empty(32); } else if (_ref === 13) { bra = $clone(c.cap(((re.Cap << 1 >> 0) >>> 0)), frag); sub = $clone(c.compile((x = re.Sub, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0]))), frag); ket = $clone(c.cap((((re.Cap << 1 >> 0) | 1) >>> 0)), frag); return c.cat(c.cat(bra, sub), ket); } else if (_ref === 14) { return c.star(c.compile((x$1 = re.Sub, (0 >= x$1.$length ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + 0]))), !((((re.Flags & 32) >>> 0) === 0))); } else if (_ref === 15) { return c.plus(c.compile((x$2 = re.Sub, (0 >= x$2.$length ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + 0]))), !((((re.Flags & 32) >>> 0) === 0))); } else if (_ref === 16) { return c.quest(c.compile((x$3 = re.Sub, (0 >= x$3.$length ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + 0]))), !((((re.Flags & 32) >>> 0) === 0))); } else if (_ref === 18) { if (re.Sub.$length === 0) { return c.nop(); } f$1 = $clone(new frag.ptr(), frag); _ref$2 = re.Sub; _i$1 = 0; while (true) { if (!(_i$1 < _ref$2.$length)) { break; } i = _i$1; sub$1 = ((_i$1 < 0 || _i$1 >= _ref$2.$length) ? $throwRuntimeError("index out of range") : _ref$2.$array[_ref$2.$offset + _i$1]); if (i === 0) { $copy(f$1, c.compile(sub$1), frag); } else { $copy(f$1, c.cat(f$1, c.compile(sub$1)), frag); } _i$1++; } return f$1; } else if (_ref === 19) { f$2 = $clone(new frag.ptr(), frag); _ref$3 = re.Sub; _i$2 = 0; while (true) { if (!(_i$2 < _ref$3.$length)) { break; } sub$2 = ((_i$2 < 0 || _i$2 >= _ref$3.$length) ? $throwRuntimeError("index out of range") : _ref$3.$array[_ref$3.$offset + _i$2]); $copy(f$2, c.alt(f$2, c.compile(sub$2)), frag); _i$2++; } return f$2; } $panic(new $String("regexp: unhandled case in compile")); }; compiler.prototype.compile = function(re) { return this.$val.compile(re); }; compiler.ptr.prototype.inst = function(op) { var $ptr, c, f, op; c = this; f = new frag.ptr((c.p.Inst.$length >>> 0), 0); c.p.Inst = $append(c.p.Inst, new Inst.ptr(op, 0, 0, sliceType.nil)); return f; }; compiler.prototype.inst = function(op) { return this.$val.inst(op); }; compiler.ptr.prototype.nop = function() { var $ptr, c, f; c = this; f = $clone(c.inst(6), frag); f.out = ((f.i << 1 >>> 0) >>> 0); return f; }; compiler.prototype.nop = function() { return this.$val.nop(); }; compiler.ptr.prototype.fail = function() { var $ptr, c; c = this; return new frag.ptr(0, 0); }; compiler.prototype.fail = function() { return this.$val.fail(); }; compiler.ptr.prototype.cap = function(arg) { var $ptr, arg, c, f, x, x$1; c = this; f = $clone(c.inst(2), frag); f.out = ((f.i << 1 >>> 0) >>> 0); (x = c.p.Inst, x$1 = f.i, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1])).Arg = arg; if (c.p.NumCap < ((arg >> 0) + 1 >> 0)) { c.p.NumCap = (arg >> 0) + 1 >> 0; } return f; }; compiler.prototype.cap = function(arg) { return this.$val.cap(arg); }; compiler.ptr.prototype.cat = function(f1, f2) { var $ptr, c, f1, f2; c = this; f2 = $clone(f2, frag); f1 = $clone(f1, frag); if ((f1.i === 0) || (f2.i === 0)) { return new frag.ptr(0, 0); } new patchList(f1.out).patch(c.p, f2.i); return new frag.ptr(f1.i, f2.out); }; compiler.prototype.cat = function(f1, f2) { return this.$val.cat(f1, f2); }; compiler.ptr.prototype.alt = function(f1, f2) { var $ptr, c, f, f1, f2, i, x, x$1; c = this; f2 = $clone(f2, frag); f1 = $clone(f1, frag); if (f1.i === 0) { return f2; } if (f2.i === 0) { return f1; } f = $clone(c.inst(0), frag); i = (x = c.p.Inst, x$1 = f.i, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1])); i.Out = f1.i; i.Arg = f2.i; f.out = new patchList(f1.out).append(c.p, f2.out); return f; }; compiler.prototype.alt = function(f1, f2) { return this.$val.alt(f1, f2); }; compiler.ptr.prototype.quest = function(f1, nongreedy) { var $ptr, c, f, f1, i, nongreedy, x, x$1; c = this; f1 = $clone(f1, frag); f = $clone(c.inst(0), frag); i = (x = c.p.Inst, x$1 = f.i, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1])); if (nongreedy) { i.Arg = f1.i; f.out = ((f.i << 1 >>> 0) >>> 0); } else { i.Out = f1.i; f.out = ((((f.i << 1 >>> 0) | 1) >>> 0) >>> 0); } f.out = new patchList(f.out).append(c.p, f1.out); return f; }; compiler.prototype.quest = function(f1, nongreedy) { return this.$val.quest(f1, nongreedy); }; compiler.ptr.prototype.star = function(f1, nongreedy) { var $ptr, c, f, f1, i, nongreedy, x, x$1; c = this; f1 = $clone(f1, frag); f = $clone(c.inst(0), frag); i = (x = c.p.Inst, x$1 = f.i, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1])); if (nongreedy) { i.Arg = f1.i; f.out = ((f.i << 1 >>> 0) >>> 0); } else { i.Out = f1.i; f.out = ((((f.i << 1 >>> 0) | 1) >>> 0) >>> 0); } new patchList(f1.out).patch(c.p, f.i); return f; }; compiler.prototype.star = function(f1, nongreedy) { return this.$val.star(f1, nongreedy); }; compiler.ptr.prototype.plus = function(f1, nongreedy) { var $ptr, c, f1, nongreedy; c = this; f1 = $clone(f1, frag); return new frag.ptr(f1.i, c.star(f1, nongreedy).out); }; compiler.prototype.plus = function(f1, nongreedy) { return this.$val.plus(f1, nongreedy); }; compiler.ptr.prototype.empty = function(op) { var $ptr, c, f, op, x, x$1; c = this; f = $clone(c.inst(3), frag); (x = c.p.Inst, x$1 = f.i, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1])).Arg = (op >>> 0); f.out = ((f.i << 1 >>> 0) >>> 0); return f; }; compiler.prototype.empty = function(op) { return this.$val.empty(op); }; compiler.ptr.prototype.rune = function(r, flags) { var $ptr, c, f, flags, i, r, x, x$1; c = this; f = $clone(c.inst(7), frag); i = (x = c.p.Inst, x$1 = f.i, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1])); i.Rune = r; flags = (flags & (1)) >>> 0; if (!((r.$length === 1)) || (unicode.SimpleFold((0 >= r.$length ? $throwRuntimeError("index out of range") : r.$array[r.$offset + 0])) === (0 >= r.$length ? $throwRuntimeError("index out of range") : r.$array[r.$offset + 0]))) { flags = (flags & ~(1)) << 16 >>> 16; } i.Arg = (flags >>> 0); f.out = ((f.i << 1 >>> 0) >>> 0); if ((((flags & 1) >>> 0) === 0) && ((r.$length === 1) || (r.$length === 2) && ((0 >= r.$length ? $throwRuntimeError("index out of range") : r.$array[r.$offset + 0]) === (1 >= r.$length ? $throwRuntimeError("index out of range") : r.$array[r.$offset + 1])))) { i.Op = 8; } else if ((r.$length === 2) && ((0 >= r.$length ? $throwRuntimeError("index out of range") : r.$array[r.$offset + 0]) === 0) && ((1 >= r.$length ? $throwRuntimeError("index out of range") : r.$array[r.$offset + 1]) === 1114111)) { i.Op = 9; } else if ((r.$length === 4) && ((0 >= r.$length ? $throwRuntimeError("index out of range") : r.$array[r.$offset + 0]) === 0) && ((1 >= r.$length ? $throwRuntimeError("index out of range") : r.$array[r.$offset + 1]) === 9) && ((2 >= r.$length ? $throwRuntimeError("index out of range") : r.$array[r.$offset + 2]) === 11) && ((3 >= r.$length ? $throwRuntimeError("index out of range") : r.$array[r.$offset + 3]) === 1114111)) { i.Op = 10; } return f; }; compiler.prototype.rune = function(r, flags) { return this.$val.rune(r, flags); }; Error.ptr.prototype.Error = function() { var $ptr, e; e = this; return "error parsing regexp: " + new ErrorCode(e.Code).String() + ": `" + e.Expr + "`"; }; Error.prototype.Error = function() { return this.$val.Error(); }; ErrorCode.prototype.String = function() { var $ptr, e; e = this.$val; return e; }; $ptrType(ErrorCode).prototype.String = function() { return new ErrorCode(this.$get()).String(); }; parser.ptr.prototype.newRegexp = function(op) { var $ptr, op, p, re; p = this; re = p.free; if (!(re === ptrType.nil)) { p.free = re.Sub0[0]; $copy(re, new Regexp.ptr(0, 0, sliceType$4.nil, arrayType.zero(), sliceType.nil, arrayType$1.zero(), 0, 0, 0, ""), Regexp); } else { re = new Regexp.ptr(); } re.Op = op; return re; }; parser.prototype.newRegexp = function(op) { return this.$val.newRegexp(op); }; parser.ptr.prototype.reuse = function(re) { var $ptr, p, re; p = this; re.Sub0[0] = p.free; p.free = re; }; parser.prototype.reuse = function(re) { return this.$val.reuse(re); }; parser.ptr.prototype.push = function(re) { var $ptr, p, re, 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; p = this; if ((re.Op === 4) && (re.Rune.$length === 2) && ((x = re.Rune, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0])) === (x$1 = re.Rune, (1 >= x$1.$length ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + 1])))) { if (p.maybeConcat((x$16 = re.Rune, (0 >= x$16.$length ? $throwRuntimeError("index out of range") : x$16.$array[x$16.$offset + 0])), (p.flags & ~1) << 16 >>> 16)) { return ptrType.nil; } re.Op = 3; re.Rune = $subslice(re.Rune, 0, 1); re.Flags = (p.flags & ~1) << 16 >>> 16; } else if ((re.Op === 4) && (re.Rune.$length === 4) && ((x$2 = re.Rune, (0 >= x$2.$length ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + 0])) === (x$3 = re.Rune, (1 >= x$3.$length ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + 1]))) && ((x$4 = re.Rune, (2 >= x$4.$length ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + 2])) === (x$5 = re.Rune, (3 >= x$5.$length ? $throwRuntimeError("index out of range") : x$5.$array[x$5.$offset + 3]))) && (unicode.SimpleFold((x$6 = re.Rune, (0 >= x$6.$length ? $throwRuntimeError("index out of range") : x$6.$array[x$6.$offset + 0]))) === (x$7 = re.Rune, (2 >= x$7.$length ? $throwRuntimeError("index out of range") : x$7.$array[x$7.$offset + 2]))) && (unicode.SimpleFold((x$8 = re.Rune, (2 >= x$8.$length ? $throwRuntimeError("index out of range") : x$8.$array[x$8.$offset + 2]))) === (x$9 = re.Rune, (0 >= x$9.$length ? $throwRuntimeError("index out of range") : x$9.$array[x$9.$offset + 0]))) || (re.Op === 4) && (re.Rune.$length === 2) && (((x$10 = re.Rune, (0 >= x$10.$length ? $throwRuntimeError("index out of range") : x$10.$array[x$10.$offset + 0])) + 1 >> 0) === (x$11 = re.Rune, (1 >= x$11.$length ? $throwRuntimeError("index out of range") : x$11.$array[x$11.$offset + 1]))) && (unicode.SimpleFold((x$12 = re.Rune, (0 >= x$12.$length ? $throwRuntimeError("index out of range") : x$12.$array[x$12.$offset + 0]))) === (x$13 = re.Rune, (1 >= x$13.$length ? $throwRuntimeError("index out of range") : x$13.$array[x$13.$offset + 1]))) && (unicode.SimpleFold((x$14 = re.Rune, (1 >= x$14.$length ? $throwRuntimeError("index out of range") : x$14.$array[x$14.$offset + 1]))) === (x$15 = re.Rune, (0 >= x$15.$length ? $throwRuntimeError("index out of range") : x$15.$array[x$15.$offset + 0])))) { if (p.maybeConcat((x$17 = re.Rune, (0 >= x$17.$length ? $throwRuntimeError("index out of range") : x$17.$array[x$17.$offset + 0])), (p.flags | 1) >>> 0)) { return ptrType.nil; } re.Op = 3; re.Rune = $subslice(re.Rune, 0, 1); re.Flags = (p.flags | 1) >>> 0; } else { p.maybeConcat(-1, 0); } p.stack = $append(p.stack, re); return re; }; parser.prototype.push = function(re) { return this.$val.push(re); }; parser.ptr.prototype.maybeConcat = function(r, flags) { var $ptr, flags, n, p, r, re1, re2, x, x$1, x$2, x$3, x$4; p = this; n = p.stack.$length; if (n < 2) { return false; } re1 = (x = p.stack, x$1 = n - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1])); re2 = (x$2 = p.stack, x$3 = n - 2 >> 0, ((x$3 < 0 || x$3 >= x$2.$length) ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + x$3])); if (!((re1.Op === 3)) || !((re2.Op === 3)) || !((((re1.Flags & 1) >>> 0) === ((re2.Flags & 1) >>> 0)))) { return false; } re2.Rune = $appendSlice(re2.Rune, re1.Rune); if (r >= 0) { re1.Rune = $subslice(new sliceType(re1.Rune0), 0, 1); (x$4 = re1.Rune, (0 >= x$4.$length ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + 0] = r)); re1.Flags = flags; return true; } p.stack = $subslice(p.stack, 0, (n - 1 >> 0)); p.reuse(re1); return false; }; parser.prototype.maybeConcat = function(r, flags) { return this.$val.maybeConcat(r, flags); }; parser.ptr.prototype.newLiteral = function(r, flags) { var $ptr, flags, p, r, re; p = this; re = p.newRegexp(3); re.Flags = flags; if (!((((flags & 1) >>> 0) === 0))) { r = minFoldRune(r); } re.Rune0[0] = r; re.Rune = $subslice(new sliceType(re.Rune0), 0, 1); return re; }; parser.prototype.newLiteral = function(r, flags) { return this.$val.newLiteral(r, flags); }; minFoldRune = function(r) { var $ptr, min, r, r0; if (r < 65 || r > 71903) { return r; } min = r; r0 = r; r = unicode.SimpleFold(r); while (true) { if (!(!((r === r0)))) { break; } if (min > r) { min = r; } r = unicode.SimpleFold(r); } return min; }; parser.ptr.prototype.literal = function(r) { var $ptr, p, r; p = this; p.push(p.newLiteral(r, p.flags)); }; parser.prototype.literal = function(r) { return this.$val.literal(r); }; parser.ptr.prototype.op = function(op) { var $ptr, op, p, re; p = this; re = p.newRegexp(op); re.Flags = p.flags; return p.push(re); }; parser.prototype.op = function(op) { return this.$val.op(op); }; parser.ptr.prototype.repeat = function(op, min, max, before, after, lastRepeat) { var $ptr, after, before, flags, lastRepeat, max, min, n, op, p, re, sub, x, x$1, x$2, x$3, x$4; p = this; flags = p.flags; if (!((((p.flags & 64) >>> 0) === 0))) { if (after.length > 0 && (after.charCodeAt(0) === 63)) { after = after.substring(1); flags = (flags ^ (32)) << 16 >>> 16; } if (!(lastRepeat === "")) { return ["", new Error.ptr("invalid nested repetition operator", lastRepeat.substring(0, (lastRepeat.length - after.length >> 0)))]; } } n = p.stack.$length; if (n === 0) { return ["", new Error.ptr("missing argument to repetition operator", before.substring(0, (before.length - after.length >> 0)))]; } sub = (x = p.stack, x$1 = n - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1])); if (sub.Op >= 128) { return ["", new Error.ptr("missing argument to repetition operator", before.substring(0, (before.length - after.length >> 0)))]; } re = p.newRegexp(op); re.Min = min; re.Max = max; re.Flags = flags; re.Sub = $subslice(new sliceType$4(re.Sub0), 0, 1); (x$2 = re.Sub, (0 >= x$2.$length ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + 0] = sub)); (x$3 = p.stack, x$4 = n - 1 >> 0, ((x$4 < 0 || x$4 >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + x$4] = re)); if ((op === 17) && (min >= 2 || max >= 2) && !repeatIsValid(re, 1000)) { return ["", new Error.ptr("invalid repeat count", before.substring(0, (before.length - after.length >> 0)))]; } return [after, $ifaceNil]; }; parser.prototype.repeat = function(op, min, max, before, after, lastRepeat) { return this.$val.repeat(op, min, max, before, after, lastRepeat); }; repeatIsValid = function(re, n) { var $ptr, _i, _q, _ref, m, n, re, sub; if (re.Op === 17) { m = re.Max; if (m === 0) { return true; } if (m < 0) { m = re.Min; } if (m > n) { return false; } if (m > 0) { n = (_q = n / (m), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); } } _ref = re.Sub; _i = 0; while (true) { if (!(_i < _ref.$length)) { break; } sub = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]); if (!repeatIsValid(sub, n)) { return false; } _i++; } return true; }; parser.ptr.prototype.concat = function() { var $ptr, _r, _r$1, i, p, subs, 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; i = $f.i; p = $f.p; subs = $f.subs; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: p = this; p.maybeConcat(-1, 0); i = p.stack.$length; while (true) { if (!(i > 0 && (x = p.stack, x$1 = i - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1])).Op < 128)) { break; } i = i - (1) >> 0; } subs = $subslice(p.stack, i); p.stack = $subslice(p.stack, 0, i); if (subs.$length === 0) { return p.push(p.newRegexp(2)); } _r = p.collapse(subs, 18); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _r$1 = p.push(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } return _r$1; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.concat }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.i = i; $f.p = p; $f.subs = subs; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f; }; parser.prototype.concat = function() { return this.$val.concat(); }; parser.ptr.prototype.alternate = function() { var $ptr, _r, _r$1, i, p, subs, 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; i = $f.i; p = $f.p; subs = $f.subs; 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; i = p.stack.$length; while (true) { if (!(i > 0 && (x = p.stack, x$1 = i - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1])).Op < 128)) { break; } i = i - (1) >> 0; } subs = $subslice(p.stack, i); p.stack = $subslice(p.stack, 0, i); /* */ if (subs.$length > 0) { $s = 1; continue; } /* */ $s = 2; continue; /* if (subs.$length > 0) { */ case 1: $r = cleanAlt((x$2 = subs.$length - 1 >> 0, ((x$2 < 0 || x$2 >= subs.$length) ? $throwRuntimeError("index out of range") : subs.$array[subs.$offset + x$2]))); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 2: if (subs.$length === 0) { return p.push(p.newRegexp(1)); } _r = p.collapse(subs, 19); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _r$1 = p.push(_r); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } return _r$1; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.alternate }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.i = i; $f.p = p; $f.subs = subs; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f; }; parser.prototype.alternate = function() { return this.$val.alternate(); }; cleanAlt = function(re) { var $ptr, _r, _ref, re, 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; _ref = $f._ref; re = $f.re; 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: _ref = re.Op; /* */ if (_ref === 4) { $s = 1; continue; } /* */ $s = 2; continue; /* if (_ref === 4) { */ case 1: _r = cleanClass((re.$ptr_Rune || (re.$ptr_Rune = new ptrType$1(function() { return this.$target.Rune; }, function($v) { this.$target.Rune = $v; }, re)))); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } re.Rune = _r; if ((re.Rune.$length === 2) && ((x = re.Rune, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0])) === 0) && ((x$1 = re.Rune, (1 >= x$1.$length ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + 1])) === 1114111)) { re.Rune = sliceType.nil; re.Op = 6; return; } if ((re.Rune.$length === 4) && ((x$2 = re.Rune, (0 >= x$2.$length ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + 0])) === 0) && ((x$3 = re.Rune, (1 >= x$3.$length ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + 1])) === 9) && ((x$4 = re.Rune, (2 >= x$4.$length ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + 2])) === 11) && ((x$5 = re.Rune, (3 >= x$5.$length ? $throwRuntimeError("index out of range") : x$5.$array[x$5.$offset + 3])) === 1114111)) { re.Rune = sliceType.nil; re.Op = 5; return; } if ((re.Rune.$capacity - re.Rune.$length >> 0) > 100) { re.Rune = $appendSlice($subslice(new sliceType(re.Rune0), 0, 0), re.Rune); } /* } */ case 2: /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: cleanAlt }; } $f.$ptr = $ptr; $f._r = _r; $f._ref = _ref; $f.re = re; $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; }; parser.ptr.prototype.collapse = function(subs, op) { var $ptr, _i, _r, _ref, old, op, p, re, sub, subs, 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; old = $f.old; op = $f.op; p = $f.p; re = $f.re; sub = $f.sub; subs = $f.subs; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: p = this; if (subs.$length === 1) { return (0 >= subs.$length ? $throwRuntimeError("index out of range") : subs.$array[subs.$offset + 0]); } re = p.newRegexp(op); re.Sub = $subslice(new sliceType$4(re.Sub0), 0, 0); _ref = subs; _i = 0; while (true) { if (!(_i < _ref.$length)) { break; } sub = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]); if (sub.Op === op) { re.Sub = $appendSlice(re.Sub, sub.Sub); p.reuse(sub); } else { re.Sub = $append(re.Sub, sub); } _i++; } /* */ if (op === 19) { $s = 1; continue; } /* */ $s = 2; continue; /* if (op === 19) { */ case 1: _r = p.factor(re.Sub, re.Flags); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } re.Sub = _r; if (re.Sub.$length === 1) { old = re; re = (x = re.Sub, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0])); p.reuse(old); } /* } */ case 2: return re; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.collapse }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._ref = _ref; $f.old = old; $f.op = op; $f.p = p; $f.re = re; $f.sub = sub; $f.subs = subs; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; }; parser.prototype.collapse = function(subs, op) { return this.$val.collapse(subs, op); }; parser.ptr.prototype.factor = function(sub, flags) { var $ptr, _i, _r, _r$1, _ref, _tmp, _tmp$1, _tuple, first, flags, i, i$1, i$2, i$3, ifirst, iflags, istr, j, j$1, j$2, j$3, max, out, p, prefix, prefix$1, re, re$1, reuse, same, start, str, strflags, sub, suffix, suffix$1, 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; first = $f.first; flags = $f.flags; i = $f.i; i$1 = $f.i$1; i$2 = $f.i$2; i$3 = $f.i$3; ifirst = $f.ifirst; iflags = $f.iflags; istr = $f.istr; j = $f.j; j$1 = $f.j$1; j$2 = $f.j$2; j$3 = $f.j$3; max = $f.max; out = $f.out; p = $f.p; prefix = $f.prefix; prefix$1 = $f.prefix$1; re = $f.re; re$1 = $f.re$1; reuse = $f.reuse; same = $f.same; start = $f.start; str = $f.str; strflags = $f.strflags; sub = $f.sub; suffix = $f.suffix; suffix$1 = $f.suffix$1; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: p = this; if (sub.$length < 2) { return sub; } str = sliceType.nil; strflags = 0; start = 0; out = $subslice(sub, 0, 0); i = 0; /* while (true) { */ case 1: /* if (!(i <= sub.$length)) { break; } */ if(!(i <= sub.$length)) { $s = 2; continue; } istr = sliceType.nil; iflags = 0; /* */ if (i < sub.$length) { $s = 3; continue; } /* */ $s = 4; continue; /* if (i < sub.$length) { */ case 3: _tuple = p.leadingString(((i < 0 || i >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + i])); istr = _tuple[0]; iflags = _tuple[1]; if (iflags === strflags) { same = 0; while (true) { if (!(same < str.$length && same < istr.$length && (((same < 0 || same >= str.$length) ? $throwRuntimeError("index out of range") : str.$array[str.$offset + same]) === ((same < 0 || same >= istr.$length) ? $throwRuntimeError("index out of range") : istr.$array[istr.$offset + same])))) { break; } same = same + (1) >> 0; } if (same > 0) { str = $subslice(str, 0, same); i = i + (1) >> 0; /* continue; */ $s = 1; continue; } } /* } */ case 4: /* */ if (i === start) { $s = 5; continue; } /* */ if (i === (start + 1 >> 0)) { $s = 6; continue; } /* */ $s = 7; continue; /* if (i === start) { */ case 5: $s = 8; continue; /* } else if (i === (start + 1 >> 0)) { */ case 6: out = $append(out, ((start < 0 || start >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + start])); $s = 8; continue; /* } else { */ case 7: prefix = p.newRegexp(3); prefix.Flags = strflags; prefix.Rune = $appendSlice($subslice(prefix.Rune, 0, 0), str); j = start; while (true) { if (!(j < i)) { break; } ((j < 0 || j >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + j] = p.removeLeadingString(((j < 0 || j >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + j]), str.$length)); j = j + (1) >> 0; } _r = p.collapse($subslice(sub, start, i), 19); /* */ $s = 9; case 9: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } suffix = _r; re = p.newRegexp(18); re.Sub = $append($subslice(re.Sub, 0, 0), prefix, suffix); out = $append(out, re); /* } */ case 8: start = i; str = istr; strflags = iflags; i = i + (1) >> 0; /* } */ $s = 1; continue; case 2: sub = out; start = 0; out = $subslice(sub, 0, 0); first = ptrType.nil; i$1 = 0; /* while (true) { */ case 10: /* if (!(i$1 <= sub.$length)) { break; } */ if(!(i$1 <= sub.$length)) { $s = 11; continue; } ifirst = ptrType.nil; /* */ if (i$1 < sub.$length) { $s = 12; continue; } /* */ $s = 13; continue; /* if (i$1 < sub.$length) { */ case 12: ifirst = p.leadingRegexp(((i$1 < 0 || i$1 >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + i$1])); if (!(first === ptrType.nil) && first.Equal(ifirst)) { i$1 = i$1 + (1) >> 0; /* continue; */ $s = 10; continue; } /* } */ case 13: /* */ if (i$1 === start) { $s = 14; continue; } /* */ if (i$1 === (start + 1 >> 0)) { $s = 15; continue; } /* */ $s = 16; continue; /* if (i$1 === start) { */ case 14: $s = 17; continue; /* } else if (i$1 === (start + 1 >> 0)) { */ case 15: out = $append(out, ((start < 0 || start >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + start])); $s = 17; continue; /* } else { */ case 16: prefix$1 = first; j$1 = start; while (true) { if (!(j$1 < i$1)) { break; } reuse = !((j$1 === start)); ((j$1 < 0 || j$1 >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + j$1] = p.removeLeadingRegexp(((j$1 < 0 || j$1 >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + j$1]), reuse)); j$1 = j$1 + (1) >> 0; } _r$1 = p.collapse($subslice(sub, start, i$1), 19); /* */ $s = 18; case 18: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } suffix$1 = _r$1; re$1 = p.newRegexp(18); re$1.Sub = $append($subslice(re$1.Sub, 0, 0), prefix$1, suffix$1); out = $append(out, re$1); /* } */ case 17: start = i$1; first = ifirst; i$1 = i$1 + (1) >> 0; /* } */ $s = 10; continue; case 11: sub = out; start = 0; out = $subslice(sub, 0, 0); i$2 = 0; /* while (true) { */ case 19: /* if (!(i$2 <= sub.$length)) { break; } */ if(!(i$2 <= sub.$length)) { $s = 20; continue; } /* */ if (i$2 < sub.$length && isCharClass(((i$2 < 0 || i$2 >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + i$2]))) { $s = 21; continue; } /* */ $s = 22; continue; /* if (i$2 < sub.$length && isCharClass(((i$2 < 0 || i$2 >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + i$2]))) { */ case 21: i$2 = i$2 + (1) >> 0; /* continue; */ $s = 19; continue; /* } */ case 22: /* */ if (i$2 === start) { $s = 23; continue; } /* */ if (i$2 === (start + 1 >> 0)) { $s = 24; continue; } /* */ $s = 25; continue; /* if (i$2 === start) { */ case 23: $s = 26; continue; /* } else if (i$2 === (start + 1 >> 0)) { */ case 24: out = $append(out, ((start < 0 || start >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + start])); $s = 26; continue; /* } else { */ case 25: max = start; j$2 = start + 1 >> 0; while (true) { if (!(j$2 < i$2)) { break; } if (((max < 0 || max >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + max]).Op < ((j$2 < 0 || j$2 >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + j$2]).Op || (((max < 0 || max >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + max]).Op === ((j$2 < 0 || j$2 >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + j$2]).Op) && ((max < 0 || max >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + max]).Rune.$length < ((j$2 < 0 || j$2 >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + j$2]).Rune.$length) { max = j$2; } j$2 = j$2 + (1) >> 0; } _tmp = ((max < 0 || max >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + max]); _tmp$1 = ((start < 0 || start >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + start]); ((start < 0 || start >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + start] = _tmp); ((max < 0 || max >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + max] = _tmp$1); j$3 = start + 1 >> 0; while (true) { if (!(j$3 < i$2)) { break; } mergeCharClass(((start < 0 || start >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + start]), ((j$3 < 0 || j$3 >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + j$3])); p.reuse(((j$3 < 0 || j$3 >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + j$3])); j$3 = j$3 + (1) >> 0; } $r = cleanAlt(((start < 0 || start >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + start])); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } out = $append(out, ((start < 0 || start >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + start])); /* } */ case 26: if (i$2 < sub.$length) { out = $append(out, ((i$2 < 0 || i$2 >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + i$2])); } start = i$2 + 1 >> 0; i$2 = i$2 + (1) >> 0; /* } */ $s = 19; continue; case 20: sub = out; start = 0; out = $subslice(sub, 0, 0); _ref = sub; _i = 0; while (true) { if (!(_i < _ref.$length)) { break; } i$3 = _i; if ((i$3 + 1 >> 0) < sub.$length && (((i$3 < 0 || i$3 >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + i$3]).Op === 2) && ((x = i$3 + 1 >> 0, ((x < 0 || x >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + x])).Op === 2)) { _i++; continue; } out = $append(out, ((i$3 < 0 || i$3 >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + i$3])); _i++; } sub = out; return sub; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.factor }; } $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.first = first; $f.flags = flags; $f.i = i; $f.i$1 = i$1; $f.i$2 = i$2; $f.i$3 = i$3; $f.ifirst = ifirst; $f.iflags = iflags; $f.istr = istr; $f.j = j; $f.j$1 = j$1; $f.j$2 = j$2; $f.j$3 = j$3; $f.max = max; $f.out = out; $f.p = p; $f.prefix = prefix; $f.prefix$1 = prefix$1; $f.re = re; $f.re$1 = re$1; $f.reuse = reuse; $f.same = same; $f.start = start; $f.str = str; $f.strflags = strflags; $f.sub = sub; $f.suffix = suffix; $f.suffix$1 = suffix$1; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; }; parser.prototype.factor = function(sub, flags) { return this.$val.factor(sub, flags); }; parser.ptr.prototype.leadingString = function(re) { var $ptr, p, re, x; p = this; if ((re.Op === 18) && re.Sub.$length > 0) { re = (x = re.Sub, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0])); } if (!((re.Op === 3))) { return [sliceType.nil, 0]; } return [re.Rune, (re.Flags & 1) >>> 0]; }; parser.prototype.leadingString = function(re) { return this.$val.leadingString(re); }; parser.ptr.prototype.removeLeadingString = function(re, n) { var $ptr, _ref, n, old, p, re, sub, x, x$1, x$2; p = this; if ((re.Op === 18) && re.Sub.$length > 0) { sub = (x = re.Sub, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0])); sub = p.removeLeadingString(sub, n); (x$1 = re.Sub, (0 >= x$1.$length ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + 0] = sub)); if (sub.Op === 2) { p.reuse(sub); _ref = re.Sub.$length; if (_ref === 0 || _ref === 1) { re.Op = 2; re.Sub = sliceType$4.nil; } else if (_ref === 2) { old = re; re = (x$2 = re.Sub, (1 >= x$2.$length ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + 1])); p.reuse(old); } else { $copySlice(re.Sub, $subslice(re.Sub, 1)); re.Sub = $subslice(re.Sub, 0, (re.Sub.$length - 1 >> 0)); } } return re; } if (re.Op === 3) { re.Rune = $subslice(re.Rune, 0, $copySlice(re.Rune, $subslice(re.Rune, n))); if (re.Rune.$length === 0) { re.Op = 2; } } return re; }; parser.prototype.removeLeadingString = function(re, n) { return this.$val.removeLeadingString(re, n); }; parser.ptr.prototype.leadingRegexp = function(re) { var $ptr, p, re, sub, x; p = this; if (re.Op === 2) { return ptrType.nil; } if ((re.Op === 18) && re.Sub.$length > 0) { sub = (x = re.Sub, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0])); if (sub.Op === 2) { return ptrType.nil; } return sub; } return re; }; parser.prototype.leadingRegexp = function(re) { return this.$val.leadingRegexp(re); }; parser.ptr.prototype.removeLeadingRegexp = function(re, reuse) { var $ptr, _ref, old, p, re, reuse, x, x$1; p = this; if ((re.Op === 18) && re.Sub.$length > 0) { if (reuse) { p.reuse((x = re.Sub, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0]))); } re.Sub = $subslice(re.Sub, 0, $copySlice(re.Sub, $subslice(re.Sub, 1))); _ref = re.Sub.$length; if (_ref === 0) { re.Op = 2; re.Sub = sliceType$4.nil; } else if (_ref === 1) { old = re; re = (x$1 = re.Sub, (0 >= x$1.$length ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + 0])); p.reuse(old); } return re; } if (reuse) { p.reuse(re); } return p.newRegexp(2); }; parser.prototype.removeLeadingRegexp = function(re, reuse) { return this.$val.removeLeadingRegexp(re, reuse); }; literalRegexp = function(s, flags) { var $ptr, _i, _ref, _rune, c, flags, re, s; re = new Regexp.ptr(3, 0, sliceType$4.nil, arrayType.zero(), sliceType.nil, arrayType$1.zero(), 0, 0, 0, ""); re.Flags = flags; re.Rune = $subslice(new sliceType(re.Rune0), 0, 0); _ref = s; _i = 0; while (true) { if (!(_i < _ref.length)) { break; } _rune = $decodeRune(_ref, _i); c = _rune[0]; if (re.Rune.$length >= re.Rune.$capacity) { re.Rune = new sliceType($stringToRunes(s)); break; } re.Rune = $append(re.Rune, c); _i += _rune[1]; } return re; }; Parse = function(s, flags) { var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _ref, _ref$1, _ref$2, _struct, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, after, after$1, before, before$1, c, err, err$1, err$2, flags, i, lastRepeat, lit, max, min, n, ok, op, p, r, r$1, re, repeat, rest, rest$1, s, 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; _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; _struct = $f._struct; _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; after = $f.after; after$1 = $f.after$1; before = $f.before; before$1 = $f.before$1; c = $f.c; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; flags = $f.flags; i = $f.i; lastRepeat = $f.lastRepeat; lit = $f.lit; max = $f.max; min = $f.min; n = $f.n; ok = $f.ok; op = $f.op; p = $f.p; r = $f.r; r$1 = $f.r$1; re = $f.re; repeat = $f.repeat; rest = $f.rest; rest$1 = $f.rest$1; s = $f.s; t = $f.t; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: if (!((((flags & 2) >>> 0) === 0))) { err = checkUTF8(s); if (!($interfaceIsEqual(err, $ifaceNil))) { return [ptrType.nil, err]; } return [literalRegexp(s, flags), $ifaceNil]; } p = $clone(new parser.ptr(), parser); err$1 = $ifaceNil; c = 0; op = 0; lastRepeat = ""; p.flags = flags; p.wholeRegexp = s; t = s; /* while (true) { */ case 1: /* if (!(!(t === ""))) { break; } */ if(!(!(t === ""))) { $s = 2; continue; } repeat = ""; _ref = t.charCodeAt(0); /* */ if (_ref === 40) { $s = 3; continue; } /* */ if (_ref === 124) { $s = 4; continue; } /* */ if (_ref === 41) { $s = 5; continue; } /* */ if (_ref === 94) { $s = 6; continue; } /* */ if (_ref === 36) { $s = 7; continue; } /* */ if (_ref === 46) { $s = 8; continue; } /* */ if (_ref === 91) { $s = 9; continue; } /* */ if (_ref === 42 || _ref === 43 || _ref === 63) { $s = 10; continue; } /* */ if (_ref === 123) { $s = 11; continue; } /* */ if (_ref === 92) { $s = 12; continue; } /* */ $s = 13; continue; /* switch (0) { default: if (_ref === 40) { */ case 3: if (!((((p.flags & 64) >>> 0) === 0)) && t.length >= 2 && (t.charCodeAt(1) === 63)) { _tuple = p.parsePerlFlags(t); t = _tuple[0]; err$1 = _tuple[1]; if (!($interfaceIsEqual(err$1, $ifaceNil))) { return [ptrType.nil, err$1]; } /* break; */ $s = 14; continue; } p.numCap = p.numCap + (1) >> 0; p.op(128).Cap = p.numCap; t = t.substring(1); $s = 14; continue; /* } else if (_ref === 124) { */ case 4: _r = p.parseVerticalBar(); /* */ $s = 15; case 15: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } err$1 = _r; /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 16; continue; } /* */ $s = 17; continue; /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 16: return [ptrType.nil, err$1]; /* } */ case 17: t = t.substring(1); $s = 14; continue; /* } else if (_ref === 41) { */ case 5: _r$1 = p.parseRightParen(); /* */ $s = 18; case 18: 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 = 19; continue; } /* */ $s = 20; continue; /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 19: return [ptrType.nil, err$1]; /* } */ case 20: t = t.substring(1); $s = 14; continue; /* } else if (_ref === 94) { */ case 6: if (!((((p.flags & 16) >>> 0) === 0))) { p.op(9); } else { p.op(7); } t = t.substring(1); $s = 14; continue; /* } else if (_ref === 36) { */ case 7: if (!((((p.flags & 16) >>> 0) === 0))) { _struct = p.op(10); _struct.Flags = (_struct.Flags | (256)) >>> 0; } else { p.op(8); } t = t.substring(1); $s = 14; continue; /* } else if (_ref === 46) { */ case 8: if (!((((p.flags & 8) >>> 0) === 0))) { p.op(6); } else { p.op(5); } t = t.substring(1); $s = 14; continue; /* } else if (_ref === 91) { */ case 9: _r$2 = p.parseClass(t); /* */ $s = 21; case 21: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } _tuple$1 = _r$2; t = _tuple$1[0]; err$1 = _tuple$1[1]; /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 22; continue; } /* */ $s = 23; continue; /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 22: return [ptrType.nil, err$1]; /* } */ case 23: $s = 14; continue; /* } else if (_ref === 42 || _ref === 43 || _ref === 63) { */ case 10: before = t; _ref$1 = t.charCodeAt(0); if (_ref$1 === 42) { op = 14; } else if (_ref$1 === 43) { op = 15; } else if (_ref$1 === 63) { op = 16; } after = t.substring(1); _tuple$2 = p.repeat(op, 0, 0, before, after, lastRepeat); after = _tuple$2[0]; err$1 = _tuple$2[1]; if (!($interfaceIsEqual(err$1, $ifaceNil))) { return [ptrType.nil, err$1]; } repeat = before; t = after; $s = 14; continue; /* } else if (_ref === 123) { */ case 11: op = 17; before$1 = t; _tuple$3 = p.parseRepeat(t); min = _tuple$3[0]; max = _tuple$3[1]; after$1 = _tuple$3[2]; ok = _tuple$3[3]; if (!ok) { p.literal(123); t = t.substring(1); /* break; */ $s = 14; continue; } if (min < 0 || min > 1000 || max > 1000 || max >= 0 && min > max) { return [ptrType.nil, new Error.ptr("invalid repeat count", before$1.substring(0, (before$1.length - after$1.length >> 0)))]; } _tuple$4 = p.repeat(op, min, max, before$1, after$1, lastRepeat); after$1 = _tuple$4[0]; err$1 = _tuple$4[1]; if (!($interfaceIsEqual(err$1, $ifaceNil))) { return [ptrType.nil, err$1]; } repeat = before$1; t = after$1; $s = 14; continue; /* } else if (_ref === 92) { */ case 12: if (!((((p.flags & 64) >>> 0) === 0)) && t.length >= 2) { _ref$2 = t.charCodeAt(1); if (_ref$2 === 65) { p.op(9); t = t.substring(2); /* break BigSwitch; */ $s = 14; continue s; } else if (_ref$2 === 98) { p.op(11); t = t.substring(2); /* break BigSwitch; */ $s = 14; continue s; } else if (_ref$2 === 66) { p.op(12); t = t.substring(2); /* break BigSwitch; */ $s = 14; continue s; } else if (_ref$2 === 67) { return [ptrType.nil, new Error.ptr("invalid escape sequence", t.substring(0, 2))]; } else if (_ref$2 === 81) { lit = ""; i = strings.Index(t, "\\E"); if (i < 0) { lit = t.substring(2); t = ""; } else { lit = t.substring(2, i); t = t.substring((i + 2 >> 0)); } p.push(literalRegexp(lit, p.flags)); /* break BigSwitch; */ $s = 14; continue s; } else if (_ref$2 === 122) { p.op(10); t = t.substring(2); /* break BigSwitch; */ $s = 14; continue s; } } re = p.newRegexp(4); re.Flags = p.flags; /* */ if (t.length >= 2 && ((t.charCodeAt(1) === 112) || (t.charCodeAt(1) === 80))) { $s = 24; continue; } /* */ $s = 25; continue; /* if (t.length >= 2 && ((t.charCodeAt(1) === 112) || (t.charCodeAt(1) === 80))) { */ case 24: _r$3 = p.parseUnicodeClass(t, $subslice(new sliceType(re.Rune0), 0, 0)); /* */ $s = 26; case 26: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } _tuple$5 = _r$3; r = _tuple$5[0]; rest = _tuple$5[1]; err$2 = _tuple$5[2]; if (!($interfaceIsEqual(err$2, $ifaceNil))) { return [ptrType.nil, err$2]; } if (!(r === sliceType.nil)) { re.Rune = r; t = rest; p.push(re); /* break BigSwitch; */ $s = 14; continue s; } /* } */ case 25: _r$4 = p.parsePerlClassEscape(t, $subslice(new sliceType(re.Rune0), 0, 0)); /* */ $s = 27; case 27: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } _tuple$6 = _r$4; r$1 = _tuple$6[0]; rest$1 = _tuple$6[1]; /* */ if (!(r$1 === sliceType.nil)) { $s = 28; continue; } /* */ $s = 29; continue; /* if (!(r$1 === sliceType.nil)) { */ case 28: re.Rune = r$1; t = rest$1; p.push(re); /* break BigSwitch; */ $s = 14; continue s; /* } */ case 29: p.reuse(re); _tuple$7 = p.parseEscape(t); c = _tuple$7[0]; t = _tuple$7[1]; err$1 = _tuple$7[2]; if (!($interfaceIsEqual(err$1, $ifaceNil))) { return [ptrType.nil, err$1]; } p.literal(c); $s = 14; continue; /* } else { */ case 13: _tuple$8 = nextRune(t); c = _tuple$8[0]; t = _tuple$8[1]; err$1 = _tuple$8[2]; if (!($interfaceIsEqual(err$1, $ifaceNil))) { return [ptrType.nil, err$1]; } p.literal(c); /* } } */ case 14: lastRepeat = repeat; /* } */ $s = 1; continue; case 2: _r$5 = p.concat(); /* */ $s = 30; case 30: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } _r$5; _r$6 = p.swapVerticalBar(); /* */ $s = 33; case 33: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } /* */ if (_r$6) { $s = 31; continue; } /* */ $s = 32; continue; /* if (_r$6) { */ case 31: p.stack = $subslice(p.stack, 0, (p.stack.$length - 1 >> 0)); /* } */ case 32: _r$7 = p.alternate(); /* */ $s = 34; case 34: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } _r$7; n = p.stack.$length; if (!((n === 1))) { return [ptrType.nil, new Error.ptr("missing closing )", s)]; } return [(x = p.stack, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0])), $ifaceNil]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Parse }; } $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._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f._struct = _struct; $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.after = after; $f.after$1 = after$1; $f.before = before; $f.before$1 = before$1; $f.c = c; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.flags = flags; $f.i = i; $f.lastRepeat = lastRepeat; $f.lit = lit; $f.max = max; $f.min = min; $f.n = n; $f.ok = ok; $f.op = op; $f.p = p; $f.r = r; $f.r$1 = r$1; $f.re = re; $f.repeat = repeat; $f.rest = rest; $f.rest$1 = rest$1; $f.s = s; $f.t = t; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; }; $pkg.Parse = Parse; parser.ptr.prototype.parseRepeat = function(s) { var $ptr, _tuple, _tuple$1, max, min, ok, ok1, p, rest, s; min = 0; max = 0; rest = ""; ok = false; p = this; if (s === "" || !((s.charCodeAt(0) === 123))) { return [min, max, rest, ok]; } s = s.substring(1); ok1 = false; _tuple = p.parseInt(s); min = _tuple[0]; s = _tuple[1]; ok1 = _tuple[2]; if (!ok1) { return [min, max, rest, ok]; } if (s === "") { return [min, max, rest, ok]; } if (!((s.charCodeAt(0) === 44))) { max = min; } else { s = s.substring(1); if (s === "") { return [min, max, rest, ok]; } if (s.charCodeAt(0) === 125) { max = -1; } else { _tuple$1 = p.parseInt(s); max = _tuple$1[0]; s = _tuple$1[1]; ok1 = _tuple$1[2]; if (!ok1) { return [min, max, rest, ok]; } else if (max < 0) { min = -1; } } } if (s === "" || !((s.charCodeAt(0) === 125))) { return [min, max, rest, ok]; } rest = s.substring(1); ok = true; return [min, max, rest, ok]; }; parser.prototype.parseRepeat = function(s) { return this.$val.parseRepeat(s); }; parser.ptr.prototype.parsePerlFlags = function(s) { var $ptr, _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, c, capture, end, err, flags, name, p, re, rest, s, sawFlag, sign, t; rest = ""; err = $ifaceNil; p = this; t = s; if (t.length > 4 && (t.charCodeAt(2) === 80) && (t.charCodeAt(3) === 60)) { end = strings.IndexRune(t, 62); if (end < 0) { err = checkUTF8(t); if (!($interfaceIsEqual(err, $ifaceNil))) { _tmp = ""; _tmp$1 = err; rest = _tmp; err = _tmp$1; return [rest, err]; } _tmp$2 = ""; _tmp$3 = new Error.ptr("invalid named capture", s); rest = _tmp$2; err = _tmp$3; return [rest, err]; } capture = t.substring(0, (end + 1 >> 0)); name = t.substring(4, end); err = checkUTF8(name); if (!($interfaceIsEqual(err, $ifaceNil))) { _tmp$4 = ""; _tmp$5 = err; rest = _tmp$4; err = _tmp$5; return [rest, err]; } if (!isValidCaptureName(name)) { _tmp$6 = ""; _tmp$7 = new Error.ptr("invalid named capture", capture); rest = _tmp$6; err = _tmp$7; return [rest, err]; } p.numCap = p.numCap + (1) >> 0; re = p.op(128); re.Cap = p.numCap; re.Name = name; _tmp$8 = t.substring((end + 1 >> 0)); _tmp$9 = $ifaceNil; rest = _tmp$8; err = _tmp$9; return [rest, err]; } c = 0; t = t.substring(2); flags = p.flags; sign = 1; sawFlag = false; Loop: while (true) { if (!(!(t === ""))) { break; } _tuple = nextRune(t); c = _tuple[0]; t = _tuple[1]; err = _tuple[2]; if (!($interfaceIsEqual(err, $ifaceNil))) { _tmp$10 = ""; _tmp$11 = err; rest = _tmp$10; err = _tmp$11; return [rest, err]; } _ref = c; if (_ref === 105) { flags = (flags | (1)) >>> 0; sawFlag = true; } else if (_ref === 109) { flags = (flags & ~(16)) << 16 >>> 16; sawFlag = true; } else if (_ref === 115) { flags = (flags | (8)) >>> 0; sawFlag = true; } else if (_ref === 85) { flags = (flags | (32)) >>> 0; sawFlag = true; } else if (_ref === 45) { if (sign < 0) { break Loop; } sign = -1; flags = ~flags << 16 >>> 16; sawFlag = false; } else if (_ref === 58 || _ref === 41) { if (sign < 0) { if (!sawFlag) { break Loop; } flags = ~flags << 16 >>> 16; } if (c === 58) { p.op(128); } p.flags = flags; _tmp$12 = t; _tmp$13 = $ifaceNil; rest = _tmp$12; err = _tmp$13; return [rest, err]; } else { break Loop; } } _tmp$14 = ""; _tmp$15 = new Error.ptr("invalid or unsupported Perl syntax", s.substring(0, (s.length - t.length >> 0))); rest = _tmp$14; err = _tmp$15; return [rest, err]; }; parser.prototype.parsePerlFlags = function(s) { return this.$val.parsePerlFlags(s); }; isValidCaptureName = function(name) { var $ptr, _i, _ref, _rune, c, name; if (name === "") { return false; } _ref = name; _i = 0; while (true) { if (!(_i < _ref.length)) { break; } _rune = $decodeRune(_ref, _i); c = _rune[0]; if (!((c === 95)) && !isalnum(c)) { return false; } _i += _rune[1]; } return true; }; parser.ptr.prototype.parseInt = function(s) { var $ptr, i, n, ok, p, rest, s, t; n = 0; rest = ""; ok = false; p = this; if (s === "" || s.charCodeAt(0) < 48 || 57 < s.charCodeAt(0)) { return [n, rest, ok]; } if (s.length >= 2 && (s.charCodeAt(0) === 48) && 48 <= s.charCodeAt(1) && s.charCodeAt(1) <= 57) { return [n, rest, ok]; } t = s; while (true) { if (!(!(s === "") && 48 <= s.charCodeAt(0) && s.charCodeAt(0) <= 57)) { break; } s = s.substring(1); } rest = s; ok = true; t = t.substring(0, (t.length - s.length >> 0)); i = 0; while (true) { if (!(i < t.length)) { break; } if (n >= 100000000) { n = -1; break; } n = ((n * 10 >> 0) + (t.charCodeAt(i) >> 0) >> 0) - 48 >> 0; i = i + (1) >> 0; } return [n, rest, ok]; }; parser.prototype.parseInt = function(s) { return this.$val.parseInt(s); }; isCharClass = function(re) { var $ptr, re; return (re.Op === 3) && (re.Rune.$length === 1) || (re.Op === 4) || (re.Op === 5) || (re.Op === 6); }; matchRune = function(re, r) { var $ptr, _ref, i, r, re, x, x$1, x$2, x$3; _ref = re.Op; if (_ref === 3) { return (re.Rune.$length === 1) && ((x = re.Rune, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0])) === r); } else if (_ref === 4) { i = 0; while (true) { if (!(i < re.Rune.$length)) { break; } if ((x$1 = re.Rune, ((i < 0 || i >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + i])) <= r && r <= (x$2 = re.Rune, x$3 = i + 1 >> 0, ((x$3 < 0 || x$3 >= x$2.$length) ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + x$3]))) { return true; } i = i + (2) >> 0; } return false; } else if (_ref === 5) { return !((r === 10)); } else if (_ref === 6) { return true; } return false; }; parser.ptr.prototype.parseVerticalBar = function() { var $ptr, _r, _r$1, 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; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: p = this; _r = p.concat(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _r; _r$1 = p.swapVerticalBar(); /* */ $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: p.op(129); /* } */ case 3: return $ifaceNil; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.parseVerticalBar }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.p = p; $f.$s = $s; $f.$r = $r; return $f; }; parser.prototype.parseVerticalBar = function() { return this.$val.parseVerticalBar(); }; mergeCharClass = function(dst, src) { var $ptr, _ref, dst, src, x, x$1, x$2, x$3, x$4; _ref = dst.Op; switch (0) { default: if (_ref === 6) { } else if (_ref === 5) { if (matchRune(src, 10)) { dst.Op = 6; } } else if (_ref === 4) { if (src.Op === 3) { dst.Rune = appendLiteral(dst.Rune, (x = src.Rune, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0])), src.Flags); } else { dst.Rune = appendClass(dst.Rune, src.Rune); } } else if (_ref === 3) { if (((x$1 = src.Rune, (0 >= x$1.$length ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + 0])) === (x$2 = dst.Rune, (0 >= x$2.$length ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + 0]))) && (src.Flags === dst.Flags)) { break; } dst.Op = 4; dst.Rune = appendLiteral($subslice(dst.Rune, 0, 0), (x$3 = dst.Rune, (0 >= x$3.$length ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + 0])), dst.Flags); dst.Rune = appendLiteral(dst.Rune, (x$4 = src.Rune, (0 >= x$4.$length ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + 0])), src.Flags); } } }; parser.ptr.prototype.swapVerticalBar = function() { var $ptr, _tmp, _tmp$1, n, p, re1, re1$1, re2, re3, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$20, x$21, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $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; n = $f.n; p = $f.p; re1 = $f.re1; re1$1 = $f.re1$1; re2 = $f.re2; re3 = $f.re3; 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$17 = $f.x$17; x$18 = $f.x$18; x$19 = $f.x$19; x$2 = $f.x$2; x$20 = $f.x$20; x$21 = $f.x$21; 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: p = this; n = p.stack.$length; if (n >= 3 && ((x = p.stack, x$1 = n - 2 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1])).Op === 129) && isCharClass((x$2 = p.stack, x$3 = n - 1 >> 0, ((x$3 < 0 || x$3 >= x$2.$length) ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + x$3]))) && isCharClass((x$4 = p.stack, x$5 = n - 3 >> 0, ((x$5 < 0 || x$5 >= x$4.$length) ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + x$5])))) { re1 = (x$6 = p.stack, x$7 = n - 1 >> 0, ((x$7 < 0 || x$7 >= x$6.$length) ? $throwRuntimeError("index out of range") : x$6.$array[x$6.$offset + x$7])); re3 = (x$8 = p.stack, x$9 = n - 3 >> 0, ((x$9 < 0 || x$9 >= x$8.$length) ? $throwRuntimeError("index out of range") : x$8.$array[x$8.$offset + x$9])); if (re1.Op > re3.Op) { _tmp = re3; _tmp$1 = re1; re1 = _tmp; re3 = _tmp$1; (x$10 = p.stack, x$11 = n - 3 >> 0, ((x$11 < 0 || x$11 >= x$10.$length) ? $throwRuntimeError("index out of range") : x$10.$array[x$10.$offset + x$11] = re3)); } mergeCharClass(re3, re1); p.reuse(re1); p.stack = $subslice(p.stack, 0, (n - 1 >> 0)); return true; } /* */ if (n >= 2) { $s = 1; continue; } /* */ $s = 2; continue; /* if (n >= 2) { */ case 1: re1$1 = (x$12 = p.stack, x$13 = n - 1 >> 0, ((x$13 < 0 || x$13 >= x$12.$length) ? $throwRuntimeError("index out of range") : x$12.$array[x$12.$offset + x$13])); re2 = (x$14 = p.stack, x$15 = n - 2 >> 0, ((x$15 < 0 || x$15 >= x$14.$length) ? $throwRuntimeError("index out of range") : x$14.$array[x$14.$offset + x$15])); /* */ if (re2.Op === 129) { $s = 3; continue; } /* */ $s = 4; continue; /* if (re2.Op === 129) { */ case 3: /* */ if (n >= 3) { $s = 5; continue; } /* */ $s = 6; continue; /* if (n >= 3) { */ case 5: $r = cleanAlt((x$16 = p.stack, x$17 = n - 3 >> 0, ((x$17 < 0 || x$17 >= x$16.$length) ? $throwRuntimeError("index out of range") : x$16.$array[x$16.$offset + x$17]))); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 6: (x$18 = p.stack, x$19 = n - 2 >> 0, ((x$19 < 0 || x$19 >= x$18.$length) ? $throwRuntimeError("index out of range") : x$18.$array[x$18.$offset + x$19] = re1$1)); (x$20 = p.stack, x$21 = n - 1 >> 0, ((x$21 < 0 || x$21 >= x$20.$length) ? $throwRuntimeError("index out of range") : x$20.$array[x$20.$offset + x$21] = re2)); return true; /* } */ case 4: /* } */ case 2: return false; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.swapVerticalBar }; } $f.$ptr = $ptr; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f.n = n; $f.p = p; $f.re1 = re1; $f.re1$1 = re1$1; $f.re2 = re2; $f.re3 = re3; $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$17 = x$17; $f.x$18 = x$18; $f.x$19 = x$19; $f.x$2 = x$2; $f.x$20 = x$20; $f.x$21 = x$21; $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; }; parser.prototype.swapVerticalBar = function() { return this.$val.swapVerticalBar(); }; parser.ptr.prototype.parseRightParen = function() { var $ptr, _r, _r$1, _r$2, n, p, re1, re2, 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; _r$2 = $f._r$2; n = $f.n; p = $f.p; re1 = $f.re1; re2 = $f.re2; 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: p = this; _r = p.concat(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _r; _r$1 = p.swapVerticalBar(); /* */ $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: p.stack = $subslice(p.stack, 0, (p.stack.$length - 1 >> 0)); /* } */ case 3: _r$2 = p.alternate(); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } _r$2; n = p.stack.$length; if (n < 2) { return new Error.ptr("unexpected )", p.wholeRegexp); } re1 = (x = p.stack, x$1 = n - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1])); re2 = (x$2 = p.stack, x$3 = n - 2 >> 0, ((x$3 < 0 || x$3 >= x$2.$length) ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + x$3])); p.stack = $subslice(p.stack, 0, (n - 2 >> 0)); if (!((re2.Op === 128))) { return new Error.ptr("unexpected )", p.wholeRegexp); } p.flags = re2.Flags; if (re2.Cap === 0) { p.push(re1); } else { re2.Op = 13; re2.Sub = $subslice(new sliceType$4(re2.Sub0), 0, 1); (x$4 = re2.Sub, (0 >= x$4.$length ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + 0] = re1)); p.push(re2); } return $ifaceNil; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.parseRightParen }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.n = n; $f.p = p; $f.re1 = re1; $f.re2 = re2; $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; }; parser.prototype.parseRightParen = function() { return this.$val.parseRightParen(); }; parser.ptr.prototype.parseEscape = function(s) { var $ptr, _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$44, _tmp$45, _tmp$46, _tmp$47, _tmp$48, _tmp$49, _tmp$5, _tmp$50, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, c, err, i, nhex, p, r, rest, s, t, v, x, y; r = 0; rest = ""; err = $ifaceNil; p = this; t = s.substring(1); if (t === "") { _tmp = 0; _tmp$1 = ""; _tmp$2 = new Error.ptr("trailing backslash at end of expression", ""); r = _tmp; rest = _tmp$1; err = _tmp$2; return [r, rest, err]; } _tuple = nextRune(t); c = _tuple[0]; t = _tuple[1]; err = _tuple[2]; if (!($interfaceIsEqual(err, $ifaceNil))) { _tmp$3 = 0; _tmp$4 = ""; _tmp$5 = err; r = _tmp$3; rest = _tmp$4; err = _tmp$5; return [r, rest, err]; } _ref = c; Switch: switch (0) { default: if (_ref === 49 || _ref === 50 || _ref === 51 || _ref === 52 || _ref === 53 || _ref === 54 || _ref === 55) { if (t === "" || t.charCodeAt(0) < 48 || t.charCodeAt(0) > 55) { break; } r = c - 48 >> 0; i = 1; while (true) { if (!(i < 3)) { break; } if (t === "" || t.charCodeAt(0) < 48 || t.charCodeAt(0) > 55) { break; } r = (((((r >>> 16 << 16) * 8 >> 0) + (r << 16 >>> 16) * 8) >> 0) + (t.charCodeAt(0) >> 0) >> 0) - 48 >> 0; t = t.substring(1); i = i + (1) >> 0; } _tmp$6 = r; _tmp$7 = t; _tmp$8 = $ifaceNil; r = _tmp$6; rest = _tmp$7; err = _tmp$8; return [r, rest, err]; } else if (_ref === 48) { r = c - 48 >> 0; i = 1; while (true) { if (!(i < 3)) { break; } if (t === "" || t.charCodeAt(0) < 48 || t.charCodeAt(0) > 55) { break; } r = (((((r >>> 16 << 16) * 8 >> 0) + (r << 16 >>> 16) * 8) >> 0) + (t.charCodeAt(0) >> 0) >> 0) - 48 >> 0; t = t.substring(1); i = i + (1) >> 0; } _tmp$9 = r; _tmp$10 = t; _tmp$11 = $ifaceNil; r = _tmp$9; rest = _tmp$10; err = _tmp$11; return [r, rest, err]; } else if (_ref === 120) { if (t === "") { break; } _tuple$1 = nextRune(t); c = _tuple$1[0]; t = _tuple$1[1]; err = _tuple$1[2]; if (!($interfaceIsEqual(err, $ifaceNil))) { _tmp$12 = 0; _tmp$13 = ""; _tmp$14 = err; r = _tmp$12; rest = _tmp$13; err = _tmp$14; return [r, rest, err]; } if (c === 123) { nhex = 0; r = 0; while (true) { if (t === "") { break Switch; } _tuple$2 = nextRune(t); c = _tuple$2[0]; t = _tuple$2[1]; err = _tuple$2[2]; if (!($interfaceIsEqual(err, $ifaceNil))) { _tmp$15 = 0; _tmp$16 = ""; _tmp$17 = err; r = _tmp$15; rest = _tmp$16; err = _tmp$17; return [r, rest, err]; } if (c === 125) { break; } v = unhex(c); if (v < 0) { break Switch; } r = ((((r >>> 16 << 16) * 16 >> 0) + (r << 16 >>> 16) * 16) >> 0) + v >> 0; if (r > 1114111) { break Switch; } nhex = nhex + (1) >> 0; } if (nhex === 0) { break Switch; } _tmp$18 = r; _tmp$19 = t; _tmp$20 = $ifaceNil; r = _tmp$18; rest = _tmp$19; err = _tmp$20; return [r, rest, err]; } x = unhex(c); _tuple$3 = nextRune(t); c = _tuple$3[0]; t = _tuple$3[1]; err = _tuple$3[2]; if (!($interfaceIsEqual(err, $ifaceNil))) { _tmp$21 = 0; _tmp$22 = ""; _tmp$23 = err; r = _tmp$21; rest = _tmp$22; err = _tmp$23; return [r, rest, err]; } y = unhex(c); if (x < 0 || y < 0) { break; } _tmp$24 = ((((x >>> 16 << 16) * 16 >> 0) + (x << 16 >>> 16) * 16) >> 0) + y >> 0; _tmp$25 = t; _tmp$26 = $ifaceNil; r = _tmp$24; rest = _tmp$25; err = _tmp$26; return [r, rest, err]; } else if (_ref === 97) { _tmp$27 = 7; _tmp$28 = t; _tmp$29 = err; r = _tmp$27; rest = _tmp$28; err = _tmp$29; return [r, rest, err]; } else if (_ref === 102) { _tmp$30 = 12; _tmp$31 = t; _tmp$32 = err; r = _tmp$30; rest = _tmp$31; err = _tmp$32; return [r, rest, err]; } else if (_ref === 110) { _tmp$33 = 10; _tmp$34 = t; _tmp$35 = err; r = _tmp$33; rest = _tmp$34; err = _tmp$35; return [r, rest, err]; } else if (_ref === 114) { _tmp$36 = 13; _tmp$37 = t; _tmp$38 = err; r = _tmp$36; rest = _tmp$37; err = _tmp$38; return [r, rest, err]; } else if (_ref === 116) { _tmp$39 = 9; _tmp$40 = t; _tmp$41 = err; r = _tmp$39; rest = _tmp$40; err = _tmp$41; return [r, rest, err]; } else if (_ref === 118) { _tmp$42 = 11; _tmp$43 = t; _tmp$44 = err; r = _tmp$42; rest = _tmp$43; err = _tmp$44; return [r, rest, err]; } else { if (c < 128 && !isalnum(c)) { _tmp$45 = c; _tmp$46 = t; _tmp$47 = $ifaceNil; r = _tmp$45; rest = _tmp$46; err = _tmp$47; return [r, rest, err]; } } } _tmp$48 = 0; _tmp$49 = ""; _tmp$50 = new Error.ptr("invalid escape sequence", s.substring(0, (s.length - t.length >> 0))); r = _tmp$48; rest = _tmp$49; err = _tmp$50; return [r, rest, err]; }; parser.prototype.parseEscape = function(s) { return this.$val.parseEscape(s); }; parser.ptr.prototype.parseClassChar = function(s, wholeClass) { var $ptr, _tmp, _tmp$1, _tmp$2, _tuple, _tuple$1, err, p, r, rest, s, wholeClass; r = 0; rest = ""; err = $ifaceNil; p = this; if (s === "") { _tmp = 0; _tmp$1 = ""; _tmp$2 = new Error.ptr("missing closing ]", wholeClass); r = _tmp; rest = _tmp$1; err = _tmp$2; return [r, rest, err]; } if (s.charCodeAt(0) === 92) { _tuple = p.parseEscape(s); r = _tuple[0]; rest = _tuple[1]; err = _tuple[2]; return [r, rest, err]; } _tuple$1 = nextRune(s); r = _tuple$1[0]; rest = _tuple$1[1]; err = _tuple$1[2]; return [r, rest, err]; }; parser.prototype.parseClassChar = function(s, wholeClass) { return this.$val.parseClassChar(s, wholeClass); }; parser.ptr.prototype.parsePerlClassEscape = function(s, r) { var $ptr, _entry, _r, _tmp, _tmp$1, g, out, p, r, rest, 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; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; g = $f.g; out = $f.out; p = $f.p; r = $f.r; rest = $f.rest; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: out = sliceType.nil; rest = ""; p = this; if ((((p.flags & 64) >>> 0) === 0) || s.length < 2 || !((s.charCodeAt(0) === 92))) { return [out, rest]; } g = $clone((_entry = perlGroup[s.substring(0, 2)], _entry !== undefined ? _entry.v : new charGroup.ptr()), charGroup); if (g.sign === 0) { return [out, rest]; } _r = p.appendGroup(r, g); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _tmp = _r; _tmp$1 = s.substring(2); out = _tmp; rest = _tmp$1; return [out, rest]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.parsePerlClassEscape }; } $f.$ptr = $ptr; $f._entry = _entry; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f.g = g; $f.out = out; $f.p = p; $f.r = r; $f.rest = rest; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; }; parser.prototype.parsePerlClassEscape = function(s, r) { return this.$val.parsePerlClassEscape(s, r); }; parser.ptr.prototype.parseNamedClass = function(s, r) { var $ptr, _entry, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, err, g, i, name, out, p, r, rest, 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; _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; err = $f.err; g = $f.g; i = $f.i; name = $f.name; out = $f.out; p = $f.p; r = $f.r; rest = $f.rest; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: out = sliceType.nil; rest = ""; err = $ifaceNil; p = this; if (s.length < 2 || !((s.charCodeAt(0) === 91)) || !((s.charCodeAt(1) === 58))) { return [out, rest, err]; } i = strings.Index(s.substring(2), ":]"); if (i < 0) { return [out, rest, err]; } i = i + (2) >> 0; _tmp = s.substring(0, (i + 2 >> 0)); _tmp$1 = s.substring((i + 2 >> 0)); name = _tmp; s = _tmp$1; g = $clone((_entry = posixGroup[name], _entry !== undefined ? _entry.v : new charGroup.ptr()), charGroup); if (g.sign === 0) { _tmp$2 = sliceType.nil; _tmp$3 = ""; _tmp$4 = new Error.ptr("invalid character class range", name); out = _tmp$2; rest = _tmp$3; err = _tmp$4; return [out, rest, err]; } _r = p.appendGroup(r, g); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _tmp$5 = _r; _tmp$6 = s; _tmp$7 = $ifaceNil; out = _tmp$5; rest = _tmp$6; err = _tmp$7; return [out, rest, err]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.parseNamedClass }; } $f.$ptr = $ptr; $f._entry = _entry; $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.err = err; $f.g = g; $f.i = i; $f.name = name; $f.out = out; $f.p = p; $f.r = r; $f.rest = rest; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; }; parser.prototype.parseNamedClass = function(s, r) { return this.$val.parseNamedClass(s, r); }; parser.ptr.prototype.appendGroup = function(r, g) { var $ptr, _r, g, p, r, 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; g = $f.g; p = $f.p; r = $f.r; tmp = $f.tmp; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: p = this; g = $clone(g, charGroup); /* */ if (((p.flags & 1) >>> 0) === 0) { $s = 1; continue; } /* */ $s = 2; continue; /* if (((p.flags & 1) >>> 0) === 0) { */ case 1: if (g.sign < 0) { r = appendNegatedClass(r, g.class$1); } else { r = appendClass(r, g.class$1); } $s = 3; continue; /* } else { */ case 2: tmp = $subslice(p.tmpClass, 0, 0); tmp = appendFoldedClass(tmp, g.class$1); p.tmpClass = tmp; _r = cleanClass((p.$ptr_tmpClass || (p.$ptr_tmpClass = new ptrType$1(function() { return this.$target.tmpClass; }, function($v) { this.$target.tmpClass = $v; }, p)))); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } tmp = _r; if (g.sign < 0) { r = appendNegatedClass(r, tmp); } else { r = appendClass(r, tmp); } /* } */ case 3: return r; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.appendGroup }; } $f.$ptr = $ptr; $f._r = _r; $f.g = g; $f.p = p; $f.r = r; $f.tmp = tmp; $f.$s = $s; $f.$r = $r; return $f; }; parser.prototype.appendGroup = function(r, g) { return this.$val.appendGroup(r, g); }; unicodeTable = function(name) { var $ptr, _entry, _entry$1, _entry$2, _entry$3, name, t, t$1; if (name === "Any") { return [anyTable, anyTable]; } t = (_entry = unicode.Categories[name], _entry !== undefined ? _entry.v : ptrType$2.nil); if (!(t === ptrType$2.nil)) { return [t, (_entry$1 = unicode.FoldCategory[name], _entry$1 !== undefined ? _entry$1.v : ptrType$2.nil)]; } t$1 = (_entry$2 = unicode.Scripts[name], _entry$2 !== undefined ? _entry$2.v : ptrType$2.nil); if (!(t$1 === ptrType$2.nil)) { return [t$1, (_entry$3 = unicode.FoldScript[name], _entry$3 !== undefined ? _entry$3.v : ptrType$2.nil)]; } return [ptrType$2.nil, ptrType$2.nil]; }; parser.ptr.prototype.parseUnicodeClass = function(s, r) { var $ptr, _r, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, c, end, err, fold, name, out, p, r, rest, s, seq, sign, t, tab, 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; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$12 = $f._tmp$12; _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; end = $f.end; err = $f.err; fold = $f.fold; name = $f.name; out = $f.out; p = $f.p; r = $f.r; rest = $f.rest; s = $f.s; seq = $f.seq; sign = $f.sign; t = $f.t; tab = $f.tab; tmp = $f.tmp; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: out = sliceType.nil; rest = ""; err = $ifaceNil; p = this; if ((((p.flags & 128) >>> 0) === 0) || s.length < 2 || !((s.charCodeAt(0) === 92)) || !((s.charCodeAt(1) === 112)) && !((s.charCodeAt(1) === 80))) { return [out, rest, err]; } sign = 1; if (s.charCodeAt(1) === 80) { sign = -1; } t = s.substring(2); _tuple = nextRune(t); c = _tuple[0]; t = _tuple[1]; err = _tuple[2]; if (!($interfaceIsEqual(err, $ifaceNil))) { return [out, rest, err]; } _tmp = ""; _tmp$1 = ""; seq = _tmp; name = _tmp$1; if (!((c === 123))) { seq = s.substring(0, (s.length - t.length >> 0)); name = seq.substring(2); } else { end = strings.IndexRune(s, 125); if (end < 0) { err = checkUTF8(s); if (!($interfaceIsEqual(err, $ifaceNil))) { return [out, rest, err]; } _tmp$2 = sliceType.nil; _tmp$3 = ""; _tmp$4 = new Error.ptr("invalid character class range", s); out = _tmp$2; rest = _tmp$3; err = _tmp$4; return [out, rest, err]; } _tmp$5 = s.substring(0, (end + 1 >> 0)); _tmp$6 = s.substring((end + 1 >> 0)); seq = _tmp$5; t = _tmp$6; name = s.substring(3, end); err = checkUTF8(name); if (!($interfaceIsEqual(err, $ifaceNil))) { return [out, rest, err]; } } if (!(name === "") && (name.charCodeAt(0) === 94)) { sign = -sign; name = name.substring(1); } _tuple$1 = unicodeTable(name); tab = _tuple$1[0]; fold = _tuple$1[1]; if (tab === ptrType$2.nil) { _tmp$7 = sliceType.nil; _tmp$8 = ""; _tmp$9 = new Error.ptr("invalid character class range", seq); out = _tmp$7; rest = _tmp$8; err = _tmp$9; return [out, rest, err]; } /* */ if ((((p.flags & 1) >>> 0) === 0) || fold === ptrType$2.nil) { $s = 1; continue; } /* */ $s = 2; continue; /* if ((((p.flags & 1) >>> 0) === 0) || fold === ptrType$2.nil) { */ case 1: if (sign > 0) { r = appendTable(r, tab); } else { r = appendNegatedTable(r, tab); } $s = 3; continue; /* } else { */ case 2: tmp = $subslice(p.tmpClass, 0, 0); tmp = appendTable(tmp, tab); tmp = appendTable(tmp, fold); p.tmpClass = tmp; _r = cleanClass((p.$ptr_tmpClass || (p.$ptr_tmpClass = new ptrType$1(function() { return this.$target.tmpClass; }, function($v) { this.$target.tmpClass = $v; }, p)))); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } tmp = _r; if (sign > 0) { r = appendClass(r, tmp); } else { r = appendNegatedClass(r, tmp); } /* } */ case 3: _tmp$10 = r; _tmp$11 = t; _tmp$12 = $ifaceNil; out = _tmp$10; rest = _tmp$11; err = _tmp$12; return [out, rest, err]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.parseUnicodeClass }; } $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$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.end = end; $f.err = err; $f.fold = fold; $f.name = name; $f.out = out; $f.p = p; $f.r = r; $f.rest = rest; $f.s = s; $f.seq = seq; $f.sign = sign; $f.t = t; $f.tab = tab; $f.tmp = tmp; $f.$s = $s; $f.$r = $r; return $f; }; parser.prototype.parseUnicodeClass = function(s, r) { return this.$val.parseUnicodeClass(s, r); }; parser.ptr.prototype.parseClass = function(s) { var $ptr, _r, _r$1, _r$2, _r$3, _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, _tuple$2, _tuple$3, _tuple$4, _tuple$5, class$1, err, err$1, err$2, first, hi, lo, nclass, nclass$1, nclass$2, nt, nt$1, nt$2, p, re, rest, rng, s, sign, size, 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; _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$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; class$1 = $f.class$1; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; first = $f.first; hi = $f.hi; lo = $f.lo; nclass = $f.nclass; nclass$1 = $f.nclass$1; nclass$2 = $f.nclass$2; nt = $f.nt; nt$1 = $f.nt$1; nt$2 = $f.nt$2; p = $f.p; re = $f.re; rest = $f.rest; rng = $f.rng; s = $f.s; sign = $f.sign; size = $f.size; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: rest = ""; err = $ifaceNil; p = this; t = s.substring(1); re = p.newRegexp(4); re.Flags = p.flags; re.Rune = $subslice(new sliceType(re.Rune0), 0, 0); sign = 1; if (!(t === "") && (t.charCodeAt(0) === 94)) { sign = -1; t = t.substring(1); if (((p.flags & 4) >>> 0) === 0) { re.Rune = $append(re.Rune, 10, 10); } } class$1 = re.Rune; first = true; /* while (true) { */ case 1: /* if (!(t === "" || !((t.charCodeAt(0) === 93)) || first)) { break; } */ if(!(t === "" || !((t.charCodeAt(0) === 93)) || first)) { $s = 2; continue; } if (!(t === "") && (t.charCodeAt(0) === 45) && (((p.flags & 64) >>> 0) === 0) && !first && ((t.length === 1) || !((t.charCodeAt(1) === 93)))) { _tuple = utf8.DecodeRuneInString(t.substring(1)); size = _tuple[1]; _tmp = ""; _tmp$1 = new Error.ptr("invalid character class range", t.substring(0, (1 + size >> 0))); rest = _tmp; err = _tmp$1; return [rest, err]; } first = false; /* */ if (t.length > 2 && (t.charCodeAt(0) === 91) && (t.charCodeAt(1) === 58)) { $s = 3; continue; } /* */ $s = 4; continue; /* if (t.length > 2 && (t.charCodeAt(0) === 91) && (t.charCodeAt(1) === 58)) { */ case 3: _r = p.parseNamedClass(t, class$1); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _tuple$1 = _r; nclass = _tuple$1[0]; nt = _tuple$1[1]; err$1 = _tuple$1[2]; if (!($interfaceIsEqual(err$1, $ifaceNil))) { _tmp$2 = ""; _tmp$3 = err$1; rest = _tmp$2; err = _tmp$3; return [rest, err]; } if (!(nclass === sliceType.nil)) { _tmp$4 = nclass; _tmp$5 = nt; class$1 = _tmp$4; t = _tmp$5; /* continue; */ $s = 1; continue; } /* } */ case 4: _r$1 = p.parseUnicodeClass(t, class$1); /* */ $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; nclass$1 = _tuple$2[0]; nt$1 = _tuple$2[1]; err$2 = _tuple$2[2]; if (!($interfaceIsEqual(err$2, $ifaceNil))) { _tmp$6 = ""; _tmp$7 = err$2; rest = _tmp$6; err = _tmp$7; return [rest, err]; } /* */ if (!(nclass$1 === sliceType.nil)) { $s = 7; continue; } /* */ $s = 8; continue; /* if (!(nclass$1 === sliceType.nil)) { */ case 7: _tmp$8 = nclass$1; _tmp$9 = nt$1; class$1 = _tmp$8; t = _tmp$9; /* continue; */ $s = 1; continue; /* } */ case 8: _r$2 = p.parsePerlClassEscape(t, class$1); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } _tuple$3 = _r$2; nclass$2 = _tuple$3[0]; nt$2 = _tuple$3[1]; /* */ if (!(nclass$2 === sliceType.nil)) { $s = 10; continue; } /* */ $s = 11; continue; /* if (!(nclass$2 === sliceType.nil)) { */ case 10: _tmp$10 = nclass$2; _tmp$11 = nt$2; class$1 = _tmp$10; t = _tmp$11; /* continue; */ $s = 1; continue; /* } */ case 11: rng = t; _tmp$12 = 0; _tmp$13 = 0; lo = _tmp$12; hi = _tmp$13; _tuple$4 = p.parseClassChar(t, s); lo = _tuple$4[0]; t = _tuple$4[1]; err$2 = _tuple$4[2]; if (!($interfaceIsEqual(err$2, $ifaceNil))) { _tmp$14 = ""; _tmp$15 = err$2; rest = _tmp$14; err = _tmp$15; return [rest, err]; } hi = lo; if (t.length >= 2 && (t.charCodeAt(0) === 45) && !((t.charCodeAt(1) === 93))) { t = t.substring(1); _tuple$5 = p.parseClassChar(t, s); hi = _tuple$5[0]; t = _tuple$5[1]; err$2 = _tuple$5[2]; if (!($interfaceIsEqual(err$2, $ifaceNil))) { _tmp$16 = ""; _tmp$17 = err$2; rest = _tmp$16; err = _tmp$17; return [rest, err]; } if (hi < lo) { rng = rng.substring(0, (rng.length - t.length >> 0)); _tmp$18 = ""; _tmp$19 = new Error.ptr("invalid character class range", rng); rest = _tmp$18; err = _tmp$19; return [rest, err]; } } if (((p.flags & 1) >>> 0) === 0) { class$1 = appendRange(class$1, lo, hi); } else { class$1 = appendFoldedRange(class$1, lo, hi); } /* } */ $s = 1; continue; case 2: t = t.substring(1); re.Rune = class$1; _r$3 = cleanClass((re.$ptr_Rune || (re.$ptr_Rune = new ptrType$1(function() { return this.$target.Rune; }, function($v) { this.$target.Rune = $v; }, re)))); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } class$1 = _r$3; if (sign < 0) { class$1 = negateClass(class$1); } re.Rune = class$1; p.push(re); _tmp$20 = t; _tmp$21 = $ifaceNil; rest = _tmp$20; err = _tmp$21; return [rest, err]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.parseClass }; } $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$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$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.class$1 = class$1; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.first = first; $f.hi = hi; $f.lo = lo; $f.nclass = nclass; $f.nclass$1 = nclass$1; $f.nclass$2 = nclass$2; $f.nt = nt; $f.nt$1 = nt$1; $f.nt$2 = nt$2; $f.p = p; $f.re = re; $f.rest = rest; $f.rng = rng; $f.s = s; $f.sign = sign; $f.size = size; $f.t = t; $f.$s = $s; $f.$r = $r; return $f; }; parser.prototype.parseClass = function(s) { return this.$val.parseClass(s); }; cleanClass = function(rp) { var $ptr, _tmp, _tmp$1, hi, i, lo, r, rp, w, 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; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; hi = $f.hi; i = $f.i; lo = $f.lo; r = $f.r; rp = $f.rp; w = $f.w; 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 = sort.Sort((x = new ranges.ptr(rp), new x.constructor.elem(x))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } r = rp.$get(); if (r.$length < 2) { return r; } w = 2; i = 2; while (true) { if (!(i < r.$length)) { break; } _tmp = ((i < 0 || i >= r.$length) ? $throwRuntimeError("index out of range") : r.$array[r.$offset + i]); _tmp$1 = (x$1 = i + 1 >> 0, ((x$1 < 0 || x$1 >= r.$length) ? $throwRuntimeError("index out of range") : r.$array[r.$offset + x$1])); lo = _tmp; hi = _tmp$1; if (lo <= ((x$2 = w - 1 >> 0, ((x$2 < 0 || x$2 >= r.$length) ? $throwRuntimeError("index out of range") : r.$array[r.$offset + x$2])) + 1 >> 0)) { if (hi > (x$3 = w - 1 >> 0, ((x$3 < 0 || x$3 >= r.$length) ? $throwRuntimeError("index out of range") : r.$array[r.$offset + x$3]))) { (x$4 = w - 1 >> 0, ((x$4 < 0 || x$4 >= r.$length) ? $throwRuntimeError("index out of range") : r.$array[r.$offset + x$4] = hi)); } i = i + (2) >> 0; continue; } ((w < 0 || w >= r.$length) ? $throwRuntimeError("index out of range") : r.$array[r.$offset + w] = lo); (x$5 = w + 1 >> 0, ((x$5 < 0 || x$5 >= r.$length) ? $throwRuntimeError("index out of range") : r.$array[r.$offset + x$5] = hi)); w = w + (2) >> 0; i = i + (2) >> 0; } return $subslice(r, 0, w); /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: cleanClass }; } $f.$ptr = $ptr; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f.hi = hi; $f.i = i; $f.lo = lo; $f.r = r; $f.rp = rp; $f.w = w; $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; }; appendLiteral = function(r, x, flags) { var $ptr, flags, r, x; if (!((((flags & 1) >>> 0) === 0))) { return appendFoldedRange(r, x, x); } return appendRange(r, x, x); }; appendRange = function(r, lo, hi) { var $ptr, _tmp, _tmp$1, hi, i, lo, n, r, rhi, rlo, x, x$1, x$2, x$3; n = r.$length; i = 2; while (true) { if (!(i <= 4)) { break; } if (n >= i) { _tmp = (x = n - i >> 0, ((x < 0 || x >= r.$length) ? $throwRuntimeError("index out of range") : r.$array[r.$offset + x])); _tmp$1 = (x$1 = (n - i >> 0) + 1 >> 0, ((x$1 < 0 || x$1 >= r.$length) ? $throwRuntimeError("index out of range") : r.$array[r.$offset + x$1])); rlo = _tmp; rhi = _tmp$1; if (lo <= (rhi + 1 >> 0) && rlo <= (hi + 1 >> 0)) { if (lo < rlo) { (x$2 = n - i >> 0, ((x$2 < 0 || x$2 >= r.$length) ? $throwRuntimeError("index out of range") : r.$array[r.$offset + x$2] = lo)); } if (hi > rhi) { (x$3 = (n - i >> 0) + 1 >> 0, ((x$3 < 0 || x$3 >= r.$length) ? $throwRuntimeError("index out of range") : r.$array[r.$offset + x$3] = hi)); } return r; } } i = i + (2) >> 0; } return $append(r, lo, hi); }; appendFoldedRange = function(r, lo, hi) { var $ptr, c, f, hi, lo, r; if (lo <= 65 && hi >= 71903) { return appendRange(r, lo, hi); } if (hi < 65 || lo > 71903) { return appendRange(r, lo, hi); } if (lo < 65) { r = appendRange(r, lo, 64); lo = 65; } if (hi > 71903) { r = appendRange(r, 71904, hi); hi = 71903; } c = lo; while (true) { if (!(c <= hi)) { break; } r = appendRange(r, c, c); f = unicode.SimpleFold(c); while (true) { if (!(!((f === c)))) { break; } r = appendRange(r, f, f); f = unicode.SimpleFold(f); } c = c + (1) >> 0; } return r; }; appendClass = function(r, x) { var $ptr, i, r, x, x$1; i = 0; while (true) { if (!(i < x.$length)) { break; } r = appendRange(r, ((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i]), (x$1 = i + 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1]))); i = i + (2) >> 0; } return r; }; appendFoldedClass = function(r, x) { var $ptr, i, r, x, x$1; i = 0; while (true) { if (!(i < x.$length)) { break; } r = appendFoldedRange(r, ((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i]), (x$1 = i + 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1]))); i = i + (2) >> 0; } return r; }; appendNegatedClass = function(r, x) { var $ptr, _tmp, _tmp$1, hi, i, lo, nextLo, r, x, x$1; nextLo = 0; i = 0; while (true) { if (!(i < x.$length)) { break; } _tmp = ((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i]); _tmp$1 = (x$1 = i + 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1])); lo = _tmp; hi = _tmp$1; if (nextLo <= (lo - 1 >> 0)) { r = appendRange(r, nextLo, lo - 1 >> 0); } nextLo = hi + 1 >> 0; i = i + (2) >> 0; } if (nextLo <= 1114111) { r = appendRange(r, nextLo, 1114111); } return r; }; appendTable = function(r, x) { var $ptr, _i, _i$1, _ref, _ref$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, c, c$1, hi, hi$1, lo, lo$1, r, stride, stride$1, x, xr, xr$1; _ref = x.R16; _i = 0; while (true) { if (!(_i < _ref.$length)) { break; } xr = $clone(((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]), unicode.Range16); _tmp = (xr.Lo >> 0); _tmp$1 = (xr.Hi >> 0); _tmp$2 = (xr.Stride >> 0); lo = _tmp; hi = _tmp$1; stride = _tmp$2; if (stride === 1) { r = appendRange(r, lo, hi); _i++; continue; } c = lo; while (true) { if (!(c <= hi)) { break; } r = appendRange(r, c, c); c = c + (stride) >> 0; } _i++; } _ref$1 = x.R32; _i$1 = 0; while (true) { if (!(_i$1 < _ref$1.$length)) { break; } xr$1 = $clone(((_i$1 < 0 || _i$1 >= _ref$1.$length) ? $throwRuntimeError("index out of range") : _ref$1.$array[_ref$1.$offset + _i$1]), unicode.Range32); _tmp$3 = (xr$1.Lo >> 0); _tmp$4 = (xr$1.Hi >> 0); _tmp$5 = (xr$1.Stride >> 0); lo$1 = _tmp$3; hi$1 = _tmp$4; stride$1 = _tmp$5; if (stride$1 === 1) { r = appendRange(r, lo$1, hi$1); _i$1++; continue; } c$1 = lo$1; while (true) { if (!(c$1 <= hi$1)) { break; } r = appendRange(r, c$1, c$1); c$1 = c$1 + (stride$1) >> 0; } _i$1++; } return r; }; appendNegatedTable = function(r, x) { var $ptr, _i, _i$1, _ref, _ref$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, c, c$1, hi, hi$1, lo, lo$1, nextLo, r, stride, stride$1, x, xr, xr$1; nextLo = 0; _ref = x.R16; _i = 0; while (true) { if (!(_i < _ref.$length)) { break; } xr = $clone(((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]), unicode.Range16); _tmp = (xr.Lo >> 0); _tmp$1 = (xr.Hi >> 0); _tmp$2 = (xr.Stride >> 0); lo = _tmp; hi = _tmp$1; stride = _tmp$2; if (stride === 1) { if (nextLo <= (lo - 1 >> 0)) { r = appendRange(r, nextLo, lo - 1 >> 0); } nextLo = hi + 1 >> 0; _i++; continue; } c = lo; while (true) { if (!(c <= hi)) { break; } if (nextLo <= (c - 1 >> 0)) { r = appendRange(r, nextLo, c - 1 >> 0); } nextLo = c + 1 >> 0; c = c + (stride) >> 0; } _i++; } _ref$1 = x.R32; _i$1 = 0; while (true) { if (!(_i$1 < _ref$1.$length)) { break; } xr$1 = $clone(((_i$1 < 0 || _i$1 >= _ref$1.$length) ? $throwRuntimeError("index out of range") : _ref$1.$array[_ref$1.$offset + _i$1]), unicode.Range32); _tmp$3 = (xr$1.Lo >> 0); _tmp$4 = (xr$1.Hi >> 0); _tmp$5 = (xr$1.Stride >> 0); lo$1 = _tmp$3; hi$1 = _tmp$4; stride$1 = _tmp$5; if (stride$1 === 1) { if (nextLo <= (lo$1 - 1 >> 0)) { r = appendRange(r, nextLo, lo$1 - 1 >> 0); } nextLo = hi$1 + 1 >> 0; _i$1++; continue; } c$1 = lo$1; while (true) { if (!(c$1 <= hi$1)) { break; } if (nextLo <= (c$1 - 1 >> 0)) { r = appendRange(r, nextLo, c$1 - 1 >> 0); } nextLo = c$1 + 1 >> 0; c$1 = c$1 + (stride$1) >> 0; } _i$1++; } if (nextLo <= 1114111) { r = appendRange(r, nextLo, 1114111); } return r; }; negateClass = function(r) { var $ptr, _tmp, _tmp$1, hi, i, lo, nextLo, r, w, x, x$1; nextLo = 0; w = 0; i = 0; while (true) { if (!(i < r.$length)) { break; } _tmp = ((i < 0 || i >= r.$length) ? $throwRuntimeError("index out of range") : r.$array[r.$offset + i]); _tmp$1 = (x = i + 1 >> 0, ((x < 0 || x >= r.$length) ? $throwRuntimeError("index out of range") : r.$array[r.$offset + x])); lo = _tmp; hi = _tmp$1; if (nextLo <= (lo - 1 >> 0)) { ((w < 0 || w >= r.$length) ? $throwRuntimeError("index out of range") : r.$array[r.$offset + w] = nextLo); (x$1 = w + 1 >> 0, ((x$1 < 0 || x$1 >= r.$length) ? $throwRuntimeError("index out of range") : r.$array[r.$offset + x$1] = lo - 1 >> 0)); w = w + (2) >> 0; } nextLo = hi + 1 >> 0; i = i + (2) >> 0; } r = $subslice(r, 0, w); if (nextLo <= 1114111) { r = $append(r, nextLo, 1114111); } return r; }; ranges.ptr.prototype.Less = function(i, j) { var $ptr, i, j, p, ra, x, x$1; ra = $clone(this, ranges); p = ra.p.$get(); i = i * (2) >> 0; j = j * (2) >> 0; return ((i < 0 || i >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + i]) < ((j < 0 || j >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + j]) || (((i < 0 || i >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + i]) === ((j < 0 || j >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + j])) && (x = i + 1 >> 0, ((x < 0 || x >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + x])) > (x$1 = j + 1 >> 0, ((x$1 < 0 || x$1 >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + x$1])); }; ranges.prototype.Less = function(i, j) { return this.$val.Less(i, j); }; ranges.ptr.prototype.Len = function() { var $ptr, _q, ra; ra = $clone(this, ranges); return (_q = ra.p.$get().$length / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); }; ranges.prototype.Len = function() { return this.$val.Len(); }; ranges.ptr.prototype.Swap = function(i, j) { var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, i, j, p, ra, x, x$1, x$2, x$3; ra = $clone(this, ranges); p = ra.p.$get(); i = i * (2) >> 0; j = j * (2) >> 0; _tmp = ((j < 0 || j >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + j]); _tmp$1 = (x = j + 1 >> 0, ((x < 0 || x >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + x])); _tmp$2 = ((i < 0 || i >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + i]); _tmp$3 = (x$1 = i + 1 >> 0, ((x$1 < 0 || x$1 >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + x$1])); ((i < 0 || i >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + i] = _tmp); (x$2 = i + 1 >> 0, ((x$2 < 0 || x$2 >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + x$2] = _tmp$1)); ((j < 0 || j >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + j] = _tmp$2); (x$3 = j + 1 >> 0, ((x$3 < 0 || x$3 >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + x$3] = _tmp$3)); }; ranges.prototype.Swap = function(i, j) { return this.$val.Swap(i, j); }; checkUTF8 = function(s) { var $ptr, _tuple, rune, s, size; while (true) { if (!(!(s === ""))) { break; } _tuple = utf8.DecodeRuneInString(s); rune = _tuple[0]; size = _tuple[1]; if ((rune === 65533) && (size === 1)) { return new Error.ptr("invalid UTF-8", s); } s = s.substring(size); } return $ifaceNil; }; nextRune = function(s) { var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, c, err, s, size, t; c = 0; t = ""; err = $ifaceNil; _tuple = utf8.DecodeRuneInString(s); c = _tuple[0]; size = _tuple[1]; if ((c === 65533) && (size === 1)) { _tmp = 0; _tmp$1 = ""; _tmp$2 = new Error.ptr("invalid UTF-8", s); c = _tmp; t = _tmp$1; err = _tmp$2; return [c, t, err]; } _tmp$3 = c; _tmp$4 = s.substring(size); _tmp$5 = $ifaceNil; c = _tmp$3; t = _tmp$4; err = _tmp$5; return [c, t, err]; }; isalnum = function(c) { var $ptr, c; return 48 <= c && c <= 57 || 65 <= c && c <= 90 || 97 <= c && c <= 122; }; unhex = function(c) { var $ptr, c; if (48 <= c && c <= 57) { return c - 48 >> 0; } if (97 <= c && c <= 102) { return (c - 97 >> 0) + 10 >> 0; } if (65 <= c && c <= 70) { return (c - 65 >> 0) + 10 >> 0; } return -1; }; InstOp.prototype.String = function() { var $ptr, i; i = this.$val; if ((i >>> 0) >= (instOpNames.$length >>> 0)) { return ""; } return ((i < 0 || i >= instOpNames.$length) ? $throwRuntimeError("index out of range") : instOpNames.$array[instOpNames.$offset + i]); }; $ptrType(InstOp).prototype.String = function() { return new InstOp(this.$get()).String(); }; EmptyOpContext = function(r1, r2) { var $ptr, boundary, op, r1, r2; op = 32; boundary = 0; if (IsWordChar(r1)) { boundary = 1; } else if (r1 === 10) { op = (op | (1)) >>> 0; } else if (r1 < 0) { op = (op | (5)) >>> 0; } if (IsWordChar(r2)) { boundary = (boundary ^ (1)) << 24 >>> 24; } else if (r2 === 10) { op = (op | (2)) >>> 0; } else if (r2 < 0) { op = (op | (10)) >>> 0; } if (!((boundary === 0))) { op = (op ^ (48)) << 24 >>> 24; } return op; }; $pkg.EmptyOpContext = EmptyOpContext; IsWordChar = function(r) { var $ptr, r; return 65 <= r && r <= 90 || 97 <= r && r <= 122 || 48 <= r && r <= 57 || (r === 95); }; $pkg.IsWordChar = IsWordChar; Prog.ptr.prototype.String = function() { var $ptr, b, p; p = this; b = $clone(new bytes.Buffer.ptr(), bytes.Buffer); dumpProg(b, p); return b.String(); }; Prog.prototype.String = function() { return this.$val.String(); }; Prog.ptr.prototype.skipNop = function(pc) { var $ptr, i, p, pc, x, x$1; p = this; i = (x = p.Inst, ((pc < 0 || pc >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + pc])); while (true) { if (!((i.Op === 6) || (i.Op === 2))) { break; } pc = i.Out; i = (x$1 = p.Inst, ((pc < 0 || pc >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + pc])); } return [i, pc]; }; Prog.prototype.skipNop = function(pc) { return this.$val.skipNop(pc); }; Inst.ptr.prototype.op = function() { var $ptr, _ref, i, op; i = this; op = i.Op; _ref = op; if (_ref === 8 || _ref === 9 || _ref === 10) { op = 7; } return op; }; Inst.prototype.op = function() { return this.$val.op(); }; Prog.ptr.prototype.Prefix = function() { var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, buf, complete, i, p, prefix, x; prefix = ""; complete = false; p = this; _tuple = p.skipNop((p.Start >>> 0)); i = _tuple[0]; if (!((i.op() === 7)) || !((i.Rune.$length === 1))) { _tmp = ""; _tmp$1 = i.Op === 4; prefix = _tmp; complete = _tmp$1; return [prefix, complete]; } buf = $clone(new bytes.Buffer.ptr(), bytes.Buffer); while (true) { if (!((i.op() === 7) && (i.Rune.$length === 1) && ((((i.Arg << 16 >>> 16) & 1) >>> 0) === 0))) { break; } buf.WriteRune((x = i.Rune, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0]))); _tuple$1 = p.skipNop(i.Out); i = _tuple$1[0]; } _tmp$2 = buf.String(); _tmp$3 = i.Op === 4; prefix = _tmp$2; complete = _tmp$3; return [prefix, complete]; }; Prog.prototype.Prefix = function() { return this.$val.Prefix(); }; Prog.ptr.prototype.StartCond = function() { var $ptr, _ref, flag, i, p, pc, x, x$1; p = this; flag = 0; pc = (p.Start >>> 0); i = (x = p.Inst, ((pc < 0 || pc >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + pc])); Loop: while (true) { _ref = i.Op; if (_ref === 3) { flag = (flag | ((i.Arg << 24 >>> 24))) >>> 0; } else if (_ref === 5) { return 255; } else if (_ref === 2 || _ref === 6) { } else { break Loop; } pc = i.Out; i = (x$1 = p.Inst, ((pc < 0 || pc >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + pc])); } return flag; }; Prog.prototype.StartCond = function() { return this.$val.StartCond(); }; Inst.ptr.prototype.MatchRune = function(r) { var $ptr, i, r; i = this; return !((i.MatchRunePos(r) === -1)); }; Inst.prototype.MatchRune = function(r) { return this.$val.MatchRune(r); }; Inst.ptr.prototype.MatchRunePos = function(r) { var $ptr, _q, _q$1, _q$2, c, hi, i, j, lo, m, r, r0, r1, rune, x, x$1, x$2; i = this; rune = i.Rune; if (rune.$length === 1) { r0 = (0 >= rune.$length ? $throwRuntimeError("index out of range") : rune.$array[rune.$offset + 0]); if (r === r0) { return 0; } if (!(((((i.Arg << 16 >>> 16) & 1) >>> 0) === 0))) { r1 = unicode.SimpleFold(r0); while (true) { if (!(!((r1 === r0)))) { break; } if (r === r1) { return 0; } r1 = unicode.SimpleFold(r1); } } return -1; } j = 0; while (true) { if (!(j < rune.$length && j <= 8)) { break; } if (r < ((j < 0 || j >= rune.$length) ? $throwRuntimeError("index out of range") : rune.$array[rune.$offset + j])) { return -1; } if (r <= (x = j + 1 >> 0, ((x < 0 || x >= rune.$length) ? $throwRuntimeError("index out of range") : rune.$array[rune.$offset + x]))) { return (_q = j / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); } j = j + (2) >> 0; } lo = 0; hi = (_q$1 = rune.$length / 2, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")); while (true) { if (!(lo < hi)) { break; } m = lo + (_q$2 = ((hi - lo >> 0)) / 2, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >> 0 : $throwRuntimeError("integer divide by zero")) >> 0; c = (x$1 = 2 * m >> 0, ((x$1 < 0 || x$1 >= rune.$length) ? $throwRuntimeError("index out of range") : rune.$array[rune.$offset + x$1])); if (c <= r) { if (r <= (x$2 = (2 * m >> 0) + 1 >> 0, ((x$2 < 0 || x$2 >= rune.$length) ? $throwRuntimeError("index out of range") : rune.$array[rune.$offset + x$2]))) { return m; } lo = m + 1 >> 0; } else { hi = m; } } return -1; }; Inst.prototype.MatchRunePos = function(r) { return this.$val.MatchRunePos(r); }; wordRune = function(r) { var $ptr, r; return (r === 95) || (65 <= r && r <= 90) || (97 <= r && r <= 122) || (48 <= r && r <= 57); }; Inst.ptr.prototype.MatchEmptyWidth = function(before, after) { var $ptr, _ref, after, before, i; i = this; _ref = (i.Arg << 24 >>> 24); if (_ref === 1) { return (before === 10) || (before === -1); } else if (_ref === 2) { return (after === 10) || (after === -1); } else if (_ref === 4) { return before === -1; } else if (_ref === 8) { return after === -1; } else if (_ref === 16) { return !(wordRune(before) === wordRune(after)); } else if (_ref === 32) { return wordRune(before) === wordRune(after); } $panic(new $String("unknown empty width arg")); }; Inst.prototype.MatchEmptyWidth = function(before, after) { return this.$val.MatchEmptyWidth(before, after); }; Inst.ptr.prototype.String = function() { var $ptr, b, i; i = this; b = $clone(new bytes.Buffer.ptr(), bytes.Buffer); dumpInst(b, i); return b.String(); }; Inst.prototype.String = function() { return this.$val.String(); }; bw = function(b, args) { var $ptr, _i, _ref, args, b, s; _ref = args; _i = 0; while (true) { if (!(_i < _ref.$length)) { break; } s = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]); b.WriteString(s); _i++; } }; dumpProg = function(b, p) { var $ptr, _i, _ref, b, i, j, p, pc, x; _ref = p.Inst; _i = 0; while (true) { if (!(_i < _ref.$length)) { break; } j = _i; i = (x = p.Inst, ((j < 0 || j >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + j])); pc = strconv.Itoa(j); if (pc.length < 3) { b.WriteString(" ".substring(pc.length)); } if (j === p.Start) { pc = pc + ("*"); } bw(b, new sliceType$3([pc, "\t"])); dumpInst(b, i); bw(b, new sliceType$3(["\n"])); _i++; } }; u32 = function(i) { var $ptr, i; return strconv.FormatUint(new $Uint64(0, i), 10); }; dumpInst = function(b, i) { var $ptr, _ref, b, i; _ref = i.Op; if (_ref === 0) { bw(b, new sliceType$3(["alt -> ", u32(i.Out), ", ", u32(i.Arg)])); } else if (_ref === 1) { bw(b, new sliceType$3(["altmatch -> ", u32(i.Out), ", ", u32(i.Arg)])); } else if (_ref === 2) { bw(b, new sliceType$3(["cap ", u32(i.Arg), " -> ", u32(i.Out)])); } else if (_ref === 3) { bw(b, new sliceType$3(["empty ", u32(i.Arg), " -> ", u32(i.Out)])); } else if (_ref === 4) { bw(b, new sliceType$3(["match"])); } else if (_ref === 5) { bw(b, new sliceType$3(["fail"])); } else if (_ref === 6) { bw(b, new sliceType$3(["nop -> ", u32(i.Out)])); } else if (_ref === 7) { if (i.Rune === sliceType.nil) { bw(b, new sliceType$3(["rune "])); } bw(b, new sliceType$3(["rune ", strconv.QuoteToASCII($runesToString(i.Rune))])); if (!(((((i.Arg << 16 >>> 16) & 1) >>> 0) === 0))) { bw(b, new sliceType$3(["/i"])); } bw(b, new sliceType$3([" -> ", u32(i.Out)])); } else if (_ref === 8) { bw(b, new sliceType$3(["rune1 ", strconv.QuoteToASCII($runesToString(i.Rune)), " -> ", u32(i.Out)])); } else if (_ref === 9) { bw(b, new sliceType$3(["any -> ", u32(i.Out)])); } else if (_ref === 10) { bw(b, new sliceType$3(["anynotnl -> ", u32(i.Out)])); } }; Regexp.ptr.prototype.Equal = function(y) { var $ptr, _i, _i$1, _ref, _ref$1, _ref$2, i, i$1, r, sub, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8, y; x = this; if (x === ptrType.nil || y === ptrType.nil) { return x === y; } if (!((x.Op === y.Op))) { return false; } _ref = x.Op; if (_ref === 10) { if (!((((x.Flags & 256) >>> 0) === ((y.Flags & 256) >>> 0)))) { return false; } } else if (_ref === 3 || _ref === 4) { if (!((x.Rune.$length === y.Rune.$length))) { return false; } _ref$1 = x.Rune; _i = 0; while (true) { if (!(_i < _ref$1.$length)) { break; } i = _i; r = ((_i < 0 || _i >= _ref$1.$length) ? $throwRuntimeError("index out of range") : _ref$1.$array[_ref$1.$offset + _i]); if (!((r === (x$1 = y.Rune, ((i < 0 || i >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + i]))))) { return false; } _i++; } } else if (_ref === 19 || _ref === 18) { if (!((x.Sub.$length === y.Sub.$length))) { return false; } _ref$2 = x.Sub; _i$1 = 0; while (true) { if (!(_i$1 < _ref$2.$length)) { break; } i$1 = _i$1; sub = ((_i$1 < 0 || _i$1 >= _ref$2.$length) ? $throwRuntimeError("index out of range") : _ref$2.$array[_ref$2.$offset + _i$1]); if (!sub.Equal((x$2 = y.Sub, ((i$1 < 0 || i$1 >= x$2.$length) ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + i$1])))) { return false; } _i$1++; } } else if (_ref === 14 || _ref === 15 || _ref === 16) { if (!((((x.Flags & 32) >>> 0) === ((y.Flags & 32) >>> 0))) || !(x$3 = x.Sub, (0 >= x$3.$length ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + 0])).Equal((x$4 = y.Sub, (0 >= x$4.$length ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + 0])))) { return false; } } else if (_ref === 17) { if (!((((x.Flags & 32) >>> 0) === ((y.Flags & 32) >>> 0))) || !((x.Min === y.Min)) || !((x.Max === y.Max)) || !(x$5 = x.Sub, (0 >= x$5.$length ? $throwRuntimeError("index out of range") : x$5.$array[x$5.$offset + 0])).Equal((x$6 = y.Sub, (0 >= x$6.$length ? $throwRuntimeError("index out of range") : x$6.$array[x$6.$offset + 0])))) { return false; } } else if (_ref === 13) { if (!((x.Cap === y.Cap)) || !(x.Name === y.Name) || !(x$7 = x.Sub, (0 >= x$7.$length ? $throwRuntimeError("index out of range") : x$7.$array[x$7.$offset + 0])).Equal((x$8 = y.Sub, (0 >= x$8.$length ? $throwRuntimeError("index out of range") : x$8.$array[x$8.$offset + 0])))) { return false; } } return true; }; Regexp.prototype.Equal = function(y) { return this.$val.Equal(y); }; writeRegexp = function(b, re) { var $ptr, _i, _i$1, _i$2, _r, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _tmp, _tmp$1, _tmp$2, _tmp$3, b, hi, hi$1, i, i$1, i$2, lo, lo$1, r, re, sub, sub$1, sub$2, x, x$1, x$10, x$11, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9; _ref = re.Op; switch (0) { default: if (_ref === 1) { b.WriteString("[^\\x00-\\x{10FFFF}]"); } else if (_ref === 2) { b.WriteString("(?:)"); } else if (_ref === 3) { if (!((((re.Flags & 1) >>> 0) === 0))) { b.WriteString("(?i:"); } _ref$1 = re.Rune; _i = 0; while (true) { if (!(_i < _ref$1.$length)) { break; } r = ((_i < 0 || _i >= _ref$1.$length) ? $throwRuntimeError("index out of range") : _ref$1.$array[_ref$1.$offset + _i]); escape(b, r, false); _i++; } if (!((((re.Flags & 1) >>> 0) === 0))) { b.WriteString(")"); } } else if (_ref === 4) { if (!(((_r = re.Rune.$length % 2, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) === 0))) { b.WriteString("[invalid char class]"); break; } b.WriteRune(91); if (re.Rune.$length === 0) { b.WriteString("^\\x00-\\x{10FFFF}"); } else if (((x = re.Rune, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0])) === 0) && ((x$1 = re.Rune, x$2 = re.Rune.$length - 1 >> 0, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])) === 1114111)) { b.WriteRune(94); i = 1; while (true) { if (!(i < (re.Rune.$length - 1 >> 0))) { break; } _tmp = (x$3 = re.Rune, ((i < 0 || i >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + i])) + 1 >> 0; _tmp$1 = (x$4 = re.Rune, x$5 = i + 1 >> 0, ((x$5 < 0 || x$5 >= x$4.$length) ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + x$5])) - 1 >> 0; lo = _tmp; hi = _tmp$1; escape(b, lo, lo === 45); if (!((lo === hi))) { b.WriteRune(45); escape(b, hi, hi === 45); } i = i + (2) >> 0; } } else { i$1 = 0; while (true) { if (!(i$1 < re.Rune.$length)) { break; } _tmp$2 = (x$6 = re.Rune, ((i$1 < 0 || i$1 >= x$6.$length) ? $throwRuntimeError("index out of range") : x$6.$array[x$6.$offset + i$1])); _tmp$3 = (x$7 = re.Rune, x$8 = i$1 + 1 >> 0, ((x$8 < 0 || x$8 >= x$7.$length) ? $throwRuntimeError("index out of range") : x$7.$array[x$7.$offset + x$8])); lo$1 = _tmp$2; hi$1 = _tmp$3; escape(b, lo$1, lo$1 === 45); if (!((lo$1 === hi$1))) { b.WriteRune(45); escape(b, hi$1, hi$1 === 45); } i$1 = i$1 + (2) >> 0; } } b.WriteRune(93); } else if (_ref === 5) { b.WriteString("(?-s:.)"); } else if (_ref === 6) { b.WriteString("(?s:.)"); } else if (_ref === 7) { b.WriteRune(94); } else if (_ref === 8) { b.WriteRune(36); } else if (_ref === 9) { b.WriteString("\\A"); } else if (_ref === 10) { if (!((((re.Flags & 256) >>> 0) === 0))) { b.WriteString("(?-m:$)"); } else { b.WriteString("\\z"); } } else if (_ref === 11) { b.WriteString("\\b"); } else if (_ref === 12) { b.WriteString("\\B"); } else if (_ref === 13) { if (!(re.Name === "")) { b.WriteString("(?P<"); b.WriteString(re.Name); b.WriteRune(62); } else { b.WriteRune(40); } if (!(((x$9 = re.Sub, (0 >= x$9.$length ? $throwRuntimeError("index out of range") : x$9.$array[x$9.$offset + 0])).Op === 2))) { writeRegexp(b, (x$10 = re.Sub, (0 >= x$10.$length ? $throwRuntimeError("index out of range") : x$10.$array[x$10.$offset + 0]))); } b.WriteRune(41); } else if (_ref === 14 || _ref === 15 || _ref === 16 || _ref === 17) { sub = (x$11 = re.Sub, (0 >= x$11.$length ? $throwRuntimeError("index out of range") : x$11.$array[x$11.$offset + 0])); if (sub.Op > 13 || (sub.Op === 3) && sub.Rune.$length > 1) { b.WriteString("(?:"); writeRegexp(b, sub); b.WriteString(")"); } else { writeRegexp(b, sub); } _ref$2 = re.Op; if (_ref$2 === 14) { b.WriteRune(42); } else if (_ref$2 === 15) { b.WriteRune(43); } else if (_ref$2 === 16) { b.WriteRune(63); } else if (_ref$2 === 17) { b.WriteRune(123); b.WriteString(strconv.Itoa(re.Min)); if (!((re.Max === re.Min))) { b.WriteRune(44); if (re.Max >= 0) { b.WriteString(strconv.Itoa(re.Max)); } } b.WriteRune(125); } if (!((((re.Flags & 32) >>> 0) === 0))) { b.WriteRune(63); } } else if (_ref === 18) { _ref$3 = re.Sub; _i$1 = 0; while (true) { if (!(_i$1 < _ref$3.$length)) { break; } sub$1 = ((_i$1 < 0 || _i$1 >= _ref$3.$length) ? $throwRuntimeError("index out of range") : _ref$3.$array[_ref$3.$offset + _i$1]); if (sub$1.Op === 19) { b.WriteString("(?:"); writeRegexp(b, sub$1); b.WriteString(")"); } else { writeRegexp(b, sub$1); } _i$1++; } } else if (_ref === 19) { _ref$4 = re.Sub; _i$2 = 0; while (true) { if (!(_i$2 < _ref$4.$length)) { break; } i$2 = _i$2; sub$2 = ((_i$2 < 0 || _i$2 >= _ref$4.$length) ? $throwRuntimeError("index out of range") : _ref$4.$array[_ref$4.$offset + _i$2]); if (i$2 > 0) { b.WriteRune(124); } writeRegexp(b, sub$2); _i$2++; } } else { b.WriteString("> 0)) + ">"); } } }; Regexp.ptr.prototype.String = function() { var $ptr, b, re; re = this; b = $clone(new bytes.Buffer.ptr(), bytes.Buffer); writeRegexp(b, re); return b.String(); }; Regexp.prototype.String = function() { return this.$val.String(); }; escape = function(b, r, force) { var $ptr, _ref, b, force, r, s; if (unicode.IsPrint(r)) { if (strings.IndexRune("\\.+*?()|[]{}^$", r) >= 0 || force) { b.WriteRune(92); } b.WriteRune(r); return; } _ref = r; switch (0) { default: if (_ref === 7) { b.WriteString("\\a"); } else if (_ref === 12) { b.WriteString("\\f"); } else if (_ref === 10) { b.WriteString("\\n"); } else if (_ref === 13) { b.WriteString("\\r"); } else if (_ref === 9) { b.WriteString("\\t"); } else if (_ref === 11) { b.WriteString("\\v"); } else { if (r < 256) { b.WriteString("\\x"); s = strconv.FormatInt(new $Int64(0, r), 16); if (s.length === 1) { b.WriteRune(48); } b.WriteString(s); break; } b.WriteString("\\x{"); b.WriteString(strconv.FormatInt(new $Int64(0, r), 16)); b.WriteString("}"); } } }; Regexp.ptr.prototype.MaxCap = function() { var $ptr, _i, _ref, m, n, re, sub; re = this; m = 0; if (re.Op === 13) { m = re.Cap; } _ref = re.Sub; _i = 0; while (true) { if (!(_i < _ref.$length)) { break; } sub = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]); n = sub.MaxCap(); if (m < n) { m = n; } _i++; } return m; }; Regexp.prototype.MaxCap = function() { return this.$val.MaxCap(); }; Regexp.ptr.prototype.CapNames = function() { var $ptr, names, re; re = this; names = $makeSlice(sliceType$3, (re.MaxCap() + 1 >> 0)); re.capNames(names); return names; }; Regexp.prototype.CapNames = function() { return this.$val.CapNames(); }; Regexp.ptr.prototype.capNames = function(names) { var $ptr, _i, _ref, names, re, sub, x; re = this; if (re.Op === 13) { (x = re.Cap, ((x < 0 || x >= names.$length) ? $throwRuntimeError("index out of range") : names.$array[names.$offset + x] = re.Name)); } _ref = re.Sub; _i = 0; while (true) { if (!(_i < _ref.$length)) { break; } sub = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]); sub.capNames(names); _i++; } }; Regexp.prototype.capNames = function(names) { return this.$val.capNames(names); }; Regexp.ptr.prototype.Simplify = function() { var $ptr, _i, _ref, _ref$1, i, i$1, i$2, i$3, nre, nre$1, nre2, nsub, prefix, re, sub, sub$1, sub$2, suffix, x, x$1; re = this; if (re === ptrType.nil) { return ptrType.nil; } _ref = re.Op; if (_ref === 13 || _ref === 18 || _ref === 19) { nre = re; _ref$1 = re.Sub; _i = 0; while (true) { if (!(_i < _ref$1.$length)) { break; } i = _i; sub = ((_i < 0 || _i >= _ref$1.$length) ? $throwRuntimeError("index out of range") : _ref$1.$array[_ref$1.$offset + _i]); nsub = sub.Simplify(); if (nre === re && !(nsub === sub)) { nre = new Regexp.ptr(); $copy(nre, re, Regexp); nre.Rune = sliceType.nil; nre.Sub = $appendSlice($subslice(new sliceType$4(nre.Sub0), 0, 0), $subslice(re.Sub, 0, i)); } if (!(nre === re)) { nre.Sub = $append(nre.Sub, nsub); } _i++; } return nre; } else if (_ref === 14 || _ref === 15 || _ref === 16) { sub$1 = (x = re.Sub, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0])).Simplify(); return simplify1(re.Op, re.Flags, sub$1, re); } else if (_ref === 17) { if ((re.Min === 0) && (re.Max === 0)) { return new Regexp.ptr(2, 0, sliceType$4.nil, arrayType.zero(), sliceType.nil, arrayType$1.zero(), 0, 0, 0, ""); } sub$2 = (x$1 = re.Sub, (0 >= x$1.$length ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + 0])).Simplify(); if (re.Max === -1) { if (re.Min === 0) { return simplify1(14, re.Flags, sub$2, ptrType.nil); } if (re.Min === 1) { return simplify1(15, re.Flags, sub$2, ptrType.nil); } nre$1 = new Regexp.ptr(18, 0, sliceType$4.nil, arrayType.zero(), sliceType.nil, arrayType$1.zero(), 0, 0, 0, ""); nre$1.Sub = $subslice(new sliceType$4(nre$1.Sub0), 0, 0); i$1 = 0; while (true) { if (!(i$1 < (re.Min - 1 >> 0))) { break; } nre$1.Sub = $append(nre$1.Sub, sub$2); i$1 = i$1 + (1) >> 0; } nre$1.Sub = $append(nre$1.Sub, simplify1(15, re.Flags, sub$2, ptrType.nil)); return nre$1; } if ((re.Min === 1) && (re.Max === 1)) { return sub$2; } prefix = ptrType.nil; if (re.Min > 0) { prefix = new Regexp.ptr(18, 0, sliceType$4.nil, arrayType.zero(), sliceType.nil, arrayType$1.zero(), 0, 0, 0, ""); prefix.Sub = $subslice(new sliceType$4(prefix.Sub0), 0, 0); i$2 = 0; while (true) { if (!(i$2 < re.Min)) { break; } prefix.Sub = $append(prefix.Sub, sub$2); i$2 = i$2 + (1) >> 0; } } if (re.Max > re.Min) { suffix = simplify1(16, re.Flags, sub$2, ptrType.nil); i$3 = re.Min + 1 >> 0; while (true) { if (!(i$3 < re.Max)) { break; } nre2 = new Regexp.ptr(18, 0, sliceType$4.nil, arrayType.zero(), sliceType.nil, arrayType$1.zero(), 0, 0, 0, ""); nre2.Sub = $append($subslice(new sliceType$4(nre2.Sub0), 0, 0), sub$2, suffix); suffix = simplify1(16, re.Flags, nre2, ptrType.nil); i$3 = i$3 + (1) >> 0; } if (prefix === ptrType.nil) { return suffix; } prefix.Sub = $append(prefix.Sub, suffix); } if (!(prefix === ptrType.nil)) { return prefix; } return new Regexp.ptr(1, 0, sliceType$4.nil, arrayType.zero(), sliceType.nil, arrayType$1.zero(), 0, 0, 0, ""); } return re; }; Regexp.prototype.Simplify = function() { return this.$val.Simplify(); }; simplify1 = function(op, flags, sub, re) { var $ptr, flags, op, re, sub, x; if (sub.Op === 2) { return sub; } if ((op === sub.Op) && (((flags & 32) >>> 0) === ((sub.Flags & 32) >>> 0))) { return sub; } if (!(re === ptrType.nil) && (re.Op === op) && (((re.Flags & 32) >>> 0) === ((flags & 32) >>> 0)) && sub === (x = re.Sub, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0]))) { return re; } re = new Regexp.ptr(op, flags, sliceType$4.nil, arrayType.zero(), sliceType.nil, arrayType$1.zero(), 0, 0, 0, ""); re.Sub = $append($subslice(new sliceType$4(re.Sub0), 0, 0), sub); return re; }; patchList.methods = [{prop: "next", name: "next", pkg: "regexp/syntax", typ: $funcType([ptrType$3], [patchList], false)}, {prop: "patch", name: "patch", pkg: "regexp/syntax", typ: $funcType([ptrType$3, $Uint32], [], false)}, {prop: "append", name: "append", pkg: "regexp/syntax", typ: $funcType([ptrType$3, patchList], [patchList], false)}]; ptrType$4.methods = [{prop: "init", name: "init", pkg: "regexp/syntax", typ: $funcType([], [], false)}, {prop: "compile", name: "compile", pkg: "regexp/syntax", typ: $funcType([ptrType], [frag], false)}, {prop: "inst", name: "inst", pkg: "regexp/syntax", typ: $funcType([InstOp], [frag], false)}, {prop: "nop", name: "nop", pkg: "regexp/syntax", typ: $funcType([], [frag], false)}, {prop: "fail", name: "fail", pkg: "regexp/syntax", typ: $funcType([], [frag], false)}, {prop: "cap", name: "cap", pkg: "regexp/syntax", typ: $funcType([$Uint32], [frag], false)}, {prop: "cat", name: "cat", pkg: "regexp/syntax", typ: $funcType([frag, frag], [frag], false)}, {prop: "alt", name: "alt", pkg: "regexp/syntax", typ: $funcType([frag, frag], [frag], false)}, {prop: "quest", name: "quest", pkg: "regexp/syntax", typ: $funcType([frag, $Bool], [frag], false)}, {prop: "star", name: "star", pkg: "regexp/syntax", typ: $funcType([frag, $Bool], [frag], false)}, {prop: "plus", name: "plus", pkg: "regexp/syntax", typ: $funcType([frag, $Bool], [frag], false)}, {prop: "empty", name: "empty", pkg: "regexp/syntax", typ: $funcType([EmptyOp], [frag], false)}, {prop: "rune", name: "rune", pkg: "regexp/syntax", typ: $funcType([sliceType, Flags], [frag], false)}]; ptrType$5.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; ErrorCode.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; ptrType$6.methods = [{prop: "newRegexp", name: "newRegexp", pkg: "regexp/syntax", typ: $funcType([Op], [ptrType], false)}, {prop: "reuse", name: "reuse", pkg: "regexp/syntax", typ: $funcType([ptrType], [], false)}, {prop: "push", name: "push", pkg: "regexp/syntax", typ: $funcType([ptrType], [ptrType], false)}, {prop: "maybeConcat", name: "maybeConcat", pkg: "regexp/syntax", typ: $funcType([$Int32, Flags], [$Bool], false)}, {prop: "newLiteral", name: "newLiteral", pkg: "regexp/syntax", typ: $funcType([$Int32, Flags], [ptrType], false)}, {prop: "literal", name: "literal", pkg: "regexp/syntax", typ: $funcType([$Int32], [], false)}, {prop: "op", name: "op", pkg: "regexp/syntax", typ: $funcType([Op], [ptrType], false)}, {prop: "repeat", name: "repeat", pkg: "regexp/syntax", typ: $funcType([Op, $Int, $Int, $String, $String, $String], [$String, $error], false)}, {prop: "concat", name: "concat", pkg: "regexp/syntax", typ: $funcType([], [ptrType], false)}, {prop: "alternate", name: "alternate", pkg: "regexp/syntax", typ: $funcType([], [ptrType], false)}, {prop: "collapse", name: "collapse", pkg: "regexp/syntax", typ: $funcType([sliceType$4, Op], [ptrType], false)}, {prop: "factor", name: "factor", pkg: "regexp/syntax", typ: $funcType([sliceType$4, Flags], [sliceType$4], false)}, {prop: "leadingString", name: "leadingString", pkg: "regexp/syntax", typ: $funcType([ptrType], [sliceType, Flags], false)}, {prop: "removeLeadingString", name: "removeLeadingString", pkg: "regexp/syntax", typ: $funcType([ptrType, $Int], [ptrType], false)}, {prop: "leadingRegexp", name: "leadingRegexp", pkg: "regexp/syntax", typ: $funcType([ptrType], [ptrType], false)}, {prop: "removeLeadingRegexp", name: "removeLeadingRegexp", pkg: "regexp/syntax", typ: $funcType([ptrType, $Bool], [ptrType], false)}, {prop: "parseRepeat", name: "parseRepeat", pkg: "regexp/syntax", typ: $funcType([$String], [$Int, $Int, $String, $Bool], false)}, {prop: "parsePerlFlags", name: "parsePerlFlags", pkg: "regexp/syntax", typ: $funcType([$String], [$String, $error], false)}, {prop: "parseInt", name: "parseInt", pkg: "regexp/syntax", typ: $funcType([$String], [$Int, $String, $Bool], false)}, {prop: "parseVerticalBar", name: "parseVerticalBar", pkg: "regexp/syntax", typ: $funcType([], [$error], false)}, {prop: "swapVerticalBar", name: "swapVerticalBar", pkg: "regexp/syntax", typ: $funcType([], [$Bool], false)}, {prop: "parseRightParen", name: "parseRightParen", pkg: "regexp/syntax", typ: $funcType([], [$error], false)}, {prop: "parseEscape", name: "parseEscape", pkg: "regexp/syntax", typ: $funcType([$String], [$Int32, $String, $error], false)}, {prop: "parseClassChar", name: "parseClassChar", pkg: "regexp/syntax", typ: $funcType([$String, $String], [$Int32, $String, $error], false)}, {prop: "parsePerlClassEscape", name: "parsePerlClassEscape", pkg: "regexp/syntax", typ: $funcType([$String, sliceType], [sliceType, $String], false)}, {prop: "parseNamedClass", name: "parseNamedClass", pkg: "regexp/syntax", typ: $funcType([$String, sliceType], [sliceType, $String, $error], false)}, {prop: "appendGroup", name: "appendGroup", pkg: "regexp/syntax", typ: $funcType([sliceType, charGroup], [sliceType], false)}, {prop: "parseUnicodeClass", name: "parseUnicodeClass", pkg: "regexp/syntax", typ: $funcType([$String, sliceType], [sliceType, $String, $error], false)}, {prop: "parseClass", name: "parseClass", pkg: "regexp/syntax", typ: $funcType([$String], [$String, $error], false)}]; ranges.methods = [{prop: "Less", name: "Less", pkg: "", typ: $funcType([$Int, $Int], [$Bool], false)}, {prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([$Int, $Int], [], false)}]; ptrType$3.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "skipNop", name: "skipNop", pkg: "regexp/syntax", typ: $funcType([$Uint32], [ptrType$7, $Uint32], false)}, {prop: "Prefix", name: "Prefix", pkg: "", typ: $funcType([], [$String, $Bool], false)}, {prop: "StartCond", name: "StartCond", pkg: "", typ: $funcType([], [EmptyOp], false)}]; InstOp.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; ptrType$7.methods = [{prop: "op", name: "op", pkg: "regexp/syntax", typ: $funcType([], [InstOp], false)}, {prop: "MatchRune", name: "MatchRune", pkg: "", typ: $funcType([$Int32], [$Bool], false)}, {prop: "MatchRunePos", name: "MatchRunePos", pkg: "", typ: $funcType([$Int32], [$Int], false)}, {prop: "MatchEmptyWidth", name: "MatchEmptyWidth", pkg: "", typ: $funcType([$Int32, $Int32], [$Bool], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; ptrType.methods = [{prop: "Equal", name: "Equal", pkg: "", typ: $funcType([ptrType], [$Bool], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "MaxCap", name: "MaxCap", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "CapNames", name: "CapNames", pkg: "", typ: $funcType([], [sliceType$3], false)}, {prop: "capNames", name: "capNames", pkg: "regexp/syntax", typ: $funcType([sliceType$3], [], false)}, {prop: "Simplify", name: "Simplify", pkg: "", typ: $funcType([], [ptrType], false)}]; frag.init([{prop: "i", name: "i", pkg: "regexp/syntax", typ: $Uint32, tag: ""}, {prop: "out", name: "out", pkg: "regexp/syntax", typ: patchList, tag: ""}]); compiler.init([{prop: "p", name: "p", pkg: "regexp/syntax", typ: ptrType$3, tag: ""}]); Error.init([{prop: "Code", name: "Code", pkg: "", typ: ErrorCode, tag: ""}, {prop: "Expr", name: "Expr", pkg: "", typ: $String, tag: ""}]); parser.init([{prop: "flags", name: "flags", pkg: "regexp/syntax", typ: Flags, tag: ""}, {prop: "stack", name: "stack", pkg: "regexp/syntax", typ: sliceType$4, tag: ""}, {prop: "free", name: "free", pkg: "regexp/syntax", typ: ptrType, tag: ""}, {prop: "numCap", name: "numCap", pkg: "regexp/syntax", typ: $Int, tag: ""}, {prop: "wholeRegexp", name: "wholeRegexp", pkg: "regexp/syntax", typ: $String, tag: ""}, {prop: "tmpClass", name: "tmpClass", pkg: "regexp/syntax", typ: sliceType, tag: ""}]); charGroup.init([{prop: "sign", name: "sign", pkg: "regexp/syntax", typ: $Int, tag: ""}, {prop: "class$1", name: "class", pkg: "regexp/syntax", typ: sliceType, tag: ""}]); ranges.init([{prop: "p", name: "p", pkg: "regexp/syntax", typ: ptrType$1, tag: ""}]); Prog.init([{prop: "Inst", name: "Inst", pkg: "", typ: sliceType$5, tag: ""}, {prop: "Start", name: "Start", pkg: "", typ: $Int, tag: ""}, {prop: "NumCap", name: "NumCap", pkg: "", typ: $Int, tag: ""}]); Inst.init([{prop: "Op", name: "Op", pkg: "", typ: InstOp, tag: ""}, {prop: "Out", name: "Out", pkg: "", typ: $Uint32, tag: ""}, {prop: "Arg", name: "Arg", pkg: "", typ: $Uint32, tag: ""}, {prop: "Rune", name: "Rune", pkg: "", typ: sliceType, tag: ""}]); Regexp.init([{prop: "Op", name: "Op", pkg: "", typ: Op, tag: ""}, {prop: "Flags", name: "Flags", pkg: "", typ: Flags, tag: ""}, {prop: "Sub", name: "Sub", pkg: "", typ: sliceType$4, tag: ""}, {prop: "Sub0", name: "Sub0", pkg: "", typ: arrayType, tag: ""}, {prop: "Rune", name: "Rune", pkg: "", typ: sliceType, tag: ""}, {prop: "Rune0", name: "Rune0", pkg: "", typ: arrayType$1, tag: ""}, {prop: "Min", name: "Min", pkg: "", typ: $Int, tag: ""}, {prop: "Max", name: "Max", pkg: "", typ: $Int, tag: ""}, {prop: "Cap", name: "Cap", pkg: "", typ: $Int, tag: ""}, {prop: "Name", name: "Name", pkg: "", 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 = sort.$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; } $r = strings.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = unicode.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = utf8.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } anyRuneNotNL = new sliceType([0, 9, 11, 1114111]); anyRune = new sliceType([0, 1114111]); anyTable = new unicode.RangeTable.ptr(new sliceType$1([new unicode.Range16.ptr(0, 65535, 1)]), new sliceType$2([new unicode.Range32.ptr(65536, 1114111, 1)]), 0); code1 = new sliceType([48, 57]); code2 = new sliceType([9, 10, 12, 13, 32, 32]); code3 = new sliceType([48, 57, 65, 90, 95, 95, 97, 122]); perlGroup = (_map = new $Map(), _key = "\\d", _map[_key] = { k: _key, v: new charGroup.ptr(1, code1) }, _key = "\\D", _map[_key] = { k: _key, v: new charGroup.ptr(-1, code1) }, _key = "\\s", _map[_key] = { k: _key, v: new charGroup.ptr(1, code2) }, _key = "\\S", _map[_key] = { k: _key, v: new charGroup.ptr(-1, code2) }, _key = "\\w", _map[_key] = { k: _key, v: new charGroup.ptr(1, code3) }, _key = "\\W", _map[_key] = { k: _key, v: new charGroup.ptr(-1, code3) }, _map); code4 = new sliceType([48, 57, 65, 90, 97, 122]); code5 = new sliceType([65, 90, 97, 122]); code6 = new sliceType([0, 127]); code7 = new sliceType([9, 9, 32, 32]); code8 = new sliceType([0, 31, 127, 127]); code9 = new sliceType([48, 57]); code10 = new sliceType([33, 126]); code11 = new sliceType([97, 122]); code12 = new sliceType([32, 126]); code13 = new sliceType([33, 47, 58, 64, 91, 96, 123, 126]); code14 = new sliceType([9, 13, 32, 32]); code15 = new sliceType([65, 90]); code16 = new sliceType([48, 57, 65, 90, 95, 95, 97, 122]); code17 = new sliceType([48, 57, 65, 70, 97, 102]); posixGroup = (_map$1 = new $Map(), _key$1 = "[:alnum:]", _map$1[_key$1] = { k: _key$1, v: new charGroup.ptr(1, code4) }, _key$1 = "[:^alnum:]", _map$1[_key$1] = { k: _key$1, v: new charGroup.ptr(-1, code4) }, _key$1 = "[:alpha:]", _map$1[_key$1] = { k: _key$1, v: new charGroup.ptr(1, code5) }, _key$1 = "[:^alpha:]", _map$1[_key$1] = { k: _key$1, v: new charGroup.ptr(-1, code5) }, _key$1 = "[:ascii:]", _map$1[_key$1] = { k: _key$1, v: new charGroup.ptr(1, code6) }, _key$1 = "[:^ascii:]", _map$1[_key$1] = { k: _key$1, v: new charGroup.ptr(-1, code6) }, _key$1 = "[:blank:]", _map$1[_key$1] = { k: _key$1, v: new charGroup.ptr(1, code7) }, _key$1 = "[:^blank:]", _map$1[_key$1] = { k: _key$1, v: new charGroup.ptr(-1, code7) }, _key$1 = "[:cntrl:]", _map$1[_key$1] = { k: _key$1, v: new charGroup.ptr(1, code8) }, _key$1 = "[:^cntrl:]", _map$1[_key$1] = { k: _key$1, v: new charGroup.ptr(-1, code8) }, _key$1 = "[:digit:]", _map$1[_key$1] = { k: _key$1, v: new charGroup.ptr(1, code9) }, _key$1 = "[:^digit:]", _map$1[_key$1] = { k: _key$1, v: new charGroup.ptr(-1, code9) }, _key$1 = "[:graph:]", _map$1[_key$1] = { k: _key$1, v: new charGroup.ptr(1, code10) }, _key$1 = "[:^graph:]", _map$1[_key$1] = { k: _key$1, v: new charGroup.ptr(-1, code10) }, _key$1 = "[:lower:]", _map$1[_key$1] = { k: _key$1, v: new charGroup.ptr(1, code11) }, _key$1 = "[:^lower:]", _map$1[_key$1] = { k: _key$1, v: new charGroup.ptr(-1, code11) }, _key$1 = "[:print:]", _map$1[_key$1] = { k: _key$1, v: new charGroup.ptr(1, code12) }, _key$1 = "[:^print:]", _map$1[_key$1] = { k: _key$1, v: new charGroup.ptr(-1, code12) }, _key$1 = "[:punct:]", _map$1[_key$1] = { k: _key$1, v: new charGroup.ptr(1, code13) }, _key$1 = "[:^punct:]", _map$1[_key$1] = { k: _key$1, v: new charGroup.ptr(-1, code13) }, _key$1 = "[:space:]", _map$1[_key$1] = { k: _key$1, v: new charGroup.ptr(1, code14) }, _key$1 = "[:^space:]", _map$1[_key$1] = { k: _key$1, v: new charGroup.ptr(-1, code14) }, _key$1 = "[:upper:]", _map$1[_key$1] = { k: _key$1, v: new charGroup.ptr(1, code15) }, _key$1 = "[:^upper:]", _map$1[_key$1] = { k: _key$1, v: new charGroup.ptr(-1, code15) }, _key$1 = "[:word:]", _map$1[_key$1] = { k: _key$1, v: new charGroup.ptr(1, code16) }, _key$1 = "[:^word:]", _map$1[_key$1] = { k: _key$1, v: new charGroup.ptr(-1, code16) }, _key$1 = "[:xdigit:]", _map$1[_key$1] = { k: _key$1, v: new charGroup.ptr(1, code17) }, _key$1 = "[:^xdigit:]", _map$1[_key$1] = { k: _key$1, v: new charGroup.ptr(-1, code17) }, _map$1); instOpNames = new sliceType$3(["InstAlt", "InstAltMatch", "InstCapture", "InstEmptyWidth", "InstMatch", "InstFail", "InstNop", "InstRune", "InstRune1", "InstRuneAny", "InstRuneAnyNotNL"]); /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; }; $pkg.$init = $init; return $pkg; })(); $packages["flag"] = (function() { var $pkg = {}, $init, errors, fmt, io, os, sort, strconv, time, boolValue, boolFlag, intValue, int64Value, uintValue, uint64Value, stringValue, float64Value, durationValue, Value, ErrorHandling, FlagSet, Flag, sliceType, ptrType, ptrType$1, ptrType$2, ptrType$3, ptrType$4, ptrType$5, ptrType$6, ptrType$7, ptrType$8, ptrType$9, sliceType$1, ptrType$10, ptrType$11, ptrType$12, ptrType$13, ptrType$14, ptrType$15, ptrType$16, sliceType$2, funcType, ptrType$17, funcType$1, mapType, x, newBoolValue, newIntValue, newInt64Value, newUintValue, newUint64Value, newStringValue, newFloat64Value, newDurationValue, sortFlags, PrintDefaults, defaultUsage, Bool, Int, String, Duration, NewFlagSet; errors = $packages["errors"]; fmt = $packages["fmt"]; io = $packages["io"]; os = $packages["os"]; sort = $packages["sort"]; strconv = $packages["strconv"]; time = $packages["time"]; boolValue = $pkg.boolValue = $newType(1, $kindBool, "flag.boolValue", "boolValue", "flag", null); boolFlag = $pkg.boolFlag = $newType(8, $kindInterface, "flag.boolFlag", "boolFlag", "flag", null); intValue = $pkg.intValue = $newType(4, $kindInt, "flag.intValue", "intValue", "flag", null); int64Value = $pkg.int64Value = $newType(8, $kindInt64, "flag.int64Value", "int64Value", "flag", null); uintValue = $pkg.uintValue = $newType(4, $kindUint, "flag.uintValue", "uintValue", "flag", null); uint64Value = $pkg.uint64Value = $newType(8, $kindUint64, "flag.uint64Value", "uint64Value", "flag", null); stringValue = $pkg.stringValue = $newType(8, $kindString, "flag.stringValue", "stringValue", "flag", null); float64Value = $pkg.float64Value = $newType(8, $kindFloat64, "flag.float64Value", "float64Value", "flag", null); durationValue = $pkg.durationValue = $newType(8, $kindInt64, "flag.durationValue", "durationValue", "flag", null); Value = $pkg.Value = $newType(8, $kindInterface, "flag.Value", "Value", "flag", null); ErrorHandling = $pkg.ErrorHandling = $newType(4, $kindInt, "flag.ErrorHandling", "ErrorHandling", "flag", null); FlagSet = $pkg.FlagSet = $newType(0, $kindStruct, "flag.FlagSet", "FlagSet", "flag", function(Usage_, name_, parsed_, actual_, formal_, args_, errorHandling_, output_) { this.$val = this; if (arguments.length === 0) { this.Usage = $throwNilPointerError; this.name = ""; this.parsed = false; this.actual = false; this.formal = false; this.args = sliceType$2.nil; this.errorHandling = 0; this.output = $ifaceNil; return; } this.Usage = Usage_; this.name = name_; this.parsed = parsed_; this.actual = actual_; this.formal = formal_; this.args = args_; this.errorHandling = errorHandling_; this.output = output_; }); Flag = $pkg.Flag = $newType(0, $kindStruct, "flag.Flag", "Flag", "flag", function(Name_, Usage_, Value_, DefValue_) { this.$val = this; if (arguments.length === 0) { this.Name = ""; this.Usage = ""; this.Value = $ifaceNil; this.DefValue = ""; return; } this.Name = Name_; this.Usage = Usage_; this.Value = Value_; this.DefValue = DefValue_; }); sliceType = $sliceType($emptyInterface); ptrType = $ptrType(boolValue); ptrType$1 = $ptrType(intValue); ptrType$2 = $ptrType(int64Value); ptrType$3 = $ptrType(uintValue); ptrType$4 = $ptrType(uint64Value); ptrType$5 = $ptrType(stringValue); ptrType$6 = $ptrType(float64Value); ptrType$7 = $ptrType(durationValue); ptrType$8 = $ptrType(time.Duration); ptrType$9 = $ptrType(Flag); sliceType$1 = $sliceType(ptrType$9); ptrType$10 = $ptrType($Bool); ptrType$11 = $ptrType($Int); ptrType$12 = $ptrType($Int64); ptrType$13 = $ptrType($Uint); ptrType$14 = $ptrType($Uint64); ptrType$15 = $ptrType($String); ptrType$16 = $ptrType($Float64); sliceType$2 = $sliceType($String); funcType = $funcType([ptrType$9], [], false); ptrType$17 = $ptrType(FlagSet); funcType$1 = $funcType([], [], false); mapType = $mapType($String, ptrType$9); newBoolValue = function(val, p) { var $ptr, _ptr, p, val; p.$set(val); return (_ptr = p, new ptrType(function() { return _ptr.$get(); }, function($v) { _ptr.$set($v); }, _ptr.$target)); }; $ptrType(boolValue).prototype.Set = function(s) { var $ptr, _tuple, b, err, s, v; b = this; _tuple = strconv.ParseBool(s); v = _tuple[0]; err = _tuple[1]; b.$set(v); return err; }; $ptrType(boolValue).prototype.Get = function() { var $ptr, b; b = this; return new $Bool(b.$get()); }; $ptrType(boolValue).prototype.String = function() { 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: b = this; _r = fmt.Sprintf("%v", new sliceType([new boolValue(b.$get())])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: $ptrType(boolValue).prototype.String }; } $f.$ptr = $ptr; $f._r = _r; $f.b = b; $f.$s = $s; $f.$r = $r; return $f; }; $ptrType(boolValue).prototype.IsBoolFlag = function() { var $ptr, b; b = this; return true; }; newIntValue = function(val, p) { var $ptr, _ptr, p, val; p.$set(val); return (_ptr = p, new ptrType$1(function() { return (_ptr.$get() >> 0); }, function($v) { _ptr.$set(($v >> 0)); }, _ptr.$target)); }; $ptrType(intValue).prototype.Set = function(s) { var $ptr, _tuple, err, i, s, v; i = this; _tuple = strconv.ParseInt(s, 0, 64); v = _tuple[0]; err = _tuple[1]; i.$set(((v.$low + ((v.$high >> 31) * 4294967296)) >> 0)); return err; }; $ptrType(intValue).prototype.Get = function() { var $ptr, i; i = this; return new $Int((i.$get() >> 0)); }; $ptrType(intValue).prototype.String = 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 = fmt.Sprintf("%v", new sliceType([new intValue(i.$get())])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: $ptrType(intValue).prototype.String }; } $f.$ptr = $ptr; $f._r = _r; $f.i = i; $f.$s = $s; $f.$r = $r; return $f; }; newInt64Value = function(val, p) { var $ptr, _ptr, p, val, x$1; p.$set(val); return (_ptr = p, new ptrType$2(function() { return (x$1 = _ptr.$get(), new int64Value(x$1.$high, x$1.$low)); }, function($v) { _ptr.$set(new $Int64($v.$high, $v.$low)); }, _ptr.$target)); }; $ptrType(int64Value).prototype.Set = function(s) { var $ptr, _tuple, err, i, s, v; i = this; _tuple = strconv.ParseInt(s, 0, 64); v = _tuple[0]; err = _tuple[1]; i.$set(new int64Value(v.$high, v.$low)); return err; }; $ptrType(int64Value).prototype.Get = function() { var $ptr, i, x$1; i = this; return (x$1 = i.$get(), new $Int64(x$1.$high, x$1.$low)); }; $ptrType(int64Value).prototype.String = 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 = fmt.Sprintf("%v", new sliceType([i.$get()])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: $ptrType(int64Value).prototype.String }; } $f.$ptr = $ptr; $f._r = _r; $f.i = i; $f.$s = $s; $f.$r = $r; return $f; }; newUintValue = function(val, p) { var $ptr, _ptr, p, val; p.$set(val); return (_ptr = p, new ptrType$3(function() { return (_ptr.$get() >>> 0); }, function($v) { _ptr.$set(($v >>> 0)); }, _ptr.$target)); }; $ptrType(uintValue).prototype.Set = function(s) { var $ptr, _tuple, err, i, s, v; i = this; _tuple = strconv.ParseUint(s, 0, 64); v = _tuple[0]; err = _tuple[1]; i.$set((v.$low >>> 0)); return err; }; $ptrType(uintValue).prototype.Get = function() { var $ptr, i; i = this; return new $Uint((i.$get() >>> 0)); }; $ptrType(uintValue).prototype.String = 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 = fmt.Sprintf("%v", new sliceType([new uintValue(i.$get())])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: $ptrType(uintValue).prototype.String }; } $f.$ptr = $ptr; $f._r = _r; $f.i = i; $f.$s = $s; $f.$r = $r; return $f; }; newUint64Value = function(val, p) { var $ptr, _ptr, p, val, x$1; p.$set(val); return (_ptr = p, new ptrType$4(function() { return (x$1 = _ptr.$get(), new uint64Value(x$1.$high, x$1.$low)); }, function($v) { _ptr.$set(new $Uint64($v.$high, $v.$low)); }, _ptr.$target)); }; $ptrType(uint64Value).prototype.Set = function(s) { var $ptr, _tuple, err, i, s, v; i = this; _tuple = strconv.ParseUint(s, 0, 64); v = _tuple[0]; err = _tuple[1]; i.$set(new uint64Value(v.$high, v.$low)); return err; }; $ptrType(uint64Value).prototype.Get = function() { var $ptr, i, x$1; i = this; return (x$1 = i.$get(), new $Uint64(x$1.$high, x$1.$low)); }; $ptrType(uint64Value).prototype.String = 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 = fmt.Sprintf("%v", new sliceType([i.$get()])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: $ptrType(uint64Value).prototype.String }; } $f.$ptr = $ptr; $f._r = _r; $f.i = i; $f.$s = $s; $f.$r = $r; return $f; }; newStringValue = function(val, p) { var $ptr, _ptr, p, val; p.$set(val); return (_ptr = p, new ptrType$5(function() { return _ptr.$get(); }, function($v) { _ptr.$set($v); }, _ptr.$target)); }; $ptrType(stringValue).prototype.Set = function(val) { var $ptr, s, val; s = this; s.$set(val); return $ifaceNil; }; $ptrType(stringValue).prototype.Get = function() { var $ptr, s; s = this; return new $String(s.$get()); }; $ptrType(stringValue).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("%s", new sliceType([new stringValue(s.$get())])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: $ptrType(stringValue).prototype.String }; } $f.$ptr = $ptr; $f._r = _r; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; }; newFloat64Value = function(val, p) { var $ptr, _ptr, p, val; p.$set(val); return (_ptr = p, new ptrType$6(function() { return _ptr.$get(); }, function($v) { _ptr.$set($v); }, _ptr.$target)); }; $ptrType(float64Value).prototype.Set = function(s) { var $ptr, _tuple, err, f, s, v; f = this; _tuple = strconv.ParseFloat(s, 64); v = _tuple[0]; err = _tuple[1]; f.$set(v); return err; }; $ptrType(float64Value).prototype.Get = function() { var $ptr, f; f = this; return new $Float64(f.$get()); }; $ptrType(float64Value).prototype.String = 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 = fmt.Sprintf("%v", new sliceType([new float64Value(f.$get())])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: $ptrType(float64Value).prototype.String }; } $f.$ptr = $ptr; $f._r = _r; $f.f = f; $f.$s = $s; $f.$r = $r; return $f; }; newDurationValue = function(val, p) { var $ptr, _ptr, p, val, x$1; p.$set(val); return (_ptr = p, new ptrType$7(function() { return (x$1 = _ptr.$get(), new durationValue(x$1.$high, x$1.$low)); }, function($v) { _ptr.$set(new time.Duration($v.$high, $v.$low)); }, _ptr.$target)); }; $ptrType(durationValue).prototype.Set = function(s) { var $ptr, _tuple, d, err, s, v; d = this; _tuple = time.ParseDuration(s); v = _tuple[0]; err = _tuple[1]; d.$set(new durationValue(v.$high, v.$low)); return err; }; $ptrType(durationValue).prototype.Get = function() { var $ptr, d, x$1; d = this; return (x$1 = d.$get(), new time.Duration(x$1.$high, x$1.$low)); }; $ptrType(durationValue).prototype.String = function() { var $ptr, _ptr, d, x$1; d = this; return (_ptr = d, new ptrType$8(function() { return (x$1 = _ptr.$get(), new time.Duration(x$1.$high, x$1.$low)); }, function($v) { _ptr.$set(new durationValue($v.$high, $v.$low)); }, _ptr.$target)).String(); }; sortFlags = function(flags) { var $ptr, _entry, _entry$1, _i, _i$1, _keys, _ref, _ref$1, f, flags, i, i$1, list, name, result, $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; _ref = $f._ref; _ref$1 = $f._ref$1; f = $f.f; flags = $f.flags; i = $f.i; i$1 = $f.i$1; list = $f.list; name = $f.name; result = $f.result; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: list = $makeSlice(sort.StringSlice, $keys(flags).length); i = 0; _ref = flags; _i = 0; _keys = $keys(_ref); while (true) { if (!(_i < _keys.length)) { break; } _entry = _ref[_keys[_i]]; if (_entry === undefined) { _i++; continue; } f = _entry.v; ((i < 0 || i >= list.$length) ? $throwRuntimeError("index out of range") : list.$array[list.$offset + i] = f.Name); i = i + (1) >> 0; _i++; } $r = list.Sort(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } result = $makeSlice(sliceType$1, list.$length); _ref$1 = list; _i$1 = 0; while (true) { if (!(_i$1 < _ref$1.$length)) { break; } i$1 = _i$1; name = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? $throwRuntimeError("index out of range") : _ref$1.$array[_ref$1.$offset + _i$1]); ((i$1 < 0 || i$1 >= result.$length) ? $throwRuntimeError("index out of range") : result.$array[result.$offset + i$1] = (_entry$1 = flags[name], _entry$1 !== undefined ? _entry$1.v : ptrType$9.nil)); _i$1++; } return result; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: sortFlags }; } $f.$ptr = $ptr; $f._entry = _entry; $f._entry$1 = _entry$1; $f._i = _i; $f._i$1 = _i$1; $f._keys = _keys; $f._ref = _ref; $f._ref$1 = _ref$1; $f.f = f; $f.flags = flags; $f.i = i; $f.i$1 = i$1; $f.list = list; $f.name = name; $f.result = result; $f.$s = $s; $f.$r = $r; return $f; }; FlagSet.ptr.prototype.out = function() { var $ptr, f; f = this; if ($interfaceIsEqual(f.output, $ifaceNil)) { return os.Stderr; } return f.output; }; FlagSet.prototype.out = function() { return this.$val.out(); }; FlagSet.ptr.prototype.SetOutput = function(output) { var $ptr, f, output; f = this; f.output = output; }; FlagSet.prototype.SetOutput = function(output) { return this.$val.SetOutput(output); }; FlagSet.ptr.prototype.VisitAll = function(fn) { var $ptr, _i, _r, _ref, f, flag, fn, $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; flag = $f.flag; fn = $f.fn; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: f = this; _r = sortFlags(f.formal); /* */ $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; } flag = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]); $r = fn(flag); /* */ $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; case -1: } return; } if ($f === undefined) { $f = { $blk: FlagSet.ptr.prototype.VisitAll }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._ref = _ref; $f.f = f; $f.flag = flag; $f.fn = fn; $f.$s = $s; $f.$r = $r; return $f; }; FlagSet.prototype.VisitAll = function(fn) { return this.$val.VisitAll(fn); }; FlagSet.ptr.prototype.Visit = function(fn) { var $ptr, _i, _r, _ref, f, flag, fn, $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; flag = $f.flag; fn = $f.fn; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: f = this; _r = sortFlags(f.actual); /* */ $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; } flag = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]); $r = fn(flag); /* */ $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; case -1: } return; } if ($f === undefined) { $f = { $blk: FlagSet.ptr.prototype.Visit }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._ref = _ref; $f.f = f; $f.flag = flag; $f.fn = fn; $f.$s = $s; $f.$r = $r; return $f; }; FlagSet.prototype.Visit = function(fn) { return this.$val.Visit(fn); }; FlagSet.ptr.prototype.Lookup = function(name) { var $ptr, _entry, f, name; f = this; return (_entry = f.formal[name], _entry !== undefined ? _entry.v : ptrType$9.nil); }; FlagSet.prototype.Lookup = function(name) { return this.$val.Lookup(name); }; FlagSet.ptr.prototype.Set = function(name, value) { var $ptr, _entry, _key, _r, _r$1, _tuple, err, f, flag, name, ok, 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; _key = $f._key; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; err = $f.err; f = $f.f; flag = $f.flag; name = $f.name; ok = $f.ok; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: f = this; _tuple = (_entry = f.formal[name], _entry !== undefined ? [_entry.v, true] : [ptrType$9.nil, false]); flag = _tuple[0]; ok = _tuple[1]; /* */ if (!ok) { $s = 1; continue; } /* */ $s = 2; continue; /* if (!ok) { */ case 1: _r = fmt.Errorf("no such flag -%v", new sliceType([new $String(name)])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* } */ case 2: _r$1 = flag.Value.Set(value); /* */ $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; if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } if (f.actual === false) { f.actual = new $Map(); } _key = name; (f.actual || $throwRuntimeError("assignment to entry in nil map"))[_key] = { k: _key, v: flag }; return $ifaceNil; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: FlagSet.ptr.prototype.Set }; } $f.$ptr = $ptr; $f._entry = _entry; $f._key = _key; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.err = err; $f.f = f; $f.flag = flag; $f.name = name; $f.ok = ok; $f.value = value; $f.$s = $s; $f.$r = $r; return $f; }; FlagSet.prototype.Set = function(name, value) { return this.$val.Set(name, value); }; FlagSet.ptr.prototype.PrintDefaults = function() { var $ptr, f, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: f = [f]; f[0] = this; $r = f[0].VisitAll((function(f) { return function $b(flag) { var $ptr, _r, _tuple, flag, format, 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; flag = $f.flag; format = $f.format; ok = $f.ok; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: format = " -%s=%s: %s\n"; _tuple = $assertType(flag.Value, ptrType$5, true); ok = _tuple[1]; if (ok) { format = " -%s=%q: %s\n"; } _r = fmt.Fprintf(f[0].out(), format, new sliceType([new $String(flag.Name), new $String(flag.DefValue), new $String(flag.Usage)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _r; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.flag = flag; $f.format = format; $f.ok = ok; $f.$s = $s; $f.$r = $r; return $f; }; })(f)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: FlagSet.ptr.prototype.PrintDefaults }; } $f.$ptr = $ptr; $f.f = f; $f.$s = $s; $f.$r = $r; return $f; }; FlagSet.prototype.PrintDefaults = function() { return this.$val.PrintDefaults(); }; PrintDefaults = 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 = $pkg.CommandLine.PrintDefaults(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: PrintDefaults }; } $f.$ptr = $ptr; $f.$s = $s; $f.$r = $r; return $f; }; $pkg.PrintDefaults = PrintDefaults; defaultUsage = function(f) { var $ptr, _r, _r$1, 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; _r$1 = $f._r$1; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: /* */ if (f.name === "") { $s = 1; continue; } /* */ $s = 2; continue; /* if (f.name === "") { */ case 1: _r = fmt.Fprintf(f.out(), "Usage:\n", new sliceType([])); /* */ $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 = fmt.Fprintf(f.out(), "Usage of %s:\n", new sliceType([new $String(f.name)])); /* */ $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: $r = f.PrintDefaults(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: defaultUsage }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.f = f; $f.$s = $s; $f.$r = $r; return $f; }; FlagSet.ptr.prototype.NFlag = function() { var $ptr, f; f = this; return $keys(f.actual).length; }; FlagSet.prototype.NFlag = function() { return this.$val.NFlag(); }; FlagSet.ptr.prototype.Arg = function(i) { var $ptr, f, i, x$1; f = this; if (i < 0 || i >= f.args.$length) { return ""; } return (x$1 = f.args, ((i < 0 || i >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + i])); }; FlagSet.prototype.Arg = function(i) { return this.$val.Arg(i); }; FlagSet.ptr.prototype.NArg = function() { var $ptr, f; f = this; return f.args.$length; }; FlagSet.prototype.NArg = function() { return this.$val.NArg(); }; FlagSet.ptr.prototype.Args = function() { var $ptr, f; f = this; return f.args; }; FlagSet.prototype.Args = function() { return this.$val.Args(); }; FlagSet.ptr.prototype.BoolVar = function(p, name, value, usage) { var $ptr, f, name, p, usage, value, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; f = $f.f; name = $f.name; p = $f.p; usage = $f.usage; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: f = this; $r = f.Var(newBoolValue(value, p), name, usage); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: FlagSet.ptr.prototype.BoolVar }; } $f.$ptr = $ptr; $f.f = f; $f.name = name; $f.p = p; $f.usage = usage; $f.value = value; $f.$s = $s; $f.$r = $r; return $f; }; FlagSet.prototype.BoolVar = function(p, name, value, usage) { return this.$val.BoolVar(p, name, value, usage); }; FlagSet.ptr.prototype.Bool = function(name, value, usage) { var $ptr, f, name, p, usage, value, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; f = $f.f; name = $f.name; p = $f.p; usage = $f.usage; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: f = this; p = $newDataPointer(false, ptrType$10); $r = f.BoolVar(p, name, value, usage); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } return p; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: FlagSet.ptr.prototype.Bool }; } $f.$ptr = $ptr; $f.f = f; $f.name = name; $f.p = p; $f.usage = usage; $f.value = value; $f.$s = $s; $f.$r = $r; return $f; }; FlagSet.prototype.Bool = function(name, value, usage) { return this.$val.Bool(name, value, usage); }; Bool = function(name, value, usage) { var $ptr, _r, name, usage, 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; name = $f.name; usage = $f.usage; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: _r = $pkg.CommandLine.Bool(name, value, usage); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Bool }; } $f.$ptr = $ptr; $f._r = _r; $f.name = name; $f.usage = usage; $f.value = value; $f.$s = $s; $f.$r = $r; return $f; }; $pkg.Bool = Bool; FlagSet.ptr.prototype.IntVar = function(p, name, value, usage) { var $ptr, f, name, p, usage, value, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; f = $f.f; name = $f.name; p = $f.p; usage = $f.usage; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: f = this; $r = f.Var(newIntValue(value, p), name, usage); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: FlagSet.ptr.prototype.IntVar }; } $f.$ptr = $ptr; $f.f = f; $f.name = name; $f.p = p; $f.usage = usage; $f.value = value; $f.$s = $s; $f.$r = $r; return $f; }; FlagSet.prototype.IntVar = function(p, name, value, usage) { return this.$val.IntVar(p, name, value, usage); }; FlagSet.ptr.prototype.Int = function(name, value, usage) { var $ptr, f, name, p, usage, value, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; f = $f.f; name = $f.name; p = $f.p; usage = $f.usage; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: f = this; p = $newDataPointer(0, ptrType$11); $r = f.IntVar(p, name, value, usage); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } return p; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: FlagSet.ptr.prototype.Int }; } $f.$ptr = $ptr; $f.f = f; $f.name = name; $f.p = p; $f.usage = usage; $f.value = value; $f.$s = $s; $f.$r = $r; return $f; }; FlagSet.prototype.Int = function(name, value, usage) { return this.$val.Int(name, value, usage); }; Int = function(name, value, usage) { var $ptr, _r, name, usage, 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; name = $f.name; usage = $f.usage; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: _r = $pkg.CommandLine.Int(name, value, usage); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Int }; } $f.$ptr = $ptr; $f._r = _r; $f.name = name; $f.usage = usage; $f.value = value; $f.$s = $s; $f.$r = $r; return $f; }; $pkg.Int = Int; FlagSet.ptr.prototype.Int64Var = function(p, name, value, usage) { var $ptr, f, name, p, usage, value, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; f = $f.f; name = $f.name; p = $f.p; usage = $f.usage; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: f = this; $r = f.Var(newInt64Value(value, p), name, usage); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: FlagSet.ptr.prototype.Int64Var }; } $f.$ptr = $ptr; $f.f = f; $f.name = name; $f.p = p; $f.usage = usage; $f.value = value; $f.$s = $s; $f.$r = $r; return $f; }; FlagSet.prototype.Int64Var = function(p, name, value, usage) { return this.$val.Int64Var(p, name, value, usage); }; FlagSet.ptr.prototype.Int64 = function(name, value, usage) { var $ptr, f, name, p, usage, value, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; f = $f.f; name = $f.name; p = $f.p; usage = $f.usage; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: f = this; p = $newDataPointer(new $Int64(0, 0), ptrType$12); $r = f.Int64Var(p, name, value, usage); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } return p; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: FlagSet.ptr.prototype.Int64 }; } $f.$ptr = $ptr; $f.f = f; $f.name = name; $f.p = p; $f.usage = usage; $f.value = value; $f.$s = $s; $f.$r = $r; return $f; }; FlagSet.prototype.Int64 = function(name, value, usage) { return this.$val.Int64(name, value, usage); }; FlagSet.ptr.prototype.UintVar = function(p, name, value, usage) { var $ptr, f, name, p, usage, value, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; f = $f.f; name = $f.name; p = $f.p; usage = $f.usage; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: f = this; $r = f.Var(newUintValue(value, p), name, usage); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: FlagSet.ptr.prototype.UintVar }; } $f.$ptr = $ptr; $f.f = f; $f.name = name; $f.p = p; $f.usage = usage; $f.value = value; $f.$s = $s; $f.$r = $r; return $f; }; FlagSet.prototype.UintVar = function(p, name, value, usage) { return this.$val.UintVar(p, name, value, usage); }; FlagSet.ptr.prototype.Uint = function(name, value, usage) { var $ptr, f, name, p, usage, value, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; f = $f.f; name = $f.name; p = $f.p; usage = $f.usage; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: f = this; p = $newDataPointer(0, ptrType$13); $r = f.UintVar(p, name, value, usage); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } return p; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: FlagSet.ptr.prototype.Uint }; } $f.$ptr = $ptr; $f.f = f; $f.name = name; $f.p = p; $f.usage = usage; $f.value = value; $f.$s = $s; $f.$r = $r; return $f; }; FlagSet.prototype.Uint = function(name, value, usage) { return this.$val.Uint(name, value, usage); }; FlagSet.ptr.prototype.Uint64Var = function(p, name, value, usage) { var $ptr, f, name, p, usage, value, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; f = $f.f; name = $f.name; p = $f.p; usage = $f.usage; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: f = this; $r = f.Var(newUint64Value(value, p), name, usage); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: FlagSet.ptr.prototype.Uint64Var }; } $f.$ptr = $ptr; $f.f = f; $f.name = name; $f.p = p; $f.usage = usage; $f.value = value; $f.$s = $s; $f.$r = $r; return $f; }; FlagSet.prototype.Uint64Var = function(p, name, value, usage) { return this.$val.Uint64Var(p, name, value, usage); }; FlagSet.ptr.prototype.Uint64 = function(name, value, usage) { var $ptr, f, name, p, usage, value, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; f = $f.f; name = $f.name; p = $f.p; usage = $f.usage; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: f = this; p = $newDataPointer(new $Uint64(0, 0), ptrType$14); $r = f.Uint64Var(p, name, value, usage); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } return p; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: FlagSet.ptr.prototype.Uint64 }; } $f.$ptr = $ptr; $f.f = f; $f.name = name; $f.p = p; $f.usage = usage; $f.value = value; $f.$s = $s; $f.$r = $r; return $f; }; FlagSet.prototype.Uint64 = function(name, value, usage) { return this.$val.Uint64(name, value, usage); }; FlagSet.ptr.prototype.StringVar = function(p, name, value, usage) { var $ptr, f, name, p, usage, value, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; f = $f.f; name = $f.name; p = $f.p; usage = $f.usage; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: f = this; $r = f.Var(newStringValue(value, p), name, usage); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: FlagSet.ptr.prototype.StringVar }; } $f.$ptr = $ptr; $f.f = f; $f.name = name; $f.p = p; $f.usage = usage; $f.value = value; $f.$s = $s; $f.$r = $r; return $f; }; FlagSet.prototype.StringVar = function(p, name, value, usage) { return this.$val.StringVar(p, name, value, usage); }; FlagSet.ptr.prototype.String = function(name, value, usage) { var $ptr, f, name, p, usage, value, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; f = $f.f; name = $f.name; p = $f.p; usage = $f.usage; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: f = this; p = $newDataPointer("", ptrType$15); $r = f.StringVar(p, name, value, usage); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } return p; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: FlagSet.ptr.prototype.String }; } $f.$ptr = $ptr; $f.f = f; $f.name = name; $f.p = p; $f.usage = usage; $f.value = value; $f.$s = $s; $f.$r = $r; return $f; }; FlagSet.prototype.String = function(name, value, usage) { return this.$val.String(name, value, usage); }; String = function(name, value, usage) { var $ptr, _r, name, usage, 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; name = $f.name; usage = $f.usage; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: _r = $pkg.CommandLine.String(name, value, usage); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: String }; } $f.$ptr = $ptr; $f._r = _r; $f.name = name; $f.usage = usage; $f.value = value; $f.$s = $s; $f.$r = $r; return $f; }; $pkg.String = String; FlagSet.ptr.prototype.Float64Var = function(p, name, value, usage) { var $ptr, f, name, p, usage, value, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; f = $f.f; name = $f.name; p = $f.p; usage = $f.usage; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: f = this; $r = f.Var(newFloat64Value(value, p), name, usage); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: FlagSet.ptr.prototype.Float64Var }; } $f.$ptr = $ptr; $f.f = f; $f.name = name; $f.p = p; $f.usage = usage; $f.value = value; $f.$s = $s; $f.$r = $r; return $f; }; FlagSet.prototype.Float64Var = function(p, name, value, usage) { return this.$val.Float64Var(p, name, value, usage); }; FlagSet.ptr.prototype.Float64 = function(name, value, usage) { var $ptr, f, name, p, usage, value, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; f = $f.f; name = $f.name; p = $f.p; usage = $f.usage; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: f = this; p = $newDataPointer(0, ptrType$16); $r = f.Float64Var(p, name, value, usage); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } return p; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: FlagSet.ptr.prototype.Float64 }; } $f.$ptr = $ptr; $f.f = f; $f.name = name; $f.p = p; $f.usage = usage; $f.value = value; $f.$s = $s; $f.$r = $r; return $f; }; FlagSet.prototype.Float64 = function(name, value, usage) { return this.$val.Float64(name, value, usage); }; FlagSet.ptr.prototype.DurationVar = function(p, name, value, usage) { var $ptr, f, name, p, usage, value, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; f = $f.f; name = $f.name; p = $f.p; usage = $f.usage; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: f = this; $r = f.Var(newDurationValue(value, p), name, usage); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: FlagSet.ptr.prototype.DurationVar }; } $f.$ptr = $ptr; $f.f = f; $f.name = name; $f.p = p; $f.usage = usage; $f.value = value; $f.$s = $s; $f.$r = $r; return $f; }; FlagSet.prototype.DurationVar = function(p, name, value, usage) { return this.$val.DurationVar(p, name, value, usage); }; FlagSet.ptr.prototype.Duration = function(name, value, usage) { var $ptr, f, name, p, usage, value, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; f = $f.f; name = $f.name; p = $f.p; usage = $f.usage; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: f = this; p = $newDataPointer(new time.Duration(0, 0), ptrType$8); $r = f.DurationVar(p, name, value, usage); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } return p; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: FlagSet.ptr.prototype.Duration }; } $f.$ptr = $ptr; $f.f = f; $f.name = name; $f.p = p; $f.usage = usage; $f.value = value; $f.$s = $s; $f.$r = $r; return $f; }; FlagSet.prototype.Duration = function(name, value, usage) { return this.$val.Duration(name, value, usage); }; Duration = function(name, value, usage) { var $ptr, _r, name, usage, 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; name = $f.name; usage = $f.usage; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: _r = $pkg.CommandLine.Duration(name, value, usage); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Duration }; } $f.$ptr = $ptr; $f._r = _r; $f.name = name; $f.usage = usage; $f.value = value; $f.$s = $s; $f.$r = $r; return $f; }; $pkg.Duration = Duration; FlagSet.ptr.prototype.Var = function(value, name, usage) { var $ptr, _entry, _key, _r, _r$1, _r$2, _r$3, _tuple, alreadythere, f, flag, msg, name, usage, 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; _key = $f._key; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tuple = $f._tuple; alreadythere = $f.alreadythere; f = $f.f; flag = $f.flag; msg = $f.msg; name = $f.name; usage = $f.usage; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: f = this; _r = value.String(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } flag = new Flag.ptr(name, usage, value, _r); _tuple = (_entry = f.formal[name], _entry !== undefined ? [_entry.v, true] : [ptrType$9.nil, false]); alreadythere = _tuple[1]; /* */ if (alreadythere) { $s = 2; continue; } /* */ $s = 3; continue; /* if (alreadythere) { */ case 2: msg = ""; /* */ if (f.name === "") { $s = 4; continue; } /* */ $s = 5; continue; /* if (f.name === "") { */ case 4: _r$1 = fmt.Sprintf("flag redefined: %s", new sliceType([new $String(name)])); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } msg = _r$1; $s = 6; continue; /* } else { */ case 5: _r$2 = fmt.Sprintf("%s flag redefined: %s", new sliceType([new $String(f.name), new $String(name)])); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } msg = _r$2; /* } */ case 6: _r$3 = fmt.Fprintln(f.out(), new sliceType([new $String(msg)])); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } _r$3; $panic(new $String(msg)); /* } */ case 3: if (f.formal === false) { f.formal = new $Map(); } _key = name; (f.formal || $throwRuntimeError("assignment to entry in nil map"))[_key] = { k: _key, v: flag }; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: FlagSet.ptr.prototype.Var }; } $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._tuple = _tuple; $f.alreadythere = alreadythere; $f.f = f; $f.flag = flag; $f.msg = msg; $f.name = name; $f.usage = usage; $f.value = value; $f.$s = $s; $f.$r = $r; return $f; }; FlagSet.prototype.Var = function(value, name, usage) { return this.$val.Var(value, name, usage); }; FlagSet.ptr.prototype.failf = function(format, a) { var $ptr, _r, _r$1, a, err, f, 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; err = $f.err; f = $f.f; format = $f.format; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: f = this; _r = fmt.Errorf(format, a); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } err = _r; _r$1 = fmt.Fprintln(f.out(), new sliceType([err])); /* */ $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 = f.usage(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } return err; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: FlagSet.ptr.prototype.failf }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.a = a; $f.err = err; $f.f = f; $f.format = format; $f.$s = $s; $f.$r = $r; return $f; }; FlagSet.prototype.failf = function(format, a) { return this.$val.failf(format, a); }; FlagSet.ptr.prototype.usage = function() { var $ptr, f, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: f = this; /* */ if (f.Usage === $throwNilPointerError) { $s = 1; continue; } /* */ $s = 2; continue; /* if (f.Usage === $throwNilPointerError) { */ case 1: /* */ if (f === $pkg.CommandLine) { $s = 4; continue; } /* */ $s = 5; continue; /* if (f === $pkg.CommandLine) { */ case 4: $r = $pkg.Usage(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $s = 6; continue; /* } else { */ case 5: $r = defaultUsage(f); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 6: $s = 3; continue; /* } else { */ case 2: $r = f.Usage(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 3: /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: FlagSet.ptr.prototype.usage }; } $f.$ptr = $ptr; $f.f = f; $f.$s = $s; $f.$r = $r; return $f; }; FlagSet.prototype.usage = function() { return this.$val.usage(); }; FlagSet.ptr.prototype.parseOne = function() { var $ptr, _entry, _key, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _tmp, _tmp$1, _tuple, _tuple$1, _v, alreadythere, err, err$1, f, flag, fv, has_value, i, m, name, num_minuses, ok, s, value, 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; _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; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _v = $f._v; alreadythere = $f.alreadythere; err = $f.err; err$1 = $f.err$1; f = $f.f; flag = $f.flag; fv = $f.fv; has_value = $f.has_value; i = $f.i; m = $f.m; name = $f.name; num_minuses = $f.num_minuses; ok = $f.ok; s = $f.s; value = $f.value; 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; if (f.args.$length === 0) { return [false, $ifaceNil]; } s = (x$1 = f.args, (0 >= x$1.$length ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + 0])); if ((s.length === 0) || !((s.charCodeAt(0) === 45)) || (s.length === 1)) { return [false, $ifaceNil]; } num_minuses = 1; if (s.charCodeAt(1) === 45) { num_minuses = num_minuses + (1) >> 0; if (s.length === 2) { f.args = $subslice(f.args, 1); return [false, $ifaceNil]; } } name = s.substring(num_minuses); /* */ if ((name.length === 0) || (name.charCodeAt(0) === 45) || (name.charCodeAt(0) === 61)) { $s = 1; continue; } /* */ $s = 2; continue; /* if ((name.length === 0) || (name.charCodeAt(0) === 45) || (name.charCodeAt(0) === 61)) { */ case 1: _r = f.failf("bad flag syntax: %s", new sliceType([new $String(s)])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return [false, _r]; /* } */ case 2: f.args = $subslice(f.args, 1); has_value = false; value = ""; i = 1; while (true) { if (!(i < name.length)) { break; } if (name.charCodeAt(i) === 61) { value = name.substring((i + 1 >> 0)); has_value = true; name = name.substring(0, i); break; } i = i + (1) >> 0; } m = f.formal; _tuple = (_entry = m[name], _entry !== undefined ? [_entry.v, true] : [ptrType$9.nil, false]); flag = _tuple[0]; alreadythere = _tuple[1]; /* */ if (!alreadythere) { $s = 4; continue; } /* */ $s = 5; continue; /* if (!alreadythere) { */ case 4: /* */ if (name === "help" || name === "h") { $s = 6; continue; } /* */ $s = 7; continue; /* if (name === "help" || name === "h") { */ case 6: $r = f.usage(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } return [false, $pkg.ErrHelp]; /* } */ case 7: _r$1 = f.failf("flag provided but not defined: -%s", new sliceType([new $String(name)])); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } return [false, _r$1]; /* } */ case 5: _tuple$1 = $assertType(flag.Value, boolFlag, true); fv = _tuple$1[0]; ok = _tuple$1[1]; if (!(ok)) { _v = false; $s = 13; continue s; } _r$2 = fv.IsBoolFlag(); /* */ $s = 14; case 14: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } _v = _r$2; case 13: /* */ if (_v) { $s = 10; continue; } /* */ $s = 11; continue; /* if (_v) { */ case 10: /* */ if (has_value) { $s = 15; continue; } /* */ $s = 16; continue; /* if (has_value) { */ case 15: _r$3 = fv.Set(value); /* */ $s = 18; case 18: 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 = 19; continue; } /* */ $s = 20; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 19: _r$4 = f.failf("invalid boolean value %q for -%s: %v", new sliceType([new $String(value), new $String(name), err])); /* */ $s = 21; case 21: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } return [false, _r$4]; /* } */ case 20: $s = 17; continue; /* } else { */ case 16: _r$5 = fv.Set("true"); /* */ $s = 22; case 22: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } _r$5; /* } */ case 17: $s = 12; continue; /* } else { */ case 11: if (!has_value && f.args.$length > 0) { has_value = true; _tmp = (x$2 = f.args, (0 >= x$2.$length ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + 0])); _tmp$1 = $subslice(f.args, 1); value = _tmp; f.args = _tmp$1; } /* */ if (!has_value) { $s = 23; continue; } /* */ $s = 24; continue; /* if (!has_value) { */ case 23: _r$6 = f.failf("flag needs an argument: -%s", new sliceType([new $String(name)])); /* */ $s = 25; case 25: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } return [false, _r$6]; /* } */ case 24: _r$7 = flag.Value.Set(value); /* */ $s = 26; case 26: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } err$1 = _r$7; /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 27; continue; } /* */ $s = 28; continue; /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 27: _r$8 = f.failf("invalid value %q for flag -%s: %v", new sliceType([new $String(value), new $String(name), err$1])); /* */ $s = 29; case 29: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } return [false, _r$8]; /* } */ case 28: /* } */ case 12: if (f.actual === false) { f.actual = new $Map(); } _key = name; (f.actual || $throwRuntimeError("assignment to entry in nil map"))[_key] = { k: _key, v: flag }; return [true, $ifaceNil]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: FlagSet.ptr.prototype.parseOne }; } $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._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._v = _v; $f.alreadythere = alreadythere; $f.err = err; $f.err$1 = err$1; $f.f = f; $f.flag = flag; $f.fv = fv; $f.has_value = has_value; $f.i = i; $f.m = m; $f.name = name; $f.num_minuses = num_minuses; $f.ok = ok; $f.s = s; $f.value = value; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f; }; FlagSet.prototype.parseOne = function() { return this.$val.parseOne(); }; FlagSet.ptr.prototype.Parse = function(arguments$1) { var $ptr, _r, _ref, _tuple, arguments$1, err, f, seen, $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; arguments$1 = $f.arguments$1; err = $f.err; f = $f.f; seen = $f.seen; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: f = this; f.parsed = true; f.args = arguments$1; /* while (true) { */ case 1: _r = f.parseOne(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _tuple = _r; seen = _tuple[0]; err = _tuple[1]; if (seen) { /* continue; */ $s = 1; continue; } if ($interfaceIsEqual(err, $ifaceNil)) { /* break; */ $s = 2; continue; } _ref = f.errorHandling; if (_ref === 0) { return err; } else if (_ref === 1) { os.Exit(2); } else if (_ref === 2) { $panic(err); } /* } */ $s = 1; continue; case 2: return $ifaceNil; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: FlagSet.ptr.prototype.Parse }; } $f.$ptr = $ptr; $f._r = _r; $f._ref = _ref; $f._tuple = _tuple; $f.arguments$1 = arguments$1; $f.err = err; $f.f = f; $f.seen = seen; $f.$s = $s; $f.$r = $r; return $f; }; FlagSet.prototype.Parse = function(arguments$1) { return this.$val.Parse(arguments$1); }; FlagSet.ptr.prototype.Parsed = function() { var $ptr, f; f = this; return f.parsed; }; FlagSet.prototype.Parsed = function() { return this.$val.Parsed(); }; NewFlagSet = function(name, errorHandling) { var $ptr, errorHandling, f, name; f = new FlagSet.ptr($throwNilPointerError, name, false, false, false, sliceType$2.nil, errorHandling, $ifaceNil); return f; }; $pkg.NewFlagSet = NewFlagSet; FlagSet.ptr.prototype.Init = function(name, errorHandling) { var $ptr, errorHandling, f, name; f = this; f.name = name; f.errorHandling = errorHandling; }; FlagSet.prototype.Init = function(name, errorHandling) { return this.$val.Init(name, errorHandling); }; ptrType.methods = [{prop: "Set", name: "Set", pkg: "", typ: $funcType([$String], [$error], false)}, {prop: "Get", name: "Get", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "IsBoolFlag", name: "IsBoolFlag", pkg: "", typ: $funcType([], [$Bool], false)}]; ptrType$1.methods = [{prop: "Set", name: "Set", pkg: "", typ: $funcType([$String], [$error], false)}, {prop: "Get", name: "Get", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; ptrType$2.methods = [{prop: "Set", name: "Set", pkg: "", typ: $funcType([$String], [$error], false)}, {prop: "Get", name: "Get", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; ptrType$3.methods = [{prop: "Set", name: "Set", pkg: "", typ: $funcType([$String], [$error], false)}, {prop: "Get", name: "Get", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; ptrType$4.methods = [{prop: "Set", name: "Set", pkg: "", typ: $funcType([$String], [$error], false)}, {prop: "Get", name: "Get", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; ptrType$5.methods = [{prop: "Set", name: "Set", pkg: "", typ: $funcType([$String], [$error], false)}, {prop: "Get", name: "Get", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; ptrType$6.methods = [{prop: "Set", name: "Set", pkg: "", typ: $funcType([$String], [$error], false)}, {prop: "Get", name: "Get", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; ptrType$7.methods = [{prop: "Set", name: "Set", pkg: "", typ: $funcType([$String], [$error], false)}, {prop: "Get", name: "Get", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; ptrType$17.methods = [{prop: "out", name: "out", pkg: "flag", typ: $funcType([], [io.Writer], false)}, {prop: "SetOutput", name: "SetOutput", pkg: "", typ: $funcType([io.Writer], [], false)}, {prop: "VisitAll", name: "VisitAll", pkg: "", typ: $funcType([funcType], [], false)}, {prop: "Visit", name: "Visit", pkg: "", typ: $funcType([funcType], [], false)}, {prop: "Lookup", name: "Lookup", pkg: "", typ: $funcType([$String], [ptrType$9], false)}, {prop: "Set", name: "Set", pkg: "", typ: $funcType([$String, $String], [$error], false)}, {prop: "PrintDefaults", name: "PrintDefaults", pkg: "", typ: $funcType([], [], false)}, {prop: "NFlag", name: "NFlag", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Arg", name: "Arg", pkg: "", typ: $funcType([$Int], [$String], false)}, {prop: "NArg", name: "NArg", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Args", name: "Args", pkg: "", typ: $funcType([], [sliceType$2], false)}, {prop: "BoolVar", name: "BoolVar", pkg: "", typ: $funcType([ptrType$10, $String, $Bool, $String], [], false)}, {prop: "Bool", name: "Bool", pkg: "", typ: $funcType([$String, $Bool, $String], [ptrType$10], false)}, {prop: "IntVar", name: "IntVar", pkg: "", typ: $funcType([ptrType$11, $String, $Int, $String], [], false)}, {prop: "Int", name: "Int", pkg: "", typ: $funcType([$String, $Int, $String], [ptrType$11], false)}, {prop: "Int64Var", name: "Int64Var", pkg: "", typ: $funcType([ptrType$12, $String, $Int64, $String], [], false)}, {prop: "Int64", name: "Int64", pkg: "", typ: $funcType([$String, $Int64, $String], [ptrType$12], false)}, {prop: "UintVar", name: "UintVar", pkg: "", typ: $funcType([ptrType$13, $String, $Uint, $String], [], false)}, {prop: "Uint", name: "Uint", pkg: "", typ: $funcType([$String, $Uint, $String], [ptrType$13], false)}, {prop: "Uint64Var", name: "Uint64Var", pkg: "", typ: $funcType([ptrType$14, $String, $Uint64, $String], [], false)}, {prop: "Uint64", name: "Uint64", pkg: "", typ: $funcType([$String, $Uint64, $String], [ptrType$14], false)}, {prop: "StringVar", name: "StringVar", pkg: "", typ: $funcType([ptrType$15, $String, $String, $String], [], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([$String, $String, $String], [ptrType$15], false)}, {prop: "Float64Var", name: "Float64Var", pkg: "", typ: $funcType([ptrType$16, $String, $Float64, $String], [], false)}, {prop: "Float64", name: "Float64", pkg: "", typ: $funcType([$String, $Float64, $String], [ptrType$16], false)}, {prop: "DurationVar", name: "DurationVar", pkg: "", typ: $funcType([ptrType$8, $String, time.Duration, $String], [], false)}, {prop: "Duration", name: "Duration", pkg: "", typ: $funcType([$String, time.Duration, $String], [ptrType$8], false)}, {prop: "Var", name: "Var", pkg: "", typ: $funcType([Value, $String, $String], [], false)}, {prop: "failf", name: "failf", pkg: "flag", typ: $funcType([$String, sliceType], [$error], true)}, {prop: "usage", name: "usage", pkg: "flag", typ: $funcType([], [], false)}, {prop: "parseOne", name: "parseOne", pkg: "flag", typ: $funcType([], [$Bool, $error], false)}, {prop: "Parse", name: "Parse", pkg: "", typ: $funcType([sliceType$2], [$error], false)}, {prop: "Parsed", name: "Parsed", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Init", name: "Init", pkg: "", typ: $funcType([$String, ErrorHandling], [], false)}]; boolFlag.init([{prop: "IsBoolFlag", name: "IsBoolFlag", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Set", name: "Set", pkg: "", typ: $funcType([$String], [$error], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]); Value.init([{prop: "Set", name: "Set", pkg: "", typ: $funcType([$String], [$error], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]); FlagSet.init([{prop: "Usage", name: "Usage", pkg: "", typ: funcType$1, tag: ""}, {prop: "name", name: "name", pkg: "flag", typ: $String, tag: ""}, {prop: "parsed", name: "parsed", pkg: "flag", typ: $Bool, tag: ""}, {prop: "actual", name: "actual", pkg: "flag", typ: mapType, tag: ""}, {prop: "formal", name: "formal", pkg: "flag", typ: mapType, tag: ""}, {prop: "args", name: "args", pkg: "flag", typ: sliceType$2, tag: ""}, {prop: "errorHandling", name: "errorHandling", pkg: "flag", typ: ErrorHandling, tag: ""}, {prop: "output", name: "output", pkg: "flag", typ: io.Writer, tag: ""}]); Flag.init([{prop: "Name", name: "Name", pkg: "", typ: $String, tag: ""}, {prop: "Usage", name: "Usage", pkg: "", typ: $String, tag: ""}, {prop: "Value", name: "Value", pkg: "", typ: Value, tag: ""}, {prop: "DefValue", name: "DefValue", pkg: "", 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 = 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 = 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 = 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 = time.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $pkg.ErrHelp = errors.New("flag: help requested"); $pkg.CommandLine = NewFlagSet((x = os.Args, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0])), 1); $pkg.Usage = (function $b() { var $ptr, _r, 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; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: _r = fmt.Fprintf(os.Stderr, "Usage of %s:\n", new sliceType([new $String((x$1 = os.Args, (0 >= x$1.$length ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + 0])))])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _r; $r = PrintDefaults(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r = _r; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f; }); /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; }; $pkg.$init = $init; return $pkg; })(); $packages["runtime/pprof"] = (function() { var $pkg = {}, $init, io, sync; io = $packages["io"]; 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 = io.$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; } /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; }; $pkg.$init = $init; return $pkg; })(); $packages["testing"] = (function() { var $pkg = {}, $init, bytes, flag, fmt, nosync, io, os, runtime, pprof, strconv, strings, atomic, time, matchBenchmarks, benchTime, benchmarkMemory, short$1, outputDir, chatty, coverProfile, match, memProfile, memProfileRate, cpuProfile, blockProfile, blockProfileRate, timeout, cpuListStr, parallel, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15; bytes = $packages["bytes"]; flag = $packages["flag"]; fmt = $packages["fmt"]; nosync = $packages["github.com/gopherjs/gopherjs/nosync"]; io = $packages["io"]; os = $packages["os"]; runtime = $packages["runtime"]; pprof = $packages["runtime/pprof"]; strconv = $packages["strconv"]; strings = $packages["strings"]; atomic = $packages["sync/atomic"]; time = $packages["time"]; $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 = flag.$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 = nosync.$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; } $r = os.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = runtime.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = pprof.$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; } $r = atomic.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = time.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } _r = flag.String("test.bench", "", "regular expression to select benchmarks to run"); /* */ $s = 13; case 13: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } matchBenchmarks = _r; _r$1 = flag.Duration("test.benchtime", new time.Duration(0, 1000000000), "approximate run time for each benchmark"); /* */ $s = 14; case 14: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } benchTime = _r$1; _r$2 = flag.Bool("test.benchmem", false, "print memory allocations for benchmarks"); /* */ $s = 15; case 15: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } benchmarkMemory = _r$2; _r$3 = flag.Bool("test.short", false, "run smaller test suite to save time"); /* */ $s = 16; case 16: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } short$1 = _r$3; _r$4 = flag.String("test.outputdir", "", "directory in which to write profiles"); /* */ $s = 17; case 17: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } outputDir = _r$4; _r$5 = flag.Bool("test.v", false, "verbose: print additional output"); /* */ $s = 18; case 18: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } chatty = _r$5; _r$6 = flag.String("test.coverprofile", "", "write a coverage profile to the named file after execution"); /* */ $s = 19; case 19: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } coverProfile = _r$6; _r$7 = flag.String("test.run", "", "regular expression to select tests and examples to run"); /* */ $s = 20; case 20: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } match = _r$7; _r$8 = flag.String("test.memprofile", "", "write a memory profile to the named file after execution"); /* */ $s = 21; case 21: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } memProfile = _r$8; _r$9 = flag.Int("test.memprofilerate", 0, "if >=0, sets runtime.MemProfileRate"); /* */ $s = 22; case 22: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } memProfileRate = _r$9; _r$10 = flag.String("test.cpuprofile", "", "write a cpu profile to the named file during execution"); /* */ $s = 23; case 23: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } cpuProfile = _r$10; _r$11 = flag.String("test.blockprofile", "", "write a goroutine blocking profile to the named file after execution"); /* */ $s = 24; case 24: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } blockProfile = _r$11; _r$12 = flag.Int("test.blockprofilerate", 1, "if >= 0, calls runtime.SetBlockProfileRate()"); /* */ $s = 25; case 25: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } blockProfileRate = _r$12; _r$13 = flag.Duration("test.timeout", new time.Duration(0, 0), "if positive, sets an aggregate time limit for all tests"); /* */ $s = 26; case 26: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } timeout = _r$13; _r$14 = flag.String("test.cpu", "", "comma-separated list of number of CPUs to use for each test"); /* */ $s = 27; case 27: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } cpuListStr = _r$14; _r$15 = flag.Int("test.parallel", runtime.GOMAXPROCS(0), "maximum test parallelism"); /* */ $s = 28; case 28: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } parallel = _r$15; /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; }; $pkg.$init = $init; return $pkg; })(); $packages["regexp"] = (function() { var $pkg = {}, $init, bytes, nosync, io, syntax, sort, strconv, strings, testing, unicode, utf8, queue, entry, thread, machine, onePassProg, onePassInst, queueOnePass, runeSlice, Regexp, input, inputString, inputBytes, inputReader, sliceType, sliceType$1, sliceType$2, ptrType, sliceType$3, ptrType$1, ptrType$2, ptrType$3, sliceType$5, sliceType$6, ptrType$4, ptrType$5, sliceType$7, ptrType$6, sliceType$8, ptrType$7, sliceType$9, ptrType$8, sliceType$10, sliceType$11, sliceType$12, sliceType$13, sliceType$14, ptrType$9, ptrType$10, funcType, funcType$1, funcType$2, funcType$3, ptrType$11, ptrType$12, ptrType$13, empty, noRune, noNext, anyRuneNotNL, anyRune, notOnePass, progMachine, onePassPrefix, onePassNext, iop, newQueue, mergeRuneSets, cleanupOnePass, onePassCopy, makeOnePass, compileOnePass, Compile, compile, MustCompile, quote, extract; bytes = $packages["bytes"]; nosync = $packages["github.com/gopherjs/gopherjs/nosync"]; io = $packages["io"]; syntax = $packages["regexp/syntax"]; sort = $packages["sort"]; strconv = $packages["strconv"]; strings = $packages["strings"]; testing = $packages["testing"]; unicode = $packages["unicode"]; utf8 = $packages["unicode/utf8"]; queue = $pkg.queue = $newType(0, $kindStruct, "regexp.queue", "queue", "regexp", function(sparse_, dense_) { this.$val = this; if (arguments.length === 0) { this.sparse = sliceType$2.nil; this.dense = sliceType$6.nil; return; } this.sparse = sparse_; this.dense = dense_; }); entry = $pkg.entry = $newType(0, $kindStruct, "regexp.entry", "entry", "regexp", function(pc_, t_) { this.$val = this; if (arguments.length === 0) { this.pc = 0; this.t = ptrType$3.nil; return; } this.pc = pc_; this.t = t_; }); thread = $pkg.thread = $newType(0, $kindStruct, "regexp.thread", "thread", "regexp", function(inst_, cap_) { this.$val = this; if (arguments.length === 0) { this.inst = ptrType$9.nil; this.cap = sliceType.nil; return; } this.inst = inst_; this.cap = cap_; }); machine = $pkg.machine = $newType(0, $kindStruct, "regexp.machine", "machine", "regexp", function(re_, p_, op_, q0_, q1_, pool_, matched_, matchcap_, inputBytes_, inputString_, inputReader_) { this.$val = this; if (arguments.length === 0) { this.re = ptrType$1.nil; this.p = ptrType$2.nil; this.op = ptrType.nil; this.q0 = new queue.ptr(); this.q1 = new queue.ptr(); this.pool = sliceType$5.nil; this.matched = false; this.matchcap = sliceType.nil; this.inputBytes = new inputBytes.ptr(); this.inputString = new inputString.ptr(); this.inputReader = new inputReader.ptr(); return; } this.re = re_; this.p = p_; this.op = op_; this.q0 = q0_; this.q1 = q1_; this.pool = pool_; this.matched = matched_; this.matchcap = matchcap_; this.inputBytes = inputBytes_; this.inputString = inputString_; this.inputReader = inputReader_; }); onePassProg = $pkg.onePassProg = $newType(0, $kindStruct, "regexp.onePassProg", "onePassProg", "regexp", function(Inst_, Start_, NumCap_) { this.$val = this; if (arguments.length === 0) { this.Inst = sliceType$7.nil; this.Start = 0; this.NumCap = 0; return; } this.Inst = Inst_; this.Start = Start_; this.NumCap = NumCap_; }); onePassInst = $pkg.onePassInst = $newType(0, $kindStruct, "regexp.onePassInst", "onePassInst", "regexp", function(Inst_, Next_) { this.$val = this; if (arguments.length === 0) { this.Inst = new syntax.Inst.ptr(); this.Next = sliceType$2.nil; return; } this.Inst = Inst_; this.Next = Next_; }); queueOnePass = $pkg.queueOnePass = $newType(0, $kindStruct, "regexp.queueOnePass", "queueOnePass", "regexp", function(sparse_, dense_, size_, nextIndex_) { this.$val = this; if (arguments.length === 0) { this.sparse = sliceType$2.nil; this.dense = sliceType$2.nil; this.size = 0; this.nextIndex = 0; return; } this.sparse = sparse_; this.dense = dense_; this.size = size_; this.nextIndex = nextIndex_; }); runeSlice = $pkg.runeSlice = $newType(12, $kindSlice, "regexp.runeSlice", "runeSlice", "regexp", null); Regexp = $pkg.Regexp = $newType(0, $kindStruct, "regexp.Regexp", "Regexp", "regexp", function(expr_, prog_, onepass_, prefix_, prefixBytes_, prefixComplete_, prefixRune_, prefixEnd_, cond_, numSubexp_, subexpNames_, longest_, mu_, machine_) { this.$val = this; if (arguments.length === 0) { this.expr = ""; this.prog = ptrType$2.nil; this.onepass = ptrType.nil; this.prefix = ""; this.prefixBytes = sliceType$3.nil; this.prefixComplete = false; this.prefixRune = 0; this.prefixEnd = 0; this.cond = 0; this.numSubexp = 0; this.subexpNames = sliceType$9.nil; this.longest = false; this.mu = new nosync.Mutex.ptr(); this.machine = sliceType$10.nil; return; } this.expr = expr_; this.prog = prog_; this.onepass = onepass_; this.prefix = prefix_; this.prefixBytes = prefixBytes_; this.prefixComplete = prefixComplete_; this.prefixRune = prefixRune_; this.prefixEnd = prefixEnd_; this.cond = cond_; this.numSubexp = numSubexp_; this.subexpNames = subexpNames_; this.longest = longest_; this.mu = mu_; this.machine = machine_; }); input = $pkg.input = $newType(8, $kindInterface, "regexp.input", "input", "regexp", null); inputString = $pkg.inputString = $newType(0, $kindStruct, "regexp.inputString", "inputString", "regexp", function(str_) { this.$val = this; if (arguments.length === 0) { this.str = ""; return; } this.str = str_; }); inputBytes = $pkg.inputBytes = $newType(0, $kindStruct, "regexp.inputBytes", "inputBytes", "regexp", function(str_) { this.$val = this; if (arguments.length === 0) { this.str = sliceType$3.nil; return; } this.str = str_; }); inputReader = $pkg.inputReader = $newType(0, $kindStruct, "regexp.inputReader", "inputReader", "regexp", function(r_, atEOT_, pos_) { this.$val = this; if (arguments.length === 0) { this.r = $ifaceNil; this.atEOT = false; this.pos = 0; return; } this.r = r_; this.atEOT = atEOT_; this.pos = pos_; }); sliceType = $sliceType($Int); sliceType$1 = $sliceType($Int32); sliceType$2 = $sliceType($Uint32); ptrType = $ptrType(onePassProg); sliceType$3 = $sliceType($Uint8); ptrType$1 = $ptrType(Regexp); ptrType$2 = $ptrType(syntax.Prog); ptrType$3 = $ptrType(thread); sliceType$5 = $sliceType(ptrType$3); sliceType$6 = $sliceType(entry); ptrType$4 = $ptrType($Int); ptrType$5 = $ptrType(queueOnePass); sliceType$7 = $sliceType(onePassInst); ptrType$6 = $ptrType($Uint32); sliceType$8 = $sliceType(sliceType$1); ptrType$7 = $ptrType(sliceType$1); sliceType$9 = $sliceType($String); ptrType$8 = $ptrType(machine); sliceType$10 = $sliceType(ptrType$8); sliceType$11 = $sliceType(sliceType$3); sliceType$12 = $sliceType(sliceType); sliceType$13 = $sliceType(sliceType$11); sliceType$14 = $sliceType(sliceType$9); ptrType$9 = $ptrType(syntax.Inst); ptrType$10 = $ptrType(queue); funcType = $funcType([$String], [$String], false); funcType$1 = $funcType([sliceType$3, sliceType], [sliceType$3], false); funcType$2 = $funcType([sliceType$3], [sliceType$3], false); funcType$3 = $funcType([sliceType], [], false); ptrType$11 = $ptrType(inputString); ptrType$12 = $ptrType(inputBytes); ptrType$13 = $ptrType(inputReader); machine.ptr.prototype.newInputBytes = function(b) { var $ptr, b, m; m = this; m.inputBytes.str = b; return m.inputBytes; }; machine.prototype.newInputBytes = function(b) { return this.$val.newInputBytes(b); }; machine.ptr.prototype.newInputString = function(s) { var $ptr, m, s; m = this; m.inputString.str = s; return m.inputString; }; machine.prototype.newInputString = function(s) { return this.$val.newInputString(s); }; machine.ptr.prototype.newInputReader = function(r) { var $ptr, m, r; m = this; m.inputReader.r = r; m.inputReader.atEOT = false; m.inputReader.pos = 0; return m.inputReader; }; machine.prototype.newInputReader = function(r) { return this.$val.newInputReader(r); }; progMachine = function(p, op) { var $ptr, m, n, ncap, op, p; m = new machine.ptr(ptrType$1.nil, p, op, new queue.ptr(), new queue.ptr(), sliceType$5.nil, false, sliceType.nil, new inputBytes.ptr(), new inputString.ptr(), new inputReader.ptr()); n = m.p.Inst.$length; $copy(m.q0, new queue.ptr($makeSlice(sliceType$2, n), $makeSlice(sliceType$6, 0, n)), queue); $copy(m.q1, new queue.ptr($makeSlice(sliceType$2, n), $makeSlice(sliceType$6, 0, n)), queue); ncap = p.NumCap; if (ncap < 2) { ncap = 2; } m.matchcap = $makeSlice(sliceType, ncap); return m; }; machine.ptr.prototype.init = function(ncap) { var $ptr, _i, _ref, m, ncap, t; m = this; _ref = m.pool; _i = 0; while (true) { if (!(_i < _ref.$length)) { break; } t = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]); t.cap = $subslice(t.cap, 0, ncap); _i++; } m.matchcap = $subslice(m.matchcap, 0, ncap); }; machine.prototype.init = function(ncap) { return this.$val.init(ncap); }; machine.ptr.prototype.alloc = function(i) { var $ptr, i, m, n, t, x, x$1; m = this; t = ptrType$3.nil; n = m.pool.$length; if (n > 0) { t = (x = m.pool, x$1 = n - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1])); m.pool = $subslice(m.pool, 0, (n - 1 >> 0)); } else { t = new thread.ptr(); t.cap = $makeSlice(sliceType, m.matchcap.$length, m.matchcap.$capacity); } t.inst = i; return t; }; machine.prototype.alloc = function(i) { return this.$val.alloc(i); }; machine.ptr.prototype.match = function(i, pos) { var $ptr, _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, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _v, advance, flag, i, i$1, m, nextq, pos, r, r1, runq, startCond, width, width1, 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; _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; _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; _v = $f._v; advance = $f.advance; flag = $f.flag; i = $f.i; i$1 = $f.i$1; m = $f.m; nextq = $f.nextq; pos = $f.pos; r = $f.r; r1 = $f.r1; runq = $f.runq; startCond = $f.startCond; width = $f.width; width1 = $f.width1; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: m = this; startCond = m.re.cond; if (startCond === 255) { return false; } m.matched = false; _ref = m.matchcap; _i = 0; while (true) { if (!(_i < _ref.$length)) { break; } i$1 = _i; (x = m.matchcap, ((i$1 < 0 || i$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i$1] = -1)); _i++; } _tmp = m.q0; _tmp$1 = m.q1; runq = _tmp; nextq = _tmp$1; _tmp$2 = -1; _tmp$3 = -1; r = _tmp$2; r1 = _tmp$3; _tmp$4 = 0; _tmp$5 = 0; width = _tmp$4; width1 = _tmp$5; _r = i.step(pos); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _tuple = _r; r = _tuple[0]; width = _tuple[1]; /* */ if (!((r === -1))) { $s = 2; continue; } /* */ $s = 3; continue; /* if (!((r === -1))) { */ case 2: _r$1 = i.step(pos + width >> 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; r1 = _tuple$1[0]; width1 = _tuple$1[1]; /* } */ case 3: flag = 0; /* */ if (pos === 0) { $s = 5; continue; } /* */ $s = 6; continue; /* if (pos === 0) { */ case 5: flag = syntax.EmptyOpContext(-1, r); $s = 7; continue; /* } else { */ case 6: _r$2 = i.context(pos); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } flag = _r$2; /* } */ case 7: /* while (true) { */ case 9: /* */ if (runq.dense.$length === 0) { $s = 11; continue; } /* */ $s = 12; continue; /* if (runq.dense.$length === 0) { */ case 11: if (!((((startCond & 4) >>> 0) === 0)) && !((pos === 0))) { /* break; */ $s = 10; continue; } if (m.matched) { /* break; */ $s = 10; continue; } if (!(m.re.prefix.length > 0 && !((r1 === m.re.prefixRune)))) { _v = false; $s = 15; continue s; } _r$3 = i.canCheckPrefix(); /* */ $s = 16; case 16: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } _v = _r$3; case 15: /* */ if (_v) { $s = 13; continue; } /* */ $s = 14; continue; /* if (_v) { */ case 13: _r$4 = i.index(m.re, pos); /* */ $s = 17; case 17: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } advance = _r$4; if (advance < 0) { /* break; */ $s = 10; continue; } pos = pos + (advance) >> 0; _r$5 = i.step(pos); /* */ $s = 18; case 18: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } _tuple$2 = _r$5; r = _tuple$2[0]; width = _tuple$2[1]; _r$6 = i.step(pos + width >> 0); /* */ $s = 19; case 19: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } _tuple$3 = _r$6; r1 = _tuple$3[0]; width1 = _tuple$3[1]; /* } */ case 14: /* } */ case 12: if (!m.matched) { if (m.matchcap.$length > 0) { (x$1 = m.matchcap, (0 >= x$1.$length ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + 0] = pos)); } m.add(runq, (m.p.Start >>> 0), pos, m.matchcap, flag, ptrType$3.nil); } flag = syntax.EmptyOpContext(r, r1); m.step(runq, nextq, pos, pos + width >> 0, r, flag); if (width === 0) { /* break; */ $s = 10; continue; } if ((m.matchcap.$length === 0) && m.matched) { /* break; */ $s = 10; continue; } pos = pos + (width) >> 0; _tmp$6 = r1; _tmp$7 = width1; r = _tmp$6; width = _tmp$7; /* */ if (!((r === -1))) { $s = 20; continue; } /* */ $s = 21; continue; /* if (!((r === -1))) { */ case 20: _r$7 = i.step(pos + width >> 0); /* */ $s = 22; case 22: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } _tuple$4 = _r$7; r1 = _tuple$4[0]; width1 = _tuple$4[1]; /* } */ case 21: _tmp$8 = nextq; _tmp$9 = runq; runq = _tmp$8; nextq = _tmp$9; /* } */ $s = 9; continue; case 10: m.clear(nextq); return m.matched; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: machine.ptr.prototype.match }; } $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._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._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._v = _v; $f.advance = advance; $f.flag = flag; $f.i = i; $f.i$1 = i$1; $f.m = m; $f.nextq = nextq; $f.pos = pos; $f.r = r; $f.r1 = r1; $f.runq = runq; $f.startCond = startCond; $f.width = width; $f.width1 = width1; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f; }; machine.prototype.match = function(i, pos) { return this.$val.match(i, pos); }; machine.ptr.prototype.clear = function(q) { var $ptr, _i, _ref, d, m, q; m = this; _ref = q.dense; _i = 0; while (true) { if (!(_i < _ref.$length)) { break; } d = $clone(((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]), entry); if (!(d.t === ptrType$3.nil)) { m.pool = $append(m.pool, d.t); } _i++; } q.dense = $subslice(q.dense, 0, 0); }; machine.prototype.clear = function(q) { return this.$val.clear(q); }; machine.ptr.prototype.step = function(runq, nextq, pos, nextPos, c, nextCond) { var $ptr, _i, _ref, _ref$1, add, c, d, d$1, i, j, longest, m, nextCond, nextPos, nextq, pos, runq, t, x, x$1, x$2, x$3, x$4, x$5; m = this; longest = m.re.longest; j = 0; while (true) { if (!(j < runq.dense.$length)) { break; } d = (x = runq.dense, ((j < 0 || j >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + j])); t = d.t; if (t === ptrType$3.nil) { j = j + (1) >> 0; continue; } if (longest && m.matched && t.cap.$length > 0 && (x$1 = m.matchcap, (0 >= x$1.$length ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + 0])) < (x$2 = t.cap, (0 >= x$2.$length ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + 0]))) { m.pool = $append(m.pool, t); j = j + (1) >> 0; continue; } i = t.inst; add = false; _ref = i.Op; if (_ref === 4) { if (t.cap.$length > 0 && (!longest || !m.matched || (x$3 = m.matchcap, (1 >= x$3.$length ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + 1])) < pos)) { (x$4 = t.cap, (1 >= x$4.$length ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + 1] = pos)); $copySlice(m.matchcap, t.cap); } if (!longest) { _ref$1 = $subslice(runq.dense, (j + 1 >> 0)); _i = 0; while (true) { if (!(_i < _ref$1.$length)) { break; } d$1 = $clone(((_i < 0 || _i >= _ref$1.$length) ? $throwRuntimeError("index out of range") : _ref$1.$array[_ref$1.$offset + _i]), entry); if (!(d$1.t === ptrType$3.nil)) { m.pool = $append(m.pool, d$1.t); } _i++; } runq.dense = $subslice(runq.dense, 0, 0); } m.matched = true; } else if (_ref === 7) { add = i.MatchRune(c); } else if (_ref === 8) { add = c === (x$5 = i.Rune, (0 >= x$5.$length ? $throwRuntimeError("index out of range") : x$5.$array[x$5.$offset + 0])); } else if (_ref === 9) { add = true; } else if (_ref === 10) { add = !((c === 10)); } else { $panic(new $String("bad inst")); } if (add) { t = m.add(nextq, i.Out, nextPos, t.cap, nextCond, t); } if (!(t === ptrType$3.nil)) { m.pool = $append(m.pool, t); } j = j + (1) >> 0; } runq.dense = $subslice(runq.dense, 0, 0); }; machine.prototype.step = function(runq, nextq, pos, nextPos, c, nextCond) { return this.$val.step(runq, nextq, pos, nextPos, c, nextCond); }; machine.ptr.prototype.add = function(q, pc, pos, cap, cond, t) { var $ptr, _ref, cap, cond, d, i, j, j$1, m, opos, pc, pos, q, t, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8; m = this; if (pc === 0) { return t; } j = (x = q.sparse, ((pc < 0 || pc >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + pc])); if (j < (q.dense.$length >>> 0) && ((x$1 = q.dense, ((j < 0 || j >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + j])).pc === pc)) { return t; } j$1 = q.dense.$length; q.dense = $subslice(q.dense, 0, (j$1 + 1 >> 0)); d = (x$2 = q.dense, ((j$1 < 0 || j$1 >= x$2.$length) ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + j$1])); d.t = ptrType$3.nil; d.pc = pc; (x$3 = q.sparse, ((pc < 0 || pc >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + pc] = (j$1 >>> 0))); i = (x$4 = m.p.Inst, ((pc < 0 || pc >= x$4.$length) ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + pc])); _ref = i.Op; if (_ref === 5) { } else if (_ref === 0 || _ref === 1) { t = m.add(q, i.Out, pos, cap, cond, t); t = m.add(q, i.Arg, pos, cap, cond, t); } else if (_ref === 3) { if ((((i.Arg << 24 >>> 24) & ~cond) << 24 >>> 24) === 0) { t = m.add(q, i.Out, pos, cap, cond, t); } } else if (_ref === 6) { t = m.add(q, i.Out, pos, cap, cond, t); } else if (_ref === 2) { if ((i.Arg >> 0) < cap.$length) { opos = (x$5 = i.Arg, ((x$5 < 0 || x$5 >= cap.$length) ? $throwRuntimeError("index out of range") : cap.$array[cap.$offset + x$5])); (x$6 = i.Arg, ((x$6 < 0 || x$6 >= cap.$length) ? $throwRuntimeError("index out of range") : cap.$array[cap.$offset + x$6] = pos)); m.add(q, i.Out, pos, cap, cond, ptrType$3.nil); (x$7 = i.Arg, ((x$7 < 0 || x$7 >= cap.$length) ? $throwRuntimeError("index out of range") : cap.$array[cap.$offset + x$7] = opos)); } else { t = m.add(q, i.Out, pos, cap, cond, t); } } else if (_ref === 4 || _ref === 7 || _ref === 8 || _ref === 9 || _ref === 10) { if (t === ptrType$3.nil) { t = m.alloc(i); } else { t.inst = i; } if (cap.$length > 0 && !((x$8 = t.cap, $indexPtr(x$8.$array, x$8.$offset + 0, ptrType$4)) === $indexPtr(cap.$array, cap.$offset + 0, ptrType$4))) { $copySlice(t.cap, cap); } d.t = t; t = ptrType$3.nil; } else { $panic(new $String("unhandled")); } return t; }; machine.prototype.add = function(q, pc, pos, cap, cond, t) { return this.$val.add(q, pc, pos, cap, cond, t); }; machine.ptr.prototype.onepass = function(i, pos) { var $ptr, _i, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _ref, _ref$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _v, flag, i, i$1, inst, m, pc, pos, r, r1, startCond, width, width1, x, x$1, x$2, 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; _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; _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; _v = $f._v; flag = $f.flag; i = $f.i; i$1 = $f.i$1; inst = $f.inst; m = $f.m; pc = $f.pc; pos = $f.pos; r = $f.r; r1 = $f.r1; startCond = $f.startCond; width = $f.width; width1 = $f.width1; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: inst = [inst]; m = this; startCond = m.re.cond; if (startCond === 255) { return false; } m.matched = false; _ref = m.matchcap; _i = 0; while (true) { if (!(_i < _ref.$length)) { break; } i$1 = _i; (x = m.matchcap, ((i$1 < 0 || i$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i$1] = -1)); _i++; } _tmp = -1; _tmp$1 = -1; r = _tmp; r1 = _tmp$1; _tmp$2 = 0; _tmp$3 = 0; width = _tmp$2; width1 = _tmp$3; _r = i.step(pos); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _tuple = _r; r = _tuple[0]; width = _tuple[1]; /* */ if (!((r === -1))) { $s = 2; continue; } /* */ $s = 3; continue; /* if (!((r === -1))) { */ case 2: _r$1 = i.step(pos + width >> 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; r1 = _tuple$1[0]; width1 = _tuple$1[1]; /* } */ case 3: flag = 0; /* */ if (pos === 0) { $s = 5; continue; } /* */ $s = 6; continue; /* if (pos === 0) { */ case 5: flag = syntax.EmptyOpContext(-1, r); $s = 7; continue; /* } else { */ case 6: _r$2 = i.context(pos); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } flag = _r$2; /* } */ case 7: pc = m.op.Start; inst[0] = $clone((x$1 = m.op.Inst, ((pc < 0 || pc >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + pc])), onePassInst); if (!((pos === 0) && ((((inst[0].Inst.Arg << 24 >>> 24) & ~flag) << 24 >>> 24) === 0) && m.re.prefix.length > 0)) { _v = false; $s = 11; continue s; } _r$3 = i.canCheckPrefix(); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } _v = _r$3; case 11: /* */ if (_v) { $s = 9; continue; } /* */ $s = 10; continue; /* if (_v) { */ case 9: _r$4 = i.hasPrefix(m.re); /* */ $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: pos = pos + (m.re.prefix.length) >> 0; _r$5 = i.step(pos); /* */ $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; r = _tuple$2[0]; width = _tuple$2[1]; _r$6 = i.step(pos + width >> 0); /* */ $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; r1 = _tuple$3[0]; width1 = _tuple$3[1]; _r$7 = i.context(pos); /* */ $s = 19; case 19: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } flag = _r$7; pc = (m.re.prefixEnd >> 0); $s = 15; continue; /* } else { */ case 14: return m.matched; /* } */ case 15: /* } */ case 10: /* while (true) { */ case 20: $copy(inst[0], (x$2 = m.op.Inst, ((pc < 0 || pc >= x$2.$length) ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + pc])), onePassInst); pc = (inst[0].Inst.Out >> 0); _ref$1 = inst[0].Inst.Op; /* */ if (_ref$1 === 4) { $s = 22; continue; } /* */ if (_ref$1 === 7) { $s = 23; continue; } /* */ if (_ref$1 === 8) { $s = 24; continue; } /* */ if (_ref$1 === 9) { $s = 25; continue; } /* */ if (_ref$1 === 10) { $s = 26; continue; } /* */ if (_ref$1 === 0 || _ref$1 === 1) { $s = 27; continue; } /* */ if (_ref$1 === 5) { $s = 28; continue; } /* */ if (_ref$1 === 6) { $s = 29; continue; } /* */ if (_ref$1 === 3) { $s = 30; continue; } /* */ if (_ref$1 === 2) { $s = 31; continue; } /* */ $s = 32; continue; /* if (_ref$1 === 4) { */ case 22: m.matched = true; if (m.matchcap.$length > 0) { (x$3 = m.matchcap, (0 >= x$3.$length ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + 0] = 0)); (x$4 = m.matchcap, (1 >= x$4.$length ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + 1] = pos)); } return m.matched; $s = 33; continue; /* } else if (_ref$1 === 7) { */ case 23: if (!inst[0].Inst.MatchRune(r)) { return m.matched; } $s = 33; continue; /* } else if (_ref$1 === 8) { */ case 24: if (!((r === (x$5 = inst[0].Inst.Rune, (0 >= x$5.$length ? $throwRuntimeError("index out of range") : x$5.$array[x$5.$offset + 0]))))) { return m.matched; } $s = 33; continue; /* } else if (_ref$1 === 9) { */ case 25: $s = 33; continue; /* } else if (_ref$1 === 10) { */ case 26: if (r === 10) { return m.matched; } $s = 33; continue; /* } else if (_ref$1 === 0 || _ref$1 === 1) { */ case 27: pc = (onePassNext(inst[0], r) >> 0); /* continue; */ $s = 20; continue; $s = 33; continue; /* } else if (_ref$1 === 5) { */ case 28: return m.matched; $s = 33; continue; /* } else if (_ref$1 === 6) { */ case 29: /* continue; */ $s = 20; continue; $s = 33; continue; /* } else if (_ref$1 === 3) { */ case 30: if (!(((((inst[0].Inst.Arg << 24 >>> 24) & ~flag) << 24 >>> 24) === 0))) { return m.matched; } /* continue; */ $s = 20; continue; $s = 33; continue; /* } else if (_ref$1 === 2) { */ case 31: if ((inst[0].Inst.Arg >> 0) < m.matchcap.$length) { (x$6 = m.matchcap, x$7 = inst[0].Inst.Arg, ((x$7 < 0 || x$7 >= x$6.$length) ? $throwRuntimeError("index out of range") : x$6.$array[x$6.$offset + x$7] = pos)); } /* continue; */ $s = 20; continue; $s = 33; continue; /* } else { */ case 32: $panic(new $String("bad inst")); /* } */ case 33: if (width === 0) { /* break; */ $s = 21; continue; } flag = syntax.EmptyOpContext(r, r1); pos = pos + (width) >> 0; _tmp$4 = r1; _tmp$5 = width1; r = _tmp$4; width = _tmp$5; /* */ if (!((r === -1))) { $s = 34; continue; } /* */ $s = 35; continue; /* if (!((r === -1))) { */ case 34: _r$8 = i.step(pos + width >> 0); /* */ $s = 36; case 36: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } _tuple$4 = _r$8; r1 = _tuple$4[0]; width1 = _tuple$4[1]; /* } */ case 35: /* } */ $s = 20; continue; case 21: return m.matched; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: machine.ptr.prototype.onepass }; } $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._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 = _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.flag = flag; $f.i = i; $f.i$1 = i$1; $f.inst = inst; $f.m = m; $f.pc = pc; $f.pos = pos; $f.r = r; $f.r1 = r1; $f.startCond = startCond; $f.width = width; $f.width1 = width1; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.$s = $s; $f.$r = $r; return $f; }; machine.prototype.onepass = function(i, pos) { return this.$val.onepass(i, pos); }; Regexp.ptr.prototype.doExecute = function(r, b, s, pos, ncap) { var $ptr, _r, _r$1, b, cap, i, m, ncap, pos, r, re, 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; b = $f.b; cap = $f.cap; i = $f.i; m = $f.m; ncap = $f.ncap; pos = $f.pos; r = $f.r; re = $f.re; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: re = this; m = re.get(); i = $ifaceNil; if (!($interfaceIsEqual(r, $ifaceNil))) { i = m.newInputReader(r); } else if (!(b === sliceType$3.nil)) { i = m.newInputBytes(b); } else { i = m.newInputString(s); } /* */ if (!(m.op === notOnePass)) { $s = 1; continue; } /* */ $s = 2; continue; /* if (!(m.op === notOnePass)) { */ case 1: _r = m.onepass(i, pos); /* */ $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: re.put(m); return sliceType.nil; /* } */ case 5: $s = 3; continue; /* } else { */ case 2: m.init(ncap); _r$1 = m.match(i, pos); /* */ $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: re.put(m); return sliceType.nil; /* } */ case 8: /* } */ case 3: if (ncap === 0) { re.put(m); return empty; } cap = $makeSlice(sliceType, m.matchcap.$length); $copySlice(cap, m.matchcap); re.put(m); return cap; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.doExecute }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.b = b; $f.cap = cap; $f.i = i; $f.m = m; $f.ncap = ncap; $f.pos = pos; $f.r = r; $f.re = re; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; }; Regexp.prototype.doExecute = function(r, b, s, pos, ncap) { return this.$val.doExecute(r, b, s, pos, ncap); }; onePassPrefix = function(p) { var $ptr, _tmp, _tmp$1, _tmp$10, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, buf, complete, i, p, pc, prefix, x, x$1, x$2, x$3, x$4, x$5, x$6; prefix = ""; complete = false; pc = 0; i = (x = p.Inst, x$1 = p.Start, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1])); if (!((i.Op === 3)) || (((((i.Arg << 24 >>> 24)) & 4) >>> 0) === 0)) { _tmp = ""; _tmp$1 = i.Op === 4; _tmp$2 = (p.Start >>> 0); prefix = _tmp; complete = _tmp$1; pc = _tmp$2; return [prefix, complete, pc]; } pc = i.Out; i = (x$2 = p.Inst, ((pc < 0 || pc >= x$2.$length) ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + pc])); while (true) { if (!(i.Op === 6)) { break; } pc = i.Out; i = (x$3 = p.Inst, ((pc < 0 || pc >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + pc])); } if (!((iop(i) === 7)) || !((i.Rune.$length === 1))) { _tmp$3 = ""; _tmp$4 = i.Op === 4; _tmp$5 = (p.Start >>> 0); prefix = _tmp$3; complete = _tmp$4; pc = _tmp$5; return [prefix, complete, pc]; } buf = $clone(new bytes.Buffer.ptr(), bytes.Buffer); while (true) { if (!((iop(i) === 7) && (i.Rune.$length === 1) && ((((i.Arg << 16 >>> 16) & 1) >>> 0) === 0))) { break; } buf.WriteRune((x$4 = i.Rune, (0 >= x$4.$length ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + 0]))); _tmp$6 = i.Out; _tmp$7 = (x$5 = p.Inst, x$6 = i.Out, ((x$6 < 0 || x$6 >= x$5.$length) ? $throwRuntimeError("index out of range") : x$5.$array[x$5.$offset + x$6])); pc = _tmp$6; i = _tmp$7; } _tmp$8 = buf.String(); _tmp$9 = (i.Op === 3) && !((((((i.Arg << 24 >>> 24)) & 4) >>> 0) === 0)); _tmp$10 = pc; prefix = _tmp$8; complete = _tmp$9; pc = _tmp$10; return [prefix, complete, pc]; }; onePassNext = function(i, r) { var $ptr, i, next, r, x; next = i.Inst.MatchRunePos(r); if (next >= 0) { return (x = i.Next, ((next < 0 || next >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + next])); } if (i.Inst.Op === 1) { return i.Inst.Out; } return 0; }; iop = function(i) { var $ptr, _ref, i, op; op = i.Op; _ref = op; if (_ref === 8 || _ref === 9 || _ref === 10) { op = 7; } return op; }; queueOnePass.ptr.prototype.empty = function() { var $ptr, q; q = this; return q.nextIndex >= q.size; }; queueOnePass.prototype.empty = function() { return this.$val.empty(); }; queueOnePass.ptr.prototype.next = function() { var $ptr, n, q, x, x$1; n = 0; q = this; n = (x = q.dense, x$1 = q.nextIndex, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1])); q.nextIndex = q.nextIndex + (1) >>> 0; return n; }; queueOnePass.prototype.next = function() { return this.$val.next(); }; queueOnePass.ptr.prototype.clear = function() { var $ptr, q; q = this; q.size = 0; q.nextIndex = 0; }; queueOnePass.prototype.clear = function() { return this.$val.clear(); }; queueOnePass.ptr.prototype.contains = function(u) { var $ptr, q, u, x, x$1, x$2, x$3; q = this; if (u >= (q.sparse.$length >>> 0)) { return false; } return (x = q.sparse, ((u < 0 || u >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + u])) < q.size && ((x$1 = q.dense, x$2 = (x$3 = q.sparse, ((u < 0 || u >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + u])), ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])) === u); }; queueOnePass.prototype.contains = function(u) { return this.$val.contains(u); }; queueOnePass.ptr.prototype.insert = function(u) { var $ptr, q, u; q = this; if (!q.contains(u)) { q.insertNew(u); } }; queueOnePass.prototype.insert = function(u) { return this.$val.insert(u); }; queueOnePass.ptr.prototype.insertNew = function(u) { var $ptr, q, u, x, x$1, x$2; q = this; if (u >= (q.sparse.$length >>> 0)) { return; } (x = q.sparse, ((u < 0 || u >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + u] = q.size)); (x$1 = q.dense, x$2 = q.size, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2] = u)); q.size = q.size + (1) >>> 0; }; queueOnePass.prototype.insertNew = function(u) { return this.$val.insertNew(u); }; newQueue = function(size) { var $ptr, q, size; q = ptrType$5.nil; q = new queueOnePass.ptr($makeSlice(sliceType$2, size), $makeSlice(sliceType$2, size), 0, 0); return q; }; mergeRuneSets = function(leftRunes, rightRunes, leftPC, rightPC) { var $ptr, _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, extend, ix, leftLen, leftPC, leftRunes, lx, merged, next, ok, rightLen, rightPC, rightRunes, rx, 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; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; extend = $f.extend; ix = $f.ix; leftLen = $f.leftLen; leftPC = $f.leftPC; leftRunes = $f.leftRunes; lx = $f.lx; merged = $f.merged; next = $f.next; ok = $f.ok; rightLen = $f.rightLen; rightPC = $f.rightPC; rightRunes = $f.rightRunes; rx = $f.rx; 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); ix = [ix]; lx = [lx]; merged = [merged]; next = [next]; ok = [ok]; rx = [rx]; leftLen = leftRunes.$get().$length; rightLen = rightRunes.$get().$length; if (!(((leftLen & 1) === 0)) || !(((rightLen & 1) === 0))) { $panic(new $String("mergeRuneSets odd length []rune")); } _tmp = 0; _tmp$1 = 0; lx[0] = _tmp; rx[0] = _tmp$1; merged[0] = $makeSlice(sliceType$1, 0); next[0] = $makeSlice(sliceType$2, 0); ok[0] = true; $deferred.push([(function(ix, lx, merged, next, ok, rx) { return function() { var $ptr; if (!ok[0]) { merged[0] = sliceType$1.nil; next[0] = sliceType$2.nil; } }; })(ix, lx, merged, next, ok, rx), []]); ix[0] = -1; extend = (function(ix, lx, merged, next, ok, rx) { return function(newLow, newArray, pc) { var $ptr, newArray, newLow, pc, x, x$1, x$2, x$3, x$4, x$5; if (ix[0] > 0 && (x = newArray.$get(), x$1 = newLow.$get(), ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1])) <= ((ix[0] < 0 || ix[0] >= merged[0].$length) ? $throwRuntimeError("index out of range") : merged[0].$array[merged[0].$offset + ix[0]])) { return false; } merged[0] = $append(merged[0], (x$2 = newArray.$get(), x$3 = newLow.$get(), ((x$3 < 0 || x$3 >= x$2.$length) ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + x$3])), (x$4 = newArray.$get(), x$5 = newLow.$get() + 1 >> 0, ((x$5 < 0 || x$5 >= x$4.$length) ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + x$5]))); newLow.$set(newLow.$get() + (2) >> 0); ix[0] = ix[0] + (2) >> 0; next[0] = $append(next[0], pc); return true; }; })(ix, lx, merged, next, ok, rx); /* while (true) { */ case 1: /* if (!(lx[0] < leftLen || rx[0] < rightLen)) { break; } */ if(!(lx[0] < leftLen || rx[0] < rightLen)) { $s = 2; continue; } /* */ if (rx[0] >= rightLen) { $s = 3; continue; } /* */ if (lx[0] >= leftLen) { $s = 4; continue; } /* */ if ((x = rightRunes.$get(), ((rx[0] < 0 || rx[0] >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + rx[0]])) < (x$1 = leftRunes.$get(), ((lx[0] < 0 || lx[0] >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + lx[0]]))) { $s = 5; continue; } /* */ $s = 6; continue; /* if (rx[0] >= rightLen) { */ case 3: _r = extend((lx.$ptr || (lx.$ptr = new ptrType$4(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, lx))), leftRunes, leftPC); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } ok[0] = _r; $s = 7; continue; /* } else if (lx[0] >= leftLen) { */ case 4: _r$1 = extend((rx.$ptr || (rx.$ptr = new ptrType$4(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, rx))), rightRunes, rightPC); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } ok[0] = _r$1; $s = 7; continue; /* } else if ((x = rightRunes.$get(), ((rx[0] < 0 || rx[0] >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + rx[0]])) < (x$1 = leftRunes.$get(), ((lx[0] < 0 || lx[0] >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + lx[0]]))) { */ case 5: _r$2 = extend((rx.$ptr || (rx.$ptr = new ptrType$4(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, rx))), rightRunes, rightPC); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } ok[0] = _r$2; $s = 7; continue; /* } else { */ case 6: _r$3 = extend((lx.$ptr || (lx.$ptr = new ptrType$4(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, lx))), leftRunes, leftPC); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } ok[0] = _r$3; /* } */ case 7: if (!ok[0]) { return [noRune, noNext]; } /* } */ $s = 1; continue; case 2: return [merged[0], next[0]]; /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; return [sliceType$1.nil, sliceType$2.nil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: mergeRuneSets }; } $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.extend = extend; $f.ix = ix; $f.leftLen = leftLen; $f.leftPC = leftPC; $f.leftRunes = leftRunes; $f.lx = lx; $f.merged = merged; $f.next = next; $f.ok = ok; $f.rightLen = rightLen; $f.rightPC = rightPC; $f.rightRunes = rightRunes; $f.rx = rx; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } }; cleanupOnePass = function(prog, original) { var $ptr, _i, _ref, _ref$1, instOriginal, ix, original, prog, x, x$1, x$2; _ref = original.Inst; _i = 0; while (true) { if (!(_i < _ref.$length)) { break; } ix = _i; instOriginal = $clone(((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]), syntax.Inst); _ref$1 = instOriginal.Op; if (_ref$1 === 0 || _ref$1 === 1 || _ref$1 === 7) { } else if (_ref$1 === 2 || _ref$1 === 3 || _ref$1 === 6 || _ref$1 === 4 || _ref$1 === 5) { (x = prog.Inst, ((ix < 0 || ix >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + ix])).Next = sliceType$2.nil; } else if (_ref$1 === 8 || _ref$1 === 9 || _ref$1 === 10) { (x$1 = prog.Inst, ((ix < 0 || ix >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + ix])).Next = sliceType$2.nil; $copy((x$2 = prog.Inst, ((ix < 0 || ix >= x$2.$length) ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + ix])), new onePassInst.ptr($clone(instOriginal, syntax.Inst), sliceType$2.nil), onePassInst); } _i++; } }; onePassCopy = function(prog) { var $ptr, _i, _i$1, _ref, _ref$1, _ref$2, _tmp, _tmp$1, _tmp$2, _tmp$3, inst, instAlt, instOther, p, p_A_Alt, p_A_Other, p_B_Alt, p_B_Other, patch, pc, prog, 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; p = new onePassProg.ptr(sliceType$7.nil, prog.Start, prog.NumCap); _ref = prog.Inst; _i = 0; while (true) { if (!(_i < _ref.$length)) { break; } inst = $clone(((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]), syntax.Inst); p.Inst = $append(p.Inst, new onePassInst.ptr($clone(inst, syntax.Inst), sliceType$2.nil)); _i++; } _ref$1 = p.Inst; _i$1 = 0; while (true) { if (!(_i$1 < _ref$1.$length)) { break; } pc = _i$1; _ref$2 = (x = p.Inst, ((pc < 0 || pc >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + pc])).Inst.Op; if (_ref$2 === 0 || _ref$2 === 1) { p_A_Other = (x$1 = (x$2 = p.Inst, ((pc < 0 || pc >= x$2.$length) ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + pc])), (x$1.$ptr_Out || (x$1.$ptr_Out = new ptrType$6(function() { return this.$target.Inst.Out; }, function($v) { this.$target.Inst.Out = $v; }, x$1)))); p_A_Alt = (x$3 = (x$4 = p.Inst, ((pc < 0 || pc >= x$4.$length) ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + pc])), (x$3.$ptr_Arg || (x$3.$ptr_Arg = new ptrType$6(function() { return this.$target.Inst.Arg; }, function($v) { this.$target.Inst.Arg = $v; }, x$3)))); instAlt = $clone((x$5 = p.Inst, x$6 = p_A_Alt.$get(), ((x$6 < 0 || x$6 >= x$5.$length) ? $throwRuntimeError("index out of range") : x$5.$array[x$5.$offset + x$6])), onePassInst); if (!((instAlt.Inst.Op === 0) || (instAlt.Inst.Op === 1))) { _tmp = p_A_Other; _tmp$1 = p_A_Alt; p_A_Alt = _tmp; p_A_Other = _tmp$1; $copy(instAlt, (x$7 = p.Inst, x$8 = p_A_Alt.$get(), ((x$8 < 0 || x$8 >= x$7.$length) ? $throwRuntimeError("index out of range") : x$7.$array[x$7.$offset + x$8])), onePassInst); if (!((instAlt.Inst.Op === 0) || (instAlt.Inst.Op === 1))) { _i$1++; continue; } } instOther = $clone((x$9 = p.Inst, x$10 = p_A_Other.$get(), ((x$10 < 0 || x$10 >= x$9.$length) ? $throwRuntimeError("index out of range") : x$9.$array[x$9.$offset + x$10])), onePassInst); if ((instOther.Inst.Op === 0) || (instOther.Inst.Op === 1)) { _i$1++; continue; } p_B_Alt = (x$11 = (x$12 = p.Inst, x$13 = p_A_Alt.$get(), ((x$13 < 0 || x$13 >= x$12.$length) ? $throwRuntimeError("index out of range") : x$12.$array[x$12.$offset + x$13])), (x$11.$ptr_Out || (x$11.$ptr_Out = new ptrType$6(function() { return this.$target.Inst.Out; }, function($v) { this.$target.Inst.Out = $v; }, x$11)))); p_B_Other = (x$14 = (x$15 = p.Inst, x$16 = p_A_Alt.$get(), ((x$16 < 0 || x$16 >= x$15.$length) ? $throwRuntimeError("index out of range") : x$15.$array[x$15.$offset + x$16])), (x$14.$ptr_Arg || (x$14.$ptr_Arg = new ptrType$6(function() { return this.$target.Inst.Arg; }, function($v) { this.$target.Inst.Arg = $v; }, x$14)))); patch = false; if (instAlt.Inst.Out === (pc >>> 0)) { patch = true; } else if (instAlt.Inst.Arg === (pc >>> 0)) { patch = true; _tmp$2 = p_B_Other; _tmp$3 = p_B_Alt; p_B_Alt = _tmp$2; p_B_Other = _tmp$3; } if (patch) { p_B_Alt.$set(p_A_Other.$get()); } if (p_A_Other.$get() === p_B_Alt.$get()) { p_A_Alt.$set(p_B_Other.$get()); } } else { _i$1++; continue; } _i$1++; } return p; }; runeSlice.prototype.Len = function() { var $ptr, p; p = this; return p.$length; }; $ptrType(runeSlice).prototype.Len = function() { return this.$get().Len(); }; runeSlice.prototype.Less = function(i, j) { var $ptr, i, j, p; p = this; return ((i < 0 || i >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + i]) < ((j < 0 || j >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + j]); }; $ptrType(runeSlice).prototype.Less = function(i, j) { return this.$get().Less(i, j); }; runeSlice.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") : p.$array[p.$offset + j]); _tmp$1 = ((i < 0 || i >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + i]); ((i < 0 || i >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + i] = _tmp); ((j < 0 || j >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + j] = _tmp$1); }; $ptrType(runeSlice).prototype.Swap = function(i, j) { return this.$get().Swap(i, j); }; runeSlice.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.Sort(p); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: runeSlice.prototype.Sort }; } $f.$ptr = $ptr; $f.p = p; $f.$s = $s; $f.$r = $r; return $f; }; $ptrType(runeSlice).prototype.Sort = function() { return this.$get().Sort(); }; makeOnePass = function(p) { var $ptr, _i, _r, _ref, _ref$1, build, check, i, inst, instQueue, m, onePassRunes, p, pc, visitQueue, 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; _ref = $f._ref; _ref$1 = $f._ref$1; build = $f.build; check = $f.check; i = $f.i; inst = $f.inst; instQueue = $f.instQueue; m = $f.m; onePassRunes = $f.onePassRunes; p = $f.p; pc = $f.pc; visitQueue = $f.visitQueue; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: build = [build]; check = [check]; onePassRunes = [onePassRunes]; p = [p]; visitQueue = [visitQueue]; if (p[0].Inst.$length >= 1000) { return notOnePass; } instQueue = newQueue(p[0].Inst.$length); visitQueue[0] = newQueue(p[0].Inst.$length); build[0] = $throwNilPointerError; check[0] = $throwNilPointerError; onePassRunes[0] = $makeSlice(sliceType$8, p[0].Inst.$length); build[0] = (function(build, check, onePassRunes, p, visitQueue) { return function $b(pc, q) { var $ptr, _ref, inst, pc, q, x, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _ref = $f._ref; inst = $f.inst; pc = $f.pc; q = $f.q; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: if (q.contains(pc)) { return; } inst = $clone((x = p[0].Inst, ((pc < 0 || pc >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + pc])), onePassInst); _ref = inst.Inst.Op; /* */ if (_ref === 0 || _ref === 1) { $s = 1; continue; } /* */ if (_ref === 4 || _ref === 5) { $s = 2; continue; } /* */ $s = 3; continue; /* if (_ref === 0 || _ref === 1) { */ case 1: q.insert(inst.Inst.Out); $r = build[0](inst.Inst.Out, q); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } q.insert(inst.Inst.Arg); $s = 4; continue; /* } else if (_ref === 4 || _ref === 5) { */ case 2: $s = 4; continue; /* } else { */ case 3: q.insert(inst.Inst.Out); /* } */ case 4: /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._ref = _ref; $f.inst = inst; $f.pc = pc; $f.q = q; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; }; })(build, check, onePassRunes, p, visitQueue); check[0] = (function(build, check, onePassRunes, p, visitQueue) { return function $b(pc, m) { var $ptr, _entry, _entry$1, _entry$2, _entry$3, _key, _key$1, _key$2, _key$3, _key$4, _key$5, _key$6, _key$7, _q, _q$1, _q$2, _q$3, _q$4, _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, _v, i, i$1, i$2, i$3, i$4, inst, m, matchArg, matchOut, ok, pc, r0, r0$1, r1, r1$1, runes, runes$1, x, x$1, x$2, 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; _entry = $f._entry; _entry$1 = $f._entry$1; _entry$2 = $f._entry$2; _entry$3 = $f._entry$3; _key = $f._key; _key$1 = $f._key$1; _key$2 = $f._key$2; _key$3 = $f._key$3; _key$4 = $f._key$4; _key$5 = $f._key$5; _key$6 = $f._key$6; _key$7 = $f._key$7; _q = $f._q; _q$1 = $f._q$1; _q$2 = $f._q$2; _q$3 = $f._q$3; _q$4 = $f._q$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; _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; _v = $f._v; i = $f.i; i$1 = $f.i$1; i$2 = $f.i$2; i$3 = $f.i$3; i$4 = $f.i$4; inst = $f.inst; m = $f.m; matchArg = $f.matchArg; matchOut = $f.matchOut; ok = $f.ok; pc = $f.pc; r0 = $f.r0; r0$1 = $f.r0$1; r1 = $f.r1; r1$1 = $f.r1$1; runes = $f.runes; runes$1 = $f.runes$1; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: ok = false; ok = true; inst = (x = p[0].Inst, ((pc < 0 || pc >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + pc])); if (visitQueue[0].contains(pc)) { return ok; } visitQueue[0].insert(pc); _ref = inst.Inst.Op; /* */ if (_ref === 0 || _ref === 1) { $s = 1; continue; } /* */ if (_ref === 2 || _ref === 6) { $s = 2; continue; } /* */ if (_ref === 3) { $s = 3; continue; } /* */ if (_ref === 4 || _ref === 5) { $s = 4; continue; } /* */ if (_ref === 7) { $s = 5; continue; } /* */ if (_ref === 8) { $s = 6; continue; } /* */ if (_ref === 9) { $s = 7; continue; } /* */ if (_ref === 10) { $s = 8; continue; } /* */ $s = 9; continue; /* switch (0) { default: if (_ref === 0 || _ref === 1) { */ case 1: _r = check[0](inst.Inst.Out, m); /* */ $s = 11; case 11: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } if (!(_r)) { _v = false; $s = 10; continue s; } _r$1 = check[0](inst.Inst.Arg, m); /* */ $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 10: ok = _v; matchOut = (_entry = m[inst.Inst.Out], _entry !== undefined ? _entry.v : false); matchArg = (_entry$1 = m[inst.Inst.Arg], _entry$1 !== undefined ? _entry$1.v : false); if (matchOut && matchArg) { ok = false; /* break; */ $s = 9; continue; } if (matchArg) { _tmp = inst.Inst.Arg; _tmp$1 = inst.Inst.Out; inst.Inst.Out = _tmp; inst.Inst.Arg = _tmp$1; _tmp$2 = matchArg; _tmp$3 = matchOut; matchOut = _tmp$2; matchArg = _tmp$3; } if (matchOut) { _key = pc; (m || $throwRuntimeError("assignment to entry in nil map"))[_key] = { k: _key, v: true }; inst.Inst.Op = 1; } _r$2 = mergeRuneSets($indexPtr(onePassRunes[0].$array, onePassRunes[0].$offset + inst.Inst.Out, ptrType$7), $indexPtr(onePassRunes[0].$array, onePassRunes[0].$offset + inst.Inst.Arg, ptrType$7), inst.Inst.Out, inst.Inst.Arg); /* */ $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; ((pc < 0 || pc >= onePassRunes[0].$length) ? $throwRuntimeError("index out of range") : onePassRunes[0].$array[onePassRunes[0].$offset + pc] = _tuple[0]); inst.Next = _tuple[1]; if (inst.Next.$length > 0 && ((x$1 = inst.Next, (0 >= x$1.$length ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + 0])) === 4294967295)) { ok = false; /* break; */ $s = 9; continue; } $s = 9; continue; /* } else if (_ref === 2 || _ref === 6) { */ case 2: _r$3 = check[0](inst.Inst.Out, m); /* */ $s = 14; case 14: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } ok = _r$3; _key$1 = pc; (m || $throwRuntimeError("assignment to entry in nil map"))[_key$1] = { k: _key$1, v: (_entry$2 = m[inst.Inst.Out], _entry$2 !== undefined ? _entry$2.v : false) }; ((pc < 0 || pc >= onePassRunes[0].$length) ? $throwRuntimeError("index out of range") : onePassRunes[0].$array[onePassRunes[0].$offset + pc] = $appendSlice(new sliceType$1([]), (x$2 = inst.Inst.Out, ((x$2 < 0 || x$2 >= onePassRunes[0].$length) ? $throwRuntimeError("index out of range") : onePassRunes[0].$array[onePassRunes[0].$offset + x$2])))); inst.Next = new sliceType$2([]); i = (_q = ((pc < 0 || pc >= onePassRunes[0].$length) ? $throwRuntimeError("index out of range") : onePassRunes[0].$array[onePassRunes[0].$offset + pc]).$length / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); while (true) { if (!(i >= 0)) { break; } inst.Next = $append(inst.Next, inst.Inst.Out); i = i - (1) >> 0; } $s = 9; continue; /* } else if (_ref === 3) { */ case 3: _r$4 = check[0](inst.Inst.Out, m); /* */ $s = 15; case 15: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } ok = _r$4; _key$2 = pc; (m || $throwRuntimeError("assignment to entry in nil map"))[_key$2] = { k: _key$2, v: (_entry$3 = m[inst.Inst.Out], _entry$3 !== undefined ? _entry$3.v : false) }; ((pc < 0 || pc >= onePassRunes[0].$length) ? $throwRuntimeError("index out of range") : onePassRunes[0].$array[onePassRunes[0].$offset + pc] = $appendSlice(new sliceType$1([]), (x$3 = inst.Inst.Out, ((x$3 < 0 || x$3 >= onePassRunes[0].$length) ? $throwRuntimeError("index out of range") : onePassRunes[0].$array[onePassRunes[0].$offset + x$3])))); inst.Next = new sliceType$2([]); i$1 = (_q$1 = ((pc < 0 || pc >= onePassRunes[0].$length) ? $throwRuntimeError("index out of range") : onePassRunes[0].$array[onePassRunes[0].$offset + pc]).$length / 2, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")); while (true) { if (!(i$1 >= 0)) { break; } inst.Next = $append(inst.Next, inst.Inst.Out); i$1 = i$1 - (1) >> 0; } $s = 9; continue; /* } else if (_ref === 4 || _ref === 5) { */ case 4: _key$3 = pc; (m || $throwRuntimeError("assignment to entry in nil map"))[_key$3] = { k: _key$3, v: inst.Inst.Op === 4 }; /* break; */ $s = 9; continue; $s = 9; continue; /* } else if (_ref === 7) { */ case 5: _r$5 = check[0](inst.Inst.Out, m); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } ok = _r$5; _key$4 = pc; (m || $throwRuntimeError("assignment to entry in nil map"))[_key$4] = { k: _key$4, v: false }; if (inst.Next.$length > 0) { /* break; */ $s = 9; continue; } if (inst.Inst.Rune.$length === 0) { ((pc < 0 || pc >= onePassRunes[0].$length) ? $throwRuntimeError("index out of range") : onePassRunes[0].$array[onePassRunes[0].$offset + pc] = new sliceType$1([])); inst.Next = new sliceType$2([inst.Inst.Out]); /* break; */ $s = 9; continue; } runes = $makeSlice(sliceType$1, 0); /* */ if ((inst.Inst.Rune.$length === 1) && !(((((inst.Inst.Arg << 16 >>> 16) & 1) >>> 0) === 0))) { $s = 17; continue; } /* */ $s = 18; continue; /* if ((inst.Inst.Rune.$length === 1) && !(((((inst.Inst.Arg << 16 >>> 16) & 1) >>> 0) === 0))) { */ case 17: r0 = (x$4 = inst.Inst.Rune, (0 >= x$4.$length ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + 0])); runes = $append(runes, r0, r0); r1 = unicode.SimpleFold(r0); while (true) { if (!(!((r1 === r0)))) { break; } runes = $append(runes, r1, r1); r1 = unicode.SimpleFold(r1); } $r = sort.Sort($subslice(new runeSlice(runes.$array), runes.$offset, runes.$offset + runes.$length)); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $s = 19; continue; /* } else { */ case 18: runes = $appendSlice(runes, inst.Inst.Rune); /* } */ case 19: ((pc < 0 || pc >= onePassRunes[0].$length) ? $throwRuntimeError("index out of range") : onePassRunes[0].$array[onePassRunes[0].$offset + pc] = runes); inst.Next = new sliceType$2([]); i$2 = (_q$2 = ((pc < 0 || pc >= onePassRunes[0].$length) ? $throwRuntimeError("index out of range") : onePassRunes[0].$array[onePassRunes[0].$offset + pc]).$length / 2, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >> 0 : $throwRuntimeError("integer divide by zero")); while (true) { if (!(i$2 >= 0)) { break; } inst.Next = $append(inst.Next, inst.Inst.Out); i$2 = i$2 - (1) >> 0; } inst.Inst.Op = 7; $s = 9; continue; /* } else if (_ref === 8) { */ case 6: _r$6 = check[0](inst.Inst.Out, m); /* */ $s = 21; case 21: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } ok = _r$6; _key$5 = pc; (m || $throwRuntimeError("assignment to entry in nil map"))[_key$5] = { k: _key$5, v: false }; if (inst.Next.$length > 0) { /* break; */ $s = 9; continue; } runes$1 = new sliceType$1([]); /* */ if (!(((((inst.Inst.Arg << 16 >>> 16) & 1) >>> 0) === 0))) { $s = 22; continue; } /* */ $s = 23; continue; /* if (!(((((inst.Inst.Arg << 16 >>> 16) & 1) >>> 0) === 0))) { */ case 22: r0$1 = (x$5 = inst.Inst.Rune, (0 >= x$5.$length ? $throwRuntimeError("index out of range") : x$5.$array[x$5.$offset + 0])); runes$1 = $append(runes$1, r0$1, r0$1); r1$1 = unicode.SimpleFold(r0$1); while (true) { if (!(!((r1$1 === r0$1)))) { break; } runes$1 = $append(runes$1, r1$1, r1$1); r1$1 = unicode.SimpleFold(r1$1); } $r = sort.Sort($subslice(new runeSlice(runes$1.$array), runes$1.$offset, runes$1.$offset + runes$1.$length)); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $s = 24; continue; /* } else { */ case 23: runes$1 = $append(runes$1, (x$6 = inst.Inst.Rune, (0 >= x$6.$length ? $throwRuntimeError("index out of range") : x$6.$array[x$6.$offset + 0])), (x$7 = inst.Inst.Rune, (0 >= x$7.$length ? $throwRuntimeError("index out of range") : x$7.$array[x$7.$offset + 0]))); /* } */ case 24: ((pc < 0 || pc >= onePassRunes[0].$length) ? $throwRuntimeError("index out of range") : onePassRunes[0].$array[onePassRunes[0].$offset + pc] = runes$1); inst.Next = new sliceType$2([]); i$3 = (_q$3 = ((pc < 0 || pc >= onePassRunes[0].$length) ? $throwRuntimeError("index out of range") : onePassRunes[0].$array[onePassRunes[0].$offset + pc]).$length / 2, (_q$3 === _q$3 && _q$3 !== 1/0 && _q$3 !== -1/0) ? _q$3 >> 0 : $throwRuntimeError("integer divide by zero")); while (true) { if (!(i$3 >= 0)) { break; } inst.Next = $append(inst.Next, inst.Inst.Out); i$3 = i$3 - (1) >> 0; } inst.Inst.Op = 7; $s = 9; continue; /* } else if (_ref === 9) { */ case 7: _r$7 = check[0](inst.Inst.Out, m); /* */ $s = 26; case 26: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } ok = _r$7; _key$6 = pc; (m || $throwRuntimeError("assignment to entry in nil map"))[_key$6] = { k: _key$6, v: false }; if (inst.Next.$length > 0) { /* break; */ $s = 9; continue; } ((pc < 0 || pc >= onePassRunes[0].$length) ? $throwRuntimeError("index out of range") : onePassRunes[0].$array[onePassRunes[0].$offset + pc] = $appendSlice(new sliceType$1([]), anyRune)); inst.Next = new sliceType$2([inst.Inst.Out]); $s = 9; continue; /* } else if (_ref === 10) { */ case 8: _r$8 = check[0](inst.Inst.Out, m); /* */ $s = 27; case 27: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } ok = _r$8; _key$7 = pc; (m || $throwRuntimeError("assignment to entry in nil map"))[_key$7] = { k: _key$7, v: false }; if (inst.Next.$length > 0) { /* break; */ $s = 9; continue; } ((pc < 0 || pc >= onePassRunes[0].$length) ? $throwRuntimeError("index out of range") : onePassRunes[0].$array[onePassRunes[0].$offset + pc] = $appendSlice(new sliceType$1([]), anyRuneNotNL)); inst.Next = new sliceType$2([]); i$4 = (_q$4 = ((pc < 0 || pc >= onePassRunes[0].$length) ? $throwRuntimeError("index out of range") : onePassRunes[0].$array[onePassRunes[0].$offset + pc]).$length / 2, (_q$4 === _q$4 && _q$4 !== 1/0 && _q$4 !== -1/0) ? _q$4 >> 0 : $throwRuntimeError("integer divide by zero")); while (true) { if (!(i$4 >= 0)) { break; } inst.Next = $append(inst.Next, inst.Inst.Out); i$4 = i$4 - (1) >> 0; } /* } } */ case 9: return ok; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._entry = _entry; $f._entry$1 = _entry$1; $f._entry$2 = _entry$2; $f._entry$3 = _entry$3; $f._key = _key; $f._key$1 = _key$1; $f._key$2 = _key$2; $f._key$3 = _key$3; $f._key$4 = _key$4; $f._key$5 = _key$5; $f._key$6 = _key$6; $f._key$7 = _key$7; $f._q = _q; $f._q$1 = _q$1; $f._q$2 = _q$2; $f._q$3 = _q$3; $f._q$4 = _q$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._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._v = _v; $f.i = i; $f.i$1 = i$1; $f.i$2 = i$2; $f.i$3 = i$3; $f.i$4 = i$4; $f.inst = inst; $f.m = m; $f.matchArg = matchArg; $f.matchOut = matchOut; $f.ok = ok; $f.pc = pc; $f.r0 = r0; $f.r0$1 = r0$1; $f.r1 = r1; $f.r1$1 = r1$1; $f.runes = runes; $f.runes$1 = runes$1; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.$s = $s; $f.$r = $r; return $f; }; })(build, check, onePassRunes, p, visitQueue); instQueue.clear(); instQueue.insert((p[0].Start >>> 0)); m = new $Map(); /* while (true) { */ case 1: /* if (!(!instQueue.empty())) { break; } */ if(!(!instQueue.empty())) { $s = 2; continue; } pc = instQueue.next(); inst = $clone((x = p[0].Inst, ((pc < 0 || pc >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + pc])), onePassInst); visitQueue[0].clear(); _r = check[0](pc, m); /* */ $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: p[0] = notOnePass; /* break; */ $s = 2; continue; /* } */ case 4: _ref = inst.Inst.Op; if (_ref === 0 || _ref === 1) { instQueue.insert(inst.Inst.Out); instQueue.insert(inst.Inst.Arg); } else if (_ref === 2 || _ref === 3 || _ref === 6) { instQueue.insert(inst.Inst.Out); } else if (_ref === 4) { } else if (_ref === 5) { } else if (_ref === 7 || _ref === 8 || _ref === 9 || _ref === 10) { } else { } /* } */ $s = 1; continue; case 2: if (!(p[0] === notOnePass)) { _ref$1 = p[0].Inst; _i = 0; while (true) { if (!(_i < _ref$1.$length)) { break; } i = _i; (x$1 = p[0].Inst, ((i < 0 || i >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + i])).Inst.Rune = ((i < 0 || i >= onePassRunes[0].$length) ? $throwRuntimeError("index out of range") : onePassRunes[0].$array[onePassRunes[0].$offset + i]); _i++; } } return p[0]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: makeOnePass }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._ref = _ref; $f._ref$1 = _ref$1; $f.build = build; $f.check = check; $f.i = i; $f.inst = inst; $f.instQueue = instQueue; $f.m = m; $f.onePassRunes = onePassRunes; $f.p = p; $f.pc = pc; $f.visitQueue = visitQueue; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f; }; compileOnePass = function(prog) { var $ptr, _i, _r, _ref, _ref$1, inst, opOut, p, prog, x, x$1, x$2, 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; _i = $f._i; _r = $f._r; _ref = $f._ref; _ref$1 = $f._ref$1; inst = $f.inst; opOut = $f.opOut; p = $f.p; prog = $f.prog; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: p = ptrType.nil; if (prog.Start === 0) { p = notOnePass; return p; } if (!(((x = prog.Inst, x$1 = prog.Start, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1])).Op === 3)) || !((((((x$2 = prog.Inst, x$3 = prog.Start, ((x$3 < 0 || x$3 >= x$2.$length) ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + x$3])).Arg << 24 >>> 24) & 4) >>> 0) === 4))) { p = notOnePass; return p; } _ref = prog.Inst; _i = 0; /* while (true) { */ case 1: /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } inst = $clone(((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]), syntax.Inst); opOut = (x$4 = prog.Inst, x$5 = inst.Out, ((x$5 < 0 || x$5 >= x$4.$length) ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + x$5])).Op; _ref$1 = inst.Op; if (_ref$1 === 0 || _ref$1 === 1) { if ((opOut === 4) || ((x$6 = prog.Inst, x$7 = inst.Arg, ((x$7 < 0 || x$7 >= x$6.$length) ? $throwRuntimeError("index out of range") : x$6.$array[x$6.$offset + x$7])).Op === 4)) { p = notOnePass; return p; } } else if (_ref$1 === 3) { if (opOut === 4) { if ((((inst.Arg << 24 >>> 24) & 8) >>> 0) === 8) { _i++; /* continue; */ $s = 1; continue; } p = notOnePass; return p; } } else { if (opOut === 4) { p = notOnePass; return p; } } _i++; /* } */ $s = 1; continue; case 2: p = onePassCopy(prog); _r = makeOnePass(p); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } p = _r; if (!(p === notOnePass)) { cleanupOnePass(p, prog); } p = p; return p; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: compileOnePass }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._ref = _ref; $f._ref$1 = _ref$1; $f.inst = inst; $f.opOut = opOut; $f.p = p; $f.prog = prog; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.$s = $s; $f.$r = $r; return $f; }; Regexp.ptr.prototype.String = function() { var $ptr, re; re = this; return re.expr; }; Regexp.prototype.String = function() { return this.$val.String(); }; Compile = function(expr) { var $ptr, _r, expr, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; expr = $f.expr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: _r = compile(expr, 212, false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Compile }; } $f.$ptr = $ptr; $f._r = _r; $f.expr = expr; $f.$s = $s; $f.$r = $r; return $f; }; $pkg.Compile = Compile; Regexp.ptr.prototype.Longest = function() { var $ptr, re; re = this; re.longest = true; }; Regexp.prototype.Longest = function() { return this.$val.Longest(); }; compile = function(expr, mode, longest) { var $ptr, _r, _r$1, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, capNames, err, expr, longest, maxCap, mode, prog, re, regexp, $s, $r; /* */ $s = 0; var $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; _tuple$4 = $f._tuple$4; capNames = $f.capNames; err = $f.err; expr = $f.expr; longest = $f.longest; maxCap = $f.maxCap; mode = $f.mode; prog = $f.prog; re = $f.re; regexp = $f.regexp; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: _r = syntax.Parse(expr, mode); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _tuple = _r; re = _tuple[0]; err = _tuple[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { return [ptrType$1.nil, err]; } maxCap = re.MaxCap(); capNames = re.CapNames(); re = re.Simplify(); _tuple$1 = syntax.Compile(re); prog = _tuple$1[0]; err = _tuple$1[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { return [ptrType$1.nil, err]; } _r$1 = compileOnePass(prog); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } regexp = new Regexp.ptr(expr, prog, _r$1, "", sliceType$3.nil, false, 0, 0, prog.StartCond(), maxCap, capNames, longest, new nosync.Mutex.ptr(), sliceType$10.nil); if (regexp.onepass === notOnePass) { _tuple$2 = prog.Prefix(); regexp.prefix = _tuple$2[0]; regexp.prefixComplete = _tuple$2[1]; } else { _tuple$3 = onePassPrefix(prog); regexp.prefix = _tuple$3[0]; regexp.prefixComplete = _tuple$3[1]; regexp.prefixEnd = _tuple$3[2]; } if (!(regexp.prefix === "")) { regexp.prefixBytes = new sliceType$3($stringToBytes(regexp.prefix)); _tuple$4 = utf8.DecodeRuneInString(regexp.prefix); regexp.prefixRune = _tuple$4[0]; } return [regexp, $ifaceNil]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: compile }; } $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._tuple$4 = _tuple$4; $f.capNames = capNames; $f.err = err; $f.expr = expr; $f.longest = longest; $f.maxCap = maxCap; $f.mode = mode; $f.prog = prog; $f.re = re; $f.regexp = regexp; $f.$s = $s; $f.$r = $r; return $f; }; Regexp.ptr.prototype.get = function() { var $ptr, n, re, x, x$1, z, z$1; re = this; re.mu.Lock(); n = re.machine.$length; if (n > 0) { z = (x = re.machine, x$1 = n - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1])); re.machine = $subslice(re.machine, 0, (n - 1 >> 0)); re.mu.Unlock(); return z; } re.mu.Unlock(); z$1 = progMachine(re.prog, re.onepass); z$1.re = re; return z$1; }; Regexp.prototype.get = function() { return this.$val.get(); }; Regexp.ptr.prototype.put = function(z) { var $ptr, re, z; re = this; re.mu.Lock(); re.machine = $append(re.machine, z); re.mu.Unlock(); }; Regexp.prototype.put = function(z) { return this.$val.put(z); }; MustCompile = function(str) { var $ptr, _r, _r$1, _tuple, error, regexp, 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; error = $f.error; regexp = $f.regexp; str = $f.str; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: _r = Compile(str); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _tuple = _r; regexp = _tuple[0]; error = _tuple[1]; /* */ if (!($interfaceIsEqual(error, $ifaceNil))) { $s = 2; continue; } /* */ $s = 3; continue; /* if (!($interfaceIsEqual(error, $ifaceNil))) { */ case 2: _r$1 = error.Error(); /* */ $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("regexp: Compile(" + quote(str) + "): " + _r$1)); /* } */ case 3: return regexp; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: MustCompile }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.error = error; $f.regexp = regexp; $f.str = str; $f.$s = $s; $f.$r = $r; return $f; }; $pkg.MustCompile = MustCompile; quote = function(s) { var $ptr, s; if (strconv.CanBackquote(s)) { return "`" + s + "`"; } return strconv.Quote(s); }; Regexp.ptr.prototype.NumSubexp = function() { var $ptr, re; re = this; return re.numSubexp; }; Regexp.prototype.NumSubexp = function() { return this.$val.NumSubexp(); }; Regexp.ptr.prototype.SubexpNames = function() { var $ptr, re; re = this; return re.subexpNames; }; Regexp.prototype.SubexpNames = function() { return this.$val.SubexpNames(); }; inputString.ptr.prototype.step = function(pos) { var $ptr, c, i, pos; i = this; if (pos < i.str.length) { c = i.str.charCodeAt(pos); if (c < 128) { return [(c >> 0), 1]; } return utf8.DecodeRuneInString(i.str.substring(pos)); } return [-1, 0]; }; inputString.prototype.step = function(pos) { return this.$val.step(pos); }; inputString.ptr.prototype.canCheckPrefix = function() { var $ptr, i; i = this; return true; }; inputString.prototype.canCheckPrefix = function() { return this.$val.canCheckPrefix(); }; inputString.ptr.prototype.hasPrefix = function(re) { var $ptr, i, re; i = this; return strings.HasPrefix(i.str, re.prefix); }; inputString.prototype.hasPrefix = function(re) { return this.$val.hasPrefix(re); }; inputString.ptr.prototype.index = function(re, pos) { var $ptr, i, pos, re; i = this; return strings.Index(i.str.substring(pos), re.prefix); }; inputString.prototype.index = function(re, pos) { return this.$val.index(re, pos); }; inputString.ptr.prototype.context = function(pos) { var $ptr, _tmp, _tmp$1, _tuple, _tuple$1, i, pos, r1, r2; i = this; _tmp = -1; _tmp$1 = -1; r1 = _tmp; r2 = _tmp$1; if (pos > 0 && pos <= i.str.length) { _tuple = utf8.DecodeLastRuneInString(i.str.substring(0, pos)); r1 = _tuple[0]; } if (pos < i.str.length) { _tuple$1 = utf8.DecodeRuneInString(i.str.substring(pos)); r2 = _tuple$1[0]; } return syntax.EmptyOpContext(r1, r2); }; inputString.prototype.context = function(pos) { return this.$val.context(pos); }; inputBytes.ptr.prototype.step = function(pos) { var $ptr, c, i, pos, x; i = this; if (pos < i.str.$length) { c = (x = i.str, ((pos < 0 || pos >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + pos])); if (c < 128) { return [(c >> 0), 1]; } return utf8.DecodeRune($subslice(i.str, pos)); } return [-1, 0]; }; inputBytes.prototype.step = function(pos) { return this.$val.step(pos); }; inputBytes.ptr.prototype.canCheckPrefix = function() { var $ptr, i; i = this; return true; }; inputBytes.prototype.canCheckPrefix = function() { return this.$val.canCheckPrefix(); }; inputBytes.ptr.prototype.hasPrefix = function(re) { var $ptr, i, re; i = this; return bytes.HasPrefix(i.str, re.prefixBytes); }; inputBytes.prototype.hasPrefix = function(re) { return this.$val.hasPrefix(re); }; inputBytes.ptr.prototype.index = function(re, pos) { var $ptr, i, pos, re; i = this; return bytes.Index($subslice(i.str, pos), re.prefixBytes); }; inputBytes.prototype.index = function(re, pos) { return this.$val.index(re, pos); }; inputBytes.ptr.prototype.context = function(pos) { var $ptr, _tmp, _tmp$1, _tuple, _tuple$1, i, pos, r1, r2; i = this; _tmp = -1; _tmp$1 = -1; r1 = _tmp; r2 = _tmp$1; if (pos > 0 && pos <= i.str.$length) { _tuple = utf8.DecodeLastRune($subslice(i.str, 0, pos)); r1 = _tuple[0]; } if (pos < i.str.$length) { _tuple$1 = utf8.DecodeRune($subslice(i.str, pos)); r2 = _tuple$1[0]; } return syntax.EmptyOpContext(r1, r2); }; inputBytes.prototype.context = function(pos) { return this.$val.context(pos); }; inputReader.ptr.prototype.step = function(pos) { var $ptr, _r, _tuple, err, i, pos, 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; _tuple = $f._tuple; err = $f.err; i = $f.i; pos = $f.pos; r = $f.r; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: i = this; if (!i.atEOT && !((pos === i.pos))) { return [-1, 0]; } _r = i.r.ReadRune(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _tuple = _r; r = _tuple[0]; w = _tuple[1]; err = _tuple[2]; if (!($interfaceIsEqual(err, $ifaceNil))) { i.atEOT = true; return [-1, 0]; } i.pos = i.pos + (w) >> 0; return [r, w]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: inputReader.ptr.prototype.step }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.i = i; $f.pos = pos; $f.r = r; $f.w = w; $f.$s = $s; $f.$r = $r; return $f; }; inputReader.prototype.step = function(pos) { return this.$val.step(pos); }; inputReader.ptr.prototype.canCheckPrefix = function() { var $ptr, i; i = this; return false; }; inputReader.prototype.canCheckPrefix = function() { return this.$val.canCheckPrefix(); }; inputReader.ptr.prototype.hasPrefix = function(re) { var $ptr, i, re; i = this; return false; }; inputReader.prototype.hasPrefix = function(re) { return this.$val.hasPrefix(re); }; inputReader.ptr.prototype.index = function(re, pos) { var $ptr, i, pos, re; i = this; return -1; }; inputReader.prototype.index = function(re, pos) { return this.$val.index(re, pos); }; inputReader.ptr.prototype.context = function(pos) { var $ptr, i, pos; i = this; return 0; }; inputReader.prototype.context = function(pos) { return this.$val.context(pos); }; Regexp.ptr.prototype.LiteralPrefix = function() { var $ptr, _tmp, _tmp$1, complete, prefix, re; prefix = ""; complete = false; re = this; _tmp = re.prefix; _tmp$1 = re.prefixComplete; prefix = _tmp; complete = _tmp$1; return [prefix, complete]; }; Regexp.prototype.LiteralPrefix = function() { return this.$val.LiteralPrefix(); }; Regexp.ptr.prototype.MatchReader = function(r) { var $ptr, _r, r, re, $s, $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; re = $f.re; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: re = this; _r = re.doExecute(r, sliceType$3.nil, "", 0, 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return !(_r === sliceType.nil); /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.MatchReader }; } $f.$ptr = $ptr; $f._r = _r; $f.r = r; $f.re = re; $f.$s = $s; $f.$r = $r; return $f; }; Regexp.prototype.MatchReader = function(r) { return this.$val.MatchReader(r); }; Regexp.ptr.prototype.MatchString = function(s) { var $ptr, _r, re, 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; re = $f.re; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: re = this; _r = re.doExecute($ifaceNil, sliceType$3.nil, s, 0, 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return !(_r === sliceType.nil); /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.MatchString }; } $f.$ptr = $ptr; $f._r = _r; $f.re = re; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; }; Regexp.prototype.MatchString = function(s) { return this.$val.MatchString(s); }; Regexp.ptr.prototype.Match = function(b) { var $ptr, _r, b, re, $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; re = $f.re; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: re = this; _r = re.doExecute($ifaceNil, b, "", 0, 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return !(_r === sliceType.nil); /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.Match }; } $f.$ptr = $ptr; $f._r = _r; $f.b = b; $f.re = re; $f.$s = $s; $f.$r = $r; return $f; }; Regexp.prototype.Match = function(b) { return this.$val.Match(b); }; Regexp.ptr.prototype.ReplaceAllString = function(src, repl) { var $ptr, _r, b, n, re, repl, 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; b = $f.b; n = $f.n; re = $f.re; repl = $f.repl; src = $f.src; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: re = [re]; repl = [repl]; src = [src]; re[0] = this; n = 2; if (strings.Index(repl[0], "$") >= 0) { n = 2 * ((re[0].numSubexp + 1 >> 0)) >> 0; } _r = re[0].replaceAll(sliceType$3.nil, src[0], n, (function(re, repl, src) { return function(dst, match) { var $ptr, dst, match; return re[0].expand(dst, repl[0], sliceType$3.nil, src[0], match); }; })(re, repl, src)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } b = _r; return $bytesToString(b); /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.ReplaceAllString }; } $f.$ptr = $ptr; $f._r = _r; $f.b = b; $f.n = n; $f.re = re; $f.repl = repl; $f.src = src; $f.$s = $s; $f.$r = $r; return $f; }; Regexp.prototype.ReplaceAllString = function(src, repl) { return this.$val.ReplaceAllString(src, repl); }; Regexp.ptr.prototype.ReplaceAllLiteralString = function(src, repl) { var $ptr, _r, re, repl, 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; re = $f.re; repl = $f.repl; src = $f.src; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: repl = [repl]; re = this; _r = re.replaceAll(sliceType$3.nil, src, 2, (function(repl) { return function(dst, match) { var $ptr, dst, match; return $appendSlice(dst, new sliceType$3($stringToBytes(repl[0]))); }; })(repl)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return $bytesToString(_r); /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.ReplaceAllLiteralString }; } $f.$ptr = $ptr; $f._r = _r; $f.re = re; $f.repl = repl; $f.src = src; $f.$s = $s; $f.$r = $r; return $f; }; Regexp.prototype.ReplaceAllLiteralString = function(src, repl) { return this.$val.ReplaceAllLiteralString(src, repl); }; Regexp.ptr.prototype.ReplaceAllStringFunc = function(src, repl) { var $ptr, _r, b, re, repl, 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; b = $f.b; re = $f.re; repl = $f.repl; src = $f.src; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: repl = [repl]; src = [src]; re = this; _r = re.replaceAll(sliceType$3.nil, src[0], 2, (function(repl, src) { return function $b(dst, match) { var $ptr, _r, dst, match, $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; match = $f.match; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: _r = repl[0](src[0].substring((0 >= match.$length ? $throwRuntimeError("index out of range") : match.$array[match.$offset + 0]), (1 >= match.$length ? $throwRuntimeError("index out of range") : match.$array[match.$offset + 1]))); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return $appendSlice(dst, new sliceType$3($stringToBytes(_r))); /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r = _r; $f.dst = dst; $f.match = match; $f.$s = $s; $f.$r = $r; return $f; }; })(repl, src)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } b = _r; return $bytesToString(b); /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.ReplaceAllStringFunc }; } $f.$ptr = $ptr; $f._r = _r; $f.b = b; $f.re = re; $f.repl = repl; $f.src = src; $f.$s = $s; $f.$r = $r; return $f; }; Regexp.prototype.ReplaceAllStringFunc = function(src, repl) { return this.$val.ReplaceAllStringFunc(src, repl); }; Regexp.ptr.prototype.replaceAll = function(bsrc, src, nmatch, repl) { var $ptr, _r, _r$1, _tuple, _tuple$1, a, bsrc, buf, endPos, lastMatchEnd, nmatch, re, repl, searchPos, src, width, $s, $r; /* */ $s = 0; var $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; bsrc = $f.bsrc; buf = $f.buf; endPos = $f.endPos; lastMatchEnd = $f.lastMatchEnd; nmatch = $f.nmatch; re = $f.re; repl = $f.repl; searchPos = $f.searchPos; src = $f.src; width = $f.width; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: re = this; lastMatchEnd = 0; searchPos = 0; buf = sliceType$3.nil; endPos = 0; if (!(bsrc === sliceType$3.nil)) { endPos = bsrc.$length; } else { endPos = src.length; } /* while (true) { */ case 1: /* if (!(searchPos <= endPos)) { break; } */ if(!(searchPos <= endPos)) { $s = 2; continue; } _r = re.doExecute($ifaceNil, bsrc, src, searchPos, nmatch); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } a = _r; if (a.$length === 0) { /* break; */ $s = 2; continue; } if (!(bsrc === sliceType$3.nil)) { buf = $appendSlice(buf, $subslice(bsrc, lastMatchEnd, (0 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 0]))); } else { buf = $appendSlice(buf, new sliceType$3($stringToBytes(src.substring(lastMatchEnd, (0 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 0]))))); } /* */ if ((1 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 1]) > lastMatchEnd || ((0 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 0]) === 0)) { $s = 4; continue; } /* */ $s = 5; continue; /* if ((1 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 1]) > lastMatchEnd || ((0 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 0]) === 0)) { */ case 4: _r$1 = repl(buf, a); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } buf = _r$1; /* } */ case 5: lastMatchEnd = (1 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 1]); width = 0; if (!(bsrc === sliceType$3.nil)) { _tuple = utf8.DecodeRune($subslice(bsrc, searchPos)); width = _tuple[1]; } else { _tuple$1 = utf8.DecodeRuneInString(src.substring(searchPos)); width = _tuple$1[1]; } if ((searchPos + width >> 0) > (1 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 1])) { searchPos = searchPos + (width) >> 0; } else if ((searchPos + 1 >> 0) > (1 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 1])) { searchPos = searchPos + (1) >> 0; } else { searchPos = (1 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 1]); } /* } */ $s = 1; continue; case 2: if (!(bsrc === sliceType$3.nil)) { buf = $appendSlice(buf, $subslice(bsrc, lastMatchEnd)); } else { buf = $appendSlice(buf, new sliceType$3($stringToBytes(src.substring(lastMatchEnd)))); } return buf; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.replaceAll }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.a = a; $f.bsrc = bsrc; $f.buf = buf; $f.endPos = endPos; $f.lastMatchEnd = lastMatchEnd; $f.nmatch = nmatch; $f.re = re; $f.repl = repl; $f.searchPos = searchPos; $f.src = src; $f.width = width; $f.$s = $s; $f.$r = $r; return $f; }; Regexp.prototype.replaceAll = function(bsrc, src, nmatch, repl) { return this.$val.replaceAll(bsrc, src, nmatch, repl); }; Regexp.ptr.prototype.ReplaceAll = function(src, repl) { var $ptr, _r, b, n, re, repl, src, srepl, $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; re = $f.re; repl = $f.repl; src = $f.src; srepl = $f.srepl; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: re = [re]; repl = [repl]; src = [src]; srepl = [srepl]; re[0] = this; n = 2; if (bytes.IndexByte(repl[0], 36) >= 0) { n = 2 * ((re[0].numSubexp + 1 >> 0)) >> 0; } srepl[0] = ""; _r = re[0].replaceAll(src[0], "", n, (function(re, repl, src, srepl) { return function(dst, match) { var $ptr, dst, match; if (!((srepl[0].length === repl[0].$length))) { srepl[0] = $bytesToString(repl[0]); } return re[0].expand(dst, srepl[0], src[0], "", match); }; })(re, repl, src, srepl)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } b = _r; return b; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.ReplaceAll }; } $f.$ptr = $ptr; $f._r = _r; $f.b = b; $f.n = n; $f.re = re; $f.repl = repl; $f.src = src; $f.srepl = srepl; $f.$s = $s; $f.$r = $r; return $f; }; Regexp.prototype.ReplaceAll = function(src, repl) { return this.$val.ReplaceAll(src, repl); }; Regexp.ptr.prototype.ReplaceAllLiteral = function(src, repl) { var $ptr, _r, re, repl, 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; re = $f.re; repl = $f.repl; src = $f.src; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: repl = [repl]; re = this; _r = re.replaceAll(src, "", 2, (function(repl) { return function(dst, match) { var $ptr, dst, match; return $appendSlice(dst, repl[0]); }; })(repl)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.ReplaceAllLiteral }; } $f.$ptr = $ptr; $f._r = _r; $f.re = re; $f.repl = repl; $f.src = src; $f.$s = $s; $f.$r = $r; return $f; }; Regexp.prototype.ReplaceAllLiteral = function(src, repl) { return this.$val.ReplaceAllLiteral(src, repl); }; Regexp.ptr.prototype.ReplaceAllFunc = function(src, repl) { var $ptr, _r, re, repl, 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; re = $f.re; repl = $f.repl; src = $f.src; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: repl = [repl]; src = [src]; re = this; _r = re.replaceAll(src[0], "", 2, (function(repl, src) { return function $b(dst, match) { var $ptr, _r, dst, match, $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; match = $f.match; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: _r = repl[0]($subslice(src[0], (0 >= match.$length ? $throwRuntimeError("index out of range") : match.$array[match.$offset + 0]), (1 >= match.$length ? $throwRuntimeError("index out of range") : match.$array[match.$offset + 1]))); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return $appendSlice(dst, _r); /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r = _r; $f.dst = dst; $f.match = match; $f.$s = $s; $f.$r = $r; return $f; }; })(repl, src)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.ReplaceAllFunc }; } $f.$ptr = $ptr; $f._r = _r; $f.re = re; $f.repl = repl; $f.src = src; $f.$s = $s; $f.$r = $r; return $f; }; Regexp.prototype.ReplaceAllFunc = function(src, repl) { return this.$val.ReplaceAllFunc(src, repl); }; Regexp.ptr.prototype.pad = function(a) { var $ptr, a, n, re; re = this; if (a === sliceType.nil) { return sliceType.nil; } n = ((1 + re.numSubexp >> 0)) * 2 >> 0; while (true) { if (!(a.$length < n)) { break; } a = $append(a, -1); } return a; }; Regexp.prototype.pad = function(a) { return this.$val.pad(a); }; Regexp.ptr.prototype.allMatches = function(s, b, n, deliver) { var $ptr, _r, _tmp, _tmp$1, _tmp$2, _tuple, _tuple$1, accept, b, deliver, end, i, matches, n, pos, prevMatchEnd, re, s, width, $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; _tuple$1 = $f._tuple$1; accept = $f.accept; b = $f.b; deliver = $f.deliver; end = $f.end; i = $f.i; matches = $f.matches; n = $f.n; pos = $f.pos; prevMatchEnd = $f.prevMatchEnd; re = $f.re; s = $f.s; width = $f.width; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: re = this; end = 0; if (b === sliceType$3.nil) { end = s.length; } else { end = b.$length; } _tmp = 0; _tmp$1 = 0; _tmp$2 = -1; pos = _tmp; i = _tmp$1; prevMatchEnd = _tmp$2; /* while (true) { */ case 1: /* if (!(i < n && pos <= end)) { break; } */ if(!(i < n && pos <= end)) { $s = 2; continue; } _r = re.doExecute($ifaceNil, b, s, pos, re.prog.NumCap); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } matches = _r; if (matches.$length === 0) { /* break; */ $s = 2; continue; } accept = true; if ((1 >= matches.$length ? $throwRuntimeError("index out of range") : matches.$array[matches.$offset + 1]) === pos) { if ((0 >= matches.$length ? $throwRuntimeError("index out of range") : matches.$array[matches.$offset + 0]) === prevMatchEnd) { accept = false; } width = 0; if (b === sliceType$3.nil) { _tuple = utf8.DecodeRuneInString(s.substring(pos, end)); width = _tuple[1]; } else { _tuple$1 = utf8.DecodeRune($subslice(b, pos, end)); width = _tuple$1[1]; } if (width > 0) { pos = pos + (width) >> 0; } else { pos = end + 1 >> 0; } } else { pos = (1 >= matches.$length ? $throwRuntimeError("index out of range") : matches.$array[matches.$offset + 1]); } prevMatchEnd = (1 >= matches.$length ? $throwRuntimeError("index out of range") : matches.$array[matches.$offset + 1]); /* */ if (accept) { $s = 4; continue; } /* */ $s = 5; continue; /* if (accept) { */ case 4: $r = deliver(re.pad(matches)); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } i = i + (1) >> 0; /* } */ case 5: /* } */ $s = 1; continue; case 2: /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.allMatches }; } $f.$ptr = $ptr; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.accept = accept; $f.b = b; $f.deliver = deliver; $f.end = end; $f.i = i; $f.matches = matches; $f.n = n; $f.pos = pos; $f.prevMatchEnd = prevMatchEnd; $f.re = re; $f.s = s; $f.width = width; $f.$s = $s; $f.$r = $r; return $f; }; Regexp.prototype.allMatches = function(s, b, n, deliver) { return this.$val.allMatches(s, b, n, deliver); }; Regexp.ptr.prototype.Find = function(b) { var $ptr, _r, a, b, re, $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; b = $f.b; re = $f.re; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: re = this; _r = re.doExecute($ifaceNil, b, "", 0, 2); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } a = _r; if (a === sliceType.nil) { return sliceType$3.nil; } return $subslice(b, (0 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 0]), (1 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 1])); /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.Find }; } $f.$ptr = $ptr; $f._r = _r; $f.a = a; $f.b = b; $f.re = re; $f.$s = $s; $f.$r = $r; return $f; }; Regexp.prototype.Find = function(b) { return this.$val.Find(b); }; Regexp.ptr.prototype.FindIndex = function(b) { var $ptr, _r, a, b, loc, re, $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; b = $f.b; loc = $f.loc; re = $f.re; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: loc = sliceType.nil; re = this; _r = re.doExecute($ifaceNil, b, "", 0, 2); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } a = _r; if (a === sliceType.nil) { loc = sliceType.nil; return loc; } loc = $subslice(a, 0, 2); return loc; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindIndex }; } $f.$ptr = $ptr; $f._r = _r; $f.a = a; $f.b = b; $f.loc = loc; $f.re = re; $f.$s = $s; $f.$r = $r; return $f; }; Regexp.prototype.FindIndex = function(b) { return this.$val.FindIndex(b); }; Regexp.ptr.prototype.FindString = function(s) { var $ptr, _r, a, re, 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; re = $f.re; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: re = this; _r = re.doExecute($ifaceNil, sliceType$3.nil, s, 0, 2); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } a = _r; if (a === sliceType.nil) { return ""; } return s.substring((0 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 0]), (1 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 1])); /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindString }; } $f.$ptr = $ptr; $f._r = _r; $f.a = a; $f.re = re; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; }; Regexp.prototype.FindString = function(s) { return this.$val.FindString(s); }; Regexp.ptr.prototype.FindStringIndex = function(s) { var $ptr, _r, a, loc, re, 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; loc = $f.loc; re = $f.re; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: loc = sliceType.nil; re = this; _r = re.doExecute($ifaceNil, sliceType$3.nil, s, 0, 2); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } a = _r; if (a === sliceType.nil) { loc = sliceType.nil; return loc; } loc = $subslice(a, 0, 2); return loc; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindStringIndex }; } $f.$ptr = $ptr; $f._r = _r; $f.a = a; $f.loc = loc; $f.re = re; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; }; Regexp.prototype.FindStringIndex = function(s) { return this.$val.FindStringIndex(s); }; Regexp.ptr.prototype.FindReaderIndex = function(r) { var $ptr, _r, a, loc, r, re, $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; loc = $f.loc; r = $f.r; re = $f.re; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: loc = sliceType.nil; re = this; _r = re.doExecute(r, sliceType$3.nil, "", 0, 2); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } a = _r; if (a === sliceType.nil) { loc = sliceType.nil; return loc; } loc = $subslice(a, 0, 2); return loc; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindReaderIndex }; } $f.$ptr = $ptr; $f._r = _r; $f.a = a; $f.loc = loc; $f.r = r; $f.re = re; $f.$s = $s; $f.$r = $r; return $f; }; Regexp.prototype.FindReaderIndex = function(r) { return this.$val.FindReaderIndex(r); }; Regexp.ptr.prototype.FindSubmatch = function(b) { var $ptr, _i, _r, _ref, a, b, i, re, ret, 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; a = $f.a; b = $f.b; i = $f.i; re = $f.re; ret = $f.ret; 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: re = this; _r = re.doExecute($ifaceNil, b, "", 0, re.prog.NumCap); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } a = _r; if (a === sliceType.nil) { return sliceType$11.nil; } ret = $makeSlice(sliceType$11, (1 + re.numSubexp >> 0)); _ref = ret; _i = 0; while (true) { if (!(_i < _ref.$length)) { break; } i = _i; if ((2 * i >> 0) < a.$length && (x = 2 * i >> 0, ((x < 0 || x >= a.$length) ? $throwRuntimeError("index out of range") : a.$array[a.$offset + x])) >= 0) { ((i < 0 || i >= ret.$length) ? $throwRuntimeError("index out of range") : ret.$array[ret.$offset + i] = $subslice(b, (x$1 = 2 * i >> 0, ((x$1 < 0 || x$1 >= a.$length) ? $throwRuntimeError("index out of range") : a.$array[a.$offset + x$1])), (x$2 = (2 * i >> 0) + 1 >> 0, ((x$2 < 0 || x$2 >= a.$length) ? $throwRuntimeError("index out of range") : a.$array[a.$offset + x$2])))); } _i++; } return ret; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindSubmatch }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._ref = _ref; $f.a = a; $f.b = b; $f.i = i; $f.re = re; $f.ret = ret; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f; }; Regexp.prototype.FindSubmatch = function(b) { return this.$val.FindSubmatch(b); }; Regexp.ptr.prototype.Expand = function(dst, template, src, match) { var $ptr, dst, match, re, src, template; re = this; return re.expand(dst, $bytesToString(template), src, "", match); }; Regexp.prototype.Expand = function(dst, template, src, match) { return this.$val.Expand(dst, template, src, match); }; Regexp.ptr.prototype.ExpandString = function(dst, template, src, match) { var $ptr, dst, match, re, src, template; re = this; return re.expand(dst, template, sliceType$3.nil, src, match); }; Regexp.prototype.ExpandString = function(dst, template, src, match) { return this.$val.ExpandString(dst, template, src, match); }; Regexp.ptr.prototype.expand = function(dst, template, bsrc, src, match) { var $ptr, _i, _ref, _tuple, bsrc, dst, i, i$1, match, name, namei, num, ok, re, rest, src, template, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9; re = this; while (true) { if (!(template.length > 0)) { break; } i = strings.Index(template, "$"); if (i < 0) { break; } dst = $appendSlice(dst, new sliceType$3($stringToBytes(template.substring(0, i)))); template = template.substring(i); if (template.length > 1 && (template.charCodeAt(1) === 36)) { dst = $append(dst, 36); template = template.substring(2); continue; } _tuple = extract(template); name = _tuple[0]; num = _tuple[1]; rest = _tuple[2]; ok = _tuple[3]; if (!ok) { dst = $append(dst, 36); template = template.substring(1); continue; } template = rest; if (num >= 0) { if (((2 * num >> 0) + 1 >> 0) < match.$length && (x = 2 * num >> 0, ((x < 0 || x >= match.$length) ? $throwRuntimeError("index out of range") : match.$array[match.$offset + x])) >= 0) { if (!(bsrc === sliceType$3.nil)) { dst = $appendSlice(dst, $subslice(bsrc, (x$1 = 2 * num >> 0, ((x$1 < 0 || x$1 >= match.$length) ? $throwRuntimeError("index out of range") : match.$array[match.$offset + x$1])), (x$2 = (2 * num >> 0) + 1 >> 0, ((x$2 < 0 || x$2 >= match.$length) ? $throwRuntimeError("index out of range") : match.$array[match.$offset + x$2])))); } else { dst = $appendSlice(dst, new sliceType$3($stringToBytes(src.substring((x$3 = 2 * num >> 0, ((x$3 < 0 || x$3 >= match.$length) ? $throwRuntimeError("index out of range") : match.$array[match.$offset + x$3])), (x$4 = (2 * num >> 0) + 1 >> 0, ((x$4 < 0 || x$4 >= match.$length) ? $throwRuntimeError("index out of range") : match.$array[match.$offset + x$4])))))); } } } else { _ref = re.subexpNames; _i = 0; while (true) { if (!(_i < _ref.$length)) { break; } i$1 = _i; namei = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]); if (name === namei && ((2 * i$1 >> 0) + 1 >> 0) < match.$length && (x$5 = 2 * i$1 >> 0, ((x$5 < 0 || x$5 >= match.$length) ? $throwRuntimeError("index out of range") : match.$array[match.$offset + x$5])) >= 0) { if (!(bsrc === sliceType$3.nil)) { dst = $appendSlice(dst, $subslice(bsrc, (x$6 = 2 * i$1 >> 0, ((x$6 < 0 || x$6 >= match.$length) ? $throwRuntimeError("index out of range") : match.$array[match.$offset + x$6])), (x$7 = (2 * i$1 >> 0) + 1 >> 0, ((x$7 < 0 || x$7 >= match.$length) ? $throwRuntimeError("index out of range") : match.$array[match.$offset + x$7])))); } else { dst = $appendSlice(dst, new sliceType$3($stringToBytes(src.substring((x$8 = 2 * i$1 >> 0, ((x$8 < 0 || x$8 >= match.$length) ? $throwRuntimeError("index out of range") : match.$array[match.$offset + x$8])), (x$9 = (2 * i$1 >> 0) + 1 >> 0, ((x$9 < 0 || x$9 >= match.$length) ? $throwRuntimeError("index out of range") : match.$array[match.$offset + x$9])))))); } break; } _i++; } } } dst = $appendSlice(dst, new sliceType$3($stringToBytes(template))); return dst; }; Regexp.prototype.expand = function(dst, template, bsrc, src, match) { return this.$val.expand(dst, template, bsrc, src, match); }; extract = function(str) { var $ptr, _tuple, brace, i, i$1, name, num, ok, rest, rune, size, str; name = ""; num = 0; rest = ""; ok = false; if (str.length < 2 || !((str.charCodeAt(0) === 36))) { return [name, num, rest, ok]; } brace = false; if (str.charCodeAt(1) === 123) { brace = true; str = str.substring(2); } else { str = str.substring(1); } i = 0; while (true) { if (!(i < str.length)) { break; } _tuple = utf8.DecodeRuneInString(str.substring(i)); rune = _tuple[0]; size = _tuple[1]; if (!unicode.IsLetter(rune) && !unicode.IsDigit(rune) && !((rune === 95))) { break; } i = i + (size) >> 0; } if (i === 0) { return [name, num, rest, ok]; } name = str.substring(0, i); if (brace) { if (i >= str.length || !((str.charCodeAt(i) === 125))) { return [name, num, rest, ok]; } i = i + (1) >> 0; } num = 0; i$1 = 0; while (true) { if (!(i$1 < name.length)) { break; } if (name.charCodeAt(i$1) < 48 || 57 < name.charCodeAt(i$1) || num >= 100000000) { num = -1; break; } num = ((num * 10 >> 0) + (name.charCodeAt(i$1) >> 0) >> 0) - 48 >> 0; i$1 = i$1 + (1) >> 0; } if ((name.charCodeAt(0) === 48) && name.length > 1) { num = -1; } rest = str.substring(i); ok = true; return [name, num, rest, ok]; }; Regexp.ptr.prototype.FindSubmatchIndex = function(b) { var $ptr, _r, _r$1, b, re, $s, $r; /* */ $s = 0; var $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; re = $f.re; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: re = this; _r = re.doExecute($ifaceNil, b, "", 0, re.prog.NumCap); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _r$1 = re.pad(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } return _r$1; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindSubmatchIndex }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.b = b; $f.re = re; $f.$s = $s; $f.$r = $r; return $f; }; Regexp.prototype.FindSubmatchIndex = function(b) { return this.$val.FindSubmatchIndex(b); }; Regexp.ptr.prototype.FindStringSubmatch = function(s) { var $ptr, _i, _r, _ref, a, i, re, ret, s, 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; a = $f.a; i = $f.i; re = $f.re; ret = $f.ret; s = $f.s; 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: re = this; _r = re.doExecute($ifaceNil, sliceType$3.nil, s, 0, re.prog.NumCap); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } a = _r; if (a === sliceType.nil) { return sliceType$9.nil; } ret = $makeSlice(sliceType$9, (1 + re.numSubexp >> 0)); _ref = ret; _i = 0; while (true) { if (!(_i < _ref.$length)) { break; } i = _i; if ((2 * i >> 0) < a.$length && (x = 2 * i >> 0, ((x < 0 || x >= a.$length) ? $throwRuntimeError("index out of range") : a.$array[a.$offset + x])) >= 0) { ((i < 0 || i >= ret.$length) ? $throwRuntimeError("index out of range") : ret.$array[ret.$offset + i] = s.substring((x$1 = 2 * i >> 0, ((x$1 < 0 || x$1 >= a.$length) ? $throwRuntimeError("index out of range") : a.$array[a.$offset + x$1])), (x$2 = (2 * i >> 0) + 1 >> 0, ((x$2 < 0 || x$2 >= a.$length) ? $throwRuntimeError("index out of range") : a.$array[a.$offset + x$2])))); } _i++; } return ret; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindStringSubmatch }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._ref = _ref; $f.a = a; $f.i = i; $f.re = re; $f.ret = ret; $f.s = s; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f; }; Regexp.prototype.FindStringSubmatch = function(s) { return this.$val.FindStringSubmatch(s); }; Regexp.ptr.prototype.FindStringSubmatchIndex = function(s) { var $ptr, _r, _r$1, re, 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; re = $f.re; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: re = this; _r = re.doExecute($ifaceNil, sliceType$3.nil, s, 0, re.prog.NumCap); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _r$1 = re.pad(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } return _r$1; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindStringSubmatchIndex }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.re = re; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; }; Regexp.prototype.FindStringSubmatchIndex = function(s) { return this.$val.FindStringSubmatchIndex(s); }; Regexp.ptr.prototype.FindReaderSubmatchIndex = function(r) { var $ptr, _r, _r$1, r, re, $s, $r; /* */ $s = 0; var $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; re = $f.re; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: re = this; _r = re.doExecute(r, sliceType$3.nil, "", 0, re.prog.NumCap); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _r$1 = re.pad(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } return _r$1; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindReaderSubmatchIndex }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.r = r; $f.re = re; $f.$s = $s; $f.$r = $r; return $f; }; Regexp.prototype.FindReaderSubmatchIndex = function(r) { return this.$val.FindReaderSubmatchIndex(r); }; Regexp.ptr.prototype.FindAll = function(b, n) { var $ptr, b, n, re, result, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; b = $f.b; n = $f.n; re = $f.re; result = $f.result; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: b = [b]; result = [result]; re = this; if (n < 0) { n = b[0].$length + 1 >> 0; } result[0] = $makeSlice(sliceType$11, 0, 10); $r = re.allMatches("", b[0], n, (function(b, result) { return function(match) { var $ptr, match; result[0] = $append(result[0], $subslice(b[0], (0 >= match.$length ? $throwRuntimeError("index out of range") : match.$array[match.$offset + 0]), (1 >= match.$length ? $throwRuntimeError("index out of range") : match.$array[match.$offset + 1]))); }; })(b, result)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } if (result[0].$length === 0) { return sliceType$11.nil; } return result[0]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindAll }; } $f.$ptr = $ptr; $f.b = b; $f.n = n; $f.re = re; $f.result = result; $f.$s = $s; $f.$r = $r; return $f; }; Regexp.prototype.FindAll = function(b, n) { return this.$val.FindAll(b, n); }; Regexp.ptr.prototype.FindAllIndex = function(b, n) { var $ptr, b, n, re, result, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; b = $f.b; n = $f.n; re = $f.re; result = $f.result; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: result = [result]; re = this; if (n < 0) { n = b.$length + 1 >> 0; } result[0] = $makeSlice(sliceType$12, 0, 10); $r = re.allMatches("", b, n, (function(result) { return function(match) { var $ptr, match; result[0] = $append(result[0], $subslice(match, 0, 2)); }; })(result)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } if (result[0].$length === 0) { return sliceType$12.nil; } return result[0]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindAllIndex }; } $f.$ptr = $ptr; $f.b = b; $f.n = n; $f.re = re; $f.result = result; $f.$s = $s; $f.$r = $r; return $f; }; Regexp.prototype.FindAllIndex = function(b, n) { return this.$val.FindAllIndex(b, n); }; Regexp.ptr.prototype.FindAllString = function(s, n) { var $ptr, n, re, result, 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; re = $f.re; result = $f.result; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: result = [result]; s = [s]; re = this; if (n < 0) { n = s[0].length + 1 >> 0; } result[0] = $makeSlice(sliceType$9, 0, 10); $r = re.allMatches(s[0], sliceType$3.nil, n, (function(result, s) { return function(match) { var $ptr, match; result[0] = $append(result[0], s[0].substring((0 >= match.$length ? $throwRuntimeError("index out of range") : match.$array[match.$offset + 0]), (1 >= match.$length ? $throwRuntimeError("index out of range") : match.$array[match.$offset + 1]))); }; })(result, s)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } if (result[0].$length === 0) { return sliceType$9.nil; } return result[0]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindAllString }; } $f.$ptr = $ptr; $f.n = n; $f.re = re; $f.result = result; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; }; Regexp.prototype.FindAllString = function(s, n) { return this.$val.FindAllString(s, n); }; Regexp.ptr.prototype.FindAllStringIndex = function(s, n) { var $ptr, n, re, result, 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; re = $f.re; result = $f.result; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: result = [result]; re = this; if (n < 0) { n = s.length + 1 >> 0; } result[0] = $makeSlice(sliceType$12, 0, 10); $r = re.allMatches(s, sliceType$3.nil, n, (function(result) { return function(match) { var $ptr, match; result[0] = $append(result[0], $subslice(match, 0, 2)); }; })(result)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } if (result[0].$length === 0) { return sliceType$12.nil; } return result[0]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindAllStringIndex }; } $f.$ptr = $ptr; $f.n = n; $f.re = re; $f.result = result; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; }; Regexp.prototype.FindAllStringIndex = function(s, n) { return this.$val.FindAllStringIndex(s, n); }; Regexp.ptr.prototype.FindAllSubmatch = function(b, n) { var $ptr, b, n, re, result, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; b = $f.b; n = $f.n; re = $f.re; result = $f.result; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: b = [b]; result = [result]; re = this; if (n < 0) { n = b[0].$length + 1 >> 0; } result[0] = $makeSlice(sliceType$13, 0, 10); $r = re.allMatches("", b[0], n, (function(b, result) { return function(match) { var $ptr, _i, _q, _ref, j, match, slice, x, x$1, x$2; slice = $makeSlice(sliceType$11, (_q = match.$length / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"))); _ref = slice; _i = 0; while (true) { if (!(_i < _ref.$length)) { break; } j = _i; if ((x = 2 * j >> 0, ((x < 0 || x >= match.$length) ? $throwRuntimeError("index out of range") : match.$array[match.$offset + x])) >= 0) { ((j < 0 || j >= slice.$length) ? $throwRuntimeError("index out of range") : slice.$array[slice.$offset + j] = $subslice(b[0], (x$1 = 2 * j >> 0, ((x$1 < 0 || x$1 >= match.$length) ? $throwRuntimeError("index out of range") : match.$array[match.$offset + x$1])), (x$2 = (2 * j >> 0) + 1 >> 0, ((x$2 < 0 || x$2 >= match.$length) ? $throwRuntimeError("index out of range") : match.$array[match.$offset + x$2])))); } _i++; } result[0] = $append(result[0], slice); }; })(b, result)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } if (result[0].$length === 0) { return sliceType$13.nil; } return result[0]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindAllSubmatch }; } $f.$ptr = $ptr; $f.b = b; $f.n = n; $f.re = re; $f.result = result; $f.$s = $s; $f.$r = $r; return $f; }; Regexp.prototype.FindAllSubmatch = function(b, n) { return this.$val.FindAllSubmatch(b, n); }; Regexp.ptr.prototype.FindAllSubmatchIndex = function(b, n) { var $ptr, b, n, re, result, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; b = $f.b; n = $f.n; re = $f.re; result = $f.result; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: result = [result]; re = this; if (n < 0) { n = b.$length + 1 >> 0; } result[0] = $makeSlice(sliceType$12, 0, 10); $r = re.allMatches("", b, n, (function(result) { return function(match) { var $ptr, match; result[0] = $append(result[0], match); }; })(result)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } if (result[0].$length === 0) { return sliceType$12.nil; } return result[0]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindAllSubmatchIndex }; } $f.$ptr = $ptr; $f.b = b; $f.n = n; $f.re = re; $f.result = result; $f.$s = $s; $f.$r = $r; return $f; }; Regexp.prototype.FindAllSubmatchIndex = function(b, n) { return this.$val.FindAllSubmatchIndex(b, n); }; Regexp.ptr.prototype.FindAllStringSubmatch = function(s, n) { var $ptr, n, re, result, 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; re = $f.re; result = $f.result; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: result = [result]; s = [s]; re = this; if (n < 0) { n = s[0].length + 1 >> 0; } result[0] = $makeSlice(sliceType$14, 0, 10); $r = re.allMatches(s[0], sliceType$3.nil, n, (function(result, s) { return function(match) { var $ptr, _i, _q, _ref, j, match, slice, x, x$1, x$2; slice = $makeSlice(sliceType$9, (_q = match.$length / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"))); _ref = slice; _i = 0; while (true) { if (!(_i < _ref.$length)) { break; } j = _i; if ((x = 2 * j >> 0, ((x < 0 || x >= match.$length) ? $throwRuntimeError("index out of range") : match.$array[match.$offset + x])) >= 0) { ((j < 0 || j >= slice.$length) ? $throwRuntimeError("index out of range") : slice.$array[slice.$offset + j] = s[0].substring((x$1 = 2 * j >> 0, ((x$1 < 0 || x$1 >= match.$length) ? $throwRuntimeError("index out of range") : match.$array[match.$offset + x$1])), (x$2 = (2 * j >> 0) + 1 >> 0, ((x$2 < 0 || x$2 >= match.$length) ? $throwRuntimeError("index out of range") : match.$array[match.$offset + x$2])))); } _i++; } result[0] = $append(result[0], slice); }; })(result, s)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } if (result[0].$length === 0) { return sliceType$14.nil; } return result[0]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindAllStringSubmatch }; } $f.$ptr = $ptr; $f.n = n; $f.re = re; $f.result = result; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; }; Regexp.prototype.FindAllStringSubmatch = function(s, n) { return this.$val.FindAllStringSubmatch(s, n); }; Regexp.ptr.prototype.FindAllStringSubmatchIndex = function(s, n) { var $ptr, n, re, result, 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; re = $f.re; result = $f.result; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: result = [result]; re = this; if (n < 0) { n = s.length + 1 >> 0; } result[0] = $makeSlice(sliceType$12, 0, 10); $r = re.allMatches(s, sliceType$3.nil, n, (function(result) { return function(match) { var $ptr, match; result[0] = $append(result[0], match); }; })(result)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } if (result[0].$length === 0) { return sliceType$12.nil; } return result[0]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindAllStringSubmatchIndex }; } $f.$ptr = $ptr; $f.n = n; $f.re = re; $f.result = result; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; }; Regexp.prototype.FindAllStringSubmatchIndex = function(s, n) { return this.$val.FindAllStringSubmatchIndex(s, n); }; Regexp.ptr.prototype.Split = function(s, n) { var $ptr, _i, _r, _ref, beg, end, match, matches, n, re, s, strings$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; _ref = $f._ref; beg = $f.beg; end = $f.end; match = $f.match; matches = $f.matches; n = $f.n; re = $f.re; s = $f.s; strings$1 = $f.strings$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: re = this; if (n === 0) { return sliceType$9.nil; } if (re.expr.length > 0 && (s.length === 0)) { return new sliceType$9([""]); } _r = re.FindAllStringIndex(s, n); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } matches = _r; strings$1 = $makeSlice(sliceType$9, 0, matches.$length); beg = 0; end = 0; _ref = matches; _i = 0; while (true) { if (!(_i < _ref.$length)) { break; } match = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]); if (n > 0 && strings$1.$length >= (n - 1 >> 0)) { break; } end = (0 >= match.$length ? $throwRuntimeError("index out of range") : match.$array[match.$offset + 0]); if (!(((1 >= match.$length ? $throwRuntimeError("index out of range") : match.$array[match.$offset + 1]) === 0))) { strings$1 = $append(strings$1, s.substring(beg, end)); } beg = (1 >= match.$length ? $throwRuntimeError("index out of range") : match.$array[match.$offset + 1]); _i++; } if (!((end === s.length))) { strings$1 = $append(strings$1, s.substring(beg)); } return strings$1; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.Split }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._ref = _ref; $f.beg = beg; $f.end = end; $f.match = match; $f.matches = matches; $f.n = n; $f.re = re; $f.s = s; $f.strings$1 = strings$1; $f.$s = $s; $f.$r = $r; return $f; }; Regexp.prototype.Split = function(s, n) { return this.$val.Split(s, n); }; ptrType$8.methods = [{prop: "newInputBytes", name: "newInputBytes", pkg: "regexp", typ: $funcType([sliceType$3], [input], false)}, {prop: "newInputString", name: "newInputString", pkg: "regexp", typ: $funcType([$String], [input], false)}, {prop: "newInputReader", name: "newInputReader", pkg: "regexp", typ: $funcType([io.RuneReader], [input], false)}, {prop: "init", name: "init", pkg: "regexp", typ: $funcType([$Int], [], false)}, {prop: "alloc", name: "alloc", pkg: "regexp", typ: $funcType([ptrType$9], [ptrType$3], false)}, {prop: "free", name: "free", pkg: "regexp", typ: $funcType([ptrType$3], [], false)}, {prop: "match", name: "match", pkg: "regexp", typ: $funcType([input, $Int], [$Bool], false)}, {prop: "clear", name: "clear", pkg: "regexp", typ: $funcType([ptrType$10], [], false)}, {prop: "step", name: "step", pkg: "regexp", typ: $funcType([ptrType$10, ptrType$10, $Int, $Int, $Int32, syntax.EmptyOp], [], false)}, {prop: "add", name: "add", pkg: "regexp", typ: $funcType([ptrType$10, $Uint32, $Int, sliceType, syntax.EmptyOp, ptrType$3], [ptrType$3], false)}, {prop: "onepass", name: "onepass", pkg: "regexp", typ: $funcType([input, $Int], [$Bool], false)}]; ptrType$5.methods = [{prop: "empty", name: "empty", pkg: "regexp", typ: $funcType([], [$Bool], false)}, {prop: "next", name: "next", pkg: "regexp", typ: $funcType([], [$Uint32], false)}, {prop: "clear", name: "clear", pkg: "regexp", typ: $funcType([], [], false)}, {prop: "reset", name: "reset", pkg: "regexp", typ: $funcType([], [], false)}, {prop: "contains", name: "contains", pkg: "regexp", typ: $funcType([$Uint32], [$Bool], false)}, {prop: "insert", name: "insert", pkg: "regexp", typ: $funcType([$Uint32], [], false)}, {prop: "insertNew", name: "insertNew", pkg: "regexp", typ: $funcType([$Uint32], [], false)}]; runeSlice.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: "", typ: $funcType([], [], false)}]; ptrType$1.methods = [{prop: "doExecute", name: "doExecute", pkg: "regexp", typ: $funcType([io.RuneReader, sliceType$3, $String, $Int, $Int], [sliceType], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Longest", name: "Longest", pkg: "", typ: $funcType([], [], false)}, {prop: "get", name: "get", pkg: "regexp", typ: $funcType([], [ptrType$8], false)}, {prop: "put", name: "put", pkg: "regexp", typ: $funcType([ptrType$8], [], false)}, {prop: "NumSubexp", name: "NumSubexp", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "SubexpNames", name: "SubexpNames", pkg: "", typ: $funcType([], [sliceType$9], false)}, {prop: "LiteralPrefix", name: "LiteralPrefix", pkg: "", typ: $funcType([], [$String, $Bool], false)}, {prop: "MatchReader", name: "MatchReader", pkg: "", typ: $funcType([io.RuneReader], [$Bool], false)}, {prop: "MatchString", name: "MatchString", pkg: "", typ: $funcType([$String], [$Bool], false)}, {prop: "Match", name: "Match", pkg: "", typ: $funcType([sliceType$3], [$Bool], false)}, {prop: "ReplaceAllString", name: "ReplaceAllString", pkg: "", typ: $funcType([$String, $String], [$String], false)}, {prop: "ReplaceAllLiteralString", name: "ReplaceAllLiteralString", pkg: "", typ: $funcType([$String, $String], [$String], false)}, {prop: "ReplaceAllStringFunc", name: "ReplaceAllStringFunc", pkg: "", typ: $funcType([$String, funcType], [$String], false)}, {prop: "replaceAll", name: "replaceAll", pkg: "regexp", typ: $funcType([sliceType$3, $String, $Int, funcType$1], [sliceType$3], false)}, {prop: "ReplaceAll", name: "ReplaceAll", pkg: "", typ: $funcType([sliceType$3, sliceType$3], [sliceType$3], false)}, {prop: "ReplaceAllLiteral", name: "ReplaceAllLiteral", pkg: "", typ: $funcType([sliceType$3, sliceType$3], [sliceType$3], false)}, {prop: "ReplaceAllFunc", name: "ReplaceAllFunc", pkg: "", typ: $funcType([sliceType$3, funcType$2], [sliceType$3], false)}, {prop: "pad", name: "pad", pkg: "regexp", typ: $funcType([sliceType], [sliceType], false)}, {prop: "allMatches", name: "allMatches", pkg: "regexp", typ: $funcType([$String, sliceType$3, $Int, funcType$3], [], false)}, {prop: "Find", name: "Find", pkg: "", typ: $funcType([sliceType$3], [sliceType$3], false)}, {prop: "FindIndex", name: "FindIndex", pkg: "", typ: $funcType([sliceType$3], [sliceType], false)}, {prop: "FindString", name: "FindString", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "FindStringIndex", name: "FindStringIndex", pkg: "", typ: $funcType([$String], [sliceType], false)}, {prop: "FindReaderIndex", name: "FindReaderIndex", pkg: "", typ: $funcType([io.RuneReader], [sliceType], false)}, {prop: "FindSubmatch", name: "FindSubmatch", pkg: "", typ: $funcType([sliceType$3], [sliceType$11], false)}, {prop: "Expand", name: "Expand", pkg: "", typ: $funcType([sliceType$3, sliceType$3, sliceType$3, sliceType], [sliceType$3], false)}, {prop: "ExpandString", name: "ExpandString", pkg: "", typ: $funcType([sliceType$3, $String, $String, sliceType], [sliceType$3], false)}, {prop: "expand", name: "expand", pkg: "regexp", typ: $funcType([sliceType$3, $String, sliceType$3, $String, sliceType], [sliceType$3], false)}, {prop: "FindSubmatchIndex", name: "FindSubmatchIndex", pkg: "", typ: $funcType([sliceType$3], [sliceType], false)}, {prop: "FindStringSubmatch", name: "FindStringSubmatch", pkg: "", typ: $funcType([$String], [sliceType$9], false)}, {prop: "FindStringSubmatchIndex", name: "FindStringSubmatchIndex", pkg: "", typ: $funcType([$String], [sliceType], false)}, {prop: "FindReaderSubmatchIndex", name: "FindReaderSubmatchIndex", pkg: "", typ: $funcType([io.RuneReader], [sliceType], false)}, {prop: "FindAll", name: "FindAll", pkg: "", typ: $funcType([sliceType$3, $Int], [sliceType$11], false)}, {prop: "FindAllIndex", name: "FindAllIndex", pkg: "", typ: $funcType([sliceType$3, $Int], [sliceType$12], false)}, {prop: "FindAllString", name: "FindAllString", pkg: "", typ: $funcType([$String, $Int], [sliceType$9], false)}, {prop: "FindAllStringIndex", name: "FindAllStringIndex", pkg: "", typ: $funcType([$String, $Int], [sliceType$12], false)}, {prop: "FindAllSubmatch", name: "FindAllSubmatch", pkg: "", typ: $funcType([sliceType$3, $Int], [sliceType$13], false)}, {prop: "FindAllSubmatchIndex", name: "FindAllSubmatchIndex", pkg: "", typ: $funcType([sliceType$3, $Int], [sliceType$12], false)}, {prop: "FindAllStringSubmatch", name: "FindAllStringSubmatch", pkg: "", typ: $funcType([$String, $Int], [sliceType$14], false)}, {prop: "FindAllStringSubmatchIndex", name: "FindAllStringSubmatchIndex", pkg: "", typ: $funcType([$String, $Int], [sliceType$12], false)}, {prop: "Split", name: "Split", pkg: "", typ: $funcType([$String, $Int], [sliceType$9], false)}]; ptrType$11.methods = [{prop: "step", name: "step", pkg: "regexp", typ: $funcType([$Int], [$Int32, $Int], false)}, {prop: "canCheckPrefix", name: "canCheckPrefix", pkg: "regexp", typ: $funcType([], [$Bool], false)}, {prop: "hasPrefix", name: "hasPrefix", pkg: "regexp", typ: $funcType([ptrType$1], [$Bool], false)}, {prop: "index", name: "index", pkg: "regexp", typ: $funcType([ptrType$1, $Int], [$Int], false)}, {prop: "context", name: "context", pkg: "regexp", typ: $funcType([$Int], [syntax.EmptyOp], false)}]; ptrType$12.methods = [{prop: "step", name: "step", pkg: "regexp", typ: $funcType([$Int], [$Int32, $Int], false)}, {prop: "canCheckPrefix", name: "canCheckPrefix", pkg: "regexp", typ: $funcType([], [$Bool], false)}, {prop: "hasPrefix", name: "hasPrefix", pkg: "regexp", typ: $funcType([ptrType$1], [$Bool], false)}, {prop: "index", name: "index", pkg: "regexp", typ: $funcType([ptrType$1, $Int], [$Int], false)}, {prop: "context", name: "context", pkg: "regexp", typ: $funcType([$Int], [syntax.EmptyOp], false)}]; ptrType$13.methods = [{prop: "step", name: "step", pkg: "regexp", typ: $funcType([$Int], [$Int32, $Int], false)}, {prop: "canCheckPrefix", name: "canCheckPrefix", pkg: "regexp", typ: $funcType([], [$Bool], false)}, {prop: "hasPrefix", name: "hasPrefix", pkg: "regexp", typ: $funcType([ptrType$1], [$Bool], false)}, {prop: "index", name: "index", pkg: "regexp", typ: $funcType([ptrType$1, $Int], [$Int], false)}, {prop: "context", name: "context", pkg: "regexp", typ: $funcType([$Int], [syntax.EmptyOp], false)}]; queue.init([{prop: "sparse", name: "sparse", pkg: "regexp", typ: sliceType$2, tag: ""}, {prop: "dense", name: "dense", pkg: "regexp", typ: sliceType$6, tag: ""}]); entry.init([{prop: "pc", name: "pc", pkg: "regexp", typ: $Uint32, tag: ""}, {prop: "t", name: "t", pkg: "regexp", typ: ptrType$3, tag: ""}]); thread.init([{prop: "inst", name: "inst", pkg: "regexp", typ: ptrType$9, tag: ""}, {prop: "cap", name: "cap", pkg: "regexp", typ: sliceType, tag: ""}]); machine.init([{prop: "re", name: "re", pkg: "regexp", typ: ptrType$1, tag: ""}, {prop: "p", name: "p", pkg: "regexp", typ: ptrType$2, tag: ""}, {prop: "op", name: "op", pkg: "regexp", typ: ptrType, tag: ""}, {prop: "q0", name: "q0", pkg: "regexp", typ: queue, tag: ""}, {prop: "q1", name: "q1", pkg: "regexp", typ: queue, tag: ""}, {prop: "pool", name: "pool", pkg: "regexp", typ: sliceType$5, tag: ""}, {prop: "matched", name: "matched", pkg: "regexp", typ: $Bool, tag: ""}, {prop: "matchcap", name: "matchcap", pkg: "regexp", typ: sliceType, tag: ""}, {prop: "inputBytes", name: "inputBytes", pkg: "regexp", typ: inputBytes, tag: ""}, {prop: "inputString", name: "inputString", pkg: "regexp", typ: inputString, tag: ""}, {prop: "inputReader", name: "inputReader", pkg: "regexp", typ: inputReader, tag: ""}]); onePassProg.init([{prop: "Inst", name: "Inst", pkg: "", typ: sliceType$7, tag: ""}, {prop: "Start", name: "Start", pkg: "", typ: $Int, tag: ""}, {prop: "NumCap", name: "NumCap", pkg: "", typ: $Int, tag: ""}]); onePassInst.init([{prop: "Inst", name: "", pkg: "", typ: syntax.Inst, tag: ""}, {prop: "Next", name: "Next", pkg: "", typ: sliceType$2, tag: ""}]); queueOnePass.init([{prop: "sparse", name: "sparse", pkg: "regexp", typ: sliceType$2, tag: ""}, {prop: "dense", name: "dense", pkg: "regexp", typ: sliceType$2, tag: ""}, {prop: "size", name: "size", pkg: "regexp", typ: $Uint32, tag: ""}, {prop: "nextIndex", name: "nextIndex", pkg: "regexp", typ: $Uint32, tag: ""}]); runeSlice.init($Int32); Regexp.init([{prop: "expr", name: "expr", pkg: "regexp", typ: $String, tag: ""}, {prop: "prog", name: "prog", pkg: "regexp", typ: ptrType$2, tag: ""}, {prop: "onepass", name: "onepass", pkg: "regexp", typ: ptrType, tag: ""}, {prop: "prefix", name: "prefix", pkg: "regexp", typ: $String, tag: ""}, {prop: "prefixBytes", name: "prefixBytes", pkg: "regexp", typ: sliceType$3, tag: ""}, {prop: "prefixComplete", name: "prefixComplete", pkg: "regexp", typ: $Bool, tag: ""}, {prop: "prefixRune", name: "prefixRune", pkg: "regexp", typ: $Int32, tag: ""}, {prop: "prefixEnd", name: "prefixEnd", pkg: "regexp", typ: $Uint32, tag: ""}, {prop: "cond", name: "cond", pkg: "regexp", typ: syntax.EmptyOp, tag: ""}, {prop: "numSubexp", name: "numSubexp", pkg: "regexp", typ: $Int, tag: ""}, {prop: "subexpNames", name: "subexpNames", pkg: "regexp", typ: sliceType$9, tag: ""}, {prop: "longest", name: "longest", pkg: "regexp", typ: $Bool, tag: ""}, {prop: "mu", name: "mu", pkg: "regexp", typ: nosync.Mutex, tag: ""}, {prop: "machine", name: "machine", pkg: "regexp", typ: sliceType$10, tag: ""}]); input.init([{prop: "canCheckPrefix", name: "canCheckPrefix", pkg: "regexp", typ: $funcType([], [$Bool], false)}, {prop: "context", name: "context", pkg: "regexp", typ: $funcType([$Int], [syntax.EmptyOp], false)}, {prop: "hasPrefix", name: "hasPrefix", pkg: "regexp", typ: $funcType([ptrType$1], [$Bool], false)}, {prop: "index", name: "index", pkg: "regexp", typ: $funcType([ptrType$1, $Int], [$Int], false)}, {prop: "step", name: "step", pkg: "regexp", typ: $funcType([$Int], [$Int32, $Int], false)}]); inputString.init([{prop: "str", name: "str", pkg: "regexp", typ: $String, tag: ""}]); inputBytes.init([{prop: "str", name: "str", pkg: "regexp", typ: sliceType$3, tag: ""}]); inputReader.init([{prop: "r", name: "r", pkg: "regexp", typ: io.RuneReader, tag: ""}, {prop: "atEOT", name: "atEOT", pkg: "regexp", typ: $Bool, tag: ""}, {prop: "pos", name: "pos", pkg: "regexp", 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 = 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 = syntax.$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 = strings.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = testing.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = unicode.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = utf8.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } empty = $makeSlice(sliceType, 0); noRune = new sliceType$1([]); noNext = new sliceType$2([4294967295]); anyRuneNotNL = new sliceType$1([0, 9, 11, 1114111]); anyRune = new sliceType$1([0, 1114111]); notOnePass = ptrType.nil; /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; }; $pkg.$init = $init; return $pkg; })(); $packages["gopkg.in/yaml.v2"] = (function() { var $pkg = {}, $init, bytes, encoding, base64, errors, fmt, io, math, os, reflect, regexp, sort, strconv, strings, sync, time, unicode, utf8, node, parser, decoder, resolveMapItem, MapItem, Unmarshaler, yamlError, TypeError, structInfo, fieldInfo, yaml_version_directive_t, yaml_tag_directive_t, yaml_encoding_t, yaml_error_type_t, yaml_mark_t, yaml_style_t, yaml_scalar_style_t, yaml_sequence_style_t, yaml_mapping_style_t, yaml_token_type_t, yaml_token_t, yaml_event_type_t, yaml_event_t, yaml_node_type_t, yaml_node_item_t, yaml_node_pair_t, yaml_node_t, yaml_document_t, yaml_read_handler_t, yaml_simple_key_t, yaml_parser_state_t, yaml_alias_data_t, yaml_parser_t, mapType, sliceType, sliceType$1, sliceType$2, sliceType$3, sliceType$4, sliceType$5, sliceType$6, sliceType$7, ptrType, ptrType$1, ptrType$3, ptrType$4, sliceType$10, sliceType$11, sliceType$12, ptrType$5, ptrType$6, sliceType$13, ptrType$7, ptrType$8, ptrType$10, ptrType$11, ptrType$12, structType$4, sliceType$14, ptrType$13, ptrType$14, sliceType$16, mapType$1, ptrType$15, ptrType$16, mapType$2, funcType$1, mapType$3, ptrType$17, structType$5, sliceType$17, structType$6, sliceType$18, ptrType$18, structType$7, sliceType$19, ptrType$19, mapItemType, durationType, defaultMapType, ifaceType, zeroValue, base60float, default_tag_directives, resolveTable, resolveMap, structMap, fieldMapMutex, x, _map, _key, _r, _r$1, yaml_insert_token, yaml_parser_initialize, yaml_parser_delete, yaml_string_read_handler, yaml_parser_set_input_string, yaml_event_delete, newParser, newDecoder, resetMap, settableValueOf, failWantMap, isMerge, peek_token, skip_token, yaml_parser_parse, yaml_parser_set_parser_error, yaml_parser_set_parser_error_context, yaml_parser_state_machine, yaml_parser_parse_stream_start, yaml_parser_parse_document_start, yaml_parser_parse_document_content, yaml_parser_parse_document_end, yaml_parser_parse_node, yaml_parser_parse_block_sequence_entry, yaml_parser_parse_indentless_sequence_entry, yaml_parser_parse_block_mapping_key, yaml_parser_parse_block_mapping_value, yaml_parser_parse_flow_sequence_entry, yaml_parser_parse_flow_sequence_entry_mapping_key, yaml_parser_parse_flow_sequence_entry_mapping_value, yaml_parser_parse_flow_sequence_entry_mapping_end, yaml_parser_parse_flow_mapping_key, yaml_parser_parse_flow_mapping_value, yaml_parser_process_empty_scalar, yaml_parser_process_directives, yaml_parser_append_tag_directive, yaml_parser_set_reader_error, yaml_parser_determine_encoding, yaml_parser_update_raw_buffer, yaml_parser_update_buffer, init, shortTag, resolvableTag, resolve, encodeBase64, skip, skip_line, read, read_line, yaml_parser_set_scanner_error, yaml_parser_set_scanner_tag_error, yaml_parser_fetch_more_tokens, yaml_parser_fetch_next_token, yaml_parser_stale_simple_keys, yaml_parser_save_simple_key, yaml_parser_remove_simple_key, yaml_parser_increase_flow_level, yaml_parser_decrease_flow_level, yaml_parser_roll_indent, yaml_parser_unroll_indent, yaml_parser_fetch_stream_start, yaml_parser_fetch_stream_end, yaml_parser_fetch_directive, yaml_parser_fetch_document_indicator, yaml_parser_fetch_flow_collection_start, yaml_parser_fetch_flow_collection_end, yaml_parser_fetch_flow_entry, yaml_parser_fetch_block_entry, yaml_parser_fetch_key, yaml_parser_fetch_value, yaml_parser_fetch_anchor, yaml_parser_fetch_tag, yaml_parser_fetch_block_scalar, yaml_parser_fetch_flow_scalar, yaml_parser_fetch_plain_scalar, yaml_parser_scan_to_next_token, yaml_parser_scan_directive, yaml_parser_scan_directive_name, yaml_parser_scan_version_directive_value, yaml_parser_scan_version_directive_number, yaml_parser_scan_tag_directive_value, yaml_parser_scan_anchor, yaml_parser_scan_tag, yaml_parser_scan_tag_handle, yaml_parser_scan_tag_uri, yaml_parser_scan_uri_escapes, yaml_parser_scan_block_scalar, yaml_parser_scan_block_scalar_breaks, yaml_parser_scan_flow_scalar, yaml_parser_scan_plain_scalar, Unmarshal, handleErr, fail, failf, getStructInfo, is_alpha, is_digit, as_digit, is_hex, as_hex, is_z, is_bom, is_space, is_tab, is_blank, is_break, is_crlf, is_breakz, is_blankz, width; bytes = $packages["bytes"]; encoding = $packages["encoding"]; base64 = $packages["encoding/base64"]; errors = $packages["errors"]; fmt = $packages["fmt"]; io = $packages["io"]; math = $packages["math"]; os = $packages["os"]; reflect = $packages["reflect"]; regexp = $packages["regexp"]; sort = $packages["sort"]; strconv = $packages["strconv"]; strings = $packages["strings"]; sync = $packages["sync"]; time = $packages["time"]; unicode = $packages["unicode"]; utf8 = $packages["unicode/utf8"]; node = $pkg.node = $newType(0, $kindStruct, "yaml.node", "node", "gopkg.in/yaml.v2", function(kind_, line_, column_, tag_, value_, implicit_, children_, anchors_) { this.$val = this; if (arguments.length === 0) { this.kind = 0; this.line = 0; this.column = 0; this.tag = ""; this.value = ""; this.implicit = false; this.children = sliceType$11.nil; this.anchors = false; return; } this.kind = kind_; this.line = line_; this.column = column_; this.tag = tag_; this.value = value_; this.implicit = implicit_; this.children = children_; this.anchors = anchors_; }); parser = $pkg.parser = $newType(0, $kindStruct, "yaml.parser", "parser", "gopkg.in/yaml.v2", function(parser_, event_, doc_) { this.$val = this; if (arguments.length === 0) { this.parser = new yaml_parser_t.ptr(); this.event = new yaml_event_t.ptr(); this.doc = ptrType$4.nil; return; } this.parser = parser_; this.event = event_; this.doc = doc_; }); decoder = $pkg.decoder = $newType(0, $kindStruct, "yaml.decoder", "decoder", "gopkg.in/yaml.v2", function(doc_, aliases_, mapType_, terrors_) { this.$val = this; if (arguments.length === 0) { this.doc = ptrType$4.nil; this.aliases = false; this.mapType = $ifaceNil; this.terrors = sliceType$12.nil; return; } this.doc = doc_; this.aliases = aliases_; this.mapType = mapType_; this.terrors = terrors_; }); resolveMapItem = $pkg.resolveMapItem = $newType(0, $kindStruct, "yaml.resolveMapItem", "resolveMapItem", "gopkg.in/yaml.v2", function(value_, tag_) { this.$val = this; if (arguments.length === 0) { this.value = $ifaceNil; this.tag = ""; return; } this.value = value_; this.tag = tag_; }); MapItem = $pkg.MapItem = $newType(0, $kindStruct, "yaml.MapItem", "MapItem", "gopkg.in/yaml.v2", function(Key_, Value_) { this.$val = this; if (arguments.length === 0) { this.Key = $ifaceNil; this.Value = $ifaceNil; return; } this.Key = Key_; this.Value = Value_; }); Unmarshaler = $pkg.Unmarshaler = $newType(8, $kindInterface, "yaml.Unmarshaler", "Unmarshaler", "gopkg.in/yaml.v2", null); yamlError = $pkg.yamlError = $newType(0, $kindStruct, "yaml.yamlError", "yamlError", "gopkg.in/yaml.v2", function(err_) { this.$val = this; if (arguments.length === 0) { this.err = $ifaceNil; return; } this.err = err_; }); TypeError = $pkg.TypeError = $newType(0, $kindStruct, "yaml.TypeError", "TypeError", "gopkg.in/yaml.v2", function(Errors_) { this.$val = this; if (arguments.length === 0) { this.Errors = sliceType$12.nil; return; } this.Errors = Errors_; }); structInfo = $pkg.structInfo = $newType(0, $kindStruct, "yaml.structInfo", "structInfo", "gopkg.in/yaml.v2", function(FieldsMap_, FieldsList_, InlineMap_) { this.$val = this; if (arguments.length === 0) { this.FieldsMap = false; this.FieldsList = sliceType$16.nil; this.InlineMap = 0; return; } this.FieldsMap = FieldsMap_; this.FieldsList = FieldsList_; this.InlineMap = InlineMap_; }); fieldInfo = $pkg.fieldInfo = $newType(0, $kindStruct, "yaml.fieldInfo", "fieldInfo", "gopkg.in/yaml.v2", function(Key_, Num_, OmitEmpty_, Flow_, Inline_) { this.$val = this; if (arguments.length === 0) { this.Key = ""; this.Num = 0; this.OmitEmpty = false; this.Flow = false; this.Inline = sliceType$3.nil; return; } this.Key = Key_; this.Num = Num_; this.OmitEmpty = OmitEmpty_; this.Flow = Flow_; this.Inline = Inline_; }); yaml_version_directive_t = $pkg.yaml_version_directive_t = $newType(0, $kindStruct, "yaml.yaml_version_directive_t", "yaml_version_directive_t", "gopkg.in/yaml.v2", function(major_, minor_) { this.$val = this; if (arguments.length === 0) { this.major = 0; this.minor = 0; return; } this.major = major_; this.minor = minor_; }); yaml_tag_directive_t = $pkg.yaml_tag_directive_t = $newType(0, $kindStruct, "yaml.yaml_tag_directive_t", "yaml_tag_directive_t", "gopkg.in/yaml.v2", function(handle_, prefix_) { this.$val = this; if (arguments.length === 0) { this.handle = sliceType$1.nil; this.prefix = sliceType$1.nil; return; } this.handle = handle_; this.prefix = prefix_; }); yaml_encoding_t = $pkg.yaml_encoding_t = $newType(4, $kindInt, "yaml.yaml_encoding_t", "yaml_encoding_t", "gopkg.in/yaml.v2", null); yaml_error_type_t = $pkg.yaml_error_type_t = $newType(4, $kindInt, "yaml.yaml_error_type_t", "yaml_error_type_t", "gopkg.in/yaml.v2", null); yaml_mark_t = $pkg.yaml_mark_t = $newType(0, $kindStruct, "yaml.yaml_mark_t", "yaml_mark_t", "gopkg.in/yaml.v2", function(index_, line_, column_) { this.$val = this; if (arguments.length === 0) { this.index = 0; this.line = 0; this.column = 0; return; } this.index = index_; this.line = line_; this.column = column_; }); yaml_style_t = $pkg.yaml_style_t = $newType(1, $kindInt8, "yaml.yaml_style_t", "yaml_style_t", "gopkg.in/yaml.v2", null); yaml_scalar_style_t = $pkg.yaml_scalar_style_t = $newType(1, $kindInt8, "yaml.yaml_scalar_style_t", "yaml_scalar_style_t", "gopkg.in/yaml.v2", null); yaml_sequence_style_t = $pkg.yaml_sequence_style_t = $newType(1, $kindInt8, "yaml.yaml_sequence_style_t", "yaml_sequence_style_t", "gopkg.in/yaml.v2", null); yaml_mapping_style_t = $pkg.yaml_mapping_style_t = $newType(1, $kindInt8, "yaml.yaml_mapping_style_t", "yaml_mapping_style_t", "gopkg.in/yaml.v2", null); yaml_token_type_t = $pkg.yaml_token_type_t = $newType(4, $kindInt, "yaml.yaml_token_type_t", "yaml_token_type_t", "gopkg.in/yaml.v2", null); yaml_token_t = $pkg.yaml_token_t = $newType(0, $kindStruct, "yaml.yaml_token_t", "yaml_token_t", "gopkg.in/yaml.v2", function(typ_, start_mark_, end_mark_, encoding_, value_, suffix_, prefix_, style_, major_, minor_) { this.$val = this; if (arguments.length === 0) { this.typ = 0; this.start_mark = new yaml_mark_t.ptr(); this.end_mark = new yaml_mark_t.ptr(); this.encoding = 0; this.value = sliceType$1.nil; this.suffix = sliceType$1.nil; this.prefix = sliceType$1.nil; this.style = 0; this.major = 0; this.minor = 0; return; } this.typ = typ_; this.start_mark = start_mark_; this.end_mark = end_mark_; this.encoding = encoding_; this.value = value_; this.suffix = suffix_; this.prefix = prefix_; this.style = style_; this.major = major_; this.minor = minor_; }); yaml_event_type_t = $pkg.yaml_event_type_t = $newType(1, $kindInt8, "yaml.yaml_event_type_t", "yaml_event_type_t", "gopkg.in/yaml.v2", null); yaml_event_t = $pkg.yaml_event_t = $newType(0, $kindStruct, "yaml.yaml_event_t", "yaml_event_t", "gopkg.in/yaml.v2", function(typ_, start_mark_, end_mark_, encoding_, version_directive_, tag_directives_, anchor_, tag_, value_, implicit_, quoted_implicit_, style_) { this.$val = this; if (arguments.length === 0) { this.typ = 0; this.start_mark = new yaml_mark_t.ptr(); this.end_mark = new yaml_mark_t.ptr(); this.encoding = 0; this.version_directive = ptrType$3.nil; this.tag_directives = sliceType.nil; this.anchor = sliceType$1.nil; this.tag = sliceType$1.nil; this.value = sliceType$1.nil; this.implicit = false; this.quoted_implicit = false; this.style = 0; return; } this.typ = typ_; this.start_mark = start_mark_; this.end_mark = end_mark_; this.encoding = encoding_; this.version_directive = version_directive_; this.tag_directives = tag_directives_; this.anchor = anchor_; this.tag = tag_; this.value = value_; this.implicit = implicit_; this.quoted_implicit = quoted_implicit_; this.style = style_; }); yaml_node_type_t = $pkg.yaml_node_type_t = $newType(4, $kindInt, "yaml.yaml_node_type_t", "yaml_node_type_t", "gopkg.in/yaml.v2", null); yaml_node_item_t = $pkg.yaml_node_item_t = $newType(4, $kindInt, "yaml.yaml_node_item_t", "yaml_node_item_t", "gopkg.in/yaml.v2", null); yaml_node_pair_t = $pkg.yaml_node_pair_t = $newType(0, $kindStruct, "yaml.yaml_node_pair_t", "yaml_node_pair_t", "gopkg.in/yaml.v2", function(key_, value_) { this.$val = this; if (arguments.length === 0) { this.key = 0; this.value = 0; return; } this.key = key_; this.value = value_; }); yaml_node_t = $pkg.yaml_node_t = $newType(0, $kindStruct, "yaml.yaml_node_t", "yaml_node_t", "gopkg.in/yaml.v2", function(typ_, tag_, scalar_, sequence_, mapping_, start_mark_, end_mark_) { this.$val = this; if (arguments.length === 0) { this.typ = 0; this.tag = sliceType$1.nil; this.scalar = new structType$5.ptr(); this.sequence = new structType$6.ptr(); this.mapping = new structType$7.ptr(); this.start_mark = new yaml_mark_t.ptr(); this.end_mark = new yaml_mark_t.ptr(); return; } this.typ = typ_; this.tag = tag_; this.scalar = scalar_; this.sequence = sequence_; this.mapping = mapping_; this.start_mark = start_mark_; this.end_mark = end_mark_; }); yaml_document_t = $pkg.yaml_document_t = $newType(0, $kindStruct, "yaml.yaml_document_t", "yaml_document_t", "gopkg.in/yaml.v2", function(nodes_, version_directive_, tag_directives_data_, tag_directives_start_, tag_directives_end_, start_implicit_, end_implicit_, start_mark_, end_mark_) { this.$val = this; if (arguments.length === 0) { this.nodes = sliceType$19.nil; this.version_directive = ptrType$3.nil; this.tag_directives_data = sliceType.nil; this.tag_directives_start = 0; this.tag_directives_end = 0; this.start_implicit = 0; this.end_implicit = 0; this.start_mark = new yaml_mark_t.ptr(); this.end_mark = new yaml_mark_t.ptr(); return; } this.nodes = nodes_; this.version_directive = version_directive_; this.tag_directives_data = tag_directives_data_; this.tag_directives_start = tag_directives_start_; this.tag_directives_end = tag_directives_end_; this.start_implicit = start_implicit_; this.end_implicit = end_implicit_; this.start_mark = start_mark_; this.end_mark = end_mark_; }); yaml_read_handler_t = $pkg.yaml_read_handler_t = $newType(4, $kindFunc, "yaml.yaml_read_handler_t", "yaml_read_handler_t", "gopkg.in/yaml.v2", null); yaml_simple_key_t = $pkg.yaml_simple_key_t = $newType(0, $kindStruct, "yaml.yaml_simple_key_t", "yaml_simple_key_t", "gopkg.in/yaml.v2", function(possible_, required_, token_number_, mark_) { this.$val = this; if (arguments.length === 0) { this.possible = false; this.required = false; this.token_number = 0; this.mark = new yaml_mark_t.ptr(); return; } this.possible = possible_; this.required = required_; this.token_number = token_number_; this.mark = mark_; }); yaml_parser_state_t = $pkg.yaml_parser_state_t = $newType(4, $kindInt, "yaml.yaml_parser_state_t", "yaml_parser_state_t", "gopkg.in/yaml.v2", null); yaml_alias_data_t = $pkg.yaml_alias_data_t = $newType(0, $kindStruct, "yaml.yaml_alias_data_t", "yaml_alias_data_t", "gopkg.in/yaml.v2", function(anchor_, index_, mark_) { this.$val = this; if (arguments.length === 0) { this.anchor = sliceType$1.nil; this.index = 0; this.mark = new yaml_mark_t.ptr(); return; } this.anchor = anchor_; this.index = index_; this.mark = mark_; }); yaml_parser_t = $pkg.yaml_parser_t = $newType(0, $kindStruct, "yaml.yaml_parser_t", "yaml_parser_t", "gopkg.in/yaml.v2", function(error_, problem_, problem_offset_, problem_value_, problem_mark_, context_, context_mark_, read_handler_, input_file_, input_, input_pos_, eof_, buffer_, buffer_pos_, unread_, raw_buffer_, raw_buffer_pos_, encoding_, offset_, mark_, stream_start_produced_, stream_end_produced_, flow_level_, tokens_, tokens_head_, tokens_parsed_, token_available_, indent_, indents_, simple_key_allowed_, simple_keys_, state_, states_, marks_, tag_directives_, aliases_, document_) { this.$val = this; if (arguments.length === 0) { this.error = 0; this.problem = ""; this.problem_offset = 0; this.problem_value = 0; this.problem_mark = new yaml_mark_t.ptr(); this.context = ""; this.context_mark = new yaml_mark_t.ptr(); this.read_handler = $throwNilPointerError; this.input_file = $ifaceNil; this.input = sliceType$1.nil; this.input_pos = 0; this.eof = false; this.buffer = sliceType$1.nil; this.buffer_pos = 0; this.unread = 0; this.raw_buffer = sliceType$1.nil; this.raw_buffer_pos = 0; this.encoding = 0; this.offset = 0; this.mark = new yaml_mark_t.ptr(); this.stream_start_produced = false; this.stream_end_produced = false; this.flow_level = 0; this.tokens = sliceType$2.nil; this.tokens_head = 0; this.tokens_parsed = 0; this.token_available = false; this.indent = 0; this.indents = sliceType$3.nil; this.simple_key_allowed = false; this.simple_keys = sliceType$4.nil; this.state = 0; this.states = sliceType$5.nil; this.marks = sliceType$6.nil; this.tag_directives = sliceType.nil; this.aliases = sliceType$7.nil; this.document = ptrType.nil; return; } this.error = error_; this.problem = problem_; this.problem_offset = problem_offset_; this.problem_value = problem_value_; this.problem_mark = problem_mark_; this.context = context_; this.context_mark = context_mark_; this.read_handler = read_handler_; this.input_file = input_file_; this.input = input_; this.input_pos = input_pos_; this.eof = eof_; this.buffer = buffer_; this.buffer_pos = buffer_pos_; this.unread = unread_; this.raw_buffer = raw_buffer_; this.raw_buffer_pos = raw_buffer_pos_; this.encoding = encoding_; this.offset = offset_; this.mark = mark_; this.stream_start_produced = stream_start_produced_; this.stream_end_produced = stream_end_produced_; this.flow_level = flow_level_; this.tokens = tokens_; this.tokens_head = tokens_head_; this.tokens_parsed = tokens_parsed_; this.token_available = token_available_; this.indent = indent_; this.indents = indents_; this.simple_key_allowed = simple_key_allowed_; this.simple_keys = simple_keys_; this.state = state_; this.states = states_; this.marks = marks_; this.tag_directives = tag_directives_; this.aliases = aliases_; this.document = document_; }); mapType = $mapType($emptyInterface, $emptyInterface); sliceType = $sliceType(yaml_tag_directive_t); sliceType$1 = $sliceType($Uint8); sliceType$2 = $sliceType(yaml_token_t); sliceType$3 = $sliceType($Int); sliceType$4 = $sliceType(yaml_simple_key_t); sliceType$5 = $sliceType(yaml_parser_state_t); sliceType$6 = $sliceType(yaml_mark_t); sliceType$7 = $sliceType(yaml_alias_data_t); ptrType = $ptrType(yaml_document_t); ptrType$1 = $ptrType(sliceType$1); ptrType$3 = $ptrType(yaml_version_directive_t); ptrType$4 = $ptrType(node); sliceType$10 = $sliceType($emptyInterface); sliceType$11 = $sliceType(ptrType$4); sliceType$12 = $sliceType($String); ptrType$5 = $ptrType($error); ptrType$6 = $ptrType(TypeError); sliceType$13 = $sliceType(MapItem); ptrType$7 = $ptrType($emptyInterface); ptrType$8 = $ptrType($Int); ptrType$10 = $ptrType(yaml_token_t); ptrType$11 = $ptrType(ptrType$3); ptrType$12 = $ptrType(sliceType); structType$4 = $structType([{prop: "v", name: "v", pkg: "gopkg.in/yaml.v2", typ: $emptyInterface, tag: ""}, {prop: "tag", name: "tag", pkg: "gopkg.in/yaml.v2", typ: $String, tag: ""}, {prop: "l", name: "l", pkg: "gopkg.in/yaml.v2", typ: sliceType$12, tag: ""}]); sliceType$14 = $sliceType(structType$4); ptrType$13 = $ptrType($Int8); ptrType$14 = $ptrType(structInfo); sliceType$16 = $sliceType(fieldInfo); mapType$1 = $mapType($String, ptrType$4); ptrType$15 = $ptrType(parser); ptrType$16 = $ptrType(decoder); mapType$2 = $mapType($String, $Bool); funcType$1 = $funcType([$emptyInterface], [$error], false); mapType$3 = $mapType($String, fieldInfo); ptrType$17 = $ptrType(yaml_event_t); structType$5 = $structType([{prop: "value", name: "value", pkg: "gopkg.in/yaml.v2", typ: sliceType$1, tag: ""}, {prop: "length", name: "length", pkg: "gopkg.in/yaml.v2", typ: $Int, tag: ""}, {prop: "style", name: "style", pkg: "gopkg.in/yaml.v2", typ: yaml_scalar_style_t, tag: ""}]); sliceType$17 = $sliceType(yaml_node_item_t); structType$6 = $structType([{prop: "items_data", name: "items_data", pkg: "gopkg.in/yaml.v2", typ: sliceType$17, tag: ""}, {prop: "style", name: "style", pkg: "gopkg.in/yaml.v2", typ: yaml_sequence_style_t, tag: ""}]); sliceType$18 = $sliceType(yaml_node_pair_t); ptrType$18 = $ptrType(yaml_node_pair_t); structType$7 = $structType([{prop: "pairs_data", name: "pairs_data", pkg: "gopkg.in/yaml.v2", typ: sliceType$18, tag: ""}, {prop: "pairs_start", name: "pairs_start", pkg: "gopkg.in/yaml.v2", typ: ptrType$18, tag: ""}, {prop: "pairs_end", name: "pairs_end", pkg: "gopkg.in/yaml.v2", typ: ptrType$18, tag: ""}, {prop: "pairs_top", name: "pairs_top", pkg: "gopkg.in/yaml.v2", typ: ptrType$18, tag: ""}, {prop: "style", name: "style", pkg: "gopkg.in/yaml.v2", typ: yaml_mapping_style_t, tag: ""}]); sliceType$19 = $sliceType(yaml_node_t); ptrType$19 = $ptrType(yaml_parser_t); yaml_insert_token = function(parser$1, pos, token) { var $ptr, parser$1, pos, token, x$1, x$2; if (parser$1.tokens_head > 0 && (parser$1.tokens.$length === parser$1.tokens.$capacity)) { if (!((parser$1.tokens_head === parser$1.tokens.$length))) { $copySlice(parser$1.tokens, $subslice(parser$1.tokens, parser$1.tokens_head)); } parser$1.tokens = $subslice(parser$1.tokens, 0, (parser$1.tokens.$length - parser$1.tokens_head >> 0)); parser$1.tokens_head = 0; } parser$1.tokens = $append(parser$1.tokens, token); if (pos < 0) { return; } $copySlice($subslice(parser$1.tokens, ((parser$1.tokens_head + pos >> 0) + 1 >> 0)), $subslice(parser$1.tokens, (parser$1.tokens_head + pos >> 0))); $copy((x$1 = parser$1.tokens, x$2 = parser$1.tokens_head + pos >> 0, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])), token, yaml_token_t); }; yaml_parser_initialize = function(parser$1) { var $ptr, parser$1; $copy(parser$1, new yaml_parser_t.ptr(0, "", 0, 0, new yaml_mark_t.ptr(), "", new yaml_mark_t.ptr(), $throwNilPointerError, $ifaceNil, sliceType$1.nil, 0, false, $makeSlice(sliceType$1, 0, 1536), 0, 0, $makeSlice(sliceType$1, 0, 512), 0, 0, 0, new yaml_mark_t.ptr(), false, false, 0, sliceType$2.nil, 0, 0, false, 0, sliceType$3.nil, false, sliceType$4.nil, 0, sliceType$5.nil, sliceType$6.nil, sliceType.nil, sliceType$7.nil, ptrType.nil), yaml_parser_t); return true; }; yaml_parser_delete = function(parser$1) { var $ptr, parser$1; $copy(parser$1, new yaml_parser_t.ptr(0, "", 0, 0, new yaml_mark_t.ptr(), "", new yaml_mark_t.ptr(), $throwNilPointerError, $ifaceNil, sliceType$1.nil, 0, false, sliceType$1.nil, 0, 0, sliceType$1.nil, 0, 0, 0, new yaml_mark_t.ptr(), false, false, 0, sliceType$2.nil, 0, 0, false, 0, sliceType$3.nil, false, sliceType$4.nil, 0, sliceType$5.nil, sliceType$6.nil, sliceType.nil, sliceType$7.nil, ptrType.nil), yaml_parser_t); }; yaml_string_read_handler = function(parser$1, buffer) { var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, buffer, err, n, parser$1; n = 0; err = $ifaceNil; if (parser$1.input_pos === parser$1.input.$length) { _tmp = 0; _tmp$1 = io.EOF; n = _tmp; err = _tmp$1; return [n, err]; } n = $copySlice(buffer, $subslice(parser$1.input, parser$1.input_pos)); parser$1.input_pos = parser$1.input_pos + (n) >> 0; _tmp$2 = n; _tmp$3 = $ifaceNil; n = _tmp$2; err = _tmp$3; return [n, err]; }; yaml_parser_set_input_string = function(parser$1, input) { var $ptr, input, parser$1; if (!(parser$1.read_handler === $throwNilPointerError)) { $panic(new $String("must set the input source only once")); } parser$1.read_handler = yaml_string_read_handler; parser$1.input = input; parser$1.input_pos = 0; }; yaml_event_delete = function(event) { var $ptr, event; $copy(event, new yaml_event_t.ptr(0, new yaml_mark_t.ptr(), new yaml_mark_t.ptr(), 0, ptrType$3.nil, sliceType.nil, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, false, false, 0), yaml_event_t); }; newParser = function(b) { var $ptr, b, p, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; b = $f.b; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: p = [p]; p[0] = new parser.ptr(new yaml_parser_t.ptr(), new yaml_event_t.ptr(), ptrType$4.nil); if (!yaml_parser_initialize(p[0].parser)) { $panic(new $String("failed to initialize YAML emitter")); } if (b.$length === 0) { b = new sliceType$1([10]); } yaml_parser_set_input_string(p[0].parser, b); $r = p[0].skip(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } if (!((p[0].event.typ === 1))) { $panic(new $String("expected stream start event, got " + strconv.Itoa((p[0].event.typ >> 0)))); } $r = p[0].skip(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } return p[0]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: newParser }; } $f.$ptr = $ptr; $f.b = b; $f.p = p; $f.$s = $s; $f.$r = $r; return $f; }; parser.ptr.prototype.destroy = function() { var $ptr, p; p = this; if (!((p.event.typ === 0))) { yaml_event_delete(p.event); } yaml_parser_delete(p.parser); }; parser.prototype.destroy = function() { return this.$val.destroy(); }; parser.ptr.prototype.skip = function() { var $ptr, _r$2, p, $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; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: p = this; /* */ if (!((p.event.typ === 0))) { $s = 1; continue; } /* */ $s = 2; continue; /* if (!((p.event.typ === 0))) { */ case 1: /* */ if (p.event.typ === 2) { $s = 3; continue; } /* */ $s = 4; continue; /* if (p.event.typ === 2) { */ case 3: $r = failf("attempted to go past the end of stream; corrupted value?", new sliceType$10([])); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 4: yaml_event_delete(p.event); /* } */ case 2: _r$2 = yaml_parser_parse(p.parser, p.event); /* */ $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: $r = p.fail(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 7: /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.skip }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f.p = p; $f.$s = $s; $f.$r = $r; return $f; }; parser.prototype.skip = function() { return this.$val.skip(); }; parser.ptr.prototype.fail = function() { var $ptr, line, msg, p, where, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; line = $f.line; msg = $f.msg; p = $f.p; where = $f.where; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: p = this; where = ""; line = 0; if (!((p.parser.problem_mark.line === 0))) { line = p.parser.problem_mark.line; } else if (!((p.parser.context_mark.line === 0))) { line = p.parser.context_mark.line; } if (!((line === 0))) { where = "line " + strconv.Itoa(line) + ": "; } msg = ""; if (p.parser.problem.length > 0) { msg = p.parser.problem; } else { msg = "unknown problem parsing YAML content"; } $r = failf("%s%s", new sliceType$10([new $String(where), new $String(msg)])); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.fail }; } $f.$ptr = $ptr; $f.line = line; $f.msg = msg; $f.p = p; $f.where = where; $f.$s = $s; $f.$r = $r; return $f; }; parser.prototype.fail = function() { return this.$val.fail(); }; parser.ptr.prototype.anchor = function(n, anchor) { var $ptr, _key$1, anchor, n, p; p = this; if (!(anchor === sliceType$1.nil)) { _key$1 = $bytesToString(anchor); (p.doc.anchors || $throwRuntimeError("assignment to entry in nil map"))[_key$1] = { k: _key$1, v: n }; } }; parser.prototype.anchor = function(n, anchor) { return this.$val.anchor(n, anchor); }; parser.ptr.prototype.parse = function() { var $ptr, _r$2, _r$3, _r$4, _r$5, _r$6, _ref, p, $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; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _ref = $f._ref; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: p = this; _ref = p.event.typ; /* */ if (_ref === 6) { $s = 1; continue; } /* */ if (_ref === 5) { $s = 2; continue; } /* */ if (_ref === 9) { $s = 3; continue; } /* */ if (_ref === 7) { $s = 4; continue; } /* */ if (_ref === 3) { $s = 5; continue; } /* */ if (_ref === 2) { $s = 6; continue; } /* */ $s = 7; continue; /* if (_ref === 6) { */ case 1: _r$2 = p.scalar(); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } return _r$2; $s = 8; continue; /* } else if (_ref === 5) { */ case 2: _r$3 = p.alias(); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } return _r$3; $s = 8; continue; /* } else if (_ref === 9) { */ case 3: _r$4 = p.mapping(); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } return _r$4; $s = 8; continue; /* } else if (_ref === 7) { */ case 4: _r$5 = p.sequence(); /* */ $s = 12; case 12: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } return _r$5; $s = 8; continue; /* } else if (_ref === 3) { */ case 5: _r$6 = p.document(); /* */ $s = 13; case 13: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } return _r$6; $s = 8; continue; /* } else if (_ref === 2) { */ case 6: return ptrType$4.nil; $s = 8; continue; /* } else { */ case 7: $panic(new $String("attempted to parse unknown event: " + strconv.Itoa((p.event.typ >> 0)))); /* } */ case 8: $panic(new $String("unreachable")); /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.parse }; } $f.$ptr = $ptr; $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.p = p; $f.$s = $s; $f.$r = $r; return $f; }; parser.prototype.parse = function() { return this.$val.parse(); }; parser.ptr.prototype.node = function(kind) { var $ptr, kind, p; p = this; return new node.ptr(kind, p.event.start_mark.line, p.event.start_mark.column, "", "", false, sliceType$11.nil, false); }; parser.prototype.node = function(kind) { return this.$val.node(kind); }; parser.ptr.prototype.document = function() { var $ptr, _r$2, n, p, $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; n = $f.n; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: p = this; n = p.node(1); n.anchors = new $Map(); p.doc = n; $r = p.skip(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } _r$2 = p.parse(); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } n.children = $append(n.children, _r$2); if (!((p.event.typ === 4))) { $panic(new $String("expected end of document event but got " + strconv.Itoa((p.event.typ >> 0)))); } $r = p.skip(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } return n; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.document }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f.n = n; $f.p = p; $f.$s = $s; $f.$r = $r; return $f; }; parser.prototype.document = function() { return this.$val.document(); }; parser.ptr.prototype.alias = function() { var $ptr, n, p, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; n = $f.n; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: p = this; n = p.node(16); n.value = $bytesToString(p.event.anchor); $r = p.skip(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } return n; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.alias }; } $f.$ptr = $ptr; $f.n = n; $f.p = p; $f.$s = $s; $f.$r = $r; return $f; }; parser.prototype.alias = function() { return this.$val.alias(); }; parser.ptr.prototype.scalar = function() { var $ptr, n, p, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; n = $f.n; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: p = this; n = p.node(8); n.value = $bytesToString(p.event.value); n.tag = $bytesToString(p.event.tag); n.implicit = p.event.implicit; p.anchor(n, p.event.anchor); $r = p.skip(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } return n; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.scalar }; } $f.$ptr = $ptr; $f.n = n; $f.p = p; $f.$s = $s; $f.$r = $r; return $f; }; parser.prototype.scalar = function() { return this.$val.scalar(); }; parser.ptr.prototype.sequence = function() { var $ptr, _r$2, n, p, $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; n = $f.n; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: p = this; n = p.node(4); p.anchor(n, p.event.anchor); $r = p.skip(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* while (true) { */ case 2: /* if (!(!((p.event.typ === 8)))) { break; } */ if(!(!((p.event.typ === 8)))) { $s = 3; continue; } _r$2 = p.parse(); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } n.children = $append(n.children, _r$2); /* } */ $s = 2; continue; case 3: $r = p.skip(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } return n; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.sequence }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f.n = n; $f.p = p; $f.$s = $s; $f.$r = $r; return $f; }; parser.prototype.sequence = function() { return this.$val.sequence(); }; parser.ptr.prototype.mapping = function() { var $ptr, _r$2, _r$3, n, p, $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; _r$3 = $f._r$3; n = $f.n; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: p = this; n = p.node(2); p.anchor(n, p.event.anchor); $r = p.skip(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* while (true) { */ case 2: /* if (!(!((p.event.typ === 10)))) { break; } */ if(!(!((p.event.typ === 10)))) { $s = 3; continue; } _r$2 = p.parse(); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } _r$3 = p.parse(); /* */ $s = 5; case 5: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } n.children = $append(n.children, _r$2, _r$3); /* } */ $s = 2; continue; case 3: $r = p.skip(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } return n; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.mapping }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f.n = n; $f.p = p; $f.$s = $s; $f.$r = $r; return $f; }; parser.prototype.mapping = function() { return this.$val.mapping(); }; newDecoder = function() { var $ptr, d; d = new decoder.ptr(ptrType$4.nil, false, defaultMapType, sliceType$12.nil); d.aliases = new $Map(); return d; }; decoder.ptr.prototype.terror = function(n, tag, out) { var $ptr, _r$2, d, n, out, tag, value, $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; d = $f.d; n = $f.n; out = $f.out; tag = $f.tag; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: d = this; out = out; if (!(n.tag === "")) { tag = n.tag; } value = n.value; if (!(tag === "tag:yaml.org,2002:seq") && !(tag === "tag:yaml.org,2002:map")) { if (value.length > 10) { value = " `" + value.substring(0, 7) + "...`"; } else { value = " `" + value + "`"; } } _r$2 = fmt.Sprintf("line %d: cannot unmarshal %s%s into %s", new sliceType$10([new $Int((n.line + 1 >> 0)), new $String(shortTag(tag)), new $String(value), out.Type()])); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } d.terrors = $append(d.terrors, _r$2); /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: decoder.ptr.prototype.terror }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f.d = d; $f.n = n; $f.out = out; $f.tag = tag; $f.value = value; $f.$s = $s; $f.$r = $r; return $f; }; decoder.prototype.terror = function(n, tag, out) { return this.$val.terror(n, tag, out); }; decoder.ptr.prototype.callUnmarshaler = function(n, u) { var $ptr, _r$2, _tuple, d, e, err, good, n, ok, terrlen, u, $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; _tuple = $f._tuple; d = $f.d; e = $f.e; err = $f.err; good = $f.good; n = $f.n; ok = $f.ok; terrlen = $f.terrlen; u = $f.u; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: d = [d]; n = [n]; terrlen = [terrlen]; good = false; d[0] = this; terrlen[0] = d[0].terrors.$length; _r$2 = u.UnmarshalYAML((function(d, n, terrlen) { return function $b(v) { var $ptr, _arg, _arg$1, _r$2, _r$3, err, issues, v, $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; _r$2 = $f._r$2; _r$3 = $f._r$3; err = $f.err; issues = $f.issues; 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; $deferred.push([handleErr, [(err.$ptr || (err.$ptr = new ptrType$5(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, err)))]]); _arg = n[0]; _r$2 = reflect.ValueOf(v); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } _arg$1 = _r$2; _r$3 = d[0].unmarshal(_arg, _arg$1); /* */ $s = 2; case 2: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } _r$3; if (d[0].terrors.$length > terrlen[0]) { issues = $subslice(d[0].terrors, terrlen[0]); d[0].terrors = $subslice(d[0].terrors, 0, terrlen[0]); err[0] = new TypeError.ptr(issues); return err[0]; } err[0] = $ifaceNil; return err[0]; /* */ $s = -1; case -1: } 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: $b }; } $f.$ptr = $ptr; $f._arg = _arg; $f._arg$1 = _arg$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f.err = err; $f.issues = issues; $f.v = v; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } }; })(d, n, terrlen)); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } err = _r$2; _tuple = $assertType(err, ptrType$6, true); e = _tuple[0]; ok = _tuple[1]; if (ok) { d[0].terrors = $appendSlice(d[0].terrors, e.Errors); good = false; return good; } if (!($interfaceIsEqual(err, $ifaceNil))) { fail(err); } good = true; return good; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: decoder.ptr.prototype.callUnmarshaler }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._tuple = _tuple; $f.d = d; $f.e = e; $f.err = err; $f.good = good; $f.n = n; $f.ok = ok; $f.terrlen = terrlen; $f.u = u; $f.$s = $s; $f.$r = $r; return $f; }; decoder.prototype.callUnmarshaler = function(n, u) { return this.$val.callUnmarshaler(n, u); }; decoder.ptr.prototype.prepare = function(n, out) { var $ptr, _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, _tmp$8, _tuple, again, d, good, n, newout, ok, out, u, unmarshaled, $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; _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; _tmp$8 = $f._tmp$8; _tuple = $f._tuple; again = $f.again; d = $f.d; good = $f.good; n = $f.n; newout = $f.newout; ok = $f.ok; out = $f.out; u = $f.u; unmarshaled = $f.unmarshaled; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: newout = new reflect.Value.ptr(); unmarshaled = false; good = false; d = this; out = out; if (n.tag === "tag:yaml.org,2002:null" || (n.kind === 8) && n.tag === "" && (n.value === "null" || n.value === "")) { _tmp = out; _tmp$1 = false; _tmp$2 = false; newout = _tmp; unmarshaled = _tmp$1; good = _tmp$2; return [newout, unmarshaled, good]; } again = true; /* while (true) { */ case 1: /* if (!(again)) { break; } */ if(!(again)) { $s = 2; continue; } again = false; /* */ if (out.Kind() === 22) { $s = 3; continue; } /* */ $s = 4; continue; /* if (out.Kind() === 22) { */ case 3: /* */ if (out.IsNil()) { $s = 5; continue; } /* */ $s = 6; continue; /* if (out.IsNil()) { */ case 5: _r$2 = out.Type().Elem(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } _r$3 = reflect.New(_r$2); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } $r = out.Set(_r$3); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 6: _r$4 = out.Elem(); /* */ $s = 10; case 10: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } out = _r$4; again = true; /* } */ case 4: /* */ if (out.CanAddr()) { $s = 11; continue; } /* */ $s = 12; continue; /* if (out.CanAddr()) { */ case 11: _r$5 = out.Addr().Interface(); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } _tuple = $assertType(_r$5, Unmarshaler, true); u = _tuple[0]; ok = _tuple[1]; /* */ if (ok) { $s = 14; continue; } /* */ $s = 15; continue; /* if (ok) { */ case 14: _r$6 = d.callUnmarshaler(n, u); /* */ $s = 16; case 16: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } good = _r$6; _tmp$3 = out; _tmp$4 = true; _tmp$5 = good; newout = _tmp$3; unmarshaled = _tmp$4; good = _tmp$5; return [newout, unmarshaled, good]; /* } */ case 15: /* } */ case 12: /* } */ $s = 1; continue; case 2: _tmp$6 = out; _tmp$7 = false; _tmp$8 = false; newout = _tmp$6; unmarshaled = _tmp$7; good = _tmp$8; return [newout, unmarshaled, good]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: decoder.ptr.prototype.prepare }; } $f.$ptr = $ptr; $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._tmp$8 = _tmp$8; $f._tuple = _tuple; $f.again = again; $f.d = d; $f.good = good; $f.n = n; $f.newout = newout; $f.ok = ok; $f.out = out; $f.u = u; $f.unmarshaled = unmarshaled; $f.$s = $s; $f.$r = $r; return $f; }; decoder.prototype.prepare = function(n, out) { return this.$val.prepare(n, out); }; decoder.ptr.prototype.unmarshal = function(n, out) { var $ptr, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _ref, _ref$1, _tuple, d, good, n, out, unmarshaled, $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; _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; _tuple = $f._tuple; d = $f.d; good = $f.good; n = $f.n; out = $f.out; unmarshaled = $f.unmarshaled; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: good = false; d = this; out = out; _ref = n.kind; /* */ if (_ref === 1) { $s = 1; continue; } /* */ if (_ref === 16) { $s = 2; continue; } /* */ $s = 3; continue; /* if (_ref === 1) { */ case 1: _r$2 = d.document(n, out); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } good = _r$2; return good; $s = 3; continue; /* } else if (_ref === 16) { */ case 2: _r$3 = d.alias(n, out); /* */ $s = 5; case 5: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } good = _r$3; return good; /* } */ case 3: _r$4 = d.prepare(n, out); /* */ $s = 6; case 6: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } _tuple = _r$4; out = _tuple[0]; unmarshaled = _tuple[1]; good = _tuple[2]; if (unmarshaled) { good = good; return good; } _ref$1 = n.kind; /* */ if (_ref$1 === 8) { $s = 7; continue; } /* */ if (_ref$1 === 2) { $s = 8; continue; } /* */ if (_ref$1 === 4) { $s = 9; continue; } /* */ $s = 10; continue; /* if (_ref$1 === 8) { */ case 7: _r$5 = d.scalar(n, out); /* */ $s = 12; case 12: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } good = _r$5; $s = 11; continue; /* } else if (_ref$1 === 2) { */ case 8: _r$6 = d.mapping(n, out); /* */ $s = 13; case 13: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } good = _r$6; $s = 11; continue; /* } else if (_ref$1 === 4) { */ case 9: _r$7 = d.sequence(n, out); /* */ $s = 14; case 14: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } good = _r$7; $s = 11; continue; /* } else { */ case 10: $panic(new $String("internal error: unknown node kind: " + strconv.Itoa(n.kind))); /* } */ case 11: good = good; return good; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: decoder.ptr.prototype.unmarshal }; } $f.$ptr = $ptr; $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._tuple = _tuple; $f.d = d; $f.good = good; $f.n = n; $f.out = out; $f.unmarshaled = unmarshaled; $f.$s = $s; $f.$r = $r; return $f; }; decoder.prototype.unmarshal = function(n, out) { return this.$val.unmarshal(n, out); }; decoder.ptr.prototype.document = function(n, out) { var $ptr, _r$2, d, good, n, out, x$1, $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; d = $f.d; good = $f.good; n = $f.n; out = $f.out; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: good = false; d = this; out = out; /* */ if (n.children.$length === 1) { $s = 1; continue; } /* */ $s = 2; continue; /* if (n.children.$length === 1) { */ case 1: d.doc = n; _r$2 = d.unmarshal((x$1 = n.children, (0 >= x$1.$length ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + 0])), out); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } _r$2; good = true; return good; /* } */ case 2: good = false; return good; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: decoder.ptr.prototype.document }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f.d = d; $f.good = good; $f.n = n; $f.out = out; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f; }; decoder.prototype.document = function(n, out) { return this.$val.document(n, out); }; decoder.ptr.prototype.alias = function(n, out) { var $ptr, _entry, _entry$1, _key$1, _r$2, _tuple, an, d, good, n, ok, out, $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$1 = $f._key$1; _r$2 = $f._r$2; _tuple = $f._tuple; an = $f.an; d = $f.d; good = $f.good; n = $f.n; ok = $f.ok; out = $f.out; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: good = false; d = this; out = out; _tuple = (_entry = d.doc.anchors[n.value], _entry !== undefined ? [_entry.v, true] : [ptrType$4.nil, false]); an = _tuple[0]; ok = _tuple[1]; /* */ if (!ok) { $s = 1; continue; } /* */ $s = 2; continue; /* if (!ok) { */ case 1: $r = failf("unknown anchor '%s' referenced", new sliceType$10([new $String(n.value)])); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 2: /* */ if ((_entry$1 = d.aliases[n.value], _entry$1 !== undefined ? _entry$1.v : false)) { $s = 4; continue; } /* */ $s = 5; continue; /* if ((_entry$1 = d.aliases[n.value], _entry$1 !== undefined ? _entry$1.v : false)) { */ case 4: $r = failf("anchor '%s' value contains itself", new sliceType$10([new $String(n.value)])); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 5: _key$1 = n.value; (d.aliases || $throwRuntimeError("assignment to entry in nil map"))[_key$1] = { k: _key$1, v: true }; _r$2 = d.unmarshal(an, out); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } good = _r$2; delete d.aliases[n.value]; good = good; return good; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: decoder.ptr.prototype.alias }; } $f.$ptr = $ptr; $f._entry = _entry; $f._entry$1 = _entry$1; $f._key$1 = _key$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f.an = an; $f.d = d; $f.good = good; $f.n = n; $f.ok = ok; $f.out = out; $f.$s = $s; $f.$r = $r; return $f; }; decoder.prototype.alias = function(n, out) { return this.$val.alias(n, out); }; resetMap = function(out) { var $ptr, _i, _r$2, _ref, k, out, $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$2 = $f._r$2; _ref = $f._ref; k = $f.k; out = $f.out; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: out = out; _r$2 = out.MapKeys(); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } _ref = _r$2; _i = 0; /* while (true) { */ case 2: /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 3; continue; } k = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]); $r = out.SetMapIndex(k, zeroValue); /* */ $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; case -1: } return; } if ($f === undefined) { $f = { $blk: resetMap }; } $f.$ptr = $ptr; $f._i = _i; $f._r$2 = _r$2; $f._ref = _ref; $f.k = k; $f.out = out; $f.$s = $s; $f.$r = $r; return $f; }; decoder.ptr.prototype.scalar = function(n, out) { var $ptr, _r$10, _r$11, _r$12, _r$13, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, d, d$1, data, elem, err, err$1, err$2, good, n, ok, ok$1, out, resolved, resolved$1, resolved$10, resolved$11, resolved$12, resolved$13, resolved$14, resolved$2, resolved$3, resolved$4, resolved$5, resolved$6, resolved$7, resolved$8, resolved$9, s, tag, u, $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$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; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; d = $f.d; d$1 = $f.d$1; data = $f.data; elem = $f.elem; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; good = $f.good; n = $f.n; ok = $f.ok; ok$1 = $f.ok$1; out = $f.out; resolved = $f.resolved; resolved$1 = $f.resolved$1; resolved$10 = $f.resolved$10; resolved$11 = $f.resolved$11; resolved$12 = $f.resolved$12; resolved$13 = $f.resolved$13; resolved$14 = $f.resolved$14; resolved$2 = $f.resolved$2; resolved$3 = $f.resolved$3; resolved$4 = $f.resolved$4; resolved$5 = $f.resolved$5; resolved$6 = $f.resolved$6; resolved$7 = $f.resolved$7; resolved$8 = $f.resolved$8; resolved$9 = $f.resolved$9; s = $f.s; tag = $f.tag; u = $f.u; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: good = false; d = this; out = out; tag = ""; resolved = $ifaceNil; /* */ if (n.tag === "" && !n.implicit) { $s = 1; continue; } /* */ $s = 2; continue; /* if (n.tag === "" && !n.implicit) { */ case 1: tag = "tag:yaml.org,2002:str"; resolved = new $String(n.value); $s = 3; continue; /* } else { */ case 2: _r$2 = resolve(n.tag, n.value); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } _tuple = _r$2; tag = _tuple[0]; resolved = _tuple[1]; /* */ if (tag === "tag:yaml.org,2002:binary") { $s = 5; continue; } /* */ $s = 6; continue; /* if (tag === "tag:yaml.org,2002:binary") { */ case 5: _r$3 = base64.StdEncoding.DecodeString($assertType(resolved, $String)); /* */ $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; data = _tuple$1[0]; err = _tuple$1[1]; /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 8; continue; } /* */ $s = 9; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 8: $r = failf("!!binary value contains invalid base64 data", new sliceType$10([])); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 9: resolved = new $String($bytesToString(data)); /* } */ case 6: /* } */ case 3: /* */ if ($interfaceIsEqual(resolved, $ifaceNil)) { $s = 11; continue; } /* */ $s = 12; continue; /* if ($interfaceIsEqual(resolved, $ifaceNil)) { */ case 11: /* */ if ((out.Kind() === 21) && !out.CanAddr()) { $s = 13; continue; } /* */ $s = 14; continue; /* if ((out.Kind() === 21) && !out.CanAddr()) { */ case 13: $r = resetMap(out); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $s = 15; continue; /* } else { */ case 14: _r$4 = reflect.Zero(out.Type()); /* */ $s = 17; case 17: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } $r = out.Set(_r$4); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 15: good = true; return good; /* } */ case 12: _tuple$2 = $assertType(resolved, $String, true); s = _tuple$2[0]; ok = _tuple$2[1]; /* */ if (ok && out.CanAddr()) { $s = 19; continue; } /* */ $s = 20; continue; /* if (ok && out.CanAddr()) { */ case 19: _r$5 = out.Addr().Interface(); /* */ $s = 21; case 21: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } _tuple$3 = $assertType(_r$5, encoding.TextUnmarshaler, true); u = _tuple$3[0]; ok$1 = _tuple$3[1]; /* */ if (ok$1) { $s = 22; continue; } /* */ $s = 23; continue; /* if (ok$1) { */ case 22: _r$6 = u.UnmarshalText(new sliceType$1($stringToBytes(s))); /* */ $s = 24; case 24: 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))) { fail(err$1); } good = true; return good; /* } */ case 23: /* } */ case 20: _ref = out.Kind(); /* */ if (_ref === 24) { $s = 25; continue; } /* */ if (_ref === 20) { $s = 26; continue; } /* */ if (_ref === 2 || _ref === 3 || _ref === 4 || _ref === 5 || _ref === 6) { $s = 27; continue; } /* */ if (_ref === 7 || _ref === 8 || _ref === 9 || _ref === 10 || _ref === 11 || _ref === 12) { $s = 28; continue; } /* */ if (_ref === 1) { $s = 29; continue; } /* */ if (_ref === 13 || _ref === 14) { $s = 30; continue; } /* */ if (_ref === 22) { $s = 31; continue; } /* */ $s = 32; continue; /* if (_ref === 24) { */ case 25: if (tag === "tag:yaml.org,2002:binary") { out.SetString($assertType(resolved, $String)); good = true; } else if (!($interfaceIsEqual(resolved, $ifaceNil))) { out.SetString(n.value); good = true; } $s = 32; continue; /* } else if (_ref === 20) { */ case 26: /* */ if ($interfaceIsEqual(resolved, $ifaceNil)) { $s = 33; continue; } /* */ $s = 34; continue; /* if ($interfaceIsEqual(resolved, $ifaceNil)) { */ case 33: _r$7 = reflect.Zero(out.Type()); /* */ $s = 36; case 36: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } $r = out.Set(_r$7); /* */ $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$8 = reflect.ValueOf(resolved); /* */ $s = 38; case 38: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } $r = out.Set(_r$8); /* */ $s = 39; case 39: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 35: good = true; $s = 32; continue; /* } else if (_ref === 2 || _ref === 3 || _ref === 4 || _ref === 5 || _ref === 6) { */ case 27: _ref$1 = resolved; if ($assertType(_ref$1, $Int, true)[1]) { resolved$1 = _ref$1.$val; if (!out.OverflowInt(new $Int64(0, resolved$1))) { out.SetInt(new $Int64(0, resolved$1)); good = true; } } else if ($assertType(_ref$1, $Int64, true)[1]) { resolved$2 = _ref$1.$val; if (!out.OverflowInt(resolved$2)) { out.SetInt(resolved$2); good = true; } } else if ($assertType(_ref$1, $Uint64, true)[1]) { resolved$3 = _ref$1.$val; if ((resolved$3.$high < 2147483647 || (resolved$3.$high === 2147483647 && resolved$3.$low <= 4294967295)) && !out.OverflowInt(new $Int64(resolved$3.$high, resolved$3.$low))) { out.SetInt(new $Int64(resolved$3.$high, resolved$3.$low)); good = true; } } else if ($assertType(_ref$1, $Float64, true)[1]) { resolved$4 = _ref$1.$val; if (resolved$4 <= 9.223372036854776e+18 && !out.OverflowInt(new $Int64(0, resolved$4))) { out.SetInt(new $Int64(0, resolved$4)); good = true; } } else if ($assertType(_ref$1, $String, true)[1]) { resolved$5 = _ref$1.$val; if ($interfaceIsEqual(out.Type(), durationType)) { _tuple$4 = time.ParseDuration(resolved$5); d$1 = _tuple$4[0]; err$2 = _tuple$4[1]; if ($interfaceIsEqual(err$2, $ifaceNil)) { out.SetInt(new $Int64(d$1.$high, d$1.$low)); good = true; } } } $s = 32; continue; /* } else if (_ref === 7 || _ref === 8 || _ref === 9 || _ref === 10 || _ref === 11 || _ref === 12) { */ case 28: _ref$2 = resolved; if ($assertType(_ref$2, $Int, true)[1]) { resolved$6 = _ref$2.$val; if (resolved$6 >= 0 && !out.OverflowUint(new $Uint64(0, resolved$6))) { out.SetUint(new $Uint64(0, resolved$6)); good = true; } } else if ($assertType(_ref$2, $Int64, true)[1]) { resolved$7 = _ref$2.$val; if ((resolved$7.$high > 0 || (resolved$7.$high === 0 && resolved$7.$low >= 0)) && !out.OverflowUint(new $Uint64(resolved$7.$high, resolved$7.$low))) { out.SetUint(new $Uint64(resolved$7.$high, resolved$7.$low)); good = true; } } else if ($assertType(_ref$2, $Uint64, true)[1]) { resolved$8 = _ref$2.$val; if (!out.OverflowUint(resolved$8)) { out.SetUint(resolved$8); good = true; } } else if ($assertType(_ref$2, $Float64, true)[1]) { resolved$9 = _ref$2.$val; if (resolved$9 <= 1.8446744073709552e+19 && !out.OverflowUint(new $Uint64(0, resolved$9))) { out.SetUint(new $Uint64(0, resolved$9)); good = true; } } $s = 32; continue; /* } else if (_ref === 1) { */ case 29: _ref$3 = resolved; if ($assertType(_ref$3, $Bool, true)[1]) { resolved$10 = _ref$3.$val; out.SetBool(resolved$10); good = true; } $s = 32; continue; /* } else if (_ref === 13 || _ref === 14) { */ case 30: _ref$4 = resolved; if ($assertType(_ref$4, $Int, true)[1]) { resolved$11 = _ref$4.$val; out.SetFloat(resolved$11); good = true; } else if ($assertType(_ref$4, $Int64, true)[1]) { resolved$12 = _ref$4.$val; out.SetFloat($flatten64(resolved$12)); good = true; } else if ($assertType(_ref$4, $Uint64, true)[1]) { resolved$13 = _ref$4.$val; out.SetFloat($flatten64(resolved$13)); good = true; } else if ($assertType(_ref$4, $Float64, true)[1]) { resolved$14 = _ref$4.$val; out.SetFloat(resolved$14); good = true; } $s = 32; continue; /* } else if (_ref === 22) { */ case 31: _r$9 = out.Type().Elem(); /* */ $s = 42; case 42: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } /* */ if ($interfaceIsEqual(_r$9, reflect.TypeOf(resolved))) { $s = 40; continue; } /* */ $s = 41; continue; /* if ($interfaceIsEqual(_r$9, reflect.TypeOf(resolved))) { */ case 40: _r$10 = out.Type().Elem(); /* */ $s = 43; case 43: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } _r$11 = reflect.New(_r$10); /* */ $s = 44; case 44: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } elem = _r$11; _r$12 = elem.Elem(); /* */ $s = 45; case 45: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } _r$13 = reflect.ValueOf(resolved); /* */ $s = 46; case 46: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } $r = _r$12.Set(_r$13); /* */ $s = 47; case 47: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = out.Set(elem); /* */ $s = 48; case 48: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } good = true; /* } */ case 41: /* } */ case 32: /* */ if (!good) { $s = 49; continue; } /* */ $s = 50; continue; /* if (!good) { */ case 49: $r = d.terror(n, tag, out); /* */ $s = 51; case 51: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 50: good = good; return good; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: decoder.ptr.prototype.scalar }; } $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$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._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f.d = d; $f.d$1 = d$1; $f.data = data; $f.elem = elem; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.good = good; $f.n = n; $f.ok = ok; $f.ok$1 = ok$1; $f.out = out; $f.resolved = resolved; $f.resolved$1 = resolved$1; $f.resolved$10 = resolved$10; $f.resolved$11 = resolved$11; $f.resolved$12 = resolved$12; $f.resolved$13 = resolved$13; $f.resolved$14 = resolved$14; $f.resolved$2 = resolved$2; $f.resolved$3 = resolved$3; $f.resolved$4 = resolved$4; $f.resolved$5 = resolved$5; $f.resolved$6 = resolved$6; $f.resolved$7 = resolved$7; $f.resolved$8 = resolved$8; $f.resolved$9 = resolved$9; $f.s = s; $f.tag = tag; $f.u = u; $f.$s = $s; $f.$r = $r; return $f; }; decoder.prototype.scalar = function(n, out) { return this.$val.scalar(n, out); }; settableValueOf = function(i) { var $ptr, _r$2, _r$3, _r$4, i, sv, v, $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; _r$3 = $f._r$3; _r$4 = $f._r$4; i = $f.i; sv = $f.sv; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: _r$2 = reflect.ValueOf(i); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } v = _r$2; _r$3 = reflect.New(v.Type()); /* */ $s = 2; case 2: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } _r$4 = _r$3.Elem(); /* */ $s = 3; case 3: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } sv = _r$4; $r = sv.Set(v); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } return sv; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: settableValueOf }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f.i = i; $f.sv = sv; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; }; decoder.ptr.prototype.sequence = function(n, out) { var $ptr, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, d, e, et, good, i, iface, j, l, n, ok, out, x$1, $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; _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; d = $f.d; e = $f.e; et = $f.et; good = $f.good; i = $f.i; iface = $f.iface; j = $f.j; l = $f.l; n = $f.n; ok = $f.ok; out = $f.out; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: good = false; d = this; out = out; l = n.children.$length; iface = new reflect.Value.ptr(); _ref = out.Kind(); /* */ if (_ref === 23) { $s = 1; continue; } /* */ if (_ref === 20) { $s = 2; continue; } /* */ $s = 3; continue; /* if (_ref === 23) { */ case 1: _r$2 = reflect.MakeSlice(out.Type(), l, l); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } $r = out.Set(_r$2); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $s = 4; continue; /* } else if (_ref === 20) { */ case 2: iface = out; _r$3 = settableValueOf($makeSlice(sliceType$10, l)); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } out = _r$3; $s = 4; continue; /* } else { */ case 3: $r = d.terror(n, "tag:yaml.org,2002:seq", out); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } good = false; return good; /* } */ case 4: _r$4 = out.Type().Elem(); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } et = _r$4; j = 0; i = 0; /* while (true) { */ case 10: /* if (!(i < l)) { break; } */ if(!(i < l)) { $s = 11; continue; } _r$5 = reflect.New(et); /* */ $s = 12; case 12: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } _r$6 = _r$5.Elem(); /* */ $s = 13; case 13: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } e = _r$6; _r$7 = d.unmarshal((x$1 = n.children, ((i < 0 || i >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + i])), e); /* */ $s = 14; case 14: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } ok = _r$7; /* */ if (ok) { $s = 15; continue; } /* */ $s = 16; continue; /* if (ok) { */ case 15: _r$8 = out.Index(j); /* */ $s = 17; case 17: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } $r = _r$8.Set(e); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } j = j + (1) >> 0; /* } */ case 16: i = i + (1) >> 0; /* } */ $s = 10; continue; case 11: _r$9 = out.Slice(0, j); /* */ $s = 19; case 19: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } $r = out.Set(_r$9); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* */ if (iface.IsValid()) { $s = 21; continue; } /* */ $s = 22; continue; /* if (iface.IsValid()) { */ case 21: $r = iface.Set(out); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 22: good = true; return good; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: decoder.ptr.prototype.sequence }; } $f.$ptr = $ptr; $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.d = d; $f.e = e; $f.et = et; $f.good = good; $f.i = i; $f.iface = iface; $f.j = j; $f.l = l; $f.n = n; $f.ok = ok; $f.out = out; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f; }; decoder.prototype.sequence = function(n, out) { return this.$val.sequence(n, out); }; decoder.ptr.prototype.mapping = function(n, out) { var $ptr, _arg, _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, _v, d, e, et, good, i, iface, k, kkind, kt, l, mapType$1, n, out, outt, slicev, 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; _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; _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; _v = $f._v; d = $f.d; e = $f.e; et = $f.et; good = $f.good; i = $f.i; iface = $f.iface; k = $f.k; kkind = $f.kkind; kt = $f.kt; l = $f.l; mapType$1 = $f.mapType$1; n = $f.n; out = $f.out; outt = $f.outt; slicev = $f.slicev; 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: good = false; d = this; out = out; _ref = out.Kind(); /* */ if (_ref === 25) { $s = 1; continue; } /* */ if (_ref === 23) { $s = 2; continue; } /* */ if (_ref === 21) { $s = 3; continue; } /* */ if (_ref === 20) { $s = 4; continue; } /* */ $s = 5; continue; /* if (_ref === 25) { */ case 1: _r$2 = d.mappingStruct(n, out); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } good = _r$2; return good; $s = 6; continue; /* } else if (_ref === 23) { */ case 2: _r$3 = d.mappingSlice(n, out); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } good = _r$3; return good; $s = 6; continue; /* } else if (_ref === 21) { */ case 3: $s = 6; continue; /* } else if (_ref === 20) { */ case 4: _r$4 = d.mapType.Kind(); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } /* */ if (_r$4 === 21) { $s = 9; continue; } /* */ $s = 10; continue; /* if (_r$4 === 21) { */ case 9: iface = out; _r$5 = reflect.MakeMap(d.mapType); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } out = _r$5; $r = iface.Set(out); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $s = 11; continue; /* } else { */ case 10: _r$6 = reflect.New(d.mapType); /* */ $s = 15; case 15: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } _r$7 = _r$6.Elem(); /* */ $s = 16; case 16: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } slicev = _r$7; _r$8 = d.mappingSlice(n, slicev); /* */ $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) { $s = 17; continue; } /* */ $s = 18; continue; /* if (!_r$8) { */ case 17: good = false; return good; /* } */ case 18: $r = out.Set(slicev); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } good = true; return good; /* } */ case 11: $s = 6; continue; /* } else { */ case 5: $r = d.terror(n, "tag:yaml.org,2002:map", out); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } good = false; return good; /* } */ case 6: outt = out.Type(); _r$9 = outt.Key(); /* */ $s = 22; case 22: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } kt = _r$9; _r$10 = outt.Elem(); /* */ $s = 23; case 23: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } et = _r$10; mapType$1 = d.mapType; _r$11 = outt.Key(); /* */ $s = 27; case 27: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } if (!($interfaceIsEqual(_r$11, ifaceType))) { _v = false; $s = 26; continue s; } _r$12 = outt.Elem(); /* */ $s = 28; case 28: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } _v = $interfaceIsEqual(_r$12, ifaceType); case 26: /* */ if (_v) { $s = 24; continue; } /* */ $s = 25; continue; /* if (_v) { */ case 24: d.mapType = outt; /* } */ case 25: /* */ if (out.IsNil()) { $s = 29; continue; } /* */ $s = 30; continue; /* if (out.IsNil()) { */ case 29: _r$13 = reflect.MakeMap(outt); /* */ $s = 31; case 31: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } $r = out.Set(_r$13); /* */ $s = 32; case 32: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 30: l = n.children.$length; i = 0; /* while (true) { */ case 33: /* if (!(i < l)) { break; } */ if(!(i < l)) { $s = 34; continue; } /* */ if (isMerge((x$1 = n.children, ((i < 0 || i >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + i])))) { $s = 35; continue; } /* */ $s = 36; continue; /* if (isMerge((x$1 = n.children, ((i < 0 || i >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + i])))) { */ case 35: $r = d.merge((x$2 = n.children, x$3 = i + 1 >> 0, ((x$3 < 0 || x$3 >= x$2.$length) ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + x$3])), out); /* */ $s = 37; case 37: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } i = i + (2) >> 0; /* continue; */ $s = 33; continue; /* } */ case 36: _r$14 = reflect.New(kt); /* */ $s = 38; case 38: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } _r$15 = _r$14.Elem(); /* */ $s = 39; case 39: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } k = _r$15; _r$16 = d.unmarshal((x$4 = n.children, ((i < 0 || i >= x$4.$length) ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + i])), k); /* */ $s = 42; case 42: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } /* */ if (_r$16) { $s = 40; continue; } /* */ $s = 41; continue; /* if (_r$16) { */ case 40: kkind = k.Kind(); /* */ if (kkind === 20) { $s = 43; continue; } /* */ $s = 44; continue; /* if (kkind === 20) { */ case 43: _r$17 = k.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 = _r$17.Kind(); /* */ $s = 46; case 46: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; } kkind = _r$18; /* } */ case 44: /* */ if ((kkind === 21) || (kkind === 23)) { $s = 47; continue; } /* */ $s = 48; continue; /* if ((kkind === 21) || (kkind === 23)) { */ case 47: _r$19 = k.Interface(); /* */ $s = 49; case 49: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; } _arg = _r$19; $r = failf("invalid map key: %#v", new sliceType$10([_arg])); /* */ $s = 50; case 50: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 48: _r$20 = reflect.New(et); /* */ $s = 51; case 51: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; } _r$21 = _r$20.Elem(); /* */ $s = 52; case 52: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; } e = _r$21; _r$22 = d.unmarshal((x$5 = n.children, x$6 = i + 1 >> 0, ((x$6 < 0 || x$6 >= x$5.$length) ? $throwRuntimeError("index out of range") : x$5.$array[x$5.$offset + x$6])), e); /* */ $s = 55; case 55: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } /* */ if (_r$22) { $s = 53; continue; } /* */ $s = 54; continue; /* if (_r$22) { */ case 53: $r = out.SetMapIndex(k, e); /* */ $s = 56; case 56: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 54: /* } */ case 41: i = i + (2) >> 0; /* } */ $s = 33; continue; case 34: d.mapType = mapType$1; good = true; return good; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: decoder.ptr.prototype.mapping }; } $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._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._v = _v; $f.d = d; $f.e = e; $f.et = et; $f.good = good; $f.i = i; $f.iface = iface; $f.k = k; $f.kkind = kkind; $f.kt = kt; $f.l = l; $f.mapType$1 = mapType$1; $f.n = n; $f.out = out; $f.outt = outt; $f.slicev = slicev; $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; }; decoder.prototype.mapping = function(n, out) { return this.$val.mapping(n, out); }; decoder.ptr.prototype.mappingSlice = function(n, out) { var $ptr, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, d, good, i, item, k, l, mapType$1, n, out, outt, slice, v, 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$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; d = $f.d; good = $f.good; i = $f.i; item = $f.item; k = $f.k; l = $f.l; mapType$1 = $f.mapType$1; n = $f.n; out = $f.out; outt = $f.outt; slice = $f.slice; v = $f.v; 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: good = false; d = this; out = out; outt = out.Type(); _r$2 = outt.Elem(); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } /* */ if (!($interfaceIsEqual(_r$2, mapItemType))) { $s = 1; continue; } /* */ $s = 2; continue; /* if (!($interfaceIsEqual(_r$2, mapItemType))) { */ case 1: $r = d.terror(n, "tag:yaml.org,2002:map", out); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } good = false; return good; /* } */ case 2: mapType$1 = d.mapType; d.mapType = outt; slice = sliceType$13.nil; l = n.children.$length; i = 0; /* while (true) { */ case 5: /* if (!(i < l)) { break; } */ if(!(i < l)) { $s = 6; continue; } /* */ if (isMerge((x$1 = n.children, ((i < 0 || i >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + i])))) { $s = 7; continue; } /* */ $s = 8; continue; /* if (isMerge((x$1 = n.children, ((i < 0 || i >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + i])))) { */ case 7: $r = d.merge((x$2 = n.children, x$3 = i + 1 >> 0, ((x$3 < 0 || x$3 >= x$2.$length) ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + x$3])), out); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } i = i + (2) >> 0; /* continue; */ $s = 5; continue; /* } */ case 8: item = new MapItem.ptr($ifaceNil, $ifaceNil); _r$3 = reflect.ValueOf((item.$ptr_Key || (item.$ptr_Key = new ptrType$7(function() { return this.$target.Key; }, function($v) { this.$target.Key = $v; }, item)))); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } _r$4 = _r$3.Elem(); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } k = _r$4; _r$5 = d.unmarshal((x$4 = n.children, ((i < 0 || i >= x$4.$length) ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + i])), k); /* */ $s = 14; case 14: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } /* */ if (_r$5) { $s = 12; continue; } /* */ $s = 13; continue; /* if (_r$5) { */ case 12: _r$6 = reflect.ValueOf((item.$ptr_Value || (item.$ptr_Value = new ptrType$7(function() { return this.$target.Value; }, function($v) { this.$target.Value = $v; }, item)))); /* */ $s = 15; case 15: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } _r$7 = _r$6.Elem(); /* */ $s = 16; case 16: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } v = _r$7; _r$8 = d.unmarshal((x$5 = n.children, x$6 = i + 1 >> 0, ((x$6 < 0 || x$6 >= x$5.$length) ? $throwRuntimeError("index out of range") : x$5.$array[x$5.$offset + x$6])), v); /* */ $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) { $s = 17; continue; } /* */ $s = 18; continue; /* if (_r$8) { */ case 17: slice = $append(slice, item); /* } */ case 18: /* } */ case 13: i = i + (2) >> 0; /* } */ $s = 5; continue; case 6: _r$9 = reflect.ValueOf(slice); /* */ $s = 20; case 20: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } $r = out.Set(_r$9); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } d.mapType = mapType$1; good = true; return good; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: decoder.ptr.prototype.mappingSlice }; } $f.$ptr = $ptr; $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.d = d; $f.good = good; $f.i = i; $f.item = item; $f.k = k; $f.l = l; $f.mapType$1 = mapType$1; $f.n = n; $f.out = out; $f.outt = outt; $f.slice = slice; $f.v = v; $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; }; decoder.prototype.mappingSlice = function(n, out) { return this.$val.mappingSlice(n, out); }; decoder.ptr.prototype.mappingStruct = function(n, out) { var $ptr, _entry, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, d, elemType, err, field, good, i, info, inlineMap, l, n, name, ni, ok, out, sinfo, value, x$1, x$2, 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; _entry = $f._entry; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; d = $f.d; elemType = $f.elemType; err = $f.err; field = $f.field; good = $f.good; i = $f.i; info = $f.info; inlineMap = $f.inlineMap; l = $f.l; n = $f.n; name = $f.name; ni = $f.ni; ok = $f.ok; out = $f.out; sinfo = $f.sinfo; value = $f.value; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: good = false; d = this; out = out; _r$2 = getStructInfo(out.Type()); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } _tuple = _r$2; sinfo = _tuple[0]; err = _tuple[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { $panic(err); } _r$3 = settableValueOf(new $String("")); /* */ $s = 2; case 2: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } name = _r$3; l = n.children.$length; inlineMap = new reflect.Value.ptr(); elemType = $ifaceNil; /* */ if (!((sinfo.InlineMap === -1))) { $s = 3; continue; } /* */ $s = 4; continue; /* if (!((sinfo.InlineMap === -1))) { */ case 3: _r$4 = out.Field(sinfo.InlineMap); /* */ $s = 5; case 5: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } inlineMap = _r$4; _r$5 = reflect.New(inlineMap.Type()); /* */ $s = 6; case 6: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } _r$6 = _r$5.Elem(); /* */ $s = 7; case 7: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } $r = inlineMap.Set(_r$6); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } _r$7 = inlineMap.Type().Elem(); /* */ $s = 9; case 9: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } elemType = _r$7; /* } */ case 4: i = 0; /* while (true) { */ case 10: /* if (!(i < l)) { break; } */ if(!(i < l)) { $s = 11; continue; } ni = (x$1 = n.children, ((i < 0 || i >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + i])); /* */ if (isMerge(ni)) { $s = 12; continue; } /* */ $s = 13; continue; /* if (isMerge(ni)) { */ case 12: $r = d.merge((x$2 = n.children, x$3 = i + 1 >> 0, ((x$3 < 0 || x$3 >= x$2.$length) ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + x$3])), out); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } i = i + (2) >> 0; /* continue; */ $s = 10; continue; /* } */ case 13: _r$8 = d.unmarshal(ni, name); /* */ $s = 17; case 17: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } /* */ if (!_r$8) { $s = 15; continue; } /* */ $s = 16; continue; /* if (!_r$8) { */ case 15: i = i + (2) >> 0; /* continue; */ $s = 10; continue; /* } */ case 16: _r$9 = name.String(); /* */ $s = 18; case 18: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } _tuple$1 = (_entry = sinfo.FieldsMap[_r$9], _entry !== undefined ? [_entry.v, true] : [new fieldInfo.ptr(), false]); info = $clone(_tuple$1[0], fieldInfo); ok = _tuple$1[1]; /* */ if (ok) { $s = 19; continue; } /* */ if (!((sinfo.InlineMap === -1))) { $s = 20; continue; } /* */ $s = 21; continue; /* if (ok) { */ case 19: field = new reflect.Value.ptr(); /* */ if (info.Inline === sliceType$3.nil) { $s = 22; continue; } /* */ $s = 23; continue; /* if (info.Inline === sliceType$3.nil) { */ case 22: _r$10 = out.Field(info.Num); /* */ $s = 25; case 25: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } field = _r$10; $s = 24; continue; /* } else { */ case 23: _r$11 = out.FieldByIndex(info.Inline); /* */ $s = 26; case 26: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } field = _r$11; /* } */ case 24: _r$12 = d.unmarshal((x$4 = n.children, x$5 = i + 1 >> 0, ((x$5 < 0 || x$5 >= x$4.$length) ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + x$5])), field); /* */ $s = 27; case 27: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } _r$12; $s = 21; continue; /* } else if (!((sinfo.InlineMap === -1))) { */ case 20: /* */ if (inlineMap.IsNil()) { $s = 28; continue; } /* */ $s = 29; continue; /* if (inlineMap.IsNil()) { */ case 28: _r$13 = reflect.MakeMap(inlineMap.Type()); /* */ $s = 30; case 30: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } $r = inlineMap.Set(_r$13); /* */ $s = 31; case 31: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 29: _r$14 = reflect.New(elemType); /* */ $s = 32; case 32: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } _r$15 = _r$14.Elem(); /* */ $s = 33; case 33: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } value = _r$15; _r$16 = d.unmarshal((x$6 = n.children, x$7 = i + 1 >> 0, ((x$7 < 0 || x$7 >= x$6.$length) ? $throwRuntimeError("index out of range") : x$6.$array[x$6.$offset + x$7])), value); /* */ $s = 34; case 34: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } _r$16; $r = inlineMap.SetMapIndex(name, value); /* */ $s = 35; case 35: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 21: i = i + (2) >> 0; /* } */ $s = 10; continue; case 11: good = true; return good; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: decoder.ptr.prototype.mappingStruct }; } $f.$ptr = $ptr; $f._entry = _entry; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.d = d; $f.elemType = elemType; $f.err = err; $f.field = field; $f.good = good; $f.i = i; $f.info = info; $f.inlineMap = inlineMap; $f.l = l; $f.n = n; $f.name = name; $f.ni = ni; $f.ok = ok; $f.out = out; $f.sinfo = sinfo; $f.value = value; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.$s = $s; $f.$r = $r; return $f; }; decoder.prototype.mappingStruct = function(n, out) { return this.$val.mappingStruct(n, out); }; failWantMap = 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 = failf("map merge requires map or sequence of maps as the value", new sliceType$10([])); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: failWantMap }; } $f.$ptr = $ptr; $f.$s = $s; $f.$r = $r; return $f; }; decoder.ptr.prototype.merge = function(n, out) { var $ptr, _entry, _entry$1, _r$2, _r$3, _r$4, _ref, _tuple, _tuple$1, an, an$1, d, i, n, ni, ok, ok$1, out, 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; _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; an = $f.an; an$1 = $f.an$1; d = $f.d; i = $f.i; n = $f.n; ni = $f.ni; ok = $f.ok; ok$1 = $f.ok$1; out = $f.out; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: d = this; out = out; _ref = n.kind; /* */ if (_ref === 2) { $s = 1; continue; } /* */ if (_ref === 16) { $s = 2; continue; } /* */ if (_ref === 4) { $s = 3; continue; } /* */ $s = 4; continue; /* if (_ref === 2) { */ case 1: _r$2 = d.unmarshal(n, out); /* */ $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 = 5; continue; /* } else if (_ref === 16) { */ case 2: _tuple = (_entry = d.doc.anchors[n.value], _entry !== undefined ? [_entry.v, true] : [ptrType$4.nil, false]); an = _tuple[0]; ok = _tuple[1]; /* */ if (ok && !((an.kind === 2))) { $s = 7; continue; } /* */ $s = 8; continue; /* if (ok && !((an.kind === 2))) { */ case 7: $r = failWantMap(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 8: _r$3 = d.unmarshal(n, out); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } _r$3; $s = 5; continue; /* } else if (_ref === 4) { */ case 3: i = n.children.$length - 1 >> 0; /* while (true) { */ case 11: /* if (!(i >= 0)) { break; } */ if(!(i >= 0)) { $s = 12; continue; } ni = (x$1 = n.children, ((i < 0 || i >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + i])); /* */ if (ni.kind === 16) { $s = 13; continue; } /* */ if (!((ni.kind === 2))) { $s = 14; continue; } /* */ $s = 15; continue; /* if (ni.kind === 16) { */ case 13: _tuple$1 = (_entry$1 = d.doc.anchors[ni.value], _entry$1 !== undefined ? [_entry$1.v, true] : [ptrType$4.nil, false]); an$1 = _tuple$1[0]; ok$1 = _tuple$1[1]; /* */ if (ok$1 && !((an$1.kind === 2))) { $s = 16; continue; } /* */ $s = 17; continue; /* if (ok$1 && !((an$1.kind === 2))) { */ case 16: $r = failWantMap(); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 17: $s = 15; continue; /* } else if (!((ni.kind === 2))) { */ case 14: $r = failWantMap(); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 15: _r$4 = d.unmarshal(ni, out); /* */ $s = 20; case 20: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } _r$4; i = i - (1) >> 0; /* } */ $s = 11; continue; case 12: $s = 5; continue; /* } else { */ case 4: $r = failWantMap(); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 5: /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: decoder.ptr.prototype.merge }; } $f.$ptr = $ptr; $f._entry = _entry; $f._entry$1 = _entry$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.an = an; $f.an$1 = an$1; $f.d = d; $f.i = i; $f.n = n; $f.ni = ni; $f.ok = ok; $f.ok$1 = ok$1; $f.out = out; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f; }; decoder.prototype.merge = function(n, out) { return this.$val.merge(n, out); }; isMerge = function(n) { var $ptr, n; return (n.kind === 8) && n.value === "<<" && (n.implicit === true || n.tag === "tag:yaml.org,2002:merge"); }; peek_token = function(parser$1) { var $ptr, _r$2, _v, parser$1, 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$2 = $f._r$2; _v = $f._v; parser$1 = $f.parser$1; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: if (parser$1.token_available) { _v = true; $s = 3; continue s; } _r$2 = yaml_parser_fetch_more_tokens(parser$1); /* */ $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; case 3: /* */ if (_v) { $s = 1; continue; } /* */ $s = 2; continue; /* if (_v) { */ case 1: return (x$1 = parser$1.tokens, x$2 = parser$1.tokens_head, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])); /* } */ case 2: return ptrType$10.nil; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: peek_token }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._v = _v; $f.parser$1 = parser$1; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f; }; skip_token = function(parser$1) { var $ptr, parser$1, x$1, x$2; parser$1.token_available = false; parser$1.tokens_parsed = parser$1.tokens_parsed + (1) >> 0; parser$1.stream_end_produced = (x$1 = parser$1.tokens, x$2 = parser$1.tokens_head, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])).typ === 2; parser$1.tokens_head = parser$1.tokens_head + (1) >> 0; }; yaml_parser_parse = function(parser$1, event) { var $ptr, _r$2, event, parser$1, $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; event = $f.event; parser$1 = $f.parser$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: $copy(event, new yaml_event_t.ptr(0, new yaml_mark_t.ptr(), new yaml_mark_t.ptr(), 0, ptrType$3.nil, sliceType.nil, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, false, false, 0), yaml_event_t); if (parser$1.stream_end_produced || !((parser$1.error === 0)) || (parser$1.state === 23)) { return true; } _r$2 = yaml_parser_state_machine(parser$1, event); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } return _r$2; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_parse }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f.event = event; $f.parser$1 = parser$1; $f.$s = $s; $f.$r = $r; return $f; }; yaml_parser_set_parser_error = function(parser$1, problem, problem_mark) { var $ptr, parser$1, problem, problem_mark; problem_mark = $clone(problem_mark, yaml_mark_t); parser$1.error = 4; parser$1.problem = problem; $copy(parser$1.problem_mark, problem_mark, yaml_mark_t); return false; }; yaml_parser_set_parser_error_context = function(parser$1, context, context_mark, problem, problem_mark) { var $ptr, context, context_mark, parser$1, problem, problem_mark; problem_mark = $clone(problem_mark, yaml_mark_t); context_mark = $clone(context_mark, yaml_mark_t); parser$1.error = 4; parser$1.context = context; $copy(parser$1.context_mark, context_mark, yaml_mark_t); parser$1.problem = problem; $copy(parser$1.problem_mark, problem_mark, yaml_mark_t); return false; }; yaml_parser_state_machine = function(parser$1, event) { var $ptr, _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, event, parser$1, $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$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; event = $f.event; parser$1 = $f.parser$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: _ref = parser$1.state; /* */ if (_ref === 0) { $s = 1; continue; } /* */ if (_ref === 1) { $s = 2; continue; } /* */ if (_ref === 2) { $s = 3; continue; } /* */ if (_ref === 3) { $s = 4; continue; } /* */ if (_ref === 4) { $s = 5; continue; } /* */ if (_ref === 5) { $s = 6; continue; } /* */ if (_ref === 6) { $s = 7; continue; } /* */ if (_ref === 7) { $s = 8; continue; } /* */ if (_ref === 8) { $s = 9; continue; } /* */ if (_ref === 9) { $s = 10; continue; } /* */ if (_ref === 10) { $s = 11; continue; } /* */ if (_ref === 11) { $s = 12; continue; } /* */ if (_ref === 12) { $s = 13; continue; } /* */ if (_ref === 13) { $s = 14; continue; } /* */ if (_ref === 14) { $s = 15; continue; } /* */ if (_ref === 15) { $s = 16; continue; } /* */ if (_ref === 16) { $s = 17; continue; } /* */ if (_ref === 17) { $s = 18; continue; } /* */ if (_ref === 18) { $s = 19; continue; } /* */ if (_ref === 19) { $s = 20; continue; } /* */ if (_ref === 20) { $s = 21; continue; } /* */ if (_ref === 21) { $s = 22; continue; } /* */ if (_ref === 22) { $s = 23; continue; } /* */ $s = 24; continue; /* if (_ref === 0) { */ case 1: _r$2 = yaml_parser_parse_stream_start(parser$1, event); /* */ $s = 26; case 26: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } return _r$2; $s = 25; continue; /* } else if (_ref === 1) { */ case 2: _r$3 = yaml_parser_parse_document_start(parser$1, event, true); /* */ $s = 27; case 27: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } return _r$3; $s = 25; continue; /* } else if (_ref === 2) { */ case 3: _r$4 = yaml_parser_parse_document_start(parser$1, event, false); /* */ $s = 28; case 28: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } return _r$4; $s = 25; continue; /* } else if (_ref === 3) { */ case 4: _r$5 = yaml_parser_parse_document_content(parser$1, event); /* */ $s = 29; case 29: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } return _r$5; $s = 25; continue; /* } else if (_ref === 4) { */ case 5: _r$6 = yaml_parser_parse_document_end(parser$1, event); /* */ $s = 30; case 30: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } return _r$6; $s = 25; continue; /* } else if (_ref === 5) { */ case 6: _r$7 = yaml_parser_parse_node(parser$1, event, true, false); /* */ $s = 31; case 31: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } return _r$7; $s = 25; continue; /* } else if (_ref === 6) { */ case 7: _r$8 = yaml_parser_parse_node(parser$1, event, true, true); /* */ $s = 32; case 32: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } return _r$8; $s = 25; continue; /* } else if (_ref === 7) { */ case 8: _r$9 = yaml_parser_parse_node(parser$1, event, false, false); /* */ $s = 33; case 33: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } return _r$9; $s = 25; continue; /* } else if (_ref === 8) { */ case 9: _r$10 = yaml_parser_parse_block_sequence_entry(parser$1, event, true); /* */ $s = 34; case 34: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } return _r$10; $s = 25; continue; /* } else if (_ref === 9) { */ case 10: _r$11 = yaml_parser_parse_block_sequence_entry(parser$1, event, false); /* */ $s = 35; case 35: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } return _r$11; $s = 25; continue; /* } else if (_ref === 10) { */ case 11: _r$12 = yaml_parser_parse_indentless_sequence_entry(parser$1, event); /* */ $s = 36; case 36: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } return _r$12; $s = 25; continue; /* } else if (_ref === 11) { */ case 12: _r$13 = yaml_parser_parse_block_mapping_key(parser$1, event, true); /* */ $s = 37; case 37: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } return _r$13; $s = 25; continue; /* } else if (_ref === 12) { */ case 13: _r$14 = yaml_parser_parse_block_mapping_key(parser$1, event, false); /* */ $s = 38; case 38: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } return _r$14; $s = 25; continue; /* } else if (_ref === 13) { */ case 14: _r$15 = yaml_parser_parse_block_mapping_value(parser$1, event); /* */ $s = 39; case 39: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } return _r$15; $s = 25; continue; /* } else if (_ref === 14) { */ case 15: _r$16 = yaml_parser_parse_flow_sequence_entry(parser$1, event, true); /* */ $s = 40; case 40: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } return _r$16; $s = 25; continue; /* } else if (_ref === 15) { */ case 16: _r$17 = yaml_parser_parse_flow_sequence_entry(parser$1, event, false); /* */ $s = 41; case 41: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } return _r$17; $s = 25; continue; /* } else if (_ref === 16) { */ case 17: _r$18 = yaml_parser_parse_flow_sequence_entry_mapping_key(parser$1, event); /* */ $s = 42; case 42: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; } return _r$18; $s = 25; continue; /* } else if (_ref === 17) { */ case 18: _r$19 = yaml_parser_parse_flow_sequence_entry_mapping_value(parser$1, event); /* */ $s = 43; case 43: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; } return _r$19; $s = 25; continue; /* } else if (_ref === 18) { */ case 19: _r$20 = yaml_parser_parse_flow_sequence_entry_mapping_end(parser$1, event); /* */ $s = 44; case 44: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; } return _r$20; $s = 25; continue; /* } else if (_ref === 19) { */ case 20: _r$21 = yaml_parser_parse_flow_mapping_key(parser$1, event, true); /* */ $s = 45; case 45: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; } return _r$21; $s = 25; continue; /* } else if (_ref === 20) { */ case 21: _r$22 = yaml_parser_parse_flow_mapping_key(parser$1, event, false); /* */ $s = 46; case 46: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } return _r$22; $s = 25; continue; /* } else if (_ref === 21) { */ case 22: _r$23 = yaml_parser_parse_flow_mapping_value(parser$1, event, false); /* */ $s = 47; case 47: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } return _r$23; $s = 25; continue; /* } else if (_ref === 22) { */ case 23: _r$24 = yaml_parser_parse_flow_mapping_value(parser$1, event, true); /* */ $s = 48; case 48: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } return _r$24; $s = 25; continue; /* } else { */ case 24: $panic(new $String("invalid parser state")); /* } */ case 25: return false; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_state_machine }; } $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$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.event = event; $f.parser$1 = parser$1; $f.$s = $s; $f.$r = $r; return $f; }; yaml_parser_parse_stream_start = function(parser$1, event) { var $ptr, _r$2, event, parser$1, token, $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; event = $f.event; parser$1 = $f.parser$1; token = $f.token; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: _r$2 = peek_token(parser$1); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } token = _r$2; if (token === ptrType$10.nil) { return false; } if (!((token.typ === 1))) { return yaml_parser_set_parser_error(parser$1, "did not find expected ", token.start_mark); } parser$1.state = 1; $copy(event, new yaml_event_t.ptr(1, $clone(token.start_mark, yaml_mark_t), $clone(token.end_mark, yaml_mark_t), token.encoding, ptrType$3.nil, sliceType.nil, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, false, false, 0), yaml_event_t); skip_token(parser$1); return true; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_parse_stream_start }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f.event = event; $f.parser$1 = parser$1; $f.token = token; $f.$s = $s; $f.$r = $r; return $f; }; yaml_parser_parse_document_start = function(parser$1, event, implicit) { var $ptr, _r$2, _r$3, _r$4, _r$5, _r$6, end_mark, event, implicit, parser$1, start_mark, tag_directives, token, version_directive, $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; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; end_mark = $f.end_mark; event = $f.event; implicit = $f.implicit; parser$1 = $f.parser$1; start_mark = $f.start_mark; tag_directives = $f.tag_directives; token = $f.token; version_directive = $f.version_directive; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: tag_directives = [tag_directives]; version_directive = [version_directive]; _r$2 = peek_token(parser$1); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } token = _r$2; if (token === ptrType$10.nil) { return false; } /* */ if (!implicit) { $s = 2; continue; } /* */ $s = 3; continue; /* if (!implicit) { */ case 2: /* while (true) { */ case 4: /* if (!(token.typ === 6)) { break; } */ if(!(token.typ === 6)) { $s = 5; continue; } skip_token(parser$1); _r$3 = peek_token(parser$1); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } token = _r$3; if (token === ptrType$10.nil) { return false; } /* } */ $s = 4; continue; case 5: /* } */ case 3: /* */ if (implicit && !((token.typ === 3)) && !((token.typ === 4)) && !((token.typ === 5)) && !((token.typ === 2))) { $s = 7; continue; } /* */ if (!((token.typ === 2))) { $s = 8; continue; } /* */ $s = 9; continue; /* if (implicit && !((token.typ === 3)) && !((token.typ === 4)) && !((token.typ === 5)) && !((token.typ === 2))) { */ case 7: _r$4 = yaml_parser_process_directives(parser$1, ptrType$11.nil, ptrType$12.nil); /* */ $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) { $s = 11; continue; } /* */ $s = 12; continue; /* if (!_r$4) { */ case 11: return false; /* } */ case 12: parser$1.states = $append(parser$1.states, 4); parser$1.state = 5; $copy(event, new yaml_event_t.ptr(3, $clone(token.start_mark, yaml_mark_t), $clone(token.end_mark, yaml_mark_t), 0, ptrType$3.nil, sliceType.nil, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, false, false, 0), yaml_event_t); $s = 10; continue; /* } else if (!((token.typ === 2))) { */ case 8: version_directive[0] = ptrType$3.nil; tag_directives[0] = sliceType.nil; start_mark = $clone(token.start_mark, yaml_mark_t); _r$5 = yaml_parser_process_directives(parser$1, (version_directive.$ptr || (version_directive.$ptr = new ptrType$11(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, version_directive))), (tag_directives.$ptr || (tag_directives.$ptr = new ptrType$12(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, tag_directives)))); /* */ $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: return false; /* } */ case 15: _r$6 = peek_token(parser$1); /* */ $s = 17; case 17: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } token = _r$6; if (token === ptrType$10.nil) { return false; } if (!((token.typ === 5))) { yaml_parser_set_parser_error(parser$1, "did not find expected ", token.start_mark); return false; } parser$1.states = $append(parser$1.states, 4); parser$1.state = 3; end_mark = $clone(token.end_mark, yaml_mark_t); $copy(event, new yaml_event_t.ptr(3, $clone(start_mark, yaml_mark_t), $clone(end_mark, yaml_mark_t), 0, version_directive[0], tag_directives[0], sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, false, false, 0), yaml_event_t); skip_token(parser$1); $s = 10; continue; /* } else { */ case 9: parser$1.state = 23; $copy(event, new yaml_event_t.ptr(2, $clone(token.start_mark, yaml_mark_t), $clone(token.end_mark, yaml_mark_t), 0, ptrType$3.nil, sliceType.nil, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, false, false, 0), yaml_event_t); skip_token(parser$1); /* } */ case 10: return true; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_parse_document_start }; } $f.$ptr = $ptr; $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.end_mark = end_mark; $f.event = event; $f.implicit = implicit; $f.parser$1 = parser$1; $f.start_mark = start_mark; $f.tag_directives = tag_directives; $f.token = token; $f.version_directive = version_directive; $f.$s = $s; $f.$r = $r; return $f; }; yaml_parser_parse_document_content = function(parser$1, event) { var $ptr, _r$2, _r$3, event, parser$1, token, 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$2 = $f._r$2; _r$3 = $f._r$3; event = $f.event; parser$1 = $f.parser$1; token = $f.token; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: _r$2 = peek_token(parser$1); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } token = _r$2; if (token === ptrType$10.nil) { return false; } if ((token.typ === 3) || (token.typ === 4) || (token.typ === 5) || (token.typ === 6) || (token.typ === 2)) { parser$1.state = (x$1 = parser$1.states, x$2 = parser$1.states.$length - 1 >> 0, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])); parser$1.states = $subslice(parser$1.states, 0, (parser$1.states.$length - 1 >> 0)); return yaml_parser_process_empty_scalar(parser$1, event, token.start_mark); } _r$3 = yaml_parser_parse_node(parser$1, event, true, false); /* */ $s = 2; case 2: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } return _r$3; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_parse_document_content }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f.event = event; $f.parser$1 = parser$1; $f.token = token; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f; }; yaml_parser_parse_document_end = function(parser$1, event) { var $ptr, _r$2, end_mark, event, implicit, parser$1, start_mark, token, $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; end_mark = $f.end_mark; event = $f.event; implicit = $f.implicit; parser$1 = $f.parser$1; start_mark = $f.start_mark; token = $f.token; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: _r$2 = peek_token(parser$1); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } token = _r$2; if (token === ptrType$10.nil) { return false; } start_mark = $clone(token.start_mark, yaml_mark_t); end_mark = $clone(token.start_mark, yaml_mark_t); implicit = true; if (token.typ === 6) { $copy(end_mark, token.end_mark, yaml_mark_t); skip_token(parser$1); implicit = false; } parser$1.tag_directives = $subslice(parser$1.tag_directives, 0, 0); parser$1.state = 2; $copy(event, new yaml_event_t.ptr(4, $clone(start_mark, yaml_mark_t), $clone(end_mark, yaml_mark_t), 0, ptrType$3.nil, sliceType.nil, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, implicit, false, 0), yaml_event_t); return true; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_parse_document_end }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f.end_mark = end_mark; $f.event = event; $f.implicit = implicit; $f.parser$1 = parser$1; $f.start_mark = start_mark; $f.token = token; $f.$s = $s; $f.$r = $r; return $f; }; yaml_parser_parse_node = function(parser$1, event, block, indentless_sequence) { var $ptr, _i, _r$2, _r$3, _r$4, _r$5, _r$6, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, anchor, block, context, end_mark, event, i, implicit, indentless_sequence, parser$1, plain_implicit, quoted_implicit, start_mark, tag, tag_handle, tag_mark, tag_suffix, tag_token, token, 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; _i = $f._i; _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$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; anchor = $f.anchor; block = $f.block; context = $f.context; end_mark = $f.end_mark; event = $f.event; i = $f.i; implicit = $f.implicit; indentless_sequence = $f.indentless_sequence; parser$1 = $f.parser$1; plain_implicit = $f.plain_implicit; quoted_implicit = $f.quoted_implicit; start_mark = $f.start_mark; tag = $f.tag; tag_handle = $f.tag_handle; tag_mark = $f.tag_mark; tag_suffix = $f.tag_suffix; tag_token = $f.tag_token; token = $f.token; 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: _r$2 = peek_token(parser$1); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } token = _r$2; if (token === ptrType$10.nil) { return false; } if (token.typ === 18) { parser$1.state = (x$1 = parser$1.states, x$2 = parser$1.states.$length - 1 >> 0, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])); parser$1.states = $subslice(parser$1.states, 0, (parser$1.states.$length - 1 >> 0)); $copy(event, new yaml_event_t.ptr(5, $clone(token.start_mark, yaml_mark_t), $clone(token.end_mark, yaml_mark_t), 0, ptrType$3.nil, sliceType.nil, token.value, sliceType$1.nil, sliceType$1.nil, false, false, 0), yaml_event_t); skip_token(parser$1); return true; } start_mark = $clone(token.start_mark, yaml_mark_t); end_mark = $clone(token.start_mark, yaml_mark_t); tag_token = false; _tmp = sliceType$1.nil; _tmp$1 = sliceType$1.nil; _tmp$2 = sliceType$1.nil; tag_handle = _tmp; tag_suffix = _tmp$1; anchor = _tmp$2; tag_mark = $clone(new yaml_mark_t.ptr(), yaml_mark_t); /* */ if (token.typ === 19) { $s = 2; continue; } /* */ if (token.typ === 20) { $s = 3; continue; } /* */ $s = 4; continue; /* if (token.typ === 19) { */ case 2: anchor = token.value; $copy(start_mark, token.start_mark, yaml_mark_t); $copy(end_mark, token.end_mark, yaml_mark_t); skip_token(parser$1); _r$3 = peek_token(parser$1); /* */ $s = 5; case 5: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } token = _r$3; if (token === ptrType$10.nil) { return false; } /* */ if (token.typ === 20) { $s = 6; continue; } /* */ $s = 7; continue; /* if (token.typ === 20) { */ case 6: tag_token = true; tag_handle = token.value; tag_suffix = token.suffix; $copy(tag_mark, token.start_mark, yaml_mark_t); $copy(end_mark, token.end_mark, yaml_mark_t); skip_token(parser$1); _r$4 = peek_token(parser$1); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } token = _r$4; if (token === ptrType$10.nil) { return false; } /* } */ case 7: $s = 4; continue; /* } else if (token.typ === 20) { */ case 3: tag_token = true; tag_handle = token.value; tag_suffix = token.suffix; $copy(start_mark, token.start_mark, yaml_mark_t); $copy(tag_mark, token.start_mark, yaml_mark_t); $copy(end_mark, token.end_mark, yaml_mark_t); skip_token(parser$1); _r$5 = peek_token(parser$1); /* */ $s = 9; case 9: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } token = _r$5; if (token === ptrType$10.nil) { return false; } /* */ if (token.typ === 19) { $s = 10; continue; } /* */ $s = 11; continue; /* if (token.typ === 19) { */ case 10: anchor = token.value; $copy(end_mark, token.end_mark, yaml_mark_t); skip_token(parser$1); _r$6 = peek_token(parser$1); /* */ $s = 12; case 12: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } token = _r$6; if (token === ptrType$10.nil) { return false; } /* } */ case 11: /* } */ case 4: tag = sliceType$1.nil; if (tag_token) { if (tag_handle.$length === 0) { tag = tag_suffix; tag_suffix = sliceType$1.nil; } else { _ref = parser$1.tag_directives; _i = 0; while (true) { if (!(_i < _ref.$length)) { break; } i = _i; if (bytes.Equal((x$3 = parser$1.tag_directives, ((i < 0 || i >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + i])).handle, tag_handle)) { tag = $appendSlice(sliceType$1.nil, (x$4 = parser$1.tag_directives, ((i < 0 || i >= x$4.$length) ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + i])).prefix); tag = $appendSlice(tag, tag_suffix); break; } _i++; } if (tag.$length === 0) { yaml_parser_set_parser_error_context(parser$1, "while parsing a node", start_mark, "found undefined tag handle", tag_mark); return false; } } } implicit = tag.$length === 0; if (indentless_sequence && (token.typ === 14)) { $copy(end_mark, token.end_mark, yaml_mark_t); parser$1.state = 10; $copy(event, new yaml_event_t.ptr(7, $clone(start_mark, yaml_mark_t), $clone(end_mark, yaml_mark_t), 0, ptrType$3.nil, sliceType.nil, anchor, tag, sliceType$1.nil, implicit, false, 1), yaml_event_t); return true; } if (token.typ === 21) { _tmp$3 = false; _tmp$4 = false; plain_implicit = _tmp$3; quoted_implicit = _tmp$4; $copy(end_mark, token.end_mark, yaml_mark_t); if (((tag.$length === 0) && (token.style === 1)) || ((tag.$length === 1) && ((0 >= tag.$length ? $throwRuntimeError("index out of range") : tag.$array[tag.$offset + 0]) === 33))) { plain_implicit = true; } else if (tag.$length === 0) { quoted_implicit = true; } parser$1.state = (x$5 = parser$1.states, x$6 = parser$1.states.$length - 1 >> 0, ((x$6 < 0 || x$6 >= x$5.$length) ? $throwRuntimeError("index out of range") : x$5.$array[x$5.$offset + x$6])); parser$1.states = $subslice(parser$1.states, 0, (parser$1.states.$length - 1 >> 0)); $copy(event, new yaml_event_t.ptr(6, $clone(start_mark, yaml_mark_t), $clone(end_mark, yaml_mark_t), 0, ptrType$3.nil, sliceType.nil, anchor, tag, token.value, plain_implicit, quoted_implicit, (token.style << 24 >> 24)), yaml_event_t); skip_token(parser$1); return true; } if (token.typ === 10) { $copy(end_mark, token.end_mark, yaml_mark_t); parser$1.state = 14; $copy(event, new yaml_event_t.ptr(7, $clone(start_mark, yaml_mark_t), $clone(end_mark, yaml_mark_t), 0, ptrType$3.nil, sliceType.nil, anchor, tag, sliceType$1.nil, implicit, false, 2), yaml_event_t); return true; } if (token.typ === 12) { $copy(end_mark, token.end_mark, yaml_mark_t); parser$1.state = 19; $copy(event, new yaml_event_t.ptr(9, $clone(start_mark, yaml_mark_t), $clone(end_mark, yaml_mark_t), 0, ptrType$3.nil, sliceType.nil, anchor, tag, sliceType$1.nil, implicit, false, 2), yaml_event_t); return true; } if (block && (token.typ === 7)) { $copy(end_mark, token.end_mark, yaml_mark_t); parser$1.state = 8; $copy(event, new yaml_event_t.ptr(7, $clone(start_mark, yaml_mark_t), $clone(end_mark, yaml_mark_t), 0, ptrType$3.nil, sliceType.nil, anchor, tag, sliceType$1.nil, implicit, false, 1), yaml_event_t); return true; } if (block && (token.typ === 8)) { $copy(end_mark, token.end_mark, yaml_mark_t); parser$1.state = 11; $copy(event, new yaml_event_t.ptr(9, $clone(start_mark, yaml_mark_t), $clone(end_mark, yaml_mark_t), 0, ptrType$3.nil, sliceType.nil, anchor, tag, sliceType$1.nil, implicit, false, 1), yaml_event_t); return true; } if (anchor.$length > 0 || tag.$length > 0) { parser$1.state = (x$7 = parser$1.states, x$8 = parser$1.states.$length - 1 >> 0, ((x$8 < 0 || x$8 >= x$7.$length) ? $throwRuntimeError("index out of range") : x$7.$array[x$7.$offset + x$8])); parser$1.states = $subslice(parser$1.states, 0, (parser$1.states.$length - 1 >> 0)); $copy(event, new yaml_event_t.ptr(6, $clone(start_mark, yaml_mark_t), $clone(end_mark, yaml_mark_t), 0, ptrType$3.nil, sliceType.nil, anchor, tag, sliceType$1.nil, implicit, false, 1), yaml_event_t); return true; } context = "while parsing a flow node"; if (block) { context = "while parsing a block node"; } yaml_parser_set_parser_error_context(parser$1, context, start_mark, "did not find expected node content", token.start_mark); return false; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_parse_node }; } $f.$ptr = $ptr; $f._i = _i; $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$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f.anchor = anchor; $f.block = block; $f.context = context; $f.end_mark = end_mark; $f.event = event; $f.i = i; $f.implicit = implicit; $f.indentless_sequence = indentless_sequence; $f.parser$1 = parser$1; $f.plain_implicit = plain_implicit; $f.quoted_implicit = quoted_implicit; $f.start_mark = start_mark; $f.tag = tag; $f.tag_handle = tag_handle; $f.tag_mark = tag_mark; $f.tag_suffix = tag_suffix; $f.tag_token = tag_token; $f.token = token; $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; }; yaml_parser_parse_block_sequence_entry = function(parser$1, event, first) { var $ptr, _r$2, _r$3, _r$4, _r$5, context_mark, event, first, mark, parser$1, token, token$1, 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$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; context_mark = $f.context_mark; event = $f.event; first = $f.first; mark = $f.mark; parser$1 = $f.parser$1; token = $f.token; token$1 = $f.token$1; 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: /* */ if (first) { $s = 1; continue; } /* */ $s = 2; continue; /* if (first) { */ case 1: _r$2 = peek_token(parser$1); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } token = _r$2; parser$1.marks = $append(parser$1.marks, token.start_mark); skip_token(parser$1); /* } */ case 2: _r$3 = peek_token(parser$1); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } token$1 = _r$3; if (token$1 === ptrType$10.nil) { return false; } /* */ if (token$1.typ === 14) { $s = 5; continue; } /* */ $s = 6; continue; /* if (token$1.typ === 14) { */ case 5: mark = $clone(token$1.end_mark, yaml_mark_t); skip_token(parser$1); _r$4 = peek_token(parser$1); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } token$1 = _r$4; if (token$1 === ptrType$10.nil) { return false; } /* */ if (!((token$1.typ === 14)) && !((token$1.typ === 9))) { $s = 8; continue; } /* */ $s = 9; continue; /* if (!((token$1.typ === 14)) && !((token$1.typ === 9))) { */ case 8: parser$1.states = $append(parser$1.states, 9); _r$5 = yaml_parser_parse_node(parser$1, event, true, false); /* */ $s = 11; case 11: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } return _r$5; $s = 10; continue; /* } else { */ case 9: parser$1.state = 9; return yaml_parser_process_empty_scalar(parser$1, event, mark); /* } */ case 10: /* } */ case 6: if (token$1.typ === 9) { parser$1.state = (x$1 = parser$1.states, x$2 = parser$1.states.$length - 1 >> 0, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])); parser$1.states = $subslice(parser$1.states, 0, (parser$1.states.$length - 1 >> 0)); parser$1.marks = $subslice(parser$1.marks, 0, (parser$1.marks.$length - 1 >> 0)); $copy(event, new yaml_event_t.ptr(8, $clone(token$1.start_mark, yaml_mark_t), $clone(token$1.end_mark, yaml_mark_t), 0, ptrType$3.nil, sliceType.nil, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, false, false, 0), yaml_event_t); skip_token(parser$1); return true; } context_mark = $clone((x$3 = parser$1.marks, x$4 = parser$1.marks.$length - 1 >> 0, ((x$4 < 0 || x$4 >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + x$4])), yaml_mark_t); parser$1.marks = $subslice(parser$1.marks, 0, (parser$1.marks.$length - 1 >> 0)); return yaml_parser_set_parser_error_context(parser$1, "while parsing a block collection", context_mark, "did not find expected '-' indicator", token$1.start_mark); /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_parse_block_sequence_entry }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f.context_mark = context_mark; $f.event = event; $f.first = first; $f.mark = mark; $f.parser$1 = parser$1; $f.token = token; $f.token$1 = token$1; $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; }; yaml_parser_parse_indentless_sequence_entry = function(parser$1, event) { var $ptr, _r$2, _r$3, _r$4, event, mark, parser$1, token, 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$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; event = $f.event; mark = $f.mark; parser$1 = $f.parser$1; token = $f.token; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: _r$2 = peek_token(parser$1); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } token = _r$2; if (token === ptrType$10.nil) { return false; } /* */ if (token.typ === 14) { $s = 2; continue; } /* */ $s = 3; continue; /* if (token.typ === 14) { */ case 2: mark = $clone(token.end_mark, yaml_mark_t); skip_token(parser$1); _r$3 = peek_token(parser$1); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } token = _r$3; if (token === ptrType$10.nil) { return false; } /* */ if (!((token.typ === 14)) && !((token.typ === 16)) && !((token.typ === 17)) && !((token.typ === 9))) { $s = 5; continue; } /* */ $s = 6; continue; /* if (!((token.typ === 14)) && !((token.typ === 16)) && !((token.typ === 17)) && !((token.typ === 9))) { */ case 5: parser$1.states = $append(parser$1.states, 10); _r$4 = yaml_parser_parse_node(parser$1, event, true, false); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } return _r$4; /* } */ case 6: parser$1.state = 10; return yaml_parser_process_empty_scalar(parser$1, event, mark); /* } */ case 3: parser$1.state = (x$1 = parser$1.states, x$2 = parser$1.states.$length - 1 >> 0, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])); parser$1.states = $subslice(parser$1.states, 0, (parser$1.states.$length - 1 >> 0)); $copy(event, new yaml_event_t.ptr(8, $clone(token.start_mark, yaml_mark_t), $clone(token.start_mark, yaml_mark_t), 0, ptrType$3.nil, sliceType.nil, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, false, false, 0), yaml_event_t); return true; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_parse_indentless_sequence_entry }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f.event = event; $f.mark = mark; $f.parser$1 = parser$1; $f.token = token; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f; }; yaml_parser_parse_block_mapping_key = function(parser$1, event, first) { var $ptr, _r$2, _r$3, _r$4, _r$5, context_mark, event, first, mark, parser$1, token, token$1, 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$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; context_mark = $f.context_mark; event = $f.event; first = $f.first; mark = $f.mark; parser$1 = $f.parser$1; token = $f.token; token$1 = $f.token$1; 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: /* */ if (first) { $s = 1; continue; } /* */ $s = 2; continue; /* if (first) { */ case 1: _r$2 = peek_token(parser$1); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } token = _r$2; parser$1.marks = $append(parser$1.marks, token.start_mark); skip_token(parser$1); /* } */ case 2: _r$3 = peek_token(parser$1); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } token$1 = _r$3; if (token$1 === ptrType$10.nil) { return false; } /* */ if (token$1.typ === 16) { $s = 5; continue; } /* */ if (token$1.typ === 9) { $s = 6; continue; } /* */ $s = 7; continue; /* if (token$1.typ === 16) { */ case 5: mark = $clone(token$1.end_mark, yaml_mark_t); skip_token(parser$1); _r$4 = peek_token(parser$1); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } token$1 = _r$4; if (token$1 === ptrType$10.nil) { return false; } /* */ if (!((token$1.typ === 16)) && !((token$1.typ === 17)) && !((token$1.typ === 9))) { $s = 9; continue; } /* */ $s = 10; continue; /* if (!((token$1.typ === 16)) && !((token$1.typ === 17)) && !((token$1.typ === 9))) { */ case 9: parser$1.states = $append(parser$1.states, 13); _r$5 = yaml_parser_parse_node(parser$1, event, true, true); /* */ $s = 12; case 12: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } return _r$5; $s = 11; continue; /* } else { */ case 10: parser$1.state = 13; return yaml_parser_process_empty_scalar(parser$1, event, mark); /* } */ case 11: $s = 7; continue; /* } else if (token$1.typ === 9) { */ case 6: parser$1.state = (x$1 = parser$1.states, x$2 = parser$1.states.$length - 1 >> 0, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])); parser$1.states = $subslice(parser$1.states, 0, (parser$1.states.$length - 1 >> 0)); parser$1.marks = $subslice(parser$1.marks, 0, (parser$1.marks.$length - 1 >> 0)); $copy(event, new yaml_event_t.ptr(10, $clone(token$1.start_mark, yaml_mark_t), $clone(token$1.end_mark, yaml_mark_t), 0, ptrType$3.nil, sliceType.nil, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, false, false, 0), yaml_event_t); skip_token(parser$1); return true; /* } */ case 7: context_mark = $clone((x$3 = parser$1.marks, x$4 = parser$1.marks.$length - 1 >> 0, ((x$4 < 0 || x$4 >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + x$4])), yaml_mark_t); parser$1.marks = $subslice(parser$1.marks, 0, (parser$1.marks.$length - 1 >> 0)); return yaml_parser_set_parser_error_context(parser$1, "while parsing a block mapping", context_mark, "did not find expected key", token$1.start_mark); /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_parse_block_mapping_key }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f.context_mark = context_mark; $f.event = event; $f.first = first; $f.mark = mark; $f.parser$1 = parser$1; $f.token = token; $f.token$1 = token$1; $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; }; yaml_parser_parse_block_mapping_value = function(parser$1, event) { var $ptr, _r$2, _r$3, _r$4, event, mark, parser$1, token, $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; _r$3 = $f._r$3; _r$4 = $f._r$4; event = $f.event; mark = $f.mark; parser$1 = $f.parser$1; token = $f.token; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: _r$2 = peek_token(parser$1); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } token = _r$2; if (token === ptrType$10.nil) { return false; } /* */ if (token.typ === 17) { $s = 2; continue; } /* */ $s = 3; continue; /* if (token.typ === 17) { */ case 2: mark = $clone(token.end_mark, yaml_mark_t); skip_token(parser$1); _r$3 = peek_token(parser$1); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } token = _r$3; if (token === ptrType$10.nil) { return false; } /* */ if (!((token.typ === 16)) && !((token.typ === 17)) && !((token.typ === 9))) { $s = 5; continue; } /* */ $s = 6; continue; /* if (!((token.typ === 16)) && !((token.typ === 17)) && !((token.typ === 9))) { */ case 5: parser$1.states = $append(parser$1.states, 12); _r$4 = yaml_parser_parse_node(parser$1, event, true, true); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } return _r$4; /* } */ case 6: parser$1.state = 12; return yaml_parser_process_empty_scalar(parser$1, event, mark); /* } */ case 3: parser$1.state = 12; return yaml_parser_process_empty_scalar(parser$1, event, token.start_mark); /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_parse_block_mapping_value }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f.event = event; $f.mark = mark; $f.parser$1 = parser$1; $f.token = token; $f.$s = $s; $f.$r = $r; return $f; }; yaml_parser_parse_flow_sequence_entry = function(parser$1, event, first) { var $ptr, _r$2, _r$3, _r$4, _r$5, context_mark, event, first, parser$1, token, token$1, 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$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; context_mark = $f.context_mark; event = $f.event; first = $f.first; parser$1 = $f.parser$1; token = $f.token; token$1 = $f.token$1; 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: /* */ if (first) { $s = 1; continue; } /* */ $s = 2; continue; /* if (first) { */ case 1: _r$2 = peek_token(parser$1); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } token = _r$2; parser$1.marks = $append(parser$1.marks, token.start_mark); skip_token(parser$1); /* } */ case 2: _r$3 = peek_token(parser$1); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } token$1 = _r$3; if (token$1 === ptrType$10.nil) { return false; } /* */ if (!((token$1.typ === 11))) { $s = 5; continue; } /* */ $s = 6; continue; /* if (!((token$1.typ === 11))) { */ case 5: /* */ if (!first) { $s = 7; continue; } /* */ $s = 8; continue; /* if (!first) { */ case 7: /* */ if (token$1.typ === 15) { $s = 9; continue; } /* */ $s = 10; continue; /* if (token$1.typ === 15) { */ case 9: skip_token(parser$1); _r$4 = peek_token(parser$1); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } token$1 = _r$4; if (token$1 === ptrType$10.nil) { return false; } $s = 11; continue; /* } else { */ case 10: context_mark = $clone((x$1 = parser$1.marks, x$2 = parser$1.marks.$length - 1 >> 0, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])), yaml_mark_t); parser$1.marks = $subslice(parser$1.marks, 0, (parser$1.marks.$length - 1 >> 0)); return yaml_parser_set_parser_error_context(parser$1, "while parsing a flow sequence", context_mark, "did not find expected ',' or ']'", token$1.start_mark); /* } */ case 11: /* } */ case 8: /* */ if (token$1.typ === 16) { $s = 13; continue; } /* */ if (!((token$1.typ === 11))) { $s = 14; continue; } /* */ $s = 15; continue; /* if (token$1.typ === 16) { */ case 13: parser$1.state = 16; $copy(event, new yaml_event_t.ptr(9, $clone(token$1.start_mark, yaml_mark_t), $clone(token$1.end_mark, yaml_mark_t), 0, ptrType$3.nil, sliceType.nil, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, true, false, 2), yaml_event_t); skip_token(parser$1); return true; $s = 15; continue; /* } else if (!((token$1.typ === 11))) { */ case 14: parser$1.states = $append(parser$1.states, 15); _r$5 = yaml_parser_parse_node(parser$1, event, false, false); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } return _r$5; /* } */ case 15: /* } */ case 6: parser$1.state = (x$3 = parser$1.states, x$4 = parser$1.states.$length - 1 >> 0, ((x$4 < 0 || x$4 >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + x$4])); parser$1.states = $subslice(parser$1.states, 0, (parser$1.states.$length - 1 >> 0)); parser$1.marks = $subslice(parser$1.marks, 0, (parser$1.marks.$length - 1 >> 0)); $copy(event, new yaml_event_t.ptr(8, $clone(token$1.start_mark, yaml_mark_t), $clone(token$1.end_mark, yaml_mark_t), 0, ptrType$3.nil, sliceType.nil, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, false, false, 0), yaml_event_t); skip_token(parser$1); return true; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_parse_flow_sequence_entry }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f.context_mark = context_mark; $f.event = event; $f.first = first; $f.parser$1 = parser$1; $f.token = token; $f.token$1 = token$1; $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; }; yaml_parser_parse_flow_sequence_entry_mapping_key = function(parser$1, event) { var $ptr, _r$2, _r$3, event, mark, parser$1, token, $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; _r$3 = $f._r$3; event = $f.event; mark = $f.mark; parser$1 = $f.parser$1; token = $f.token; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: _r$2 = peek_token(parser$1); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } token = _r$2; if (token === ptrType$10.nil) { return false; } /* */ if (!((token.typ === 17)) && !((token.typ === 15)) && !((token.typ === 11))) { $s = 2; continue; } /* */ $s = 3; continue; /* if (!((token.typ === 17)) && !((token.typ === 15)) && !((token.typ === 11))) { */ case 2: parser$1.states = $append(parser$1.states, 17); _r$3 = yaml_parser_parse_node(parser$1, event, false, false); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } return _r$3; /* } */ case 3: mark = $clone(token.end_mark, yaml_mark_t); skip_token(parser$1); parser$1.state = 17; return yaml_parser_process_empty_scalar(parser$1, event, mark); /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_parse_flow_sequence_entry_mapping_key }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f.event = event; $f.mark = mark; $f.parser$1 = parser$1; $f.token = token; $f.$s = $s; $f.$r = $r; return $f; }; yaml_parser_parse_flow_sequence_entry_mapping_value = function(parser$1, event) { var $ptr, _r$2, _r$3, _r$4, event, parser$1, token, token$1, $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; _r$3 = $f._r$3; _r$4 = $f._r$4; event = $f.event; parser$1 = $f.parser$1; token = $f.token; token$1 = $f.token$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: _r$2 = peek_token(parser$1); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } token = _r$2; if (token === ptrType$10.nil) { return false; } /* */ if (token.typ === 17) { $s = 2; continue; } /* */ $s = 3; continue; /* if (token.typ === 17) { */ case 2: skip_token(parser$1); _r$3 = peek_token(parser$1); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } token$1 = _r$3; if (token$1 === ptrType$10.nil) { return false; } /* */ if (!((token$1.typ === 15)) && !((token$1.typ === 11))) { $s = 5; continue; } /* */ $s = 6; continue; /* if (!((token$1.typ === 15)) && !((token$1.typ === 11))) { */ case 5: parser$1.states = $append(parser$1.states, 18); _r$4 = yaml_parser_parse_node(parser$1, event, false, false); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } return _r$4; /* } */ case 6: /* } */ case 3: parser$1.state = 18; return yaml_parser_process_empty_scalar(parser$1, event, token.start_mark); /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_parse_flow_sequence_entry_mapping_value }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f.event = event; $f.parser$1 = parser$1; $f.token = token; $f.token$1 = token$1; $f.$s = $s; $f.$r = $r; return $f; }; yaml_parser_parse_flow_sequence_entry_mapping_end = function(parser$1, event) { var $ptr, _r$2, event, parser$1, token, $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; event = $f.event; parser$1 = $f.parser$1; token = $f.token; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: _r$2 = peek_token(parser$1); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } token = _r$2; if (token === ptrType$10.nil) { return false; } parser$1.state = 15; $copy(event, new yaml_event_t.ptr(10, $clone(token.start_mark, yaml_mark_t), $clone(token.start_mark, yaml_mark_t), 0, ptrType$3.nil, sliceType.nil, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, false, false, 0), yaml_event_t); return true; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_parse_flow_sequence_entry_mapping_end }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f.event = event; $f.parser$1 = parser$1; $f.token = token; $f.$s = $s; $f.$r = $r; return $f; }; yaml_parser_parse_flow_mapping_key = function(parser$1, event, first) { var $ptr, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, context_mark, event, first, parser$1, token, token$1, 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$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; context_mark = $f.context_mark; event = $f.event; first = $f.first; parser$1 = $f.parser$1; token = $f.token; token$1 = $f.token$1; 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: /* */ if (first) { $s = 1; continue; } /* */ $s = 2; continue; /* if (first) { */ case 1: _r$2 = peek_token(parser$1); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } token = _r$2; parser$1.marks = $append(parser$1.marks, token.start_mark); skip_token(parser$1); /* } */ case 2: _r$3 = peek_token(parser$1); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } token$1 = _r$3; if (token$1 === ptrType$10.nil) { return false; } /* */ if (!((token$1.typ === 13))) { $s = 5; continue; } /* */ $s = 6; continue; /* if (!((token$1.typ === 13))) { */ case 5: /* */ if (!first) { $s = 7; continue; } /* */ $s = 8; continue; /* if (!first) { */ case 7: /* */ if (token$1.typ === 15) { $s = 9; continue; } /* */ $s = 10; continue; /* if (token$1.typ === 15) { */ case 9: skip_token(parser$1); _r$4 = peek_token(parser$1); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } token$1 = _r$4; if (token$1 === ptrType$10.nil) { return false; } $s = 11; continue; /* } else { */ case 10: context_mark = $clone((x$1 = parser$1.marks, x$2 = parser$1.marks.$length - 1 >> 0, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])), yaml_mark_t); parser$1.marks = $subslice(parser$1.marks, 0, (parser$1.marks.$length - 1 >> 0)); return yaml_parser_set_parser_error_context(parser$1, "while parsing a flow mapping", context_mark, "did not find expected ',' or '}'", token$1.start_mark); /* } */ case 11: /* } */ case 8: /* */ if (token$1.typ === 16) { $s = 13; continue; } /* */ if (!((token$1.typ === 13))) { $s = 14; continue; } /* */ $s = 15; continue; /* if (token$1.typ === 16) { */ case 13: skip_token(parser$1); _r$5 = peek_token(parser$1); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } token$1 = _r$5; if (token$1 === ptrType$10.nil) { return false; } /* */ if (!((token$1.typ === 17)) && !((token$1.typ === 15)) && !((token$1.typ === 13))) { $s = 17; continue; } /* */ $s = 18; continue; /* if (!((token$1.typ === 17)) && !((token$1.typ === 15)) && !((token$1.typ === 13))) { */ case 17: parser$1.states = $append(parser$1.states, 21); _r$6 = yaml_parser_parse_node(parser$1, event, false, false); /* */ $s = 20; case 20: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } return _r$6; $s = 19; continue; /* } else { */ case 18: parser$1.state = 21; return yaml_parser_process_empty_scalar(parser$1, event, token$1.start_mark); /* } */ case 19: $s = 15; continue; /* } else if (!((token$1.typ === 13))) { */ case 14: parser$1.states = $append(parser$1.states, 22); _r$7 = yaml_parser_parse_node(parser$1, event, false, false); /* */ $s = 21; case 21: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } return _r$7; /* } */ case 15: /* } */ case 6: parser$1.state = (x$3 = parser$1.states, x$4 = parser$1.states.$length - 1 >> 0, ((x$4 < 0 || x$4 >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + x$4])); parser$1.states = $subslice(parser$1.states, 0, (parser$1.states.$length - 1 >> 0)); parser$1.marks = $subslice(parser$1.marks, 0, (parser$1.marks.$length - 1 >> 0)); $copy(event, new yaml_event_t.ptr(10, $clone(token$1.start_mark, yaml_mark_t), $clone(token$1.end_mark, yaml_mark_t), 0, ptrType$3.nil, sliceType.nil, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, false, false, 0), yaml_event_t); skip_token(parser$1); return true; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_parse_flow_mapping_key }; } $f.$ptr = $ptr; $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.context_mark = context_mark; $f.event = event; $f.first = first; $f.parser$1 = parser$1; $f.token = token; $f.token$1 = token$1; $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; }; yaml_parser_parse_flow_mapping_value = function(parser$1, event, empty) { var $ptr, _r$2, _r$3, _r$4, empty, event, parser$1, token, $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; _r$3 = $f._r$3; _r$4 = $f._r$4; empty = $f.empty; event = $f.event; parser$1 = $f.parser$1; token = $f.token; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: _r$2 = peek_token(parser$1); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } token = _r$2; if (token === ptrType$10.nil) { return false; } if (empty) { parser$1.state = 20; return yaml_parser_process_empty_scalar(parser$1, event, token.start_mark); } /* */ if (token.typ === 17) { $s = 2; continue; } /* */ $s = 3; continue; /* if (token.typ === 17) { */ case 2: skip_token(parser$1); _r$3 = peek_token(parser$1); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } token = _r$3; if (token === ptrType$10.nil) { return false; } /* */ if (!((token.typ === 15)) && !((token.typ === 13))) { $s = 5; continue; } /* */ $s = 6; continue; /* if (!((token.typ === 15)) && !((token.typ === 13))) { */ case 5: parser$1.states = $append(parser$1.states, 20); _r$4 = yaml_parser_parse_node(parser$1, event, false, false); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } return _r$4; /* } */ case 6: /* } */ case 3: parser$1.state = 20; return yaml_parser_process_empty_scalar(parser$1, event, token.start_mark); /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_parse_flow_mapping_value }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f.empty = empty; $f.event = event; $f.parser$1 = parser$1; $f.token = token; $f.$s = $s; $f.$r = $r; return $f; }; yaml_parser_process_empty_scalar = function(parser$1, event, mark) { var $ptr, event, mark, parser$1; mark = $clone(mark, yaml_mark_t); $copy(event, new yaml_event_t.ptr(6, $clone(mark, yaml_mark_t), $clone(mark, yaml_mark_t), 0, ptrType$3.nil, sliceType.nil, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, true, false, 1), yaml_event_t); return true; }; yaml_parser_process_directives = function(parser$1, version_directive_ref, tag_directives_ref) { var $ptr, _i, _r$2, _r$3, _ref, i, parser$1, tag_directives, tag_directives_ref, token, value, version_directive, version_directive_ref, $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$2 = $f._r$2; _r$3 = $f._r$3; _ref = $f._ref; i = $f.i; parser$1 = $f.parser$1; tag_directives = $f.tag_directives; tag_directives_ref = $f.tag_directives_ref; token = $f.token; value = $f.value; version_directive = $f.version_directive; version_directive_ref = $f.version_directive_ref; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: version_directive = ptrType$3.nil; tag_directives = sliceType.nil; _r$2 = peek_token(parser$1); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } token = _r$2; if (token === ptrType$10.nil) { return false; } /* while (true) { */ case 2: /* if (!((token.typ === 3) || (token.typ === 4))) { break; } */ if(!((token.typ === 3) || (token.typ === 4))) { $s = 3; continue; } if (token.typ === 3) { if (!(version_directive === ptrType$3.nil)) { yaml_parser_set_parser_error(parser$1, "found duplicate %YAML directive", token.start_mark); return false; } if (!((token.major === 1)) || !((token.minor === 1))) { yaml_parser_set_parser_error(parser$1, "found incompatible YAML document", token.start_mark); return false; } version_directive = new yaml_version_directive_t.ptr(token.major, token.minor); } else if (token.typ === 4) { value = new yaml_tag_directive_t.ptr(token.value, token.prefix); if (!yaml_parser_append_tag_directive(parser$1, value, false, token.start_mark)) { return false; } tag_directives = $append(tag_directives, value); } skip_token(parser$1); _r$3 = peek_token(parser$1); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } token = _r$3; if (token === ptrType$10.nil) { return false; } /* } */ $s = 2; continue; case 3: _ref = default_tag_directives; _i = 0; while (true) { if (!(_i < _ref.$length)) { break; } i = _i; if (!yaml_parser_append_tag_directive(parser$1, ((i < 0 || i >= default_tag_directives.$length) ? $throwRuntimeError("index out of range") : default_tag_directives.$array[default_tag_directives.$offset + i]), true, token.start_mark)) { return false; } _i++; } if (!(version_directive_ref === ptrType$11.nil)) { version_directive_ref.$set(version_directive); } if (!(tag_directives_ref === ptrType$12.nil)) { tag_directives_ref.$set(tag_directives); } return true; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_process_directives }; } $f.$ptr = $ptr; $f._i = _i; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._ref = _ref; $f.i = i; $f.parser$1 = parser$1; $f.tag_directives = tag_directives; $f.tag_directives_ref = tag_directives_ref; $f.token = token; $f.value = value; $f.version_directive = version_directive; $f.version_directive_ref = version_directive_ref; $f.$s = $s; $f.$r = $r; return $f; }; yaml_parser_append_tag_directive = function(parser$1, value, allow_duplicates, mark) { var $ptr, _i, _ref, allow_duplicates, i, mark, parser$1, value, value_copy, x$1; mark = $clone(mark, yaml_mark_t); value = $clone(value, yaml_tag_directive_t); _ref = parser$1.tag_directives; _i = 0; while (true) { if (!(_i < _ref.$length)) { break; } i = _i; if (bytes.Equal(value.handle, (x$1 = parser$1.tag_directives, ((i < 0 || i >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + i])).handle)) { if (allow_duplicates) { return true; } return yaml_parser_set_parser_error(parser$1, "found duplicate %TAG directive", mark); } _i++; } value_copy = new yaml_tag_directive_t.ptr($makeSlice(sliceType$1, value.handle.$length), $makeSlice(sliceType$1, value.prefix.$length)); $copySlice(value_copy.handle, value.handle); $copySlice(value_copy.prefix, value.prefix); parser$1.tag_directives = $append(parser$1.tag_directives, value_copy); return true; }; yaml_parser_set_reader_error = function(parser$1, problem, offset, value) { var $ptr, offset, parser$1, problem, value; parser$1.error = 2; parser$1.problem = problem; parser$1.problem_offset = offset; parser$1.problem_value = value; return false; }; yaml_parser_determine_encoding = function(parser$1) { var $ptr, _r$2, avail, buf, parser$1, pos, 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$2 = $f._r$2; avail = $f.avail; buf = $f.buf; parser$1 = $f.parser$1; pos = $f.pos; 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: /* while (true) { */ case 1: /* if (!(!parser$1.eof && (parser$1.raw_buffer.$length - parser$1.raw_buffer_pos >> 0) < 3)) { break; } */ if(!(!parser$1.eof && (parser$1.raw_buffer.$length - parser$1.raw_buffer_pos >> 0) < 3)) { $s = 2; continue; } _r$2 = yaml_parser_update_raw_buffer(parser$1); /* */ $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: return false; /* } */ case 4: /* } */ $s = 1; continue; case 2: buf = parser$1.raw_buffer; pos = parser$1.raw_buffer_pos; avail = buf.$length - pos >> 0; if (avail >= 2 && (((pos < 0 || pos >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + pos]) === "\xFF\xFE".charCodeAt(0)) && ((x$1 = pos + 1 >> 0, ((x$1 < 0 || x$1 >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + x$1])) === "\xFF\xFE".charCodeAt(1))) { parser$1.encoding = 2; parser$1.raw_buffer_pos = parser$1.raw_buffer_pos + (2) >> 0; parser$1.offset = parser$1.offset + (2) >> 0; } else if (avail >= 2 && (((pos < 0 || pos >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + pos]) === "\xFE\xFF".charCodeAt(0)) && ((x$2 = pos + 1 >> 0, ((x$2 < 0 || x$2 >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + x$2])) === "\xFE\xFF".charCodeAt(1))) { parser$1.encoding = 3; parser$1.raw_buffer_pos = parser$1.raw_buffer_pos + (2) >> 0; parser$1.offset = parser$1.offset + (2) >> 0; } else if (avail >= 3 && (((pos < 0 || pos >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + pos]) === "\xEF\xBB\xBF".charCodeAt(0)) && ((x$3 = pos + 1 >> 0, ((x$3 < 0 || x$3 >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + x$3])) === "\xEF\xBB\xBF".charCodeAt(1)) && ((x$4 = pos + 2 >> 0, ((x$4 < 0 || x$4 >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + x$4])) === "\xEF\xBB\xBF".charCodeAt(2))) { parser$1.encoding = 1; parser$1.raw_buffer_pos = parser$1.raw_buffer_pos + (3) >> 0; parser$1.offset = parser$1.offset + (3) >> 0; } else { parser$1.encoding = 1; } return true; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_determine_encoding }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f.avail = avail; $f.buf = buf; $f.parser$1 = parser$1; $f.pos = pos; $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; }; yaml_parser_update_raw_buffer = function(parser$1) { var $ptr, _arg, _arg$1, _arg$2, _r$2, _r$3, _r$4, _tuple, err, parser$1, size_read, $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$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _tuple = $f._tuple; err = $f.err; parser$1 = $f.parser$1; size_read = $f.size_read; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: size_read = 0; if ((parser$1.raw_buffer_pos === 0) && (parser$1.raw_buffer.$length === parser$1.raw_buffer.$capacity)) { return true; } if (parser$1.eof) { return true; } if (parser$1.raw_buffer_pos > 0 && parser$1.raw_buffer_pos < parser$1.raw_buffer.$length) { $copySlice(parser$1.raw_buffer, $subslice(parser$1.raw_buffer, parser$1.raw_buffer_pos)); } parser$1.raw_buffer = $subslice(parser$1.raw_buffer, 0, (parser$1.raw_buffer.$length - parser$1.raw_buffer_pos >> 0)); parser$1.raw_buffer_pos = 0; _r$2 = parser$1.read_handler(parser$1, $subslice(parser$1.raw_buffer, parser$1.raw_buffer.$length, parser$1.raw_buffer.$capacity)); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } _tuple = _r$2; size_read = _tuple[0]; err = _tuple[1]; parser$1.raw_buffer = $subslice(parser$1.raw_buffer, 0, (parser$1.raw_buffer.$length + size_read >> 0)); /* */ if ($interfaceIsEqual(err, io.EOF)) { $s = 2; continue; } /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 3; continue; } /* */ $s = 4; continue; /* if ($interfaceIsEqual(err, io.EOF)) { */ case 2: parser$1.eof = true; $s = 4; continue; /* } else if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 3: _arg = parser$1; _r$3 = err.Error(); /* */ $s = 5; case 5: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } _arg$1 = "input error: " + _r$3; _arg$2 = parser$1.offset; _r$4 = yaml_parser_set_reader_error(_arg, _arg$1, _arg$2, -1); /* */ $s = 6; case 6: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } return _r$4; /* } */ case 4: return true; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_update_raw_buffer }; } $f.$ptr = $ptr; $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._tuple = _tuple; $f.err = err; $f.parser$1 = parser$1; $f.size_read = size_read; $f.$s = $s; $f.$r = $r; return $f; }; yaml_parser_update_buffer = function(parser$1, length) { var $ptr, _r$2, _r$3, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, buffer_len, first, high, k, length, low, octet, parser$1, raw_unread, value, value2, width$1, 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$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$2 = $f._r$2; _r$3 = $f._r$3; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; buffer_len = $f.buffer_len; first = $f.first; high = $f.high; k = $f.k; length = $f.length; low = $f.low; octet = $f.octet; parser$1 = $f.parser$1; raw_unread = $f.raw_unread; value = $f.value; value2 = $f.value2; width$1 = $f.width$1; 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$17 = $f.x$17; x$18 = $f.x$18; x$19 = $f.x$19; x$2 = $f.x$2; x$20 = $f.x$20; x$21 = $f.x$21; x$22 = $f.x$22; x$23 = $f.x$23; x$24 = $f.x$24; x$25 = $f.x$25; x$26 = $f.x$26; x$27 = $f.x$27; x$28 = $f.x$28; x$29 = $f.x$29; x$3 = $f.x$3; x$30 = $f.x$30; x$31 = $f.x$31; x$32 = $f.x$32; x$33 = $f.x$33; 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: if (parser$1.read_handler === $throwNilPointerError) { $panic(new $String("read handler must be set")); } if (parser$1.eof && (parser$1.raw_buffer_pos === parser$1.raw_buffer.$length)) { return true; } if (parser$1.unread >= length) { return true; } /* */ if (parser$1.encoding === 0) { $s = 1; continue; } /* */ $s = 2; continue; /* if (parser$1.encoding === 0) { */ case 1: _r$2 = yaml_parser_determine_encoding(parser$1); /* */ $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: return false; /* } */ case 4: /* } */ case 2: buffer_len = parser$1.buffer.$length; if (parser$1.buffer_pos > 0 && parser$1.buffer_pos < buffer_len) { $copySlice(parser$1.buffer, $subslice(parser$1.buffer, parser$1.buffer_pos)); buffer_len = buffer_len - (parser$1.buffer_pos) >> 0; parser$1.buffer_pos = 0; } else if (parser$1.buffer_pos === buffer_len) { buffer_len = 0; parser$1.buffer_pos = 0; } parser$1.buffer = $subslice(parser$1.buffer, 0, parser$1.buffer.$capacity); first = true; /* while (true) { */ case 6: /* if (!(parser$1.unread < length)) { break; } */ if(!(parser$1.unread < length)) { $s = 7; continue; } /* */ if (!first || (parser$1.raw_buffer_pos === parser$1.raw_buffer.$length)) { $s = 8; continue; } /* */ $s = 9; continue; /* if (!first || (parser$1.raw_buffer_pos === parser$1.raw_buffer.$length)) { */ case 8: _r$3 = yaml_parser_update_raw_buffer(parser$1); /* */ $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: parser$1.buffer = $subslice(parser$1.buffer, 0, buffer_len); return false; /* } */ case 11: /* } */ case 9: first = false; inner: while (true) { if (!(!((parser$1.raw_buffer_pos === parser$1.raw_buffer.$length)))) { break; } value = 0; width$1 = 0; raw_unread = parser$1.raw_buffer.$length - parser$1.raw_buffer_pos >> 0; _ref = parser$1.encoding; if (_ref === 1) { octet = (x$1 = parser$1.raw_buffer, x$2 = parser$1.raw_buffer_pos, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])); if (((octet & 128) >>> 0) === 0) { width$1 = 1; } else if (((octet & 224) >>> 0) === 192) { width$1 = 2; } else if (((octet & 240) >>> 0) === 224) { width$1 = 3; } else if (((octet & 248) >>> 0) === 240) { width$1 = 4; } else { return yaml_parser_set_reader_error(parser$1, "invalid leading UTF-8 octet", parser$1.offset, (octet >> 0)); } if (width$1 > raw_unread) { if (parser$1.eof) { return yaml_parser_set_reader_error(parser$1, "incomplete UTF-8 octet sequence", parser$1.offset, -1); } break inner; } if (((octet & 128) >>> 0) === 0) { value = (((octet & 127) >>> 0) >> 0); } else if (((octet & 224) >>> 0) === 192) { value = (((octet & 31) >>> 0) >> 0); } else if (((octet & 240) >>> 0) === 224) { value = (((octet & 15) >>> 0) >> 0); } else if (((octet & 248) >>> 0) === 240) { value = (((octet & 7) >>> 0) >> 0); } else { value = 0; } k = 1; while (true) { if (!(k < width$1)) { break; } octet = (x$3 = parser$1.raw_buffer, x$4 = parser$1.raw_buffer_pos + k >> 0, ((x$4 < 0 || x$4 >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + x$4])); if (!(((((octet & 192) >>> 0)) === 128))) { return yaml_parser_set_reader_error(parser$1, "invalid trailing UTF-8 octet", parser$1.offset + k >> 0, (octet >> 0)); } value = ((value << 6 >> 0)) + (((octet & 63) >>> 0) >> 0) >> 0; k = k + (1) >> 0; } if (width$1 === 1) { } else if ((width$1 === 2) && value >= 128) { } else if ((width$1 === 3) && value >= 2048) { } else if ((width$1 === 4) && value >= 65536) { } else { return yaml_parser_set_reader_error(parser$1, "invalid length of a UTF-8 sequence", parser$1.offset, -1); } if (value >= 55296 && value <= 57343 || value > 1114111) { return yaml_parser_set_reader_error(parser$1, "invalid Unicode character", parser$1.offset, (value >> 0)); } } else if (_ref === 2 || _ref === 3) { _tmp = 0; _tmp$1 = 0; low = _tmp; high = _tmp$1; if (parser$1.encoding === 2) { _tmp$2 = 0; _tmp$3 = 1; low = _tmp$2; high = _tmp$3; } else { _tmp$4 = 1; _tmp$5 = 0; high = _tmp$4; low = _tmp$5; } if (raw_unread < 2) { if (parser$1.eof) { return yaml_parser_set_reader_error(parser$1, "incomplete UTF-16 character", parser$1.offset, -1); } break inner; } value = ((x$5 = parser$1.raw_buffer, x$6 = parser$1.raw_buffer_pos + low >> 0, ((x$6 < 0 || x$6 >= x$5.$length) ? $throwRuntimeError("index out of range") : x$5.$array[x$5.$offset + x$6])) >> 0) + ((((x$7 = parser$1.raw_buffer, x$8 = parser$1.raw_buffer_pos + high >> 0, ((x$8 < 0 || x$8 >= x$7.$length) ? $throwRuntimeError("index out of range") : x$7.$array[x$7.$offset + x$8])) >> 0) << 8 >> 0)) >> 0; if ((value & 64512) === 56320) { return yaml_parser_set_reader_error(parser$1, "unexpected low surrogate area", parser$1.offset, (value >> 0)); } if ((value & 64512) === 55296) { width$1 = 4; if (raw_unread < 4) { if (parser$1.eof) { return yaml_parser_set_reader_error(parser$1, "incomplete UTF-16 surrogate pair", parser$1.offset, -1); } break inner; } value2 = ((x$9 = parser$1.raw_buffer, x$10 = (parser$1.raw_buffer_pos + low >> 0) + 2 >> 0, ((x$10 < 0 || x$10 >= x$9.$length) ? $throwRuntimeError("index out of range") : x$9.$array[x$9.$offset + x$10])) >> 0) + ((((x$11 = parser$1.raw_buffer, x$12 = (parser$1.raw_buffer_pos + high >> 0) + 2 >> 0, ((x$12 < 0 || x$12 >= x$11.$length) ? $throwRuntimeError("index out of range") : x$11.$array[x$11.$offset + x$12])) >> 0) << 8 >> 0)) >> 0; if (!(((value2 & 64512) === 56320))) { return yaml_parser_set_reader_error(parser$1, "expected low surrogate area", parser$1.offset + 2 >> 0, (value2 >> 0)); } value = (65536 + ((((value & 1023)) << 10 >> 0)) >> 0) + ((value2 & 1023)) >> 0; } else { width$1 = 2; } } else { $panic(new $String("impossible")); } if (value === 9) { } else if (value === 10) { } else if (value === 13) { } else if (value >= 32 && value <= 126) { } else if (value === 133) { } else if (value >= 160 && value <= 55295) { } else if (value >= 57344 && value <= 65533) { } else if (value >= 65536 && value <= 1114111) { } else { return yaml_parser_set_reader_error(parser$1, "control characters are not allowed", parser$1.offset, (value >> 0)); } parser$1.raw_buffer_pos = parser$1.raw_buffer_pos + (width$1) >> 0; parser$1.offset = parser$1.offset + (width$1) >> 0; if (value <= 127) { (x$13 = parser$1.buffer, x$14 = buffer_len + 0 >> 0, ((x$14 < 0 || x$14 >= x$13.$length) ? $throwRuntimeError("index out of range") : x$13.$array[x$13.$offset + x$14] = (value << 24 >>> 24))); } else if (value <= 2047) { (x$15 = parser$1.buffer, x$16 = buffer_len + 0 >> 0, ((x$16 < 0 || x$16 >= x$15.$length) ? $throwRuntimeError("index out of range") : x$15.$array[x$15.$offset + x$16] = ((192 + ((value >> 6 >> 0)) >> 0) << 24 >>> 24))); (x$17 = parser$1.buffer, x$18 = buffer_len + 1 >> 0, ((x$18 < 0 || x$18 >= x$17.$length) ? $throwRuntimeError("index out of range") : x$17.$array[x$17.$offset + x$18] = ((128 + ((value & 63)) >> 0) << 24 >>> 24))); } else if (value <= 65535) { (x$19 = parser$1.buffer, x$20 = buffer_len + 0 >> 0, ((x$20 < 0 || x$20 >= x$19.$length) ? $throwRuntimeError("index out of range") : x$19.$array[x$19.$offset + x$20] = ((224 + ((value >> 12 >> 0)) >> 0) << 24 >>> 24))); (x$21 = parser$1.buffer, x$22 = buffer_len + 1 >> 0, ((x$22 < 0 || x$22 >= x$21.$length) ? $throwRuntimeError("index out of range") : x$21.$array[x$21.$offset + x$22] = ((128 + ((((value >> 6 >> 0)) & 63)) >> 0) << 24 >>> 24))); (x$23 = parser$1.buffer, x$24 = buffer_len + 2 >> 0, ((x$24 < 0 || x$24 >= x$23.$length) ? $throwRuntimeError("index out of range") : x$23.$array[x$23.$offset + x$24] = ((128 + ((value & 63)) >> 0) << 24 >>> 24))); } else { (x$25 = parser$1.buffer, x$26 = buffer_len + 0 >> 0, ((x$26 < 0 || x$26 >= x$25.$length) ? $throwRuntimeError("index out of range") : x$25.$array[x$25.$offset + x$26] = ((240 + ((value >> 18 >> 0)) >> 0) << 24 >>> 24))); (x$27 = parser$1.buffer, x$28 = buffer_len + 1 >> 0, ((x$28 < 0 || x$28 >= x$27.$length) ? $throwRuntimeError("index out of range") : x$27.$array[x$27.$offset + x$28] = ((128 + ((((value >> 12 >> 0)) & 63)) >> 0) << 24 >>> 24))); (x$29 = parser$1.buffer, x$30 = buffer_len + 2 >> 0, ((x$30 < 0 || x$30 >= x$29.$length) ? $throwRuntimeError("index out of range") : x$29.$array[x$29.$offset + x$30] = ((128 + ((((value >> 6 >> 0)) & 63)) >> 0) << 24 >>> 24))); (x$31 = parser$1.buffer, x$32 = buffer_len + 3 >> 0, ((x$32 < 0 || x$32 >= x$31.$length) ? $throwRuntimeError("index out of range") : x$31.$array[x$31.$offset + x$32] = ((128 + ((value & 63)) >> 0) << 24 >>> 24))); } buffer_len = buffer_len + (width$1) >> 0; parser$1.unread = parser$1.unread + (1) >> 0; } if (parser$1.eof) { (x$33 = parser$1.buffer, ((buffer_len < 0 || buffer_len >= x$33.$length) ? $throwRuntimeError("index out of range") : x$33.$array[x$33.$offset + buffer_len] = 0)); buffer_len = buffer_len + (1) >> 0; parser$1.unread = parser$1.unread + (1) >> 0; /* break; */ $s = 7; continue; } /* } */ $s = 6; continue; case 7: parser$1.buffer = $subslice(parser$1.buffer, 0, buffer_len); return true; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_update_buffer }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f.buffer_len = buffer_len; $f.first = first; $f.high = high; $f.k = k; $f.length = length; $f.low = low; $f.octet = octet; $f.parser$1 = parser$1; $f.raw_unread = raw_unread; $f.value = value; $f.value2 = value2; $f.width$1 = width$1; $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$17 = x$17; $f.x$18 = x$18; $f.x$19 = x$19; $f.x$2 = x$2; $f.x$20 = x$20; $f.x$21 = x$21; $f.x$22 = x$22; $f.x$23 = x$23; $f.x$24 = x$24; $f.x$25 = x$25; $f.x$26 = x$26; $f.x$27 = x$27; $f.x$28 = x$28; $f.x$29 = x$29; $f.x$3 = x$3; $f.x$30 = x$30; $f.x$31 = x$31; $f.x$32 = x$32; $f.x$33 = x$33; $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; }; init = function() { var $ptr, _i, _i$1, _i$2, _i$3, _key$1, _ref, _ref$1, _ref$2, _ref$3, _rune, _rune$1, c, c$1, item, m, resolveMapList, s, t, x$1, x$2; t = resolveTable; (43 >= t.$length ? $throwRuntimeError("index out of range") : t.$array[t.$offset + 43] = 83); (45 >= t.$length ? $throwRuntimeError("index out of range") : t.$array[t.$offset + 45] = 83); _ref = "0123456789"; _i = 0; while (true) { if (!(_i < _ref.length)) { break; } _rune = $decodeRune(_ref, _i); c = _rune[0]; (x$1 = (c >> 0), ((x$1 < 0 || x$1 >= t.$length) ? $throwRuntimeError("index out of range") : t.$array[t.$offset + x$1] = 68)); _i += _rune[1]; } _ref$1 = "yYnNtTfFoO~"; _i$1 = 0; while (true) { if (!(_i$1 < _ref$1.length)) { break; } _rune$1 = $decodeRune(_ref$1, _i$1); c$1 = _rune$1[0]; (x$2 = (c$1 >> 0), ((x$2 < 0 || x$2 >= t.$length) ? $throwRuntimeError("index out of range") : t.$array[t.$offset + x$2] = 77)); _i$1 += _rune$1[1]; } (46 >= t.$length ? $throwRuntimeError("index out of range") : t.$array[t.$offset + 46] = 46); resolveMapList = new sliceType$14([new structType$4.ptr(new $Bool(true), "tag:yaml.org,2002:bool", new sliceType$12(["y", "Y", "yes", "Yes", "YES"])), new structType$4.ptr(new $Bool(true), "tag:yaml.org,2002:bool", new sliceType$12(["true", "True", "TRUE"])), new structType$4.ptr(new $Bool(true), "tag:yaml.org,2002:bool", new sliceType$12(["on", "On", "ON"])), new structType$4.ptr(new $Bool(false), "tag:yaml.org,2002:bool", new sliceType$12(["n", "N", "no", "No", "NO"])), new structType$4.ptr(new $Bool(false), "tag:yaml.org,2002:bool", new sliceType$12(["false", "False", "FALSE"])), new structType$4.ptr(new $Bool(false), "tag:yaml.org,2002:bool", new sliceType$12(["off", "Off", "OFF"])), new structType$4.ptr($ifaceNil, "tag:yaml.org,2002:null", new sliceType$12(["", "~", "null", "Null", "NULL"])), new structType$4.ptr(new $Float64(math.NaN()), "tag:yaml.org,2002:float", new sliceType$12([".nan", ".NaN", ".NAN"])), new structType$4.ptr(new $Float64(math.Inf(1)), "tag:yaml.org,2002:float", new sliceType$12([".inf", ".Inf", ".INF"])), new structType$4.ptr(new $Float64(math.Inf(1)), "tag:yaml.org,2002:float", new sliceType$12(["+.inf", "+.Inf", "+.INF"])), new structType$4.ptr(new $Float64(math.Inf(-1)), "tag:yaml.org,2002:float", new sliceType$12(["-.inf", "-.Inf", "-.INF"])), new structType$4.ptr(new $String("<<"), "tag:yaml.org,2002:merge", new sliceType$12(["<<"]))]); m = resolveMap; _ref$2 = resolveMapList; _i$2 = 0; while (true) { if (!(_i$2 < _ref$2.$length)) { break; } item = $clone(((_i$2 < 0 || _i$2 >= _ref$2.$length) ? $throwRuntimeError("index out of range") : _ref$2.$array[_ref$2.$offset + _i$2]), structType$4); _ref$3 = item.l; _i$3 = 0; while (true) { if (!(_i$3 < _ref$3.$length)) { break; } s = ((_i$3 < 0 || _i$3 >= _ref$3.$length) ? $throwRuntimeError("index out of range") : _ref$3.$array[_ref$3.$offset + _i$3]); _key$1 = s; (m || $throwRuntimeError("assignment to entry in nil map"))[_key$1] = { k: _key$1, v: new resolveMapItem.ptr(item.v, item.tag) }; _i$3++; } _i$2++; } }; shortTag = function(tag) { var $ptr, tag; if (strings.HasPrefix(tag, "tag:yaml.org,2002:")) { return "!!" + tag.substring(18); } return tag; }; resolvableTag = function(tag) { var $ptr, _ref, tag; _ref = tag; if (_ref === "" || _ref === "tag:yaml.org,2002:str" || _ref === "tag:yaml.org,2002:bool" || _ref === "tag:yaml.org,2002:int" || _ref === "tag:yaml.org,2002:float" || _ref === "tag:yaml.org,2002:null") { return true; } return false; }; resolve = function(tag, in$1) { var $ptr, _entry, _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$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, err, err$1, err$2, err$3, floatv, floatv$1, hint, in$1, intv, intv$1, intv$2, item, ok, out, plain, rtag, tag, uintv, uintv$1, 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; _entry = $f._entry; _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$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; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; err$3 = $f.err$3; floatv = $f.floatv; floatv$1 = $f.floatv$1; hint = $f.hint; in$1 = $f.in$1; intv = $f.intv; intv$1 = $f.intv$1; intv$2 = $f.intv$2; item = $f.item; ok = $f.ok; out = $f.out; plain = $f.plain; rtag = $f.rtag; tag = $f.tag; uintv = $f.uintv; uintv$1 = $f.uintv$1; 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); in$1 = [in$1]; rtag = [rtag]; tag = [tag]; rtag[0] = ""; out = $ifaceNil; if (!resolvableTag(tag[0])) { _tmp = tag[0]; _tmp$1 = new $String(in$1[0]); rtag[0] = _tmp; out = _tmp$1; return [rtag[0], out]; } $deferred.push([(function(in$1, rtag, tag) { return function $b() { var $ptr, _ref, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _ref = $f._ref; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: _ref = tag[0]; if (_ref === "" || _ref === rtag[0] || _ref === "tag:yaml.org,2002:str" || _ref === "tag:yaml.org,2002:binary") { return; } $r = failf("cannot decode %s `%s` as a %s", new sliceType$10([new $String(shortTag(rtag[0])), new $String(in$1[0]), new $String(shortTag(tag[0]))])); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._ref = _ref; $f.$s = $s; $f.$r = $r; return $f; }; })(in$1, rtag, tag), []]); hint = 78; if (!(in$1[0] === "")) { hint = (x$1 = in$1[0].charCodeAt(0), ((x$1 < 0 || x$1 >= resolveTable.$length) ? $throwRuntimeError("index out of range") : resolveTable.$array[resolveTable.$offset + x$1])); } if (!((hint === 0)) && !(tag[0] === "tag:yaml.org,2002:str") && !(tag[0] === "tag:yaml.org,2002:binary")) { _tuple = (_entry = resolveMap[in$1[0]], _entry !== undefined ? [_entry.v, true] : [new resolveMapItem.ptr(), false]); item = $clone(_tuple[0], resolveMapItem); ok = _tuple[1]; if (ok) { _tmp$2 = item.tag; _tmp$3 = item.value; rtag[0] = _tmp$2; out = _tmp$3; return [rtag[0], out]; } _ref = hint; if (_ref === 77) { } else if (_ref === 46) { _tuple$1 = strconv.ParseFloat(in$1[0], 64); floatv = _tuple$1[0]; err = _tuple$1[1]; if ($interfaceIsEqual(err, $ifaceNil)) { _tmp$4 = "tag:yaml.org,2002:float"; _tmp$5 = new $Float64(floatv); rtag[0] = _tmp$4; out = _tmp$5; return [rtag[0], out]; } } else if (_ref === 68 || _ref === 83) { plain = strings.Replace(in$1[0], "_", "", -1); _tuple$2 = strconv.ParseInt(plain, 0, 64); intv = _tuple$2[0]; err$1 = _tuple$2[1]; if ($interfaceIsEqual(err$1, $ifaceNil)) { if ((x$2 = new $Int64(0, ((intv.$low + ((intv.$high >> 31) * 4294967296)) >> 0)), (intv.$high === x$2.$high && intv.$low === x$2.$low))) { _tmp$6 = "tag:yaml.org,2002:int"; _tmp$7 = new $Int(((intv.$low + ((intv.$high >> 31) * 4294967296)) >> 0)); rtag[0] = _tmp$6; out = _tmp$7; return [rtag[0], out]; } else { _tmp$8 = "tag:yaml.org,2002:int"; _tmp$9 = intv; rtag[0] = _tmp$8; out = _tmp$9; return [rtag[0], out]; } } _tuple$3 = strconv.ParseUint(plain, 0, 64); uintv = _tuple$3[0]; err$1 = _tuple$3[1]; if ($interfaceIsEqual(err$1, $ifaceNil)) { _tmp$10 = "tag:yaml.org,2002:int"; _tmp$11 = uintv; rtag[0] = _tmp$10; out = _tmp$11; return [rtag[0], out]; } _tuple$4 = strconv.ParseFloat(plain, 64); floatv$1 = _tuple$4[0]; err$1 = _tuple$4[1]; if ($interfaceIsEqual(err$1, $ifaceNil)) { _tmp$12 = "tag:yaml.org,2002:float"; _tmp$13 = new $Float64(floatv$1); rtag[0] = _tmp$12; out = _tmp$13; return [rtag[0], out]; } if (strings.HasPrefix(plain, "0b")) { _tuple$5 = strconv.ParseInt(plain.substring(2), 2, 64); intv$1 = _tuple$5[0]; err$2 = _tuple$5[1]; if ($interfaceIsEqual(err$2, $ifaceNil)) { if ((x$3 = new $Int64(0, ((intv$1.$low + ((intv$1.$high >> 31) * 4294967296)) >> 0)), (intv$1.$high === x$3.$high && intv$1.$low === x$3.$low))) { _tmp$14 = "tag:yaml.org,2002:int"; _tmp$15 = new $Int(((intv$1.$low + ((intv$1.$high >> 31) * 4294967296)) >> 0)); rtag[0] = _tmp$14; out = _tmp$15; return [rtag[0], out]; } else { _tmp$16 = "tag:yaml.org,2002:int"; _tmp$17 = intv$1; rtag[0] = _tmp$16; out = _tmp$17; return [rtag[0], out]; } } _tuple$6 = strconv.ParseUint(plain.substring(2), 2, 64); uintv$1 = _tuple$6[0]; err$2 = _tuple$6[1]; if ($interfaceIsEqual(err$2, $ifaceNil)) { _tmp$18 = "tag:yaml.org,2002:int"; _tmp$19 = uintv$1; rtag[0] = _tmp$18; out = _tmp$19; return [rtag[0], out]; } } else if (strings.HasPrefix(plain, "-0b")) { _tuple$7 = strconv.ParseInt(plain.substring(3), 2, 64); intv$2 = _tuple$7[0]; err$3 = _tuple$7[1]; if ($interfaceIsEqual(err$3, $ifaceNil)) { if ((x$4 = new $Int64(0, ((intv$2.$low + ((intv$2.$high >> 31) * 4294967296)) >> 0)), (intv$2.$high === x$4.$high && intv$2.$low === x$4.$low))) { _tmp$20 = "tag:yaml.org,2002:int"; _tmp$21 = new $Int(-((intv$2.$low + ((intv$2.$high >> 31) * 4294967296)) >> 0)); rtag[0] = _tmp$20; out = _tmp$21; return [rtag[0], out]; } else { _tmp$22 = "tag:yaml.org,2002:int"; _tmp$23 = new $Int64(-intv$2.$high, -intv$2.$low); rtag[0] = _tmp$22; out = _tmp$23; return [rtag[0], out]; } } } } else { $panic(new $String("resolveTable item not yet handled: " + $encodeRune((hint >> 0)) + " (with " + in$1[0] + ")")); } } if (tag[0] === "tag:yaml.org,2002:binary") { _tmp$24 = "tag:yaml.org,2002:binary"; _tmp$25 = new $String(in$1[0]); rtag[0] = _tmp$24; out = _tmp$25; return [rtag[0], out]; } if (utf8.ValidString(in$1[0])) { _tmp$26 = "tag:yaml.org,2002:str"; _tmp$27 = new $String(in$1[0]); rtag[0] = _tmp$26; out = _tmp$27; return [rtag[0], out]; } _tmp$28 = "tag:yaml.org,2002:binary"; _tmp$29 = new $String(encodeBase64(in$1[0])); rtag[0] = _tmp$28; out = _tmp$29; return [rtag[0], out]; /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return [rtag[0], out]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: resolve }; } $f.$ptr = $ptr; $f._entry = _entry; $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$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.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.err$3 = err$3; $f.floatv = floatv; $f.floatv$1 = floatv$1; $f.hint = hint; $f.in$1 = in$1; $f.intv = intv; $f.intv$1 = intv$1; $f.intv$2 = intv$2; $f.item = item; $f.ok = ok; $f.out = out; $f.plain = plain; $f.rtag = rtag; $f.tag = tag; $f.uintv = uintv; $f.uintv$1 = uintv$1; $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; } } }; encodeBase64 = function(s) { var $ptr, _q, buf, encLen, i, in$1, j, k, lines, out, s; encLen = base64.StdEncoding.EncodedLen(s.length); lines = (_q = encLen / 70, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) + 1 >> 0; buf = $makeSlice(sliceType$1, ((encLen * 2 >> 0) + lines >> 0)); in$1 = $subslice(buf, 0, encLen); out = $subslice(buf, encLen); base64.StdEncoding.Encode(in$1, new sliceType$1($stringToBytes(s))); k = 0; i = 0; while (true) { if (!(i < in$1.$length)) { break; } j = i + 70 >> 0; if (j > in$1.$length) { j = in$1.$length; } k = k + ($copySlice($subslice(out, k), $subslice(in$1, i, j))) >> 0; if (lines > 1) { ((k < 0 || k >= out.$length) ? $throwRuntimeError("index out of range") : out.$array[out.$offset + k] = 10); k = k + (1) >> 0; } i = i + (70) >> 0; } return $bytesToString($subslice(out, 0, k)); }; skip = function(parser$1) { var $ptr, parser$1, x$1, x$2; parser$1.mark.index = parser$1.mark.index + (1) >> 0; parser$1.mark.column = parser$1.mark.column + (1) >> 0; parser$1.unread = parser$1.unread - (1) >> 0; parser$1.buffer_pos = parser$1.buffer_pos + (width((x$1 = parser$1.buffer, x$2 = parser$1.buffer_pos, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])))) >> 0; }; skip_line = function(parser$1) { var $ptr, parser$1, x$1, x$2; if (is_crlf(parser$1.buffer, parser$1.buffer_pos)) { parser$1.mark.index = parser$1.mark.index + (2) >> 0; parser$1.mark.column = 0; parser$1.mark.line = parser$1.mark.line + (1) >> 0; parser$1.unread = parser$1.unread - (2) >> 0; parser$1.buffer_pos = parser$1.buffer_pos + (2) >> 0; } else if (is_break(parser$1.buffer, parser$1.buffer_pos)) { parser$1.mark.index = parser$1.mark.index + (1) >> 0; parser$1.mark.column = 0; parser$1.mark.line = parser$1.mark.line + (1) >> 0; parser$1.unread = parser$1.unread - (1) >> 0; parser$1.buffer_pos = parser$1.buffer_pos + (width((x$1 = parser$1.buffer, x$2 = parser$1.buffer_pos, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])))) >> 0; } }; read = function(parser$1, s) { var $ptr, parser$1, s, w, x$1, x$2, x$3, x$4, x$5; w = width((x$1 = parser$1.buffer, x$2 = parser$1.buffer_pos, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2]))); if (w === 0) { $panic(new $String("invalid character sequence")); } if (s.$length === 0) { s = $makeSlice(sliceType$1, 0, 32); } if ((w === 1) && (s.$length + w >> 0) <= s.$capacity) { s = $subslice(s, 0, (s.$length + 1 >> 0)); (x$5 = s.$length - 1 >> 0, ((x$5 < 0 || x$5 >= s.$length) ? $throwRuntimeError("index out of range") : s.$array[s.$offset + x$5] = (x$3 = parser$1.buffer, x$4 = parser$1.buffer_pos, ((x$4 < 0 || x$4 >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + x$4])))); parser$1.buffer_pos = parser$1.buffer_pos + (1) >> 0; } else { s = $appendSlice(s, $subslice(parser$1.buffer, parser$1.buffer_pos, (parser$1.buffer_pos + w >> 0))); parser$1.buffer_pos = parser$1.buffer_pos + (w) >> 0; } parser$1.mark.index = parser$1.mark.index + (1) >> 0; parser$1.mark.column = parser$1.mark.column + (1) >> 0; parser$1.unread = parser$1.unread - (1) >> 0; return s; }; read_line = function(parser$1, s) { var $ptr, buf, parser$1, pos, s, x$1, x$2, x$3, x$4, x$5; buf = parser$1.buffer; pos = parser$1.buffer_pos; if ((((pos < 0 || pos >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + pos]) === 13) && ((x$1 = pos + 1 >> 0, ((x$1 < 0 || x$1 >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + x$1])) === 10)) { s = $append(s, 10); parser$1.buffer_pos = parser$1.buffer_pos + (2) >> 0; parser$1.mark.index = parser$1.mark.index + (1) >> 0; parser$1.unread = parser$1.unread - (1) >> 0; } else if ((((pos < 0 || pos >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + pos]) === 13) || (((pos < 0 || pos >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + pos]) === 10)) { s = $append(s, 10); parser$1.buffer_pos = parser$1.buffer_pos + (1) >> 0; } else if ((((pos < 0 || pos >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + pos]) === 194) && ((x$2 = pos + 1 >> 0, ((x$2 < 0 || x$2 >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + x$2])) === 133)) { s = $append(s, 10); parser$1.buffer_pos = parser$1.buffer_pos + (2) >> 0; } else if ((((pos < 0 || pos >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + pos]) === 226) && ((x$3 = pos + 1 >> 0, ((x$3 < 0 || x$3 >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + x$3])) === 128) && (((x$4 = pos + 2 >> 0, ((x$4 < 0 || x$4 >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + x$4])) === 168) || ((x$5 = pos + 2 >> 0, ((x$5 < 0 || x$5 >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + x$5])) === 169))) { s = $appendSlice(s, $subslice(buf, parser$1.buffer_pos, (pos + 3 >> 0))); parser$1.buffer_pos = parser$1.buffer_pos + (3) >> 0; } else { return s; } parser$1.mark.index = parser$1.mark.index + (1) >> 0; parser$1.mark.column = 0; parser$1.mark.line = parser$1.mark.line + (1) >> 0; parser$1.unread = parser$1.unread - (1) >> 0; return s; }; yaml_parser_set_scanner_error = function(parser$1, context, context_mark, problem) { var $ptr, context, context_mark, parser$1, problem; context_mark = $clone(context_mark, yaml_mark_t); parser$1.error = 3; parser$1.context = context; $copy(parser$1.context_mark, context_mark, yaml_mark_t); parser$1.problem = problem; $copy(parser$1.problem_mark, parser$1.mark, yaml_mark_t); return false; }; yaml_parser_set_scanner_tag_error = function(parser$1, directive, context_mark, problem) { var $ptr, context, context_mark, directive, parser$1, problem; context_mark = $clone(context_mark, yaml_mark_t); context = "while parsing a tag"; if (directive) { context = "while parsing a %TAG directive"; } return yaml_parser_set_scanner_error(parser$1, context, context_mark, "did not find URI escaped octet"); }; yaml_parser_fetch_more_tokens = function(parser$1) { var $ptr, _i, _r$2, _ref, i, need_more_tokens, parser$1, simple_key, 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$2 = $f._r$2; _ref = $f._ref; i = $f.i; need_more_tokens = $f.need_more_tokens; parser$1 = $f.parser$1; simple_key = $f.simple_key; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: /* while (true) { */ case 1: need_more_tokens = false; if (parser$1.tokens_head === parser$1.tokens.$length) { need_more_tokens = true; } else { if (!yaml_parser_stale_simple_keys(parser$1)) { return false; } _ref = parser$1.simple_keys; _i = 0; while (true) { if (!(_i < _ref.$length)) { break; } i = _i; simple_key = (x$1 = parser$1.simple_keys, ((i < 0 || i >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + i])); if (simple_key.possible && (simple_key.token_number === parser$1.tokens_parsed)) { need_more_tokens = true; break; } _i++; } } if (!need_more_tokens) { /* break; */ $s = 2; continue; } _r$2 = yaml_parser_fetch_next_token(parser$1); /* */ $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: return false; /* } */ case 4: /* } */ $s = 1; continue; case 2: parser$1.token_available = true; return true; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_fetch_more_tokens }; } $f.$ptr = $ptr; $f._i = _i; $f._r$2 = _r$2; $f._ref = _ref; $f.i = i; $f.need_more_tokens = need_more_tokens; $f.parser$1 = parser$1; $f.simple_key = simple_key; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f; }; yaml_parser_fetch_next_token = function(parser$1) { var $ptr, _r$10, _r$11, _r$12, _r$13, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _v, _v$1, buf, parser$1, pos, 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$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$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _v = $f._v; _v$1 = $f._v$1; buf = $f.buf; parser$1 = $f.parser$1; pos = $f.pos; 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$17 = $f.x$17; x$18 = $f.x$18; x$19 = $f.x$19; x$2 = $f.x$2; x$20 = $f.x$20; x$21 = $f.x$21; x$22 = $f.x$22; x$23 = $f.x$23; x$24 = $f.x$24; x$25 = $f.x$25; x$26 = $f.x$26; x$27 = $f.x$27; x$28 = $f.x$28; x$29 = $f.x$29; x$3 = $f.x$3; x$30 = $f.x$30; x$31 = $f.x$31; x$32 = $f.x$32; x$33 = $f.x$33; x$34 = $f.x$34; x$35 = $f.x$35; x$36 = $f.x$36; x$37 = $f.x$37; x$38 = $f.x$38; x$39 = $f.x$39; x$4 = $f.x$4; x$40 = $f.x$40; x$41 = $f.x$41; x$42 = $f.x$42; x$43 = $f.x$43; x$44 = $f.x$44; x$45 = $f.x$45; x$46 = $f.x$46; x$47 = $f.x$47; x$48 = $f.x$48; x$49 = $f.x$49; x$5 = $f.x$5; x$50 = $f.x$50; x$51 = $f.x$51; x$52 = $f.x$52; x$53 = $f.x$53; x$54 = $f.x$54; x$55 = $f.x$55; x$56 = $f.x$56; x$57 = $f.x$57; x$58 = $f.x$58; x$59 = $f.x$59; x$6 = $f.x$6; x$60 = $f.x$60; x$61 = $f.x$61; x$62 = $f.x$62; x$63 = $f.x$63; x$64 = $f.x$64; x$65 = $f.x$65; x$66 = $f.x$66; x$67 = $f.x$67; x$68 = $f.x$68; x$69 = $f.x$69; x$7 = $f.x$7; x$70 = $f.x$70; x$71 = $f.x$71; x$72 = $f.x$72; x$73 = $f.x$73; x$74 = $f.x$74; x$75 = $f.x$75; x$76 = $f.x$76; x$77 = $f.x$77; x$78 = $f.x$78; x$8 = $f.x$8; x$9 = $f.x$9; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: if (!(parser$1.unread < 1)) { _v = false; $s = 3; continue s; } _r$2 = yaml_parser_update_buffer(parser$1, 1); /* */ $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; case 3: /* */ if (_v) { $s = 1; continue; } /* */ $s = 2; continue; /* if (_v) { */ case 1: return false; /* } */ case 2: if (!parser$1.stream_start_produced) { return yaml_parser_fetch_stream_start(parser$1); } _r$3 = yaml_parser_scan_to_next_token(parser$1); /* */ $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) { $s = 5; continue; } /* */ $s = 6; continue; /* if (!_r$3) { */ case 5: return false; /* } */ case 6: if (!yaml_parser_stale_simple_keys(parser$1)) { return false; } if (!yaml_parser_unroll_indent(parser$1, parser$1.mark.column)) { return false; } if (!(parser$1.unread < 4)) { _v$1 = false; $s = 10; continue s; } _r$4 = yaml_parser_update_buffer(parser$1, 4); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } _v$1 = !_r$4; case 10: /* */ if (_v$1) { $s = 8; continue; } /* */ $s = 9; continue; /* if (_v$1) { */ case 8: return false; /* } */ case 9: if (is_z(parser$1.buffer, parser$1.buffer_pos)) { return yaml_parser_fetch_stream_end(parser$1); } /* */ if ((parser$1.mark.column === 0) && ((x$1 = parser$1.buffer, x$2 = parser$1.buffer_pos, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])) === 37)) { $s = 12; continue; } /* */ $s = 13; continue; /* if ((parser$1.mark.column === 0) && ((x$1 = parser$1.buffer, x$2 = parser$1.buffer_pos, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])) === 37)) { */ case 12: _r$5 = yaml_parser_fetch_directive(parser$1); /* */ $s = 14; case 14: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } return _r$5; /* } */ case 13: buf = parser$1.buffer; pos = parser$1.buffer_pos; if ((parser$1.mark.column === 0) && (((pos < 0 || pos >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + pos]) === 45) && ((x$3 = pos + 1 >> 0, ((x$3 < 0 || x$3 >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + x$3])) === 45) && ((x$4 = pos + 2 >> 0, ((x$4 < 0 || x$4 >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + x$4])) === 45) && is_blankz(buf, pos + 3 >> 0)) { return yaml_parser_fetch_document_indicator(parser$1, 5); } if ((parser$1.mark.column === 0) && (((pos < 0 || pos >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + pos]) === 46) && ((x$5 = pos + 1 >> 0, ((x$5 < 0 || x$5 >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + x$5])) === 46) && ((x$6 = pos + 2 >> 0, ((x$6 < 0 || x$6 >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + x$6])) === 46) && is_blankz(buf, pos + 3 >> 0)) { return yaml_parser_fetch_document_indicator(parser$1, 6); } if (((pos < 0 || pos >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + pos]) === 91) { return yaml_parser_fetch_flow_collection_start(parser$1, 10); } if ((x$7 = parser$1.buffer, x$8 = parser$1.buffer_pos, ((x$8 < 0 || x$8 >= x$7.$length) ? $throwRuntimeError("index out of range") : x$7.$array[x$7.$offset + x$8])) === 123) { return yaml_parser_fetch_flow_collection_start(parser$1, 12); } if ((x$9 = parser$1.buffer, x$10 = parser$1.buffer_pos, ((x$10 < 0 || x$10 >= x$9.$length) ? $throwRuntimeError("index out of range") : x$9.$array[x$9.$offset + x$10])) === 93) { return yaml_parser_fetch_flow_collection_end(parser$1, 11); } if ((x$11 = parser$1.buffer, x$12 = parser$1.buffer_pos, ((x$12 < 0 || x$12 >= x$11.$length) ? $throwRuntimeError("index out of range") : x$11.$array[x$11.$offset + x$12])) === 125) { return yaml_parser_fetch_flow_collection_end(parser$1, 13); } if ((x$13 = parser$1.buffer, x$14 = parser$1.buffer_pos, ((x$14 < 0 || x$14 >= x$13.$length) ? $throwRuntimeError("index out of range") : x$13.$array[x$13.$offset + x$14])) === 44) { return yaml_parser_fetch_flow_entry(parser$1); } if (((x$15 = parser$1.buffer, x$16 = parser$1.buffer_pos, ((x$16 < 0 || x$16 >= x$15.$length) ? $throwRuntimeError("index out of range") : x$15.$array[x$15.$offset + x$16])) === 45) && is_blankz(parser$1.buffer, parser$1.buffer_pos + 1 >> 0)) { return yaml_parser_fetch_block_entry(parser$1); } if (((x$17 = parser$1.buffer, x$18 = parser$1.buffer_pos, ((x$18 < 0 || x$18 >= x$17.$length) ? $throwRuntimeError("index out of range") : x$17.$array[x$17.$offset + x$18])) === 63) && (parser$1.flow_level > 0 || is_blankz(parser$1.buffer, parser$1.buffer_pos + 1 >> 0))) { return yaml_parser_fetch_key(parser$1); } if (((x$19 = parser$1.buffer, x$20 = parser$1.buffer_pos, ((x$20 < 0 || x$20 >= x$19.$length) ? $throwRuntimeError("index out of range") : x$19.$array[x$19.$offset + x$20])) === 58) && (parser$1.flow_level > 0 || is_blankz(parser$1.buffer, parser$1.buffer_pos + 1 >> 0))) { return yaml_parser_fetch_value(parser$1); } /* */ if ((x$21 = parser$1.buffer, x$22 = parser$1.buffer_pos, ((x$22 < 0 || x$22 >= x$21.$length) ? $throwRuntimeError("index out of range") : x$21.$array[x$21.$offset + x$22])) === 42) { $s = 15; continue; } /* */ $s = 16; continue; /* if ((x$21 = parser$1.buffer, x$22 = parser$1.buffer_pos, ((x$22 < 0 || x$22 >= x$21.$length) ? $throwRuntimeError("index out of range") : x$21.$array[x$21.$offset + x$22])) === 42) { */ case 15: _r$6 = yaml_parser_fetch_anchor(parser$1, 18); /* */ $s = 17; case 17: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } return _r$6; /* } */ case 16: /* */ if ((x$23 = parser$1.buffer, x$24 = parser$1.buffer_pos, ((x$24 < 0 || x$24 >= x$23.$length) ? $throwRuntimeError("index out of range") : x$23.$array[x$23.$offset + x$24])) === 38) { $s = 18; continue; } /* */ $s = 19; continue; /* if ((x$23 = parser$1.buffer, x$24 = parser$1.buffer_pos, ((x$24 < 0 || x$24 >= x$23.$length) ? $throwRuntimeError("index out of range") : x$23.$array[x$23.$offset + x$24])) === 38) { */ case 18: _r$7 = yaml_parser_fetch_anchor(parser$1, 19); /* */ $s = 20; case 20: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } return _r$7; /* } */ case 19: /* */ if ((x$25 = parser$1.buffer, x$26 = parser$1.buffer_pos, ((x$26 < 0 || x$26 >= x$25.$length) ? $throwRuntimeError("index out of range") : x$25.$array[x$25.$offset + x$26])) === 33) { $s = 21; continue; } /* */ $s = 22; continue; /* if ((x$25 = parser$1.buffer, x$26 = parser$1.buffer_pos, ((x$26 < 0 || x$26 >= x$25.$length) ? $throwRuntimeError("index out of range") : x$25.$array[x$25.$offset + x$26])) === 33) { */ case 21: _r$8 = yaml_parser_fetch_tag(parser$1); /* */ $s = 23; case 23: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } return _r$8; /* } */ case 22: /* */ if (((x$27 = parser$1.buffer, x$28 = parser$1.buffer_pos, ((x$28 < 0 || x$28 >= x$27.$length) ? $throwRuntimeError("index out of range") : x$27.$array[x$27.$offset + x$28])) === 124) && (parser$1.flow_level === 0)) { $s = 24; continue; } /* */ $s = 25; continue; /* if (((x$27 = parser$1.buffer, x$28 = parser$1.buffer_pos, ((x$28 < 0 || x$28 >= x$27.$length) ? $throwRuntimeError("index out of range") : x$27.$array[x$27.$offset + x$28])) === 124) && (parser$1.flow_level === 0)) { */ case 24: _r$9 = yaml_parser_fetch_block_scalar(parser$1, true); /* */ $s = 26; case 26: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } return _r$9; /* } */ case 25: /* */ if (((x$29 = parser$1.buffer, x$30 = parser$1.buffer_pos, ((x$30 < 0 || x$30 >= x$29.$length) ? $throwRuntimeError("index out of range") : x$29.$array[x$29.$offset + x$30])) === 62) && (parser$1.flow_level === 0)) { $s = 27; continue; } /* */ $s = 28; continue; /* if (((x$29 = parser$1.buffer, x$30 = parser$1.buffer_pos, ((x$30 < 0 || x$30 >= x$29.$length) ? $throwRuntimeError("index out of range") : x$29.$array[x$29.$offset + x$30])) === 62) && (parser$1.flow_level === 0)) { */ case 27: _r$10 = yaml_parser_fetch_block_scalar(parser$1, false); /* */ $s = 29; case 29: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } return _r$10; /* } */ case 28: /* */ if ((x$31 = parser$1.buffer, x$32 = parser$1.buffer_pos, ((x$32 < 0 || x$32 >= x$31.$length) ? $throwRuntimeError("index out of range") : x$31.$array[x$31.$offset + x$32])) === 39) { $s = 30; continue; } /* */ $s = 31; continue; /* if ((x$31 = parser$1.buffer, x$32 = parser$1.buffer_pos, ((x$32 < 0 || x$32 >= x$31.$length) ? $throwRuntimeError("index out of range") : x$31.$array[x$31.$offset + x$32])) === 39) { */ case 30: _r$11 = yaml_parser_fetch_flow_scalar(parser$1, true); /* */ $s = 32; case 32: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } return _r$11; /* } */ case 31: /* */ if ((x$33 = parser$1.buffer, x$34 = parser$1.buffer_pos, ((x$34 < 0 || x$34 >= x$33.$length) ? $throwRuntimeError("index out of range") : x$33.$array[x$33.$offset + x$34])) === 34) { $s = 33; continue; } /* */ $s = 34; continue; /* if ((x$33 = parser$1.buffer, x$34 = parser$1.buffer_pos, ((x$34 < 0 || x$34 >= x$33.$length) ? $throwRuntimeError("index out of range") : x$33.$array[x$33.$offset + x$34])) === 34) { */ case 33: _r$12 = yaml_parser_fetch_flow_scalar(parser$1, false); /* */ $s = 35; case 35: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } return _r$12; /* } */ case 34: /* */ if (!(is_blankz(parser$1.buffer, parser$1.buffer_pos) || ((x$35 = parser$1.buffer, x$36 = parser$1.buffer_pos, ((x$36 < 0 || x$36 >= x$35.$length) ? $throwRuntimeError("index out of range") : x$35.$array[x$35.$offset + x$36])) === 45) || ((x$37 = parser$1.buffer, x$38 = parser$1.buffer_pos, ((x$38 < 0 || x$38 >= x$37.$length) ? $throwRuntimeError("index out of range") : x$37.$array[x$37.$offset + x$38])) === 63) || ((x$39 = parser$1.buffer, x$40 = parser$1.buffer_pos, ((x$40 < 0 || x$40 >= x$39.$length) ? $throwRuntimeError("index out of range") : x$39.$array[x$39.$offset + x$40])) === 58) || ((x$41 = parser$1.buffer, x$42 = parser$1.buffer_pos, ((x$42 < 0 || x$42 >= x$41.$length) ? $throwRuntimeError("index out of range") : x$41.$array[x$41.$offset + x$42])) === 44) || ((x$43 = parser$1.buffer, x$44 = parser$1.buffer_pos, ((x$44 < 0 || x$44 >= x$43.$length) ? $throwRuntimeError("index out of range") : x$43.$array[x$43.$offset + x$44])) === 91) || ((x$45 = parser$1.buffer, x$46 = parser$1.buffer_pos, ((x$46 < 0 || x$46 >= x$45.$length) ? $throwRuntimeError("index out of range") : x$45.$array[x$45.$offset + x$46])) === 93) || ((x$47 = parser$1.buffer, x$48 = parser$1.buffer_pos, ((x$48 < 0 || x$48 >= x$47.$length) ? $throwRuntimeError("index out of range") : x$47.$array[x$47.$offset + x$48])) === 123) || ((x$49 = parser$1.buffer, x$50 = parser$1.buffer_pos, ((x$50 < 0 || x$50 >= x$49.$length) ? $throwRuntimeError("index out of range") : x$49.$array[x$49.$offset + x$50])) === 125) || ((x$51 = parser$1.buffer, x$52 = parser$1.buffer_pos, ((x$52 < 0 || x$52 >= x$51.$length) ? $throwRuntimeError("index out of range") : x$51.$array[x$51.$offset + x$52])) === 35) || ((x$53 = parser$1.buffer, x$54 = parser$1.buffer_pos, ((x$54 < 0 || x$54 >= x$53.$length) ? $throwRuntimeError("index out of range") : x$53.$array[x$53.$offset + x$54])) === 38) || ((x$55 = parser$1.buffer, x$56 = parser$1.buffer_pos, ((x$56 < 0 || x$56 >= x$55.$length) ? $throwRuntimeError("index out of range") : x$55.$array[x$55.$offset + x$56])) === 42) || ((x$57 = parser$1.buffer, x$58 = parser$1.buffer_pos, ((x$58 < 0 || x$58 >= x$57.$length) ? $throwRuntimeError("index out of range") : x$57.$array[x$57.$offset + x$58])) === 33) || ((x$59 = parser$1.buffer, x$60 = parser$1.buffer_pos, ((x$60 < 0 || x$60 >= x$59.$length) ? $throwRuntimeError("index out of range") : x$59.$array[x$59.$offset + x$60])) === 124) || ((x$61 = parser$1.buffer, x$62 = parser$1.buffer_pos, ((x$62 < 0 || x$62 >= x$61.$length) ? $throwRuntimeError("index out of range") : x$61.$array[x$61.$offset + x$62])) === 62) || ((x$63 = parser$1.buffer, x$64 = parser$1.buffer_pos, ((x$64 < 0 || x$64 >= x$63.$length) ? $throwRuntimeError("index out of range") : x$63.$array[x$63.$offset + x$64])) === 39) || ((x$65 = parser$1.buffer, x$66 = parser$1.buffer_pos, ((x$66 < 0 || x$66 >= x$65.$length) ? $throwRuntimeError("index out of range") : x$65.$array[x$65.$offset + x$66])) === 34) || ((x$67 = parser$1.buffer, x$68 = parser$1.buffer_pos, ((x$68 < 0 || x$68 >= x$67.$length) ? $throwRuntimeError("index out of range") : x$67.$array[x$67.$offset + x$68])) === 37) || ((x$69 = parser$1.buffer, x$70 = parser$1.buffer_pos, ((x$70 < 0 || x$70 >= x$69.$length) ? $throwRuntimeError("index out of range") : x$69.$array[x$69.$offset + x$70])) === 64) || ((x$71 = parser$1.buffer, x$72 = parser$1.buffer_pos, ((x$72 < 0 || x$72 >= x$71.$length) ? $throwRuntimeError("index out of range") : x$71.$array[x$71.$offset + x$72])) === 96)) || (((x$73 = parser$1.buffer, x$74 = parser$1.buffer_pos, ((x$74 < 0 || x$74 >= x$73.$length) ? $throwRuntimeError("index out of range") : x$73.$array[x$73.$offset + x$74])) === 45) && !is_blank(parser$1.buffer, parser$1.buffer_pos + 1 >> 0)) || ((parser$1.flow_level === 0) && (((x$75 = parser$1.buffer, x$76 = parser$1.buffer_pos, ((x$76 < 0 || x$76 >= x$75.$length) ? $throwRuntimeError("index out of range") : x$75.$array[x$75.$offset + x$76])) === 63) || ((x$77 = parser$1.buffer, x$78 = parser$1.buffer_pos, ((x$78 < 0 || x$78 >= x$77.$length) ? $throwRuntimeError("index out of range") : x$77.$array[x$77.$offset + x$78])) === 58)) && !is_blankz(parser$1.buffer, parser$1.buffer_pos + 1 >> 0))) { $s = 36; continue; } /* */ $s = 37; continue; /* if (!(is_blankz(parser$1.buffer, parser$1.buffer_pos) || ((x$35 = parser$1.buffer, x$36 = parser$1.buffer_pos, ((x$36 < 0 || x$36 >= x$35.$length) ? $throwRuntimeError("index out of range") : x$35.$array[x$35.$offset + x$36])) === 45) || ((x$37 = parser$1.buffer, x$38 = parser$1.buffer_pos, ((x$38 < 0 || x$38 >= x$37.$length) ? $throwRuntimeError("index out of range") : x$37.$array[x$37.$offset + x$38])) === 63) || ((x$39 = parser$1.buffer, x$40 = parser$1.buffer_pos, ((x$40 < 0 || x$40 >= x$39.$length) ? $throwRuntimeError("index out of range") : x$39.$array[x$39.$offset + x$40])) === 58) || ((x$41 = parser$1.buffer, x$42 = parser$1.buffer_pos, ((x$42 < 0 || x$42 >= x$41.$length) ? $throwRuntimeError("index out of range") : x$41.$array[x$41.$offset + x$42])) === 44) || ((x$43 = parser$1.buffer, x$44 = parser$1.buffer_pos, ((x$44 < 0 || x$44 >= x$43.$length) ? $throwRuntimeError("index out of range") : x$43.$array[x$43.$offset + x$44])) === 91) || ((x$45 = parser$1.buffer, x$46 = parser$1.buffer_pos, ((x$46 < 0 || x$46 >= x$45.$length) ? $throwRuntimeError("index out of range") : x$45.$array[x$45.$offset + x$46])) === 93) || ((x$47 = parser$1.buffer, x$48 = parser$1.buffer_pos, ((x$48 < 0 || x$48 >= x$47.$length) ? $throwRuntimeError("index out of range") : x$47.$array[x$47.$offset + x$48])) === 123) || ((x$49 = parser$1.buffer, x$50 = parser$1.buffer_pos, ((x$50 < 0 || x$50 >= x$49.$length) ? $throwRuntimeError("index out of range") : x$49.$array[x$49.$offset + x$50])) === 125) || ((x$51 = parser$1.buffer, x$52 = parser$1.buffer_pos, ((x$52 < 0 || x$52 >= x$51.$length) ? $throwRuntimeError("index out of range") : x$51.$array[x$51.$offset + x$52])) === 35) || ((x$53 = parser$1.buffer, x$54 = parser$1.buffer_pos, ((x$54 < 0 || x$54 >= x$53.$length) ? $throwRuntimeError("index out of range") : x$53.$array[x$53.$offset + x$54])) === 38) || ((x$55 = parser$1.buffer, x$56 = parser$1.buffer_pos, ((x$56 < 0 || x$56 >= x$55.$length) ? $throwRuntimeError("index out of range") : x$55.$array[x$55.$offset + x$56])) === 42) || ((x$57 = parser$1.buffer, x$58 = parser$1.buffer_pos, ((x$58 < 0 || x$58 >= x$57.$length) ? $throwRuntimeError("index out of range") : x$57.$array[x$57.$offset + x$58])) === 33) || ((x$59 = parser$1.buffer, x$60 = parser$1.buffer_pos, ((x$60 < 0 || x$60 >= x$59.$length) ? $throwRuntimeError("index out of range") : x$59.$array[x$59.$offset + x$60])) === 124) || ((x$61 = parser$1.buffer, x$62 = parser$1.buffer_pos, ((x$62 < 0 || x$62 >= x$61.$length) ? $throwRuntimeError("index out of range") : x$61.$array[x$61.$offset + x$62])) === 62) || ((x$63 = parser$1.buffer, x$64 = parser$1.buffer_pos, ((x$64 < 0 || x$64 >= x$63.$length) ? $throwRuntimeError("index out of range") : x$63.$array[x$63.$offset + x$64])) === 39) || ((x$65 = parser$1.buffer, x$66 = parser$1.buffer_pos, ((x$66 < 0 || x$66 >= x$65.$length) ? $throwRuntimeError("index out of range") : x$65.$array[x$65.$offset + x$66])) === 34) || ((x$67 = parser$1.buffer, x$68 = parser$1.buffer_pos, ((x$68 < 0 || x$68 >= x$67.$length) ? $throwRuntimeError("index out of range") : x$67.$array[x$67.$offset + x$68])) === 37) || ((x$69 = parser$1.buffer, x$70 = parser$1.buffer_pos, ((x$70 < 0 || x$70 >= x$69.$length) ? $throwRuntimeError("index out of range") : x$69.$array[x$69.$offset + x$70])) === 64) || ((x$71 = parser$1.buffer, x$72 = parser$1.buffer_pos, ((x$72 < 0 || x$72 >= x$71.$length) ? $throwRuntimeError("index out of range") : x$71.$array[x$71.$offset + x$72])) === 96)) || (((x$73 = parser$1.buffer, x$74 = parser$1.buffer_pos, ((x$74 < 0 || x$74 >= x$73.$length) ? $throwRuntimeError("index out of range") : x$73.$array[x$73.$offset + x$74])) === 45) && !is_blank(parser$1.buffer, parser$1.buffer_pos + 1 >> 0)) || ((parser$1.flow_level === 0) && (((x$75 = parser$1.buffer, x$76 = parser$1.buffer_pos, ((x$76 < 0 || x$76 >= x$75.$length) ? $throwRuntimeError("index out of range") : x$75.$array[x$75.$offset + x$76])) === 63) || ((x$77 = parser$1.buffer, x$78 = parser$1.buffer_pos, ((x$78 < 0 || x$78 >= x$77.$length) ? $throwRuntimeError("index out of range") : x$77.$array[x$77.$offset + x$78])) === 58)) && !is_blankz(parser$1.buffer, parser$1.buffer_pos + 1 >> 0))) { */ case 36: _r$13 = yaml_parser_fetch_plain_scalar(parser$1); /* */ $s = 38; case 38: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } return _r$13; /* } */ case 37: return yaml_parser_set_scanner_error(parser$1, "while scanning for the next token", parser$1.mark, "found character that cannot start any token"); /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_fetch_next_token }; } $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$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._v = _v; $f._v$1 = _v$1; $f.buf = buf; $f.parser$1 = parser$1; $f.pos = pos; $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$17 = x$17; $f.x$18 = x$18; $f.x$19 = x$19; $f.x$2 = x$2; $f.x$20 = x$20; $f.x$21 = x$21; $f.x$22 = x$22; $f.x$23 = x$23; $f.x$24 = x$24; $f.x$25 = x$25; $f.x$26 = x$26; $f.x$27 = x$27; $f.x$28 = x$28; $f.x$29 = x$29; $f.x$3 = x$3; $f.x$30 = x$30; $f.x$31 = x$31; $f.x$32 = x$32; $f.x$33 = x$33; $f.x$34 = x$34; $f.x$35 = x$35; $f.x$36 = x$36; $f.x$37 = x$37; $f.x$38 = x$38; $f.x$39 = x$39; $f.x$4 = x$4; $f.x$40 = x$40; $f.x$41 = x$41; $f.x$42 = x$42; $f.x$43 = x$43; $f.x$44 = x$44; $f.x$45 = x$45; $f.x$46 = x$46; $f.x$47 = x$47; $f.x$48 = x$48; $f.x$49 = x$49; $f.x$5 = x$5; $f.x$50 = x$50; $f.x$51 = x$51; $f.x$52 = x$52; $f.x$53 = x$53; $f.x$54 = x$54; $f.x$55 = x$55; $f.x$56 = x$56; $f.x$57 = x$57; $f.x$58 = x$58; $f.x$59 = x$59; $f.x$6 = x$6; $f.x$60 = x$60; $f.x$61 = x$61; $f.x$62 = x$62; $f.x$63 = x$63; $f.x$64 = x$64; $f.x$65 = x$65; $f.x$66 = x$66; $f.x$67 = x$67; $f.x$68 = x$68; $f.x$69 = x$69; $f.x$7 = x$7; $f.x$70 = x$70; $f.x$71 = x$71; $f.x$72 = x$72; $f.x$73 = x$73; $f.x$74 = x$74; $f.x$75 = x$75; $f.x$76 = x$76; $f.x$77 = x$77; $f.x$78 = x$78; $f.x$8 = x$8; $f.x$9 = x$9; $f.$s = $s; $f.$r = $r; return $f; }; yaml_parser_stale_simple_keys = function(parser$1) { var $ptr, _i, _ref, i, parser$1, simple_key, x$1; _ref = parser$1.simple_keys; _i = 0; while (true) { if (!(_i < _ref.$length)) { break; } i = _i; simple_key = (x$1 = parser$1.simple_keys, ((i < 0 || i >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + i])); if (simple_key.possible && (simple_key.mark.line < parser$1.mark.line || (simple_key.mark.index + 1024 >> 0) < parser$1.mark.index)) { if (simple_key.required) { return yaml_parser_set_scanner_error(parser$1, "while scanning a simple key", simple_key.mark, "could not find expected ':'"); } simple_key.possible = false; } _i++; } return true; }; yaml_parser_save_simple_key = function(parser$1) { var $ptr, parser$1, required, simple_key, x$1, x$2; required = (parser$1.flow_level === 0) && (parser$1.indent === parser$1.mark.column); if (required && !parser$1.simple_key_allowed) { $panic(new $String("should not happen")); } if (parser$1.simple_key_allowed) { simple_key = new yaml_simple_key_t.ptr(true, required, parser$1.tokens_parsed + ((parser$1.tokens.$length - parser$1.tokens_head >> 0)) >> 0, new yaml_mark_t.ptr()); $copy(simple_key.mark, parser$1.mark, yaml_mark_t); if (!yaml_parser_remove_simple_key(parser$1)) { return false; } $copy((x$1 = parser$1.simple_keys, x$2 = parser$1.simple_keys.$length - 1 >> 0, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])), simple_key, yaml_simple_key_t); } return true; }; yaml_parser_remove_simple_key = function(parser$1) { var $ptr, i, parser$1, x$1, x$2, x$3, x$4; i = parser$1.simple_keys.$length - 1 >> 0; if ((x$1 = parser$1.simple_keys, ((i < 0 || i >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + i])).possible) { if ((x$2 = parser$1.simple_keys, ((i < 0 || i >= x$2.$length) ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + i])).required) { return yaml_parser_set_scanner_error(parser$1, "while scanning a simple key", (x$3 = parser$1.simple_keys, ((i < 0 || i >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + i])).mark, "could not find expected ':'"); } } (x$4 = parser$1.simple_keys, ((i < 0 || i >= x$4.$length) ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + i])).possible = false; return true; }; yaml_parser_increase_flow_level = function(parser$1) { var $ptr, parser$1; parser$1.simple_keys = $append(parser$1.simple_keys, new yaml_simple_key_t.ptr(false, false, 0, new yaml_mark_t.ptr())); parser$1.flow_level = parser$1.flow_level + (1) >> 0; return true; }; yaml_parser_decrease_flow_level = function(parser$1) { var $ptr, parser$1; if (parser$1.flow_level > 0) { parser$1.flow_level = parser$1.flow_level - (1) >> 0; parser$1.simple_keys = $subslice(parser$1.simple_keys, 0, (parser$1.simple_keys.$length - 1 >> 0)); } return true; }; yaml_parser_roll_indent = function(parser$1, column, number, typ, mark) { var $ptr, column, mark, number, parser$1, token, typ; mark = $clone(mark, yaml_mark_t); if (parser$1.flow_level > 0) { return true; } if (parser$1.indent < column) { parser$1.indents = $append(parser$1.indents, parser$1.indent); parser$1.indent = column; token = new yaml_token_t.ptr(typ, $clone(mark, yaml_mark_t), $clone(mark, yaml_mark_t), 0, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, 0, 0, 0); if (number > -1) { number = number - (parser$1.tokens_parsed) >> 0; } yaml_insert_token(parser$1, number, token); } return true; }; yaml_parser_unroll_indent = function(parser$1, column) { var $ptr, column, parser$1, token, x$1, x$2; if (parser$1.flow_level > 0) { return true; } while (true) { if (!(parser$1.indent > column)) { break; } token = [token]; token[0] = new yaml_token_t.ptr(9, $clone(parser$1.mark, yaml_mark_t), $clone(parser$1.mark, yaml_mark_t), 0, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, 0, 0, 0); yaml_insert_token(parser$1, -1, token[0]); parser$1.indent = (x$1 = parser$1.indents, x$2 = parser$1.indents.$length - 1 >> 0, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])); parser$1.indents = $subslice(parser$1.indents, 0, (parser$1.indents.$length - 1 >> 0)); } return true; }; yaml_parser_fetch_stream_start = function(parser$1) { var $ptr, parser$1, token; parser$1.indent = -1; parser$1.simple_keys = $append(parser$1.simple_keys, new yaml_simple_key_t.ptr(false, false, 0, new yaml_mark_t.ptr())); parser$1.simple_key_allowed = true; parser$1.stream_start_produced = true; token = new yaml_token_t.ptr(1, $clone(parser$1.mark, yaml_mark_t), $clone(parser$1.mark, yaml_mark_t), parser$1.encoding, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, 0, 0, 0); yaml_insert_token(parser$1, -1, token); return true; }; yaml_parser_fetch_stream_end = function(parser$1) { var $ptr, parser$1, token; if (!((parser$1.mark.column === 0))) { parser$1.mark.column = 0; parser$1.mark.line = parser$1.mark.line + (1) >> 0; } if (!yaml_parser_unroll_indent(parser$1, -1)) { return false; } if (!yaml_parser_remove_simple_key(parser$1)) { return false; } parser$1.simple_key_allowed = false; token = new yaml_token_t.ptr(2, $clone(parser$1.mark, yaml_mark_t), $clone(parser$1.mark, yaml_mark_t), 0, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, 0, 0, 0); yaml_insert_token(parser$1, -1, token); return true; }; yaml_parser_fetch_directive = function(parser$1) { var $ptr, _r$2, parser$1, token, $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; parser$1 = $f.parser$1; token = $f.token; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: token = [token]; if (!yaml_parser_unroll_indent(parser$1, -1)) { return false; } if (!yaml_parser_remove_simple_key(parser$1)) { return false; } parser$1.simple_key_allowed = false; token[0] = new yaml_token_t.ptr(0, new yaml_mark_t.ptr(), new yaml_mark_t.ptr(), 0, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, 0, 0, 0); _r$2 = yaml_parser_scan_directive(parser$1, token[0]); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } /* */ if (!_r$2) { $s = 1; continue; } /* */ $s = 2; continue; /* if (!_r$2) { */ case 1: return false; /* } */ case 2: yaml_insert_token(parser$1, -1, token[0]); return true; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_fetch_directive }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f.parser$1 = parser$1; $f.token = token; $f.$s = $s; $f.$r = $r; return $f; }; yaml_parser_fetch_document_indicator = function(parser$1, typ) { var $ptr, end_mark, parser$1, start_mark, token, typ; if (!yaml_parser_unroll_indent(parser$1, -1)) { return false; } if (!yaml_parser_remove_simple_key(parser$1)) { return false; } parser$1.simple_key_allowed = false; start_mark = $clone(parser$1.mark, yaml_mark_t); skip(parser$1); skip(parser$1); skip(parser$1); end_mark = $clone(parser$1.mark, yaml_mark_t); token = new yaml_token_t.ptr(typ, $clone(start_mark, yaml_mark_t), $clone(end_mark, yaml_mark_t), 0, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, 0, 0, 0); yaml_insert_token(parser$1, -1, token); return true; }; yaml_parser_fetch_flow_collection_start = function(parser$1, typ) { var $ptr, end_mark, parser$1, start_mark, token, typ; if (!yaml_parser_save_simple_key(parser$1)) { return false; } if (!yaml_parser_increase_flow_level(parser$1)) { return false; } parser$1.simple_key_allowed = true; start_mark = $clone(parser$1.mark, yaml_mark_t); skip(parser$1); end_mark = $clone(parser$1.mark, yaml_mark_t); token = new yaml_token_t.ptr(typ, $clone(start_mark, yaml_mark_t), $clone(end_mark, yaml_mark_t), 0, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, 0, 0, 0); yaml_insert_token(parser$1, -1, token); return true; }; yaml_parser_fetch_flow_collection_end = function(parser$1, typ) { var $ptr, end_mark, parser$1, start_mark, token, typ; if (!yaml_parser_remove_simple_key(parser$1)) { return false; } if (!yaml_parser_decrease_flow_level(parser$1)) { return false; } parser$1.simple_key_allowed = false; start_mark = $clone(parser$1.mark, yaml_mark_t); skip(parser$1); end_mark = $clone(parser$1.mark, yaml_mark_t); token = new yaml_token_t.ptr(typ, $clone(start_mark, yaml_mark_t), $clone(end_mark, yaml_mark_t), 0, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, 0, 0, 0); yaml_insert_token(parser$1, -1, token); return true; }; yaml_parser_fetch_flow_entry = function(parser$1) { var $ptr, end_mark, parser$1, start_mark, token; if (!yaml_parser_remove_simple_key(parser$1)) { return false; } parser$1.simple_key_allowed = true; start_mark = $clone(parser$1.mark, yaml_mark_t); skip(parser$1); end_mark = $clone(parser$1.mark, yaml_mark_t); token = new yaml_token_t.ptr(15, $clone(start_mark, yaml_mark_t), $clone(end_mark, yaml_mark_t), 0, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, 0, 0, 0); yaml_insert_token(parser$1, -1, token); return true; }; yaml_parser_fetch_block_entry = function(parser$1) { var $ptr, end_mark, parser$1, start_mark, token; if (parser$1.flow_level === 0) { if (!parser$1.simple_key_allowed) { return yaml_parser_set_scanner_error(parser$1, "", parser$1.mark, "block sequence entries are not allowed in this context"); } if (!yaml_parser_roll_indent(parser$1, parser$1.mark.column, -1, 7, parser$1.mark)) { return false; } } else { } if (!yaml_parser_remove_simple_key(parser$1)) { return false; } parser$1.simple_key_allowed = true; start_mark = $clone(parser$1.mark, yaml_mark_t); skip(parser$1); end_mark = $clone(parser$1.mark, yaml_mark_t); token = new yaml_token_t.ptr(14, $clone(start_mark, yaml_mark_t), $clone(end_mark, yaml_mark_t), 0, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, 0, 0, 0); yaml_insert_token(parser$1, -1, token); return true; }; yaml_parser_fetch_key = function(parser$1) { var $ptr, end_mark, parser$1, start_mark, token; if (parser$1.flow_level === 0) { if (!parser$1.simple_key_allowed) { return yaml_parser_set_scanner_error(parser$1, "", parser$1.mark, "mapping keys are not allowed in this context"); } if (!yaml_parser_roll_indent(parser$1, parser$1.mark.column, -1, 8, parser$1.mark)) { return false; } } if (!yaml_parser_remove_simple_key(parser$1)) { return false; } parser$1.simple_key_allowed = parser$1.flow_level === 0; start_mark = $clone(parser$1.mark, yaml_mark_t); skip(parser$1); end_mark = $clone(parser$1.mark, yaml_mark_t); token = new yaml_token_t.ptr(16, $clone(start_mark, yaml_mark_t), $clone(end_mark, yaml_mark_t), 0, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, 0, 0, 0); yaml_insert_token(parser$1, -1, token); return true; }; yaml_parser_fetch_value = function(parser$1) { var $ptr, end_mark, parser$1, simple_key, start_mark, token, token$1, x$1, x$2; simple_key = (x$1 = parser$1.simple_keys, x$2 = parser$1.simple_keys.$length - 1 >> 0, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])); if (simple_key.possible) { token = new yaml_token_t.ptr(16, $clone(simple_key.mark, yaml_mark_t), $clone(simple_key.mark, yaml_mark_t), 0, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, 0, 0, 0); yaml_insert_token(parser$1, simple_key.token_number - parser$1.tokens_parsed >> 0, token); if (!yaml_parser_roll_indent(parser$1, simple_key.mark.column, simple_key.token_number, 8, simple_key.mark)) { return false; } simple_key.possible = false; parser$1.simple_key_allowed = false; } else { if (parser$1.flow_level === 0) { if (!parser$1.simple_key_allowed) { return yaml_parser_set_scanner_error(parser$1, "", parser$1.mark, "mapping values are not allowed in this context"); } if (!yaml_parser_roll_indent(parser$1, parser$1.mark.column, -1, 8, parser$1.mark)) { return false; } } parser$1.simple_key_allowed = parser$1.flow_level === 0; } start_mark = $clone(parser$1.mark, yaml_mark_t); skip(parser$1); end_mark = $clone(parser$1.mark, yaml_mark_t); token$1 = new yaml_token_t.ptr(17, $clone(start_mark, yaml_mark_t), $clone(end_mark, yaml_mark_t), 0, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, 0, 0, 0); yaml_insert_token(parser$1, -1, token$1); return true; }; yaml_parser_fetch_anchor = function(parser$1, typ) { var $ptr, _r$2, parser$1, token, typ, $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; parser$1 = $f.parser$1; token = $f.token; typ = $f.typ; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: token = [token]; if (!yaml_parser_save_simple_key(parser$1)) { return false; } parser$1.simple_key_allowed = false; token[0] = $clone(new yaml_token_t.ptr(), yaml_token_t); _r$2 = yaml_parser_scan_anchor(parser$1, token[0], typ); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } /* */ if (!_r$2) { $s = 1; continue; } /* */ $s = 2; continue; /* if (!_r$2) { */ case 1: return false; /* } */ case 2: yaml_insert_token(parser$1, -1, token[0]); return true; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_fetch_anchor }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f.parser$1 = parser$1; $f.token = token; $f.typ = typ; $f.$s = $s; $f.$r = $r; return $f; }; yaml_parser_fetch_tag = function(parser$1) { var $ptr, _r$2, parser$1, token, $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; parser$1 = $f.parser$1; token = $f.token; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: token = [token]; if (!yaml_parser_save_simple_key(parser$1)) { return false; } parser$1.simple_key_allowed = false; token[0] = $clone(new yaml_token_t.ptr(), yaml_token_t); _r$2 = yaml_parser_scan_tag(parser$1, token[0]); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } /* */ if (!_r$2) { $s = 1; continue; } /* */ $s = 2; continue; /* if (!_r$2) { */ case 1: return false; /* } */ case 2: yaml_insert_token(parser$1, -1, token[0]); return true; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_fetch_tag }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f.parser$1 = parser$1; $f.token = token; $f.$s = $s; $f.$r = $r; return $f; }; yaml_parser_fetch_block_scalar = function(parser$1, literal) { var $ptr, _r$2, literal, parser$1, token, $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; literal = $f.literal; parser$1 = $f.parser$1; token = $f.token; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: token = [token]; if (!yaml_parser_remove_simple_key(parser$1)) { return false; } parser$1.simple_key_allowed = true; token[0] = $clone(new yaml_token_t.ptr(), yaml_token_t); _r$2 = yaml_parser_scan_block_scalar(parser$1, token[0], literal); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } /* */ if (!_r$2) { $s = 1; continue; } /* */ $s = 2; continue; /* if (!_r$2) { */ case 1: return false; /* } */ case 2: yaml_insert_token(parser$1, -1, token[0]); return true; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_fetch_block_scalar }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f.literal = literal; $f.parser$1 = parser$1; $f.token = token; $f.$s = $s; $f.$r = $r; return $f; }; yaml_parser_fetch_flow_scalar = function(parser$1, single) { var $ptr, _r$2, parser$1, single, token, $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; parser$1 = $f.parser$1; single = $f.single; token = $f.token; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: token = [token]; if (!yaml_parser_save_simple_key(parser$1)) { return false; } parser$1.simple_key_allowed = false; token[0] = $clone(new yaml_token_t.ptr(), yaml_token_t); _r$2 = yaml_parser_scan_flow_scalar(parser$1, token[0], single); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } /* */ if (!_r$2) { $s = 1; continue; } /* */ $s = 2; continue; /* if (!_r$2) { */ case 1: return false; /* } */ case 2: yaml_insert_token(parser$1, -1, token[0]); return true; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_fetch_flow_scalar }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f.parser$1 = parser$1; $f.single = single; $f.token = token; $f.$s = $s; $f.$r = $r; return $f; }; yaml_parser_fetch_plain_scalar = function(parser$1) { var $ptr, _r$2, parser$1, token, $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; parser$1 = $f.parser$1; token = $f.token; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: token = [token]; if (!yaml_parser_save_simple_key(parser$1)) { return false; } parser$1.simple_key_allowed = false; token[0] = $clone(new yaml_token_t.ptr(), yaml_token_t); _r$2 = yaml_parser_scan_plain_scalar(parser$1, token[0]); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } /* */ if (!_r$2) { $s = 1; continue; } /* */ $s = 2; continue; /* if (!_r$2) { */ case 1: return false; /* } */ case 2: yaml_insert_token(parser$1, -1, token[0]); return true; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_fetch_plain_scalar }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f.parser$1 = parser$1; $f.token = token; $f.$s = $s; $f.$r = $r; return $f; }; yaml_parser_scan_to_next_token = function(parser$1) { var $ptr, _r$2, _r$3, _r$4, _r$5, _r$6, _v, _v$1, _v$2, _v$3, _v$4, parser$1, 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$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; _v$1 = $f._v$1; _v$2 = $f._v$2; _v$3 = $f._v$3; _v$4 = $f._v$4; parser$1 = $f.parser$1; 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: /* while (true) { */ case 1: if (!(parser$1.unread < 1)) { _v = false; $s = 5; continue s; } _r$2 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } _v = !_r$2; case 5: /* */ if (_v) { $s = 3; continue; } /* */ $s = 4; continue; /* if (_v) { */ case 3: return false; /* } */ case 4: if ((parser$1.mark.column === 0) && is_bom(parser$1.buffer, parser$1.buffer_pos)) { skip(parser$1); } if (!(parser$1.unread < 1)) { _v$1 = false; $s = 9; continue s; } _r$3 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } _v$1 = !_r$3; case 9: /* */ if (_v$1) { $s = 7; continue; } /* */ $s = 8; continue; /* if (_v$1) { */ case 7: return false; /* } */ case 8: /* while (true) { */ case 11: /* if (!(((x$1 = parser$1.buffer, x$2 = parser$1.buffer_pos, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])) === 32) || ((parser$1.flow_level > 0 || !parser$1.simple_key_allowed) && ((x$3 = parser$1.buffer, x$4 = parser$1.buffer_pos, ((x$4 < 0 || x$4 >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + x$4])) === 9)))) { break; } */ if(!(((x$1 = parser$1.buffer, x$2 = parser$1.buffer_pos, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])) === 32) || ((parser$1.flow_level > 0 || !parser$1.simple_key_allowed) && ((x$3 = parser$1.buffer, x$4 = parser$1.buffer_pos, ((x$4 < 0 || x$4 >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + x$4])) === 9)))) { $s = 12; continue; } skip(parser$1); if (!(parser$1.unread < 1)) { _v$2 = false; $s = 15; continue s; } _r$4 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 16; case 16: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } _v$2 = !_r$4; case 15: /* */ if (_v$2) { $s = 13; continue; } /* */ $s = 14; continue; /* if (_v$2) { */ case 13: return false; /* } */ case 14: /* } */ $s = 11; continue; case 12: /* */ if ((x$5 = parser$1.buffer, x$6 = parser$1.buffer_pos, ((x$6 < 0 || x$6 >= x$5.$length) ? $throwRuntimeError("index out of range") : x$5.$array[x$5.$offset + x$6])) === 35) { $s = 17; continue; } /* */ $s = 18; continue; /* if ((x$5 = parser$1.buffer, x$6 = parser$1.buffer_pos, ((x$6 < 0 || x$6 >= x$5.$length) ? $throwRuntimeError("index out of range") : x$5.$array[x$5.$offset + x$6])) === 35) { */ case 17: /* while (true) { */ case 19: /* if (!(!is_breakz(parser$1.buffer, parser$1.buffer_pos))) { break; } */ if(!(!is_breakz(parser$1.buffer, parser$1.buffer_pos))) { $s = 20; continue; } skip(parser$1); if (!(parser$1.unread < 1)) { _v$3 = false; $s = 23; continue s; } _r$5 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 24; case 24: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } _v$3 = !_r$5; case 23: /* */ if (_v$3) { $s = 21; continue; } /* */ $s = 22; continue; /* if (_v$3) { */ case 21: return false; /* } */ case 22: /* } */ $s = 19; continue; case 20: /* } */ case 18: /* */ if (is_break(parser$1.buffer, parser$1.buffer_pos)) { $s = 25; continue; } /* */ $s = 26; continue; /* if (is_break(parser$1.buffer, parser$1.buffer_pos)) { */ case 25: if (!(parser$1.unread < 2)) { _v$4 = false; $s = 30; continue s; } _r$6 = yaml_parser_update_buffer(parser$1, 2); /* */ $s = 31; case 31: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } _v$4 = !_r$6; case 30: /* */ if (_v$4) { $s = 28; continue; } /* */ $s = 29; continue; /* if (_v$4) { */ case 28: return false; /* } */ case 29: skip_line(parser$1); if (parser$1.flow_level === 0) { parser$1.simple_key_allowed = true; } $s = 27; continue; /* } else { */ case 26: /* break; */ $s = 2; continue; /* } */ case 27: /* } */ $s = 1; continue; case 2: return true; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_scan_to_next_token }; } $f.$ptr = $ptr; $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._v$1 = _v$1; $f._v$2 = _v$2; $f._v$3 = _v$3; $f._v$4 = _v$4; $f.parser$1 = parser$1; $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; }; yaml_parser_scan_directive = function(parser$1, token) { var $ptr, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _tmp, _tmp$1, _tmp$2, _tmp$3, _v, _v$1, _v$2, _v$3, end_mark, end_mark$1, handle, major, minor, name, parser$1, prefix, start_mark, token, 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$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; _v = $f._v; _v$1 = $f._v$1; _v$2 = $f._v$2; _v$3 = $f._v$3; end_mark = $f.end_mark; end_mark$1 = $f.end_mark$1; handle = $f.handle; major = $f.major; minor = $f.minor; name = $f.name; parser$1 = $f.parser$1; prefix = $f.prefix; start_mark = $f.start_mark; token = $f.token; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: handle = [handle]; major = [major]; minor = [minor]; name = [name]; prefix = [prefix]; start_mark = $clone(parser$1.mark, yaml_mark_t); skip(parser$1); name[0] = sliceType$1.nil; _r$2 = yaml_parser_scan_directive_name(parser$1, start_mark, (name.$ptr || (name.$ptr = new ptrType$1(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, name)))); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } /* */ if (!_r$2) { $s = 1; continue; } /* */ $s = 2; continue; /* if (!_r$2) { */ case 1: return false; /* } */ case 2: /* */ if (bytes.Equal(name[0], new sliceType$1($stringToBytes("YAML")))) { $s = 4; continue; } /* */ if (bytes.Equal(name[0], new sliceType$1($stringToBytes("TAG")))) { $s = 5; continue; } /* */ $s = 6; continue; /* if (bytes.Equal(name[0], new sliceType$1($stringToBytes("YAML")))) { */ case 4: _tmp = 0; _tmp$1 = 0; major[0] = _tmp; minor[0] = _tmp$1; _r$3 = yaml_parser_scan_version_directive_value(parser$1, start_mark, (major.$ptr || (major.$ptr = new ptrType$13(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, major))), (minor.$ptr || (minor.$ptr = new ptrType$13(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, minor)))); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } /* */ if (!_r$3) { $s = 8; continue; } /* */ $s = 9; continue; /* if (!_r$3) { */ case 8: return false; /* } */ case 9: end_mark = $clone(parser$1.mark, yaml_mark_t); $copy(token, new yaml_token_t.ptr(3, $clone(start_mark, yaml_mark_t), $clone(end_mark, yaml_mark_t), 0, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, 0, major[0], minor[0]), yaml_token_t); $s = 7; continue; /* } else if (bytes.Equal(name[0], new sliceType$1($stringToBytes("TAG")))) { */ case 5: _tmp$2 = sliceType$1.nil; _tmp$3 = sliceType$1.nil; handle[0] = _tmp$2; prefix[0] = _tmp$3; _r$4 = yaml_parser_scan_tag_directive_value(parser$1, start_mark, (handle.$ptr || (handle.$ptr = new ptrType$1(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, handle))), (prefix.$ptr || (prefix.$ptr = new ptrType$1(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, prefix)))); /* */ $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) { $s = 11; continue; } /* */ $s = 12; continue; /* if (!_r$4) { */ case 11: return false; /* } */ case 12: end_mark$1 = $clone(parser$1.mark, yaml_mark_t); $copy(token, new yaml_token_t.ptr(4, $clone(start_mark, yaml_mark_t), $clone(end_mark$1, yaml_mark_t), 0, handle[0], sliceType$1.nil, prefix[0], 0, 0, 0), yaml_token_t); $s = 7; continue; /* } else { */ case 6: yaml_parser_set_scanner_error(parser$1, "while scanning a directive", start_mark, "found uknown directive name"); return false; /* } */ case 7: if (!(parser$1.unread < 1)) { _v = false; $s = 16; continue s; } _r$5 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 17; case 17: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } _v = !_r$5; case 16: /* */ if (_v) { $s = 14; continue; } /* */ $s = 15; continue; /* if (_v) { */ case 14: return false; /* } */ case 15: /* while (true) { */ case 18: /* if (!(is_blank(parser$1.buffer, parser$1.buffer_pos))) { break; } */ if(!(is_blank(parser$1.buffer, parser$1.buffer_pos))) { $s = 19; continue; } skip(parser$1); if (!(parser$1.unread < 1)) { _v$1 = false; $s = 22; continue s; } _r$6 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 23; case 23: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } _v$1 = !_r$6; case 22: /* */ if (_v$1) { $s = 20; continue; } /* */ $s = 21; continue; /* if (_v$1) { */ case 20: return false; /* } */ case 21: /* } */ $s = 18; continue; case 19: /* */ if ((x$1 = parser$1.buffer, x$2 = parser$1.buffer_pos, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])) === 35) { $s = 24; continue; } /* */ $s = 25; continue; /* if ((x$1 = parser$1.buffer, x$2 = parser$1.buffer_pos, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])) === 35) { */ case 24: /* while (true) { */ case 26: /* if (!(!is_breakz(parser$1.buffer, parser$1.buffer_pos))) { break; } */ if(!(!is_breakz(parser$1.buffer, parser$1.buffer_pos))) { $s = 27; continue; } skip(parser$1); if (!(parser$1.unread < 1)) { _v$2 = false; $s = 30; continue s; } _r$7 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 31; case 31: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } _v$2 = !_r$7; case 30: /* */ if (_v$2) { $s = 28; continue; } /* */ $s = 29; continue; /* if (_v$2) { */ case 28: return false; /* } */ case 29: /* } */ $s = 26; continue; case 27: /* } */ case 25: if (!is_breakz(parser$1.buffer, parser$1.buffer_pos)) { yaml_parser_set_scanner_error(parser$1, "while scanning a directive", start_mark, "did not find expected comment or line break"); return false; } /* */ if (is_break(parser$1.buffer, parser$1.buffer_pos)) { $s = 32; continue; } /* */ $s = 33; continue; /* if (is_break(parser$1.buffer, parser$1.buffer_pos)) { */ case 32: if (!(parser$1.unread < 2)) { _v$3 = false; $s = 36; continue s; } _r$8 = yaml_parser_update_buffer(parser$1, 2); /* */ $s = 37; case 37: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } _v$3 = !_r$8; case 36: /* */ if (_v$3) { $s = 34; continue; } /* */ $s = 35; continue; /* if (_v$3) { */ case 34: return false; /* } */ case 35: skip_line(parser$1); /* } */ case 33: return true; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_scan_directive }; } $f.$ptr = $ptr; $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._v = _v; $f._v$1 = _v$1; $f._v$2 = _v$2; $f._v$3 = _v$3; $f.end_mark = end_mark; $f.end_mark$1 = end_mark$1; $f.handle = handle; $f.major = major; $f.minor = minor; $f.name = name; $f.parser$1 = parser$1; $f.prefix = prefix; $f.start_mark = start_mark; $f.token = token; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f; }; yaml_parser_scan_directive_name = function(parser$1, start_mark, name) { var $ptr, _r$2, _r$3, _v, _v$1, name, parser$1, s, start_mark, $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; _r$3 = $f._r$3; _v = $f._v; _v$1 = $f._v$1; name = $f.name; parser$1 = $f.parser$1; s = $f.s; start_mark = $f.start_mark; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: start_mark = $clone(start_mark, yaml_mark_t); if (!(parser$1.unread < 1)) { _v = false; $s = 3; continue s; } _r$2 = yaml_parser_update_buffer(parser$1, 1); /* */ $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; case 3: /* */ if (_v) { $s = 1; continue; } /* */ $s = 2; continue; /* if (_v) { */ case 1: return false; /* } */ case 2: s = sliceType$1.nil; /* while (true) { */ case 5: /* if (!(is_alpha(parser$1.buffer, parser$1.buffer_pos))) { break; } */ if(!(is_alpha(parser$1.buffer, parser$1.buffer_pos))) { $s = 6; continue; } s = read(parser$1, s); if (!(parser$1.unread < 1)) { _v$1 = false; $s = 9; continue s; } _r$3 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } _v$1 = !_r$3; case 9: /* */ if (_v$1) { $s = 7; continue; } /* */ $s = 8; continue; /* if (_v$1) { */ case 7: return false; /* } */ case 8: /* } */ $s = 5; continue; case 6: if (s.$length === 0) { yaml_parser_set_scanner_error(parser$1, "while scanning a directive", start_mark, "could not find expected directive name"); return false; } if (!is_blankz(parser$1.buffer, parser$1.buffer_pos)) { yaml_parser_set_scanner_error(parser$1, "while scanning a directive", start_mark, "found unexpected non-alphabetical character"); return false; } name.$set(s); return true; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_scan_directive_name }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._v = _v; $f._v$1 = _v$1; $f.name = name; $f.parser$1 = parser$1; $f.s = s; $f.start_mark = start_mark; $f.$s = $s; $f.$r = $r; return $f; }; yaml_parser_scan_version_directive_value = function(parser$1, start_mark, major, minor) { var $ptr, _r$2, _r$3, _r$4, _r$5, _v, _v$1, major, minor, parser$1, start_mark, 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$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; major = $f.major; minor = $f.minor; parser$1 = $f.parser$1; start_mark = $f.start_mark; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: start_mark = $clone(start_mark, yaml_mark_t); if (!(parser$1.unread < 1)) { _v = false; $s = 3; continue s; } _r$2 = yaml_parser_update_buffer(parser$1, 1); /* */ $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; case 3: /* */ if (_v) { $s = 1; continue; } /* */ $s = 2; continue; /* if (_v) { */ case 1: return false; /* } */ case 2: /* while (true) { */ case 5: /* if (!(is_blank(parser$1.buffer, parser$1.buffer_pos))) { break; } */ if(!(is_blank(parser$1.buffer, parser$1.buffer_pos))) { $s = 6; continue; } skip(parser$1); if (!(parser$1.unread < 1)) { _v$1 = false; $s = 9; continue s; } _r$3 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } _v$1 = !_r$3; case 9: /* */ if (_v$1) { $s = 7; continue; } /* */ $s = 8; continue; /* if (_v$1) { */ case 7: return false; /* } */ case 8: /* } */ $s = 5; continue; case 6: _r$4 = yaml_parser_scan_version_directive_number(parser$1, start_mark, major); /* */ $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) { $s = 11; continue; } /* */ $s = 12; continue; /* if (!_r$4) { */ case 11: return false; /* } */ case 12: if (!(((x$1 = parser$1.buffer, x$2 = parser$1.buffer_pos, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])) === 46))) { return yaml_parser_set_scanner_error(parser$1, "while scanning a %YAML directive", start_mark, "did not find expected digit or '.' character"); } skip(parser$1); _r$5 = yaml_parser_scan_version_directive_number(parser$1, start_mark, minor); /* */ $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: return false; /* } */ case 15: return true; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_scan_version_directive_value }; } $f.$ptr = $ptr; $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.major = major; $f.minor = minor; $f.parser$1 = parser$1; $f.start_mark = start_mark; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f; }; yaml_parser_scan_version_directive_number = function(parser$1, start_mark, number) { var $ptr, _r$2, _r$3, _tmp, _tmp$1, _v, _v$1, length, number, parser$1, start_mark, value, $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; _r$3 = $f._r$3; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _v = $f._v; _v$1 = $f._v$1; length = $f.length; number = $f.number; parser$1 = $f.parser$1; start_mark = $f.start_mark; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: start_mark = $clone(start_mark, yaml_mark_t); if (!(parser$1.unread < 1)) { _v = false; $s = 3; continue s; } _r$2 = yaml_parser_update_buffer(parser$1, 1); /* */ $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; case 3: /* */ if (_v) { $s = 1; continue; } /* */ $s = 2; continue; /* if (_v) { */ case 1: return false; /* } */ case 2: _tmp = 0; _tmp$1 = 0; value = _tmp; length = _tmp$1; /* while (true) { */ case 5: /* if (!(is_digit(parser$1.buffer, parser$1.buffer_pos))) { break; } */ if(!(is_digit(parser$1.buffer, parser$1.buffer_pos))) { $s = 6; continue; } length = length + (1) << 24 >> 24; if (length > 2) { return yaml_parser_set_scanner_error(parser$1, "while scanning a %YAML directive", start_mark, "found extremely long version number"); } value = (value * 10 << 24 >> 24) + (as_digit(parser$1.buffer, parser$1.buffer_pos) << 24 >> 24) << 24 >> 24; skip(parser$1); if (!(parser$1.unread < 1)) { _v$1 = false; $s = 9; continue s; } _r$3 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } _v$1 = !_r$3; case 9: /* */ if (_v$1) { $s = 7; continue; } /* */ $s = 8; continue; /* if (_v$1) { */ case 7: return false; /* } */ case 8: /* } */ $s = 5; continue; case 6: if (length === 0) { return yaml_parser_set_scanner_error(parser$1, "while scanning a %YAML directive", start_mark, "did not find expected version number"); } number.$set(value); return true; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_scan_version_directive_number }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._v = _v; $f._v$1 = _v$1; $f.length = length; $f.number = number; $f.parser$1 = parser$1; $f.start_mark = start_mark; $f.value = value; $f.$s = $s; $f.$r = $r; return $f; }; yaml_parser_scan_tag_directive_value = function(parser$1, start_mark, handle, prefix) { var $ptr, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _tmp, _tmp$1, _v, _v$1, _v$2, _v$3, _v$4, handle, handle_value, parser$1, prefix, prefix_value, start_mark, $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; _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; _v = $f._v; _v$1 = $f._v$1; _v$2 = $f._v$2; _v$3 = $f._v$3; _v$4 = $f._v$4; handle = $f.handle; handle_value = $f.handle_value; parser$1 = $f.parser$1; prefix = $f.prefix; prefix_value = $f.prefix_value; start_mark = $f.start_mark; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: handle_value = [handle_value]; prefix_value = [prefix_value]; start_mark = $clone(start_mark, yaml_mark_t); _tmp = sliceType$1.nil; _tmp$1 = sliceType$1.nil; handle_value[0] = _tmp; prefix_value[0] = _tmp$1; if (!(parser$1.unread < 1)) { _v = false; $s = 3; continue s; } _r$2 = yaml_parser_update_buffer(parser$1, 1); /* */ $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; case 3: /* */ if (_v) { $s = 1; continue; } /* */ $s = 2; continue; /* if (_v) { */ case 1: return false; /* } */ case 2: /* while (true) { */ case 5: /* if (!(is_blank(parser$1.buffer, parser$1.buffer_pos))) { break; } */ if(!(is_blank(parser$1.buffer, parser$1.buffer_pos))) { $s = 6; continue; } skip(parser$1); if (!(parser$1.unread < 1)) { _v$1 = false; $s = 9; continue s; } _r$3 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } _v$1 = !_r$3; case 9: /* */ if (_v$1) { $s = 7; continue; } /* */ $s = 8; continue; /* if (_v$1) { */ case 7: return false; /* } */ case 8: /* } */ $s = 5; continue; case 6: _r$4 = yaml_parser_scan_tag_handle(parser$1, true, start_mark, (handle_value.$ptr || (handle_value.$ptr = new ptrType$1(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, handle_value)))); /* */ $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) { $s = 11; continue; } /* */ $s = 12; continue; /* if (!_r$4) { */ case 11: return false; /* } */ case 12: if (!(parser$1.unread < 1)) { _v$2 = false; $s = 16; continue s; } _r$5 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 17; case 17: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } _v$2 = !_r$5; case 16: /* */ if (_v$2) { $s = 14; continue; } /* */ $s = 15; continue; /* if (_v$2) { */ case 14: return false; /* } */ case 15: if (!is_blank(parser$1.buffer, parser$1.buffer_pos)) { yaml_parser_set_scanner_error(parser$1, "while scanning a %TAG directive", start_mark, "did not find expected whitespace"); return false; } /* while (true) { */ case 18: /* if (!(is_blank(parser$1.buffer, parser$1.buffer_pos))) { break; } */ if(!(is_blank(parser$1.buffer, parser$1.buffer_pos))) { $s = 19; continue; } skip(parser$1); if (!(parser$1.unread < 1)) { _v$3 = false; $s = 22; continue s; } _r$6 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 23; case 23: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } _v$3 = !_r$6; case 22: /* */ if (_v$3) { $s = 20; continue; } /* */ $s = 21; continue; /* if (_v$3) { */ case 20: return false; /* } */ case 21: /* } */ $s = 18; continue; case 19: _r$7 = yaml_parser_scan_tag_uri(parser$1, true, sliceType$1.nil, start_mark, (prefix_value.$ptr || (prefix_value.$ptr = new ptrType$1(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, prefix_value)))); /* */ $s = 26; case 26: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } /* */ if (!_r$7) { $s = 24; continue; } /* */ $s = 25; continue; /* if (!_r$7) { */ case 24: return false; /* } */ case 25: if (!(parser$1.unread < 1)) { _v$4 = false; $s = 29; continue s; } _r$8 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 30; case 30: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } _v$4 = !_r$8; case 29: /* */ if (_v$4) { $s = 27; continue; } /* */ $s = 28; continue; /* if (_v$4) { */ case 27: return false; /* } */ case 28: if (!is_blankz(parser$1.buffer, parser$1.buffer_pos)) { yaml_parser_set_scanner_error(parser$1, "while scanning a %TAG directive", start_mark, "did not find expected whitespace or line break"); return false; } handle.$set(handle_value[0]); prefix.$set(prefix_value[0]); return true; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_scan_tag_directive_value }; } $f.$ptr = $ptr; $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._v = _v; $f._v$1 = _v$1; $f._v$2 = _v$2; $f._v$3 = _v$3; $f._v$4 = _v$4; $f.handle = handle; $f.handle_value = handle_value; $f.parser$1 = parser$1; $f.prefix = prefix; $f.prefix_value = prefix_value; $f.start_mark = start_mark; $f.$s = $s; $f.$r = $r; return $f; }; yaml_parser_scan_anchor = function(parser$1, token, typ) { var $ptr, _r$2, _r$3, _v, _v$1, context, end_mark, parser$1, s, start_mark, token, typ, 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, $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; _r$3 = $f._r$3; _v = $f._v; _v$1 = $f._v$1; context = $f.context; end_mark = $f.end_mark; parser$1 = $f.parser$1; s = $f.s; start_mark = $f.start_mark; token = $f.token; typ = $f.typ; 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; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: s = sliceType$1.nil; start_mark = $clone(parser$1.mark, yaml_mark_t); skip(parser$1); if (!(parser$1.unread < 1)) { _v = false; $s = 3; continue s; } _r$2 = yaml_parser_update_buffer(parser$1, 1); /* */ $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; case 3: /* */ if (_v) { $s = 1; continue; } /* */ $s = 2; continue; /* if (_v) { */ case 1: return false; /* } */ case 2: /* while (true) { */ case 5: /* if (!(is_alpha(parser$1.buffer, parser$1.buffer_pos))) { break; } */ if(!(is_alpha(parser$1.buffer, parser$1.buffer_pos))) { $s = 6; continue; } s = read(parser$1, s); if (!(parser$1.unread < 1)) { _v$1 = false; $s = 9; continue s; } _r$3 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } _v$1 = !_r$3; case 9: /* */ if (_v$1) { $s = 7; continue; } /* */ $s = 8; continue; /* if (_v$1) { */ case 7: return false; /* } */ case 8: /* } */ $s = 5; continue; case 6: end_mark = $clone(parser$1.mark, yaml_mark_t); if ((s.$length === 0) || !(is_blankz(parser$1.buffer, parser$1.buffer_pos) || ((x$1 = parser$1.buffer, x$2 = parser$1.buffer_pos, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])) === 63) || ((x$3 = parser$1.buffer, x$4 = parser$1.buffer_pos, ((x$4 < 0 || x$4 >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + x$4])) === 58) || ((x$5 = parser$1.buffer, x$6 = parser$1.buffer_pos, ((x$6 < 0 || x$6 >= x$5.$length) ? $throwRuntimeError("index out of range") : x$5.$array[x$5.$offset + x$6])) === 44) || ((x$7 = parser$1.buffer, x$8 = parser$1.buffer_pos, ((x$8 < 0 || x$8 >= x$7.$length) ? $throwRuntimeError("index out of range") : x$7.$array[x$7.$offset + x$8])) === 93) || ((x$9 = parser$1.buffer, x$10 = parser$1.buffer_pos, ((x$10 < 0 || x$10 >= x$9.$length) ? $throwRuntimeError("index out of range") : x$9.$array[x$9.$offset + x$10])) === 125) || ((x$11 = parser$1.buffer, x$12 = parser$1.buffer_pos, ((x$12 < 0 || x$12 >= x$11.$length) ? $throwRuntimeError("index out of range") : x$11.$array[x$11.$offset + x$12])) === 37) || ((x$13 = parser$1.buffer, x$14 = parser$1.buffer_pos, ((x$14 < 0 || x$14 >= x$13.$length) ? $throwRuntimeError("index out of range") : x$13.$array[x$13.$offset + x$14])) === 64) || ((x$15 = parser$1.buffer, x$16 = parser$1.buffer_pos, ((x$16 < 0 || x$16 >= x$15.$length) ? $throwRuntimeError("index out of range") : x$15.$array[x$15.$offset + x$16])) === 96))) { context = "while scanning an alias"; if (typ === 19) { context = "while scanning an anchor"; } yaml_parser_set_scanner_error(parser$1, context, start_mark, "did not find expected alphabetic or numeric character"); return false; } $copy(token, new yaml_token_t.ptr(typ, $clone(start_mark, yaml_mark_t), $clone(end_mark, yaml_mark_t), 0, s, sliceType$1.nil, sliceType$1.nil, 0, 0, 0), yaml_token_t); return true; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_scan_anchor }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._v = _v; $f._v$1 = _v$1; $f.context = context; $f.end_mark = end_mark; $f.parser$1 = parser$1; $f.s = s; $f.start_mark = start_mark; $f.token = token; $f.typ = typ; $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.$s = $s; $f.$r = $r; return $f; }; yaml_parser_scan_tag = function(parser$1, token) { var $ptr, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _tmp, _tmp$1, _tmp$2, _tmp$3, _v, _v$1, end_mark, handle, parser$1, start_mark, suffix, token, 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$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; end_mark = $f.end_mark; handle = $f.handle; parser$1 = $f.parser$1; start_mark = $f.start_mark; suffix = $f.suffix; token = $f.token; 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: handle = [handle]; suffix = [suffix]; _tmp = sliceType$1.nil; _tmp$1 = sliceType$1.nil; handle[0] = _tmp; suffix[0] = _tmp$1; start_mark = $clone(parser$1.mark, yaml_mark_t); if (!(parser$1.unread < 2)) { _v = false; $s = 3; continue s; } _r$2 = yaml_parser_update_buffer(parser$1, 2); /* */ $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; case 3: /* */ if (_v) { $s = 1; continue; } /* */ $s = 2; continue; /* if (_v) { */ case 1: return false; /* } */ case 2: /* */ if ((x$1 = parser$1.buffer, x$2 = parser$1.buffer_pos + 1 >> 0, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])) === 60) { $s = 5; continue; } /* */ $s = 6; continue; /* if ((x$1 = parser$1.buffer, x$2 = parser$1.buffer_pos + 1 >> 0, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])) === 60) { */ case 5: skip(parser$1); skip(parser$1); _r$3 = yaml_parser_scan_tag_uri(parser$1, false, sliceType$1.nil, start_mark, (suffix.$ptr || (suffix.$ptr = new ptrType$1(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, suffix)))); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } /* */ if (!_r$3) { $s = 8; continue; } /* */ $s = 9; continue; /* if (!_r$3) { */ case 8: return false; /* } */ case 9: if (!(((x$3 = parser$1.buffer, x$4 = parser$1.buffer_pos, ((x$4 < 0 || x$4 >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + x$4])) === 62))) { yaml_parser_set_scanner_error(parser$1, "while scanning a tag", start_mark, "did not find the expected '>'"); return false; } skip(parser$1); $s = 7; continue; /* } else { */ case 6: _r$4 = yaml_parser_scan_tag_handle(parser$1, false, start_mark, (handle.$ptr || (handle.$ptr = new ptrType$1(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, handle)))); /* */ $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) { $s = 11; continue; } /* */ $s = 12; continue; /* if (!_r$4) { */ case 11: return false; /* } */ case 12: /* */ if (((0 >= handle[0].$length ? $throwRuntimeError("index out of range") : handle[0].$array[handle[0].$offset + 0]) === 33) && handle[0].$length > 1 && ((x$5 = handle[0].$length - 1 >> 0, ((x$5 < 0 || x$5 >= handle[0].$length) ? $throwRuntimeError("index out of range") : handle[0].$array[handle[0].$offset + x$5])) === 33)) { $s = 14; continue; } /* */ $s = 15; continue; /* if (((0 >= handle[0].$length ? $throwRuntimeError("index out of range") : handle[0].$array[handle[0].$offset + 0]) === 33) && handle[0].$length > 1 && ((x$5 = handle[0].$length - 1 >> 0, ((x$5 < 0 || x$5 >= handle[0].$length) ? $throwRuntimeError("index out of range") : handle[0].$array[handle[0].$offset + x$5])) === 33)) { */ case 14: _r$5 = yaml_parser_scan_tag_uri(parser$1, false, sliceType$1.nil, start_mark, (suffix.$ptr || (suffix.$ptr = new ptrType$1(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, suffix)))); /* */ $s = 19; case 19: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } /* */ if (!_r$5) { $s = 17; continue; } /* */ $s = 18; continue; /* if (!_r$5) { */ case 17: return false; /* } */ case 18: $s = 16; continue; /* } else { */ case 15: _r$6 = yaml_parser_scan_tag_uri(parser$1, false, handle[0], start_mark, (suffix.$ptr || (suffix.$ptr = new ptrType$1(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, suffix)))); /* */ $s = 22; case 22: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } /* */ if (!_r$6) { $s = 20; continue; } /* */ $s = 21; continue; /* if (!_r$6) { */ case 20: return false; /* } */ case 21: handle[0] = new sliceType$1([33]); if (suffix[0].$length === 0) { _tmp$2 = suffix[0]; _tmp$3 = handle[0]; handle[0] = _tmp$2; suffix[0] = _tmp$3; } /* } */ case 16: /* } */ case 7: if (!(parser$1.unread < 1)) { _v$1 = false; $s = 25; continue s; } _r$7 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 26; case 26: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } _v$1 = !_r$7; case 25: /* */ if (_v$1) { $s = 23; continue; } /* */ $s = 24; continue; /* if (_v$1) { */ case 23: return false; /* } */ case 24: if (!is_blankz(parser$1.buffer, parser$1.buffer_pos)) { yaml_parser_set_scanner_error(parser$1, "while scanning a tag", start_mark, "did not find expected whitespace or line break"); return false; } end_mark = $clone(parser$1.mark, yaml_mark_t); $copy(token, new yaml_token_t.ptr(20, $clone(start_mark, yaml_mark_t), $clone(end_mark, yaml_mark_t), 0, handle[0], suffix[0], sliceType$1.nil, 0, 0, 0), yaml_token_t); return true; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_scan_tag }; } $f.$ptr = $ptr; $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.end_mark = end_mark; $f.handle = handle; $f.parser$1 = parser$1; $f.start_mark = start_mark; $f.suffix = suffix; $f.token = token; $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; }; yaml_parser_scan_tag_handle = function(parser$1, directive, start_mark, handle) { var $ptr, _r$2, _r$3, _r$4, _v, _v$1, _v$2, directive, handle, parser$1, s, start_mark, 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$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; directive = $f.directive; handle = $f.handle; parser$1 = $f.parser$1; s = $f.s; start_mark = $f.start_mark; 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: start_mark = $clone(start_mark, yaml_mark_t); if (!(parser$1.unread < 1)) { _v = false; $s = 3; continue s; } _r$2 = yaml_parser_update_buffer(parser$1, 1); /* */ $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; case 3: /* */ if (_v) { $s = 1; continue; } /* */ $s = 2; continue; /* if (_v) { */ case 1: return false; /* } */ case 2: if (!(((x$1 = parser$1.buffer, x$2 = parser$1.buffer_pos, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])) === 33))) { yaml_parser_set_scanner_tag_error(parser$1, directive, start_mark, "did not find expected '!'"); return false; } s = sliceType$1.nil; s = read(parser$1, s); if (!(parser$1.unread < 1)) { _v$1 = false; $s = 7; continue s; } _r$3 = yaml_parser_update_buffer(parser$1, 1); /* */ $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 7: /* */ if (_v$1) { $s = 5; continue; } /* */ $s = 6; continue; /* if (_v$1) { */ case 5: return false; /* } */ case 6: /* while (true) { */ case 9: /* if (!(is_alpha(parser$1.buffer, parser$1.buffer_pos))) { break; } */ if(!(is_alpha(parser$1.buffer, parser$1.buffer_pos))) { $s = 10; continue; } s = read(parser$1, s); if (!(parser$1.unread < 1)) { _v$2 = false; $s = 13; continue s; } _r$4 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 14; case 14: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } _v$2 = !_r$4; case 13: /* */ if (_v$2) { $s = 11; continue; } /* */ $s = 12; continue; /* if (_v$2) { */ case 11: return false; /* } */ case 12: /* } */ $s = 9; continue; case 10: if ((x$3 = parser$1.buffer, x$4 = parser$1.buffer_pos, ((x$4 < 0 || x$4 >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + x$4])) === 33) { s = read(parser$1, s); } else { if (directive && !(((0 >= s.$length ? $throwRuntimeError("index out of range") : s.$array[s.$offset + 0]) === 33) && ((1 >= s.$length ? $throwRuntimeError("index out of range") : s.$array[s.$offset + 1]) === 0))) { yaml_parser_set_scanner_tag_error(parser$1, directive, start_mark, "did not find expected '!'"); return false; } } handle.$set(s); return true; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_scan_tag_handle }; } $f.$ptr = $ptr; $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.directive = directive; $f.handle = handle; $f.parser$1 = parser$1; $f.s = s; $f.start_mark = start_mark; $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; }; yaml_parser_scan_tag_uri = function(parser$1, directive, head, start_mark, uri) { var $ptr, _r$2, _r$3, _r$4, _v, _v$1, directive, head, parser$1, s, start_mark, uri, 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$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$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _v = $f._v; _v$1 = $f._v$1; directive = $f.directive; head = $f.head; parser$1 = $f.parser$1; s = $f.s; start_mark = $f.start_mark; uri = $f.uri; 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$17 = $f.x$17; x$18 = $f.x$18; x$19 = $f.x$19; x$2 = $f.x$2; x$20 = $f.x$20; x$21 = $f.x$21; x$22 = $f.x$22; x$23 = $f.x$23; x$24 = $f.x$24; x$25 = $f.x$25; x$26 = $f.x$26; x$27 = $f.x$27; x$28 = $f.x$28; x$29 = $f.x$29; x$3 = $f.x$3; x$30 = $f.x$30; x$31 = $f.x$31; x$32 = $f.x$32; x$33 = $f.x$33; x$34 = $f.x$34; x$35 = $f.x$35; x$36 = $f.x$36; x$37 = $f.x$37; x$38 = $f.x$38; x$39 = $f.x$39; x$4 = $f.x$4; x$40 = $f.x$40; x$41 = $f.x$41; x$42 = $f.x$42; 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: s = [s]; start_mark = $clone(start_mark, yaml_mark_t); s[0] = sliceType$1.nil; if (head.$length > 1) { s[0] = $appendSlice(s[0], $subslice(head, 1)); } if (!(parser$1.unread < 1)) { _v = false; $s = 3; continue s; } _r$2 = yaml_parser_update_buffer(parser$1, 1); /* */ $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; case 3: /* */ if (_v) { $s = 1; continue; } /* */ $s = 2; continue; /* if (_v) { */ case 1: return false; /* } */ case 2: /* while (true) { */ case 5: /* if (!(is_alpha(parser$1.buffer, parser$1.buffer_pos) || ((x$1 = parser$1.buffer, x$2 = parser$1.buffer_pos, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])) === 59) || ((x$3 = parser$1.buffer, x$4 = parser$1.buffer_pos, ((x$4 < 0 || x$4 >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + x$4])) === 47) || ((x$5 = parser$1.buffer, x$6 = parser$1.buffer_pos, ((x$6 < 0 || x$6 >= x$5.$length) ? $throwRuntimeError("index out of range") : x$5.$array[x$5.$offset + x$6])) === 63) || ((x$7 = parser$1.buffer, x$8 = parser$1.buffer_pos, ((x$8 < 0 || x$8 >= x$7.$length) ? $throwRuntimeError("index out of range") : x$7.$array[x$7.$offset + x$8])) === 58) || ((x$9 = parser$1.buffer, x$10 = parser$1.buffer_pos, ((x$10 < 0 || x$10 >= x$9.$length) ? $throwRuntimeError("index out of range") : x$9.$array[x$9.$offset + x$10])) === 64) || ((x$11 = parser$1.buffer, x$12 = parser$1.buffer_pos, ((x$12 < 0 || x$12 >= x$11.$length) ? $throwRuntimeError("index out of range") : x$11.$array[x$11.$offset + x$12])) === 38) || ((x$13 = parser$1.buffer, x$14 = parser$1.buffer_pos, ((x$14 < 0 || x$14 >= x$13.$length) ? $throwRuntimeError("index out of range") : x$13.$array[x$13.$offset + x$14])) === 61) || ((x$15 = parser$1.buffer, x$16 = parser$1.buffer_pos, ((x$16 < 0 || x$16 >= x$15.$length) ? $throwRuntimeError("index out of range") : x$15.$array[x$15.$offset + x$16])) === 43) || ((x$17 = parser$1.buffer, x$18 = parser$1.buffer_pos, ((x$18 < 0 || x$18 >= x$17.$length) ? $throwRuntimeError("index out of range") : x$17.$array[x$17.$offset + x$18])) === 36) || ((x$19 = parser$1.buffer, x$20 = parser$1.buffer_pos, ((x$20 < 0 || x$20 >= x$19.$length) ? $throwRuntimeError("index out of range") : x$19.$array[x$19.$offset + x$20])) === 44) || ((x$21 = parser$1.buffer, x$22 = parser$1.buffer_pos, ((x$22 < 0 || x$22 >= x$21.$length) ? $throwRuntimeError("index out of range") : x$21.$array[x$21.$offset + x$22])) === 46) || ((x$23 = parser$1.buffer, x$24 = parser$1.buffer_pos, ((x$24 < 0 || x$24 >= x$23.$length) ? $throwRuntimeError("index out of range") : x$23.$array[x$23.$offset + x$24])) === 33) || ((x$25 = parser$1.buffer, x$26 = parser$1.buffer_pos, ((x$26 < 0 || x$26 >= x$25.$length) ? $throwRuntimeError("index out of range") : x$25.$array[x$25.$offset + x$26])) === 126) || ((x$27 = parser$1.buffer, x$28 = parser$1.buffer_pos, ((x$28 < 0 || x$28 >= x$27.$length) ? $throwRuntimeError("index out of range") : x$27.$array[x$27.$offset + x$28])) === 42) || ((x$29 = parser$1.buffer, x$30 = parser$1.buffer_pos, ((x$30 < 0 || x$30 >= x$29.$length) ? $throwRuntimeError("index out of range") : x$29.$array[x$29.$offset + x$30])) === 39) || ((x$31 = parser$1.buffer, x$32 = parser$1.buffer_pos, ((x$32 < 0 || x$32 >= x$31.$length) ? $throwRuntimeError("index out of range") : x$31.$array[x$31.$offset + x$32])) === 40) || ((x$33 = parser$1.buffer, x$34 = parser$1.buffer_pos, ((x$34 < 0 || x$34 >= x$33.$length) ? $throwRuntimeError("index out of range") : x$33.$array[x$33.$offset + x$34])) === 41) || ((x$35 = parser$1.buffer, x$36 = parser$1.buffer_pos, ((x$36 < 0 || x$36 >= x$35.$length) ? $throwRuntimeError("index out of range") : x$35.$array[x$35.$offset + x$36])) === 91) || ((x$37 = parser$1.buffer, x$38 = parser$1.buffer_pos, ((x$38 < 0 || x$38 >= x$37.$length) ? $throwRuntimeError("index out of range") : x$37.$array[x$37.$offset + x$38])) === 93) || ((x$39 = parser$1.buffer, x$40 = parser$1.buffer_pos, ((x$40 < 0 || x$40 >= x$39.$length) ? $throwRuntimeError("index out of range") : x$39.$array[x$39.$offset + x$40])) === 37))) { break; } */ if(!(is_alpha(parser$1.buffer, parser$1.buffer_pos) || ((x$1 = parser$1.buffer, x$2 = parser$1.buffer_pos, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])) === 59) || ((x$3 = parser$1.buffer, x$4 = parser$1.buffer_pos, ((x$4 < 0 || x$4 >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + x$4])) === 47) || ((x$5 = parser$1.buffer, x$6 = parser$1.buffer_pos, ((x$6 < 0 || x$6 >= x$5.$length) ? $throwRuntimeError("index out of range") : x$5.$array[x$5.$offset + x$6])) === 63) || ((x$7 = parser$1.buffer, x$8 = parser$1.buffer_pos, ((x$8 < 0 || x$8 >= x$7.$length) ? $throwRuntimeError("index out of range") : x$7.$array[x$7.$offset + x$8])) === 58) || ((x$9 = parser$1.buffer, x$10 = parser$1.buffer_pos, ((x$10 < 0 || x$10 >= x$9.$length) ? $throwRuntimeError("index out of range") : x$9.$array[x$9.$offset + x$10])) === 64) || ((x$11 = parser$1.buffer, x$12 = parser$1.buffer_pos, ((x$12 < 0 || x$12 >= x$11.$length) ? $throwRuntimeError("index out of range") : x$11.$array[x$11.$offset + x$12])) === 38) || ((x$13 = parser$1.buffer, x$14 = parser$1.buffer_pos, ((x$14 < 0 || x$14 >= x$13.$length) ? $throwRuntimeError("index out of range") : x$13.$array[x$13.$offset + x$14])) === 61) || ((x$15 = parser$1.buffer, x$16 = parser$1.buffer_pos, ((x$16 < 0 || x$16 >= x$15.$length) ? $throwRuntimeError("index out of range") : x$15.$array[x$15.$offset + x$16])) === 43) || ((x$17 = parser$1.buffer, x$18 = parser$1.buffer_pos, ((x$18 < 0 || x$18 >= x$17.$length) ? $throwRuntimeError("index out of range") : x$17.$array[x$17.$offset + x$18])) === 36) || ((x$19 = parser$1.buffer, x$20 = parser$1.buffer_pos, ((x$20 < 0 || x$20 >= x$19.$length) ? $throwRuntimeError("index out of range") : x$19.$array[x$19.$offset + x$20])) === 44) || ((x$21 = parser$1.buffer, x$22 = parser$1.buffer_pos, ((x$22 < 0 || x$22 >= x$21.$length) ? $throwRuntimeError("index out of range") : x$21.$array[x$21.$offset + x$22])) === 46) || ((x$23 = parser$1.buffer, x$24 = parser$1.buffer_pos, ((x$24 < 0 || x$24 >= x$23.$length) ? $throwRuntimeError("index out of range") : x$23.$array[x$23.$offset + x$24])) === 33) || ((x$25 = parser$1.buffer, x$26 = parser$1.buffer_pos, ((x$26 < 0 || x$26 >= x$25.$length) ? $throwRuntimeError("index out of range") : x$25.$array[x$25.$offset + x$26])) === 126) || ((x$27 = parser$1.buffer, x$28 = parser$1.buffer_pos, ((x$28 < 0 || x$28 >= x$27.$length) ? $throwRuntimeError("index out of range") : x$27.$array[x$27.$offset + x$28])) === 42) || ((x$29 = parser$1.buffer, x$30 = parser$1.buffer_pos, ((x$30 < 0 || x$30 >= x$29.$length) ? $throwRuntimeError("index out of range") : x$29.$array[x$29.$offset + x$30])) === 39) || ((x$31 = parser$1.buffer, x$32 = parser$1.buffer_pos, ((x$32 < 0 || x$32 >= x$31.$length) ? $throwRuntimeError("index out of range") : x$31.$array[x$31.$offset + x$32])) === 40) || ((x$33 = parser$1.buffer, x$34 = parser$1.buffer_pos, ((x$34 < 0 || x$34 >= x$33.$length) ? $throwRuntimeError("index out of range") : x$33.$array[x$33.$offset + x$34])) === 41) || ((x$35 = parser$1.buffer, x$36 = parser$1.buffer_pos, ((x$36 < 0 || x$36 >= x$35.$length) ? $throwRuntimeError("index out of range") : x$35.$array[x$35.$offset + x$36])) === 91) || ((x$37 = parser$1.buffer, x$38 = parser$1.buffer_pos, ((x$38 < 0 || x$38 >= x$37.$length) ? $throwRuntimeError("index out of range") : x$37.$array[x$37.$offset + x$38])) === 93) || ((x$39 = parser$1.buffer, x$40 = parser$1.buffer_pos, ((x$40 < 0 || x$40 >= x$39.$length) ? $throwRuntimeError("index out of range") : x$39.$array[x$39.$offset + x$40])) === 37))) { $s = 6; continue; } /* */ if ((x$41 = parser$1.buffer, x$42 = parser$1.buffer_pos, ((x$42 < 0 || x$42 >= x$41.$length) ? $throwRuntimeError("index out of range") : x$41.$array[x$41.$offset + x$42])) === 37) { $s = 7; continue; } /* */ $s = 8; continue; /* if ((x$41 = parser$1.buffer, x$42 = parser$1.buffer_pos, ((x$42 < 0 || x$42 >= x$41.$length) ? $throwRuntimeError("index out of range") : x$41.$array[x$41.$offset + x$42])) === 37) { */ case 7: _r$3 = yaml_parser_scan_uri_escapes(parser$1, directive, start_mark, (s.$ptr || (s.$ptr = new ptrType$1(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, s)))); /* */ $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: return false; /* } */ case 11: $s = 9; continue; /* } else { */ case 8: s[0] = read(parser$1, s[0]); /* } */ case 9: if (!(parser$1.unread < 1)) { _v$1 = false; $s = 15; continue s; } _r$4 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 16; case 16: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } _v$1 = !_r$4; case 15: /* */ if (_v$1) { $s = 13; continue; } /* */ $s = 14; continue; /* if (_v$1) { */ case 13: return false; /* } */ case 14: /* } */ $s = 5; continue; case 6: if (s[0].$length === 0) { yaml_parser_set_scanner_tag_error(parser$1, directive, start_mark, "did not find expected tag URI"); return false; } uri.$set(s[0]); return true; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_scan_tag_uri }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._v = _v; $f._v$1 = _v$1; $f.directive = directive; $f.head = head; $f.parser$1 = parser$1; $f.s = s; $f.start_mark = start_mark; $f.uri = uri; $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$17 = x$17; $f.x$18 = x$18; $f.x$19 = x$19; $f.x$2 = x$2; $f.x$20 = x$20; $f.x$21 = x$21; $f.x$22 = x$22; $f.x$23 = x$23; $f.x$24 = x$24; $f.x$25 = x$25; $f.x$26 = x$26; $f.x$27 = x$27; $f.x$28 = x$28; $f.x$29 = x$29; $f.x$3 = x$3; $f.x$30 = x$30; $f.x$31 = x$31; $f.x$32 = x$32; $f.x$33 = x$33; $f.x$34 = x$34; $f.x$35 = x$35; $f.x$36 = x$36; $f.x$37 = x$37; $f.x$38 = x$38; $f.x$39 = x$39; $f.x$4 = x$4; $f.x$40 = x$40; $f.x$41 = x$41; $f.x$42 = x$42; $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; }; yaml_parser_scan_uri_escapes = function(parser$1, directive, start_mark, s) { var $ptr, _r$2, _v, directive, octet, parser$1, s, start_mark, w, 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$2 = $f._r$2; _v = $f._v; directive = $f.directive; octet = $f.octet; parser$1 = $f.parser$1; s = $f.s; start_mark = $f.start_mark; w = $f.w; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: start_mark = $clone(start_mark, yaml_mark_t); w = 1024; /* while (true) { */ case 1: /* if (!(w > 0)) { break; } */ if(!(w > 0)) { $s = 2; continue; } if (!(parser$1.unread < 3)) { _v = false; $s = 5; continue s; } _r$2 = yaml_parser_update_buffer(parser$1, 3); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } _v = !_r$2; case 5: /* */ if (_v) { $s = 3; continue; } /* */ $s = 4; continue; /* if (_v) { */ case 3: return false; /* } */ case 4: if (!(((x$1 = parser$1.buffer, x$2 = parser$1.buffer_pos, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])) === 37) && is_hex(parser$1.buffer, parser$1.buffer_pos + 1 >> 0) && is_hex(parser$1.buffer, parser$1.buffer_pos + 2 >> 0))) { return yaml_parser_set_scanner_tag_error(parser$1, directive, start_mark, "did not find URI escaped octet"); } octet = ((((as_hex(parser$1.buffer, parser$1.buffer_pos + 1 >> 0) << 4 >> 0)) + as_hex(parser$1.buffer, parser$1.buffer_pos + 2 >> 0) >> 0) << 24 >>> 24); if (w === 1024) { w = width(octet); if (w === 0) { return yaml_parser_set_scanner_tag_error(parser$1, directive, start_mark, "found an incorrect leading UTF-8 octet"); } } else { if (!((((octet & 192) >>> 0) === 128))) { return yaml_parser_set_scanner_tag_error(parser$1, directive, start_mark, "found an incorrect trailing UTF-8 octet"); } } s.$set($append(s.$get(), octet)); skip(parser$1); skip(parser$1); skip(parser$1); w = w - (1) >> 0; /* } */ $s = 1; continue; case 2: return true; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_scan_uri_escapes }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._v = _v; $f.directive = directive; $f.octet = octet; $f.parser$1 = parser$1; $f.s = s; $f.start_mark = start_mark; $f.w = w; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f; }; yaml_parser_scan_block_scalar = function(parser$1, token, literal) { var $ptr, _r$10, _r$11, _r$12, _r$13, _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, _v, _v$1, _v$2, _v$3, _v$4, _v$5, _v$6, _v$7, _v$8, _v$9, chomping, end_mark, increment, indent, leading_blank, leading_break, literal, parser$1, s, start_mark, token, trailing_blank, trailing_breaks, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, 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$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _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; _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; _v$7 = $f._v$7; _v$8 = $f._v$8; _v$9 = $f._v$9; chomping = $f.chomping; end_mark = $f.end_mark; increment = $f.increment; indent = $f.indent; leading_blank = $f.leading_blank; leading_break = $f.leading_break; literal = $f.literal; parser$1 = $f.parser$1; s = $f.s; start_mark = $f.start_mark; token = $f.token; trailing_blank = $f.trailing_blank; trailing_breaks = $f.trailing_breaks; 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$17 = $f.x$17; x$18 = $f.x$18; 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: end_mark = [end_mark]; indent = [indent]; trailing_breaks = [trailing_breaks]; start_mark = $clone(parser$1.mark, yaml_mark_t); skip(parser$1); if (!(parser$1.unread < 1)) { _v = false; $s = 3; continue s; } _r$2 = yaml_parser_update_buffer(parser$1, 1); /* */ $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; case 3: /* */ if (_v) { $s = 1; continue; } /* */ $s = 2; continue; /* if (_v) { */ case 1: return false; /* } */ case 2: _tmp = 0; _tmp$1 = 0; chomping = _tmp; increment = _tmp$1; /* */ if (((x$1 = parser$1.buffer, x$2 = parser$1.buffer_pos, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])) === 43) || ((x$3 = parser$1.buffer, x$4 = parser$1.buffer_pos, ((x$4 < 0 || x$4 >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + x$4])) === 45)) { $s = 5; continue; } /* */ if (is_digit(parser$1.buffer, parser$1.buffer_pos)) { $s = 6; continue; } /* */ $s = 7; continue; /* if (((x$1 = parser$1.buffer, x$2 = parser$1.buffer_pos, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])) === 43) || ((x$3 = parser$1.buffer, x$4 = parser$1.buffer_pos, ((x$4 < 0 || x$4 >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + x$4])) === 45)) { */ case 5: if ((x$5 = parser$1.buffer, x$6 = parser$1.buffer_pos, ((x$6 < 0 || x$6 >= x$5.$length) ? $throwRuntimeError("index out of range") : x$5.$array[x$5.$offset + x$6])) === 43) { chomping = 1; } else { chomping = -1; } skip(parser$1); if (!(parser$1.unread < 1)) { _v$1 = false; $s = 10; continue s; } _r$3 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } _v$1 = !_r$3; case 10: /* */ if (_v$1) { $s = 8; continue; } /* */ $s = 9; continue; /* if (_v$1) { */ case 8: return false; /* } */ case 9: if (is_digit(parser$1.buffer, parser$1.buffer_pos)) { if ((x$7 = parser$1.buffer, x$8 = parser$1.buffer_pos, ((x$8 < 0 || x$8 >= x$7.$length) ? $throwRuntimeError("index out of range") : x$7.$array[x$7.$offset + x$8])) === 48) { yaml_parser_set_scanner_error(parser$1, "while scanning a block scalar", start_mark, "found an intendation indicator equal to 0"); return false; } increment = as_digit(parser$1.buffer, parser$1.buffer_pos); skip(parser$1); } $s = 7; continue; /* } else if (is_digit(parser$1.buffer, parser$1.buffer_pos)) { */ case 6: if ((x$9 = parser$1.buffer, x$10 = parser$1.buffer_pos, ((x$10 < 0 || x$10 >= x$9.$length) ? $throwRuntimeError("index out of range") : x$9.$array[x$9.$offset + x$10])) === 48) { yaml_parser_set_scanner_error(parser$1, "while scanning a block scalar", start_mark, "found an intendation indicator equal to 0"); return false; } increment = as_digit(parser$1.buffer, parser$1.buffer_pos); skip(parser$1); if (!(parser$1.unread < 1)) { _v$2 = false; $s = 14; continue s; } _r$4 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 15; case 15: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } _v$2 = !_r$4; case 14: /* */ if (_v$2) { $s = 12; continue; } /* */ $s = 13; continue; /* if (_v$2) { */ case 12: return false; /* } */ case 13: if (((x$11 = parser$1.buffer, x$12 = parser$1.buffer_pos, ((x$12 < 0 || x$12 >= x$11.$length) ? $throwRuntimeError("index out of range") : x$11.$array[x$11.$offset + x$12])) === 43) || ((x$13 = parser$1.buffer, x$14 = parser$1.buffer_pos, ((x$14 < 0 || x$14 >= x$13.$length) ? $throwRuntimeError("index out of range") : x$13.$array[x$13.$offset + x$14])) === 45)) { if ((x$15 = parser$1.buffer, x$16 = parser$1.buffer_pos, ((x$16 < 0 || x$16 >= x$15.$length) ? $throwRuntimeError("index out of range") : x$15.$array[x$15.$offset + x$16])) === 43) { chomping = 1; } else { chomping = -1; } skip(parser$1); } /* } */ case 7: if (!(parser$1.unread < 1)) { _v$3 = false; $s = 18; continue s; } _r$5 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 19; case 19: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } _v$3 = !_r$5; case 18: /* */ if (_v$3) { $s = 16; continue; } /* */ $s = 17; continue; /* if (_v$3) { */ case 16: return false; /* } */ case 17: /* while (true) { */ case 20: /* if (!(is_blank(parser$1.buffer, parser$1.buffer_pos))) { break; } */ if(!(is_blank(parser$1.buffer, parser$1.buffer_pos))) { $s = 21; continue; } skip(parser$1); if (!(parser$1.unread < 1)) { _v$4 = false; $s = 24; continue s; } _r$6 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 25; case 25: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } _v$4 = !_r$6; case 24: /* */ if (_v$4) { $s = 22; continue; } /* */ $s = 23; continue; /* if (_v$4) { */ case 22: return false; /* } */ case 23: /* } */ $s = 20; continue; case 21: /* */ if ((x$17 = parser$1.buffer, x$18 = parser$1.buffer_pos, ((x$18 < 0 || x$18 >= x$17.$length) ? $throwRuntimeError("index out of range") : x$17.$array[x$17.$offset + x$18])) === 35) { $s = 26; continue; } /* */ $s = 27; continue; /* if ((x$17 = parser$1.buffer, x$18 = parser$1.buffer_pos, ((x$18 < 0 || x$18 >= x$17.$length) ? $throwRuntimeError("index out of range") : x$17.$array[x$17.$offset + x$18])) === 35) { */ case 26: /* while (true) { */ case 28: /* if (!(!is_breakz(parser$1.buffer, parser$1.buffer_pos))) { break; } */ if(!(!is_breakz(parser$1.buffer, parser$1.buffer_pos))) { $s = 29; continue; } skip(parser$1); if (!(parser$1.unread < 1)) { _v$5 = false; $s = 32; continue s; } _r$7 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 33; case 33: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } _v$5 = !_r$7; case 32: /* */ if (_v$5) { $s = 30; continue; } /* */ $s = 31; continue; /* if (_v$5) { */ case 30: return false; /* } */ case 31: /* } */ $s = 28; continue; case 29: /* } */ case 27: if (!is_breakz(parser$1.buffer, parser$1.buffer_pos)) { yaml_parser_set_scanner_error(parser$1, "while scanning a block scalar", start_mark, "did not find expected comment or line break"); return false; } /* */ if (is_break(parser$1.buffer, parser$1.buffer_pos)) { $s = 34; continue; } /* */ $s = 35; continue; /* if (is_break(parser$1.buffer, parser$1.buffer_pos)) { */ case 34: if (!(parser$1.unread < 2)) { _v$6 = false; $s = 38; continue s; } _r$8 = yaml_parser_update_buffer(parser$1, 2); /* */ $s = 39; case 39: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } _v$6 = !_r$8; case 38: /* */ if (_v$6) { $s = 36; continue; } /* */ $s = 37; continue; /* if (_v$6) { */ case 36: return false; /* } */ case 37: skip_line(parser$1); /* } */ case 35: end_mark[0] = $clone(parser$1.mark, yaml_mark_t); indent[0] = 0; if (increment > 0) { if (parser$1.indent >= 0) { indent[0] = parser$1.indent + increment >> 0; } else { indent[0] = increment; } } _tmp$2 = sliceType$1.nil; _tmp$3 = sliceType$1.nil; _tmp$4 = sliceType$1.nil; s = _tmp$2; leading_break = _tmp$3; trailing_breaks[0] = _tmp$4; _r$9 = yaml_parser_scan_block_scalar_breaks(parser$1, (indent.$ptr || (indent.$ptr = new ptrType$8(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, indent))), (trailing_breaks.$ptr || (trailing_breaks.$ptr = new ptrType$1(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, trailing_breaks))), start_mark, end_mark[0]); /* */ $s = 42; case 42: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } /* */ if (!_r$9) { $s = 40; continue; } /* */ $s = 41; continue; /* if (!_r$9) { */ case 40: return false; /* } */ case 41: if (!(parser$1.unread < 1)) { _v$7 = false; $s = 45; continue s; } _r$10 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 46; case 46: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } _v$7 = !_r$10; case 45: /* */ if (_v$7) { $s = 43; continue; } /* */ $s = 44; continue; /* if (_v$7) { */ case 43: return false; /* } */ case 44: _tmp$5 = false; _tmp$6 = false; leading_blank = _tmp$5; trailing_blank = _tmp$6; /* while (true) { */ case 47: /* if (!((parser$1.mark.column === indent[0]) && !is_z(parser$1.buffer, parser$1.buffer_pos))) { break; } */ if(!((parser$1.mark.column === indent[0]) && !is_z(parser$1.buffer, parser$1.buffer_pos))) { $s = 48; continue; } trailing_blank = is_blank(parser$1.buffer, parser$1.buffer_pos); if (!literal && !leading_blank && !trailing_blank && leading_break.$length > 0 && ((0 >= leading_break.$length ? $throwRuntimeError("index out of range") : leading_break.$array[leading_break.$offset + 0]) === 10)) { if (trailing_breaks[0].$length === 0) { s = $append(s, 32); } } else { s = $appendSlice(s, leading_break); } leading_break = $subslice(leading_break, 0, 0); s = $appendSlice(s, trailing_breaks[0]); trailing_breaks[0] = $subslice(trailing_breaks[0], 0, 0); leading_blank = is_blank(parser$1.buffer, parser$1.buffer_pos); /* while (true) { */ case 49: /* if (!(!is_breakz(parser$1.buffer, parser$1.buffer_pos))) { break; } */ if(!(!is_breakz(parser$1.buffer, parser$1.buffer_pos))) { $s = 50; continue; } s = read(parser$1, s); if (!(parser$1.unread < 1)) { _v$8 = false; $s = 53; continue s; } _r$11 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 54; case 54: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } _v$8 = !_r$11; case 53: /* */ if (_v$8) { $s = 51; continue; } /* */ $s = 52; continue; /* if (_v$8) { */ case 51: return false; /* } */ case 52: /* } */ $s = 49; continue; case 50: if (!(parser$1.unread < 2)) { _v$9 = false; $s = 57; continue s; } _r$12 = yaml_parser_update_buffer(parser$1, 2); /* */ $s = 58; case 58: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } _v$9 = !_r$12; case 57: /* */ if (_v$9) { $s = 55; continue; } /* */ $s = 56; continue; /* if (_v$9) { */ case 55: return false; /* } */ case 56: leading_break = read_line(parser$1, leading_break); _r$13 = yaml_parser_scan_block_scalar_breaks(parser$1, (indent.$ptr || (indent.$ptr = new ptrType$8(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, indent))), (trailing_breaks.$ptr || (trailing_breaks.$ptr = new ptrType$1(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, trailing_breaks))), start_mark, end_mark[0]); /* */ $s = 61; case 61: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } /* */ if (!_r$13) { $s = 59; continue; } /* */ $s = 60; continue; /* if (!_r$13) { */ case 59: return false; /* } */ case 60: /* } */ $s = 47; continue; case 48: if (!((chomping === -1))) { s = $appendSlice(s, leading_break); } if (chomping === 1) { s = $appendSlice(s, trailing_breaks[0]); } $copy(token, new yaml_token_t.ptr(21, $clone(start_mark, yaml_mark_t), $clone(end_mark[0], yaml_mark_t), 0, s, sliceType$1.nil, sliceType$1.nil, 4, 0, 0), yaml_token_t); if (!literal) { token.style = 5; } return true; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_scan_block_scalar }; } $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$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._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._v$7 = _v$7; $f._v$8 = _v$8; $f._v$9 = _v$9; $f.chomping = chomping; $f.end_mark = end_mark; $f.increment = increment; $f.indent = indent; $f.leading_blank = leading_blank; $f.leading_break = leading_break; $f.literal = literal; $f.parser$1 = parser$1; $f.s = s; $f.start_mark = start_mark; $f.token = token; $f.trailing_blank = trailing_blank; $f.trailing_breaks = trailing_breaks; $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$17 = x$17; $f.x$18 = x$18; $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; }; yaml_parser_scan_block_scalar_breaks = function(parser$1, indent, breaks, start_mark, end_mark) { var $ptr, _r$2, _r$3, _r$4, _v, _v$1, _v$2, breaks, end_mark, indent, max_indent, parser$1, start_mark, $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; _r$3 = $f._r$3; _r$4 = $f._r$4; _v = $f._v; _v$1 = $f._v$1; _v$2 = $f._v$2; breaks = $f.breaks; end_mark = $f.end_mark; indent = $f.indent; max_indent = $f.max_indent; parser$1 = $f.parser$1; start_mark = $f.start_mark; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: start_mark = $clone(start_mark, yaml_mark_t); $copy(end_mark, parser$1.mark, yaml_mark_t); max_indent = 0; /* while (true) { */ case 1: if (!(parser$1.unread < 1)) { _v = false; $s = 5; continue s; } _r$2 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } _v = !_r$2; case 5: /* */ if (_v) { $s = 3; continue; } /* */ $s = 4; continue; /* if (_v) { */ case 3: return false; /* } */ case 4: /* while (true) { */ case 7: /* if (!(((indent.$get() === 0) || parser$1.mark.column < indent.$get()) && is_space(parser$1.buffer, parser$1.buffer_pos))) { break; } */ if(!(((indent.$get() === 0) || parser$1.mark.column < indent.$get()) && is_space(parser$1.buffer, parser$1.buffer_pos))) { $s = 8; continue; } skip(parser$1); if (!(parser$1.unread < 1)) { _v$1 = false; $s = 11; continue s; } _r$3 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } _v$1 = !_r$3; case 11: /* */ if (_v$1) { $s = 9; continue; } /* */ $s = 10; continue; /* if (_v$1) { */ case 9: return false; /* } */ case 10: /* } */ $s = 7; continue; case 8: if (parser$1.mark.column > max_indent) { max_indent = parser$1.mark.column; } if (((indent.$get() === 0) || parser$1.mark.column < indent.$get()) && is_tab(parser$1.buffer, parser$1.buffer_pos)) { return yaml_parser_set_scanner_error(parser$1, "while scanning a block scalar", start_mark, "found a tab character where an intendation space is expected"); } if (!is_break(parser$1.buffer, parser$1.buffer_pos)) { /* break; */ $s = 2; continue; } if (!(parser$1.unread < 2)) { _v$2 = false; $s = 15; continue s; } _r$4 = yaml_parser_update_buffer(parser$1, 2); /* */ $s = 16; case 16: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } _v$2 = !_r$4; case 15: /* */ if (_v$2) { $s = 13; continue; } /* */ $s = 14; continue; /* if (_v$2) { */ case 13: return false; /* } */ case 14: breaks.$set(read_line(parser$1, breaks.$get())); $copy(end_mark, parser$1.mark, yaml_mark_t); /* } */ $s = 1; continue; case 2: if (indent.$get() === 0) { indent.$set(max_indent); if (indent.$get() < (parser$1.indent + 1 >> 0)) { indent.$set(parser$1.indent + 1 >> 0); } if (indent.$get() < 1) { indent.$set(1); } } return true; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_scan_block_scalar_breaks }; } $f.$ptr = $ptr; $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.breaks = breaks; $f.end_mark = end_mark; $f.indent = indent; $f.max_indent = max_indent; $f.parser$1 = parser$1; $f.start_mark = start_mark; $f.$s = $s; $f.$r = $r; return $f; }; yaml_parser_scan_flow_scalar = function(parser$1, token, single) { var $ptr, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _v, _v$1, _v$2, _v$3, _v$4, _v$5, _v$6, code_length, end_mark, k, k$1, leading_blanks, leading_break, parser$1, s, single, start_mark, token, trailing_breaks, value, whitespaces, 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$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$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; _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; code_length = $f.code_length; end_mark = $f.end_mark; k = $f.k; k$1 = $f.k$1; leading_blanks = $f.leading_blanks; leading_break = $f.leading_break; parser$1 = $f.parser$1; s = $f.s; single = $f.single; start_mark = $f.start_mark; token = $f.token; trailing_breaks = $f.trailing_breaks; value = $f.value; whitespaces = $f.whitespaces; 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$17 = $f.x$17; x$18 = $f.x$18; x$19 = $f.x$19; x$2 = $f.x$2; x$20 = $f.x$20; x$21 = $f.x$21; x$22 = $f.x$22; x$23 = $f.x$23; x$24 = $f.x$24; x$25 = $f.x$25; x$26 = $f.x$26; x$27 = $f.x$27; x$28 = $f.x$28; x$29 = $f.x$29; x$3 = $f.x$3; x$30 = $f.x$30; 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: start_mark = $clone(parser$1.mark, yaml_mark_t); skip(parser$1); _tmp = sliceType$1.nil; _tmp$1 = sliceType$1.nil; _tmp$2 = sliceType$1.nil; _tmp$3 = sliceType$1.nil; s = _tmp; leading_break = _tmp$1; trailing_breaks = _tmp$2; whitespaces = _tmp$3; /* while (true) { */ case 1: if (!(parser$1.unread < 4)) { _v = false; $s = 5; continue s; } _r$2 = yaml_parser_update_buffer(parser$1, 4); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } _v = !_r$2; case 5: /* */ if (_v) { $s = 3; continue; } /* */ $s = 4; continue; /* if (_v) { */ case 3: return false; /* } */ case 4: if ((parser$1.mark.column === 0) && ((((x$1 = parser$1.buffer, x$2 = parser$1.buffer_pos + 0 >> 0, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])) === 45) && ((x$3 = parser$1.buffer, x$4 = parser$1.buffer_pos + 1 >> 0, ((x$4 < 0 || x$4 >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + x$4])) === 45) && ((x$5 = parser$1.buffer, x$6 = parser$1.buffer_pos + 2 >> 0, ((x$6 < 0 || x$6 >= x$5.$length) ? $throwRuntimeError("index out of range") : x$5.$array[x$5.$offset + x$6])) === 45)) || (((x$7 = parser$1.buffer, x$8 = parser$1.buffer_pos + 0 >> 0, ((x$8 < 0 || x$8 >= x$7.$length) ? $throwRuntimeError("index out of range") : x$7.$array[x$7.$offset + x$8])) === 46) && ((x$9 = parser$1.buffer, x$10 = parser$1.buffer_pos + 1 >> 0, ((x$10 < 0 || x$10 >= x$9.$length) ? $throwRuntimeError("index out of range") : x$9.$array[x$9.$offset + x$10])) === 46) && ((x$11 = parser$1.buffer, x$12 = parser$1.buffer_pos + 2 >> 0, ((x$12 < 0 || x$12 >= x$11.$length) ? $throwRuntimeError("index out of range") : x$11.$array[x$11.$offset + x$12])) === 46))) && is_blankz(parser$1.buffer, parser$1.buffer_pos + 3 >> 0)) { yaml_parser_set_scanner_error(parser$1, "while scanning a quoted scalar", start_mark, "found unexpected document indicator"); return false; } if (is_z(parser$1.buffer, parser$1.buffer_pos)) { yaml_parser_set_scanner_error(parser$1, "while scanning a quoted scalar", start_mark, "found unexpected end of stream"); return false; } leading_blanks = false; /* while (true) { */ case 7: /* if (!(!is_blankz(parser$1.buffer, parser$1.buffer_pos))) { break; } */ if(!(!is_blankz(parser$1.buffer, parser$1.buffer_pos))) { $s = 8; continue; } /* */ if (single && ((x$13 = parser$1.buffer, x$14 = parser$1.buffer_pos, ((x$14 < 0 || x$14 >= x$13.$length) ? $throwRuntimeError("index out of range") : x$13.$array[x$13.$offset + x$14])) === 39) && ((x$15 = parser$1.buffer, x$16 = parser$1.buffer_pos + 1 >> 0, ((x$16 < 0 || x$16 >= x$15.$length) ? $throwRuntimeError("index out of range") : x$15.$array[x$15.$offset + x$16])) === 39)) { $s = 9; continue; } /* */ if (single && ((x$17 = parser$1.buffer, x$18 = parser$1.buffer_pos, ((x$18 < 0 || x$18 >= x$17.$length) ? $throwRuntimeError("index out of range") : x$17.$array[x$17.$offset + x$18])) === 39)) { $s = 10; continue; } /* */ if (!single && ((x$19 = parser$1.buffer, x$20 = parser$1.buffer_pos, ((x$20 < 0 || x$20 >= x$19.$length) ? $throwRuntimeError("index out of range") : x$19.$array[x$19.$offset + x$20])) === 34)) { $s = 11; continue; } /* */ if (!single && ((x$21 = parser$1.buffer, x$22 = parser$1.buffer_pos, ((x$22 < 0 || x$22 >= x$21.$length) ? $throwRuntimeError("index out of range") : x$21.$array[x$21.$offset + x$22])) === 92) && is_break(parser$1.buffer, parser$1.buffer_pos + 1 >> 0)) { $s = 12; continue; } /* */ if (!single && ((x$23 = parser$1.buffer, x$24 = parser$1.buffer_pos, ((x$24 < 0 || x$24 >= x$23.$length) ? $throwRuntimeError("index out of range") : x$23.$array[x$23.$offset + x$24])) === 92)) { $s = 13; continue; } /* */ $s = 14; continue; /* if (single && ((x$13 = parser$1.buffer, x$14 = parser$1.buffer_pos, ((x$14 < 0 || x$14 >= x$13.$length) ? $throwRuntimeError("index out of range") : x$13.$array[x$13.$offset + x$14])) === 39) && ((x$15 = parser$1.buffer, x$16 = parser$1.buffer_pos + 1 >> 0, ((x$16 < 0 || x$16 >= x$15.$length) ? $throwRuntimeError("index out of range") : x$15.$array[x$15.$offset + x$16])) === 39)) { */ case 9: s = $append(s, 39); skip(parser$1); skip(parser$1); $s = 15; continue; /* } else if (single && ((x$17 = parser$1.buffer, x$18 = parser$1.buffer_pos, ((x$18 < 0 || x$18 >= x$17.$length) ? $throwRuntimeError("index out of range") : x$17.$array[x$17.$offset + x$18])) === 39)) { */ case 10: /* break; */ $s = 8; continue; $s = 15; continue; /* } else if (!single && ((x$19 = parser$1.buffer, x$20 = parser$1.buffer_pos, ((x$20 < 0 || x$20 >= x$19.$length) ? $throwRuntimeError("index out of range") : x$19.$array[x$19.$offset + x$20])) === 34)) { */ case 11: /* break; */ $s = 8; continue; $s = 15; continue; /* } else if (!single && ((x$21 = parser$1.buffer, x$22 = parser$1.buffer_pos, ((x$22 < 0 || x$22 >= x$21.$length) ? $throwRuntimeError("index out of range") : x$21.$array[x$21.$offset + x$22])) === 92) && is_break(parser$1.buffer, parser$1.buffer_pos + 1 >> 0)) { */ case 12: if (!(parser$1.unread < 3)) { _v$1 = false; $s = 18; continue s; } _r$3 = yaml_parser_update_buffer(parser$1, 3); /* */ $s = 19; case 19: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } _v$1 = !_r$3; case 18: /* */ if (_v$1) { $s = 16; continue; } /* */ $s = 17; continue; /* if (_v$1) { */ case 16: return false; /* } */ case 17: skip(parser$1); skip_line(parser$1); leading_blanks = true; /* break; */ $s = 8; continue; $s = 15; continue; /* } else if (!single && ((x$23 = parser$1.buffer, x$24 = parser$1.buffer_pos, ((x$24 < 0 || x$24 >= x$23.$length) ? $throwRuntimeError("index out of range") : x$23.$array[x$23.$offset + x$24])) === 92)) { */ case 13: code_length = 0; _ref = (x$25 = parser$1.buffer, x$26 = parser$1.buffer_pos + 1 >> 0, ((x$26 < 0 || x$26 >= x$25.$length) ? $throwRuntimeError("index out of range") : x$25.$array[x$25.$offset + x$26])); if (_ref === 48) { s = $append(s, 0); } else if (_ref === 97) { s = $append(s, 7); } else if (_ref === 98) { s = $append(s, 8); } else if (_ref === 116 || _ref === 9) { s = $append(s, 9); } else if (_ref === 110) { s = $append(s, 10); } else if (_ref === 118) { s = $append(s, 11); } else if (_ref === 102) { s = $append(s, 12); } else if (_ref === 114) { s = $append(s, 13); } else if (_ref === 101) { s = $append(s, 27); } else if (_ref === 32) { s = $append(s, 32); } else if (_ref === 34) { s = $append(s, 34); } else if (_ref === 39) { s = $append(s, 39); } else if (_ref === 92) { s = $append(s, 92); } else if (_ref === 78) { s = $append(s, 194); s = $append(s, 133); } else if (_ref === 95) { s = $append(s, 194); s = $append(s, 160); } else if (_ref === 76) { s = $append(s, 226); s = $append(s, 128); s = $append(s, 168); } else if (_ref === 80) { s = $append(s, 226); s = $append(s, 128); s = $append(s, 169); } else if (_ref === 120) { code_length = 2; } else if (_ref === 117) { code_length = 4; } else if (_ref === 85) { code_length = 8; } else { yaml_parser_set_scanner_error(parser$1, "while parsing a quoted scalar", start_mark, "found unknown escape character"); return false; } skip(parser$1); skip(parser$1); /* */ if (code_length > 0) { $s = 20; continue; } /* */ $s = 21; continue; /* if (code_length > 0) { */ case 20: value = 0; if (!(parser$1.unread < code_length)) { _v$2 = false; $s = 24; continue s; } _r$4 = yaml_parser_update_buffer(parser$1, code_length); /* */ $s = 25; case 25: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } _v$2 = !_r$4; case 24: /* */ if (_v$2) { $s = 22; continue; } /* */ $s = 23; continue; /* if (_v$2) { */ case 22: return false; /* } */ case 23: k = 0; while (true) { if (!(k < code_length)) { break; } if (!is_hex(parser$1.buffer, parser$1.buffer_pos + k >> 0)) { yaml_parser_set_scanner_error(parser$1, "while parsing a quoted scalar", start_mark, "did not find expected hexdecimal number"); return false; } value = ((value << 4 >> 0)) + as_hex(parser$1.buffer, parser$1.buffer_pos + k >> 0) >> 0; k = k + (1) >> 0; } if ((value >= 55296 && value <= 57343) || value > 1114111) { yaml_parser_set_scanner_error(parser$1, "while parsing a quoted scalar", start_mark, "found invalid Unicode character escape code"); return false; } if (value <= 127) { s = $append(s, (value << 24 >>> 24)); } else if (value <= 2047) { s = $append(s, ((192 + ((value >> 6 >> 0)) >> 0) << 24 >>> 24)); s = $append(s, ((128 + ((value & 63)) >> 0) << 24 >>> 24)); } else if (value <= 65535) { s = $append(s, ((224 + ((value >> 12 >> 0)) >> 0) << 24 >>> 24)); s = $append(s, ((128 + ((((value >> 6 >> 0)) & 63)) >> 0) << 24 >>> 24)); s = $append(s, ((128 + ((value & 63)) >> 0) << 24 >>> 24)); } else { s = $append(s, ((240 + ((value >> 18 >> 0)) >> 0) << 24 >>> 24)); s = $append(s, ((128 + ((((value >> 12 >> 0)) & 63)) >> 0) << 24 >>> 24)); s = $append(s, ((128 + ((((value >> 6 >> 0)) & 63)) >> 0) << 24 >>> 24)); s = $append(s, ((128 + ((value & 63)) >> 0) << 24 >>> 24)); } k$1 = 0; while (true) { if (!(k$1 < code_length)) { break; } skip(parser$1); k$1 = k$1 + (1) >> 0; } /* } */ case 21: $s = 15; continue; /* } else { */ case 14: s = read(parser$1, s); /* } */ case 15: if (!(parser$1.unread < 2)) { _v$3 = false; $s = 28; continue s; } _r$5 = yaml_parser_update_buffer(parser$1, 2); /* */ $s = 29; case 29: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } _v$3 = !_r$5; case 28: /* */ if (_v$3) { $s = 26; continue; } /* */ $s = 27; continue; /* if (_v$3) { */ case 26: return false; /* } */ case 27: /* } */ $s = 7; continue; case 8: if (single) { if ((x$27 = parser$1.buffer, x$28 = parser$1.buffer_pos, ((x$28 < 0 || x$28 >= x$27.$length) ? $throwRuntimeError("index out of range") : x$27.$array[x$27.$offset + x$28])) === 39) { /* break; */ $s = 2; continue; } } else { if ((x$29 = parser$1.buffer, x$30 = parser$1.buffer_pos, ((x$30 < 0 || x$30 >= x$29.$length) ? $throwRuntimeError("index out of range") : x$29.$array[x$29.$offset + x$30])) === 34) { /* break; */ $s = 2; continue; } } if (!(parser$1.unread < 1)) { _v$4 = false; $s = 32; continue s; } _r$6 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 33; case 33: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } _v$4 = !_r$6; case 32: /* */ if (_v$4) { $s = 30; continue; } /* */ $s = 31; continue; /* if (_v$4) { */ case 30: return false; /* } */ case 31: /* while (true) { */ case 34: /* if (!(is_blank(parser$1.buffer, parser$1.buffer_pos) || is_break(parser$1.buffer, parser$1.buffer_pos))) { break; } */ if(!(is_blank(parser$1.buffer, parser$1.buffer_pos) || is_break(parser$1.buffer, parser$1.buffer_pos))) { $s = 35; continue; } /* */ if (is_blank(parser$1.buffer, parser$1.buffer_pos)) { $s = 36; continue; } /* */ $s = 37; continue; /* if (is_blank(parser$1.buffer, parser$1.buffer_pos)) { */ case 36: if (!leading_blanks) { whitespaces = read(parser$1, whitespaces); } else { skip(parser$1); } $s = 38; continue; /* } else { */ case 37: if (!(parser$1.unread < 2)) { _v$5 = false; $s = 41; continue s; } _r$7 = yaml_parser_update_buffer(parser$1, 2); /* */ $s = 42; case 42: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } _v$5 = !_r$7; case 41: /* */ if (_v$5) { $s = 39; continue; } /* */ $s = 40; continue; /* if (_v$5) { */ case 39: return false; /* } */ case 40: if (!leading_blanks) { whitespaces = $subslice(whitespaces, 0, 0); leading_break = read_line(parser$1, leading_break); leading_blanks = true; } else { trailing_breaks = read_line(parser$1, trailing_breaks); } /* } */ case 38: if (!(parser$1.unread < 1)) { _v$6 = false; $s = 45; continue s; } _r$8 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 46; case 46: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } _v$6 = !_r$8; case 45: /* */ if (_v$6) { $s = 43; continue; } /* */ $s = 44; continue; /* if (_v$6) { */ case 43: return false; /* } */ case 44: /* } */ $s = 34; continue; case 35: if (leading_blanks) { if (leading_break.$length > 0 && ((0 >= leading_break.$length ? $throwRuntimeError("index out of range") : leading_break.$array[leading_break.$offset + 0]) === 10)) { if (trailing_breaks.$length === 0) { s = $append(s, 32); } else { s = $appendSlice(s, trailing_breaks); } } else { s = $appendSlice(s, leading_break); s = $appendSlice(s, trailing_breaks); } trailing_breaks = $subslice(trailing_breaks, 0, 0); leading_break = $subslice(leading_break, 0, 0); } else { s = $appendSlice(s, whitespaces); whitespaces = $subslice(whitespaces, 0, 0); } /* } */ $s = 1; continue; case 2: skip(parser$1); end_mark = $clone(parser$1.mark, yaml_mark_t); $copy(token, new yaml_token_t.ptr(21, $clone(start_mark, yaml_mark_t), $clone(end_mark, yaml_mark_t), 0, s, sliceType$1.nil, sliceType$1.nil, 2, 0, 0), yaml_token_t); if (!single) { token.style = 3; } return true; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_scan_flow_scalar }; } $f.$ptr = $ptr; $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._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.code_length = code_length; $f.end_mark = end_mark; $f.k = k; $f.k$1 = k$1; $f.leading_blanks = leading_blanks; $f.leading_break = leading_break; $f.parser$1 = parser$1; $f.s = s; $f.single = single; $f.start_mark = start_mark; $f.token = token; $f.trailing_breaks = trailing_breaks; $f.value = value; $f.whitespaces = whitespaces; $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$17 = x$17; $f.x$18 = x$18; $f.x$19 = x$19; $f.x$2 = x$2; $f.x$20 = x$20; $f.x$21 = x$21; $f.x$22 = x$22; $f.x$23 = x$23; $f.x$24 = x$24; $f.x$25 = x$25; $f.x$26 = x$26; $f.x$27 = x$27; $f.x$28 = x$28; $f.x$29 = x$29; $f.x$3 = x$3; $f.x$30 = x$30; $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; }; yaml_parser_scan_plain_scalar = function(parser$1, token) { var $ptr, _r$2, _r$3, _r$4, _r$5, _r$6, _tmp, _tmp$1, _tmp$2, _tmp$3, _v, _v$1, _v$2, _v$3, _v$4, end_mark, indent, leading_blanks, leading_break, parser$1, s, start_mark, token, trailing_breaks, whitespaces, 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$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$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; _v = $f._v; _v$1 = $f._v$1; _v$2 = $f._v$2; _v$3 = $f._v$3; _v$4 = $f._v$4; end_mark = $f.end_mark; indent = $f.indent; leading_blanks = $f.leading_blanks; leading_break = $f.leading_break; parser$1 = $f.parser$1; s = $f.s; start_mark = $f.start_mark; token = $f.token; trailing_breaks = $f.trailing_breaks; whitespaces = $f.whitespaces; 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$17 = $f.x$17; x$18 = $f.x$18; x$19 = $f.x$19; x$2 = $f.x$2; x$20 = $f.x$20; x$21 = $f.x$21; x$22 = $f.x$22; x$23 = $f.x$23; x$24 = $f.x$24; x$25 = $f.x$25; x$26 = $f.x$26; x$27 = $f.x$27; x$28 = $f.x$28; x$29 = $f.x$29; x$3 = $f.x$3; x$30 = $f.x$30; x$31 = $f.x$31; x$32 = $f.x$32; 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: _tmp = sliceType$1.nil; _tmp$1 = sliceType$1.nil; _tmp$2 = sliceType$1.nil; _tmp$3 = sliceType$1.nil; s = _tmp; leading_break = _tmp$1; trailing_breaks = _tmp$2; whitespaces = _tmp$3; leading_blanks = false; indent = parser$1.indent + 1 >> 0; start_mark = $clone(parser$1.mark, yaml_mark_t); end_mark = $clone(parser$1.mark, yaml_mark_t); /* while (true) { */ case 1: if (!(parser$1.unread < 4)) { _v = false; $s = 5; continue s; } _r$2 = yaml_parser_update_buffer(parser$1, 4); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } _v = !_r$2; case 5: /* */ if (_v) { $s = 3; continue; } /* */ $s = 4; continue; /* if (_v) { */ case 3: return false; /* } */ case 4: if ((parser$1.mark.column === 0) && ((((x$1 = parser$1.buffer, x$2 = parser$1.buffer_pos + 0 >> 0, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])) === 45) && ((x$3 = parser$1.buffer, x$4 = parser$1.buffer_pos + 1 >> 0, ((x$4 < 0 || x$4 >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + x$4])) === 45) && ((x$5 = parser$1.buffer, x$6 = parser$1.buffer_pos + 2 >> 0, ((x$6 < 0 || x$6 >= x$5.$length) ? $throwRuntimeError("index out of range") : x$5.$array[x$5.$offset + x$6])) === 45)) || (((x$7 = parser$1.buffer, x$8 = parser$1.buffer_pos + 0 >> 0, ((x$8 < 0 || x$8 >= x$7.$length) ? $throwRuntimeError("index out of range") : x$7.$array[x$7.$offset + x$8])) === 46) && ((x$9 = parser$1.buffer, x$10 = parser$1.buffer_pos + 1 >> 0, ((x$10 < 0 || x$10 >= x$9.$length) ? $throwRuntimeError("index out of range") : x$9.$array[x$9.$offset + x$10])) === 46) && ((x$11 = parser$1.buffer, x$12 = parser$1.buffer_pos + 2 >> 0, ((x$12 < 0 || x$12 >= x$11.$length) ? $throwRuntimeError("index out of range") : x$11.$array[x$11.$offset + x$12])) === 46))) && is_blankz(parser$1.buffer, parser$1.buffer_pos + 3 >> 0)) { /* break; */ $s = 2; continue; } if ((x$13 = parser$1.buffer, x$14 = parser$1.buffer_pos, ((x$14 < 0 || x$14 >= x$13.$length) ? $throwRuntimeError("index out of range") : x$13.$array[x$13.$offset + x$14])) === 35) { /* break; */ $s = 2; continue; } /* while (true) { */ case 7: /* if (!(!is_blankz(parser$1.buffer, parser$1.buffer_pos))) { break; } */ if(!(!is_blankz(parser$1.buffer, parser$1.buffer_pos))) { $s = 8; continue; } if (parser$1.flow_level > 0 && ((x$15 = parser$1.buffer, x$16 = parser$1.buffer_pos, ((x$16 < 0 || x$16 >= x$15.$length) ? $throwRuntimeError("index out of range") : x$15.$array[x$15.$offset + x$16])) === 58) && !is_blankz(parser$1.buffer, parser$1.buffer_pos + 1 >> 0)) { yaml_parser_set_scanner_error(parser$1, "while scanning a plain scalar", start_mark, "found unexpected ':'"); return false; } if ((((x$17 = parser$1.buffer, x$18 = parser$1.buffer_pos, ((x$18 < 0 || x$18 >= x$17.$length) ? $throwRuntimeError("index out of range") : x$17.$array[x$17.$offset + x$18])) === 58) && is_blankz(parser$1.buffer, parser$1.buffer_pos + 1 >> 0)) || (parser$1.flow_level > 0 && (((x$19 = parser$1.buffer, x$20 = parser$1.buffer_pos, ((x$20 < 0 || x$20 >= x$19.$length) ? $throwRuntimeError("index out of range") : x$19.$array[x$19.$offset + x$20])) === 44) || ((x$21 = parser$1.buffer, x$22 = parser$1.buffer_pos, ((x$22 < 0 || x$22 >= x$21.$length) ? $throwRuntimeError("index out of range") : x$21.$array[x$21.$offset + x$22])) === 58) || ((x$23 = parser$1.buffer, x$24 = parser$1.buffer_pos, ((x$24 < 0 || x$24 >= x$23.$length) ? $throwRuntimeError("index out of range") : x$23.$array[x$23.$offset + x$24])) === 63) || ((x$25 = parser$1.buffer, x$26 = parser$1.buffer_pos, ((x$26 < 0 || x$26 >= x$25.$length) ? $throwRuntimeError("index out of range") : x$25.$array[x$25.$offset + x$26])) === 91) || ((x$27 = parser$1.buffer, x$28 = parser$1.buffer_pos, ((x$28 < 0 || x$28 >= x$27.$length) ? $throwRuntimeError("index out of range") : x$27.$array[x$27.$offset + x$28])) === 93) || ((x$29 = parser$1.buffer, x$30 = parser$1.buffer_pos, ((x$30 < 0 || x$30 >= x$29.$length) ? $throwRuntimeError("index out of range") : x$29.$array[x$29.$offset + x$30])) === 123) || ((x$31 = parser$1.buffer, x$32 = parser$1.buffer_pos, ((x$32 < 0 || x$32 >= x$31.$length) ? $throwRuntimeError("index out of range") : x$31.$array[x$31.$offset + x$32])) === 125)))) { /* break; */ $s = 8; continue; } if (leading_blanks || whitespaces.$length > 0) { if (leading_blanks) { if ((0 >= leading_break.$length ? $throwRuntimeError("index out of range") : leading_break.$array[leading_break.$offset + 0]) === 10) { if (trailing_breaks.$length === 0) { s = $append(s, 32); } else { s = $appendSlice(s, trailing_breaks); } } else { s = $appendSlice(s, leading_break); s = $appendSlice(s, trailing_breaks); } trailing_breaks = $subslice(trailing_breaks, 0, 0); leading_break = $subslice(leading_break, 0, 0); leading_blanks = false; } else { s = $appendSlice(s, whitespaces); whitespaces = $subslice(whitespaces, 0, 0); } } s = read(parser$1, s); $copy(end_mark, parser$1.mark, yaml_mark_t); if (!(parser$1.unread < 2)) { _v$1 = false; $s = 11; continue s; } _r$3 = yaml_parser_update_buffer(parser$1, 2); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } _v$1 = !_r$3; case 11: /* */ if (_v$1) { $s = 9; continue; } /* */ $s = 10; continue; /* if (_v$1) { */ case 9: return false; /* } */ case 10: /* } */ $s = 7; continue; case 8: if (!(is_blank(parser$1.buffer, parser$1.buffer_pos) || is_break(parser$1.buffer, parser$1.buffer_pos))) { /* break; */ $s = 2; continue; } if (!(parser$1.unread < 1)) { _v$2 = false; $s = 15; continue s; } _r$4 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 16; case 16: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } _v$2 = !_r$4; case 15: /* */ if (_v$2) { $s = 13; continue; } /* */ $s = 14; continue; /* if (_v$2) { */ case 13: return false; /* } */ case 14: /* while (true) { */ case 17: /* if (!(is_blank(parser$1.buffer, parser$1.buffer_pos) || is_break(parser$1.buffer, parser$1.buffer_pos))) { break; } */ if(!(is_blank(parser$1.buffer, parser$1.buffer_pos) || is_break(parser$1.buffer, parser$1.buffer_pos))) { $s = 18; continue; } /* */ if (is_blank(parser$1.buffer, parser$1.buffer_pos)) { $s = 19; continue; } /* */ $s = 20; continue; /* if (is_blank(parser$1.buffer, parser$1.buffer_pos)) { */ case 19: if (leading_blanks && parser$1.mark.column < indent && is_tab(parser$1.buffer, parser$1.buffer_pos)) { yaml_parser_set_scanner_error(parser$1, "while scanning a plain scalar", start_mark, "found a tab character that violate intendation"); return false; } if (!leading_blanks) { whitespaces = read(parser$1, whitespaces); } else { skip(parser$1); } $s = 21; continue; /* } else { */ case 20: if (!(parser$1.unread < 2)) { _v$3 = false; $s = 24; continue s; } _r$5 = yaml_parser_update_buffer(parser$1, 2); /* */ $s = 25; case 25: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } _v$3 = !_r$5; case 24: /* */ if (_v$3) { $s = 22; continue; } /* */ $s = 23; continue; /* if (_v$3) { */ case 22: return false; /* } */ case 23: if (!leading_blanks) { whitespaces = $subslice(whitespaces, 0, 0); leading_break = read_line(parser$1, leading_break); leading_blanks = true; } else { trailing_breaks = read_line(parser$1, trailing_breaks); } /* } */ case 21: if (!(parser$1.unread < 1)) { _v$4 = false; $s = 28; continue s; } _r$6 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 29; case 29: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } _v$4 = !_r$6; case 28: /* */ if (_v$4) { $s = 26; continue; } /* */ $s = 27; continue; /* if (_v$4) { */ case 26: return false; /* } */ case 27: /* } */ $s = 17; continue; case 18: if ((parser$1.flow_level === 0) && parser$1.mark.column < indent) { /* break; */ $s = 2; continue; } /* } */ $s = 1; continue; case 2: $copy(token, new yaml_token_t.ptr(21, $clone(start_mark, yaml_mark_t), $clone(end_mark, yaml_mark_t), 0, s, sliceType$1.nil, sliceType$1.nil, 1, 0, 0), yaml_token_t); if (leading_blanks) { parser$1.simple_key_allowed = true; } return true; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_scan_plain_scalar }; } $f.$ptr = $ptr; $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._v = _v; $f._v$1 = _v$1; $f._v$2 = _v$2; $f._v$3 = _v$3; $f._v$4 = _v$4; $f.end_mark = end_mark; $f.indent = indent; $f.leading_blanks = leading_blanks; $f.leading_break = leading_break; $f.parser$1 = parser$1; $f.s = s; $f.start_mark = start_mark; $f.token = token; $f.trailing_breaks = trailing_breaks; $f.whitespaces = whitespaces; $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$17 = x$17; $f.x$18 = x$18; $f.x$19 = x$19; $f.x$2 = x$2; $f.x$20 = x$20; $f.x$21 = x$21; $f.x$22 = x$22; $f.x$23 = x$23; $f.x$24 = x$24; $f.x$25 = x$25; $f.x$26 = x$26; $f.x$27 = x$27; $f.x$28 = x$28; $f.x$29 = x$29; $f.x$3 = x$3; $f.x$30 = x$30; $f.x$31 = x$31; $f.x$32 = x$32; $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; }; Unmarshal = function(in$1, out) { var $ptr, _r$2, _r$3, _r$4, _r$5, _r$6, d, err, in$1, node$1, out, p, v, $s, $deferred, $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; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; d = $f.d; err = $f.err; in$1 = $f.in$1; node$1 = $f.node$1; out = $f.out; p = $f.p; 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; $deferred.push([handleErr, [(err.$ptr || (err.$ptr = new ptrType$5(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, err)))]]); d = newDecoder(); _r$2 = newParser(in$1); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } p = _r$2; $deferred.push([$methodVal(p, "destroy"), []]); _r$3 = p.parse(); /* */ $s = 2; case 2: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } node$1 = _r$3; /* */ if (!(node$1 === ptrType$4.nil)) { $s = 3; continue; } /* */ $s = 4; continue; /* if (!(node$1 === ptrType$4.nil)) { */ case 3: _r$4 = reflect.ValueOf(out); /* */ $s = 5; case 5: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } v = _r$4; /* */ if ((v.Kind() === 22) && !v.IsNil()) { $s = 6; continue; } /* */ $s = 7; continue; /* if ((v.Kind() === 22) && !v.IsNil()) { */ case 6: _r$5 = v.Elem(); /* */ $s = 8; case 8: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } v = _r$5; /* } */ case 7: _r$6 = d.unmarshal(node$1, v); /* */ $s = 9; case 9: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } _r$6; /* } */ case 4: if (d.terrors.$length > 0) { err[0] = new TypeError.ptr(d.terrors); return err[0]; } err[0] = $ifaceNil; return err[0]; /* */ $s = -1; case -1: } 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: Unmarshal }; } $f.$ptr = $ptr; $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.d = d; $f.err = err; $f.in$1 = in$1; $f.node$1 = node$1; $f.out = out; $f.p = p; $f.v = v; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } }; $pkg.Unmarshal = Unmarshal; handleErr = function(err) { var $ptr, _tuple, e, err, ok, v; v = $recover(); if (!($interfaceIsEqual(v, $ifaceNil))) { _tuple = $assertType(v, yamlError, true); e = $clone(_tuple[0], yamlError); ok = _tuple[1]; if (ok) { err.$set(e.err); } else { $panic(v); } } }; fail = function(err) { var $ptr, err, x$1; $panic((x$1 = new yamlError.ptr(err), new x$1.constructor.elem(x$1))); }; failf = function(format, args) { var $ptr, _r$2, args, format, x$1, $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; args = $f.args; format = $f.format; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: _r$2 = fmt.Errorf("yaml: " + format, args); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } $panic((x$1 = new yamlError.ptr(_r$2), new x$1.constructor.elem(x$1))); /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: failf }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f.args = args; $f.format = format; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f; }; TypeError.ptr.prototype.Error = function() { var $ptr, _r$2, e, $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; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: e = this; _r$2 = fmt.Sprintf("yaml: unmarshal errors:\n %s", new sliceType$10([new $String(strings.Join(e.Errors, "\n "))])); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } return _r$2; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: TypeError.ptr.prototype.Error }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f.e = e; $f.$s = $s; $f.$r = $r; return $f; }; TypeError.prototype.Error = function() { return this.$val.Error(); }; getStructInfo = function(st) { var $ptr, _entry, _entry$1, _entry$2, _i, _i$1, _key$1, _key$2, _key$3, _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, _ref$3, _tuple, _tuple$1, _tuple$2, _tuple$3, err, field, fields, fieldsList, fieldsMap, finfo, flag, found, found$1, i, info, inline, inlineMap, msg, msg$1, n, sinfo, sinfo$1, st, tag, $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; _i$1 = $f._i$1; _key$1 = $f._key$1; _key$2 = $f._key$2; _key$3 = $f._key$3; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$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; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; err = $f.err; field = $f.field; fields = $f.fields; fieldsList = $f.fieldsList; fieldsMap = $f.fieldsMap; finfo = $f.finfo; flag = $f.flag; found = $f.found; found$1 = $f.found$1; i = $f.i; info = $f.info; inline = $f.inline; inlineMap = $f.inlineMap; msg = $f.msg; msg$1 = $f.msg$1; n = $f.n; sinfo = $f.sinfo; sinfo$1 = $f.sinfo$1; st = $f.st; tag = $f.tag; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: $r = fieldMapMutex.RLock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } _tuple = (_entry = structMap[st.$key()], _entry !== undefined ? [_entry.v, true] : [ptrType$14.nil, false]); sinfo = _tuple[0]; found = _tuple[1]; $r = fieldMapMutex.RUnlock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } if (found) { return [sinfo, $ifaceNil]; } _r$2 = st.NumField(); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } n = _r$2; fieldsMap = new $Map(); fieldsList = $makeSlice(sliceType$16, 0, n); inlineMap = -1; i = 0; /* while (true) { */ case 4: /* if (!(!((i === n)))) { break; } */ if(!(!((i === n)))) { $s = 5; continue; } _r$3 = st.Field(i); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } field = $clone(_r$3, reflect.StructField); /* */ if (!(field.PkgPath === "")) { $s = 7; continue; } /* */ $s = 8; continue; /* if (!(field.PkgPath === "")) { */ case 7: i = i + (1) >> 0; /* continue; */ $s = 4; continue; /* } */ case 8: info = new fieldInfo.ptr("", i, false, false, sliceType$3.nil); tag = new reflect.StructTag(field.Tag).Get("yaml"); if (tag === "" && strings.Index(field.Tag, ":") < 0) { tag = field.Tag; } /* */ if (tag === "-") { $s = 9; continue; } /* */ $s = 10; continue; /* if (tag === "-") { */ case 9: i = i + (1) >> 0; /* continue; */ $s = 4; continue; /* } */ case 10: inline = false; fields = strings.Split(tag, ","); /* */ if (fields.$length > 1) { $s = 11; continue; } /* */ $s = 12; continue; /* if (fields.$length > 1) { */ case 11: _ref = $subslice(fields, 1); _i = 0; /* while (true) { */ case 13: /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 14; continue; } flag = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]); _ref$1 = flag; /* */ if (_ref$1 === "omitempty") { $s = 15; continue; } /* */ if (_ref$1 === "flow") { $s = 16; continue; } /* */ if (_ref$1 === "inline") { $s = 17; continue; } /* */ $s = 18; continue; /* if (_ref$1 === "omitempty") { */ case 15: info.OmitEmpty = true; $s = 19; continue; /* } else if (_ref$1 === "flow") { */ case 16: info.Flow = true; $s = 19; continue; /* } else if (_ref$1 === "inline") { */ case 17: inline = true; $s = 19; continue; /* } else { */ case 18: _r$4 = fmt.Sprintf("Unsupported flag %q in tag %q of type %s", new sliceType$10([new $String(flag), new $String(tag), st])); /* */ $s = 20; case 20: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } _r$5 = errors.New(_r$4); /* */ $s = 21; case 21: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } return [ptrType$14.nil, _r$5]; /* } */ case 19: _i++; /* } */ $s = 13; continue; case 14: tag = (0 >= fields.$length ? $throwRuntimeError("index out of range") : fields.$array[fields.$offset + 0]); /* } */ case 12: /* */ if (inline) { $s = 22; continue; } /* */ $s = 23; continue; /* if (inline) { */ case 22: _r$6 = field.Type.Kind(); /* */ $s = 24; case 24: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } _ref$2 = _r$6; /* */ if (_ref$2 === 21) { $s = 25; continue; } /* */ if (_ref$2 === 25) { $s = 26; continue; } /* */ $s = 27; continue; /* if (_ref$2 === 21) { */ case 25: /* */ if (inlineMap >= 0) { $s = 29; continue; } /* */ $s = 30; continue; /* if (inlineMap >= 0) { */ case 29: _r$7 = st.String(); /* */ $s = 31; case 31: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } _r$8 = errors.New("Multiple ,inline maps in struct " + _r$7); /* */ $s = 32; case 32: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } return [ptrType$14.nil, _r$8]; /* } */ case 30: _r$9 = field.Type.Key(); /* */ $s = 35; case 35: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } /* */ if (!($interfaceIsEqual(_r$9, reflect.TypeOf(new $String(""))))) { $s = 33; continue; } /* */ $s = 34; continue; /* if (!($interfaceIsEqual(_r$9, reflect.TypeOf(new $String(""))))) { */ case 33: _r$10 = st.String(); /* */ $s = 36; case 36: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } _r$11 = errors.New("Option ,inline needs a map with string keys in struct " + _r$10); /* */ $s = 37; case 37: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } return [ptrType$14.nil, _r$11]; /* } */ case 34: inlineMap = info.Num; $s = 28; continue; /* } else if (_ref$2 === 25) { */ case 26: _r$12 = getStructInfo(field.Type); /* */ $s = 38; case 38: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } _tuple$1 = _r$12; sinfo$1 = _tuple$1[0]; err = _tuple$1[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { return [ptrType$14.nil, err]; } _ref$3 = sinfo$1.FieldsList; _i$1 = 0; /* while (true) { */ case 39: /* if (!(_i$1 < _ref$3.$length)) { break; } */ if(!(_i$1 < _ref$3.$length)) { $s = 40; continue; } finfo = $clone(((_i$1 < 0 || _i$1 >= _ref$3.$length) ? $throwRuntimeError("index out of range") : _ref$3.$array[_ref$3.$offset + _i$1]), fieldInfo); _tuple$2 = (_entry$1 = fieldsMap[finfo.Key], _entry$1 !== undefined ? [_entry$1.v, true] : [new fieldInfo.ptr(), false]); found$1 = _tuple$2[1]; /* */ if (found$1) { $s = 41; continue; } /* */ $s = 42; continue; /* if (found$1) { */ case 41: _r$13 = st.String(); /* */ $s = 43; case 43: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } msg = "Duplicated key '" + finfo.Key + "' in struct " + _r$13; return [ptrType$14.nil, errors.New(msg)]; /* } */ case 42: if (finfo.Inline === sliceType$3.nil) { finfo.Inline = new sliceType$3([i, finfo.Num]); } else { finfo.Inline = $appendSlice(new sliceType$3([i]), finfo.Inline); } _key$1 = finfo.Key; (fieldsMap || $throwRuntimeError("assignment to entry in nil map"))[_key$1] = { k: _key$1, v: $clone(finfo, fieldInfo) }; fieldsList = $append(fieldsList, finfo); _i$1++; /* } */ $s = 39; continue; case 40: $s = 28; continue; /* } else { */ case 27: return [ptrType$14.nil, errors.New("Option ,inline needs a struct value field")]; /* } */ case 28: i = i + (1) >> 0; /* continue; */ $s = 4; continue; /* } */ case 23: /* */ if (!(tag === "")) { $s = 44; continue; } /* */ $s = 45; continue; /* if (!(tag === "")) { */ case 44: info.Key = tag; $s = 46; continue; /* } else { */ case 45: _r$14 = strings.ToLower(field.Name); /* */ $s = 47; case 47: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } info.Key = _r$14; /* } */ case 46: _tuple$3 = (_entry$2 = fieldsMap[info.Key], _entry$2 !== undefined ? [_entry$2.v, true] : [new fieldInfo.ptr(), false]); found = _tuple$3[1]; /* */ if (found) { $s = 48; continue; } /* */ $s = 49; continue; /* if (found) { */ case 48: _r$15 = st.String(); /* */ $s = 50; case 50: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } msg$1 = "Duplicated key '" + info.Key + "' in struct " + _r$15; return [ptrType$14.nil, errors.New(msg$1)]; /* } */ case 49: fieldsList = $append(fieldsList, info); _key$2 = info.Key; (fieldsMap || $throwRuntimeError("assignment to entry in nil map"))[_key$2] = { k: _key$2, v: $clone(info, fieldInfo) }; i = i + (1) >> 0; /* } */ $s = 4; continue; case 5: sinfo = new structInfo.ptr(fieldsMap, fieldsList, inlineMap); $r = fieldMapMutex.Lock(); /* */ $s = 51; case 51: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } _key$3 = st; (structMap || $throwRuntimeError("assignment to entry in nil map"))[_key$3.$key()] = { k: _key$3, v: sinfo }; $r = fieldMapMutex.Unlock(); /* */ $s = 52; case 52: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } return [sinfo, $ifaceNil]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: getStructInfo }; } $f.$ptr = $ptr; $f._entry = _entry; $f._entry$1 = _entry$1; $f._entry$2 = _entry$2; $f._i = _i; $f._i$1 = _i$1; $f._key$1 = _key$1; $f._key$2 = _key$2; $f._key$3 = _key$3; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$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._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.err = err; $f.field = field; $f.fields = fields; $f.fieldsList = fieldsList; $f.fieldsMap = fieldsMap; $f.finfo = finfo; $f.flag = flag; $f.found = found; $f.found$1 = found$1; $f.i = i; $f.info = info; $f.inline = inline; $f.inlineMap = inlineMap; $f.msg = msg; $f.msg$1 = msg$1; $f.n = n; $f.sinfo = sinfo; $f.sinfo$1 = sinfo$1; $f.st = st; $f.tag = tag; $f.$s = $s; $f.$r = $r; return $f; }; yaml_token_type_t.prototype.String = function() { var $ptr, _ref, tt; tt = this.$val; _ref = tt; if (_ref === 0) { return "yaml_NO_TOKEN"; } else if (_ref === 1) { return "yaml_STREAM_START_TOKEN"; } else if (_ref === 2) { return "yaml_STREAM_END_TOKEN"; } else if (_ref === 3) { return "yaml_VERSION_DIRECTIVE_TOKEN"; } else if (_ref === 4) { return "yaml_TAG_DIRECTIVE_TOKEN"; } else if (_ref === 5) { return "yaml_DOCUMENT_START_TOKEN"; } else if (_ref === 6) { return "yaml_DOCUMENT_END_TOKEN"; } else if (_ref === 7) { return "yaml_BLOCK_SEQUENCE_START_TOKEN"; } else if (_ref === 8) { return "yaml_BLOCK_MAPPING_START_TOKEN"; } else if (_ref === 9) { return "yaml_BLOCK_END_TOKEN"; } else if (_ref === 10) { return "yaml_FLOW_SEQUENCE_START_TOKEN"; } else if (_ref === 11) { return "yaml_FLOW_SEQUENCE_END_TOKEN"; } else if (_ref === 12) { return "yaml_FLOW_MAPPING_START_TOKEN"; } else if (_ref === 13) { return "yaml_FLOW_MAPPING_END_TOKEN"; } else if (_ref === 14) { return "yaml_BLOCK_ENTRY_TOKEN"; } else if (_ref === 15) { return "yaml_FLOW_ENTRY_TOKEN"; } else if (_ref === 16) { return "yaml_KEY_TOKEN"; } else if (_ref === 17) { return "yaml_VALUE_TOKEN"; } else if (_ref === 18) { return "yaml_ALIAS_TOKEN"; } else if (_ref === 19) { return "yaml_ANCHOR_TOKEN"; } else if (_ref === 20) { return "yaml_TAG_TOKEN"; } else if (_ref === 21) { return "yaml_SCALAR_TOKEN"; } return ""; }; $ptrType(yaml_token_type_t).prototype.String = function() { return new yaml_token_type_t(this.$get()).String(); }; yaml_parser_state_t.prototype.String = function() { var $ptr, _ref, ps; ps = this.$val; _ref = ps; if (_ref === 0) { return "yaml_PARSE_STREAM_START_STATE"; } else if (_ref === 1) { return "yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE"; } else if (_ref === 2) { return "yaml_PARSE_DOCUMENT_START_STATE"; } else if (_ref === 3) { return "yaml_PARSE_DOCUMENT_CONTENT_STATE"; } else if (_ref === 4) { return "yaml_PARSE_DOCUMENT_END_STATE"; } else if (_ref === 5) { return "yaml_PARSE_BLOCK_NODE_STATE"; } else if (_ref === 6) { return "yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE"; } else if (_ref === 7) { return "yaml_PARSE_FLOW_NODE_STATE"; } else if (_ref === 8) { return "yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE"; } else if (_ref === 9) { return "yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE"; } else if (_ref === 10) { return "yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE"; } else if (_ref === 11) { return "yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE"; } else if (_ref === 12) { return "yaml_PARSE_BLOCK_MAPPING_KEY_STATE"; } else if (_ref === 13) { return "yaml_PARSE_BLOCK_MAPPING_VALUE_STATE"; } else if (_ref === 14) { return "yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE"; } else if (_ref === 15) { return "yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE"; } else if (_ref === 16) { return "yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE"; } else if (_ref === 17) { return "yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE"; } else if (_ref === 18) { return "yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE"; } else if (_ref === 19) { return "yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE"; } else if (_ref === 20) { return "yaml_PARSE_FLOW_MAPPING_KEY_STATE"; } else if (_ref === 21) { return "yaml_PARSE_FLOW_MAPPING_VALUE_STATE"; } else if (_ref === 22) { return "yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE"; } else if (_ref === 23) { return "yaml_PARSE_END_STATE"; } return ""; }; $ptrType(yaml_parser_state_t).prototype.String = function() { return new yaml_parser_state_t(this.$get()).String(); }; is_alpha = function(b, i) { var $ptr, b, i; return ((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) >= 48 && ((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) <= 57 || ((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) >= 65 && ((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) <= 90 || ((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) >= 97 && ((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) <= 122 || (((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) === 95) || (((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) === 45); }; is_digit = function(b, i) { var $ptr, b, i; return ((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) >= 48 && ((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) <= 57; }; as_digit = function(b, i) { var $ptr, b, i; return (((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) >> 0) - 48 >> 0; }; is_hex = function(b, i) { var $ptr, b, i; return ((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) >= 48 && ((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) <= 57 || ((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) >= 65 && ((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) <= 70 || ((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) >= 97 && ((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) <= 102; }; as_hex = function(b, i) { var $ptr, b, bi, i; bi = ((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]); if (bi >= 65 && bi <= 70) { return ((bi >> 0) - 65 >> 0) + 10 >> 0; } if (bi >= 97 && bi <= 102) { return ((bi >> 0) - 97 >> 0) + 10 >> 0; } return (bi >> 0) - 48 >> 0; }; is_z = function(b, i) { var $ptr, b, i; return ((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) === 0; }; is_bom = function(b, i) { var $ptr, b, i; return ((0 >= b.$length ? $throwRuntimeError("index out of range") : b.$array[b.$offset + 0]) === 239) && ((1 >= b.$length ? $throwRuntimeError("index out of range") : b.$array[b.$offset + 1]) === 187) && ((2 >= b.$length ? $throwRuntimeError("index out of range") : b.$array[b.$offset + 2]) === 191); }; is_space = function(b, i) { var $ptr, b, i; return ((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) === 32; }; is_tab = function(b, i) { var $ptr, b, i; return ((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) === 9; }; is_blank = function(b, i) { var $ptr, b, i; return (((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) === 32) || (((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) === 9); }; is_break = function(b, i) { var $ptr, b, i, x$1, x$2, x$3, x$4, x$5; return (((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) === 13) || (((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) === 10) || (((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) === 194) && ((x$1 = i + 1 >> 0, ((x$1 < 0 || x$1 >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + x$1])) === 133) || (((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) === 226) && ((x$2 = i + 1 >> 0, ((x$2 < 0 || x$2 >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + x$2])) === 128) && ((x$3 = i + 2 >> 0, ((x$3 < 0 || x$3 >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + x$3])) === 168) || (((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) === 226) && ((x$4 = i + 1 >> 0, ((x$4 < 0 || x$4 >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + x$4])) === 128) && ((x$5 = i + 2 >> 0, ((x$5 < 0 || x$5 >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + x$5])) === 169); }; is_crlf = function(b, i) { var $ptr, b, i, x$1; return (((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) === 13) && ((x$1 = i + 1 >> 0, ((x$1 < 0 || x$1 >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + x$1])) === 10); }; is_breakz = function(b, i) { var $ptr, b, i, x$1, x$2, x$3, x$4, x$5; return (((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) === 13) || (((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) === 10) || (((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) === 194) && ((x$1 = i + 1 >> 0, ((x$1 < 0 || x$1 >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + x$1])) === 133) || (((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) === 226) && ((x$2 = i + 1 >> 0, ((x$2 < 0 || x$2 >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + x$2])) === 128) && ((x$3 = i + 2 >> 0, ((x$3 < 0 || x$3 >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + x$3])) === 168) || (((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) === 226) && ((x$4 = i + 1 >> 0, ((x$4 < 0 || x$4 >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + x$4])) === 128) && ((x$5 = i + 2 >> 0, ((x$5 < 0 || x$5 >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + x$5])) === 169) || (((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) === 0); }; is_blankz = function(b, i) { var $ptr, b, i, x$1, x$2, x$3, x$4, x$5; return (((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) === 32) || (((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) === 9) || (((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) === 13) || (((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) === 10) || (((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) === 194) && ((x$1 = i + 1 >> 0, ((x$1 < 0 || x$1 >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + x$1])) === 133) || (((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) === 226) && ((x$2 = i + 1 >> 0, ((x$2 < 0 || x$2 >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + x$2])) === 128) && ((x$3 = i + 2 >> 0, ((x$3 < 0 || x$3 >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + x$3])) === 168) || (((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) === 226) && ((x$4 = i + 1 >> 0, ((x$4 < 0 || x$4 >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + x$4])) === 128) && ((x$5 = i + 2 >> 0, ((x$5 < 0 || x$5 >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + x$5])) === 169) || (((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) === 0); }; width = function(b) { var $ptr, b; if (((b & 128) >>> 0) === 0) { return 1; } if (((b & 224) >>> 0) === 192) { return 2; } if (((b & 240) >>> 0) === 224) { return 3; } if (((b & 248) >>> 0) === 240) { return 4; } return 0; }; ptrType$15.methods = [{prop: "destroy", name: "destroy", pkg: "gopkg.in/yaml.v2", typ: $funcType([], [], false)}, {prop: "skip", name: "skip", pkg: "gopkg.in/yaml.v2", typ: $funcType([], [], false)}, {prop: "fail", name: "fail", pkg: "gopkg.in/yaml.v2", typ: $funcType([], [], false)}, {prop: "anchor", name: "anchor", pkg: "gopkg.in/yaml.v2", typ: $funcType([ptrType$4, sliceType$1], [], false)}, {prop: "parse", name: "parse", pkg: "gopkg.in/yaml.v2", typ: $funcType([], [ptrType$4], false)}, {prop: "node", name: "node", pkg: "gopkg.in/yaml.v2", typ: $funcType([$Int], [ptrType$4], false)}, {prop: "document", name: "document", pkg: "gopkg.in/yaml.v2", typ: $funcType([], [ptrType$4], false)}, {prop: "alias", name: "alias", pkg: "gopkg.in/yaml.v2", typ: $funcType([], [ptrType$4], false)}, {prop: "scalar", name: "scalar", pkg: "gopkg.in/yaml.v2", typ: $funcType([], [ptrType$4], false)}, {prop: "sequence", name: "sequence", pkg: "gopkg.in/yaml.v2", typ: $funcType([], [ptrType$4], false)}, {prop: "mapping", name: "mapping", pkg: "gopkg.in/yaml.v2", typ: $funcType([], [ptrType$4], false)}]; ptrType$16.methods = [{prop: "terror", name: "terror", pkg: "gopkg.in/yaml.v2", typ: $funcType([ptrType$4, $String, reflect.Value], [], false)}, {prop: "callUnmarshaler", name: "callUnmarshaler", pkg: "gopkg.in/yaml.v2", typ: $funcType([ptrType$4, Unmarshaler], [$Bool], false)}, {prop: "prepare", name: "prepare", pkg: "gopkg.in/yaml.v2", typ: $funcType([ptrType$4, reflect.Value], [reflect.Value, $Bool, $Bool], false)}, {prop: "unmarshal", name: "unmarshal", pkg: "gopkg.in/yaml.v2", typ: $funcType([ptrType$4, reflect.Value], [$Bool], false)}, {prop: "document", name: "document", pkg: "gopkg.in/yaml.v2", typ: $funcType([ptrType$4, reflect.Value], [$Bool], false)}, {prop: "alias", name: "alias", pkg: "gopkg.in/yaml.v2", typ: $funcType([ptrType$4, reflect.Value], [$Bool], false)}, {prop: "scalar", name: "scalar", pkg: "gopkg.in/yaml.v2", typ: $funcType([ptrType$4, reflect.Value], [$Bool], false)}, {prop: "sequence", name: "sequence", pkg: "gopkg.in/yaml.v2", typ: $funcType([ptrType$4, reflect.Value], [$Bool], false)}, {prop: "mapping", name: "mapping", pkg: "gopkg.in/yaml.v2", typ: $funcType([ptrType$4, reflect.Value], [$Bool], false)}, {prop: "mappingSlice", name: "mappingSlice", pkg: "gopkg.in/yaml.v2", typ: $funcType([ptrType$4, reflect.Value], [$Bool], false)}, {prop: "mappingStruct", name: "mappingStruct", pkg: "gopkg.in/yaml.v2", typ: $funcType([ptrType$4, reflect.Value], [$Bool], false)}, {prop: "merge", name: "merge", pkg: "gopkg.in/yaml.v2", typ: $funcType([ptrType$4, reflect.Value], [], false)}]; ptrType$6.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; yaml_token_type_t.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; ptrType$17.methods = [{prop: "scalar_style", name: "scalar_style", pkg: "gopkg.in/yaml.v2", typ: $funcType([], [yaml_scalar_style_t], false)}, {prop: "sequence_style", name: "sequence_style", pkg: "gopkg.in/yaml.v2", typ: $funcType([], [yaml_sequence_style_t], false)}, {prop: "mapping_style", name: "mapping_style", pkg: "gopkg.in/yaml.v2", typ: $funcType([], [yaml_mapping_style_t], false)}]; yaml_parser_state_t.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; node.init([{prop: "kind", name: "kind", pkg: "gopkg.in/yaml.v2", typ: $Int, tag: ""}, {prop: "line", name: "line", pkg: "gopkg.in/yaml.v2", typ: $Int, tag: ""}, {prop: "column", name: "column", pkg: "gopkg.in/yaml.v2", typ: $Int, tag: ""}, {prop: "tag", name: "tag", pkg: "gopkg.in/yaml.v2", typ: $String, tag: ""}, {prop: "value", name: "value", pkg: "gopkg.in/yaml.v2", typ: $String, tag: ""}, {prop: "implicit", name: "implicit", pkg: "gopkg.in/yaml.v2", typ: $Bool, tag: ""}, {prop: "children", name: "children", pkg: "gopkg.in/yaml.v2", typ: sliceType$11, tag: ""}, {prop: "anchors", name: "anchors", pkg: "gopkg.in/yaml.v2", typ: mapType$1, tag: ""}]); parser.init([{prop: "parser", name: "parser", pkg: "gopkg.in/yaml.v2", typ: yaml_parser_t, tag: ""}, {prop: "event", name: "event", pkg: "gopkg.in/yaml.v2", typ: yaml_event_t, tag: ""}, {prop: "doc", name: "doc", pkg: "gopkg.in/yaml.v2", typ: ptrType$4, tag: ""}]); decoder.init([{prop: "doc", name: "doc", pkg: "gopkg.in/yaml.v2", typ: ptrType$4, tag: ""}, {prop: "aliases", name: "aliases", pkg: "gopkg.in/yaml.v2", typ: mapType$2, tag: ""}, {prop: "mapType", name: "mapType", pkg: "gopkg.in/yaml.v2", typ: reflect.Type, tag: ""}, {prop: "terrors", name: "terrors", pkg: "gopkg.in/yaml.v2", typ: sliceType$12, tag: ""}]); resolveMapItem.init([{prop: "value", name: "value", pkg: "gopkg.in/yaml.v2", typ: $emptyInterface, tag: ""}, {prop: "tag", name: "tag", pkg: "gopkg.in/yaml.v2", typ: $String, tag: ""}]); MapItem.init([{prop: "Key", name: "Key", pkg: "", typ: $emptyInterface, tag: ""}, {prop: "Value", name: "Value", pkg: "", typ: $emptyInterface, tag: ""}]); Unmarshaler.init([{prop: "UnmarshalYAML", name: "UnmarshalYAML", pkg: "", typ: $funcType([funcType$1], [$error], false)}]); yamlError.init([{prop: "err", name: "err", pkg: "gopkg.in/yaml.v2", typ: $error, tag: ""}]); TypeError.init([{prop: "Errors", name: "Errors", pkg: "", typ: sliceType$12, tag: ""}]); structInfo.init([{prop: "FieldsMap", name: "FieldsMap", pkg: "", typ: mapType$3, tag: ""}, {prop: "FieldsList", name: "FieldsList", pkg: "", typ: sliceType$16, tag: ""}, {prop: "InlineMap", name: "InlineMap", pkg: "", typ: $Int, tag: ""}]); fieldInfo.init([{prop: "Key", name: "Key", pkg: "", typ: $String, tag: ""}, {prop: "Num", name: "Num", pkg: "", typ: $Int, tag: ""}, {prop: "OmitEmpty", name: "OmitEmpty", pkg: "", typ: $Bool, tag: ""}, {prop: "Flow", name: "Flow", pkg: "", typ: $Bool, tag: ""}, {prop: "Inline", name: "Inline", pkg: "", typ: sliceType$3, tag: ""}]); yaml_version_directive_t.init([{prop: "major", name: "major", pkg: "gopkg.in/yaml.v2", typ: $Int8, tag: ""}, {prop: "minor", name: "minor", pkg: "gopkg.in/yaml.v2", typ: $Int8, tag: ""}]); yaml_tag_directive_t.init([{prop: "handle", name: "handle", pkg: "gopkg.in/yaml.v2", typ: sliceType$1, tag: ""}, {prop: "prefix", name: "prefix", pkg: "gopkg.in/yaml.v2", typ: sliceType$1, tag: ""}]); yaml_mark_t.init([{prop: "index", name: "index", pkg: "gopkg.in/yaml.v2", typ: $Int, tag: ""}, {prop: "line", name: "line", pkg: "gopkg.in/yaml.v2", typ: $Int, tag: ""}, {prop: "column", name: "column", pkg: "gopkg.in/yaml.v2", typ: $Int, tag: ""}]); yaml_token_t.init([{prop: "typ", name: "typ", pkg: "gopkg.in/yaml.v2", typ: yaml_token_type_t, tag: ""}, {prop: "start_mark", name: "start_mark", pkg: "gopkg.in/yaml.v2", typ: yaml_mark_t, tag: ""}, {prop: "end_mark", name: "end_mark", pkg: "gopkg.in/yaml.v2", typ: yaml_mark_t, tag: ""}, {prop: "encoding", name: "encoding", pkg: "gopkg.in/yaml.v2", typ: yaml_encoding_t, tag: ""}, {prop: "value", name: "value", pkg: "gopkg.in/yaml.v2", typ: sliceType$1, tag: ""}, {prop: "suffix", name: "suffix", pkg: "gopkg.in/yaml.v2", typ: sliceType$1, tag: ""}, {prop: "prefix", name: "prefix", pkg: "gopkg.in/yaml.v2", typ: sliceType$1, tag: ""}, {prop: "style", name: "style", pkg: "gopkg.in/yaml.v2", typ: yaml_scalar_style_t, tag: ""}, {prop: "major", name: "major", pkg: "gopkg.in/yaml.v2", typ: $Int8, tag: ""}, {prop: "minor", name: "minor", pkg: "gopkg.in/yaml.v2", typ: $Int8, tag: ""}]); yaml_event_t.init([{prop: "typ", name: "typ", pkg: "gopkg.in/yaml.v2", typ: yaml_event_type_t, tag: ""}, {prop: "start_mark", name: "start_mark", pkg: "gopkg.in/yaml.v2", typ: yaml_mark_t, tag: ""}, {prop: "end_mark", name: "end_mark", pkg: "gopkg.in/yaml.v2", typ: yaml_mark_t, tag: ""}, {prop: "encoding", name: "encoding", pkg: "gopkg.in/yaml.v2", typ: yaml_encoding_t, tag: ""}, {prop: "version_directive", name: "version_directive", pkg: "gopkg.in/yaml.v2", typ: ptrType$3, tag: ""}, {prop: "tag_directives", name: "tag_directives", pkg: "gopkg.in/yaml.v2", typ: sliceType, tag: ""}, {prop: "anchor", name: "anchor", pkg: "gopkg.in/yaml.v2", typ: sliceType$1, tag: ""}, {prop: "tag", name: "tag", pkg: "gopkg.in/yaml.v2", typ: sliceType$1, tag: ""}, {prop: "value", name: "value", pkg: "gopkg.in/yaml.v2", typ: sliceType$1, tag: ""}, {prop: "implicit", name: "implicit", pkg: "gopkg.in/yaml.v2", typ: $Bool, tag: ""}, {prop: "quoted_implicit", name: "quoted_implicit", pkg: "gopkg.in/yaml.v2", typ: $Bool, tag: ""}, {prop: "style", name: "style", pkg: "gopkg.in/yaml.v2", typ: yaml_style_t, tag: ""}]); yaml_node_pair_t.init([{prop: "key", name: "key", pkg: "gopkg.in/yaml.v2", typ: $Int, tag: ""}, {prop: "value", name: "value", pkg: "gopkg.in/yaml.v2", typ: $Int, tag: ""}]); yaml_node_t.init([{prop: "typ", name: "typ", pkg: "gopkg.in/yaml.v2", typ: yaml_node_type_t, tag: ""}, {prop: "tag", name: "tag", pkg: "gopkg.in/yaml.v2", typ: sliceType$1, tag: ""}, {prop: "scalar", name: "scalar", pkg: "gopkg.in/yaml.v2", typ: structType$5, tag: ""}, {prop: "sequence", name: "sequence", pkg: "gopkg.in/yaml.v2", typ: structType$6, tag: ""}, {prop: "mapping", name: "mapping", pkg: "gopkg.in/yaml.v2", typ: structType$7, tag: ""}, {prop: "start_mark", name: "start_mark", pkg: "gopkg.in/yaml.v2", typ: yaml_mark_t, tag: ""}, {prop: "end_mark", name: "end_mark", pkg: "gopkg.in/yaml.v2", typ: yaml_mark_t, tag: ""}]); yaml_document_t.init([{prop: "nodes", name: "nodes", pkg: "gopkg.in/yaml.v2", typ: sliceType$19, tag: ""}, {prop: "version_directive", name: "version_directive", pkg: "gopkg.in/yaml.v2", typ: ptrType$3, tag: ""}, {prop: "tag_directives_data", name: "tag_directives_data", pkg: "gopkg.in/yaml.v2", typ: sliceType, tag: ""}, {prop: "tag_directives_start", name: "tag_directives_start", pkg: "gopkg.in/yaml.v2", typ: $Int, tag: ""}, {prop: "tag_directives_end", name: "tag_directives_end", pkg: "gopkg.in/yaml.v2", typ: $Int, tag: ""}, {prop: "start_implicit", name: "start_implicit", pkg: "gopkg.in/yaml.v2", typ: $Int, tag: ""}, {prop: "end_implicit", name: "end_implicit", pkg: "gopkg.in/yaml.v2", typ: $Int, tag: ""}, {prop: "start_mark", name: "start_mark", pkg: "gopkg.in/yaml.v2", typ: yaml_mark_t, tag: ""}, {prop: "end_mark", name: "end_mark", pkg: "gopkg.in/yaml.v2", typ: yaml_mark_t, tag: ""}]); yaml_read_handler_t.init([ptrType$19, sliceType$1], [$Int, $error], false); yaml_simple_key_t.init([{prop: "possible", name: "possible", pkg: "gopkg.in/yaml.v2", typ: $Bool, tag: ""}, {prop: "required", name: "required", pkg: "gopkg.in/yaml.v2", typ: $Bool, tag: ""}, {prop: "token_number", name: "token_number", pkg: "gopkg.in/yaml.v2", typ: $Int, tag: ""}, {prop: "mark", name: "mark", pkg: "gopkg.in/yaml.v2", typ: yaml_mark_t, tag: ""}]); yaml_alias_data_t.init([{prop: "anchor", name: "anchor", pkg: "gopkg.in/yaml.v2", typ: sliceType$1, tag: ""}, {prop: "index", name: "index", pkg: "gopkg.in/yaml.v2", typ: $Int, tag: ""}, {prop: "mark", name: "mark", pkg: "gopkg.in/yaml.v2", typ: yaml_mark_t, tag: ""}]); yaml_parser_t.init([{prop: "error", name: "error", pkg: "gopkg.in/yaml.v2", typ: yaml_error_type_t, tag: ""}, {prop: "problem", name: "problem", pkg: "gopkg.in/yaml.v2", typ: $String, tag: ""}, {prop: "problem_offset", name: "problem_offset", pkg: "gopkg.in/yaml.v2", typ: $Int, tag: ""}, {prop: "problem_value", name: "problem_value", pkg: "gopkg.in/yaml.v2", typ: $Int, tag: ""}, {prop: "problem_mark", name: "problem_mark", pkg: "gopkg.in/yaml.v2", typ: yaml_mark_t, tag: ""}, {prop: "context", name: "context", pkg: "gopkg.in/yaml.v2", typ: $String, tag: ""}, {prop: "context_mark", name: "context_mark", pkg: "gopkg.in/yaml.v2", typ: yaml_mark_t, tag: ""}, {prop: "read_handler", name: "read_handler", pkg: "gopkg.in/yaml.v2", typ: yaml_read_handler_t, tag: ""}, {prop: "input_file", name: "input_file", pkg: "gopkg.in/yaml.v2", typ: io.Reader, tag: ""}, {prop: "input", name: "input", pkg: "gopkg.in/yaml.v2", typ: sliceType$1, tag: ""}, {prop: "input_pos", name: "input_pos", pkg: "gopkg.in/yaml.v2", typ: $Int, tag: ""}, {prop: "eof", name: "eof", pkg: "gopkg.in/yaml.v2", typ: $Bool, tag: ""}, {prop: "buffer", name: "buffer", pkg: "gopkg.in/yaml.v2", typ: sliceType$1, tag: ""}, {prop: "buffer_pos", name: "buffer_pos", pkg: "gopkg.in/yaml.v2", typ: $Int, tag: ""}, {prop: "unread", name: "unread", pkg: "gopkg.in/yaml.v2", typ: $Int, tag: ""}, {prop: "raw_buffer", name: "raw_buffer", pkg: "gopkg.in/yaml.v2", typ: sliceType$1, tag: ""}, {prop: "raw_buffer_pos", name: "raw_buffer_pos", pkg: "gopkg.in/yaml.v2", typ: $Int, tag: ""}, {prop: "encoding", name: "encoding", pkg: "gopkg.in/yaml.v2", typ: yaml_encoding_t, tag: ""}, {prop: "offset", name: "offset", pkg: "gopkg.in/yaml.v2", typ: $Int, tag: ""}, {prop: "mark", name: "mark", pkg: "gopkg.in/yaml.v2", typ: yaml_mark_t, tag: ""}, {prop: "stream_start_produced", name: "stream_start_produced", pkg: "gopkg.in/yaml.v2", typ: $Bool, tag: ""}, {prop: "stream_end_produced", name: "stream_end_produced", pkg: "gopkg.in/yaml.v2", typ: $Bool, tag: ""}, {prop: "flow_level", name: "flow_level", pkg: "gopkg.in/yaml.v2", typ: $Int, tag: ""}, {prop: "tokens", name: "tokens", pkg: "gopkg.in/yaml.v2", typ: sliceType$2, tag: ""}, {prop: "tokens_head", name: "tokens_head", pkg: "gopkg.in/yaml.v2", typ: $Int, tag: ""}, {prop: "tokens_parsed", name: "tokens_parsed", pkg: "gopkg.in/yaml.v2", typ: $Int, tag: ""}, {prop: "token_available", name: "token_available", pkg: "gopkg.in/yaml.v2", typ: $Bool, tag: ""}, {prop: "indent", name: "indent", pkg: "gopkg.in/yaml.v2", typ: $Int, tag: ""}, {prop: "indents", name: "indents", pkg: "gopkg.in/yaml.v2", typ: sliceType$3, tag: ""}, {prop: "simple_key_allowed", name: "simple_key_allowed", pkg: "gopkg.in/yaml.v2", typ: $Bool, tag: ""}, {prop: "simple_keys", name: "simple_keys", pkg: "gopkg.in/yaml.v2", typ: sliceType$4, tag: ""}, {prop: "state", name: "state", pkg: "gopkg.in/yaml.v2", typ: yaml_parser_state_t, tag: ""}, {prop: "states", name: "states", pkg: "gopkg.in/yaml.v2", typ: sliceType$5, tag: ""}, {prop: "marks", name: "marks", pkg: "gopkg.in/yaml.v2", typ: sliceType$6, tag: ""}, {prop: "tag_directives", name: "tag_directives", pkg: "gopkg.in/yaml.v2", typ: sliceType, tag: ""}, {prop: "aliases", name: "aliases", pkg: "gopkg.in/yaml.v2", typ: sliceType$7, tag: ""}, {prop: "document", name: "document", pkg: "gopkg.in/yaml.v2", 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 = 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 = 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 = os.$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 = regexp.$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 = sync.$init(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = time.$init(); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = unicode.$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; } zeroValue = new reflect.Value.ptr(); fieldMapMutex = new sync.RWMutex.ptr(); mapItemType = reflect.TypeOf((x = new MapItem.ptr($ifaceNil, $ifaceNil), new x.constructor.elem(x))); durationType = reflect.TypeOf(new time.Duration(0, 0)); defaultMapType = reflect.TypeOf(new mapType((_map = new $Map(), _map))); _r = defaultMapType.Elem(); /* */ $s = 18; case 18: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } ifaceType = _r; _r$1 = regexp.MustCompile("^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+(?:\\.[0-9_]*)?$"); /* */ $s = 19; case 19: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } base60float = _r$1; default_tag_directives = new sliceType([new yaml_tag_directive_t.ptr(new sliceType$1($stringToBytes("!")), new sliceType$1($stringToBytes("!"))), new yaml_tag_directive_t.ptr(new sliceType$1($stringToBytes("!!")), new sliceType$1($stringToBytes("tag:yaml.org,2002:")))]); resolveTable = $makeSlice(sliceType$1, 256); resolveMap = new $Map(); structMap = new $Map(); init(); /* */ } 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", "Hash", "hash", 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/fnv"] = (function() { var $pkg = {}, $init, hash, sum32, ptrType, sliceType, New32; hash = $packages["hash"]; sum32 = $pkg.sum32 = $newType(4, $kindUint32, "fnv.sum32", "sum32", "hash/fnv", null); ptrType = $ptrType(sum32); sliceType = $sliceType($Uint8); New32 = function() { var $ptr, s, s_ptr; s = 2166136261; return (s_ptr || (s_ptr = new ptrType(function() { return s; }, function($v) { s = $v; }))); }; $pkg.New32 = New32; $ptrType(sum32).prototype.Reset = function() { var $ptr, s; s = this; s.$set(2166136261); }; $ptrType(sum32).prototype.Sum32 = function() { var $ptr, s; s = this; return (s.$get() >>> 0); }; $ptrType(sum32).prototype.Write = function(data) { var $ptr, _i, _ref, c, data, hash$1, s, x; s = this; hash$1 = s.$get(); _ref = data; _i = 0; while (true) { if (!(_i < _ref.$length)) { break; } c = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]); hash$1 = (x = 16777619, (((hash$1 >>> 16 << 16) * x >>> 0) + (hash$1 << 16 >>> 16) * x) >>> 0); hash$1 = (hash$1 ^ ((c >>> 0))) >>> 0; _i++; } s.$set(hash$1); return [data.$length, $ifaceNil]; }; $ptrType(sum32).prototype.Size = function() { var $ptr, s; s = this; return 4; }; $ptrType(sum32).prototype.BlockSize = function() { var $ptr, s; s = this; return 1; }; $ptrType(sum32).prototype.Sum = function(in$1) { var $ptr, in$1, s, v; s = this; v = (s.$get() >>> 0); return $append(in$1, ((v >>> 24 >>> 0) << 24 >>> 24), ((v >>> 16 >>> 0) << 24 >>> 24), ((v >>> 8 >>> 0) << 24 >>> 24), (v << 24 >>> 24)); }; ptrType.methods = [{prop: "Reset", name: "Reset", pkg: "", typ: $funcType([], [], false)}, {prop: "Sum32", name: "Sum32", pkg: "", typ: $funcType([], [$Uint32], 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: "Sum", name: "Sum", pkg: "", typ: $funcType([sliceType], [sliceType], 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 = hash.$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["ypk/halt"] = (function() { var $pkg = {}, $init, fmt, sliceType, As; fmt = $packages["fmt"]; sliceType = $sliceType($emptyInterface); As = function(code, msg) { var $ptr, _arg, _arg$1, _r, _r$1, code, msg, $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; code = $f.code; msg = $f.msg; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: _arg = new $Int(code); _r = fmt.Sprint(msg); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _arg$1 = new $String(_r); _r$1 = fmt.Sprintln(new sliceType([new $String("halt"), _arg, new $String(":"), _arg$1])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } $panic(new $String(_r$1)); /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: As }; } $f.$ptr = $ptr; $f._arg = _arg; $f._arg$1 = _arg$1; $f._r = _r; $f._r$1 = _r$1; $f.code = code; $f.msg = msg; $f.$s = $s; $f.$r = $r; return $f; }; $pkg.As = As; $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; } /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; }; $pkg.$init = $init; return $pkg; })(); $packages["sim3/ncl/std"] = (function() { var $pkg = {}, $init, fmt, reflect, ncl, tri, sync, assert, halt, any2, any3, mux, demux, power, probe, board, trig, out, in$1, point, structType, sliceType, ptrType, ptrType$1, ptrType$2, ptrType$4, ptrType$5, ptrType$6, sliceType$2, ptrType$7, ptrType$8, ptrType$9, chanType, funcType, ptrType$10, funcType$1, ptrType$11, ptrType$12, mapType, sliceType$3, ptrType$13, mapType$1, sliceType$4, ptrType$14, sliceType$5, Not, Buffer, CycleRight, CycleLeft, AndNot, OrNot, Cmp, Sum3, Sum3r, Car3s, Car3sr, Car3m, Mux, Demux, Probe, Source, init, Board, Trigger, pt, NewOut, NewIn; fmt = $packages["fmt"]; reflect = $packages["reflect"]; ncl = $packages["sim3/ncl"]; tri = $packages["sim3/tri"]; sync = $packages["sync"]; assert = $packages["ypk/assert"]; halt = $packages["ypk/halt"]; any2 = $pkg.any2 = $newType(0, $kindStruct, "std.any2", "any2", "sim3/ncl/std", function(typ_, I_, O_, fn_) { this.$val = this; if (arguments.length === 0) { this.typ = ""; this.I = $ifaceNil; this.O = $ifaceNil; this.fn = $throwNilPointerError; return; } this.typ = typ_; this.I = I_; this.O = O_; this.fn = fn_; }); any3 = $pkg.any3 = $newType(0, $kindStruct, "std.any3", "any3", "sim3/ncl/std", function(typ_, A_, B_, O_, fn_) { this.$val = this; if (arguments.length === 0) { this.typ = ""; this.A = $ifaceNil; this.B = $ifaceNil; this.O = $ifaceNil; this.fn = $throwNilPointerError; return; } this.typ = typ_; this.A = A_; this.B = B_; this.O = O_; this.fn = fn_; }); mux = $pkg.mux = $newType(0, $kindStruct, "std.mux", "mux", "sim3/ncl/std", function(T_, N_, F_, A_, B_) { this.$val = this; if (arguments.length === 0) { this.T = $ifaceNil; this.N = $ifaceNil; this.F = $ifaceNil; this.A = $ifaceNil; this.B = $ifaceNil; return; } this.T = T_; this.N = N_; this.F = F_; this.A = A_; this.B = B_; }); demux = $pkg.demux = $newType(0, $kindStruct, "std.demux", "demux", "sim3/ncl/std", function(T_, N_, F_, A_, B_) { this.$val = this; if (arguments.length === 0) { this.T = $ifaceNil; this.N = $ifaceNil; this.F = $ifaceNil; this.A = $ifaceNil; this.B = $ifaceNil; return; } this.T = T_; this.N = N_; this.F = F_; this.A = A_; this.B = B_; }); power = $pkg.power = $newType(0, $kindStruct, "std.power", "power", "sim3/ncl/std", function(Element_, O_, value_) { this.$val = this; if (arguments.length === 0) { this.Element = $ifaceNil; this.O = $ifaceNil; this.value = new tri.Trit.ptr(); return; } this.Element = Element_; this.O = O_; this.value = value_; }); probe = $pkg.probe = $newType(0, $kindStruct, "std.probe", "probe", "sim3/ncl/std", function(Element_, I_, name_) { this.$val = this; if (arguments.length === 0) { this.Element = $ifaceNil; this.I = $ifaceNil; this.name = ""; return; } this.Element = Element_; this.I = I_; this.name = name_; }); board = $pkg.board = $newType(0, $kindStruct, "std.board", "board", "sim3/ncl/std", function(Compound_, points_, pins_, _pins_) { this.$val = this; if (arguments.length === 0) { this.Compound = $ifaceNil; this.points = false; this.pins = false; this._pins = false; return; } this.Compound = Compound_; this.points = points_; this.pins = pins_; this._pins = _pins_; }); trig = $pkg.trig = $newType(0, $kindStruct, "std.trig", "trig", "sim3/ncl/std", function(D_, S_, data_) { this.$val = this; if (arguments.length === 0) { this.D = $ifaceNil; this.S = $ifaceNil; this.data = new tri.Trit.ptr(); return; } this.D = D_; this.S = S_; this.data = data_; }); out = $pkg.out = $newType(0, $kindStruct, "std.out", "out", "sim3/ncl/std", function(Out_, val_, owner_) { this.$val = this; if (arguments.length === 0) { this.Out = $ifaceNil; this.val = ptrType.nil; this.owner = $ifaceNil; return; } this.Out = Out_; this.val = val_; this.owner = owner_; }); in$1 = $pkg.in = $newType(0, $kindStruct, "std.in", "in", "sim3/ncl/std", function(In_, val_, meta_, owner_) { this.$val = this; if (arguments.length === 0) { this.In = $ifaceNil; this.val = ptrType.nil; this.meta = chanType.nil; this.owner = $ifaceNil; return; } this.In = In_; this.val = val_; this.meta = meta_; this.owner = owner_; }); point = $pkg.point = $newType(0, $kindStruct, "std.point", "point", "sim3/ncl/std", function(pins_, name_) { this.$val = this; if (arguments.length === 0) { this.pins = sliceType$2.nil; this.name = ""; return; } this.pins = pins_; this.name = name_; }); structType = $structType([{prop: "Pos", name: "Pos", pkg: "", typ: ncl.Element, tag: ""}, {prop: "Neg", name: "Neg", pkg: "", typ: ncl.Element, tag: ""}, {prop: "Ground", name: "Ground", pkg: "", typ: ncl.Element, tag: ""}]); sliceType = $sliceType($emptyInterface); ptrType = $ptrType(tri.Trit); ptrType$1 = $ptrType(probe); ptrType$2 = $ptrType(power); ptrType$4 = $ptrType(any2); ptrType$5 = $ptrType(in$1); ptrType$6 = $ptrType(out); sliceType$2 = $sliceType(ncl.Pin); ptrType$7 = $ptrType($Uint32); ptrType$8 = $ptrType(point); ptrType$9 = $ptrType(sync.WaitGroup); chanType = $chanType(ptrType$9, false, false); funcType = $funcType([tri.Trit], [tri.Trit], false); ptrType$10 = $ptrType(any3); funcType$1 = $funcType([tri.Trit, tri.Trit], [tri.Trit], false); ptrType$11 = $ptrType(mux); ptrType$12 = $ptrType(demux); mapType = $mapType(ncl.PinCode, ncl.Pin); sliceType$3 = $sliceType(mapType); ptrType$13 = $ptrType(board); mapType$1 = $mapType($String, ncl.Point); sliceType$4 = $sliceType(ptrType); ptrType$14 = $ptrType(trig); sliceType$5 = $sliceType($String); any2.ptr.prototype.Pin = function(c) { var $ptr, _ref, c, e, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _ref = $f._ref; c = $f.c; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: e = this; _ref = c; /* */ if (_ref === 0) { $s = 1; continue; } /* */ if (_ref === 1) { $s = 2; continue; } /* */ $s = 3; continue; /* if (_ref === 0) { */ case 1: return e.I; $s = 4; continue; /* } else if (_ref === 1) { */ case 2: return e.O; $s = 4; continue; /* } else { */ case 3: $r = halt.As(100, new sliceType([])); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 4: $panic(new $Int(0)); /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: any2.ptr.prototype.Pin }; } $f.$ptr = $ptr; $f._ref = _ref; $f.c = c; $f.e = e; $f.$s = $s; $f.$r = $r; return $f; }; any2.prototype.Pin = function(c) { return this.$val.Pin(c); }; any2.ptr.prototype.String = 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.Sprint(new sliceType([new $String(e.typ)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: any2.ptr.prototype.String }; } $f.$ptr = $ptr; $f._r = _r; $f.e = e; $f.$s = $s; $f.$r = $r; return $f; }; any2.prototype.String = function() { return this.$val.String(); }; any2.ptr.prototype.init = 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 = NewIn(e); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } e.I = _r; e.O = NewOut(e); /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: any2.ptr.prototype.init }; } $f.$ptr = $ptr; $f._r = _r; $f.e = e; $f.$s = $s; $f.$r = $r; return $f; }; any2.prototype.init = function() { return this.$val.init(); }; any2.ptr.prototype.Do = function() { var $ptr, _r, _r$1, e, sig, 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; sig = $f.sig; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: val = [val]; e = this; _r = e.I.Select(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } sig = _r; /* */ if (!(sig === ptrType.nil)) { $s = 2; continue; } /* */ $s = 3; continue; /* if (!(sig === ptrType.nil)) { */ case 2: _r$1 = e.fn(sig); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } val[0] = $clone(_r$1, tri.Trit); $r = e.O.Update(val[0]); /* */ $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 = e.O.Update(ptrType.nil); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 4: /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: any2.ptr.prototype.Do }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.e = e; $f.sig = sig; $f.val = val; $f.$s = $s; $f.$r = $r; return $f; }; any2.prototype.Do = function() { return this.$val.Do(); }; Not = function() { var $ptr, e, f, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; e = $f.e; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: f = (function(p) { var $ptr, p, q; q = new tri.Trit.ptr(); $copy(q, tri.Not(p), tri.Trit); return q; }); e = new any2.ptr("\xC2\xAC", $ifaceNil, $ifaceNil, f); $r = e.init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } return e; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Not }; } $f.$ptr = $ptr; $f.e = e; $f.f = f; $f.$s = $s; $f.$r = $r; return $f; }; $pkg.Not = Not; Buffer = function() { var $ptr, e, f, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; e = $f.e; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: f = (function(p) { var $ptr, p, q; q = new tri.Trit.ptr(); $copy(q, p, tri.Trit); return q; }); e = new any2.ptr("BUF", $ifaceNil, $ifaceNil, f); $r = e.init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } return e; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Buffer }; } $f.$ptr = $ptr; $f.e = e; $f.f = f; $f.$s = $s; $f.$r = $r; return $f; }; $pkg.Buffer = Buffer; CycleRight = function() { var $ptr, e, f, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; e = $f.e; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: f = (function(p) { var $ptr, p, q; q = new tri.Trit.ptr(); $copy(q, tri.CNot(p), tri.Trit); return q; }); e = new any2.ptr("\xE2\x86\x92", $ifaceNil, $ifaceNil, f); $r = e.init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } return e; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: CycleRight }; } $f.$ptr = $ptr; $f.e = e; $f.f = f; $f.$s = $s; $f.$r = $r; return $f; }; $pkg.CycleRight = CycleRight; CycleLeft = function() { var $ptr, e, f, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; e = $f.e; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: f = (function(p) { var $ptr, p, q; q = new tri.Trit.ptr(); $copy(q, tri.CNot(tri.CNot(p)), tri.Trit); return q; }); e = new any2.ptr("\xE2\x86\x90", $ifaceNil, $ifaceNil, f); $r = e.init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } return e; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: CycleLeft }; } $f.$ptr = $ptr; $f.e = e; $f.f = f; $f.$s = $s; $f.$r = $r; return $f; }; $pkg.CycleLeft = CycleLeft; any3.ptr.prototype.Pin = function(c) { var $ptr, _ref, c, e, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _ref = $f._ref; c = $f.c; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: e = this; _ref = c; /* */ if (_ref === 4) { $s = 1; continue; } /* */ if (_ref === 1) { $s = 2; continue; } /* */ if (_ref === 5) { $s = 3; continue; } /* */ $s = 4; continue; /* if (_ref === 4) { */ case 1: return e.A; $s = 5; continue; /* } else if (_ref === 1) { */ case 2: return e.O; $s = 5; continue; /* } else if (_ref === 5) { */ case 3: return e.B; $s = 5; continue; /* } else { */ case 4: $r = halt.As(100, new sliceType([])); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 5: $panic(new $Int(0)); /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: any3.ptr.prototype.Pin }; } $f.$ptr = $ptr; $f._ref = _ref; $f.c = c; $f.e = e; $f.$s = $s; $f.$r = $r; return $f; }; any3.prototype.Pin = function(c) { return this.$val.Pin(c); }; any3.ptr.prototype.Do = function() { var $ptr, _r, _r$1, _r$2, a, b, e, 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; a = $f.a; b = $f.b; e = $f.e; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: val = [val]; e = this; _r = e.A.Select(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } a = _r; _r$1 = e.B.Select(); /* */ $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; /* */ if (!(a === ptrType.nil) && !(b === ptrType.nil)) { $s = 3; continue; } /* */ $s = 4; continue; /* if (!(a === ptrType.nil) && !(b === ptrType.nil)) { */ case 3: _r$2 = e.fn(a, b); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } val[0] = $clone(_r$2, tri.Trit); $r = e.O.Update(val[0]); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $s = 5; continue; /* } else { */ case 4: $r = e.O.Update(ptrType.nil); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 5: /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: any3.ptr.prototype.Do }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.a = a; $f.b = b; $f.e = e; $f.val = val; $f.$s = $s; $f.$r = $r; return $f; }; any3.prototype.Do = function() { return this.$val.Do(); }; any3.ptr.prototype.String = 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.Sprint(new sliceType([new $String(e.typ)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: any3.ptr.prototype.String }; } $f.$ptr = $ptr; $f._r = _r; $f.e = e; $f.$s = $s; $f.$r = $r; return $f; }; any3.prototype.String = function() { return this.$val.String(); }; any3.ptr.prototype.init = 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; _r = NewIn(e); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } e.A = _r; _r$1 = NewIn(e); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } e.B = _r$1; e.O = NewOut(e); /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: any3.ptr.prototype.init }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.e = e; $f.$s = $s; $f.$r = $r; return $f; }; any3.prototype.init = function() { return this.$val.init(); }; AndNot = function() { var $ptr, e, f, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; e = $f.e; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: f = (function(a, b) { var $ptr, a, b; return tri.Not(tri.And(a, b)); }); e = new any3.ptr("\xC2\xAC&", $ifaceNil, $ifaceNil, $ifaceNil, f); $r = e.init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } return e; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: AndNot }; } $f.$ptr = $ptr; $f.e = e; $f.f = f; $f.$s = $s; $f.$r = $r; return $f; }; $pkg.AndNot = AndNot; OrNot = function() { var $ptr, e, f, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; e = $f.e; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: f = (function(a, b) { var $ptr, a, b; return tri.Not(tri.Or(a, b)); }); e = new any3.ptr("\xC2\xAC|", $ifaceNil, $ifaceNil, $ifaceNil, f); $r = e.init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } return e; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: OrNot }; } $f.$ptr = $ptr; $f.e = e; $f.f = f; $f.$s = $s; $f.$r = $r; return $f; }; $pkg.OrNot = OrNot; Cmp = function() { var $ptr, e, f, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; e = $f.e; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: f = (function(a, b) { var $ptr, a, b; if ($equal(a, b, tri.Trit)) { return tri.NIL; } else if (tri.Ord(a) > tri.Ord(b)) { return tri.TRUE; } else if (tri.Ord(a) < tri.Ord(b)) { return tri.FALSE; } $panic(new $Int(0)); }); e = new any3.ptr("<=>", $ifaceNil, $ifaceNil, $ifaceNil, f); $r = e.init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } return e; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Cmp }; } $f.$ptr = $ptr; $f.e = e; $f.f = f; $f.$s = $s; $f.$r = $r; return $f; }; $pkg.Cmp = Cmp; Sum3 = function() { var $ptr, e, f, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; e = $f.e; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: f = (function(a, b) { var $ptr, a, b; return tri.Sum3(a, b); }); e = new any3.ptr("SUM3", $ifaceNil, $ifaceNil, $ifaceNil, f); $r = e.init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } return e; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Sum3 }; } $f.$ptr = $ptr; $f.e = e; $f.f = f; $f.$s = $s; $f.$r = $r; return $f; }; $pkg.Sum3 = Sum3; Sum3r = function() { var $ptr, e, f, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; e = $f.e; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: f = (function(a, b) { var $ptr, a, b; return tri.Sum3r(a, b); }); e = new any3.ptr("SUM3r", $ifaceNil, $ifaceNil, $ifaceNil, f); $r = e.init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } return e; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Sum3r }; } $f.$ptr = $ptr; $f.e = e; $f.f = f; $f.$s = $s; $f.$r = $r; return $f; }; $pkg.Sum3r = Sum3r; Car3s = function() { var $ptr, e, f, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; e = $f.e; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: f = (function(a, b) { var $ptr, a, b; return tri.CarryS(a, b); }); e = new any3.ptr("CAR3s", $ifaceNil, $ifaceNil, $ifaceNil, f); $r = e.init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } return e; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Car3s }; } $f.$ptr = $ptr; $f.e = e; $f.f = f; $f.$s = $s; $f.$r = $r; return $f; }; $pkg.Car3s = Car3s; Car3sr = function() { var $ptr, e, f, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; e = $f.e; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: f = (function(a, b) { var $ptr, a, b; return tri.CarrySr(a, b); }); e = new any3.ptr("CAR3sr", $ifaceNil, $ifaceNil, $ifaceNil, f); $r = e.init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } return e; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Car3sr }; } $f.$ptr = $ptr; $f.e = e; $f.f = f; $f.$s = $s; $f.$r = $r; return $f; }; $pkg.Car3sr = Car3sr; Car3m = function() { var $ptr, e, f, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; e = $f.e; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: f = (function(a, b) { var $ptr, a, b; return tri.CarryM(a, b); }); e = new any3.ptr("CAR3m", $ifaceNil, $ifaceNil, $ifaceNil, f); $r = e.init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } return e; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Car3m }; } $f.$ptr = $ptr; $f.e = e; $f.f = f; $f.$s = $s; $f.$r = $r; return $f; }; $pkg.Car3m = Car3m; mux.ptr.prototype.Pin = function(c) { var $ptr, _ref, c, e, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _ref = $f._ref; c = $f.c; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: e = this; _ref = c; /* */ if (_ref === 4) { $s = 1; continue; } /* */ if (_ref === 6) { $s = 2; continue; } /* */ if (_ref === 7) { $s = 3; continue; } /* */ if (_ref === 8) { $s = 4; continue; } /* */ if (_ref === 5) { $s = 5; continue; } /* */ $s = 6; continue; /* if (_ref === 4) { */ case 1: return e.A; $s = 7; continue; /* } else if (_ref === 6) { */ case 2: return e.T; $s = 7; continue; /* } else if (_ref === 7) { */ case 3: return e.N; $s = 7; continue; /* } else if (_ref === 8) { */ case 4: return e.F; $s = 7; continue; /* } else if (_ref === 5) { */ case 5: return e.B; $s = 7; continue; /* } else { */ case 6: $r = halt.As(100, new sliceType([])); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 7: $panic(new $Int(0)); /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: mux.ptr.prototype.Pin }; } $f.$ptr = $ptr; $f._ref = _ref; $f.c = c; $f.e = e; $f.$s = $s; $f.$r = $r; return $f; }; mux.prototype.Pin = function(c) { return this.$val.Pin(c); }; mux.ptr.prototype.init = function() { var $ptr, _r, _r$1, _r$2, _r$3, 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; _r$2 = $f._r$2; _r$3 = $f._r$3; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: e = this; _r = NewIn(e); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } e.A = _r; e.B = NewOut(e); _r$1 = NewIn(e); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } e.T = _r$1; _r$2 = NewIn(e); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } e.N = _r$2; _r$3 = NewIn(e); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } e.F = _r$3; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: mux.ptr.prototype.init }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f.e = e; $f.$s = $s; $f.$r = $r; return $f; }; mux.prototype.init = function() { return this.$val.init(); }; mux.ptr.prototype.Do = function() { var $ptr, _a, _r, _r$1, _r$2, _r$3, a, e, val, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _a = $f._a; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; a = $f.a; e = $f.e; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: e = this; _r = e.A.Select(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _a = _r; val = ptrType.nil; /* */ if (!(_a === ptrType.nil)) { $s = 2; continue; } /* */ $s = 3; continue; /* if (!(_a === ptrType.nil)) { */ case 2: a = $clone(_a, tri.Trit); /* */ if ($equal(a, tri.TRUE, tri.Trit)) { $s = 4; continue; } /* */ if ($equal(a, tri.NIL, tri.Trit)) { $s = 5; continue; } /* */ if ($equal(a, tri.FALSE, tri.Trit)) { $s = 6; continue; } /* */ $s = 7; continue; /* if ($equal(a, tri.TRUE, tri.Trit)) { */ case 4: _r$1 = e.T.Select(); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } val = _r$1; $s = 7; continue; /* } else if ($equal(a, tri.NIL, tri.Trit)) { */ case 5: _r$2 = e.N.Select(); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } val = _r$2; $s = 7; continue; /* } else if ($equal(a, tri.FALSE, tri.Trit)) { */ case 6: _r$3 = e.F.Select(); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } val = _r$3; /* } */ case 7: /* } */ case 3: $r = e.B.Update(val); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: mux.ptr.prototype.Do }; } $f.$ptr = $ptr; $f._a = _a; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f.a = a; $f.e = e; $f.val = val; $f.$s = $s; $f.$r = $r; return $f; }; mux.prototype.Do = function() { return this.$val.Do(); }; demux.ptr.prototype.Pin = function(c) { var $ptr, _ref, c, e, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _ref = $f._ref; c = $f.c; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: e = this; _ref = c; /* */ if (_ref === 4) { $s = 1; continue; } /* */ if (_ref === 6) { $s = 2; continue; } /* */ if (_ref === 7) { $s = 3; continue; } /* */ if (_ref === 8) { $s = 4; continue; } /* */ if (_ref === 5) { $s = 5; continue; } /* */ $s = 6; continue; /* if (_ref === 4) { */ case 1: return e.A; $s = 7; continue; /* } else if (_ref === 6) { */ case 2: return e.T; $s = 7; continue; /* } else if (_ref === 7) { */ case 3: return e.N; $s = 7; continue; /* } else if (_ref === 8) { */ case 4: return e.F; $s = 7; continue; /* } else if (_ref === 5) { */ case 5: return e.B; $s = 7; continue; /* } else { */ case 6: $r = halt.As(100, new sliceType([])); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 7: $panic(new $Int(0)); /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: demux.ptr.prototype.Pin }; } $f.$ptr = $ptr; $f._ref = _ref; $f.c = c; $f.e = e; $f.$s = $s; $f.$r = $r; return $f; }; demux.prototype.Pin = function(c) { return this.$val.Pin(c); }; demux.ptr.prototype.init = 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; _r = NewIn(e); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } e.A = _r; _r$1 = NewIn(e); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } e.B = _r$1; e.T = NewOut(e); e.N = NewOut(e); e.F = NewOut(e); /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: demux.ptr.prototype.init }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.e = e; $f.$s = $s; $f.$r = $r; return $f; }; demux.prototype.init = function() { return this.$val.init(); }; demux.ptr.prototype.Do = function() { var $ptr, _a, _r, _r$1, a, b, e, reset, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _a = $f._a; _r = $f._r; _r$1 = $f._r$1; a = $f.a; b = $f.b; e = $f.e; reset = $f.reset; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: e = this; reset = (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 = e$1.T.Update(ptrType.nil); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = e$1.N.Update(ptrType.nil); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = e$1.F.Update(ptrType.nil); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f.e$1 = e$1; $f.$s = $s; $f.$r = $r; return $f; }); _r = e.A.Select(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _a = _r; /* */ if (!(_a === ptrType.nil)) { $s = 2; continue; } /* */ $s = 3; continue; /* if (!(_a === ptrType.nil)) { */ case 2: _r$1 = e.B.Select(); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } b = _r$1; /* */ if (!(b === ptrType.nil)) { $s = 6; continue; } /* */ $s = 7; continue; /* if (!(b === ptrType.nil)) { */ case 6: a = $clone(_a, tri.Trit); /* */ if ($equal(a, tri.TRUE, tri.Trit)) { $s = 9; continue; } /* */ if ($equal(a, tri.NIL, tri.Trit)) { $s = 10; continue; } /* */ if ($equal(a, tri.FALSE, tri.Trit)) { $s = 11; continue; } /* */ $s = 12; continue; /* if ($equal(a, tri.TRUE, tri.Trit)) { */ case 9: $r = e.T.Update(b); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $s = 12; continue; /* } else if ($equal(a, tri.NIL, tri.Trit)) { */ case 10: $r = e.N.Update(b); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $s = 12; continue; /* } else if ($equal(a, tri.FALSE, tri.Trit)) { */ case 11: $r = e.F.Update(b); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 12: $s = 8; continue; /* } else { */ case 7: $r = reset(e); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 8: $s = 4; continue; /* } else { */ case 3: $r = reset(e); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 4: /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: demux.ptr.prototype.Do }; } $f.$ptr = $ptr; $f._a = _a; $f._r = _r; $f._r$1 = _r$1; $f.a = a; $f.b = b; $f.e = e; $f.reset = reset; $f.$s = $s; $f.$r = $r; return $f; }; demux.prototype.Do = function() { return this.$val.Do(); }; Mux = function() { 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: e = new mux.ptr($ifaceNil, $ifaceNil, $ifaceNil, $ifaceNil, $ifaceNil); $r = e.init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } return e; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Mux }; } $f.$ptr = $ptr; $f.e = e; $f.$s = $s; $f.$r = $r; return $f; }; $pkg.Mux = Mux; Demux = function() { 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: e = new demux.ptr($ifaceNil, $ifaceNil, $ifaceNil, $ifaceNil, $ifaceNil); $r = e.init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } return e; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Demux }; } $f.$ptr = $ptr; $f.e = e; $f.$s = $s; $f.$r = $r; return $f; }; $pkg.Demux = Demux; power.ptr.prototype.Pin = function(c) { var $ptr, c, t, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; c = $f.c; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: t = this; $r = assert.For(c === 1, 20, new sliceType([])); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } return t.O; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: power.ptr.prototype.Pin }; } $f.$ptr = $ptr; $f.c = c; $f.t = t; $f.$s = $s; $f.$r = $r; return $f; }; power.prototype.Pin = function(c) { return this.$val.Pin(c); }; power.ptr.prototype.Do = 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.O.Update(t.value); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: power.ptr.prototype.Do }; } $f.$ptr = $ptr; $f.t = t; $f.$s = $s; $f.$r = $r; return $f; }; power.prototype.Do = function() { return this.$val.Do(); }; power.ptr.prototype.String = function() { 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 = fmt.Sprint(new sliceType([(x = p.value, new x.constructor.elem(x))])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: power.ptr.prototype.String }; } $f.$ptr = $ptr; $f._r = _r; $f.p = p; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; }; power.prototype.String = function() { return this.$val.String(); }; probe.ptr.prototype.Pin = function(c) { var $ptr, c, p, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; c = $f.c; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: p = this; $r = assert.For(c === 0, 20, new sliceType([])); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } return p.I; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: probe.ptr.prototype.Pin }; } $f.$ptr = $ptr; $f.c = c; $f.p = p; $f.$s = $s; $f.$r = $r; return $f; }; probe.prototype.Pin = function(c) { return this.$val.Pin(c); }; Probe = function(n) { var $ptr, _r, n, 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; n = $f.n; ret = $f.ret; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: ret = $ifaceNil; ret = new probe.ptr($ifaceNil, $ifaceNil, n); _r = NewIn(ret); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } $assertType(ret, ptrType$1).I = _r; return ret; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Probe }; } $f.$ptr = $ptr; $f._r = _r; $f.n = n; $f.ret = ret; $f.$s = $s; $f.$r = $r; return $f; }; $pkg.Probe = Probe; probe.ptr.prototype.Do = function() { var $ptr, p; p = this; }; probe.prototype.Do = function() { return this.$val.Do(); }; probe.ptr.prototype.String = 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 = fmt.Sprint(new sliceType([new $String(p.name)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: probe.ptr.prototype.String }; } $f.$ptr = $ptr; $f._r = _r; $f.p = p; $f.$s = $s; $f.$r = $r; return $f; }; probe.prototype.String = function() { return this.$val.String(); }; Source = function(trit) { var $ptr, ret, trit, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; ret = $f.ret; trit = $f.trit; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: ret = ptrType$2.nil; trit = $clone(trit, tri.Trit); ret = new power.ptr($ifaceNil, $ifaceNil, $clone(trit, tri.Trit)); ret.O = NewOut(ret); $r = ret.Do(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } return ret; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Source }; } $f.$ptr = $ptr; $f.ret = ret; $f.trit = trit; $f.$s = $s; $f.$r = $r; return $f; }; $pkg.Source = Source; init = function() { var $ptr, _r, _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 = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: _r = Source(tri.TRUE); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } $pkg.Static.Pos = _r; _r$1 = Source(tri.FALSE); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } $pkg.Static.Neg = _r$1; _r$2 = Source(tri.NIL); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } $pkg.Static.Ground = _r$2; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: init }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.$s = $s; $f.$r = $r; return $f; }; board.ptr.prototype.Pin = function(c) { var $ptr, _entry, b, c, ret, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; b = $f.b; c = $f.c; ret = $f.ret; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: ret = $ifaceNil; b = this; ret = (_entry = b.pins[c], _entry !== undefined ? _entry.v : $ifaceNil); $r = assert.For(!($interfaceIsEqual(ret, $ifaceNil)), 20, new sliceType([])); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } return ret; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: board.ptr.prototype.Pin }; } $f.$ptr = $ptr; $f._entry = _entry; $f.b = b; $f.c = c; $f.ret = ret; $f.$s = $s; $f.$r = $r; return $f; }; board.prototype.Pin = function(c) { return this.$val.Pin(c); }; board.ptr.prototype.InnerPin = function(c) { var $ptr, _entry, b, c, ret, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; b = $f.b; c = $f.c; ret = $f.ret; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: ret = $ifaceNil; b = this; ret = (_entry = b._pins[c], _entry !== undefined ? _entry.v : $ifaceNil); $r = assert.For(!($interfaceIsEqual(ret, $ifaceNil)), 20, new sliceType([])); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } return ret; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: board.ptr.prototype.InnerPin }; } $f.$ptr = $ptr; $f._entry = _entry; $f.b = b; $f.c = c; $f.ret = ret; $f.$s = $s; $f.$r = $r; return $f; }; board.prototype.InnerPin = function(c) { return this.$val.InnerPin(c); }; board.ptr.prototype.Point = function(x) { var $ptr, _entry, _key, b, ret, x; ret = $ifaceNil; b = this; ret = (_entry = b.points[x], _entry !== undefined ? _entry.v : $ifaceNil); if ($interfaceIsEqual(ret, $ifaceNil)) { ret = pt(x); _key = x; (b.points || $throwRuntimeError("assignment to entry in nil map"))[_key] = { k: _key, v: ret }; } return ret; }; board.prototype.Point = function(x) { return this.$val.Point(x); }; board.ptr.prototype.Do = function() { var $ptr, b; b = this; }; board.prototype.Do = function() { return this.$val.Do(); }; board.ptr.prototype.String = function() { var $ptr, b; b = this; return "board"; }; board.prototype.String = function() { return this.$val.String(); }; board.ptr.prototype.Pins = function(pins) { var $ptr, _entry, _i, _key, _key$1, _key$2, _key$3, _keys, _p, _r, _ref, _ref$1, b, brd, k, p, p$1, p$2, pins, $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; _key$1 = $f._key$1; _key$2 = $f._key$2; _key$3 = $f._key$3; _keys = $f._keys; _p = $f._p; _r = $f._r; _ref = $f._ref; _ref$1 = $f._ref$1; b = $f.b; brd = $f.brd; k = $f.k; p = $f.p; p$1 = $f.p$1; p$2 = $f.p$2; pins = $f.pins; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: brd = this; /* */ if (pins.$length > 0) { $s = 1; continue; } /* */ $s = 2; continue; /* if (pins.$length > 0) { */ case 1: brd.pins = new $Map(); brd._pins = new $Map(); /* */ if (!((0 >= pins.$length ? $throwRuntimeError("index out of range") : pins.$array[pins.$offset + 0]) === false)) { $s = 3; continue; } /* */ $s = 4; continue; /* if (!((0 >= pins.$length ? $throwRuntimeError("index out of range") : pins.$array[pins.$offset + 0]) === false)) { */ case 3: _ref = (0 >= pins.$length ? $throwRuntimeError("index out of range") : pins.$array[pins.$offset + 0]); _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; } k = _entry.k; _p = _entry.v; _r = Buffer(); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } b = $assertType(_r, ptrType$4); _ref$1 = _p; /* */ if ($assertType(_ref$1, ptrType$5, true)[1]) { $s = 8; continue; } /* */ if ($assertType(_ref$1, ptrType$6, true)[1]) { $s = 9; continue; } /* */ $s = 10; continue; /* if ($assertType(_ref$1, ptrType$5, true)[1]) { */ case 8: p = _ref$1.$val; b.I = p; _key = k; (brd.pins || $throwRuntimeError("assignment to entry in nil map"))[_key] = { k: _key, v: p }; p.owner = b; _key$1 = k; (brd._pins || $throwRuntimeError("assignment to entry in nil map"))[_key$1] = { k: _key$1, v: b.O }; $s = 11; continue; /* } else if ($assertType(_ref$1, ptrType$6, true)[1]) { */ case 9: p$1 = _ref$1.$val; b.O = p$1; _key$2 = k; (brd.pins || $throwRuntimeError("assignment to entry in nil map"))[_key$2] = { k: _key$2, v: p$1 }; p$1.owner = b; _key$3 = k; (brd._pins || $throwRuntimeError("assignment to entry in nil map"))[_key$3] = { k: _key$3, v: b.I }; $s = 11; continue; /* } else { */ case 10: p$2 = _ref$1; $r = halt.As(100, new sliceType([reflect.TypeOf(p$2)])); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 11: _i++; /* } */ $s = 5; continue; case 6: /* } */ case 4: /* } */ case 2: return brd.pins; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: board.ptr.prototype.Pins }; } $f.$ptr = $ptr; $f._entry = _entry; $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._p = _p; $f._r = _r; $f._ref = _ref; $f._ref$1 = _ref$1; $f.b = b; $f.brd = brd; $f.k = k; $f.p = p; $f.p$1 = p$1; $f.p$2 = p$2; $f.pins = pins; $f.$s = $s; $f.$r = $r; return $f; }; board.prototype.Pins = function(pins) { return this.$val.Pins(pins); }; Board = function() { var $ptr, _r, _r$1, _r$2, 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; _r$1 = $f._r$1; _r$2 = $f._r$2; ret = $f.ret; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: ret = new board.ptr($ifaceNil, false, false, false); ret.points = new $Map(); _r = $pkg.Static.Pos.Pin(1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } $r = ret.Point("T").Solder(new sliceType$2([_r])); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } _r$1 = $pkg.Static.Neg.Pin(1); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } $r = ret.Point("F").Solder(new sliceType$2([_r$1])); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } _r$2 = $pkg.Static.Ground.Pin(1); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } $r = ret.Point("N").Solder(new sliceType$2([_r$2])); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } return ret; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Board }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.ret = ret; $f.$s = $s; $f.$r = $r; return $f; }; $pkg.Board = Board; trig.ptr.prototype.Pin = function(c) { var $ptr, _ref, c, t; t = this; _ref = c; if (_ref === 2) { return t.D; } else if (_ref === 3) { return t.S; } $panic(new $Int(0)); }; trig.prototype.Pin = function(c) { return this.$val.Pin(c); }; trig.ptr.prototype.Value = function(v) { var $ptr, t, v; t = this; if (v.$length > 0) { $copy(t.data, (0 >= v.$length ? $throwRuntimeError("index out of range") : v.$array[v.$offset + 0]), tri.Trit); } return t.data; }; trig.prototype.Value = function(v) { return this.$val.Value(v); }; trig.ptr.prototype.Do = function() { var $ptr, _r, 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; t = $f.t; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: t = this; _r = t.S.Select(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } val = _r; if (!(val === ptrType.nil)) { $copy(t.data, val, tri.Trit); } $r = t.D.Update(t.data); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: trig.ptr.prototype.Do }; } $f.$ptr = $ptr; $f._r = _r; $f.t = t; $f.val = val; $f.$s = $s; $f.$r = $r; return $f; }; trig.prototype.Do = function() { return this.$val.Do(); }; trig.ptr.prototype.String = function() { var $ptr, _r, 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; t = $f.t; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: t = this; _r = fmt.Sprint(new sliceType([new $String("T"), new $String(":"), (x = t.data, new x.constructor.elem(x))])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: trig.ptr.prototype.String }; } $f.$ptr = $ptr; $f._r = _r; $f.t = t; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; }; trig.prototype.String = function() { return this.$val.String(); }; Trigger = 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 = new trig.ptr($ifaceNil, $ifaceNil, $clone(tri.NIL, tri.Trit)); t.D = NewOut(t); _r = NewIn(t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } t.S = _r; return t; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Trigger }; } $f.$ptr = $ptr; $f._r = _r; $f.t = t; $f.$s = $s; $f.$r = $r; return $f; }; $pkg.Trigger = Trigger; out.ptr.prototype.String = function() { var $ptr, _r, o, $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 = $f.o; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: o = this; _r = fmt.Sprint(new sliceType([o.owner, new $String(":"), o.val, new $String("."), new $String("out")])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: out.ptr.prototype.String }; } $f.$ptr = $ptr; $f._r = _r; $f.o = o; $f.$s = $s; $f.$r = $r; return $f; }; out.prototype.String = function() { return this.$val.String(); }; out.ptr.prototype.Update = function(value) { var $ptr, o, value; o = this; o.val = value; }; out.prototype.Update = function(value) { return this.$val.Update(value); }; in$1.ptr.prototype.String = 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 = fmt.Sprint(new sliceType([i.owner, new $String(":"), i.val, new $String("."), new $String("in")])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: in$1.ptr.prototype.String }; } $f.$ptr = $ptr; $f._r = _r; $f.i = i; $f.$s = $s; $f.$r = $r; return $f; }; in$1.prototype.String = function() { return this.$val.String(); }; in$1.ptr.prototype.Select = function() { var $ptr, i; i = this; return i.val; }; in$1.prototype.Select = function() { return this.$val.Select(); }; point.ptr.prototype.Solder = function(pins) { var $ptr, _i, _r, _ref, exists, p, pin, pins, $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; exists = $f.exists; p = $f.p; pin = $f.pin; pins = $f.pins; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: p = [p]; p[0] = this; exists = (function(p) { return function(pin) { var $ptr, _i, _ref, pin, x; _ref = p[0].pins; _i = 0; while (true) { if (!(_i < _ref.$length)) { break; } x = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]); if ($interfaceIsEqual(x, pin)) { return true; } _i++; } return false; }; })(p); _ref = pins; _i = 0; /* while (true) { */ case 1: /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } pin = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]); _r = exists(pin); /* */ $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: p[0].pins = $append(p[0].pins, pin); $s = 5; continue; /* } else { */ case 4: $r = halt.As(100, new sliceType([pin])); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 5: _i++; /* } */ $s = 1; continue; case 2: /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: point.ptr.prototype.Solder }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._ref = _ref; $f.exists = exists; $f.p = p; $f.pin = pin; $f.pins = pins; $f.$s = $s; $f.$r = $r; return $f; }; point.prototype.Solder = function(pins) { return this.$val.Solder(pins); }; point.ptr.prototype.sel = function() { var $ptr, _i, _ref, _ref$1, _x, p, value, 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; _ref = $f._ref; _ref$1 = $f._ref$1; _x = $f._x; p = $f.p; value = $f.value; 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: value = ptrType.nil; p = this; _ref = p.pins; _i = 0; /* while (true) { */ case 1: /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } _x = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]); _ref$1 = _x; /* */ if ($assertType(_ref$1, ptrType$6, true)[1]) { $s = 3; continue; } /* */ if ($assertType(_ref$1, ptrType$5, true)[1]) { $s = 4; continue; } /* */ $s = 5; continue; /* if ($assertType(_ref$1, ptrType$6, true)[1]) { */ case 3: x = _ref$1.$val; if (value === ptrType.nil) { value = x.val; } $s = 6; continue; /* } else if ($assertType(_ref$1, ptrType$5, true)[1]) { */ case 4: x$1 = _ref$1.$val; $s = 6; continue; /* } else { */ case 5: x$2 = _ref$1; $r = halt.As(100, new sliceType([])); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 6: _i++; /* } */ $s = 1; continue; case 2: return value; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: point.ptr.prototype.sel }; } $f.$ptr = $ptr; $f._i = _i; $f._ref = _ref; $f._ref$1 = _ref$1; $f._x = _x; $f.p = p; $f.value = value; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f; }; point.prototype.sel = function() { return this.$val.sel(); }; point.ptr.prototype.set = function(value) { var $ptr, _i, _ref, _ref$1, _x, p, value, 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; _ref = $f._ref; _ref$1 = $f._ref$1; _x = $f._x; p = $f.p; value = $f.value; 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; _ref = p.pins; _i = 0; /* while (true) { */ case 1: /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } _x = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]); _ref$1 = _x; /* */ if ($assertType(_ref$1, ptrType$6, true)[1]) { $s = 3; continue; } /* */ if ($assertType(_ref$1, ptrType$5, true)[1]) { $s = 4; continue; } /* */ $s = 5; continue; /* if ($assertType(_ref$1, ptrType$6, true)[1]) { */ case 3: x = _ref$1.$val; $s = 6; continue; /* } else if ($assertType(_ref$1, ptrType$5, true)[1]) { */ case 4: x$1 = _ref$1.$val; x$1.val = value; $s = 6; continue; /* } else { */ case 5: x$2 = _ref$1; $r = halt.As(100, new sliceType([])); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 6: _i++; /* } */ $s = 1; continue; case 2: /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: point.ptr.prototype.set }; } $f.$ptr = $ptr; $f._i = _i; $f._ref = _ref; $f._ref$1 = _ref$1; $f._x = _x; $f.p = p; $f.value = value; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f; }; point.prototype.set = function(value) { return this.$val.set(value); }; point.ptr.prototype.run = function() { var $ptr, _i, _ref, _ref$1, _x, p, wg, 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; _ref = $f._ref; _ref$1 = $f._ref$1; _x = $f._x; p = $f.p; wg = $f.wg; 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; wg = new sync.WaitGroup.ptr(new sync.Mutex.ptr(), 0, 0, ptrType$7.nil); _ref = p.pins; _i = 0; /* while (true) { */ case 1: /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } _x = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]); _ref$1 = _x; /* */ if ($assertType(_ref$1, ptrType$6, true)[1]) { $s = 3; continue; } /* */ if ($assertType(_ref$1, ptrType$5, true)[1]) { $s = 4; continue; } /* */ $s = 5; continue; /* if ($assertType(_ref$1, ptrType$6, true)[1]) { */ case 3: x = _ref$1.$val; $r = x.owner.Do(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $s = 6; continue; /* } else if ($assertType(_ref$1, ptrType$5, true)[1]) { */ case 4: x$1 = _ref$1.$val; $r = wg.Add(1); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = $send(x$1.meta, wg); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $s = 6; continue; /* } else { */ case 5: x$2 = _ref$1; $r = halt.As(100, new sliceType([])); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 6: _i++; /* } */ $s = 1; continue; case 2: $r = wg.Wait(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: point.ptr.prototype.run }; } $f.$ptr = $ptr; $f._i = _i; $f._ref = _ref; $f._ref$1 = _ref$1; $f._x = _x; $f.p = p; $f.wg = wg; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f; }; point.prototype.run = function() { return this.$val.run(); }; pt = function(n) { var $ptr, n, ret; ret = ptrType$8.nil; ret = new point.ptr($makeSlice(sliceType$2, 0), n); $go((function $b(p) { 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 = [p]; $r = ncl.Step(p[0], (function(p) { 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 = p[0].sel(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } $r = p[0].set(_r); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = p[0].run(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r = _r; $f.$s = $s; $f.$r = $r; return $f; }; })(p)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f.p = p; $f.$s = $s; $f.$r = $r; return $f; }), [ret]); ret = ret; return ret; }; NewOut = function(o) { var $ptr, o, ret; ret = ptrType$6.nil; ret = new out.ptr($ifaceNil, ptrType.nil, o); return ret; }; $pkg.NewOut = NewOut; NewIn = function(o) { var $ptr, o, ret, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; o = $f.o; ret = $f.ret; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: ret = ptrType$5.nil; $r = assert.For(!($interfaceIsEqual(o, $ifaceNil)), 20, new sliceType([])); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } ret = new in$1.ptr($ifaceNil, ptrType.nil, chanType.nil, o); ret.meta = new chanType(0); $go((function $b(i) { var $ptr, i, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; i = $f.i; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: i = [i]; $r = ncl.Step(i[0], (function(i) { return function $b() { 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: _r = $recv(i[0].meta); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } wg = _r[0]; $r = i[0].owner.Do(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = wg.Done(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r = _r; $f.wg = wg; $f.$s = $s; $f.$r = $r; return $f; }; })(i)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f.i = i; $f.$s = $s; $f.$r = $r; return $f; }), [ret]); return ret; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: NewIn }; } $f.$ptr = $ptr; $f.o = o; $f.ret = ret; $f.$s = $s; $f.$r = $r; return $f; }; $pkg.NewIn = NewIn; ptrType$4.methods = [{prop: "Pin", name: "Pin", pkg: "", typ: $funcType([ncl.PinCode], [ncl.Pin], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "init", name: "init", pkg: "sim3/ncl/std", typ: $funcType([], [], false)}, {prop: "Do", name: "Do", pkg: "", typ: $funcType([], [], false)}]; ptrType$10.methods = [{prop: "Pin", name: "Pin", pkg: "", typ: $funcType([ncl.PinCode], [ncl.Pin], false)}, {prop: "Do", name: "Do", pkg: "", typ: $funcType([], [], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "init", name: "init", pkg: "sim3/ncl/std", typ: $funcType([], [], false)}]; ptrType$11.methods = [{prop: "Pin", name: "Pin", pkg: "", typ: $funcType([ncl.PinCode], [ncl.Pin], false)}, {prop: "init", name: "init", pkg: "sim3/ncl/std", typ: $funcType([], [], false)}, {prop: "Do", name: "Do", pkg: "", typ: $funcType([], [], false)}]; ptrType$12.methods = [{prop: "Pin", name: "Pin", pkg: "", typ: $funcType([ncl.PinCode], [ncl.Pin], false)}, {prop: "init", name: "init", pkg: "sim3/ncl/std", typ: $funcType([], [], false)}, {prop: "Do", name: "Do", pkg: "", typ: $funcType([], [], false)}]; ptrType$2.methods = [{prop: "Pin", name: "Pin", pkg: "", typ: $funcType([ncl.PinCode], [ncl.Pin], false)}, {prop: "Do", name: "Do", pkg: "", typ: $funcType([], [], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; ptrType$1.methods = [{prop: "Pin", name: "Pin", pkg: "", typ: $funcType([ncl.PinCode], [ncl.Pin], false)}, {prop: "Do", name: "Do", pkg: "", typ: $funcType([], [], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; ptrType$13.methods = [{prop: "Pin", name: "Pin", pkg: "", typ: $funcType([ncl.PinCode], [ncl.Pin], false)}, {prop: "InnerPin", name: "InnerPin", pkg: "", typ: $funcType([ncl.PinCode], [ncl.Pin], false)}, {prop: "Point", name: "Point", pkg: "", typ: $funcType([$String], [ncl.Point], false)}, {prop: "Do", name: "Do", pkg: "", typ: $funcType([], [], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Pins", name: "Pins", pkg: "", typ: $funcType([sliceType$3], [mapType], true)}]; ptrType$14.methods = [{prop: "Pin", name: "Pin", pkg: "", typ: $funcType([ncl.PinCode], [ncl.Pin], false)}, {prop: "Value", name: "Value", pkg: "", typ: $funcType([sliceType$4], [ptrType], true)}, {prop: "Do", name: "Do", pkg: "", typ: $funcType([], [], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; ptrType$6.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Update", name: "Update", pkg: "", typ: $funcType([ptrType], [], false)}]; ptrType$5.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Select", name: "Select", pkg: "", typ: $funcType([], [ptrType], false)}]; ptrType$8.methods = [{prop: "dump", name: "dump", pkg: "sim3/ncl/std", typ: $funcType([sliceType$5], [$String], true)}, {prop: "Solder", name: "Solder", pkg: "", typ: $funcType([sliceType$2], [], true)}, {prop: "sel", name: "sel", pkg: "sim3/ncl/std", typ: $funcType([], [ptrType], false)}, {prop: "set", name: "set", pkg: "sim3/ncl/std", typ: $funcType([ptrType], [], false)}, {prop: "run", name: "run", pkg: "sim3/ncl/std", typ: $funcType([], [], false)}]; any2.init([{prop: "typ", name: "typ", pkg: "sim3/ncl/std", typ: $String, tag: ""}, {prop: "I", name: "I", pkg: "", typ: ncl.In, tag: ""}, {prop: "O", name: "O", pkg: "", typ: ncl.Out, tag: ""}, {prop: "fn", name: "fn", pkg: "sim3/ncl/std", typ: funcType, tag: ""}]); any3.init([{prop: "typ", name: "typ", pkg: "sim3/ncl/std", typ: $String, tag: ""}, {prop: "A", name: "A", pkg: "", typ: ncl.In, tag: ""}, {prop: "B", name: "B", pkg: "", typ: ncl.In, tag: ""}, {prop: "O", name: "O", pkg: "", typ: ncl.Out, tag: ""}, {prop: "fn", name: "fn", pkg: "sim3/ncl/std", typ: funcType$1, tag: ""}]); mux.init([{prop: "T", name: "T", pkg: "", typ: ncl.In, tag: ""}, {prop: "N", name: "N", pkg: "", typ: ncl.In, tag: ""}, {prop: "F", name: "F", pkg: "", typ: ncl.In, tag: ""}, {prop: "A", name: "A", pkg: "", typ: ncl.In, tag: ""}, {prop: "B", name: "B", pkg: "", typ: ncl.Out, tag: ""}]); demux.init([{prop: "T", name: "T", pkg: "", typ: ncl.Out, tag: ""}, {prop: "N", name: "N", pkg: "", typ: ncl.Out, tag: ""}, {prop: "F", name: "F", pkg: "", typ: ncl.Out, tag: ""}, {prop: "A", name: "A", pkg: "", typ: ncl.In, tag: ""}, {prop: "B", name: "B", pkg: "", typ: ncl.In, tag: ""}]); power.init([{prop: "Element", name: "", pkg: "", typ: ncl.Element, tag: ""}, {prop: "O", name: "O", pkg: "", typ: ncl.Out, tag: ""}, {prop: "value", name: "value", pkg: "sim3/ncl/std", typ: tri.Trit, tag: ""}]); probe.init([{prop: "Element", name: "", pkg: "", typ: ncl.Element, tag: ""}, {prop: "I", name: "I", pkg: "", typ: ncl.In, tag: ""}, {prop: "name", name: "name", pkg: "sim3/ncl/std", typ: $String, tag: ""}]); board.init([{prop: "Compound", name: "", pkg: "", typ: ncl.Compound, tag: ""}, {prop: "points", name: "points", pkg: "sim3/ncl/std", typ: mapType$1, tag: ""}, {prop: "pins", name: "pins", pkg: "sim3/ncl/std", typ: mapType, tag: ""}, {prop: "_pins", name: "_pins", pkg: "sim3/ncl/std", typ: mapType, tag: ""}]); trig.init([{prop: "D", name: "D", pkg: "", typ: ncl.Out, tag: ""}, {prop: "S", name: "S", pkg: "", typ: ncl.In, tag: ""}, {prop: "data", name: "data", pkg: "sim3/ncl/std", typ: tri.Trit, tag: ""}]); out.init([{prop: "Out", name: "", pkg: "", typ: ncl.Out, tag: ""}, {prop: "val", name: "val", pkg: "sim3/ncl/std", typ: ptrType, tag: ""}, {prop: "owner", name: "owner", pkg: "sim3/ncl/std", typ: ncl.Element, tag: ""}]); in$1.init([{prop: "In", name: "", pkg: "", typ: ncl.In, tag: ""}, {prop: "val", name: "val", pkg: "sim3/ncl/std", typ: ptrType, tag: ""}, {prop: "meta", name: "meta", pkg: "sim3/ncl/std", typ: chanType, tag: ""}, {prop: "owner", name: "owner", pkg: "sim3/ncl/std", typ: ncl.Element, tag: ""}]); point.init([{prop: "pins", name: "pins", pkg: "sim3/ncl/std", typ: sliceType$2, tag: ""}, {prop: "name", name: "name", pkg: "sim3/ncl/std", 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 = fmt.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = reflect.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = ncl.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = tri.$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; } $r = assert.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = halt.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $pkg.Static = new structType.ptr(); $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["sim3/ncl/tool"] = (function() { var $pkg = {}, $init, yaml, fnv, reflect, ncl, std, tri, assert, Import, DataSource, PinClosure, Solder, Pin, PinList, NetList, sliceType, sliceType$1, sliceType$2, ptrType, sliceType$3, sliceType$4, mapType, sliceType$5, ptrType$1, ptrType$2, mapType$1, mapType$2, mapType$3, mapType$4, mapType$5, imps, Simple, In, Out, init, Register, value, encodePin; yaml = $packages["gopkg.in/yaml.v2"]; fnv = $packages["hash/fnv"]; reflect = $packages["reflect"]; ncl = $packages["sim3/ncl"]; std = $packages["sim3/ncl/std"]; tri = $packages["sim3/tri"]; assert = $packages["ypk/assert"]; Import = $pkg.Import = $newType(4, $kindFunc, "tool.Import", "Import", "sim3/ncl/tool", null); DataSource = $pkg.DataSource = $newType(8, $kindInterface, "tool.DataSource", "DataSource", "sim3/ncl/tool", null); PinClosure = $pkg.PinClosure = $newType(4, $kindFunc, "tool.PinClosure", "PinClosure", "sim3/ncl/tool", null); Solder = $pkg.Solder = $newType(0, $kindStruct, "tool.Solder", "Solder", "sim3/ncl/tool", function(imp_, ent_, root_, pins_, Data_) { this.$val = this; if (arguments.length === 0) { this.imp = false; this.ent = false; this.root = $ifaceNil; this.pins = false; this.Data = $ifaceNil; return; } this.imp = imp_; this.ent = ent_; this.root = root_; this.pins = pins_; this.Data = Data_; }); Pin = $pkg.Pin = $newType(4, $kindMap, "tool.Pin", "Pin", "sim3/ncl/tool", null); PinList = $pkg.PinList = $newType(12, $kindSlice, "tool.PinList", "PinList", "sim3/ncl/tool", null); NetList = $pkg.NetList = $newType(0, $kindStruct, "tool.NetList", "NetList", "sim3/ncl/tool", function(Import_, Entities_, Netlist_, Init_) { this.$val = this; if (arguments.length === 0) { this.Import = sliceType$4.nil; this.Entities = false; this.Netlist = false; this.Init = false; return; } this.Import = Import_; this.Entities = Entities_; this.Netlist = Netlist_; this.Init = Init_; }); sliceType = $sliceType($emptyInterface); sliceType$1 = $sliceType($Uint8); sliceType$2 = $sliceType(ncl.Pin); ptrType = $ptrType(tri.Trit); sliceType$3 = $sliceType(ptrType); sliceType$4 = $sliceType($String); mapType = $mapType(ncl.PinCode, ncl.Pin); sliceType$5 = $sliceType(mapType); ptrType$1 = $ptrType(NetList); ptrType$2 = $ptrType(Solder); mapType$1 = $mapType($String, Import); mapType$2 = $mapType($String, ncl.Element); mapType$3 = $mapType(ncl.PinCode, PinClosure); mapType$4 = $mapType($String, $String); mapType$5 = $mapType($String, PinList); Simple = function(f) { var $ptr, f; return (function $b(param) { var $ptr, _r, param, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; param = $f.param; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: _r = f(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r = _r; $f.param = param; $f.$s = $s; $f.$r = $r; return $f; }); }; $pkg.Simple = Simple; In = function(e) { 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: _r = std.NewIn(e); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: In }; } $f.$ptr = $ptr; $f._r = _r; $f.e = e; $f.$s = $s; $f.$r = $r; return $f; }; $pkg.In = In; Out = function(e) { var $ptr, e; return std.NewOut(e); }; $pkg.Out = Out; init = function() { var $ptr, _key, _key$1, _key$10, _key$11, _key$12, _key$13, _key$14, _key$2, _key$3, _key$4, _key$5, _key$6, _key$7, _key$8, _key$9; _key = "NOT"; (imps || $throwRuntimeError("assignment to entry in nil map"))[_key] = { k: _key, v: Simple(std.Not) }; _key$1 = "PROBE"; (imps || $throwRuntimeError("assignment to entry in nil map"))[_key$1] = { k: _key$1, v: (function $b(opts) { var $ptr, _r, opts, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; opts = $f.opts; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: $r = assert.For(!((opts.$length === 0)), 20, new sliceType([])); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } _r = std.Probe($assertType((0 >= opts.$length ? $throwRuntimeError("index out of range") : opts.$array[opts.$offset + 0]), $String)); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r = _r; $f.opts = opts; $f.$s = $s; $f.$r = $r; return $f; }) }; _key$2 = "SUM3"; (imps || $throwRuntimeError("assignment to entry in nil map"))[_key$2] = { k: _key$2, v: Simple(std.Sum3) }; _key$3 = "SUM3r"; (imps || $throwRuntimeError("assignment to entry in nil map"))[_key$3] = { k: _key$3, v: Simple(std.Sum3r) }; _key$4 = "DMX"; (imps || $throwRuntimeError("assignment to entry in nil map"))[_key$4] = { k: _key$4, v: Simple(std.Demux) }; _key$5 = "MX"; (imps || $throwRuntimeError("assignment to entry in nil map"))[_key$5] = { k: _key$5, v: Simple(std.Mux) }; _key$6 = "NAND"; (imps || $throwRuntimeError("assignment to entry in nil map"))[_key$6] = { k: _key$6, v: Simple(std.AndNot) }; _key$7 = "NOR"; (imps || $throwRuntimeError("assignment to entry in nil map"))[_key$7] = { k: _key$7, v: Simple(std.OrNot) }; _key$8 = "CAR3s"; (imps || $throwRuntimeError("assignment to entry in nil map"))[_key$8] = { k: _key$8, v: Simple(std.Car3s) }; _key$9 = "CAR3m"; (imps || $throwRuntimeError("assignment to entry in nil map"))[_key$9] = { k: _key$9, v: Simple(std.Car3m) }; _key$10 = "CAR3sr"; (imps || $throwRuntimeError("assignment to entry in nil map"))[_key$10] = { k: _key$10, v: Simple(std.Car3sr) }; _key$11 = "CMP"; (imps || $throwRuntimeError("assignment to entry in nil map"))[_key$11] = { k: _key$11, v: Simple(std.Cmp) }; _key$12 = "CL"; (imps || $throwRuntimeError("assignment to entry in nil map"))[_key$12] = { k: _key$12, v: Simple(std.CycleLeft) }; _key$13 = "CR"; (imps || $throwRuntimeError("assignment to entry in nil map"))[_key$13] = { k: _key$13, v: Simple(std.CycleRight) }; _key$14 = "T"; (imps || $throwRuntimeError("assignment to entry in nil map"))[_key$14] = { k: _key$14, v: Simple(std.Trigger) }; }; Register = function(name, i) { var $ptr, _key, i, name; _key = name; (imps || $throwRuntimeError("assignment to entry in nil map"))[_key] = { k: _key, v: i }; }; $pkg.Register = Register; value = function(v) { var $ptr, _ref, v; _ref = v; if (_ref === "T") { return tri.TRUE; } else if (_ref === "N") { return tri.NIL; } else if (_ref === "F") { return tri.FALSE; } else { $panic(new $Int(0)); } }; encodePin = function(p) { var $ptr, _r, _r$1, _ref, h, 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; _ref = $f._ref; h = $f.h; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: _ref = p; /* */ if (_ref === "A") { $s = 1; continue; } /* */ if (_ref === "B") { $s = 2; continue; } /* */ if (_ref === "N") { $s = 3; continue; } /* */ if (_ref === "T") { $s = 4; continue; } /* */ if (_ref === "F") { $s = 5; continue; } /* */ if (_ref === "I") { $s = 6; continue; } /* */ if (_ref === "O") { $s = 7; continue; } /* */ if (_ref === "S") { $s = 8; continue; } /* */ if (_ref === "D") { $s = 9; continue; } /* */ if (_ref === "C") { $s = 10; continue; } /* */ $s = 11; continue; /* if (_ref === "A") { */ case 1: return 4; $s = 12; continue; /* } else if (_ref === "B") { */ case 2: return 5; $s = 12; continue; /* } else if (_ref === "N") { */ case 3: return 7; $s = 12; continue; /* } else if (_ref === "T") { */ case 4: return 6; $s = 12; continue; /* } else if (_ref === "F") { */ case 5: return 8; $s = 12; continue; /* } else if (_ref === "I") { */ case 6: return 0; $s = 12; continue; /* } else if (_ref === "O") { */ case 7: return 1; $s = 12; continue; /* } else if (_ref === "S") { */ case 8: return 3; $s = 12; continue; /* } else if (_ref === "D") { */ case 9: return 2; $s = 12; continue; /* } else if (_ref === "C") { */ case 10: return 9; $s = 12; continue; /* } else { */ case 11: h = fnv.New32(); _r = h.Write(new sliceType$1($stringToBytes(p))); /* */ $s = 13; case 13: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _r; _r$1 = h.Sum32(); /* */ $s = 14; case 14: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } return (_r$1 >> 0); /* } */ case 12: /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: encodePin }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f.h = h; $f.p = p; $f.$s = $s; $f.$r = $r; return $f; }; Solder.ptr.prototype.handle = function(n) { var $ptr, _e, _entry, _entry$1, _entry$10, _entry$2, _entry$3, _entry$4, _entry$5, _entry$6, _entry$7, _entry$8, _entry$9, _i, _i$1, _i$2, _i$3, _i$4, _i$5, _key, _key$1, _keys, _keys$1, _keys$2, _keys$3, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _ref$5, _tuple, e, i, i$1, io, k, k$1, k$2, n, ok, p, pin, s, t, v, v$1, v$2, val, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _e = $f._e; _entry = $f._entry; _entry$1 = $f._entry$1; _entry$10 = $f._entry$10; _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; _entry$7 = $f._entry$7; _entry$8 = $f._entry$8; _entry$9 = $f._entry$9; _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; _key = $f._key; _key$1 = $f._key$1; _keys = $f._keys; _keys$1 = $f._keys$1; _keys$2 = $f._keys$2; _keys$3 = $f._keys$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; _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; _tuple = $f._tuple; e = $f.e; i = $f.i; i$1 = $f.i$1; io = $f.io; k = $f.k; k$1 = $f.k$1; k$2 = $f.k$2; n = $f.n; ok = $f.ok; p = $f.p; pin = $f.pin; s = $f.s; t = $f.t; v = $f.v; v$1 = $f.v$1; v$2 = $f.v$2; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: s = this; _ref = n.Import; _i = 0; while (true) { if (!(_i < _ref.$length)) { break; } i = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]); _key = i; (s.imp || $throwRuntimeError("assignment to entry in nil map"))[_key] = { k: _key, v: (_entry = imps[i], _entry !== undefined ? _entry.v : $throwNilPointerError) }; _i++; } _ref$1 = n.Entities; _i$1 = 0; _keys = $keys(_ref$1); /* while (true) { */ case 1: /* if (!(_i$1 < _keys.length)) { break; } */ if(!(_i$1 < _keys.length)) { $s = 2; continue; } _entry$1 = _ref$1[_keys[_i$1]]; if (_entry$1 === undefined) { _i$1++; /* continue; */ $s = 1; continue; } k = _entry$1.k; v = _entry$1.v; $r = assert.For($interfaceIsEqual((_entry$2 = s.ent[k], _entry$2 !== undefined ? _entry$2.v : $ifaceNil), $ifaceNil), 27, 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; } $r = assert.For(!((_entry$3 = s.imp[v], _entry$3 !== undefined ? _entry$3.v : $throwNilPointerError) === $throwNilPointerError), 28, new sliceType([new $String(v)])); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } _r = (_entry$4 = s.imp[v], _entry$4 !== undefined ? _entry$4.v : $throwNilPointerError)(new sliceType([new $String(k)])); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _key$1 = k; (s.ent || $throwRuntimeError("assignment to entry in nil map"))[_key$1] = { k: _key$1, v: _r }; _i$1++; /* } */ $s = 1; continue; case 2: _ref$2 = n.Netlist; _i$2 = 0; _keys$1 = $keys(_ref$2); /* while (true) { */ case 6: /* if (!(_i$2 < _keys$1.length)) { break; } */ if(!(_i$2 < _keys$1.length)) { $s = 7; continue; } _entry$5 = _ref$2[_keys$1[_i$2]]; if (_entry$5 === undefined) { _i$2++; /* continue; */ $s = 6; continue; } k$1 = _entry$5.k; v$1 = _entry$5.v; _r$1 = s.root.Point(k$1); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } p = _r$1; _ref$3 = v$1; _i$3 = 0; /* while (true) { */ case 9: /* if (!(_i$3 < _ref$3.$length)) { break; } */ if(!(_i$3 < _ref$3.$length)) { $s = 10; continue; } i$1 = ((_i$3 < 0 || _i$3 >= _ref$3.$length) ? $throwRuntimeError("index out of range") : _ref$3.$array[_ref$3.$offset + _i$3]); _ref$4 = i$1; _i$4 = 0; _keys$2 = $keys(_ref$4); /* while (true) { */ case 11: /* if (!(_i$4 < _keys$2.length)) { break; } */ if(!(_i$4 < _keys$2.length)) { $s = 12; continue; } _entry$6 = _ref$4[_keys$2[_i$4]]; if (_entry$6 === undefined) { _i$4++; /* continue; */ $s = 11; continue; } _e = _entry$6.k; io = _entry$6.v; e = (_entry$7 = s.ent[_e], _entry$7 !== undefined ? _entry$7.v : $ifaceNil); $r = assert.For(!($interfaceIsEqual(e, $ifaceNil)), 29, new sliceType([new $String(_e)])); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } pin = $ifaceNil; /* */ if (_e === "$") { $s = 14; continue; } /* */ $s = 15; continue; /* if (_e === "$") { */ case 14: _r$2 = encodePin(io); /* */ $s = 17; case 17: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } _r$3 = s.root.InnerPin(_r$2); /* */ $s = 18; case 18: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } pin = _r$3; $s = 16; continue; /* } else { */ case 15: _r$4 = encodePin(io); /* */ $s = 19; case 19: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } _r$5 = e.Pin(_r$4); /* */ $s = 20; case 20: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } pin = _r$5; /* } */ case 16: $r = assert.For(!($interfaceIsEqual(pin, $ifaceNil)), 30, new sliceType([e, new $String(io)])); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = p.Solder(new sliceType$2([pin])); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } _i$4++; /* } */ $s = 11; continue; case 12: _i$3++; /* } */ $s = 9; continue; case 10: _i$2++; /* } */ $s = 6; continue; case 7: _ref$5 = n.Init; _i$5 = 0; _keys$3 = $keys(_ref$5); /* while (true) { */ case 23: /* if (!(_i$5 < _keys$3.length)) { break; } */ if(!(_i$5 < _keys$3.length)) { $s = 24; continue; } val = [val]; _entry$8 = _ref$5[_keys$3[_i$5]]; if (_entry$8 === undefined) { _i$5++; /* continue; */ $s = 23; continue; } k$2 = _entry$8.k; v$2 = _entry$8.v; _tuple = $assertType((_entry$9 = s.ent[k$2], _entry$9 !== undefined ? _entry$9.v : $ifaceNil), ncl.Trigger, true); t = _tuple[0]; ok = _tuple[1]; $r = assert.For(ok, 20, new sliceType([reflect.TypeOf((_entry$10 = s.ent[k$2], _entry$10 !== undefined ? _entry$10.v : $ifaceNil))])); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } val[0] = $clone(value(v$2), tri.Trit); _r$6 = t.Value(new sliceType$3([val[0]])); /* */ $s = 26; case 26: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } _r$6; _i$5++; /* } */ $s = 23; continue; case 24: /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Solder.ptr.prototype.handle }; } $f.$ptr = $ptr; $f._e = _e; $f._entry = _entry; $f._entry$1 = _entry$1; $f._entry$10 = _entry$10; $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._entry$7 = _entry$7; $f._entry$8 = _entry$8; $f._entry$9 = _entry$9; $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._key = _key; $f._key$1 = _key$1; $f._keys = _keys; $f._keys$1 = _keys$1; $f._keys$2 = _keys$2; $f._keys$3 = _keys$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._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._tuple = _tuple; $f.e = e; $f.i = i; $f.i$1 = i$1; $f.io = io; $f.k = k; $f.k$1 = k$1; $f.k$2 = k$2; $f.n = n; $f.ok = ok; $f.p = p; $f.pin = pin; $f.s = s; $f.t = t; $f.v = v; $f.v$1 = v$1; $f.v$2 = v$2; $f.val = val; $f.$s = $s; $f.$r = $r; return $f; }; Solder.prototype.handle = function(n) { return this.$val.handle(n); }; Solder.ptr.prototype.parse = function(data) { var $ptr, _r, data, err, 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; data = $f.data; err = $f.err; n = $f.n; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: s = this; n = new NetList.ptr(sliceType$4.nil, false, false, false); _r = yaml.Unmarshal(new sliceType$1($stringToBytes(data)), n); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } err = _r; $r = assert.For($interfaceIsEqual(err, $ifaceNil), 39, new sliceType([new $String(data), err])); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = s.handle(n); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Solder.ptr.prototype.parse }; } $f.$ptr = $ptr; $f._r = _r; $f.data = data; $f.err = err; $f.n = n; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; }; Solder.prototype.parse = function(data) { return this.$val.parse(data); }; Solder.ptr.prototype.init = function() { var $ptr, _entry, _i, _key, _key$1, _keys, _r, _r$1, _r$2, _ref, k, pins, 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; _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; k = $f.k; pins = $f.pins; s = $f.s; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: s = this; _r = std.Board(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } s.root = _r; pins = new $Map(); _ref = s.pins; _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; } k = _entry.k; v = _entry.v; _r$1 = v(s.root); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } _key = k; (pins || $throwRuntimeError("assignment to entry in nil map"))[_key] = { k: _key, v: _r$1 }; _i++; /* } */ $s = 2; continue; case 3: _r$2 = s.root.Pins(new sliceType$5([pins])); /* */ $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.imp = new $Map(); s.ent = new $Map(); $r = s.parse("import: [PROBE]"); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } _key$1 = "$"; (s.ent || $throwRuntimeError("assignment to entry in nil map"))[_key$1] = { k: _key$1, v: s.root }; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Solder.ptr.prototype.init }; } $f.$ptr = $ptr; $f._entry = _entry; $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.k = k; $f.pins = pins; $f.s = s; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; }; Solder.prototype.init = function() { return this.$val.init(); }; Solder.ptr.prototype.UserPin = function(name, p) { var $ptr, _key, _r, name, p, s, $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; name = $f.name; p = $f.p; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: s = this; $r = assert.For(!(name === ""), 20, new sliceType([])); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = assert.For(!(p === $throwNilPointerError), 21, new sliceType([])); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = assert.For($interfaceIsEqual(s.root, $ifaceNil), 22, new sliceType([])); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } if (s.pins === false) { s.pins = new $Map(); } _r = encodePin(name); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _key = _r; (s.pins || $throwRuntimeError("assignment to entry in nil map"))[_key] = { k: _key, v: p }; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Solder.ptr.prototype.UserPin }; } $f.$ptr = $ptr; $f._key = _key; $f._r = _r; $f.name = name; $f.p = p; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; }; Solder.prototype.UserPin = function(name, p) { return this.$val.UserPin(name, p); }; Solder.ptr.prototype.Y = function(y) { var $ptr, s, y, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; s = $f.s; y = $f.y; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: s = this; /* */ if ($interfaceIsEqual(s.root, $ifaceNil)) { $s = 1; continue; } /* */ $s = 2; continue; /* if ($interfaceIsEqual(s.root, $ifaceNil)) { */ case 1: $r = s.init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 2: $r = s.parse(y); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Solder.ptr.prototype.Y }; } $f.$ptr = $ptr; $f.s = s; $f.y = y; $f.$s = $s; $f.$r = $r; return $f; }; Solder.prototype.Y = function(y) { return this.$val.Y(y); }; Solder.ptr.prototype.F = function(fn) { var $ptr, _r, _r$1, _tuple, data, err, fn, nl, 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; data = $f.data; err = $f.err; fn = $f.fn; nl = $f.nl; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: s = this; /* */ if ($interfaceIsEqual(s.root, $ifaceNil)) { $s = 1; continue; } /* */ $s = 2; continue; /* if ($interfaceIsEqual(s.root, $ifaceNil)) { */ case 1: $r = s.init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 2: if ($interfaceIsEqual(s.Data, $ifaceNil)) { s.Data = $pkg.Src; } $r = assert.For(!($interfaceIsEqual(s.Data, $ifaceNil)), 20, new sliceType([])); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } _r = s.Data.Get(fn); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _tuple = _r; data = _tuple[0]; nl = new NetList.ptr(sliceType$4.nil, false, false, false); _r$1 = yaml.Unmarshal(data, nl); /* */ $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; $r = assert.For($interfaceIsEqual(err, $ifaceNil), 41, new sliceType([err])); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = s.handle(nl); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Solder.ptr.prototype.F }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.data = data; $f.err = err; $f.fn = fn; $f.nl = nl; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; }; Solder.prototype.F = function(fn) { return this.$val.F(fn); }; Solder.ptr.prototype.Root = 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 = assert.For(!($interfaceIsEqual(s.root, $ifaceNil)), 20, new sliceType([])); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } return s.root; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Solder.ptr.prototype.Root }; } $f.$ptr = $ptr; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; }; Solder.prototype.Root = function() { return this.$val.Root(); }; ptrType$2.methods = [{prop: "handle", name: "handle", pkg: "sim3/ncl/tool", typ: $funcType([ptrType$1], [], false)}, {prop: "parse", name: "parse", pkg: "sim3/ncl/tool", typ: $funcType([$String], [], false)}, {prop: "init", name: "init", pkg: "sim3/ncl/tool", typ: $funcType([], [], false)}, {prop: "UserPin", name: "UserPin", pkg: "", typ: $funcType([$String, PinClosure], [], false)}, {prop: "Y", name: "Y", pkg: "", typ: $funcType([$String], [], false)}, {prop: "F", name: "F", pkg: "", typ: $funcType([$String], [], false)}, {prop: "Root", name: "Root", pkg: "", typ: $funcType([], [ncl.Element], false)}]; Import.init([sliceType], [ncl.Element], true); DataSource.init([{prop: "Get", name: "Get", pkg: "", typ: $funcType([$String], [sliceType$1, $error], false)}]); PinClosure.init([ncl.Element], [ncl.Pin], false); Solder.init([{prop: "imp", name: "imp", pkg: "sim3/ncl/tool", typ: mapType$1, tag: ""}, {prop: "ent", name: "ent", pkg: "sim3/ncl/tool", typ: mapType$2, tag: ""}, {prop: "root", name: "root", pkg: "sim3/ncl/tool", typ: ncl.Compound, tag: ""}, {prop: "pins", name: "pins", pkg: "sim3/ncl/tool", typ: mapType$3, tag: ""}, {prop: "Data", name: "Data", pkg: "", typ: DataSource, tag: ""}]); Pin.init($String, $String); PinList.init(Pin); NetList.init([{prop: "Import", name: "Import", pkg: "", typ: sliceType$4, tag: ""}, {prop: "Entities", name: "Entities", pkg: "", typ: mapType$4, tag: ""}, {prop: "Netlist", name: "Netlist", pkg: "", typ: mapType$5, tag: ""}, {prop: "Init", name: "Init", pkg: "", typ: mapType$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 = yaml.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = fnv.$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 = ncl.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = std.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = tri.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = assert.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $pkg.Src = $ifaceNil; imps = new $Map(); init(); /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; }; $pkg.$init = $init; return $pkg; })(); $packages["sim3/ncl/extra"] = (function() { var $pkg = {}, $init, ncl, tool, SM3, init, SM3r, SM, SMr; ncl = $packages["sim3/ncl"]; tool = $packages["sim3/ncl/tool"]; SM3 = 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 = new tool.Solder.ptr(false, false, $ifaceNil, false, $ifaceNil); $r = t.UserPin("A", tool.In); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = t.UserPin("B", tool.In); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = t.UserPin("C", tool.Out); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = t.UserPin("S", tool.Out); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = t.F("sm3.yml"); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } _r = t.Root(); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: SM3 }; } $f.$ptr = $ptr; $f._r = _r; $f.t = t; $f.$s = $s; $f.$r = $r; return $f; }; $pkg.SM3 = SM3; init = function() { var $ptr; tool.Register("SM3", tool.Simple(SM3)); tool.Register("SM3r", tool.Simple(SM3r)); tool.Register("SM", tool.Simple(SM)); tool.Register("SMr", tool.Simple(SMr)); }; SM3r = 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 = new tool.Solder.ptr(false, false, $ifaceNil, false, $ifaceNil); $r = t.UserPin("A", tool.In); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = t.UserPin("B", tool.In); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = t.UserPin("Cr", tool.Out); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = t.UserPin("Sr", tool.Out); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = t.F("sm3r.yml"); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } _r = t.Root(); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: SM3r }; } $f.$ptr = $ptr; $f._r = _r; $f.t = t; $f.$s = $s; $f.$r = $r; return $f; }; $pkg.SM3r = SM3r; SM = 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 = new tool.Solder.ptr(false, false, $ifaceNil, false, $ifaceNil); $r = t.UserPin("C0", tool.In); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = t.UserPin("A", tool.In); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = t.UserPin("B", tool.In); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = t.UserPin("S", tool.Out); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = t.UserPin("C", tool.Out); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = t.F("sm.yml"); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } _r = t.Root(); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: SM }; } $f.$ptr = $ptr; $f._r = _r; $f.t = t; $f.$s = $s; $f.$r = $r; return $f; }; $pkg.SM = SM; SMr = 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 = new tool.Solder.ptr(false, false, $ifaceNil, false, $ifaceNil); $r = t.UserPin("C0r", tool.In); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = t.UserPin("A", tool.In); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = t.UserPin("B", tool.In); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = t.UserPin("Sr", tool.Out); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = t.UserPin("Cr", tool.Out); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = t.F("smr.yml"); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } _r = t.Root(); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: SMr }; } $f.$ptr = $ptr; $f._r = _r; $f.t = t; $f.$s = $s; $f.$r = $r; return $f; }; $pkg.SMr = SMr; $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 = ncl.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = tool.$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["path/filepath"] = (function() { var $pkg = {}, $init, bytes, errors, os, runtime, sort, strings, syscall, utf8, lazybuf, sliceType$1, ptrType$1, Clean, FromSlash, Join, isSlash, volumeNameLen; bytes = $packages["bytes"]; 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", "lazybuf", "path/filepath", 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") : 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, b.path.substring(0, b.w)); } (x = b.buf, x$1 = b.w, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : 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 b.volAndPath.substring(0, (b.volLen + b.w >> 0)); } return b.volAndPath.substring(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 = path.substring(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; return strings.Replace(path, "/", "\\", -1); }; $pkg.FromSlash = FromSlash; 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") : _ref.$array[_ref.$offset + _i]); if (!(e === "")) { return Clean(strings.Join($subslice(elem, i), "\\")); } _i++; } return ""; }; $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; }; 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([{prop: "path", name: "path", pkg: "path/filepath", typ: $String, tag: ""}, {prop: "buf", name: "buf", pkg: "path/filepath", typ: sliceType$1, tag: ""}, {prop: "w", name: "w", pkg: "path/filepath", typ: $Int, tag: ""}, {prop: "volAndPath", name: "volAndPath", pkg: "path/filepath", typ: $String, tag: ""}, {prop: "volLen", name: "volLen", pkg: "path/filepath", 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 = errors.$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 = runtime.$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; } $r = syscall.$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; } $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", "nopCloser", "io/ioutil", function(Reader_) { this.$val = this; if (arguments.length === 0) { this.Reader = $ifaceNil; return; } this.Reader = Reader_; }); devNull = $pkg.devNull = $newType(4, $kindInt, "ioutil.devNull", "devNull", "io/ioutil", 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; return [b, err[0]]; /* */ $s = -1; case -1: } 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; } return _r; /* */ $s = -1; case -1: } 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))) { 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))) { $s = 5; continue; } /* */ $s = 6; continue; /* if ((size.$high < 0 || (size.$high === 0 && size.$low < 1000000000))) { */ case 5: n = size; /* } */ case 6: /* } */ case 3: _r$2 = readAll(f, new $Int64(n.$high + 0, n.$low + 512)); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } return _r$2; /* */ $s = -1; case -1: } 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; return [n, err]; } return [n, err]; } /* } */ $s = 2; continue; case 3: /* */ $s = -1; case -1: } 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 = time.Now().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 = ((((r >>> 16 << 16) * 1664525 >>> 0) + (r << 16 >>> 16) * 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; } return strconv.Itoa(((1000000000 + (_r = r % 1000000000, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) >>> 0) >> 0)).substring(1); /* */ $s = -1; case -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)) { nconflict = nconflict + (1) >> 0; if (nconflict > 10) { rand = reseed(); } i = i + (1) >> 0; /* continue; */ $s = 1; continue; } /* break; */ $s = 2; continue; /* } */ $s = 1; continue; case 2: return [f, err]; /* */ $s = -1; case -1: } 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: "", pkg: "", 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(); blackHolePool = new sync.Pool.ptr(0, 0, sliceType.nil, (function() { var $ptr, b, b_ptr; b = $makeSlice(sliceType$1, 8192); return (b_ptr || (b_ptr = new ptrType(function() { return b; }, function($v) { b = $v; }))); })); $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["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", "Reader", "bufio", 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", "Writer", "bufio", 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", "ReadWriter", "bufio", 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(); 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; $copy(b, new Reader.ptr(buf, r, 0, 0, $ifaceNil, -1, -1), Reader); }; 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; return; } if (n > 0) { return; } i = i - (1) >> 0; /* } */ $s = 1; continue; case 2: b.err = io.ErrNoProgress; /* */ $s = -1; case -1: } 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) { return [sliceType.nil, $pkg.ErrNegativeCount]; } if (n > b.buf.$length) { return [sliceType.nil, $pkg.ErrBufferFull]; } /* while (true) { */ case 1: /* if (!((b.w - b.r >> 0) < n && $interfaceIsEqual(b.err, $ifaceNil))) { break; } */ if(!((b.w - b.r >> 0) < n && $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: err = $ifaceNil; avail = b.w - b.r >> 0; if (avail < n) { n = avail; err = b.readErr(); if ($interfaceIsEqual(err, $ifaceNil)) { err = $pkg.ErrBufferFull; } } return [$subslice(b.buf, b.r, (b.r + n >> 0)), err]; /* */ $s = -1; case -1: } 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.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, 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; _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; 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; 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; 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") : p.$array[p.$offset + x])) >> 0); b.lastRuneSize = -1; } _tmp$4 = n; _tmp$5 = b.readErr(); n = _tmp$4; err = _tmp$5; return [n, err]; /* } */ case 4: $r = b.fill(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } if (b.r === b.w) { _tmp$6 = 0; _tmp$7 = b.readErr(); n = _tmp$6; err = _tmp$7; return [n, err]; } /* } */ 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") : x$1.$array[x$1.$offset + x$2])) >> 0); b.lastRuneSize = -1; _tmp$8 = n; _tmp$9 = $ifaceNil; n = _tmp$8; err = _tmp$9; return [n, err]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Reader.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.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, _tmp, _tmp$1, _tmp$2, _tmp$3, b, c, err, x, x$1, $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; b = $f.b; c = $f.c; err = $f.err; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: c = 0; err = $ifaceNil; 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))) { _tmp = 0; _tmp$1 = b.readErr(); c = _tmp; err = _tmp$1; return [c, err]; } $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") : x.$array[x.$offset + x$1])); b.r = b.r + (1) >> 0; b.lastByte = (c >> 0); _tmp$2 = c; _tmp$3 = $ifaceNil; c = _tmp$2; err = _tmp$3; return [c, err]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.ReadByte }; } $f.$ptr = $ptr; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f.b = b; $f.c = c; $f.err = err; $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") : 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; 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") : 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") : 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; return [r, size, err]; /* */ $s = -1; case -1: } 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") : line.$array[line.$offset + i$1]) >> 0); b.lastRuneSize = -1; } return [line, err]; /* */ $s = -1; case -1: } 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") : 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; return [line, isPrefix, err]; } if (line.$length === 0) { if (!($interfaceIsEqual(err, $ifaceNil))) { line = sliceType.nil; } 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") : 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") : line.$array[line.$offset + x$2])) === 13)) { drop = 2; } line = $subslice(line, 0, (line.$length - drop >> 0)); } return [line, isPrefix, err]; /* */ $s = -1; case -1: } 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, _tmp, _tmp$1, _tuple, b, buf, buf$1, delim, e, err, frag, full, i, i$1, line, 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; _tmp = $f._tmp; _tmp$1 = $f._tmp$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; line = $f.line; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: line = sliceType.nil; err = $ifaceNil; 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") : 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") : full.$array[full.$offset + i$1]))) >> 0; _i$1++; } $copySlice($subslice(buf$1, n), frag); _tmp = buf$1; _tmp$1 = err; line = _tmp; err = _tmp$1; return [line, err]; /* */ $s = -1; case -1: } 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._tmp = _tmp; $f._tmp$1 = _tmp$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.line = line; $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, _tmp, _tmp$1, _tuple, b, bytes$1, delim, err, line, $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; bytes$1 = $f.bytes$1; delim = $f.delim; err = $f.err; line = $f.line; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: line = ""; err = $ifaceNil; 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]; line = $bytesToString(bytes$1); _tmp = line; _tmp$1 = err; line = _tmp; err = _tmp$1; return [line, err]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.ReadString }; } $f.$ptr = $ptr; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.b = b; $f.bytes$1 = bytes$1; $f.delim = delim; $f.err = err; $f.line = line; $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))) { 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; 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; 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; 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; return [n, err]; /* */ $s = -1; case -1: } 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; return [new $Int64(0, n), err]; /* */ $s = -1; case -1: } 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, 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.flush(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } err = _r; return err; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Writer.ptr.prototype.Flush }; } $f.$ptr = $ptr; $f._r = _r; $f.b = b; $f.err = err; $f.$s = $s; $f.$r = $r; return $f; }; Writer.prototype.Flush = function() { return this.$val.Flush(); }; 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))) { return b.err; } if (b.n === 0) { 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; return err; } b.n = 0; return $ifaceNil; /* */ $s = -1; case -1: } 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; 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; return [nn, err]; /* */ $s = -1; case -1: } 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))) { 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: return b.err; /* } */ case 2: (x = b.buf, x$1 = b.n, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1] = c)); b.n = b.n + (1) >> 0; return $ifaceNil; /* */ $s = -1; case -1: } 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; return [size, err]; } _tmp$2 = 1; _tmp$3 = $ifaceNil; size = _tmp$2; err = _tmp$3; return [size, err]; /* } */ case 2: if (!($interfaceIsEqual(b.err, $ifaceNil))) { _tmp$4 = 0; _tmp$5 = b.err; size = _tmp$4; err = _tmp$5; 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))) { $s = 7; continue; } /* */ $s = 8; continue; /* if (!($interfaceIsEqual(b.err, $ifaceNil))) { */ case 7: _tmp$6 = 0; _tmp$7 = b.err; size = _tmp$6; err = _tmp$7; return [size, err]; /* } */ case 8: n = b.Available(); /* */ if (n < 4) { $s = 9; continue; } /* */ $s = 10; continue; /* if (n < 4) { */ case 9: _r$2 = b.WriteString($encodeRune(r)); /* */ $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; size = _tuple[0]; err = _tuple[1]; return [size, err]; /* } */ case 10: /* } */ 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; return [size, err]; /* */ $s = -1; case -1: } 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 = s.substring(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))) { 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; return [nn, $ifaceNil]; /* */ $s = -1; case -1: } 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]; 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))) { $s = 11; continue; } /* */ $s = 12; continue; /* if (!($interfaceIsEqual(err1, $ifaceNil))) { */ case 11: _tmp = n; _tmp$1 = err1; n = _tmp; err = _tmp$1; return [n, err]; /* } */ case 12: /* } */ case 9: nr = 0; /* while (true) { */ case 13: /* if (!(nr < 100)) { break; } */ if(!(nr < 100)) { $s = 14; continue; } _r$2 = r.Read($subslice(b.buf, b.n)); /* */ $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; m = _tuple$2[0]; err = _tuple$2[1]; if (!((m === 0)) || !($interfaceIsEqual(err, $ifaceNil))) { /* break; */ $s = 14; continue; } nr = nr + (1) >> 0; /* } */ $s = 13; continue; case 14: if (nr === 100) { _tmp$2 = n; _tmp$3 = io.ErrNoProgress; n = _tmp$2; err = _tmp$3; 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 = 16; continue; } /* */ $s = 17; continue; /* if ($interfaceIsEqual(err, io.EOF)) { */ case 16: /* */ if (b.Available() === 0) { $s = 18; continue; } /* */ $s = 19; continue; /* if (b.Available() === 0) { */ case 18: _r$3 = b.flush(); /* */ $s = 21; case 21: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } err = _r$3; $s = 20; continue; /* } else { */ case 19: err = $ifaceNil; /* } */ case 20: /* } */ case 17: _tmp$4 = n; _tmp$5 = err; n = _tmp$4; err = _tmp$5; return [n, err]; /* */ $s = -1; case -1: } 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: "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: "flush", name: "flush", pkg: "bufio", 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([{prop: "buf", name: "buf", pkg: "bufio", typ: sliceType, tag: ""}, {prop: "rd", name: "rd", pkg: "bufio", typ: io.Reader, tag: ""}, {prop: "r", name: "r", pkg: "bufio", typ: $Int, tag: ""}, {prop: "w", name: "w", pkg: "bufio", typ: $Int, tag: ""}, {prop: "err", name: "err", pkg: "bufio", typ: $error, tag: ""}, {prop: "lastByte", name: "lastByte", pkg: "bufio", typ: $Int, tag: ""}, {prop: "lastRuneSize", name: "lastRuneSize", pkg: "bufio", typ: $Int, tag: ""}]); Writer.init([{prop: "err", name: "err", pkg: "bufio", typ: $error, tag: ""}, {prop: "buf", name: "buf", pkg: "bufio", typ: sliceType, tag: ""}, {prop: "n", name: "n", pkg: "bufio", typ: $Int, tag: ""}, {prop: "wr", name: "wr", pkg: "bufio", typ: io.Writer, tag: ""}]); ReadWriter.init([{prop: "Reader", name: "", pkg: "", typ: ptrType, tag: ""}, {prop: "Writer", name: "", pkg: "", 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"); /* */ } 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, huffmanEncoder, literalNode, sliceType$4, sliceType$8, ptrType$3, sliceType$9, sliceType$10, fixedLiteralEncoding, fixedOffsetEncoding, reverseByte, newHuffmanEncoder, generateFixedLiteralEncoding, generateFixedOffsetEncoding, reverseUint16, reverseBits; bufio = $packages["bufio"]; fmt = $packages["fmt"]; io = $packages["io"]; math = $packages["math"]; sort = $packages["sort"]; strconv = $packages["strconv"]; huffmanEncoder = $pkg.huffmanEncoder = $newType(0, $kindStruct, "flate.huffmanEncoder", "huffmanEncoder", "compress/flate", function(codeBits_, code_) { this.$val = this; if (arguments.length === 0) { this.codeBits = sliceType$4.nil; this.code = sliceType$9.nil; return; } this.codeBits = codeBits_; this.code = code_; }); literalNode = $pkg.literalNode = $newType(0, $kindStruct, "flate.literalNode", "literalNode", "compress/flate", function(literal_, freq_) { this.$val = this; if (arguments.length === 0) { this.literal = 0; this.freq = 0; return; } this.literal = literal_; this.freq = freq_; }); sliceType$4 = $sliceType($Uint8); sliceType$8 = $sliceType($Int32); ptrType$3 = $ptrType(huffmanEncoder); sliceType$9 = $sliceType($Uint16); sliceType$10 = $sliceType(literalNode); newHuffmanEncoder = function(size) { var $ptr, size; return new huffmanEncoder.ptr($makeSlice(sliceType$4, size), $makeSlice(sliceType$9, size)); }; generateFixedLiteralEncoding = function() { var $ptr, bits, ch, code, codeBits, h, size; h = newHuffmanEncoder(286); codeBits = h.codeBits; code = h.code; 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; } } ((ch < 0 || ch >= codeBits.$length) ? $throwRuntimeError("index out of range") : codeBits.$array[codeBits.$offset + ch] = size); ((ch < 0 || ch >= code.$length) ? $throwRuntimeError("index out of range") : code.$array[code.$offset + ch] = reverseBits(bits, size)); ch = ch + (1) << 16 >>> 16; } return h; }; generateFixedOffsetEncoding = function() { var $ptr, ch, code, codeBits, h; h = newHuffmanEncoder(30); codeBits = h.codeBits; code = h.code; ch = 0; while (true) { if (!(ch < 30)) { break; } ((ch < 0 || ch >= codeBits.$length) ? $throwRuntimeError("index out of range") : codeBits.$array[codeBits.$offset + ch] = 5); ((ch < 0 || ch >= code.$length) ? $throwRuntimeError("index out of range") : code.$array[code.$offset + ch] = reverseBits(ch, 5)); ch = ch + (1) << 16 >>> 16; } return h; }; 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") : reverseByte[x])) << 16 >>> 16) | (((x$1 = (v & 255) >>> 0, ((x$1 < 0 || x$1 >= reverseByte.length) ? $throwRuntimeError("index out of range") : 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$3.methods = [{prop: "bitLength", name: "bitLength", pkg: "compress/flate", typ: $funcType([sliceType$8], [$Int64], false)}, {prop: "bitCounts", name: "bitCounts", pkg: "compress/flate", typ: $funcType([sliceType$10, $Int32], [sliceType$8], false)}, {prop: "assignEncodingAndSize", name: "assignEncodingAndSize", pkg: "compress/flate", typ: $funcType([sliceType$8, sliceType$10], [], false)}, {prop: "generate", name: "generate", pkg: "compress/flate", typ: $funcType([sliceType$8, $Int32], [], false)}]; huffmanEncoder.init([{prop: "codeBits", name: "codeBits", pkg: "compress/flate", typ: sliceType$4, tag: ""}, {prop: "code", name: "code", pkg: "compress/flate", typ: sliceType$9, tag: ""}]); literalNode.init([{prop: "literal", name: "literal", pkg: "compress/flate", typ: $Uint16, tag: ""}, {prop: "freq", name: "freq", pkg: "compress/flate", 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 = 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; } 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(); /* */ } 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, makeTable; hash = $packages["hash"]; sync = $packages["sync"]; Table = $pkg.Table = $newType(1024, $kindArray, "crc32.Table", "Table", "hash/crc32", null); makeTable = function(poly) { var $ptr, crc, i, j, poly, t, y; t = Table.zero(); 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") : t[i] = crc); i = i + (1) >> 0; } return t; }; Table.init($Uint32, 256); $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; } $pkg.IEEETable = makeTable(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, errors, fmt, hash, crc32, io, time; bufio = $packages["bufio"]; flate = $packages["compress/flate"]; errors = $packages["errors"]; fmt = $packages["fmt"]; hash = $packages["hash"]; crc32 = $packages["hash/crc32"]; io = $packages["io"]; time = $packages["time"]; $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 = 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 = hash.$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"); /* */ } 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; $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"] = (function() { var $pkg = {}, $init, hash, io, strconv, Hash, PublicKey, PrivateKey, Signer, SignerOpts, sliceType, funcType, sliceType$1, digestSizes, hashes, RegisterHash; hash = $packages["hash"]; io = $packages["io"]; strconv = $packages["strconv"]; Hash = $pkg.Hash = $newType(4, $kindUint, "crypto.Hash", "Hash", "crypto", null); PublicKey = $pkg.PublicKey = $newType(8, $kindInterface, "crypto.PublicKey", "PublicKey", "crypto", null); PrivateKey = $pkg.PrivateKey = $newType(8, $kindInterface, "crypto.PrivateKey", "PrivateKey", "crypto", null); Signer = $pkg.Signer = $newType(8, $kindInterface, "crypto.Signer", "Signer", "crypto", null); SignerOpts = $pkg.SignerOpts = $newType(8, $kindInterface, "crypto.SignerOpts", "SignerOpts", "crypto", 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 < 14) { return (((h < 0 || h >= digestSizes.$length) ? $throwRuntimeError("index out of range") : 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 < 14) { $s = 1; continue; } /* */ $s = 2; continue; /* if (h > 0 && h < 14) { */ case 1: f = ((h < 0 || h >= hashes.$length) ? $throwRuntimeError("index out of range") : 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; } return _r; /* } */ case 4: /* } */ case 2: $panic(new $String("crypto: requested hash function #" + strconv.Itoa((h >> 0)) + " is unavailable")); /* */ $s = -1; case -1: } 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 < 14 && !(((h < 0 || h >= hashes.$length) ? $throwRuntimeError("index out of range") : 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 >= 14) { $panic(new $String("crypto: RegisterHash of unknown hash function")); } ((h < 0 || h >= hashes.$length) ? $throwRuntimeError("index out of range") : 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)}]); $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]); hashes = $makeSlice(sliceType$1, 14); /* */ } 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") : x.$array[x.$offset + i]) ^ ((i < 0 || i >= y.$length) ? $throwRuntimeError("index out of range") : 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") : x.$array[x.$offset + i] = (((((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i]) & xmask) >>> 0) | ((((i < 0 || i >= y.$length) ? $throwRuntimeError("index out of range") : 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, cbcDecrypter, Block, Stream, BlockMode, ctr, AEAD, gcmFieldElement, gcm, 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, reverseBits, gcmAdd, gcmDouble, gcmInc32, sliceForAppend, getUint64, putUint64, safeXORBytes, xorBytes, xorWords; subtle = $packages["crypto/subtle"]; errors = $packages["errors"]; io = $packages["io"]; runtime = $packages["runtime"]; cbc = $pkg.cbc = $newType(0, $kindStruct, "cipher.cbc", "cbc", "crypto/cipher", 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", "cbcEncrypter", "crypto/cipher", 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_; }); cbcDecrypter = $pkg.cbcDecrypter = $newType(0, $kindStruct, "cipher.cbcDecrypter", "cbcDecrypter", "crypto/cipher", 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_; }); Block = $pkg.Block = $newType(8, $kindInterface, "cipher.Block", "Block", "crypto/cipher", null); Stream = $pkg.Stream = $newType(8, $kindInterface, "cipher.Stream", "Stream", "crypto/cipher", null); BlockMode = $pkg.BlockMode = $newType(8, $kindInterface, "cipher.BlockMode", "BlockMode", "crypto/cipher", null); ctr = $pkg.ctr = $newType(0, $kindStruct, "cipher.ctr", "ctr", "crypto/cipher", 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_; }); AEAD = $pkg.AEAD = $newType(8, $kindInterface, "cipher.AEAD", "AEAD", "crypto/cipher", null); gcmFieldElement = $pkg.gcmFieldElement = $newType(0, $kindStruct, "cipher.gcmFieldElement", "gcmFieldElement", "crypto/cipher", 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", "gcm", "crypto/cipher", function(cipher_, productTable_) { this.$val = this; if (arguments.length === 0) { this.cipher = $ifaceNil; this.productTable = arrayType$1.zero(); return; } this.cipher = cipher_; this.productTable = productTable_; }); 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; } return new cbc.ptr(b, _r, dup(iv), $makeSlice(sliceType$1, _r$1)); /* */ $s = -1; case -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, 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 = 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: _r$1 = newCBC(b, iv); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } return $pointerOfStructConversion(_r$1, ptrType); /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: NewCBCEncrypter }; } $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; }; $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; case -1: } 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, 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 = 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: _r$1 = newCBC(b, iv); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } return $pointerOfStructConversion(_r$1, ptrType$1); /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: NewCBCDecrypter }; } $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; }; $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) { 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; case -1: } 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, block, bufSize, 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; _r$2 = $f._r$2; block = $f.block; bufSize = $f.bufSize; iv = $f.iv; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: _r = block.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.NewCTR: IV length must equal block size")); /* } */ case 2: bufSize = 512; _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 (bufSize < _r$1) { $s = 4; continue; } /* */ $s = 5; continue; /* if (bufSize < _r$1) { */ case 4: _r$2 = block.BlockSize(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } bufSize = _r$2; /* } */ case 5: return new ctr.ptr(block, dup(iv), $makeSlice(sliceType$1, 0, bufSize), 0); /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: NewCTR }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.block = block; $f.bufSize = bufSize; $f.iv = iv; $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; if (remain > x.outUsed) { return; } $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") : x$2.$array[x$2.$offset + i] = (x$1 = x.ctr, ((i < 0 || i >= x$1.$length) ? $throwRuntimeError("index out of range") : 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") : 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; case -1: } 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; case -1: } 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, _q, _r, cipher, g, i, key, 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; cipher = $f.cipher; g = $f.g; i = $f.i; key = $f.key; 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]; _r = cipher.BlockSize(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } /* */ if (!((_r === 16))) { $s = 1; continue; } /* */ $s = 2; continue; /* if (!((_r === 16))) { */ case 1: return [$ifaceNil, errors.New("cipher: NewGCM requires 128-bit block cipher")]; /* } */ case 2: key = $clone(arrayType.zero(), arrayType); $r = cipher.Encrypt(new sliceType$1(key), new sliceType$1(key)); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } g = new gcm.ptr(cipher, arrayType$1.zero()); x[0] = new gcmFieldElement.ptr(getUint64($subslice(new sliceType$1(key), 0, 8)), getUint64($subslice(new sliceType$1(key), 8))); $copy((x$1 = g.productTable, x$2 = reverseBits(1), ((x$2 < 0 || x$2 >= x$1.length) ? $throwRuntimeError("index out of range") : x$1[x$2])), x[0], gcmFieldElement); i = 2; while (true) { if (!(i < 16)) { break; } $copy((x$5 = g.productTable, x$6 = reverseBits(i), ((x$6 < 0 || x$6 >= x$5.length) ? $throwRuntimeError("index out of range") : 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") : 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") : 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") : x$7[x$8])), x[0]), gcmFieldElement); i = i + (2) >> 0; } return [g, $ifaceNil]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: NewGCM }; } $f.$ptr = $ptr; $f._q = _q; $f._r = _r; $f.cipher = cipher; $f.g = g; $f.i = i; $f.key = key; $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.NewGCM = NewGCM; gcm.ptr.prototype.NonceSize = function() { var $ptr; return 12; }; 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, _tmp, _tmp$1, _tuple, counter, data, dst, g, nonce, out, plaintext, ret, tagMask, $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; _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; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: counter = [counter]; tagMask = [tagMask]; g = this; if (!((nonce.$length === 12))) { $panic(new $String("cipher: incorrect nonce length given to GCM")); } _tuple = sliceForAppend(dst, plaintext.$length + 16 >> 0); ret = _tuple[0]; out = _tuple[1]; _tmp = $clone(arrayType.zero(), arrayType); _tmp$1 = $clone(arrayType.zero(), arrayType); counter[0] = $clone(_tmp, arrayType); tagMask[0] = $clone(_tmp$1, arrayType); $copySlice(new sliceType$1(counter[0]), nonce); counter[0][15] = 1; $r = g.cipher.Encrypt(new sliceType$1(tagMask[0]), new sliceType$1(counter[0])); /* */ $s = 1; case 1: 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 = 2; case 2: 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]); return ret; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: gcm.ptr.prototype.Seal }; } $f.$ptr = $ptr; $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.$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, _tmp, _tmp$1, _tuple, ciphertext, counter, data, dst, expectedTag, g, nonce, out, ret, tag, tagMask, $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; _tuple = $f._tuple; ciphertext = $f.ciphertext; counter = $f.counter; data = $f.data; dst = $f.dst; expectedTag = $f.expectedTag; g = $f.g; nonce = $f.nonce; out = $f.out; ret = $f.ret; tag = $f.tag; tagMask = $f.tagMask; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: counter = [counter]; tagMask = [tagMask]; g = this; if (!((nonce.$length === 12))) { $panic(new $String("cipher: incorrect nonce length given to GCM")); } if (ciphertext.$length < 16) { return [sliceType$1.nil, errOpen]; } tag = $subslice(ciphertext, (ciphertext.$length - 16 >> 0)); ciphertext = $subslice(ciphertext, 0, (ciphertext.$length - 16 >> 0)); _tmp = $clone(arrayType.zero(), arrayType); _tmp$1 = $clone(arrayType.zero(), arrayType); counter[0] = $clone(_tmp, arrayType); tagMask[0] = $clone(_tmp$1, arrayType); $copySlice(new sliceType$1(counter[0]), nonce); counter[0][15] = 1; $r = g.cipher.Encrypt(new sliceType$1(tagMask[0]), new sliceType$1(counter[0])); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } gcmInc32(counter[0]); expectedTag = $clone(arrayType.zero(), arrayType); g.auth(new sliceType$1(expectedTag), ciphertext, data, tagMask[0]); if (!((subtle.ConstantTimeCompare(new sliceType$1(expectedTag), tag) === 1))) { return [sliceType$1.nil, errOpen]; } _tuple = sliceForAppend(dst, ciphertext.$length); ret = _tuple[0]; out = _tuple[1]; $r = g.counterCrypt(out, ciphertext, counter[0]); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } return [ret, $ifaceNil]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: gcm.ptr.prototype.Open }; } $f.$ptr = $ptr; $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.nonce = nonce; $f.out = out; $f.ret = ret; $f.tag = tag; $f.tagMask = tagMask; $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(); 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 = $clone(new gcmFieldElement.ptr(), gcmFieldElement); 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") : 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") : 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; } $copy(y, z, gcmFieldElement); }; 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 = $clone(arrayType.zero(), arrayType); $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") : counterBlock[i] = (counterBlock.nilCheck, ((i < 0 || i >= counterBlock.length) ? $throwRuntimeError("index out of range") : counterBlock[i])) + (1) << 24 >>> 24); if (!(((counterBlock.nilCheck, ((i < 0 || i >= counterBlock.length) ? $throwRuntimeError("index out of range") : 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 = $clone(arrayType.zero(), arrayType); /* 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; case -1: } 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.auth = function(out, ciphertext, additionalData, tagMask) { var $ptr, additionalData, ciphertext, g, out, tagMask, x, x$1, x$2, x$3, y; g = this; y = $clone(new gcmFieldElement.ptr(), gcmFieldElement); 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") : data.$array[data.$offset + 0])), 56), x$7 = $shiftLeft64(new $Uint64(0, (1 >= data.$length ? $throwRuntimeError("index out of range") : 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") : 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") : 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") : 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") : 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") : 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") : 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") : out.$array[out.$offset + 0] = ($shiftRightUint64(v, 56).$low << 24 >>> 24)); (1 >= out.$length ? $throwRuntimeError("index out of range") : out.$array[out.$offset + 1] = ($shiftRightUint64(v, 48).$low << 24 >>> 24)); (2 >= out.$length ? $throwRuntimeError("index out of range") : out.$array[out.$offset + 2] = ($shiftRightUint64(v, 40).$low << 24 >>> 24)); (3 >= out.$length ? $throwRuntimeError("index out of range") : out.$array[out.$offset + 3] = ($shiftRightUint64(v, 32).$low << 24 >>> 24)); (4 >= out.$length ? $throwRuntimeError("index out of range") : out.$array[out.$offset + 4] = ($shiftRightUint64(v, 24).$low << 24 >>> 24)); (5 >= out.$length ? $throwRuntimeError("index out of range") : out.$array[out.$offset + 5] = ($shiftRightUint64(v, 16).$low << 24 >>> 24)); (6 >= out.$length ? $throwRuntimeError("index out of range") : out.$array[out.$offset + 6] = ($shiftRightUint64(v, 8).$low << 24 >>> 24)); (7 >= out.$length ? $throwRuntimeError("index out of range") : out.$array[out.$offset + 7] = (v.$low << 24 >>> 24)); }; 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") : dst.$array[dst.$offset + i] = (((i < 0 || i >= a.$length) ? $throwRuntimeError("index out of range") : a.$array[a.$offset + i]) ^ ((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i])) << 24 >>> 24); i = i + (1) >> 0; } return n; }; xorBytes = function(dst, a, b) { var $ptr, a, b, dst; return safeXORBytes(dst, a, b); }; xorWords = function(dst, a, b) { var $ptr, a, b, dst; 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: "auth", name: "auth", pkg: "crypto/cipher", typ: $funcType([sliceType$1, sliceType$1, sliceType$1, ptrType$5], [], false)}]; cbc.init([{prop: "b", name: "b", pkg: "crypto/cipher", typ: Block, tag: ""}, {prop: "blockSize", name: "blockSize", pkg: "crypto/cipher", typ: $Int, tag: ""}, {prop: "iv", name: "iv", pkg: "crypto/cipher", typ: sliceType$1, tag: ""}, {prop: "tmp", name: "tmp", pkg: "crypto/cipher", typ: sliceType$1, tag: ""}]); cbcEncrypter.init([{prop: "b", name: "b", pkg: "crypto/cipher", typ: Block, tag: ""}, {prop: "blockSize", name: "blockSize", pkg: "crypto/cipher", typ: $Int, tag: ""}, {prop: "iv", name: "iv", pkg: "crypto/cipher", typ: sliceType$1, tag: ""}, {prop: "tmp", name: "tmp", pkg: "crypto/cipher", typ: sliceType$1, tag: ""}]); cbcDecrypter.init([{prop: "b", name: "b", pkg: "crypto/cipher", typ: Block, tag: ""}, {prop: "blockSize", name: "blockSize", pkg: "crypto/cipher", typ: $Int, tag: ""}, {prop: "iv", name: "iv", pkg: "crypto/cipher", typ: sliceType$1, tag: ""}, {prop: "tmp", name: "tmp", pkg: "crypto/cipher", typ: sliceType$1, tag: ""}]); 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([{prop: "b", name: "b", pkg: "crypto/cipher", typ: Block, tag: ""}, {prop: "ctr", name: "ctr", pkg: "crypto/cipher", typ: sliceType$1, tag: ""}, {prop: "out", name: "out", pkg: "crypto/cipher", typ: sliceType$1, tag: ""}, {prop: "outUsed", name: "outUsed", pkg: "crypto/cipher", typ: $Int, tag: ""}]); 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)}]); gcmFieldElement.init([{prop: "low", name: "low", pkg: "crypto/cipher", typ: $Uint64, tag: ""}, {prop: "high", name: "high", pkg: "crypto/cipher", typ: $Uint64, tag: ""}]); gcm.init([{prop: "cipher", name: "cipher", pkg: "crypto/cipher", typ: Block, tag: ""}, {prop: "productTable", name: "productTable", pkg: "crypto/cipher", typ: arrayType$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 = 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, encryptBlock, decryptBlock, expandKey; cipher = $packages["crypto/cipher"]; strconv = $packages["strconv"]; aesCipher = $pkg.aesCipher = $newType(0, $kindStruct, "aes.aesCipher", "aesCipher", "crypto/aes", 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", "KeySizeError", "crypto/aes", 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") : src.$array[src.$offset + 0]) >>> 0) << 24 >>> 0) | (((1 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 1]) >>> 0) << 16 >>> 0)) >>> 0) | (((2 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 2]) >>> 0) << 8 >>> 0)) >>> 0) | ((3 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 3]) >>> 0)) >>> 0; s1 = ((((((((4 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 4]) >>> 0) << 24 >>> 0) | (((5 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 5]) >>> 0) << 16 >>> 0)) >>> 0) | (((6 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 6]) >>> 0) << 8 >>> 0)) >>> 0) | ((7 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 7]) >>> 0)) >>> 0; s2 = ((((((((8 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 8]) >>> 0) << 24 >>> 0) | (((9 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 9]) >>> 0) << 16 >>> 0)) >>> 0) | (((10 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 10]) >>> 0) << 8 >>> 0)) >>> 0) | ((11 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 11]) >>> 0)) >>> 0; s3 = ((((((((12 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 12]) >>> 0) << 24 >>> 0) | (((13 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 13]) >>> 0) << 16 >>> 0)) >>> 0) | (((14 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 14]) >>> 0) << 8 >>> 0)) >>> 0) | ((15 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 15]) >>> 0)) >>> 0; s0 = (s0 ^ ((0 >= xk.$length ? $throwRuntimeError("index out of range") : xk.$array[xk.$offset + 0]))) >>> 0; s1 = (s1 ^ ((1 >= xk.$length ? $throwRuntimeError("index out of range") : xk.$array[xk.$offset + 1]))) >>> 0; s2 = (s2 ^ ((2 >= xk.$length ? $throwRuntimeError("index out of range") : xk.$array[xk.$offset + 2]))) >>> 0; s3 = (s3 ^ ((3 >= xk.$length ? $throwRuntimeError("index out of range") : 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") : xk.$array[xk.$offset + x])) ^ (x$1 = ((s0 >>> 24 >>> 0) << 24 >>> 24), ((x$1 < 0 || x$1 >= te0.length) ? $throwRuntimeError("index out of range") : te0[x$1]))) >>> 0) ^ (x$2 = ((s1 >>> 16 >>> 0) << 24 >>> 24), ((x$2 < 0 || x$2 >= te1.length) ? $throwRuntimeError("index out of range") : te1[x$2]))) >>> 0) ^ (x$3 = ((s2 >>> 8 >>> 0) << 24 >>> 24), ((x$3 < 0 || x$3 >= te2.length) ? $throwRuntimeError("index out of range") : te2[x$3]))) >>> 0) ^ (x$4 = (s3 << 24 >>> 24), ((x$4 < 0 || x$4 >= te3.length) ? $throwRuntimeError("index out of range") : te3[x$4]))) >>> 0; t1 = ((((((((x$5 = k + 1 >> 0, ((x$5 < 0 || x$5 >= xk.$length) ? $throwRuntimeError("index out of range") : 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") : te0[x$6]))) >>> 0) ^ (x$7 = ((s2 >>> 16 >>> 0) << 24 >>> 24), ((x$7 < 0 || x$7 >= te1.length) ? $throwRuntimeError("index out of range") : te1[x$7]))) >>> 0) ^ (x$8 = ((s3 >>> 8 >>> 0) << 24 >>> 24), ((x$8 < 0 || x$8 >= te2.length) ? $throwRuntimeError("index out of range") : te2[x$8]))) >>> 0) ^ (x$9 = (s0 << 24 >>> 24), ((x$9 < 0 || x$9 >= te3.length) ? $throwRuntimeError("index out of range") : te3[x$9]))) >>> 0; t2 = ((((((((x$10 = k + 2 >> 0, ((x$10 < 0 || x$10 >= xk.$length) ? $throwRuntimeError("index out of range") : 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") : te0[x$11]))) >>> 0) ^ (x$12 = ((s3 >>> 16 >>> 0) << 24 >>> 24), ((x$12 < 0 || x$12 >= te1.length) ? $throwRuntimeError("index out of range") : te1[x$12]))) >>> 0) ^ (x$13 = ((s0 >>> 8 >>> 0) << 24 >>> 24), ((x$13 < 0 || x$13 >= te2.length) ? $throwRuntimeError("index out of range") : te2[x$13]))) >>> 0) ^ (x$14 = (s1 << 24 >>> 24), ((x$14 < 0 || x$14 >= te3.length) ? $throwRuntimeError("index out of range") : te3[x$14]))) >>> 0; t3 = ((((((((x$15 = k + 3 >> 0, ((x$15 < 0 || x$15 >= xk.$length) ? $throwRuntimeError("index out of range") : 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") : te0[x$16]))) >>> 0) ^ (x$17 = ((s0 >>> 16 >>> 0) << 24 >>> 24), ((x$17 < 0 || x$17 >= te1.length) ? $throwRuntimeError("index out of range") : te1[x$17]))) >>> 0) ^ (x$18 = ((s1 >>> 8 >>> 0) << 24 >>> 24), ((x$18 < 0 || x$18 >= te2.length) ? $throwRuntimeError("index out of range") : te2[x$18]))) >>> 0) ^ (x$19 = (s2 << 24 >>> 24), ((x$19 < 0 || x$19 >= te3.length) ? $throwRuntimeError("index out of range") : 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") : 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") : 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") : sbox0[x$22])) >>> 0) << 8 >>> 0)) >>> 0) | ((x$23 = (t3 & 255) >>> 0, ((x$23 < 0 || x$23 >= sbox0.length) ? $throwRuntimeError("index out of range") : sbox0[x$23])) >>> 0)) >>> 0; s1 = ((((((((x$24 = t1 >>> 24 >>> 0, ((x$24 < 0 || x$24 >= sbox0.length) ? $throwRuntimeError("index out of range") : 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") : 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") : sbox0[x$26])) >>> 0) << 8 >>> 0)) >>> 0) | ((x$27 = (t0 & 255) >>> 0, ((x$27 < 0 || x$27 >= sbox0.length) ? $throwRuntimeError("index out of range") : sbox0[x$27])) >>> 0)) >>> 0; s2 = ((((((((x$28 = t2 >>> 24 >>> 0, ((x$28 < 0 || x$28 >= sbox0.length) ? $throwRuntimeError("index out of range") : 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") : 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") : sbox0[x$30])) >>> 0) << 8 >>> 0)) >>> 0) | ((x$31 = (t1 & 255) >>> 0, ((x$31 < 0 || x$31 >= sbox0.length) ? $throwRuntimeError("index out of range") : sbox0[x$31])) >>> 0)) >>> 0; s3 = ((((((((x$32 = t3 >>> 24 >>> 0, ((x$32 < 0 || x$32 >= sbox0.length) ? $throwRuntimeError("index out of range") : 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") : 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") : sbox0[x$34])) >>> 0) << 8 >>> 0)) >>> 0) | ((x$35 = (t2 & 255) >>> 0, ((x$35 < 0 || x$35 >= sbox0.length) ? $throwRuntimeError("index out of range") : sbox0[x$35])) >>> 0)) >>> 0; s0 = (s0 ^ ((x$36 = k + 0 >> 0, ((x$36 < 0 || x$36 >= xk.$length) ? $throwRuntimeError("index out of range") : 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") : 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") : 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") : 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") : dst.$array[dst.$offset + 0] = _tmp$12); (1 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 1] = _tmp$13); (2 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 2] = _tmp$14); (3 >= dst.$length ? $throwRuntimeError("index out of range") : 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") : dst.$array[dst.$offset + 4] = _tmp$16); (5 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 5] = _tmp$17); (6 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 6] = _tmp$18); (7 >= dst.$length ? $throwRuntimeError("index out of range") : 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") : dst.$array[dst.$offset + 8] = _tmp$20); (9 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 9] = _tmp$21); (10 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 10] = _tmp$22); (11 >= dst.$length ? $throwRuntimeError("index out of range") : 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") : dst.$array[dst.$offset + 12] = _tmp$24); (13 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 13] = _tmp$25); (14 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 14] = _tmp$26); (15 >= dst.$length ? $throwRuntimeError("index out of range") : 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") : src.$array[src.$offset + 0]) >>> 0) << 24 >>> 0) | (((1 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 1]) >>> 0) << 16 >>> 0)) >>> 0) | (((2 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 2]) >>> 0) << 8 >>> 0)) >>> 0) | ((3 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 3]) >>> 0)) >>> 0; s1 = ((((((((4 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 4]) >>> 0) << 24 >>> 0) | (((5 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 5]) >>> 0) << 16 >>> 0)) >>> 0) | (((6 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 6]) >>> 0) << 8 >>> 0)) >>> 0) | ((7 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 7]) >>> 0)) >>> 0; s2 = ((((((((8 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 8]) >>> 0) << 24 >>> 0) | (((9 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 9]) >>> 0) << 16 >>> 0)) >>> 0) | (((10 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 10]) >>> 0) << 8 >>> 0)) >>> 0) | ((11 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 11]) >>> 0)) >>> 0; s3 = ((((((((12 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 12]) >>> 0) << 24 >>> 0) | (((13 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 13]) >>> 0) << 16 >>> 0)) >>> 0) | (((14 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 14]) >>> 0) << 8 >>> 0)) >>> 0) | ((15 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 15]) >>> 0)) >>> 0; s0 = (s0 ^ ((0 >= xk.$length ? $throwRuntimeError("index out of range") : xk.$array[xk.$offset + 0]))) >>> 0; s1 = (s1 ^ ((1 >= xk.$length ? $throwRuntimeError("index out of range") : xk.$array[xk.$offset + 1]))) >>> 0; s2 = (s2 ^ ((2 >= xk.$length ? $throwRuntimeError("index out of range") : xk.$array[xk.$offset + 2]))) >>> 0; s3 = (s3 ^ ((3 >= xk.$length ? $throwRuntimeError("index out of range") : 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") : xk.$array[xk.$offset + x])) ^ (x$1 = ((s0 >>> 24 >>> 0) << 24 >>> 24), ((x$1 < 0 || x$1 >= td0.length) ? $throwRuntimeError("index out of range") : td0[x$1]))) >>> 0) ^ (x$2 = ((s3 >>> 16 >>> 0) << 24 >>> 24), ((x$2 < 0 || x$2 >= td1.length) ? $throwRuntimeError("index out of range") : td1[x$2]))) >>> 0) ^ (x$3 = ((s2 >>> 8 >>> 0) << 24 >>> 24), ((x$3 < 0 || x$3 >= td2.length) ? $throwRuntimeError("index out of range") : td2[x$3]))) >>> 0) ^ (x$4 = (s1 << 24 >>> 24), ((x$4 < 0 || x$4 >= td3.length) ? $throwRuntimeError("index out of range") : td3[x$4]))) >>> 0; t1 = ((((((((x$5 = k + 1 >> 0, ((x$5 < 0 || x$5 >= xk.$length) ? $throwRuntimeError("index out of range") : 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") : td0[x$6]))) >>> 0) ^ (x$7 = ((s0 >>> 16 >>> 0) << 24 >>> 24), ((x$7 < 0 || x$7 >= td1.length) ? $throwRuntimeError("index out of range") : td1[x$7]))) >>> 0) ^ (x$8 = ((s3 >>> 8 >>> 0) << 24 >>> 24), ((x$8 < 0 || x$8 >= td2.length) ? $throwRuntimeError("index out of range") : td2[x$8]))) >>> 0) ^ (x$9 = (s2 << 24 >>> 24), ((x$9 < 0 || x$9 >= td3.length) ? $throwRuntimeError("index out of range") : td3[x$9]))) >>> 0; t2 = ((((((((x$10 = k + 2 >> 0, ((x$10 < 0 || x$10 >= xk.$length) ? $throwRuntimeError("index out of range") : 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") : td0[x$11]))) >>> 0) ^ (x$12 = ((s1 >>> 16 >>> 0) << 24 >>> 24), ((x$12 < 0 || x$12 >= td1.length) ? $throwRuntimeError("index out of range") : td1[x$12]))) >>> 0) ^ (x$13 = ((s0 >>> 8 >>> 0) << 24 >>> 24), ((x$13 < 0 || x$13 >= td2.length) ? $throwRuntimeError("index out of range") : td2[x$13]))) >>> 0) ^ (x$14 = (s3 << 24 >>> 24), ((x$14 < 0 || x$14 >= td3.length) ? $throwRuntimeError("index out of range") : td3[x$14]))) >>> 0; t3 = ((((((((x$15 = k + 3 >> 0, ((x$15 < 0 || x$15 >= xk.$length) ? $throwRuntimeError("index out of range") : 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") : td0[x$16]))) >>> 0) ^ (x$17 = ((s2 >>> 16 >>> 0) << 24 >>> 24), ((x$17 < 0 || x$17 >= td1.length) ? $throwRuntimeError("index out of range") : td1[x$17]))) >>> 0) ^ (x$18 = ((s1 >>> 8 >>> 0) << 24 >>> 24), ((x$18 < 0 || x$18 >= td2.length) ? $throwRuntimeError("index out of range") : td2[x$18]))) >>> 0) ^ (x$19 = (s0 << 24 >>> 24), ((x$19 < 0 || x$19 >= td3.length) ? $throwRuntimeError("index out of range") : 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") : 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") : 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") : sbox1[x$22])) >>> 0) << 8 >>> 0)) >>> 0) | ((x$23 = (t1 & 255) >>> 0, ((x$23 < 0 || x$23 >= sbox1.length) ? $throwRuntimeError("index out of range") : sbox1[x$23])) >>> 0)) >>> 0; s1 = ((((((((x$24 = t1 >>> 24 >>> 0, ((x$24 < 0 || x$24 >= sbox1.length) ? $throwRuntimeError("index out of range") : 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") : 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") : sbox1[x$26])) >>> 0) << 8 >>> 0)) >>> 0) | ((x$27 = (t2 & 255) >>> 0, ((x$27 < 0 || x$27 >= sbox1.length) ? $throwRuntimeError("index out of range") : sbox1[x$27])) >>> 0)) >>> 0; s2 = ((((((((x$28 = t2 >>> 24 >>> 0, ((x$28 < 0 || x$28 >= sbox1.length) ? $throwRuntimeError("index out of range") : 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") : 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") : sbox1[x$30])) >>> 0) << 8 >>> 0)) >>> 0) | ((x$31 = (t3 & 255) >>> 0, ((x$31 < 0 || x$31 >= sbox1.length) ? $throwRuntimeError("index out of range") : sbox1[x$31])) >>> 0)) >>> 0; s3 = ((((((((x$32 = t3 >>> 24 >>> 0, ((x$32 < 0 || x$32 >= sbox1.length) ? $throwRuntimeError("index out of range") : 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") : 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") : sbox1[x$34])) >>> 0) << 8 >>> 0)) >>> 0) | ((x$35 = (t0 & 255) >>> 0, ((x$35 < 0 || x$35 >= sbox1.length) ? $throwRuntimeError("index out of range") : sbox1[x$35])) >>> 0)) >>> 0; s0 = (s0 ^ ((x$36 = k + 0 >> 0, ((x$36 < 0 || x$36 >= xk.$length) ? $throwRuntimeError("index out of range") : 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") : 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") : 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") : 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") : dst.$array[dst.$offset + 0] = _tmp$12); (1 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 1] = _tmp$13); (2 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 2] = _tmp$14); (3 >= dst.$length ? $throwRuntimeError("index out of range") : 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") : dst.$array[dst.$offset + 4] = _tmp$16); (5 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 5] = _tmp$17); (6 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 6] = _tmp$18); (7 >= dst.$length ? $throwRuntimeError("index out of range") : 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") : dst.$array[dst.$offset + 8] = _tmp$20); (9 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 9] = _tmp$21); (10 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 10] = _tmp$22); (11 >= dst.$length ? $throwRuntimeError("index out of range") : 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") : dst.$array[dst.$offset + 12] = _tmp$24); (13 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 13] = _tmp$25); (14 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 14] = _tmp$26); (15 >= dst.$length ? $throwRuntimeError("index out of range") : 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") : sbox0[x])) >>> 0) << 24 >>> 0) | (((x$1 = ((w >>> 16 >>> 0) & 255) >>> 0, ((x$1 < 0 || x$1 >= sbox0.length) ? $throwRuntimeError("index out of range") : 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") : sbox0[x$2])) >>> 0) << 8 >>> 0)) >>> 0) | ((x$3 = (w & 255) >>> 0, ((x$3 < 0 || x$3 >= sbox0.length) ? $throwRuntimeError("index out of range") : 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") : enc.$array[enc.$offset + i] = ((((((((x = 4 * i >> 0, ((x < 0 || x >= key.$length) ? $throwRuntimeError("index out of range") : key.$array[key.$offset + x])) >>> 0) << 24 >>> 0) | (((x$1 = (4 * i >> 0) + 1 >> 0, ((x$1 < 0 || x$1 >= key.$length) ? $throwRuntimeError("index out of range") : key.$array[key.$offset + x$1])) >>> 0) << 16 >>> 0)) >>> 0) | (((x$2 = (4 * i >> 0) + 2 >> 0, ((x$2 < 0 || x$2 >= key.$length) ? $throwRuntimeError("index out of range") : key.$array[key.$offset + x$2])) >>> 0) << 8 >>> 0)) >>> 0) | ((x$3 = (4 * i >> 0) + 3 >> 0, ((x$3 < 0 || x$3 >= key.$length) ? $throwRuntimeError("index out of range") : 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") : 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") : 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") : enc.$array[enc.$offset + i] = ((x$6 = i - nk >> 0, ((x$6 < 0 || x$6 >= enc.$length) ? $throwRuntimeError("index out of range") : 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") : 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") : sbox0[x$10])), ((x$9 < 0 || x$9 >= td0.length) ? $throwRuntimeError("index out of range") : 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") : sbox0[x$12])), ((x$11 < 0 || x$11 >= td1.length) ? $throwRuntimeError("index out of range") : 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") : sbox0[x$14])), ((x$13 < 0 || x$13 >= td2.length) ? $throwRuntimeError("index out of range") : td2[x$13]))) >>> 0) ^ (x$15 = (x$16 = (x$8 & 255) >>> 0, ((x$16 < 0 || x$16 >= sbox0.length) ? $throwRuntimeError("index out of range") : sbox0[x$16])), ((x$15 < 0 || x$15 >= td3.length) ? $throwRuntimeError("index out of range") : td3[x$15]))) >>> 0; } (x$17 = i$1 + j >> 0, ((x$17 < 0 || x$17 >= dec.$length) ? $throwRuntimeError("index out of range") : 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, _ref, c, k, key, n; k = key.$length; _ref = k; switch (0) { default: if (_ref === 16 || _ref === 24 || _ref === 32) { break; } else { return [$ifaceNil, new KeySizeError((k >> 0))]; } } n = k + 28 >> 0; c = new aesCipher.ptr($makeSlice(sliceType, n), $makeSlice(sliceType, n)); expandKey(key, c.enc, c.dec); return [c, $ifaceNil]; }; $pkg.NewCipher = NewCipher; 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")); } encryptBlock(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")); } decryptBlock(c.dec, dst, src); }; aesCipher.prototype.Decrypt = function(dst, src) { return this.$val.Decrypt(dst, src); }; encryptBlock = function(xk, dst, src) { var $ptr, dst, src, xk; encryptBlockGo(xk, dst, src); }; decryptBlock = function(xk, dst, src) { var $ptr, dst, src, xk; decryptBlockGo(xk, dst, src); }; expandKey = function(key, enc, dec) { var $ptr, dec, enc, key; expandKeyGo(key, enc, dec); }; 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([{prop: "enc", name: "enc", pkg: "crypto/aes", typ: sliceType, tag: ""}, {prop: "dec", name: "dec", pkg: "crypto/aes", 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["encoding/binary"] = (function() { var $pkg = {}, $init, errors, io, math, reflect, bigEndian, sliceType, overflow; errors = $packages["errors"]; io = $packages["io"]; math = $packages["math"]; reflect = $packages["reflect"]; bigEndian = $pkg.bigEndian = $newType(0, $kindStruct, "binary.bigEndian", "bigEndian", "encoding/binary", function() { this.$val = this; if (arguments.length === 0) { return; } }); sliceType = $sliceType($Uint8); bigEndian.ptr.prototype.Uint16 = function(b) { var $ptr, b; return (((1 >= b.$length ? $throwRuntimeError("index out of range") : b.$array[b.$offset + 1]) << 16 >>> 16) | (((0 >= b.$length ? $throwRuntimeError("index out of range") : 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; (0 >= b.$length ? $throwRuntimeError("index out of range") : b.$array[b.$offset + 0] = ((v >>> 8 << 16 >>> 16) << 24 >>> 24)); (1 >= b.$length ? $throwRuntimeError("index out of range") : 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; return (((((((3 >= b.$length ? $throwRuntimeError("index out of range") : b.$array[b.$offset + 3]) >>> 0) | (((2 >= b.$length ? $throwRuntimeError("index out of range") : b.$array[b.$offset + 2]) >>> 0) << 8 >>> 0)) >>> 0) | (((1 >= b.$length ? $throwRuntimeError("index out of range") : b.$array[b.$offset + 1]) >>> 0) << 16 >>> 0)) >>> 0) | (((0 >= b.$length ? $throwRuntimeError("index out of range") : 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; (0 >= b.$length ? $throwRuntimeError("index out of range") : b.$array[b.$offset + 0] = ((v >>> 24 >>> 0) << 24 >>> 24)); (1 >= b.$length ? $throwRuntimeError("index out of range") : b.$array[b.$offset + 1] = ((v >>> 16 >>> 0) << 24 >>> 24)); (2 >= b.$length ? $throwRuntimeError("index out of range") : b.$array[b.$offset + 2] = ((v >>> 8 >>> 0) << 24 >>> 24)); (3 >= b.$length ? $throwRuntimeError("index out of range") : 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; 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") : b.$array[b.$offset + 7])), x$7 = $shiftLeft64(new $Uint64(0, (6 >= b.$length ? $throwRuntimeError("index out of range") : 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") : 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") : 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") : 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") : 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") : 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") : 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; (0 >= b.$length ? $throwRuntimeError("index out of range") : b.$array[b.$offset + 0] = ($shiftRightUint64(v, 56).$low << 24 >>> 24)); (1 >= b.$length ? $throwRuntimeError("index out of range") : b.$array[b.$offset + 1] = ($shiftRightUint64(v, 48).$low << 24 >>> 24)); (2 >= b.$length ? $throwRuntimeError("index out of range") : b.$array[b.$offset + 2] = ($shiftRightUint64(v, 40).$low << 24 >>> 24)); (3 >= b.$length ? $throwRuntimeError("index out of range") : b.$array[b.$offset + 3] = ($shiftRightUint64(v, 32).$low << 24 >>> 24)); (4 >= b.$length ? $throwRuntimeError("index out of range") : b.$array[b.$offset + 4] = ($shiftRightUint64(v, 24).$low << 24 >>> 24)); (5 >= b.$length ? $throwRuntimeError("index out of range") : b.$array[b.$offset + 5] = ($shiftRightUint64(v, 16).$low << 24 >>> 24)); (6 >= b.$length ? $throwRuntimeError("index out of range") : b.$array[b.$offset + 6] = ($shiftRightUint64(v, 8).$low << 24 >>> 24)); (7 >= b.$length ? $throwRuntimeError("index out of range") : 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(); }; 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)}]; 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.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["crypto/des"] = (function() { var $pkg = {}, $init, cipher, binary, strconv, KeySizeError, desCipher, tripleDESCipher, arrayType, arrayType$1, arrayType$2, arrayType$3, sliceType, sliceType$1, sliceType$2, arrayType$4, 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", "KeySizeError", "crypto/des", null); desCipher = $pkg.desCipher = $newType(0, $kindStruct, "des.desCipher", "desCipher", "crypto/des", 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", "tripleDESCipher", "crypto/des", function(cipher1_, cipher2_, cipher3_) { this.$val = this; if (arguments.length === 0) { this.cipher1 = new desCipher.ptr(); this.cipher2 = new desCipher.ptr(); this.cipher3 = new desCipher.ptr(); 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); sliceType$2 = $sliceType($Uint64); arrayType$4 = $arrayType($Uint64, 16); 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 = 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") : subkeys.$array[subkeys.$offset + x])); } else { subkey = ((i < 0 || i >= subkeys.$length) ? $throwRuntimeError("index out of range") : 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)); 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") : feistelBox[i]), x$2 = (16 * row << 24 >>> 24) + column << 24 >>> 24, ((x$2 < 0 || x$2 >= x$1.length) ? $throwRuntimeError("index out of range") : 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") : _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") : sBoxes[s]), ((i < 0 || i >= x$1.length) ? $throwRuntimeError("index out of range") : x$1[i])), ((j < 0 || j >= x.length) ? $throwRuntimeError("index out of range") : 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") : feistelBox[s]), x$3 = (16 * i >> 0) + j >> 0, ((x$3 < 0 || x$3 >= x$2.length) ? $throwRuntimeError("index out of range") : 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") : 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") : ksRotations[i]) << 24 >>> 24)), y$1 < 32 ? (((last << 4 >>> 0)) >>> y$1) : 0) >>> 0; ((i < 0 || i >= out.$length) ? $throwRuntimeError("index out of range") : out.$array[out.$offset + i] = (left | right) >>> 0); last = ((i < 0 || i >= out.$length) ? $throwRuntimeError("index out of range") : 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 = 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") : leftRotations.$array[leftRotations.$offset + i])), 28), x$1 = new $Uint64(0, ((i < 0 || i >= rightRotations.$length) ? $throwRuntimeError("index out of range") : 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") : 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(); 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([{prop: "subkeys", name: "subkeys", pkg: "crypto/des", typ: arrayType$4, tag: ""}]); tripleDESCipher.init([{prop: "cipher1", name: "cipher1", pkg: "crypto/des", typ: desCipher, tag: ""}, {prop: "cipher2", name: "cipher2", pkg: "crypto/des", typ: desCipher, tag: ""}, {prop: "cipher3", name: "cipher3", pkg: "crypto/des", 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["math/rand"] = (function() { var $pkg = {}, $init, nosync, math, testing, Source, Rand, lockedSource, rngSource, sliceType$1, ptrType$1, ptrType$2, arrayType, ptrType$3, ke, we, fe, kn, wn, fn, globalRand, rng_cooked, absInt32, NewSource, New, seedrand; nosync = $packages["github.com/gopherjs/gopherjs/nosync"]; math = $packages["math"]; testing = $packages["testing"]; Source = $pkg.Source = $newType(8, $kindInterface, "rand.Source", "Source", "math/rand", null); Rand = $pkg.Rand = $newType(0, $kindStruct, "rand.Rand", "Rand", "math/rand", function(src_) { this.$val = this; if (arguments.length === 0) { this.src = $ifaceNil; return; } this.src = src_; }); lockedSource = $pkg.lockedSource = $newType(0, $kindStruct, "rand.lockedSource", "lockedSource", "math/rand", function(lk_, src_) { this.$val = this; if (arguments.length === 0) { this.lk = new nosync.Mutex.ptr(); this.src = $ifaceNil; return; } this.lk = lk_; this.src = src_; }); rngSource = $pkg.rngSource = $newType(0, $kindStruct, "rand.rngSource", "rngSource", "math/rand", 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_; }); sliceType$1 = $sliceType($Int); ptrType$1 = $ptrType(Rand); ptrType$2 = $ptrType(lockedSource); arrayType = $arrayType($Int64, 607); ptrType$3 = $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") : we[i]); if (j < ((i < 0 || i >= ke.length) ? $throwRuntimeError("index out of range") : ke[i])) { 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; } 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") : fe[i]) + $fround($fround(_r$3) * ($fround((x$1 = i - 1 >>> 0, ((x$1 < 0 || x$1 >= fe.length) ? $throwRuntimeError("index out of range") : fe[x$1])) - ((i < 0 || i >= fe.length) ? $throwRuntimeError("index out of range") : fe[i]))))) < $fround(math.Exp(-x))) { $s = 8; continue; } /* */ $s = 9; continue; /* if ($fround(((i < 0 || i >= fe.length) ? $throwRuntimeError("index out of range") : fe[i]) + $fround($fround(_r$3) * ($fround((x$1 = i - 1 >>> 0, ((x$1 < 0 || x$1 >= fe.length) ? $throwRuntimeError("index out of range") : fe[x$1])) - ((i < 0 || i >= fe.length) ? $throwRuntimeError("index out of range") : fe[i]))))) < $fround(math.Exp(-x))) { */ case 8: return x; /* } */ case 9: /* } */ $s = 1; continue; case 2: /* */ $s = -1; case -1: } 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") : wn[i]); if (absInt32(j) < ((i < 0 || i >= kn.length) ? $throwRuntimeError("index out of range") : kn[i])) { 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) { return 3.442619855899 + x; } 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") : fn[i]) + $fround($fround(_r$5) * ($fround((x$1 = i - 1 >> 0, ((x$1 < 0 || x$1 >= fn.length) ? $throwRuntimeError("index out of range") : fn[x$1])) - ((i < 0 || i >= fn.length) ? $throwRuntimeError("index out of range") : 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") : fn[i]) + $fround($fround(_r$5) * ($fround((x$1 = i - 1 >> 0, ((x$1 < 0 || x$1 >= fn.length) ? $throwRuntimeError("index out of range") : fn[x$1])) - ((i < 0 || i >= fn.length) ? $throwRuntimeError("index out of range") : fn[i]))))) < $fround(math.Exp(-0.5 * x * x))) { */ case 12: return x; /* } */ case 13: /* } */ $s = 1; continue; case 2: /* */ $s = -1; case -1: } 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 = $clone(new rngSource.ptr(), rngSource); rng.Seed(seed); return rng; }; $pkg.NewSource = NewSource; New = function(src) { var $ptr, src; return new Rand.ptr(src); }; $pkg.New = New; Rand.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 = r.src.Seed(seed); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Seed }; } $f.$ptr = $ptr; $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; } return _r; /* */ $s = -1; case -1: } 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; } return ($shiftRightInt64(_r, 31).$low >>> 0); /* */ $s = -1; case -1: } 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.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; } return ((x = $shiftRightInt64(_r, 32), x.$low + ((x.$high >> 31) * 4294967296)) >> 0); /* */ $s = -1; case -1: } 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); return (((u << 1 >>> 0) >>> 1 >>> 0) >> 0); /* */ $s = -1; case -1: } 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; } 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: return $div64(v, n, true); /* */ $s = -1; case -1: } 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; } 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: return (_r$4 = v % n, _r$4 === _r$4 ? _r$4 : $throwRuntimeError("integer divide by zero")); /* */ $s = -1; case -1: } 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; } 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; } return ((x = _r$1, x.$low + ((x.$high >> 31) * 4294967296)) >> 0); /* */ $s = -1; case -1: } 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; _r = r.Int63(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } f = $flatten64(_r) / 9.223372036854776e+18; if (f === 1) { f = 0; } return f; /* */ $s = -1; case -1: } 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; _r = r.Float64(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } f = $fround(_r); if (f === 1) { f = 0; } return f; /* */ $s = -1; case -1: } 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$1, 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") : m.$array[m.$offset + i] = ((j < 0 || j >= m.$length) ? $throwRuntimeError("index out of range") : m.$array[m.$offset + j])); ((j < 0 || j >= m.$length) ? $throwRuntimeError("index out of range") : m.$array[m.$offset + j] = i); i = i + (1) >> 0; /* } */ $s = 1; continue; case 2: return m; /* */ $s = -1; case -1: } 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); }; 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(); return n; /* */ $s = -1; case -1: } 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.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; case -1: } 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); }; 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 = ((((48271 >>> 16 << 16) * lo >> 0) + (48271 << 16 >>> 16) * lo) >> 0) - ((((3399 >>> 16 << 16) * hi >> 0) + (3399 << 16 >>> 16) * hi) >> 0) >> 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") : 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") : x$5[i] = new $Int64(u.$high & 2147483647, (u.$low & 4294967295) >>> 0))); } 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, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9; 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$7 = (x = (x$1 = (x$2 = rng.vec, x$3 = rng.feed, ((x$3 < 0 || x$3 >= x$2.length) ? $throwRuntimeError("index out of range") : x$2[x$3])), x$4 = (x$5 = rng.vec, x$6 = rng.tap, ((x$6 < 0 || x$6 >= x$5.length) ? $throwRuntimeError("index out of range") : x$5[x$6])), new $Int64(x$1.$high + x$4.$high, x$1.$low + x$4.$low)), new $Int64(x.$high & 2147483647, (x.$low & 4294967295) >>> 0)); (x$8 = rng.vec, x$9 = rng.feed, ((x$9 < 0 || x$9 >= x$8.length) ? $throwRuntimeError("index out of range") : x$8[x$9] = x$7)); return x$7; }; rngSource.prototype.Int63 = function() { return this.$val.Int63(); }; ptrType$1.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: "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$1], false)}]; ptrType$2.methods = [{prop: "Int63", name: "Int63", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Seed", name: "Seed", pkg: "", typ: $funcType([$Int64], [], false)}]; ptrType$3.methods = [{prop: "Seed", name: "Seed", pkg: "", typ: $funcType([$Int64], [], false)}, {prop: "Int63", name: "Int63", pkg: "", typ: $funcType([], [$Int64], false)}]; Source.init([{prop: "Int63", name: "Int63", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Seed", name: "Seed", pkg: "", typ: $funcType([$Int64], [], false)}]); Rand.init([{prop: "src", name: "src", pkg: "math/rand", typ: Source, tag: ""}]); lockedSource.init([{prop: "lk", name: "lk", pkg: "math/rand", typ: nosync.Mutex, tag: ""}, {prop: "src", name: "src", pkg: "math/rand", typ: Source, tag: ""}]); rngSource.init([{prop: "tap", name: "tap", pkg: "math/rand", typ: $Int, tag: ""}, {prop: "feed", name: "feed", pkg: "math/rand", typ: $Int, tag: ""}, {prop: "vec", name: "vec", pkg: "math/rand", 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; } $r = testing.$init(); /* */ $s = 3; case 3: 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(1173834291, 3952672746), new $Int64(1081821761, 3130416987), new $Int64(324977939, 3414273807), new $Int64(1241840476, 2806224363), new $Int64(669549340, 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(492609478, 1609182556), new $Int64(1069394745, 1241596776), new $Int64(1895445337, 1771189259), new $Int64(772864846, 3467012610), new $Int64(2006957225, 2344407434), new $Int64(402115761, 782467244), new $Int64(26335124, 3404933915), new $Int64(1063924276, 618867887), new $Int64(1178782866, 520164395), new $Int64(555910815, 1341358184), new $Int64(632398609, 665794848), new $Int64(1527227641, 3183648150), new $Int64(1781176124, 696329606), new $Int64(1789146075, 4151988961), new $Int64(60039534, 998951326), new $Int64(1535158725, 1364957564), new $Int64(63173359, 4090230633), new $Int64(649454641, 4009697548), new $Int64(248009524, 2569622517), new $Int64(778703922, 3742421481), new $Int64(1038377625, 1506914633), new $Int64(1738099768, 1983412561), new $Int64(236311649, 1436266083), new $Int64(1035966148, 3922894967), new $Int64(810508934, 1792680179), new $Int64(563141142, 1188796351), new $Int64(1349617468, 405968250), new $Int64(1044074554, 433754187), new $Int64(870549669, 4073162024), new $Int64(1053232044, 433121399), new $Int64(2451824, 4162580594), new $Int64(2010221076, 4132415622), new $Int64(611252600, 3033822028), new $Int64(2016407895, 824682382), new $Int64(2366218, 3583765414), new $Int64(1522878809, 535386927), new $Int64(1637219058, 2286693689), new $Int64(1453075389, 2968466525), new $Int64(193683513, 1351410206), new $Int64(1863677552, 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(79673492, 3430061722), new $Int64(663048513, 3820169661), new $Int64(481498454, 2981816134), new $Int64(1017155588, 4184371017), new $Int64(206574701, 2119206761), new $Int64(1295374591, 2472200560), new $Int64(1587026100, 2853524696), new $Int64(1307803389, 1681119904), new $Int64(1972496813, 95608918), new $Int64(392686347, 3690479145), new $Int64(941912722, 1397922290), new $Int64(988169623, 1516129515), new $Int64(1827305493, 1547420459), new $Int64(1311333971, 1470949486), new $Int64(194013850, 1336785672), new $Int64(2102397034, 4131677129), new $Int64(755205548, 4246329084), new $Int64(1004983461, 3788585631), new $Int64(2081005363, 3080389532), new $Int64(1501045284, 2215402037), new $Int64(391002300, 1171593935), new $Int64(1408774047, 1423855166), new $Int64(1628305930, 2276716302), new $Int64(1779030508, 2068027241), new $Int64(1369359303, 3427553297), new $Int64(189241615, 3289637845), new $Int64(1057480830, 3486407650), new $Int64(634572984, 3071877822), new $Int64(1159653919, 3363620705), new $Int64(1213226718, 4159821533), new $Int64(2070861710, 1894661), new $Int64(1472989750, 1156868282), new $Int64(348271067, 776219088), new $Int64(1646054810, 2425634259), new $Int64(1716021749, 680510161), new $Int64(1573220192, 1310101429), new $Int64(1095885995, 2964454134), new $Int64(1821788136, 3467098407), new $Int64(1990672920, 2109628894), new $Int64(7834944, 1232604732), new $Int64(309412934, 3261916179), new $Int64(1699175360, 434597899), new $Int64(235436061, 1624796439), new $Int64(521080809, 3589632480), new $Int64(1198416575, 864579159), new $Int64(208735487, 1380889830), new $Int64(619206309, 2654509477), new $Int64(1419738251, 1468209306), new $Int64(403198876, 100794388), new $Int64(956062190, 2991674471), new $Int64(1938816907, 2224662036), new $Int64(1973824487, 977097250), new $Int64(1351320195, 726419512), new $Int64(1964023751, 1747974366), new $Int64(1394388465, 1556430604), new $Int64(1097991433, 1080776742), new $Int64(1761636690, 280794874), new $Int64(117767733, 919835643), new $Int64(1180474222, 3434019658), new $Int64(196069168, 2461941785), new $Int64(133215641, 3615001066), new $Int64(417204809, 3103414427), new $Int64(790056561, 3380809712), new $Int64(879802240, 2724693469), new $Int64(547796833, 598827710), new $Int64(300924196, 3452273442), new $Int64(2071705424, 649274915), new $Int64(1346182319, 2585724112), new $Int64(636549385, 3165579553), new $Int64(1185578221, 2635894283), new $Int64(2094573470, 2053289721), new $Int64(985976581, 3169337108), new $Int64(1170569632, 144717764), new $Int64(1079216270, 1383666384), new $Int64(2022678706, 681540375), new $Int64(1375448925, 537050586), new $Int64(182715304, 315246468), new $Int64(226402871, 849323088), new $Int64(1262421183, 45543944), new $Int64(1201038398, 2319052083), new $Int64(2106775454, 3613090841), new $Int64(560472520, 2992171180), new $Int64(1765620479, 2068244785), new $Int64(917538188, 4239862634), new $Int64(777927839, 3892253031), new $Int64(720683925, 958186149), new $Int64(1724185863, 1877702262), new $Int64(1357886971, 837674867), new $Int64(1837048883, 1507589294), new $Int64(1905518400, 873336795), new $Int64(267722611, 2764496274), new $Int64(341003118, 4196182374), new $Int64(1080717893, 550964545), new $Int64(818747069, 420611474), new $Int64(222653272, 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(780007692, 2099949527), new $Int64(1424094358, 338442522), new $Int64(490737398, 637158004), new $Int64(419862118, 281976339), new $Int64(574970164, 3619802330), new $Int64(1715552825, 3084554784), new $Int64(882872465, 4129772886), new $Int64(43084605, 1680378557), new $Int64(525521057, 3339087776), new $Int64(1680500332, 4220317857), new $Int64(211654685, 2959322499), new $Int64(1675600481, 1488354890), new $Int64(1312620086, 3958162143), new $Int64(920972075, 2773705983), new $Int64(1876039582, 225908689), new $Int64(963748535, 908216283), new $Int64(1541787429, 3574646075), new $Int64(319760557, 1936937569), new $Int64(1519770881, 75492235), new $Int64(816689472, 1935193178), new $Int64(2142521206, 2018250883), new $Int64(455141620, 3943126022), new $Int64(1546084160, 3066544345), new $Int64(1932392669, 2793082663), new $Int64(908474287, 3297036421), new $Int64(1640597065, 2206987825), new $Int64(1594236910, 807894872), new $Int64(366158341, 766252117), new $Int64(2060649606, 3833114345), new $Int64(845619743, 1255067973), new $Int64(1201145605, 741697208), new $Int64(671241040, 2810093753), new $Int64(1109032642, 4229340371), new $Int64(1462188720, 1361684224), new $Int64(988084219, 1906263026), new $Int64(475781207, 3904421704), new $Int64(1523946520, 1769075545), new $Int64(1062308525, 2621599764), new $Int64(1279509432, 3431891480), new $Int64(404732502, 1871896503), new $Int64(128756421, 1412808876), new $Int64(1605404688, 952876175), new $Int64(1917039957, 1824438899), new $Int64(1662295856, 1005035476), new $Int64(1990909507, 527508597), new $Int64(1288873303, 3066806859), new $Int64(565995893, 3244940914), new $Int64(1257737460, 209092916), new $Int64(1899814242, 1242699167), new $Int64(1433653252, 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(949899753, 3803658212), new $Int64(1883670356, 479946959), new $Int64(685713571, 1562982345), new $Int64(201241205, 1766109365), new $Int64(700596547, 3257093788), new $Int64(1962768719, 2365720207), new $Int64(93384808, 3742754173), new $Int64(1689098413, 2878193673), new $Int64(1096135042, 2174002182), new $Int64(1313222695, 3573511231), new $Int64(1392911121, 1760299077), new $Int64(771856457, 2260779833), new $Int64(1281464374, 1452805722), new $Int64(917811730, 2940011802), new $Int64(1890251082, 1886183802), new $Int64(893897673, 2514369088), new $Int64(1644345561, 3924317791), new $Int64(172616216, 500935732), new $Int64(1403501753, 676580929), new $Int64(581571365, 1184984890), new $Int64(1455515235, 1271474274), new $Int64(318728910, 3163791473), new $Int64(2051027584, 2842487377), new $Int64(1511537551, 2170968612), new $Int64(573262976, 3535856740), new $Int64(94256461, 1488599718), new $Int64(966951817, 3408913763), new $Int64(60951736, 2501050084), new $Int64(1272353200, 1639124157), new $Int64(138001144, 4088176393), new $Int64(1574896563, 3989947576), new $Int64(1982239940, 3414355209), new $Int64(1355154361, 2275136352), new $Int64(89709303, 2151835223), new $Int64(1216338715, 1654534827), new $Int64(1467562197, 377892833), new $Int64(1664767638, 660204544), new $Int64(85706799, 390828249), new $Int64(725310955, 3402783878), new $Int64(678849488, 3717936603), new $Int64(1113532086, 2211058823), new $Int64(1564224320, 2692150867), new $Int64(1952770442, 1928910388), new $Int64(788716862, 3931011137), new $Int64(1083670504, 1112701047), new $Int64(2079333076, 2452299106), new $Int64(1251318826, 2337204777), new $Int64(1774877857, 273889282), new $Int64(1798719843, 1462008793), new $Int64(2138834788, 1554494002), new $Int64(952516517, 182675323), new $Int64(548928884, 1882802136), new $Int64(589279648, 3700220025), new $Int64(381039426, 3083431543), new $Int64(1295624457, 3622207527), new $Int64(338126939, 432729309), new $Int64(480013522, 2391914317), new $Int64(297925497, 235747924), new $Int64(2120733629, 3088823825), new $Int64(1402403853, 2314658321), new $Int64(1165929723, 2957634338), new $Int64(501323675, 4117056981), new $Int64(1564699815, 1482500298), new $Int64(1406657158, 840489337), new $Int64(799522364, 3483178565), new $Int64(532129761, 2074004656), new $Int64(724246478, 3643392642), new $Int64(1482330167, 1583624461), new $Int64(1261660694, 287473085), new $Int64(1667835381, 3136843981), new $Int64(1138806821, 1266970974), new $Int64(135185781, 1998688839), new $Int64(392094735, 1492900209), new $Int64(1031326774, 1538112737), new $Int64(76914806, 2207265429), new $Int64(260686035, 963263315), new $Int64(1671145500, 2295892134), new $Int64(1068469660, 2002560897), new $Int64(1791233343, 1369254035), new $Int64(33436120, 3353312708), new $Int64(57507843, 947771099), new $Int64(201728503, 1747061399), new $Int64(1507240140, 2047354631), new $Int64(720000810, 4165367136), new $Int64(479265078, 3388864963), new $Int64(1195302398, 286492130), new $Int64(2045622690, 2795735007), new $Int64(1431753082, 3703961339), new $Int64(1999047161, 1797825479), new $Int64(1429039600, 1116589674), new $Int64(482063550, 2593309206), new $Int64(1329049334, 3404995677), new $Int64(1396904208, 3453462936), new $Int64(1014767077, 3016498634), new $Int64(75698599, 1650371545), new $Int64(1592007860, 212344364), new $Int64(1127766888, 3843932156), new $Int64(1399463792, 3573129983), new $Int64(1256901817, 665897820), new $Int64(1071492673, 1675628772), new $Int64(243225682, 2831752928), new $Int64(2120298836, 1486294219), new $Int64(193076235, 268782709), new $Int64(1145360145, 4186179080), new $Int64(624342951, 1613720397), new $Int64(857179861, 2703686015), new $Int64(1235864944, 2205342611), new $Int64(1474779655, 1411666394), new $Int64(619028749, 677744900), new $Int64(270855115, 4172867247), new $Int64(135494707, 2163418403), new $Int64(849547544, 2841526879), new $Int64(1029966689, 1082141470), new $Int64(377371856, 4046134367), new $Int64(51415528, 2142943655), new $Int64(1897659315, 3124627521), new $Int64(998228909, 219992939), new $Int64(1068692697, 1756846531), new $Int64(1283749206, 1225118210), new $Int64(1621625642, 1647770243), new $Int64(111523943, 444807907), new $Int64(2036369448, 3952076173), new $Int64(53201823, 1461839639), new $Int64(315761893, 3699250910), new $Int64(702974850, 1373688981), new $Int64(734022261, 147523747), new $Int64(100152742, 1211276581), new $Int64(1294440951, 2548832680), new $Int64(1144696256, 1995631888), new $Int64(154500578, 2011457303), new $Int64(796460974, 3057425772), new $Int64(667839456, 81484597), new $Int64(465502760, 3646681560), new $Int64(775020923, 635548515), new $Int64(602489502, 2508044581), new $Int64(353263531, 1014917157), new $Int64(719992433, 3214891315), new $Int64(852684611, 959582252), new $Int64(226415134, 3347040449), new $Int64(1784615552, 4102971975), new $Int64(397887437, 4078022210), new $Int64(1610679822, 2851767182), new $Int64(749162636, 1540160644), new $Int64(598384772, 1057290595), new $Int64(2034890660, 3907769253), new $Int64(579300318, 4248952684), new $Int64(1092907599, 132554364), new $Int64(1061621234, 1029351092), new $Int64(697840928, 2583007416), new $Int64(298619124, 1486185789), new $Int64(55905697, 2871589073), new $Int64(2017643612, 723203291), new $Int64(146250550, 2494333952), new $Int64(1064490251, 2230939180), new $Int64(342915576, 3943232912), new $Int64(1768732449, 2181367922), new $Int64(1418222537, 2889274791), new $Int64(1824032949, 2046728161), new $Int64(1653899792, 1376052477), new $Int64(1022327048, 381236993), new $Int64(1034385958, 3188942166), new $Int64(2073003539, 350070824), new $Int64(144881592, 61758415), new $Int64(1405659422, 3492950336), new $Int64(117440928, 3093818430), new $Int64(1693893113, 2962480613), new $Int64(235432940, 3154871160), new $Int64(511005079, 3228564679), new $Int64(610731502, 888276216), new $Int64(1200780674, 3574998604), new $Int64(870415268, 1967526716), new $Int64(591335707, 1554691298), new $Int64(574459414, 339944798), new $Int64(1223764147, 1154515356), new $Int64(1825645307, 967516237), new $Int64(1546195135, 596588202), new $Int64(279882768, 3764362170), new $Int64(492091056, 266611402), new $Int64(1754227768, 2047856075), new $Int64(1146757215, 21444105), new $Int64(1198058894, 3065563181), new $Int64(1915064845, 1140663212), new $Int64(633187674, 2323741028), new $Int64(2126290159, 3103873707), new $Int64(1008658319, 2766828349), new $Int64(1661896145, 1970872996), new $Int64(1628585413, 3766615585), new $Int64(1552335120, 2036813414), new $Int64(152606527, 3105536507), new $Int64(13954645, 3396176938), new $Int64(1426081645, 1377154485), new $Int64(2085644467, 3807014186), new $Int64(543009040, 3710110597), new $Int64(396058129, 916420443), new $Int64(734556788, 2103831255), new $Int64(381322154, 717331943), new $Int64(572884752, 3550505941), new $Int64(45939673, 378749927), new $Int64(149867929, 611017331), new $Int64(592130075, 758907650), new $Int64(1012992349, 154266815), new $Int64(1107028706, 1407468696), new $Int64(469292398, 970098704), new $Int64(1862426162, 1971660656), new $Int64(998365243, 3332747885), new $Int64(1947089649, 1935189867), new $Int64(1510248801, 203520055), new $Int64(842317902, 3916463034), new $Int64(1758884993, 3474113316), new $Int64(1036101639, 316544223), new $Int64(373738757, 1650844677), new $Int64(1240292229, 4267565603), new $Int64(1077208624, 2501167616), new $Int64(626831785, 3929401789), new $Int64(56122796, 337170252), new $Int64(1186981558, 2061966842), new $Int64(1843292800, 2508461464), new $Int64(206012532, 2791377107), new $Int64(1240791848, 1227227588), new $Int64(1813978778, 1709681848), new $Int64(1153692192, 3768820575), new $Int64(1145186199, 2887126398), new $Int64(700372314, 296561685), new $Int64(700300844, 3729960077), new $Int64(575172304, 372833036), new $Int64(2078875613, 2409779288), new $Int64(1829161290, 555274064), new $Int64(1041887929, 4239804901), new $Int64(1839403216, 3723486978), new $Int64(498390553, 2145871984), new $Int64(564717933, 3565480803), new $Int64(578829821, 2197313814), new $Int64(974785092, 3613674566), new $Int64(438638731, 3042093666), new $Int64(2050927384, 3324034321), new $Int64(869420878, 3708873369), new $Int64(946682149, 1698090092), new $Int64(1618900382, 4213940712), new $Int64(304003901, 2087477361), new $Int64(381315848, 2407950639), new $Int64(851258090, 3942568569), new $Int64(923583198, 4088074412), new $Int64(723260036, 2964773675), new $Int64(1473561819, 1539178386), new $Int64(1062961552, 2694849566), new $Int64(460977733, 2120273838), new $Int64(542912908, 2484608657), new $Int64(880846449, 2956190677), new $Int64(1970902366, 4223313749), new $Int64(662161910, 3502682327), new $Int64(705634754, 4133891139), new $Int64(1116124348, 1166449596), new $Int64(1038247601, 3362705993), new $Int64(93734798, 3892921029), new $Int64(1876124043, 786869787), new $Int64(1057490746, 1046342263), new $Int64(242763728, 493777327), new $Int64(1293910447, 3304827646), new $Int64(616460742, 125356352), new $Int64(499300063, 74094113), new $Int64(1351896723, 2500816079), new $Int64(1657235204, 514015239), new $Int64(1377565129, 543520454), new $Int64(107706923, 3614531153), new $Int64(2056746300, 2356753985), new $Int64(1390062617, 2018141668), new $Int64(131272971, 2087974891), new $Int64(644556607, 3166972343), new $Int64(372256200, 1517638666), new $Int64(1212207984, 173466846), new $Int64(1451709187, 4241513471), new $Int64(733932806, 2783126920), new $Int64(1972004134, 4167264826), new $Int64(29260506, 3907395640), new $Int64(1236582087, 1539634186), new $Int64(1551526350, 178241987), new $Int64(2034206012, 182168164), new $Int64(1044953189, 2386154934), new $Int64(1379126408, 4077374341), new $Int64(32803926, 1732699140), new $Int64(1726425903, 1041306002), new $Int64(1860414813, 2068001749), new $Int64(1005320202, 3208962910), new $Int64(844054010, 697710380), new $Int64(638124245, 2228431183), new $Int64(1337169671, 3554678728), new $Int64(1396494601, 173470263), new $Int64(2061597383, 3848297795), new $Int64(1220546671, 246236185), new $Int64(163293187, 2066374846), new $Int64(1771673660, 312890749), new $Int64(703378057, 3573310289), new $Int64(1548631747, 143166754), new $Int64(613554316, 2081511079), new $Int64(1197802104, 486038032), new $Int64(240999859, 2982218564), new $Int64(364901986, 1000939191), new $Int64(1902782651, 2750454885), new $Int64(1475638791, 3375313137), new $Int64(503615608, 881302957), new $Int64(638698903, 2514186393), new $Int64(443860803, 360024739), new $Int64(1399671872, 292500025), new $Int64(1381210821, 2276300752), new $Int64(521803381, 4069087683), new $Int64(208500981, 1637778212), new $Int64(720490469, 1676670893), new $Int64(1067262482, 3855174429), new $Int64(2114075974, 2067248671), new $Int64(2058057389, 2884561259), new $Int64(1341742553, 2456511185), new $Int64(983726246, 561175414), new $Int64(427994085, 432588903), new $Int64(885133709, 4059399550), new $Int64(2054387382, 1075014784), new $Int64(413651020, 2728058415), new $Int64(1839142064, 1299703678), new $Int64(1262333188, 2347583393), new $Int64(1285481956, 2468164145), new $Int64(989129637, 1140014346), new $Int64(2033889184, 1936972070), new $Int64(409904655, 3870530098), new $Int64(1662989391, 1717789158), new $Int64(1914486492, 1153452491), new $Int64(1157059232, 3948827651), new $Int64(790338018, 2101413152), new $Int64(1495744672, 3854091229), new $Int64(83644069, 4215565463), new $Int64(762206335, 1202710438), new $Int64(1582574611, 2072216740), new $Int64(705690639, 2066751068), new $Int64(33900336, 173902580), new $Int64(1405499842, 142459001), new $Int64(172391592, 1889151926), new $Int64(1648540523, 3034199774), new $Int64(1618587731, 516490102), new $Int64(93114264, 3692577783), new $Int64(68662295, 2953948865), new $Int64(1826544975, 4041040923), new $Int64(204965672, 592046130), new $Int64(1441840008, 384297211), new $Int64(95834184, 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(444060402, 4013676611), new $Int64(1718532237, 2265047407), new $Int64(1433593806, 875071080), new $Int64(1804436145, 1418843655), new $Int64(2009228711, 451657300), new $Int64(1229446621, 1866374663), new $Int64(1653472867, 1551455622), new $Int64(577191481, 3560962459), new $Int64(1669204077, 3347903778), new $Int64(1849156454, 2675874918), new $Int64(316128071, 2762991672), new $Int64(530492383, 3689068477), new $Int64(844089962, 4071997905), new $Int64(1508155730, 1381702441), new $Int64(2089931018, 2373284878), new $Int64(1283216186, 2143983064), new $Int64(308739063, 1938207195), new $Int64(1754949306, 1188152253), new $Int64(1272345009, 615870490), new $Int64(742653194, 2662252621), new $Int64(1477718295, 3839976789), new $Int64(56149435, 306752547), new $Int64(720795581, 2162363077), new $Int64(2090431015, 2767224719), new $Int64(675859549, 2628837712), new $Int64(1678405918, 2967771969), new $Int64(1694285728, 499792248), new $Int64(403352367, 4285253508), new $Int64(962357072, 2856511070), new $Int64(679471692, 2526409716), new $Int64(353777175, 1240875658), new $Int64(1232590226, 2577342868), new $Int64(1146185433, 4136853496), new $Int64(670368674, 2403540137), new $Int64(1372824515, 1371410668), new $Int64(1970921600, 371758825), new $Int64(1706420536, 1528834084), new $Int64(2075795018, 1504757260), new $Int64(685663576, 699052551), new $Int64(1641940109, 3347789870), new $Int64(1951619734, 3430604759), new $Int64(2119672219, 1935601723), new $Int64(966789690, 834676166)]); globalRand = New(new lockedSource.ptr(new nosync.Mutex.ptr(), NewSource(new $Int64(0, 1)))); /* */ } 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, binary, errors, fmt, nosync, io, math, rand, strings, Word, Int, nat, divisor, arrayType, structType, sliceType, sliceType$1, ptrType, sliceType$2, ptrType$1, sliceType$3, arrayType$1, ptrType$2, ptrType$4, intOne, natOne, natTwo, karatsubaThreshold, leafSize, cacheBase10, deBruijn32Lookup, deBruijn64Lookup, mulWW, divWW, addVV, subVV, addVW, subVW, shlVU, shrVU, mulAddVWW, addMulVVW, divWVW, bitLen, addWW_g, subWW_g, mulWW_g, mulAddWWW_g, bitLen_g, leadingZeros, divWW_g, addVV_g, subVV_g, addVW_g, subVW_g, shlVU_g, shrVU_g, mulAddVWW_g, addMulVVW_g, divWVW_g, NewInt, charset, writeMultiple, low64, basicMul, karatsubaAdd, karatsubaSub, karatsuba, alias, addAt, max, karatsubaLen, hexValue, divisors, trailingZeroBits, greaterThan; 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"]; strings = $packages["strings"]; Word = $pkg.Word = $newType(4, $kindUintptr, "big.Word", "Word", "math/big", null); Int = $pkg.Int = $newType(0, $kindStruct, "big.Int", "Int", "math/big", function(neg_, abs_) { this.$val = this; if (arguments.length === 0) { this.neg = false; this.abs = nat.nil; return; } this.neg = neg_; this.abs = abs_; }); nat = $pkg.nat = $newType(12, $kindSlice, "big.nat", "nat", "math/big", null); divisor = $pkg.divisor = $newType(0, $kindStruct, "big.divisor", "divisor", "math/big", 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_; }); arrayType = $arrayType(divisor, 64); structType = $structType([{prop: "Mutex", name: "", pkg: "", typ: nosync.Mutex, tag: ""}, {prop: "table", name: "table", pkg: "math/big", typ: arrayType, tag: ""}]); sliceType = $sliceType($Uint8); sliceType$1 = $sliceType(Word); ptrType = $ptrType(Int); sliceType$2 = $sliceType($emptyInterface); ptrType$1 = $ptrType(Word); sliceType$3 = $sliceType(divisor); arrayType$1 = $arrayType(nat, 16); ptrType$2 = $ptrType(nat); ptrType$4 = $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 = (((x0 >>> 16 << 16) * y0 >>> 0) + (x0 << 16 >>> 16) * y0) >>> 0; t = ((((x1 >>> 16 << 16) * y0 >>> 0) + (x1 << 16 >>> 16) * y0) >>> 0) + (w0 >>> 16 >>> 0) >>> 0; w1 = (t & 65535) >>> 0; w2 = t >>> 16 >>> 0; w1 = w1 + (((((x0 >>> 16 << 16) * y1 >>> 0) + (x0 << 16 >>> 16) * y1) >>> 0)) >>> 0; z1 = (((((x1 >>> 16 << 16) * y1 >>> 0) + (x1 << 16 >>> 16) * y1) >>> 0) + w2 >>> 0) + (w1 >>> 16 >>> 0) >>> 0; z0 = (((x >>> 16 << 16) * y >>> 0) + (x << 16 >>> 16) * 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(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; }; leadingZeros = 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 = leadingZeros(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 - ((((q1 >>> 16 << 16) * vn1 >>> 0) + (q1 << 16 >>> 16) * vn1) >>> 0) >>> 0; while (true) { if (!(q1 >= 65536 || ((((q1 >>> 16 << 16) * vn0 >>> 0) + (q1 << 16 >>> 16) * vn0) >>> 0) > (((((65536 >>> 16 << 16) * rhat >>> 0) + (65536 << 16 >>> 16) * rhat) >>> 0) + un1 >>> 0))) { break; } q1 = q1 - (1) >>> 0; rhat = rhat + (vn1) >>> 0; if (rhat >= 65536) { break; } } un21 = (((((un32 >>> 16 << 16) * 65536 >>> 0) + (un32 << 16 >>> 16) * 65536) >>> 0) + un1 >>> 0) - ((((q1 >>> 16 << 16) * v >>> 0) + (q1 << 16 >>> 16) * 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 - ((((q0 >>> 16 << 16) * vn1 >>> 0) + (q0 << 16 >>> 16) * vn1) >>> 0) >>> 0; while (true) { if (!(q0 >= 65536 || ((((q0 >>> 16 << 16) * vn0 >>> 0) + (q0 << 16 >>> 16) * vn0) >>> 0) > (((((65536 >>> 16 << 16) * rhat >>> 0) + (65536 << 16 >>> 16) * rhat) >>> 0) + un0 >>> 0))) { break; } q0 = q0 - (1) >>> 0; rhat = rhat + (vn1) >>> 0; if (rhat >= 65536) { break; } } _tmp$2 = ((((q1 >>> 16 << 16) * 65536 >>> 0) + (q1 << 16 >>> 16) * 65536) >>> 0) + q0 >>> 0; _tmp$3 = (y$4 = s, y$4 < 32 ? ((((((((un21 >>> 16 << 16) * 65536 >>> 0) + (un21 << 16 >>> 16) * 65536) >>> 0) + un0 >>> 0) - ((((q0 >>> 16 << 16) * v >>> 0) + (q0 << 16 >>> 16) * 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, _ref, _tuple, c, i, x, y, z; c = 0; _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") : x.$array[x.$offset + i]), ((i < 0 || i >= y.$length) ? $throwRuntimeError("index out of range") : y.$array[y.$offset + i]), c); c = _tuple[0]; ((i < 0 || i >= z.$length) ? $throwRuntimeError("index out of range") : z.$array[z.$offset + i] = _tuple[1]); _i++; } return c; }; subVV_g = function(z, x, y) { var $ptr, _i, _ref, _tuple, c, i, x, y, z; c = 0; _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") : x.$array[x.$offset + i]), ((i < 0 || i >= y.$length) ? $throwRuntimeError("index out of range") : y.$array[y.$offset + i]), c); c = _tuple[0]; ((i < 0 || i >= z.$length) ? $throwRuntimeError("index out of range") : z.$array[z.$offset + i] = _tuple[1]); _i++; } return c; }; addVW_g = function(z, x, y) { var $ptr, _i, _ref, _tuple, c, i, x, y, z; c = 0; 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") : x.$array[x.$offset + i]), c, 0); c = _tuple[0]; ((i < 0 || i >= z.$length) ? $throwRuntimeError("index out of range") : z.$array[z.$offset + i] = _tuple[1]); _i++; } return c; }; subVW_g = function(z, x, y) { var $ptr, _i, _ref, _tuple, c, i, x, y, z; c = 0; 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") : x.$array[x.$offset + i]), c, 0); c = _tuple[0]; ((i < 0 || i >= z.$length) ? $throwRuntimeError("index out of range") : z.$array[z.$offset + i] = _tuple[1]); _i++; } return c; }; shlVU_g = function(z, x, s) { var $ptr, c, i, n, nonAsciiName, s, w, w1, x, x$1, x$2, y, y$1, y$2, y$3, z; c = 0; n = z.$length; if (n > 0) { nonAsciiName = 32 - s >>> 0; w1 = (x$1 = n - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1])); c = (y = nonAsciiName, 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") : x.$array[x.$offset + x$2])); ((i < 0 || i >= z.$length) ? $throwRuntimeError("index out of range") : z.$array[z.$offset + i] = (((y$1 = s, y$1 < 32 ? (w << y$1) : 0) >>> 0) | ((y$2 = nonAsciiName, y$2 < 32 ? (w1 >>> y$2) : 0) >>> 0)) >>> 0); i = i - (1) >> 0; } (0 >= z.$length ? $throwRuntimeError("index out of range") : 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 $ptr, c, i, n, nonAsciiName, s, w, w1, x, x$1, x$2, y, y$1, y$2, y$3, z; c = 0; n = z.$length; if (n > 0) { nonAsciiName = 32 - s >>> 0; w1 = (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0]); c = (y = nonAsciiName, 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") : x.$array[x.$offset + x$1])); ((i < 0 || i >= z.$length) ? $throwRuntimeError("index out of range") : z.$array[z.$offset + i] = (((y$1 = s, y$1 < 32 ? (w >>> y$1) : 0) >>> 0) | ((y$2 = nonAsciiName, 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") : 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") : x.$array[x.$offset + i]), y, c); c = _tuple[0]; ((i < 0 || i >= z.$length) ? $throwRuntimeError("index out of range") : 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") : x.$array[x.$offset + i]), y, ((i < 0 || i >= z.$length) ? $throwRuntimeError("index out of range") : 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") : 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") : x.$array[x.$offset + i]), y); ((i < 0 || i >= z.$length) ? $throwRuntimeError("index out of range") : 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().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$1(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, _tmp, _tmp$1, a, b, k, n, x, z; z = this; _tmp = $clone(new Int.ptr(), Int); _tmp$1 = $clone(new Int.ptr(), Int); a = $clone(_tmp, Int); b = $clone(_tmp$1, Int); a.MulRange((x = new $Int64(n.$high - k.$high, n.$low - k.$low), new $Int64(x.$high + 0, x.$low + 1)), n); b.MulRange(new $Int64(0, 1), k); return z.Quo(a, b); }; Int.prototype.Binomial = function(n, k) { return this.$val.Binomial(n, k); }; Int.ptr.prototype.Quo = function(x, y) { var $ptr, _tuple, x, y, z; z = this; _tuple = z.abs.div(nat.nil, x.abs, y.abs); z.abs = _tuple[0]; z.neg = z.abs.$length > 0 && !(x.neg === y.neg); return z; }; Int.prototype.Quo = function(x, y) { return this.$val.Quo(x, y); }; Int.ptr.prototype.Rem = function(x, y) { var $ptr, _tuple, x, y, z; z = this; _tuple = nat.nil.div(z.abs, x.abs, y.abs); z.abs = _tuple[1]; z.neg = z.abs.$length > 0 && x.neg; return z; }; Int.prototype.Rem = function(x, y) { return this.$val.Rem(x, y); }; Int.ptr.prototype.QuoRem = function(x, y, r) { var $ptr, _tmp, _tmp$1, _tuple, r, x, y, z; z = this; _tuple = z.abs.div(r.abs, x.abs, y.abs); 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; return [z, r]; }; Int.prototype.QuoRem = function(x, y, r) { return this.$val.QuoRem(x, y, r); }; Int.ptr.prototype.Div = function(x, y) { var $ptr, r, x, y, y_neg, z; z = this; y_neg = y.neg; r = $clone(new Int.ptr(), Int); z.QuoRem(x, y, r); if (r.neg) { if (y_neg) { z.Add(z, intOne); } else { z.Sub(z, intOne); } } return z; }; Int.prototype.Div = function(x, y) { return this.$val.Div(x, y); }; Int.ptr.prototype.Mod = function(x, y) { var $ptr, q, x, y, y0, z; z = this; y0 = y; if (z === y || alias(z.abs, y.abs)) { y0 = new Int.ptr().Set(y); } q = $clone(new Int.ptr(), Int); q.QuoRem(x, y, z); if (z.neg) { if (y0.neg) { z.Sub(z, y0); } else { z.Add(z, y0); } } return z; }; Int.prototype.Mod = function(x, y) { return this.$val.Mod(x, y); }; Int.ptr.prototype.DivMod = function(x, y, m) { var $ptr, m, x, y, y0, z; z = this; y0 = y; if (z === y || alias(z.abs, y.abs)) { y0 = new Int.ptr().Set(y); } z.QuoRem(x, y, m); if (m.neg) { if (y0.neg) { z.Add(z, intOne); m.Sub(m, y0); } else { z.Sub(z, intOne); m.Add(m, y0); } } return [z, m]; }; 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); }; Int.ptr.prototype.String = function() { var $ptr, x; x = this; if (x === ptrType.nil) { return ""; } else if (x.neg) { return "-" + x.abs.decimalString(); } return x.abs.decimalString(); }; Int.prototype.String = function() { return this.$val.String(); }; charset = function(ch) { var $ptr, _ref, ch; _ref = ch; if (_ref === 98) { return "0123456789abcdefghijklmnopqrstuvwxyz".substring(0, 2); } else if (_ref === 111) { return "0123456789abcdefghijklmnopqrstuvwxyz".substring(0, 8); } else if (_ref === 100 || _ref === 115 || _ref === 118) { return "0123456789abcdefghijklmnopqrstuvwxyz".substring(0, 10); } else if (_ref === 120) { return "0123456789abcdefghijklmnopqrstuvwxyz".substring(0, 16); } else if (_ref === 88) { return "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".substring(0, 16); } return ""; }; 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($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; case -1: } 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, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _ref, _tuple, _tuple$1, ch, cs, d, digits, left, length, precision, precisionSet, prefix, right, s, sign, width, widthSet, x, zeroes, $s, $r; /* */ $s = 0; var $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; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; ch = $f.ch; cs = $f.cs; d = $f.d; digits = $f.digits; 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; zeroes = $f.zeroes; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: x = this; cs = charset(ch); /* */ if (cs === "") { $s = 1; continue; } /* */ if (x === ptrType.nil) { $s = 2; continue; } /* */ $s = 3; continue; /* if (cs === "") { */ case 1: _r = fmt.Fprintf(s, "%%!%c(big.Int=%s)", new sliceType$2([new $Int32(ch), new $String(x.String())])); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _r; return; $s = 3; continue; /* } else if (x === ptrType.nil) { */ case 2: _r$1 = fmt.Fprint(s, new sliceType$2([new $String("")])); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } _r$1; return; /* } */ case 3: sign = ""; /* */ if (x.neg) { $s = 6; continue; } _r$2 = s.Flag(43); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } /* */ if (_r$2) { $s = 7; continue; } _r$3 = s.Flag(32); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } /* */ if (_r$3) { $s = 8; continue; } /* */ $s = 9; continue; /* if (x.neg) { */ case 6: sign = "-"; $s = 9; continue; /* } else if (_r$2) { */ case 7: sign = "+"; $s = 9; continue; /* } else if (_r$3) { */ case 8: sign = " "; /* } */ case 9: prefix = ""; _r$4 = s.Flag(35); /* */ $s = 14; case 14: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } /* */ if (_r$4) { $s = 12; continue; } /* */ $s = 13; continue; /* if (_r$4) { */ case 12: _ref = ch; if (_ref === 111) { prefix = "0"; } else if (_ref === 120) { prefix = "0x"; } else if (_ref === 88) { prefix = "0X"; } /* } */ case 13: digits = x.abs.string(cs); left = 0; zeroes = 0; right = 0; _r$5 = s.Precision(); /* */ $s = 15; case 15: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } _tuple = _r$5; precision = _tuple[0]; precisionSet = _tuple[1]; if (precisionSet) { if (digits.length < precision) { zeroes = precision - digits.length >> 0; } else if (digits === "0" && (precision === 0)) { return; } } length = ((sign.length + prefix.length >> 0) + zeroes >> 0) + digits.length >> 0; _r$6 = s.Width(); /* */ $s = 16; case 16: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } _tuple$1 = _r$6; width = _tuple$1[0]; widthSet = _tuple$1[1]; /* */ if (widthSet && length < width) { $s = 17; continue; } /* */ $s = 18; continue; /* if (widthSet && length < width) { */ case 17: d = width - length >> 0; _r$7 = s.Flag(45); /* */ $s = 23; case 23: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } /* */ if (_r$7) { $s = 19; continue; } _r$8 = s.Flag(48); /* */ $s = 24; case 24: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } /* */ if (_r$8 && !precisionSet) { $s = 20; continue; } /* */ $s = 21; continue; /* if (_r$7) { */ case 19: right = d; $s = 22; continue; /* } else if (_r$8 && !precisionSet) { */ case 20: zeroes = d; $s = 22; continue; /* } else { */ case 21: left = d; /* } */ case 22: /* } */ case 18: $r = writeMultiple(s, " ", left); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = writeMultiple(s, sign, 1); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = writeMultiple(s, prefix, 1); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = writeMultiple(s, "0", zeroes); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = writeMultiple(s, digits, 1); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = writeMultiple(s, " ", right); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.Format }; } $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._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.ch = ch; $f.cs = cs; $f.d = d; $f.digits = digits; $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.zeroes = zeroes; $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, _r$2, _ref, _tuple, _tuple$1, base, ch, 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; _r$2 = $f._r$2; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; base = $f.base; ch = $f.ch; 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 = r.ReadRune(); /* */ $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[2]; if (!($interfaceIsEqual(err, $ifaceNil))) { return [ptrType.nil, 0, err]; } neg = false; _ref = ch; /* */ if (_ref === 45) { $s = 2; continue; } /* */ if (_ref === 43) { $s = 3; continue; } /* */ $s = 4; continue; /* if (_ref === 45) { */ case 2: neg = true; $s = 5; continue; /* } else if (_ref === 43) { */ case 3: $s = 5; continue; /* } else { */ case 4: _r$1 = r.UnreadRune(); /* */ $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 = z.abs.scan(r, base); /* */ $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; z.abs = _tuple$1[0]; base = _tuple$1[1]; err = _tuple$1[2]; if (!($interfaceIsEqual(err, $ifaceNil))) { return [ptrType.nil, base, err]; } z.neg = z.abs.$length > 0 && neg; return [z, base, $ifaceNil]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.scan }; } $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.base = base; $f.ch = ch; $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); }; Int.ptr.prototype.Scan = function(s, ch) { var $ptr, _r, _ref, _tuple, base, ch, err, 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; _ref = $f._ref; _tuple = $f._tuple; base = $f.base; ch = $f.ch; err = $f.err; s = $f.s; 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; _ref = ch; if (_ref === 98) { base = 2; } else if (_ref === 111) { base = 8; } else if (_ref === 100) { base = 10; } else if (_ref === 120 || _ref === 88) { base = 16; } else if (_ref === 115 || _ref === 118) { } else { return errors.New("Int.Scan: invalid verb"); } _r = z.scan(s, base); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _tuple = _r; err = _tuple[2]; return err; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.Scan }; } $f.$ptr = $ptr; $f._r = _r; $f._ref = _ref; $f._tuple = _tuple; $f.base = base; $f.ch = ch; $f.err = err; $f.s = s; $f.z = z; $f.$s = $s; $f.$r = $r; return $f; }; Int.prototype.Scan = function(s, ch) { return this.$val.Scan(s, ch); }; 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") : 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") : 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, 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; 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))) { return [ptrType.nil, false]; } _tuple$1 = r.ReadRune(); err = _tuple$1[2]; if (!($interfaceIsEqual(err, io.EOF))) { return [ptrType.nil, false]; } return [z, true]; /* */ $s = -1; case -1: } 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.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, (x.abs.$length * 4 >> 0)); 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, m, mWords, x, y, yWords, z; z = this; yWords = nat.nil; if (!y.neg) { yWords = y.abs; } mWords = nat.nil; if (!(m === ptrType.nil)) { mWords = m.abs; } z.abs = z.abs.expNN(x.abs, yWords, mWords); z.neg = z.abs.$length > 0 && x.neg && yWords.$length > 0 && ((((0 >= yWords.$length ? $throwRuntimeError("index out of range") : 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; } return z; }; 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, _tmp, _tmp$1, _tuple, a, b, lastX, lastY, q, r, temp, x, y, z; z = this; if (a.Sign() <= 0 || b.Sign() <= 0) { z.SetInt64(new $Int64(0, 0)); if (!(x === ptrType.nil)) { x.SetInt64(new $Int64(0, 0)); } if (!(y === ptrType.nil)) { y.SetInt64(new $Int64(0, 0)); } return z; } if (x === ptrType.nil && y === ptrType.nil) { return z.binaryGCD(a, b); } A = new Int.ptr().Set(a); B = new Int.ptr().Set(b); X = new Int.ptr(); Y = new Int.ptr().SetInt64(new $Int64(0, 1)); lastX = new Int.ptr().SetInt64(new $Int64(0, 1)); lastY = new Int.ptr(); q = new Int.ptr(); temp = new Int.ptr(); while (true) { if (!(B.abs.$length > 0)) { break; } r = new Int.ptr(); _tuple = q.QuoRem(A, B, r); q = _tuple[0]; r = _tuple[1]; _tmp = B; _tmp$1 = r; A = _tmp; B = _tmp$1; 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); } if (!(x === ptrType.nil)) { $copy(x, lastX, Int); } if (!(y === ptrType.nil)) { $copy(y, lastY, Int); } $copy(z, A, Int); return z; }; 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, _tmp, _tmp$1, _tmp$2, _tmp$3, a, b, k, t, u, v, vk, x, z; z = this; u = z; v = new Int.ptr(); if (a.abs.$length > b.abs.$length) { u.Set(b); v.Rem(a, b); } else if (a.abs.$length < b.abs.$length) { u.Set(a); v.Rem(b, a); } else { u.Set(a); v.Set(b); } if (v.abs.$length === 0) { 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(); if (!(((((x = u.abs, (0 >= x.$length ? $throwRuntimeError("index out of range") : 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); } return z.Lsh(u, k); }; Int.prototype.binaryGCD = function(a, b) { return this.$val.binaryGCD(a, b); }; Int.ptr.prototype.ProbablyPrime = function(n) { var $ptr, _r, _v, n, 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; n = $f.n; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: x = this; if (!(!x.neg)) { _v = false; $s = 1; continue s; } _r = x.abs.probablyPrime(n); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _v = _r; case 1: return _v; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.ProbablyPrime }; } $f.$ptr = $ptr; $f._r = _r; $f._v = _v; $f.n = n; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; }; Int.prototype.ProbablyPrime = function(n) { return this.$val.ProbablyPrime(n); }; 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 === true || (n.abs.$length === 0)) { z.abs = nat.nil; 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; return z; /* */ $s = -1; case -1: } 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, d, g, n, z; z = this; d = $clone(new Int.ptr(), Int); d.GCD(z, ptrType.nil, g, n); if (z.neg) { z.Add(z, n); } return z; }; Int.prototype.ModInverse = function(g, n) { return this.$val.ModInverse(g, n); }; 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") : 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.add(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.GobEncode = function() { var $ptr, b, buf, i, x; x = this; if (x === ptrType.nil) { return [sliceType.nil, $ifaceNil]; } buf = $makeSlice(sliceType, (1 + (x.abs.$length * 4 >> 0) >> 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") : 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, _r$1, 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; _r$1 = $f._r$1; 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) { $copy(z, new Int.ptr(false, nat.nil), Int); return $ifaceNil; } b = (0 >= buf.$length ? $throwRuntimeError("index out of range") : 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.Sprintf("Int.GobDecode: encoding version %d not supported", new sliceType$2([new $Uint8((b >>> 1 << 24 >>> 24))])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _r$1 = errors.New(_r); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } return _r$1; /* } */ case 2: z.neg = !((((b & 1) >>> 0) === 0)); z.abs = z.abs.setBytes($subslice(buf, 1)); return $ifaceNil; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.GobDecode }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $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.MarshalJSON = function() { var $ptr, z; z = this; return [new sliceType($stringToBytes(z.String())), $ifaceNil]; }; Int.prototype.MarshalJSON = function() { return this.$val.MarshalJSON(); }; Int.ptr.prototype.UnmarshalJSON = 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$2([text])); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } return _r$1; /* } */ case 3: return $ifaceNil; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.UnmarshalJSON }; } $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.UnmarshalJSON = function(text) { return this.$val.UnmarshalJSON(text); }; Int.ptr.prototype.MarshalText = function() { var $ptr, _tmp, _tmp$1, err, text, z; text = sliceType.nil; err = $ifaceNil; z = this; _tmp = new sliceType($stringToBytes(z.String())); _tmp$1 = $ifaceNil; text = _tmp; err = _tmp$1; return [text, err]; }; 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$2([text])); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } return _r$1; /* } */ case 3: return $ifaceNil; /* */ $s = -1; case -1: } 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); }; 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") : 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") : 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 z.make(0); } z = z.make(1); (0 >= z.$length ? $throwRuntimeError("index out of range") : 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") : 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 z.make(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$1(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length)), $subslice(new sliceType$1(x.$array), x.$offset, x.$offset + x.$length), $subslice(new sliceType$1(y.$array), y.$offset, y.$offset + y.$length)); if (m > n) { c = addVW((x$2 = $subslice(z, n, m), $subslice(new sliceType$1(x$2.$array), x$2.$offset, x$2.$offset + x$2.$length)), (x$3 = $subslice(x, n), $subslice(new sliceType$1(x$3.$array), x$3.$offset, x$3.$offset + x$3.$length)), c); } ((m < 0 || m >= z.$length) ? $throwRuntimeError("index out of range") : 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 z.make(0); } else if (n === 0) { return z.set(x); } z = z.make(m); c = subVV((x$1 = $subslice(z, 0, n), $subslice(new sliceType$1(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length)), $subslice(new sliceType$1(x.$array), x.$offset, x.$offset + x.$length), $subslice(new sliceType$1(y.$array), y.$offset, y.$offset + y.$length)); if (m > n) { c = subVW((x$2 = $subslice(z, n), $subslice(new sliceType$1(x$2.$array), x$2.$offset, x$2.$offset + x$2.$length)), (x$3 = $subslice(x, n), $subslice(new sliceType$1(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") : x.$array[x.$offset + i]) === ((i < 0 || i >= y.$length) ? $throwRuntimeError("index out of range") : y.$array[y.$offset + i])))) { break; } i = i - (1) >> 0; } if (((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i]) < ((i < 0 || i >= y.$length) ? $throwRuntimeError("index out of range") : y.$array[y.$offset + i])) { r = -1; } else if (((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i]) > ((i < 0 || i >= y.$length) ? $throwRuntimeError("index out of range") : 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") : z.$array[z.$offset + m] = mulAddVWW((x$1 = $subslice(z, 0, m), $subslice(new sliceType$1(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length)), $subslice(new sliceType$1(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") : _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") : z.$array[z.$offset + x$2] = addMulVVW((x$1 = $subslice(z, i, (i + x.$length >> 0)), $subslice(new sliceType$1(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length)), $subslice(new sliceType$1(x.$array), x.$offset, x.$offset + x.$length), d))); } _i++; } }; 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$1(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length)), $subslice(new sliceType$1(z.$array), z.$offset, z.$offset + z.$length), $subslice(new sliceType$1(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$1(x$2.$array), x$2.$offset, x$2.$offset + x$2.$length)), (x$3 = $subslice(z, n), $subslice(new sliceType$1(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$1(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length)), $subslice(new sliceType$1(z.$array), z.$offset, z.$offset + z.$length), $subslice(new sliceType$1(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$1(x$2.$array), x$2.$offset, x$2.$offset + x$2.$length)), (x$3 = $subslice(z, n), $subslice(new sliceType$1(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, (2 * n >> 0), ((2 * n >> 0) + n2 >> 0)); if (!((subVV($subslice(new sliceType$1(xd.$array), xd.$offset, xd.$offset + xd.$length), $subslice(new sliceType$1(x1.$array), x1.$offset, x1.$offset + x1.$length), $subslice(new sliceType$1(x0.$array), x0.$offset, x0.$offset + x0.$length)) === 0))) { s = -s; subVV($subslice(new sliceType$1(xd.$array), xd.$offset, xd.$offset + xd.$length), $subslice(new sliceType$1(x0.$array), x0.$offset, x0.$offset + x0.$length), $subslice(new sliceType$1(x1.$array), x1.$offset, x1.$offset + x1.$length)); } yd = $subslice(z, ((2 * n >> 0) + n2 >> 0), (3 * n >> 0)); if (!((subVV($subslice(new sliceType$1(yd.$array), yd.$offset, yd.$offset + yd.$length), $subslice(new sliceType$1(y0.$array), y0.$offset, y0.$offset + y0.$length), $subslice(new sliceType$1(y1.$array), y1.$offset, y1.$offset + y1.$length)) === 0))) { s = -s; subVV($subslice(new sliceType$1(yd.$array), yd.$offset, yd.$offset + yd.$length), $subslice(new sliceType$1(y1.$array), y1.$offset, y1.$offset + y1.$length), $subslice(new sliceType$1(y0.$array), y0.$offset, y0.$offset + y0.$length)); } p = $subslice(z, (n * 3 >> 0)); karatsuba(p, xd, yd); r = $subslice(z, (n * 4 >> 0)); $copySlice(r, $subslice(z, 0, (n * 2 >> 0))); 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$1)) === (x$2 = $subslice(y, 0, y.$capacity), $indexPtr(x$2.$array, x$2.$offset + (y.$capacity - 1 >> 0), ptrType$1)); }; 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$1(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length)), (x$2 = $subslice(z, i), $subslice(new sliceType$1(x$2.$array), x$2.$offset, x$2.$offset + x$2.$length)), $subslice(new sliceType$1(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$1(x$3.$array), x$3.$offset, x$3.$offset + x$3.$length)), (x$4 = $subslice(z, j), $subslice(new sliceType$1(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 z.make(0); } else if (n === 1) { return z.mulAddWW(x, (0 >= y.$length ? $throwRuntimeError("index out of range") : 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(6 * k >> 0, m + n >> 0)); karatsuba(z, x0, y0); z = $subslice(z, 0, (m + n >> 0)); $subslice(z, (2 * k >> 0)).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 = z.make(0); return [q, r]; } z = z.make(m); r = divWVW($subslice(new sliceType$1(z.$array), z.$offset, z.$offset + z.$length), 0, $subslice(new sliceType$1(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, _tuple, _tuple$1, q, r, r2, u, v, z, z2; q = nat.nil; r = nat.nil; z = this; if (v.$length === 0) { $panic(new $String("division by zero")); } if (u.cmp(v) < 0) { q = z.make(0); r = z2.set(u); return [q, r]; } if (v.$length === 1) { r2 = 0; _tuple = z.divW(u, (0 >= v.$length ? $throwRuntimeError("index out of range") : v.$array[v.$offset + 0])); q = _tuple[0]; r2 = _tuple[1]; r = z2.setWord(r2); return [q, r]; } _tuple$1 = z.divLarge(z2, u, v); q = _tuple$1[0]; r = _tuple$1[1]; return [q, r]; }; $ptrType(nat).prototype.div = function(z2, u, v) { return this.$get().div(z2, u, v); }; nat.prototype.divLarge = function(u, uIn, v) { var $ptr, _index, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, c, c$1, j, m, n, prevRhat, q, qhat, qhatv, r, rhat, shift, u, uIn, v, v1, 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, x1, x2, z; 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); qhatv = $makeSlice(nat, (n + 1 >> 0)); if (alias(u, uIn) || alias(u, v)) { u = nat.nil; } u = u.make(uIn.$length + 1 >> 0); u.clear(); shift = leadingZeros((x = n - 1 >> 0, ((x < 0 || x >= v.$length) ? $throwRuntimeError("index out of range") : v.$array[v.$offset + x]))); if (shift > 0) { v1 = $makeSlice(nat, n); shlVU($subslice(new sliceType$1(v1.$array), v1.$offset, v1.$offset + v1.$length), $subslice(new sliceType$1(v.$array), v.$offset, v.$offset + v.$length), shift); v = v1; } (x$2 = uIn.$length, ((x$2 < 0 || x$2 >= u.$length) ? $throwRuntimeError("index out of range") : u.$array[u.$offset + x$2] = shlVU((x$1 = $subslice(u, 0, uIn.$length), $subslice(new sliceType$1(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length)), $subslice(new sliceType$1(uIn.$array), uIn.$offset, uIn.$offset + uIn.$length), shift))); j = m; while (true) { if (!(j >= 0)) { break; } qhat = 4294967295; if (!(((x$3 = j + n >> 0, ((x$3 < 0 || x$3 >= u.$length) ? $throwRuntimeError("index out of range") : u.$array[u.$offset + x$3])) === (x$4 = n - 1 >> 0, ((x$4 < 0 || x$4 >= v.$length) ? $throwRuntimeError("index out of range") : v.$array[v.$offset + x$4]))))) { rhat = 0; _tuple = divWW((x$5 = j + n >> 0, ((x$5 < 0 || x$5 >= u.$length) ? $throwRuntimeError("index out of range") : u.$array[u.$offset + x$5])), (x$6 = (j + n >> 0) - 1 >> 0, ((x$6 < 0 || x$6 >= u.$length) ? $throwRuntimeError("index out of range") : u.$array[u.$offset + x$6])), (x$7 = n - 1 >> 0, ((x$7 < 0 || x$7 >= v.$length) ? $throwRuntimeError("index out of range") : v.$array[v.$offset + x$7]))); qhat = _tuple[0]; rhat = _tuple[1]; _tuple$1 = mulWW(qhat, (x$8 = n - 2 >> 0, ((x$8 < 0 || x$8 >= v.$length) ? $throwRuntimeError("index out of range") : v.$array[v.$offset + x$8]))); x1 = _tuple$1[0]; x2 = _tuple$1[1]; while (true) { if (!(greaterThan(x1, x2, rhat, (x$9 = (j + n >> 0) - 2 >> 0, ((x$9 < 0 || x$9 >= u.$length) ? $throwRuntimeError("index out of range") : u.$array[u.$offset + x$9]))))) { break; } qhat = qhat - (1) >>> 0; prevRhat = rhat; rhat = rhat + ((x$10 = n - 1 >> 0, ((x$10 < 0 || x$10 >= v.$length) ? $throwRuntimeError("index out of range") : v.$array[v.$offset + x$10]))) >>> 0; if (rhat < prevRhat) { break; } _tuple$2 = mulWW(qhat, (x$11 = n - 2 >> 0, ((x$11 < 0 || x$11 >= v.$length) ? $throwRuntimeError("index out of range") : v.$array[v.$offset + x$11]))); x1 = _tuple$2[0]; x2 = _tuple$2[1]; } } ((n < 0 || n >= qhatv.$length) ? $throwRuntimeError("index out of range") : qhatv.$array[qhatv.$offset + n] = mulAddVWW((x$12 = $subslice(qhatv, 0, n), $subslice(new sliceType$1(x$12.$array), x$12.$offset, x$12.$offset + x$12.$length)), $subslice(new sliceType$1(v.$array), v.$offset, v.$offset + v.$length), qhat, 0)); c = subVV((x$13 = $subslice(u, j, (j + qhatv.$length >> 0)), $subslice(new sliceType$1(x$13.$array), x$13.$offset, x$13.$offset + x$13.$length)), (x$14 = $subslice(u, j), $subslice(new sliceType$1(x$14.$array), x$14.$offset, x$14.$offset + x$14.$length)), $subslice(new sliceType$1(qhatv.$array), qhatv.$offset, qhatv.$offset + qhatv.$length)); if (!((c === 0))) { c$1 = addVV((x$15 = $subslice(u, j, (j + n >> 0)), $subslice(new sliceType$1(x$15.$array), x$15.$offset, x$15.$offset + x$15.$length)), (x$16 = $subslice(u, j), $subslice(new sliceType$1(x$16.$array), x$16.$offset, x$16.$offset + x$16.$length)), $subslice(new sliceType$1(v.$array), v.$offset, v.$offset + v.$length)); _index = j + n >> 0; ((_index < 0 || _index >= u.$length) ? $throwRuntimeError("index out of range") : u.$array[u.$offset + _index] = ((_index < 0 || _index >= u.$length) ? $throwRuntimeError("index out of range") : u.$array[u.$offset + _index]) + (c$1) >>> 0); qhat = qhat - (1) >>> 0; } ((j < 0 || j >= q.$length) ? $throwRuntimeError("index out of range") : q.$array[q.$offset + j] = qhat); j = j - (1) >> 0; } q = q.norm(); shrVU($subslice(new sliceType$1(u.$array), u.$offset, u.$offset + u.$length), $subslice(new sliceType$1(u.$array), u.$offset, u.$offset + u.$length), shift); r = u.norm(); _tmp = q; _tmp$1 = r; q = _tmp; r = _tmp$1; return [q, r]; }; $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 (i * 32 >> 0) + bitLen(((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i])) >> 0; } return 0; }; $ptrType(nat).prototype.bitLen = function() { return this.$get().bitLen(); }; hexValue = function(ch) { var $ptr, ch, d; d = 37; if (48 <= ch && ch <= 57) { d = ((ch - 48 >> 0) >> 0); } else if (97 <= ch && ch <= 122) { d = (((ch - 97 >> 0) + 10 >> 0) >> 0); } else if (65 <= ch && ch <= 90) { d = (((ch - 65 >> 0) + 10 >> 0) >> 0); } return (d >>> 0); }; nat.prototype.scan = function(r, base) { var $ptr, _q, _r, _r$1, _r$2, _r$3, _r$4, _ref, _ref$1, _tuple, _tuple$1, _tuple$2, _tuple$3, b, base, bb, ch, d, dd, err, max$1, r, x, z, $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; _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; b = $f.b; base = $f.base; bb = $f.bb; ch = $f.ch; d = $f.d; dd = $f.dd; err = $f.err; max$1 = $f.max$1; 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 (base < 0 || (base === 1) || 36 < base) { return [z, 0, errors.New("illegal number base")]; } _r = r.ReadRune(); /* */ $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[2]; if (!($interfaceIsEqual(err, $ifaceNil))) { return [z, 0, err]; } b = (base >>> 0); /* */ if (base === 0) { $s = 2; continue; } /* */ $s = 3; continue; /* if (base === 0) { */ case 2: b = 10; /* */ if (ch === 48) { $s = 4; continue; } /* */ $s = 5; continue; /* if (ch === 48) { */ case 4: _r$1 = r.ReadRune(); /* */ $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; ch = _tuple$1[0]; err = _tuple$1[2]; _ref = err; /* */ if ($interfaceIsEqual(_ref, $ifaceNil)) { $s = 7; continue; } /* */ if ($interfaceIsEqual(_ref, io.EOF)) { $s = 8; continue; } /* */ $s = 9; continue; /* if ($interfaceIsEqual(_ref, $ifaceNil)) { */ case 7: b = 8; _ref$1 = ch; if (_ref$1 === 120 || _ref$1 === 88) { b = 16; } else if (_ref$1 === 98 || _ref$1 === 66) { b = 2; } /* */ if ((b === 2) || (b === 16)) { $s = 11; continue; } /* */ $s = 12; continue; /* if ((b === 2) || (b === 16)) { */ case 11: _r$2 = r.ReadRune(); /* */ $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; ch = _tuple$2[0]; err = _tuple$2[2]; /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 14; continue; } /* */ $s = 15; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 14: return [z, 0, err]; /* } */ case 15: /* } */ case 12: $s = 10; continue; /* } else if ($interfaceIsEqual(_ref, io.EOF)) { */ case 8: return [z.make(0), 10, $ifaceNil]; $s = 10; continue; /* } else { */ case 9: return [z, 10, err]; /* } */ case 10: /* } */ case 5: /* } */ case 3: z = z.make(0); bb = 1; dd = 0; max$1 = (_q = 4294967295 / b, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")); /* while (true) { */ case 16: d = hexValue(ch); /* */ if (d >= b) { $s = 18; continue; } /* */ $s = 19; continue; /* if (d >= b) { */ case 18: _r$3 = r.UnreadRune(); /* */ $s = 20; case 20: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } _r$3; /* break; */ $s = 17; continue; /* } */ case 19: if (bb <= max$1) { bb = (x = b, (((bb >>> 16 << 16) * x >>> 0) + (bb << 16 >>> 16) * x) >>> 0); dd = ((((dd >>> 16 << 16) * b >>> 0) + (dd << 16 >>> 16) * b) >>> 0) + d >>> 0; } else { z = z.mulAddWW(z, bb, dd); bb = b; dd = d; } _r$4 = r.ReadRune(); /* */ $s = 21; case 21: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } _tuple$3 = _r$4; ch = _tuple$3[0]; err = _tuple$3[2]; /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 22; continue; } /* */ $s = 23; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 22: if (!($interfaceIsEqual(err, io.EOF))) { return [z, (b >> 0), err]; } /* break; */ $s = 17; continue; /* } */ case 23: /* } */ $s = 16; continue; case 17: if (bb > 1) { z = z.mulAddWW(z, bb, dd); } else if ((base === 0) && (b === 8)) { return [z, 10, $ifaceNil]; } else if (!((base === 0)) || !((b === 8))) { return [z, (b >> 0), errors.New("syntax error scanning number")]; } return [z.norm(), (b >> 0), $ifaceNil]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: nat.prototype.scan }; } $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._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.b = b; $f.base = base; $f.bb = bb; $f.ch = ch; $f.d = d; $f.dd = dd; $f.err = err; $f.max$1 = max$1; $f.r = r; $f.x = x; $f.z = z; $f.$s = $s; $f.$r = $r; return $f; }; $ptrType(nat).prototype.scan = function(r, base) { return this.$get().scan(r, base); }; nat.prototype.decimalString = function() { var $ptr, x; x = this; return x.string("0123456789abcdefghijklmnopqrstuvwxyz".substring(0, 10)); }; $ptrType(nat).prototype.decimalString = function() { return this.$get().decimalString(); }; nat.prototype.string = function(charset$1) { var $ptr, _q, b, bb, charset$1, i, k, mask, max$1, nbits, ndigits, q, s, shift, table, w, x, x$1, y, y$1, y$2, y$3, y$4, zero; x = this; b = (charset$1.length >>> 0); if (b < 2 || false) { $panic(new $String("illegal base")); } else if (x.$length === 0) { return $encodeRune(charset$1.charCodeAt(0)); } i = (x.bitLen() / math.Log2(b) >> 0) + 1 >> 0; s = $makeSlice(sliceType, i); if (b === ((b & (-b >>> 0)) >>> 0)) { shift = trailingZeroBits(b); mask = ((y = shift, y < 32 ? (1 << y) : 0) >>> 0) - 1 >>> 0; w = (0 >= x.$length ? $throwRuntimeError("index out of range") : 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") : s.$array[s.$offset + i] = charset$1.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") : 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") : x.$array[x.$offset + k]) << y$2) : 0) >>> 0))) >>> 0; i = i - (1) >> 0; ((i < 0 || i >= s.$length) ? $throwRuntimeError("index out of range") : s.$array[s.$offset + i] = charset$1.charCodeAt(((w & mask) >>> 0))); w = (y$3 = ((shift - nbits >>> 0)), y$3 < 32 ? (((k < 0 || k >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + k]) >>> y$3) : 0) >>> 0; nbits = 32 - ((shift - nbits >>> 0)) >>> 0; } k = k + (1) >> 0; } while (true) { if (!(nbits >= 0 && !((w === 0)))) { break; } i = i - (1) >> 0; ((i < 0 || i >= s.$length) ? $throwRuntimeError("index out of range") : s.$array[s.$offset + i] = charset$1.charCodeAt(((w & mask) >>> 0))); w = (y$4 = (shift), y$4 < 32 ? (w >>> y$4) : 0) >>> 0; nbits = nbits - (shift) >>> 0; } } else { bb = b; ndigits = 1; max$1 = (_q = 4294967295 / b, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")); while (true) { if (!(bb <= max$1)) { break; } ndigits = ndigits + (1) >> 0; bb = (x$1 = b, (((bb >>> 16 << 16) * x$1 >>> 0) + (bb << 16 >>> 16) * x$1) >>> 0); } table = divisors(x.$length, b, ndigits, bb); q = nat.nil.set(x); q.convertWords(s, charset$1, b, ndigits, bb, table); i = 0; zero = charset$1.charCodeAt(0); while (true) { if (!(((i < 0 || i >= s.$length) ? $throwRuntimeError("index out of range") : s.$array[s.$offset + i]) === zero)) { break; } i = i + (1) >> 0; } } return $bytesToString($subslice(s, i)); }; $ptrType(nat).prototype.string = function(charset$1) { return this.$get().string(charset$1); }; nat.prototype.convertWords = function(s, charset$1, b, ndigits, bb, table) { var $ptr, _q, _q$1, _r, _tuple, _tuple$1, _tuple$2, b, bb, charset$1, h, i, index, j, j$1, maxLength, minLength, ndigits, q, r, r$1, s, t, table, x, zero; q = this; if (!(table === sliceType$3.nil)) { r = nat.nil; index = table.$length - 1 >> 0; while (true) { if (!(q.$length > leafSize)) { break; } 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") : table.$array[table.$offset + x])).nbits > minLength)) { break; } index = index - (1) >> 0; } if (((index < 0 || index >= table.$length) ? $throwRuntimeError("index out of range") : table.$array[table.$offset + index]).nbits >= maxLength && ((index < 0 || index >= table.$length) ? $throwRuntimeError("index out of range") : table.$array[table.$offset + index]).bbb.cmp(q) >= 0) { index = index - (1) >> 0; if (index < 0) { $panic(new $String("internal inconsistency")); } } _tuple = q.div(r, q, ((index < 0 || index >= table.$length) ? $throwRuntimeError("index out of range") : table.$array[table.$offset + index]).bbb); q = _tuple[0]; r = _tuple[1]; h = s.$length - ((index < 0 || index >= table.$length) ? $throwRuntimeError("index out of range") : table.$array[table.$offset + index]).ndigits >> 0; r.convertWords($subslice(s, h), charset$1, b, ndigits, bb, $subslice(table, 0, index)); s = $subslice(s, 0, h); } } 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") : s.$array[s.$offset + i] = charset$1.charCodeAt((((r$1 - (t << 3 >>> 0) >>> 0) - t >>> 0) - t >>> 0))); 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") : s.$array[s.$offset + i] = charset$1.charCodeAt((_r = r$1 % b, _r === _r ? _r : $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; } } } zero = charset$1.charCodeAt(0); while (true) { if (!(i > 0)) { break; } i = i - (1) >> 0; ((i < 0 || i >= s.$length) ? $throwRuntimeError("index out of range") : s.$array[s.$offset + i] = zero); } }; $ptrType(nat).prototype.convertWords = function(s, charset$1, b, ndigits, bb, table) { return this.$get().convertWords(s, charset$1, b, ndigits, bb, table); }; nat.prototype.expWW = function(x, y) { var $ptr, x, y, z; z = this; return z.expNN(nat.nil.setWord(x), nat.nil.setWord(y), nat.nil); }; $ptrType(nat).prototype.expWW = function(x, y) { return this.$get().expWW(x, y); }; divisors = function(m, b, ndigits, bb) { var $ptr, b, bb, i, k, larger, m, ndigits, table, words, x, x$1, x$2, x$3, y; if ((leafSize === 0) || m <= leafSize) { 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") : table.$array[table.$offset + x])).ndigits === 0) { larger = nat.nil; i = 0; while (true) { if (!(i < k)) { break; } if (((i < 0 || i >= table.$length) ? $throwRuntimeError("index out of range") : table.$array[table.$offset + i]).ndigits === 0) { if (i === 0) { (0 >= table.$length ? $throwRuntimeError("index out of range") : table.$array[table.$offset + 0]).bbb = nat.nil.expWW(bb, (leafSize >>> 0)); (0 >= table.$length ? $throwRuntimeError("index out of range") : table.$array[table.$offset + 0]).ndigits = ndigits * leafSize >> 0; } else { ((i < 0 || i >= table.$length) ? $throwRuntimeError("index out of range") : 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") : table.$array[table.$offset + x$1])).bbb, (x$2 = i - 1 >> 0, ((x$2 < 0 || x$2 >= table.$length) ? $throwRuntimeError("index out of range") : table.$array[table.$offset + x$2])).bbb); ((i < 0 || i >= table.$length) ? $throwRuntimeError("index out of range") : table.$array[table.$offset + i]).ndigits = 2 * (x$3 = i - 1 >> 0, ((x$3 < 0 || x$3 >= table.$length) ? $throwRuntimeError("index out of range") : table.$array[table.$offset + x$3])).ndigits >> 0; } larger = nat.nil.set(((i < 0 || i >= table.$length) ? $throwRuntimeError("index out of range") : table.$array[table.$offset + i]).bbb); while (true) { if (!(mulAddVWW($subslice(new sliceType$1(larger.$array), larger.$offset, larger.$offset + larger.$length), $subslice(new sliceType$1(larger.$array), larger.$offset, larger.$offset + larger.$length), b, 0) === 0)) { break; } ((i < 0 || i >= table.$length) ? $throwRuntimeError("index out of range") : table.$array[table.$offset + i]).bbb = ((i < 0 || i >= table.$length) ? $throwRuntimeError("index out of range") : table.$array[table.$offset + i]).bbb.set(larger); ((i < 0 || i >= table.$length) ? $throwRuntimeError("index out of range") : table.$array[table.$offset + i]).ndigits = ((i < 0 || i >= table.$length) ? $throwRuntimeError("index out of range") : table.$array[table.$offset + i]).ndigits + (1) >> 0; } ((i < 0 || i >= table.$length) ? $throwRuntimeError("index out of range") : table.$array[table.$offset + i]).nbits = ((i < 0 || i >= table.$length) ? $throwRuntimeError("index out of range") : table.$array[table.$offset + i]).bbb.bitLen(); } i = i + (1) >> 0; } } if (b === 10) { cacheBase10.Mutex.Unlock(); } return table; }; trailingZeroBits = function(x) { var $ptr, _ref, x, x$1, x$2, x$3, x$4; _ref = 32; if (_ref === 32) { return ((x$1 = ((x$2 = ((x & (-x >>> 0)) >>> 0), (((x$2 >>> 16 << 16) * 125613361 >>> 0) + (x$2 << 16 >>> 16) * 125613361) >>> 0)) >>> 27 >>> 0, ((x$1 < 0 || x$1 >= deBruijn32Lookup.$length) ? $throwRuntimeError("index out of range") : deBruijn32Lookup.$array[deBruijn32Lookup.$offset + x$1])) >>> 0); } else if (_ref === 64) { return ((x$3 = ((x$4 = ((x & (-x >>> 0)) >>> 0), (((x$4 >>> 16 << 16) * 3033172745 >>> 0) + (x$4 << 16 >>> 16) * 3033172745) >>> 0)) >>> 58 >>> 0, ((x$3 < 0 || x$3 >= deBruijn64Lookup.$length) ? $throwRuntimeError("index out of range") : deBruijn64Lookup.$array[deBruijn64Lookup.$offset + x$3])) >>> 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") : 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") : 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 z.make(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") : z.$array[z.$offset + n] = shlVU((x$1 = $subslice(z, (n - m >> 0), n), $subslice(new sliceType$1(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length)), $subslice(new sliceType$1(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 z.make(0); } z = z.make(n); shrVU($subslice(new sliceType$1(z.$array), z.$offset, z.$offset + z.$length), (x$1 = $subslice(x, (m - n >> 0)), $subslice(new sliceType$1(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, _q, _r, _ref, 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; _ref = b; if (_ref === 0) { z = z.make(n); $copySlice(z, x); if (j >= n) { return z; } ((j < 0 || j >= z.$length) ? $throwRuntimeError("index out of range") : z.$array[z.$offset + j] = (((j < 0 || j >= z.$length) ? $throwRuntimeError("index out of range") : z.$array[z.$offset + j]) & ~(m)) >>> 0); return z.norm(); } else if (_ref === 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") : z.$array[z.$offset + j] = (((j < 0 || j >= z.$length) ? $throwRuntimeError("index out of range") : 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, y, z; z = this; j = ((_q = i / 32, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")) >> 0); if (j >= z.$length) { return 0; } return (((((y = ((_r = i % 32, _r === _r ? _r : $throwRuntimeError("integer divide by zero"))), y < 32 ? (((j < 0 || j >= z.$length) ? $throwRuntimeError("index out of range") : z.$array[z.$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") : z.$array[z.$offset + i] = (((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i]) & ((i < 0 || i >= y.$length) ? $throwRuntimeError("index out of range") : 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") : z.$array[z.$offset + i] = (((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i]) & ~((i < 0 || i >= y.$length) ? $throwRuntimeError("index out of range") : 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") : z.$array[z.$offset + i] = (((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i]) | ((i < 0 || i >= y.$length) ? $throwRuntimeError("index out of range") : 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") : z.$array[z.$offset + i] = (((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i]) ^ ((i < 0 || i >= y.$length) ? $throwRuntimeError("index out of range") : 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$1(q.$array), q.$offset, q.$offset + q.$length), 0, $subslice(new sliceType$1(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, _i, _i$1, _index, _r, _r$1, _r$2, _r$3, _ref, _ref$1, _ref$2, 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; _i = $f._i; _i$1 = $f._i$1; _index = $f._index; _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; 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: _ref = 32; /* */ if (_ref === 32) { $s = 3; continue; } /* */ if (_ref === 64) { $s = 4; continue; } /* */ $s = 5; continue; /* if (_ref === 32) { */ case 3: _ref$1 = z; _i = 0; /* while (true) { */ case 7: /* if (!(_i < _ref$1.$length)) { break; } */ if(!(_i < _ref$1.$length)) { $s = 8; continue; } i = _i; _r$1 = rand$1.Uint32(); /* */ $s = 9; case 9: 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") : z.$array[z.$offset + i] = (_r$1 >>> 0)); _i++; /* } */ $s = 7; continue; case 8: $s = 6; continue; /* } else if (_ref === 64) { */ case 4: _ref$2 = z; _i$1 = 0; /* while (true) { */ case 10: /* if (!(_i$1 < _ref$2.$length)) { break; } */ if(!(_i$1 < _ref$2.$length)) { $s = 11; continue; } i$1 = _i$1; _r$2 = rand$1.Uint32(); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } _r$3 = rand$1.Uint32(); /* */ $s = 13; case 13: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } ((i$1 < 0 || i$1 >= z.$length) ? $throwRuntimeError("index out of range") : z.$array[z.$offset + i$1] = ((_r$2 >>> 0) | ((_r$3 >>> 0) << 32 >>> 0)) >>> 0); _i$1++; /* } */ $s = 10; continue; case 11: $s = 6; continue; /* } else { */ case 5: $panic(new $String("unknown word size")); /* } */ case 6: _index = limit.$length - 1 >> 0; ((_index < 0 || _index >= z.$length) ? $throwRuntimeError("index out of range") : z.$array[z.$offset + _index] = (((_index < 0 || _index >= z.$length) ? $throwRuntimeError("index out of range") : z.$array[z.$offset + _index]) & (mask)) >>> 0); if (z.cmp(limit) < 0) { /* break; */ $s = 2; continue; } /* } */ $s = 1; continue; case 2: return z.norm(); /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: nat.prototype.random }; } $f.$ptr = $ptr; $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._r$3 = _r$3; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $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, _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, i, j, j$1, m, q, r, shift, v, w, x, x$1, y, y$1, y$2, y$3, z, zz; z = this; if (alias(z, x) || alias(z, y)) { z = nat.nil; } if ((m.$length === 1) && ((0 >= m.$length ? $throwRuntimeError("index out of range") : m.$array[m.$offset + 0]) === 1)) { return z.setWord(0); } if (y.$length === 0) { return z.setWord(1); } if (!((m.$length === 0))) { z = z.make(m.$length); } z = z.set(x); if (x.$length > 1 && y.$length > 1 && m.$length > 0) { return z.expNNWindowed(x, y, m); } v = (x$1 = y.$length - 1 >> 0, ((x$1 < 0 || x$1 >= y.$length) ? $throwRuntimeError("index out of range") : y.$array[y.$offset + x$1])); shift = leadingZeros(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) { if (!(j < w)) { break; } 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))) { _tuple = zz.div(r, z, m); zz = _tuple[0]; r = _tuple[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; } v = (y$2 = (1), y$2 < 32 ? (v << y$2) : 0) >>> 0; j = j + (1) >> 0; } i = y.$length - 2 >> 0; while (true) { if (!(i >= 0)) { break; } v = ((i < 0 || i >= y.$length) ? $throwRuntimeError("index out of range") : y.$array[y.$offset + i]); j$1 = 0; while (true) { if (!(j$1 < 32)) { break; } 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))) { _tuple$1 = zz.div(r, z, m); zz = _tuple$1[0]; r = _tuple$1[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; } v = (y$3 = (1), y$3 < 32 ? (v << y$3) : 0) >>> 0; j$1 = j$1 + (1) >> 0; } i = i - (1) >> 0; } return z.norm(); }; $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, _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; z = this; _tmp = nat.nil; _tmp$1 = nat.nil; zz = _tmp; r = _tmp$1; powers = $clone(arrayType$1.zero(), arrayType$1); powers[0] = natOne; powers[1] = x; i = 2; while (true) { if (!(i < 16)) { break; } _tmp$2 = $indexPtr(powers, (_q = i / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")), ptrType$2); _tmp$3 = $indexPtr(powers, i, ptrType$2); _tmp$4 = $indexPtr(powers, (i + 1 >> 0), ptrType$2); p2 = _tmp$2; p = _tmp$3; p1 = _tmp$4; p.$set(p.mul(p2.$get(), p2.$get())); _tuple = zz.div(r, p.$get(), m); 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)); _tuple$1 = zz.div(r, p1.$get(), m); 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; } z = z.setWord(1); i$1 = y.$length - 1 >> 0; while (true) { if (!(i$1 >= 0)) { break; } yi = ((i$1 < 0 || i$1 >= y.$length) ? $throwRuntimeError("index out of range") : y.$array[y.$offset + i$1]); j = 0; while (true) { if (!(j < 32)) { break; } if (!((i$1 === (y.$length - 1 >> 0))) || !((j === 0))) { zz = zz.mul(z, z); _tmp$9 = z; _tmp$10 = zz; zz = _tmp$9; z = _tmp$10; _tuple$2 = zz.div(r, z, m); 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; _tuple$3 = zz.div(r, z, m); 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; _tuple$4 = zz.div(r, z, m); 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; _tuple$5 = zz.div(r, z, m); zz = _tuple$5[0]; r = _tuple$5[1]; _tmp$23 = r; _tmp$24 = z; z = _tmp$23; r = _tmp$24; } zz = zz.mul(z, (x$1 = yi >>> 28 >>> 0, ((x$1 < 0 || x$1 >= powers.length) ? $throwRuntimeError("index out of range") : powers[x$1]))); _tmp$25 = z; _tmp$26 = zz; zz = _tmp$25; z = _tmp$26; _tuple$6 = zz.div(r, z, m); 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; } i$1 = i$1 - (1) >> 0; } return z.norm(); }; $ptrType(nat).prototype.expNNWindowed = function(x, y, m) { return this.$get().expNNWindowed(x, y, m); }; nat.prototype.probablyPrime = function(reps) { var $ptr, _r, _r$1, _r$10, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _tmp, _tmp$1, _tmp$2, _tuple, i, j, k, n, nm1, nm3, nm3Len, q, quotient, r, 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$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; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tuple = $f._tuple; 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; r = $f.r; 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; if (n.$length === 0) { return false; } if (n.$length === 1) { if ((0 >= n.$length ? $throwRuntimeError("index out of range") : n.$array[n.$offset + 0]) < 2) { return false; } if ((_r = (0 >= n.$length ? $throwRuntimeError("index out of range") : n.$array[n.$offset + 0]) % 2, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) === 0) { return (0 >= n.$length ? $throwRuntimeError("index out of range") : n.$array[n.$offset + 0]) === 2; } _ref = (0 >= n.$length ? $throwRuntimeError("index out of range") : n.$array[n.$offset + 0]); if (_ref === 3 || _ref === 5 || _ref === 7 || _ref === 11 || _ref === 13 || _ref === 17 || _ref === 19 || _ref === 23 || _ref === 29 || _ref === 31 || _ref === 37 || _ref === 41 || _ref === 43 || _ref === 47 || _ref === 53) { return true; } } r = 0; _ref$1 = 32; if (_ref$1 === 32) { r = n.modW(3234846615); } else if (_ref$1 === 64) { r = n.modW(820596253); } else { $panic(new $String("Unknown word size")); } if (((_r$1 = r % 3, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) === 0) || ((_r$2 = r % 5, _r$2 === _r$2 ? _r$2 : $throwRuntimeError("integer divide by zero")) === 0) || ((_r$3 = r % 7, _r$3 === _r$3 ? _r$3 : $throwRuntimeError("integer divide by zero")) === 0) || ((_r$4 = r % 11, _r$4 === _r$4 ? _r$4 : $throwRuntimeError("integer divide by zero")) === 0) || ((_r$5 = r % 13, _r$5 === _r$5 ? _r$5 : $throwRuntimeError("integer divide by zero")) === 0) || ((_r$6 = r % 17, _r$6 === _r$6 ? _r$6 : $throwRuntimeError("integer divide by zero")) === 0) || ((_r$7 = r % 19, _r$7 === _r$7 ? _r$7 : $throwRuntimeError("integer divide by zero")) === 0) || ((_r$8 = r % 23, _r$8 === _r$8 ? _r$8 : $throwRuntimeError("integer divide by zero")) === 0) || ((_r$9 = r % 29, _r$9 === _r$9 ? _r$9 : $throwRuntimeError("integer divide by zero")) === 0)) { return false; } 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") : 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; } _r$10 = x$1.random(rand$1, nm3, nm3Len); /* */ $s = 3; case 3: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } x$1 = _r$10; x$1 = x$1.add(x$1, natTwo); y = y.expNN(x$1, q, n); if ((y.cmp(natOne) === 0) || (y.cmp(nm1) === 0)) { i = i + (1) >> 0; /* continue; */ $s = 1; continue; } j = 1; while (true) { if (!(j < k)) { break; } y = y.mul(y, y); _tuple = quotient.div(y, y, n); 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) { return false; } j = j + (1) >>> 0; } return false; /* } */ $s = 1; continue; case 2: return true; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: nat.prototype.probablyPrime }; } $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._ref = _ref; $f._ref$1 = _ref$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tuple = _tuple; $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.r = r; $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.probablyPrime = function(reps) { return this.$get().probablyPrime(reps); }; 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") : _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") : 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") : 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") : 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") : 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") : z.$array[z.$offset + k] = d); } return z.norm(); }; $ptrType(nat).prototype.setBytes = function(buf) { return this.$get().setBytes(buf); }; ptrType.methods = [{prop: "Sign", name: "Sign", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "SetInt64", name: "SetInt64", pkg: "", typ: $funcType([$Int64], [ptrType], false)}, {prop: "SetUint64", name: "SetUint64", pkg: "", typ: $funcType([$Uint64], [ptrType], false)}, {prop: "Set", name: "Set", pkg: "", typ: $funcType([ptrType], [ptrType], false)}, {prop: "Bits", name: "Bits", pkg: "", typ: $funcType([], [sliceType$1], false)}, {prop: "SetBits", name: "SetBits", pkg: "", typ: $funcType([sliceType$1], [ptrType], false)}, {prop: "Abs", name: "Abs", pkg: "", typ: $funcType([ptrType], [ptrType], false)}, {prop: "Neg", name: "Neg", pkg: "", typ: $funcType([ptrType], [ptrType], false)}, {prop: "Add", name: "Add", pkg: "", typ: $funcType([ptrType, ptrType], [ptrType], false)}, {prop: "Sub", name: "Sub", pkg: "", typ: $funcType([ptrType, ptrType], [ptrType], false)}, {prop: "Mul", name: "Mul", pkg: "", typ: $funcType([ptrType, ptrType], [ptrType], false)}, {prop: "MulRange", name: "MulRange", pkg: "", typ: $funcType([$Int64, $Int64], [ptrType], false)}, {prop: "Binomial", name: "Binomial", pkg: "", typ: $funcType([$Int64, $Int64], [ptrType], false)}, {prop: "Quo", name: "Quo", pkg: "", typ: $funcType([ptrType, ptrType], [ptrType], false)}, {prop: "Rem", name: "Rem", pkg: "", typ: $funcType([ptrType, ptrType], [ptrType], false)}, {prop: "QuoRem", name: "QuoRem", pkg: "", typ: $funcType([ptrType, ptrType, ptrType], [ptrType, ptrType], false)}, {prop: "Div", name: "Div", pkg: "", typ: $funcType([ptrType, ptrType], [ptrType], false)}, {prop: "Mod", name: "Mod", pkg: "", typ: $funcType([ptrType, ptrType], [ptrType], false)}, {prop: "DivMod", name: "DivMod", pkg: "", typ: $funcType([ptrType, ptrType, ptrType], [ptrType, ptrType], false)}, {prop: "Cmp", name: "Cmp", pkg: "", typ: $funcType([ptrType], [$Int], 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.RuneScanner, $Int], [ptrType, $Int, $error], false)}, {prop: "Scan", name: "Scan", pkg: "", typ: $funcType([fmt.ScanState, $Int32], [$error], 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, $Bool], false)}, {prop: "SetBytes", name: "SetBytes", pkg: "", typ: $funcType([sliceType], [ptrType], false)}, {prop: "Bytes", name: "Bytes", pkg: "", typ: $funcType([], [sliceType], false)}, {prop: "BitLen", name: "BitLen", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Exp", name: "Exp", pkg: "", typ: $funcType([ptrType, ptrType, ptrType], [ptrType], false)}, {prop: "GCD", name: "GCD", pkg: "", typ: $funcType([ptrType, ptrType, ptrType, ptrType], [ptrType], false)}, {prop: "binaryGCD", name: "binaryGCD", pkg: "math/big", typ: $funcType([ptrType, ptrType], [ptrType], false)}, {prop: "ProbablyPrime", name: "ProbablyPrime", pkg: "", typ: $funcType([$Int], [$Bool], false)}, {prop: "Rand", name: "Rand", pkg: "", typ: $funcType([ptrType$4, ptrType], [ptrType], false)}, {prop: "ModInverse", name: "ModInverse", pkg: "", typ: $funcType([ptrType, ptrType], [ptrType], false)}, {prop: "Lsh", name: "Lsh", pkg: "", typ: $funcType([ptrType, $Uint], [ptrType], false)}, {prop: "Rsh", name: "Rsh", pkg: "", typ: $funcType([ptrType, $Uint], [ptrType], false)}, {prop: "Bit", name: "Bit", pkg: "", typ: $funcType([$Int], [$Uint], false)}, {prop: "SetBit", name: "SetBit", pkg: "", typ: $funcType([ptrType, $Int, $Uint], [ptrType], false)}, {prop: "And", name: "And", pkg: "", typ: $funcType([ptrType, ptrType], [ptrType], false)}, {prop: "AndNot", name: "AndNot", pkg: "", typ: $funcType([ptrType, ptrType], [ptrType], false)}, {prop: "Or", name: "Or", pkg: "", typ: $funcType([ptrType, ptrType], [ptrType], false)}, {prop: "Xor", name: "Xor", pkg: "", typ: $funcType([ptrType, ptrType], [ptrType], false)}, {prop: "Not", name: "Not", pkg: "", typ: $funcType([ptrType], [ptrType], false)}, {prop: "GobEncode", name: "GobEncode", pkg: "", typ: $funcType([], [sliceType, $error], false)}, {prop: "GobDecode", name: "GobDecode", pkg: "", typ: $funcType([sliceType], [$error], false)}, {prop: "MarshalJSON", name: "MarshalJSON", pkg: "", typ: $funcType([], [sliceType, $error], false)}, {prop: "UnmarshalJSON", name: "UnmarshalJSON", pkg: "", typ: $funcType([sliceType], [$error], false)}, {prop: "MarshalText", name: "MarshalText", pkg: "", typ: $funcType([], [sliceType, $error], false)}, {prop: "UnmarshalText", name: "UnmarshalText", pkg: "", typ: $funcType([sliceType], [$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: "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: "scan", name: "scan", pkg: "math/big", typ: $funcType([io.RuneScanner, $Int], [nat, $Int, $error], false)}, {prop: "decimalString", name: "decimalString", pkg: "math/big", typ: $funcType([], [$String], false)}, {prop: "string", name: "string", pkg: "math/big", typ: $funcType([$String], [$String], false)}, {prop: "convertWords", name: "convertWords", pkg: "math/big", typ: $funcType([sliceType, $String, Word, $Int, Word, sliceType$3], [], false)}, {prop: "expWW", name: "expWW", pkg: "math/big", typ: $funcType([Word, Word], [nat], 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: "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$4, 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: "probablyPrime", name: "probablyPrime", pkg: "math/big", typ: $funcType([$Int], [$Bool], false)}, {prop: "bytes", name: "bytes", pkg: "math/big", typ: $funcType([sliceType], [$Int], false)}, {prop: "setBytes", name: "setBytes", pkg: "math/big", typ: $funcType([sliceType], [nat], false)}]; Int.init([{prop: "neg", name: "neg", pkg: "math/big", typ: $Bool, tag: ""}, {prop: "abs", name: "abs", pkg: "math/big", typ: nat, tag: ""}]); nat.init(Word); divisor.init([{prop: "bbb", name: "bbb", pkg: "math/big", typ: nat, tag: ""}, {prop: "nbits", name: "nbits", pkg: "math/big", typ: $Int, tag: ""}, {prop: "ndigits", name: "ndigits", pkg: "math/big", 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 = binary.$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 = nosync.$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; } $r = math.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = rand.$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; } cacheBase10 = new structType.ptr(); natOne = new nat([1]); intOne = new Int.ptr(false, natOne); natTwo = new nat([2]); karatsubaThreshold = 40; leafSize = 8; deBruijn32Lookup = new sliceType([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 = new sliceType([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]); /* */ } 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, p224LargeFieldElement, p256Curve, ptrType, ptrType$1, sliceType, sliceType$1, arrayType, arrayType$1, arrayType$2, arrayType$3, arrayType$4, arrayType$5, arrayType$6, mask, initonce, p384, p521, p224, p224P, p224ZeroModP31, p224ZeroModP63, p256, p256RInverse, p256One, p256One_ptr, p256Precomputed, p256Zero31, 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; io = $packages["io"]; big = $packages["math/big"]; sync = $packages["sync"]; Curve = $pkg.Curve = $newType(8, $kindInterface, "elliptic.Curve", "Curve", "crypto/elliptic", null); CurveParams = $pkg.CurveParams = $newType(0, $kindStruct, "elliptic.CurveParams", "CurveParams", "crypto/elliptic", function(P_, N_, B_, Gx_, Gy_, BitSize_) { 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; return; } this.P = P_; this.N = N_; this.B = B_; this.Gx = Gx_; this.Gy = Gy_; this.BitSize = BitSize_; }); p224Curve = $pkg.p224Curve = $newType(0, $kindStruct, "elliptic.p224Curve", "p224Curve", "crypto/elliptic", function(CurveParams_, gx_, gy_, b_) { this.$val = this; if (arguments.length === 0) { this.CurveParams = ptrType.nil; this.gx = p224FieldElement.zero(); this.gy = p224FieldElement.zero(); this.b = p224FieldElement.zero(); return; } this.CurveParams = CurveParams_; this.gx = gx_; this.gy = gy_; this.b = b_; }); p224FieldElement = $pkg.p224FieldElement = $newType(32, $kindArray, "elliptic.p224FieldElement", "p224FieldElement", "crypto/elliptic", null); p224LargeFieldElement = $pkg.p224LargeFieldElement = $newType(120, $kindArray, "elliptic.p224LargeFieldElement", "p224LargeFieldElement", "crypto/elliptic", null); p256Curve = $pkg.p256Curve = $newType(0, $kindStruct, "elliptic.p256Curve", "p256Curve", "crypto/elliptic", function(CurveParams_) { this.$val = this; if (arguments.length === 0) { this.CurveParams = ptrType.nil; return; } this.CurveParams = CurveParams_; }); ptrType = $ptrType(CurveParams); ptrType$1 = $ptrType(big.Int); sliceType = $sliceType($Uint8); sliceType$1 = $sliceType($Uint32); arrayType = $arrayType($Uint8, 28); arrayType$1 = $arrayType($Uint8, 32); arrayType$2 = $arrayType($Uint32, 9); arrayType$3 = $arrayType($Uint64, 17); arrayType$4 = $arrayType($Uint32, 18); arrayType$5 = $arrayType(arrayType$2, 3); arrayType$6 = $arrayType(arrayType$5, 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, curve, threeX, x, x3, y, y2; curve = this; y2 = new big.Int.ptr().Mul(y, y); y2.Mod(y2, curve.P); x3 = new big.Int.ptr().Mul(x, x); x3.Mul(x3, x); threeX = new big.Int.ptr().Lsh(x, 1); threeX.Add(threeX, x); x3.Sub(x3, threeX); x3.Add(x3, curve.B); x3.Mod(x3, curve.P); return x3.Cmp(y2) === 0; }; 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(); 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, _tmp, _tmp$1, curve, x, xOut, y, yOut, z, zinv, zinvsq; xOut = ptrType$1.nil; yOut = ptrType$1.nil; curve = this; if (z.Sign() === 0) { _tmp = new big.Int.ptr(); _tmp$1 = new big.Int.ptr(); xOut = _tmp; yOut = _tmp$1; return [xOut, yOut]; } zinv = new big.Int.ptr().ModInverse(z, curve.P); zinvsq = new big.Int.ptr().Mul(zinv, zinv); xOut = new big.Int.ptr().Mul(x, zinvsq); xOut.Mod(xOut, curve.P); zinvsq.Mul(zinvsq, zinv); yOut = new big.Int.ptr().Mul(y, zinvsq); yOut.Mod(yOut, curve.P); return [xOut, yOut]; }; 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, _tuple, curve, x1, x2, y1, y2, z1, z2; curve = this; z1 = zForAffine(x1, y1); z2 = zForAffine(x2, y2); _tuple = curve.addJacobian(x1, y1, z1, x2, y2, z2); return curve.affineFromJacobian(_tuple[0], _tuple[1], _tuple[2]); }; 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, _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; curve = this; _tmp = new big.Int.ptr(); _tmp$1 = new big.Int.ptr(); _tmp$2 = new big.Int.ptr(); x3 = _tmp; y3 = _tmp$1; z3 = _tmp$2; if (z1.Sign() === 0) { x3.Set(x2); y3.Set(y2); z3.Set(z2); return [x3, y3, z3]; } if (z2.Sign() === 0) { x3.Set(x1); y3.Set(y1); z3.Set(z1); return [x3, y3, z3]; } z1z1 = new big.Int.ptr().Mul(z1, z1); z1z1.Mod(z1z1, curve.P); z2z2 = new big.Int.ptr().Mul(z2, z2); z2z2.Mod(z2z2, curve.P); u1 = new big.Int.ptr().Mul(x1, z2z2); u1.Mod(u1, curve.P); u2 = new big.Int.ptr().Mul(x2, z1z1); u2.Mod(u2, curve.P); h = new big.Int.ptr().Sub(u2, u1); xEqual = h.Sign() === 0; if (h.Sign() === -1) { h.Add(h, curve.P); } i = new big.Int.ptr().Lsh(h, 1); i.Mul(i, i); j = new big.Int.ptr().Mul(h, i); s1 = new big.Int.ptr().Mul(y1, z2); s1.Mul(s1, z2z2); s1.Mod(s1, curve.P); s2 = new big.Int.ptr().Mul(y2, z1); s2.Mul(s2, z1z1); s2.Mod(s2, curve.P); r = new big.Int.ptr().Sub(s2, s1); if (r.Sign() === -1) { r.Add(r, curve.P); } yEqual = r.Sign() === 0; if (xEqual && yEqual) { return curve.doubleJacobian(x1, y1, z1); } r.Lsh(r, 1); v = new big.Int.ptr().Mul(u1, i); x3.Set(r); x3.Mul(x3, x3); x3.Sub(x3, j); x3.Sub(x3, v); x3.Sub(x3, v); x3.Mod(x3, curve.P); y3.Set(r); v.Sub(v, x3); y3.Mul(y3, v); s1.Mul(s1, j); s1.Lsh(s1, 1); y3.Sub(y3, s1); y3.Mod(y3, curve.P); z3.Add(z1, z2); z3.Mul(z3, z3); z3.Sub(z3, z1z1); z3.Sub(z3, z2z2); z3.Mul(z3, h); z3.Mod(z3, curve.P); return [x3, y3, z3]; }; 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, _tuple, curve, x1, y1, z1; curve = this; z1 = zForAffine(x1, y1); _tuple = curve.doubleJacobian(x1, y1, z1); return curve.affineFromJacobian(_tuple[0], _tuple[1], _tuple[2]); }; CurveParams.prototype.Double = function(x1, y1) { return this.$val.Double(x1, y1); }; CurveParams.ptr.prototype.doubleJacobian = function(x, y, z) { var $ptr, alpha, alpha2, beta, beta8, curve, delta, gamma, x, x3, y, y3, z, z3; curve = this; delta = new big.Int.ptr().Mul(z, z); delta.Mod(delta, curve.P); gamma = new big.Int.ptr().Mul(y, y); gamma.Mod(gamma, curve.P); alpha = new big.Int.ptr().Sub(x, delta); if (alpha.Sign() === -1) { alpha.Add(alpha, curve.P); } alpha2 = new big.Int.ptr().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().Mul(alpha, alpha); beta8 = new big.Int.ptr().Lsh(beta, 3); x3.Sub(x3, beta8); while (true) { if (!(x3.Sign() === -1)) { break; } x3.Add(x3, curve.P); } x3.Mod(x3, curve.P); z3 = new big.Int.ptr().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); } z3.Mod(z3, curve.P); 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); gamma.Mod(gamma, curve.P); y3.Sub(y3, gamma); if (y3.Sign() === -1) { y3.Add(y3, curve.P); } y3.Mod(y3, curve.P); return [x3, y3, z3]; }; 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, _ref, _tmp, _tmp$1, _tmp$2, _tuple, _tuple$1, bitNum, byte$1, curve, k, x, y, y$1, z; curve = this; Bz = new big.Int.ptr().SetInt64(new $Int64(0, 1)); _tmp = new big.Int.ptr(); _tmp$1 = new big.Int.ptr(); _tmp$2 = new big.Int.ptr(); x = _tmp; y = _tmp$1; z = _tmp$2; _ref = k; _i = 0; while (true) { if (!(_i < _ref.$length)) { break; } byte$1 = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]); bitNum = 0; while (true) { if (!(bitNum < 8)) { break; } _tuple = curve.doubleJacobian(x, y, z); x = _tuple[0]; y = _tuple[1]; z = _tuple[2]; if (((byte$1 & 128) >>> 0) === 128) { _tuple$1 = curve.addJacobian(Bx, By, Bz, x, y, z); x = _tuple$1[0]; y = _tuple$1[1]; z = _tuple$1[2]; } byte$1 = (y$1 = (1), y$1 < 32 ? (byte$1 << y$1) : 0) << 24 >>> 24; bitNum = bitNum + (1) >> 0; } _i++; } return curve.affineFromJacobian(x, y, z); }; CurveParams.prototype.ScalarMult = function(Bx, By, k) { return this.$val.ScalarMult(Bx, By, k); }; CurveParams.ptr.prototype.ScalarBaseMult = function(k) { var $ptr, curve, k; curve = this; return curve.ScalarMult(curve.Gx, curve.Gy, k); }; CurveParams.prototype.ScalarBaseMult = function(k) { return this.$val.ScalarBaseMult(k); }; GenerateKey = function(curve, rand) { var $ptr, _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; _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; } bitSize = _r.BitSize; 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))) { return [priv, x, y, err]; } (0 >= priv.$length ? $throwRuntimeError("index out of range") : priv.$array[priv.$offset + 0] = ((0 >= priv.$length ? $throwRuntimeError("index out of range") : 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") : mask.$array[mask.$offset + x$1])))) >>> 0); (1 >= priv.$length ? $throwRuntimeError("index out of range") : priv.$array[priv.$offset + 1] = ((1 >= priv.$length ? $throwRuntimeError("index out of range") : priv.$array[priv.$offset + 1]) ^ (66)) << 24 >>> 24); _r$3 = curve.ScalarBaseMult(priv); /* */ $s = 5; case 5: 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: return [priv, x, y, err]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: GenerateKey }; } $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.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 + (2 * byteLen >> 0) >> 0)); (0 >= ret.$length ? $throwRuntimeError("index out of range") : 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 + (2 * byteLen >> 0) >> 0) - yBytes.$length >> 0)), yBytes); return ret; /* */ $s = -1; case -1: } 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, 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; 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 + (2 * byteLen >> 0) >> 0)))) { return [x, y]; } if (!(((0 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 0]) === 4))) { return [x, y]; } x = new big.Int.ptr().SetBytes($subslice(data, 1, (1 + byteLen >> 0))); y = new big.Int.ptr().SetBytes($subslice(data, (1 + byteLen >> 0))); return [x, y]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Unmarshal }; } $f.$ptr = $ptr; $f._r = _r; $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; case -1: } 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(); _r = new big.Int.ptr().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().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().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().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().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; case -1: } 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(); _r = new big.Int.ptr().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().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().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().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().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; case -1: } 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; } return new p256.constructor.elem(p256); /* */ $s = -1; case -1: } 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; } return p384; /* */ $s = -1; case -1: } 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; } return p521; /* */ $s = -1; case -1: } 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(); _r = new big.Int.ptr().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().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().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().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().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; case -1: } 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; } return new p224.constructor.elem(p224); /* */ $s = -1; case -1: } 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 = $clone(this, p224Curve); 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, x$1, x$2, x3, y; curve = $clone(this, p224Curve); _tmp = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$1 = $clone(p224FieldElement.zero(), p224FieldElement); x = $clone(_tmp, p224FieldElement); y = $clone(_tmp$1, p224FieldElement); p224FromBig(x, bigX); p224FromBig(y, bigY); tmp = $clone(p224LargeFieldElement.zero(), p224LargeFieldElement); x3 = $clone(p224FieldElement.zero(), p224FieldElement); 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") : x[i] = (x$1 = ((i < 0 || i >= x.length) ? $throwRuntimeError("index out of range") : x[i]), x$2 = 3, (((x$1 >>> 16 << 16) * x$2 >>> 0) + (x$1 << 16 >>> 16) * x$2) >>> 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") : y[i$1]) === ((i$1 < 0 || i$1 >= x3.length) ? $throwRuntimeError("index out of range") : 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 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$1 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$2 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$3 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$4 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$5 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$6 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$7 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$8 = $clone(p224FieldElement.zero(), p224FieldElement); 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 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$1 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$2 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$3 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$4 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$5 = $clone(p224FieldElement.zero(), p224FieldElement); 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 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$1 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$2 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$3 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$4 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$5 = $clone(p224FieldElement.zero(), p224FieldElement); 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 = $clone(this, p224Curve); _tmp = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$1 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$2 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$3 = $clone(p224FieldElement.zero(), p224FieldElement); 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 = $clone(p224FieldElement.zero(), p224FieldElement); 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") : _ref[_i]); isZero = (isZero | (v)) >>> 0; isP = (isP | ((v - ((i < 0 || i >= p224P.length) ? $throwRuntimeError("index out of range") : 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") : out[i] = (a.nilCheck, ((i < 0 || i >= a.length) ? $throwRuntimeError("index out of range") : a[i])) + (b.nilCheck, ((i < 0 || i >= b.length) ? $throwRuntimeError("index out of range") : 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") : out[i] = ((a.nilCheck, ((i < 0 || i >= a.length) ? $throwRuntimeError("index out of range") : a[i])) + ((i < 0 || i >= p224ZeroModP31.$length) ? $throwRuntimeError("index out of range") : p224ZeroModP31.$array[p224ZeroModP31.$offset + i]) >>> 0) - (b.nilCheck, ((i < 0 || i >= b.length) ? $throwRuntimeError("index out of range") : 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") : 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") : tmp[_index] = (x = (tmp.nilCheck, ((_index < 0 || _index >= tmp.length) ? $throwRuntimeError("index out of range") : tmp[_index])), x$1 = $mul64(new $Uint64(0, (a.nilCheck, ((i$1 < 0 || i$1 >= a.length) ? $throwRuntimeError("index out of range") : a[i$1]))), new $Uint64(0, (b.nilCheck, ((j < 0 || j >= b.length) ? $throwRuntimeError("index out of range") : 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") : 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") : a[i$1]))), new $Uint64(0, (a.nilCheck, ((j < 0 || j >= a.length) ? $throwRuntimeError("index out of range") : a[j])))); if (i$1 === j) { _index = i$1 + j >> 0; tmp.nilCheck, ((_index < 0 || _index >= tmp.length) ? $throwRuntimeError("index out of range") : tmp[_index] = (x = (tmp.nilCheck, ((_index < 0 || _index >= tmp.length) ? $throwRuntimeError("index out of range") : 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") : tmp[_index$1] = (x$2 = (tmp.nilCheck, ((_index$1 < 0 || _index$1 >= tmp.length) ? $throwRuntimeError("index out of range") : 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") : in$1[i] = (x = (in$1.nilCheck, ((i < 0 || i >= in$1.length) ? $throwRuntimeError("index out of range") : in$1[i])), x$1 = ((i < 0 || i >= p224ZeroModP63.length) ? $throwRuntimeError("index out of range") : 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") : in$1[_index] = (x$2 = (in$1.nilCheck, ((_index < 0 || _index >= in$1.length) ? $throwRuntimeError("index out of range") : in$1[_index])), x$3 = (in$1.nilCheck, ((i$1 < 0 || i$1 >= in$1.length) ? $throwRuntimeError("index out of range") : 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") : in$1[_index$1] = (x$4 = (in$1.nilCheck, ((_index$1 < 0 || _index$1 >= in$1.length) ? $throwRuntimeError("index out of range") : 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") : 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") : in$1[_index$2] = (x$7 = (in$1.nilCheck, ((_index$2 < 0 || _index$2 >= in$1.length) ? $throwRuntimeError("index out of range") : in$1[_index$2])), x$8 = $shiftRightUint64((in$1.nilCheck, ((i$1 < 0 || i$1 >= in$1.length) ? $throwRuntimeError("index out of range") : 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") : in$1[_index$3] = (x$9 = (in$1.nilCheck, ((_index$3 < 0 || _index$3 >= in$1.length) ? $throwRuntimeError("index out of range") : in$1[_index$3])), x$10 = $shiftRightUint64((in$1.nilCheck, ((i$2 < 0 || i$2 >= in$1.length) ? $throwRuntimeError("index out of range") : 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") : out[i$2] = ((x$11 = (in$1.nilCheck, ((i$2 < 0 || i$2 >= in$1.length) ? $throwRuntimeError("index out of range") : 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") : a[_index] = (a.nilCheck, ((_index < 0 || _index >= a.length) ? $throwRuntimeError("index out of range") : a[_index])) + (((a.nilCheck, ((i < 0 || i >= a.length) ? $throwRuntimeError("index out of range") : a[i])) >>> 28 >>> 0)) >>> 0); a.nilCheck, ((i < 0 || i >= a.length) ? $throwRuntimeError("index out of range") : a[i] = ((a.nilCheck, ((i < 0 || i >= a.length) ? $throwRuntimeError("index out of range") : 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 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$1 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$2 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$3 = $clone(p224FieldElement.zero(), p224FieldElement); f1 = $clone(_tmp, p224FieldElement); f2 = $clone(_tmp$1, p224FieldElement); f3 = $clone(_tmp$2, p224FieldElement); f4 = $clone(_tmp$3, p224FieldElement); c = $clone(p224LargeFieldElement.zero(), p224LargeFieldElement); 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") : out[_index] = (out.nilCheck, ((_index < 0 || _index >= out.length) ? $throwRuntimeError("index out of range") : out[_index])) + (((out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) >>> 28 >>> 0)) >>> 0); out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = ((out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : 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") : out[i$1])) >> 0) >> 31 >> 0) >>> 0); out.nilCheck, ((i$1 < 0 || i$1 >= out.length) ? $throwRuntimeError("index out of range") : out[i$1] = (out.nilCheck, ((i$1 < 0 || i$1 >= out.length) ? $throwRuntimeError("index out of range") : 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") : out[_index$1] = (out.nilCheck, ((_index$1 < 0 || _index$1 >= out.length) ? $throwRuntimeError("index out of range") : 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") : out[_index$2] = (out.nilCheck, ((_index$2 < 0 || _index$2 >= out.length) ? $throwRuntimeError("index out of range") : out[_index$2])) + (((out.nilCheck, ((i$2 < 0 || i$2 >= out.length) ? $throwRuntimeError("index out of range") : out[i$2])) >>> 28 >>> 0)) >>> 0); out.nilCheck, ((i$2 < 0 || i$2 >= out.length) ? $throwRuntimeError("index out of range") : out[i$2] = ((out.nilCheck, ((i$2 < 0 || i$2 >= out.length) ? $throwRuntimeError("index out of range") : 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") : out[i$3])) >> 0) >> 31 >> 0) >>> 0); out.nilCheck, ((i$3 < 0 || i$3 >= out.length) ? $throwRuntimeError("index out of range") : out[i$3] = (out.nilCheck, ((i$3 < 0 || i$3 >= out.length) ? $throwRuntimeError("index out of range") : 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") : out[_index$3] = (out.nilCheck, ((_index$3 < 0 || _index$3 >= out.length) ? $throwRuntimeError("index out of range") : 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") : 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 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$1 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$2 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$3 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$4 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$5 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$6 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$7 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$8 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$9 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$10 = $clone(p224FieldElement.zero(), p224FieldElement); 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 = $clone(p224LargeFieldElement.zero(), p224LargeFieldElement); 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") : i[j$1] = ((j$1 < 0 || j$1 >= h.length) ? $throwRuntimeError("index out of range") : 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") : r[i$1] = (y = (1), y < 32 ? (((i$1 < 0 || i$1 >= r.length) ? $throwRuntimeError("index out of range") : 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") : z1z1[i$2] = ((i$2 < 0 || i$2 >= v.length) ? $throwRuntimeError("index out of range") : 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") : s1[i$3] = (y$1 = (1), y$1 < 32 ? (((i$3 < 0 || i$3 >= s1.length) ? $throwRuntimeError("index out of range") : 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 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$1 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$2 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$3 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$4 = $clone(p224FieldElement.zero(), p224FieldElement); 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 = $clone(p224LargeFieldElement.zero(), p224LargeFieldElement); 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") : t[i] = ((i < 0 || i >= t.length) ? $throwRuntimeError("index out of range") : t[i]) + ((((i < 0 || i >= t.length) ? $throwRuntimeError("index out of range") : 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") : delta[i$1] = ((i$1 < 0 || i$1 >= beta.length) ? $throwRuntimeError("index out of range") : 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") : beta[i$2] = (y = (2), y < 32 ? (((i$2 < 0 || i$2 >= beta.length) ? $throwRuntimeError("index out of range") : 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") : gamma[i$3] = (y$1 = (3), y$1 < 32 ? (((i$3 < 0 || i$3 >= gamma.length) ? $throwRuntimeError("index out of range") : 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") : out[i] = ((out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) ^ (((((((out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) ^ (in$1.nilCheck, ((i < 0 || i >= in$1.length) ? $throwRuntimeError("index out of range") : 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 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$1 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$2 = $clone(p224FieldElement.zero(), p224FieldElement); 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") : outX[i] = 0); outY.nilCheck, ((i < 0 || i >= outY.length) ? $throwRuntimeError("index out of range") : outY[i] = 0); outZ.nilCheck, ((i < 0 || i >= outZ.length) ? $throwRuntimeError("index out of range") : 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") : _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 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$1 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$2 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$3 = $clone(p224FieldElement.zero(), p224FieldElement); zinv = $clone(_tmp, p224FieldElement); zinvsq = $clone(_tmp$1, p224FieldElement); outx = $clone(_tmp$2, p224FieldElement); outy = $clone(_tmp$3, p224FieldElement); tmp = $clone(p224LargeFieldElement.zero(), p224LargeFieldElement); isPointAtInfinity = p224IsZero(z); if (isPointAtInfinity === 1) { return [new big.Int.ptr(), new big.Int.ptr()]; } 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") : 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 = $clone(arrayType.zero(), arrayType); 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().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: p256.CurveParams = new CurveParams.ptr(); _r = new big.Int.ptr().SetString("115792089210356248762697446949407573530086143415290314195533631308867097853951", 10); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _tuple = _r; p256.CurveParams.P = _tuple[0]; _r$1 = new big.Int.ptr().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; p256.CurveParams.N = _tuple$1[0]; _r$2 = new big.Int.ptr().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; p256.CurveParams.B = _tuple$2[0]; _r$3 = new big.Int.ptr().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; p256.CurveParams.Gx = _tuple$3[0]; _r$4 = new big.Int.ptr().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; p256.CurveParams.Gy = _tuple$4[0]; p256.CurveParams.BitSize = 256; _r$5 = new big.Int.ptr().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]; /* */ $s = -1; case -1: } 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 = $clone(this, p256Curve); return curve.CurveParams; }; p256Curve.prototype.Params = function() { return this.$val.Params(); }; p256GetScalar = function(out, in$1) { var $ptr, _i, _ref, i, in$1, n, out, scalarBytes, v, x; n = new big.Int.ptr().SetBytes(in$1); scalarBytes = sliceType.nil; if (n.Cmp(p256.CurveParams.N) >= 0) { n.Mod(n, p256.CurveParams.N); scalarBytes = n.Bytes(); } else { scalarBytes = in$1; } _ref = scalarBytes; _i = 0; while (true) { if (!(_i < _ref.$length)) { break; } i = _i; v = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]); (x = scalarBytes.$length - ((1 + i >> 0)) >> 0, out.nilCheck, ((x < 0 || x >= out.length) ? $throwRuntimeError("index out of range") : out[x] = v)); _i++; } }; p256Curve.ptr.prototype.ScalarBaseMult = function(scalar) { var $ptr, _tmp, _tmp$1, _tmp$2, _tuple, scalar, scalarReversed, x, x1, y, y1, z1; x = ptrType$1.nil; y = ptrType$1.nil; scalarReversed = $clone(arrayType$1.zero(), arrayType$1); p256GetScalar(scalarReversed, scalar); _tmp = $clone(arrayType$2.zero(), arrayType$2); _tmp$1 = $clone(arrayType$2.zero(), arrayType$2); _tmp$2 = $clone(arrayType$2.zero(), arrayType$2); x1 = $clone(_tmp, arrayType$2); y1 = $clone(_tmp$1, arrayType$2); z1 = $clone(_tmp$2, arrayType$2); p256ScalarBaseMult(x1, y1, z1, scalarReversed); _tuple = p256ToAffine(x1, y1, z1); x = _tuple[0]; y = _tuple[1]; return [x, y]; }; p256Curve.prototype.ScalarBaseMult = function(scalar) { return this.$val.ScalarBaseMult(scalar); }; p256Curve.ptr.prototype.ScalarMult = function(bigX, bigY, scalar) { var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tuple, bigX, bigY, px, py, scalar, scalarReversed, x, x1, y, y1, z1; x = ptrType$1.nil; y = ptrType$1.nil; scalarReversed = $clone(arrayType$1.zero(), arrayType$1); p256GetScalar(scalarReversed, scalar); _tmp = $clone(arrayType$2.zero(), arrayType$2); _tmp$1 = $clone(arrayType$2.zero(), arrayType$2); _tmp$2 = $clone(arrayType$2.zero(), arrayType$2); _tmp$3 = $clone(arrayType$2.zero(), arrayType$2); _tmp$4 = $clone(arrayType$2.zero(), arrayType$2); px = $clone(_tmp, arrayType$2); py = $clone(_tmp$1, arrayType$2); x1 = $clone(_tmp$2, arrayType$2); y1 = $clone(_tmp$3, arrayType$2); z1 = $clone(_tmp$4, arrayType$2); p256FromBig(px, bigX); p256FromBig(py, bigY); p256ScalarMult(x1, y1, z1, px, py, scalarReversed); _tuple = p256ToAffine(x1, y1, z1); x = _tuple[0]; y = _tuple[1]; return [x, y]; }; 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") : out[i] = (in$1.nilCheck, ((i < 0 || i >= in$1.length) ? $throwRuntimeError("index out of range") : in$1[i])) + (in2.nilCheck, ((i < 0 || i >= in2.length) ? $throwRuntimeError("index out of range") : in2[i])) >>> 0); out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = (out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) + (carry) >>> 0); carry = (out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) >>> 29 >>> 0; out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = ((out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) & (536870911)) >>> 0); i = i + (1) >> 0; if (i === 9) { break; } out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = (in$1.nilCheck, ((i < 0 || i >= in$1.length) ? $throwRuntimeError("index out of range") : in$1[i])) + (in2.nilCheck, ((i < 0 || i >= in2.length) ? $throwRuntimeError("index out of range") : in2[i])) >>> 0); out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = (out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) + (carry) >>> 0); carry = (out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) >>> 28 >>> 0; out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = ((out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : 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") : out[i] = (in$1.nilCheck, ((i < 0 || i >= in$1.length) ? $throwRuntimeError("index out of range") : in$1[i])) - (in2.nilCheck, ((i < 0 || i >= in2.length) ? $throwRuntimeError("index out of range") : in2[i])) >>> 0); out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = (out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) + (((i < 0 || i >= p256Zero31.length) ? $throwRuntimeError("index out of range") : p256Zero31[i])) >>> 0); out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = (out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) + (carry) >>> 0); carry = (out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) >>> 29 >>> 0; out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = ((out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) & (536870911)) >>> 0); i = i + (1) >> 0; if (i === 9) { break; } out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = (in$1.nilCheck, ((i < 0 || i >= in$1.length) ? $throwRuntimeError("index out of range") : in$1[i])) - (in2.nilCheck, ((i < 0 || i >= in2.length) ? $throwRuntimeError("index out of range") : in2[i])) >>> 0); out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = (out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) + (((i < 0 || i >= p256Zero31.length) ? $throwRuntimeError("index out of range") : p256Zero31[i])) >>> 0); out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = (out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) + (carry) >>> 0); carry = (out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) >>> 28 >>> 0; out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = ((out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : 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; tmp = $clone(tmp, arrayType$3); tmp2 = $clone(arrayType$4.zero(), arrayType$4); _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") : tmp2[i] = (($shiftRightUint64((x$1 = i - 2 >> 0, ((x$1 < 0 || x$1 >= tmp.length) ? $throwRuntimeError("index out of range") : tmp[x$1])), 32).$low >>> 0)) >>> 25 >>> 0); ((i < 0 || i >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[i] = ((i < 0 || i >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[i]) + (((((x$2 = i - 1 >> 0, ((x$2 < 0 || x$2 >= tmp.length) ? $throwRuntimeError("index out of range") : tmp[x$2])).$low >>> 0)) >>> 28 >>> 0)) >>> 0); ((i < 0 || i >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[i] = ((i < 0 || i >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[i]) + (((((($shiftRightUint64((x$3 = i - 1 >> 0, ((x$3 < 0 || x$3 >= tmp.length) ? $throwRuntimeError("index out of range") : tmp[x$3])), 32).$low >>> 0) << 4 >>> 0)) & 536870911) >>> 0)) >>> 0); ((i < 0 || i >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[i] = ((i < 0 || i >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[i]) + ((((((i < 0 || i >= tmp.length) ? $throwRuntimeError("index out of range") : tmp[i]).$low >>> 0) & 536870911) >>> 0)) >>> 0); ((i < 0 || i >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[i] = ((i < 0 || i >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[i]) + (carry) >>> 0); carry = ((i < 0 || i >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[i]) >>> 29 >>> 0; ((i < 0 || i >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[i] = (((i < 0 || i >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[i]) & (536870911)) >>> 0); i = i + (1) >> 0; if (i === 17) { break; } ((i < 0 || i >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[i] = ($shiftRightUint64((x$4 = i - 2 >> 0, ((x$4 < 0 || x$4 >= tmp.length) ? $throwRuntimeError("index out of range") : tmp[x$4])), 32).$low >>> 0) >>> 25 >>> 0); ((i < 0 || i >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[i] = ((i < 0 || i >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[i]) + ((((x$5 = i - 1 >> 0, ((x$5 < 0 || x$5 >= tmp.length) ? $throwRuntimeError("index out of range") : tmp[x$5])).$low >>> 0) >>> 29 >>> 0)) >>> 0); ((i < 0 || i >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[i] = ((i < 0 || i >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[i]) + ((((((($shiftRightUint64((x$6 = i - 1 >> 0, ((x$6 < 0 || x$6 >= tmp.length) ? $throwRuntimeError("index out of range") : tmp[x$6])), 32).$low >>> 0)) << 3 >>> 0)) & 268435455) >>> 0)) >>> 0); ((i < 0 || i >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[i] = ((i < 0 || i >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[i]) + ((((((i < 0 || i >= tmp.length) ? $throwRuntimeError("index out of range") : tmp[i]).$low >>> 0) & 268435455) >>> 0)) >>> 0); ((i < 0 || i >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[i] = ((i < 0 || i >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[i]) + (carry) >>> 0); carry = ((i < 0 || i >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[i]) >>> 28 >>> 0; ((i < 0 || i >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[i] = (((i < 0 || i >= tmp2.length) ? $throwRuntimeError("index out of range") : 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") : tmp2[_index] = ((_index < 0 || _index >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[_index]) + ((((i$1 < 0 || i$1 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[i$1]) >>> 29 >>> 0)) >>> 0); x = (((i$1 < 0 || i$1 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[i$1]) & 536870911) >>> 0; xMask = nonZeroToAllOnes(x); ((i$1 < 0 || i$1 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[i$1] = 0); _index$1 = i$1 + 3 >> 0; ((_index$1 < 0 || _index$1 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[_index$1] = ((_index$1 < 0 || _index$1 >= tmp2.length) ? $throwRuntimeError("index out of range") : 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") : tmp2[_index$2] = ((_index$2 < 0 || _index$2 >= tmp2.length) ? $throwRuntimeError("index out of range") : 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") : tmp2[_index$3] = ((_index$3 < 0 || _index$3 >= tmp2.length) ? $throwRuntimeError("index out of range") : 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") : tmp2[_index$4] = ((_index$4 < 0 || _index$4 >= tmp2.length) ? $throwRuntimeError("index out of range") : 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") : tmp2[_index$5] = ((_index$5 < 0 || _index$5 >= tmp2.length) ? $throwRuntimeError("index out of range") : 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") : tmp2[_index$6] = ((_index$6 < 0 || _index$6 >= tmp2.length) ? $throwRuntimeError("index out of range") : 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") : tmp2[_index$7] = ((_index$7 < 0 || _index$7 >= tmp2.length) ? $throwRuntimeError("index out of range") : 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") : tmp2[_index$8] = ((_index$8 < 0 || _index$8 >= tmp2.length) ? $throwRuntimeError("index out of range") : 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") : tmp2[_index$9] = ((_index$9 < 0 || _index$9 >= tmp2.length) ? $throwRuntimeError("index out of range") : 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") : tmp2[_index$10] = ((_index$10 < 0 || _index$10 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[_index$10]) - (x) >>> 0); _index$11 = i$1 + 8 >> 0; ((_index$11 < 0 || _index$11 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[_index$11] = ((_index$11 < 0 || _index$11 >= tmp2.length) ? $throwRuntimeError("index out of range") : 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") : tmp2[_index$12] = ((_index$12 < 0 || _index$12 >= tmp2.length) ? $throwRuntimeError("index out of range") : 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") : tmp2[_index$13] = ((_index$13 < 0 || _index$13 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[_index$13]) + (((x$7 = i$1 + 1 >> 0, ((x$7 < 0 || x$7 >= tmp2.length) ? $throwRuntimeError("index out of range") : 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") : 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") : tmp2[x$9] = 0)); _index$14 = i$1 + 4 >> 0; ((_index$14 < 0 || _index$14 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[_index$14] = ((_index$14 < 0 || _index$14 >= tmp2.length) ? $throwRuntimeError("index out of range") : 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") : tmp2[_index$15] = ((_index$15 < 0 || _index$15 >= tmp2.length) ? $throwRuntimeError("index out of range") : 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") : tmp2[_index$16] = ((_index$16 < 0 || _index$16 >= tmp2.length) ? $throwRuntimeError("index out of range") : 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") : tmp2[_index$17] = ((_index$17 < 0 || _index$17 >= tmp2.length) ? $throwRuntimeError("index out of range") : 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") : tmp2[_index$18] = ((_index$18 < 0 || _index$18 >= tmp2.length) ? $throwRuntimeError("index out of range") : 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") : tmp2[_index$19] = ((_index$19 < 0 || _index$19 >= tmp2.length) ? $throwRuntimeError("index out of range") : 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") : tmp2[_index$20] = ((_index$20 < 0 || _index$20 >= tmp2.length) ? $throwRuntimeError("index out of range") : 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") : tmp2[_index$21] = ((_index$21 < 0 || _index$21 >= tmp2.length) ? $throwRuntimeError("index out of range") : 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") : tmp2[_index$22] = ((_index$22 < 0 || _index$22 >= tmp2.length) ? $throwRuntimeError("index out of range") : 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") : tmp2[_index$23] = ((_index$23 < 0 || _index$23 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[_index$23]) - (x) >>> 0); _index$24 = i$1 + 10 >> 0; ((_index$24 < 0 || _index$24 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[_index$24] = ((_index$24 < 0 || _index$24 >= tmp2.length) ? $throwRuntimeError("index out of range") : 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") : out[i$2] = (x$10 = i$2 + 9 >> 0, ((x$10 < 0 || x$10 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[x$10]))); out.nilCheck, ((i$2 < 0 || i$2 >= out.length) ? $throwRuntimeError("index out of range") : out[i$2] = (out.nilCheck, ((i$2 < 0 || i$2 >= out.length) ? $throwRuntimeError("index out of range") : out[i$2])) + (carry) >>> 0); out.nilCheck, ((i$2 < 0 || i$2 >= out.length) ? $throwRuntimeError("index out of range") : out[i$2] = (out.nilCheck, ((i$2 < 0 || i$2 >= out.length) ? $throwRuntimeError("index out of range") : out[i$2])) + ((((((x$11 = i$2 + 10 >> 0, ((x$11 < 0 || x$11 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[x$11])) << 28 >>> 0)) & 536870911) >>> 0)) >>> 0); carry = (out.nilCheck, ((i$2 < 0 || i$2 >= out.length) ? $throwRuntimeError("index out of range") : out[i$2])) >>> 29 >>> 0; out.nilCheck, ((i$2 < 0 || i$2 >= out.length) ? $throwRuntimeError("index out of range") : out[i$2] = ((out.nilCheck, ((i$2 < 0 || i$2 >= out.length) ? $throwRuntimeError("index out of range") : 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") : out[i$2] = (x$12 = i$2 + 9 >> 0, ((x$12 < 0 || x$12 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[x$12])) >>> 1 >>> 0); out.nilCheck, ((i$2 < 0 || i$2 >= out.length) ? $throwRuntimeError("index out of range") : out[i$2] = (out.nilCheck, ((i$2 < 0 || i$2 >= out.length) ? $throwRuntimeError("index out of range") : out[i$2])) + (carry) >>> 0); carry = (out.nilCheck, ((i$2 < 0 || i$2 >= out.length) ? $throwRuntimeError("index out of range") : out[i$2])) >>> 28 >>> 0; out.nilCheck, ((i$2 < 0 || i$2 >= out.length) ? $throwRuntimeError("index out of range") : out[i$2] = ((out.nilCheck, ((i$2 < 0 || i$2 >= out.length) ? $throwRuntimeError("index out of range") : 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 = $clone(arrayType$3.zero(), arrayType$3); 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, tmp); }; 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 = $clone(arrayType$3.zero(), arrayType$3); 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, tmp); }; p256Assign = function(out, in$1) { var $ptr, in$1, out; $copy(out, in$1, arrayType$2); }; 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 = $clone(arrayType$2.zero(), arrayType$2); _tmp$1 = $clone(arrayType$2.zero(), arrayType$2); ftmp = $clone(_tmp, arrayType$2); ftmp2 = $clone(_tmp$1, arrayType$2); _tmp$2 = $clone(arrayType$2.zero(), arrayType$2); _tmp$3 = $clone(arrayType$2.zero(), arrayType$2); _tmp$4 = $clone(arrayType$2.zero(), arrayType$2); _tmp$5 = $clone(arrayType$2.zero(), arrayType$2); _tmp$6 = $clone(arrayType$2.zero(), arrayType$2); _tmp$7 = $clone(arrayType$2.zero(), arrayType$2); e2 = $clone(_tmp$2, arrayType$2); e4 = $clone(_tmp$3, arrayType$2); e8 = $clone(_tmp$4, arrayType$2); e16 = $clone(_tmp$5, arrayType$2); e32 = $clone(_tmp$6, arrayType$2); e64 = $clone(_tmp$7, arrayType$2); 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, x, x$1, x$2, x$3; carry = 0; i = 0; while (true) { out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = (x = (out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])), x$1 = 3, (((x >>> 16 << 16) * x$1 >>> 0) + (x << 16 >>> 16) * x$1) >>> 0)); out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = (out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) + (carry) >>> 0); carry = (out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) >>> 29 >>> 0; out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = ((out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) & (536870911)) >>> 0); i = i + (1) >> 0; if (i === 9) { break; } out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = (x$2 = (out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])), x$3 = 3, (((x$2 >>> 16 << 16) * x$3 >>> 0) + (x$2 << 16 >>> 16) * x$3) >>> 0)); out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = (out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) + (carry) >>> 0); carry = (out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) >>> 28 >>> 0; out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = ((out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : 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") : out[i])) >>> 27 >>> 0; out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = (y = (2), y < 32 ? ((out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) << y) : 0) >>> 0); out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = ((out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) & (536870911)) >>> 0); out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = (out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) + (carry) >>> 0); carry = nextCarry + (((out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) >>> 29 >>> 0)) >>> 0; out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = ((out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : 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") : out[i])) >>> 26 >>> 0; out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = (y$1 = (2), y$1 < 32 ? ((out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) << y$1) : 0) >>> 0); out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = ((out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) & (268435455)) >>> 0); out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = (out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) + (carry) >>> 0); carry = nextCarry + (((out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) >>> 28 >>> 0)) >>> 0; out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = ((out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : 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") : out[i])) >>> 26 >>> 0; out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = (y = (3), y < 32 ? ((out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) << y) : 0) >>> 0); out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = ((out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) & (536870911)) >>> 0); out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = (out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) + (carry) >>> 0); carry = nextCarry + (((out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) >>> 29 >>> 0)) >>> 0; out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = ((out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : 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") : out[i])) >>> 25 >>> 0; out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = (y$1 = (3), y$1 < 32 ? ((out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) << y$1) : 0) >>> 0); out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = ((out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) & (268435455)) >>> 0); out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = (out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) + (carry) >>> 0); carry = nextCarry + (((out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) >>> 28 >>> 0)) >>> 0; out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = ((out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : 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 = $clone(arrayType$2.zero(), arrayType$2); _tmp$1 = $clone(arrayType$2.zero(), arrayType$2); _tmp$2 = $clone(arrayType$2.zero(), arrayType$2); _tmp$3 = $clone(arrayType$2.zero(), arrayType$2); _tmp$4 = $clone(arrayType$2.zero(), arrayType$2); _tmp$5 = $clone(arrayType$2.zero(), arrayType$2); delta = $clone(_tmp, arrayType$2); gamma = $clone(_tmp$1, arrayType$2); alpha = $clone(_tmp$2, arrayType$2); beta = $clone(_tmp$3, arrayType$2); tmp = $clone(_tmp$4, arrayType$2); tmp2 = $clone(_tmp$5, arrayType$2); 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 = $clone(arrayType$2.zero(), arrayType$2); _tmp$1 = $clone(arrayType$2.zero(), arrayType$2); _tmp$2 = $clone(arrayType$2.zero(), arrayType$2); _tmp$3 = $clone(arrayType$2.zero(), arrayType$2); _tmp$4 = $clone(arrayType$2.zero(), arrayType$2); _tmp$5 = $clone(arrayType$2.zero(), arrayType$2); _tmp$6 = $clone(arrayType$2.zero(), arrayType$2); _tmp$7 = $clone(arrayType$2.zero(), arrayType$2); _tmp$8 = $clone(arrayType$2.zero(), arrayType$2); _tmp$9 = $clone(arrayType$2.zero(), arrayType$2); _tmp$10 = $clone(arrayType$2.zero(), arrayType$2); z1z1 = $clone(_tmp, arrayType$2); z1z1z1 = $clone(_tmp$1, arrayType$2); s2 = $clone(_tmp$2, arrayType$2); u2 = $clone(_tmp$3, arrayType$2); h = $clone(_tmp$4, arrayType$2); i = $clone(_tmp$5, arrayType$2); j = $clone(_tmp$6, arrayType$2); r = $clone(_tmp$7, arrayType$2); rr = $clone(_tmp$8, arrayType$2); v = $clone(_tmp$9, arrayType$2); tmp = $clone(_tmp$10, arrayType$2); 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 = $clone(arrayType$2.zero(), arrayType$2); _tmp$1 = $clone(arrayType$2.zero(), arrayType$2); _tmp$2 = $clone(arrayType$2.zero(), arrayType$2); _tmp$3 = $clone(arrayType$2.zero(), arrayType$2); _tmp$4 = $clone(arrayType$2.zero(), arrayType$2); _tmp$5 = $clone(arrayType$2.zero(), arrayType$2); _tmp$6 = $clone(arrayType$2.zero(), arrayType$2); _tmp$7 = $clone(arrayType$2.zero(), arrayType$2); _tmp$8 = $clone(arrayType$2.zero(), arrayType$2); _tmp$9 = $clone(arrayType$2.zero(), arrayType$2); _tmp$10 = $clone(arrayType$2.zero(), arrayType$2); _tmp$11 = $clone(arrayType$2.zero(), arrayType$2); _tmp$12 = $clone(arrayType$2.zero(), arrayType$2); _tmp$13 = $clone(arrayType$2.zero(), arrayType$2); _tmp$14 = $clone(arrayType$2.zero(), arrayType$2); z1z1 = $clone(_tmp, arrayType$2); z1z1z1 = $clone(_tmp$1, arrayType$2); z2z2 = $clone(_tmp$2, arrayType$2); z2z2z2 = $clone(_tmp$3, arrayType$2); s1 = $clone(_tmp$4, arrayType$2); s2 = $clone(_tmp$5, arrayType$2); u1 = $clone(_tmp$6, arrayType$2); u2 = $clone(_tmp$7, arrayType$2); h = $clone(_tmp$8, arrayType$2); i = $clone(_tmp$9, arrayType$2); j = $clone(_tmp$10, arrayType$2); r = $clone(_tmp$11, arrayType$2); rr = $clone(_tmp$12, arrayType$2); v = $clone(_tmp$13, arrayType$2); tmp = $clone(_tmp$14, arrayType$2); 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") : in$1[i])) ^ (out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i]))) >>> 0))) >>> 0; out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = ((out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : 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") : 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") : 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") : xOut[j] = ((xOut.nilCheck, ((j < 0 || j >= xOut.length) ? $throwRuntimeError("index out of range") : xOut[j])) | ((((0 >= table.$length ? $throwRuntimeError("index out of range") : 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") : yOut[j$1] = ((yOut.nilCheck, ((j$1 < 0 || j$1 >= yOut.length) ? $throwRuntimeError("index out of range") : yOut[j$1])) | ((((0 >= table.$length ? $throwRuntimeError("index out of range") : 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") : 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") : 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") : 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") : xOut[j] = ((xOut.nilCheck, ((j < 0 || j >= xOut.length) ? $throwRuntimeError("index out of range") : xOut[j])) | ((((x = (table.nilCheck, ((i$3 < 0 || i$3 >= table.length) ? $throwRuntimeError("index out of range") : table[i$3]))[0], ((j < 0 || j >= x.length) ? $throwRuntimeError("index out of range") : 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") : yOut[j$1] = ((yOut.nilCheck, ((j$1 < 0 || j$1 >= yOut.length) ? $throwRuntimeError("index out of range") : yOut[j$1])) | ((((x$1 = (table.nilCheck, ((i$3 < 0 || i$3 >= table.length) ? $throwRuntimeError("index out of range") : table[i$3]))[1], ((j$1 < 0 || j$1 >= x$1.length) ? $throwRuntimeError("index out of range") : 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") : zOut[j$2] = ((zOut.nilCheck, ((j$2 < 0 || j$2 >= zOut.length) ? $throwRuntimeError("index out of range") : zOut[j$2])) | ((((x$2 = (table.nilCheck, ((i$3 < 0 || i$3 >= table.length) ? $throwRuntimeError("index out of range") : table[i$3]))[2], ((j$2 < 0 || j$2 >= x$2.length) ? $throwRuntimeError("index out of range") : 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") : 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 = $clone(arrayType$2.zero(), arrayType$2); _tmp$4 = $clone(arrayType$2.zero(), arrayType$2); _tmp$5 = $clone(arrayType$2.zero(), arrayType$2); _tmp$6 = $clone(arrayType$2.zero(), arrayType$2); _tmp$7 = $clone(arrayType$2.zero(), arrayType$2); px = $clone(_tmp$3, arrayType$2); py = $clone(_tmp$4, arrayType$2); tx = $clone(_tmp$5, arrayType$2); ty = $clone(_tmp$6, arrayType$2); tz = $clone(_tmp$7, arrayType$2); _ref = xOut; _i = 0; while (true) { if (!(_i < 9)) { break; } i = _i; xOut.nilCheck, ((i < 0 || i >= xOut.length) ? $throwRuntimeError("index out of range") : 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") : 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") : 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))) >>> 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 = $clone(arrayType$2.zero(), arrayType$2); _tmp$1 = $clone(arrayType$2.zero(), arrayType$2); zInv = $clone(_tmp, arrayType$2); zInvSq = $clone(_tmp$1, arrayType$2); 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, _tmp, _tmp$1, _tmp$2, _tmp$3, x, xOut, xx, y, yOut, yy, z; xOut = ptrType$1.nil; yOut = ptrType$1.nil; _tmp = $clone(arrayType$2.zero(), arrayType$2); _tmp$1 = $clone(arrayType$2.zero(), arrayType$2); xx = $clone(_tmp, arrayType$2); yy = $clone(_tmp$1, arrayType$2); p256PointToAffine(xx, yy, x, y, z); _tmp$2 = p256ToBig(xx); _tmp$3 = p256ToBig(yy); xOut = _tmp$2; yOut = _tmp$3; return [xOut, yOut]; }; 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 = $clone(arrayType$2.zero(), arrayType$2); _tmp$1 = $clone(arrayType$2.zero(), arrayType$2); _tmp$2 = $clone(arrayType$2.zero(), arrayType$2); _tmp$3 = $clone(arrayType$2.zero(), arrayType$2); _tmp$4 = $clone(arrayType$2.zero(), arrayType$2); _tmp$5 = $clone(arrayType$2.zero(), arrayType$2); px = $clone(_tmp, arrayType$2); py = $clone(_tmp$1, arrayType$2); pz = $clone(_tmp$2, arrayType$2); tx = $clone(_tmp$3, arrayType$2); ty = $clone(_tmp$4, arrayType$2); tz = $clone(_tmp$5, arrayType$2); precomp = $clone(arrayType$6.zero(), arrayType$6); _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; $copy(precomp[1][0], x, arrayType$2); $copy(precomp[1][1], y, arrayType$2); $copy(precomp[1][2], p256One, arrayType$2); i = 2; while (true) { if (!(i < 16)) { break; } p256PointDouble(((i < 0 || i >= precomp.length) ? $throwRuntimeError("index out of range") : precomp[i])[0], ((i < 0 || i >= precomp.length) ? $throwRuntimeError("index out of range") : precomp[i])[1], ((i < 0 || i >= precomp.length) ? $throwRuntimeError("index out of range") : 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") : 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") : 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") : precomp[x$3]))[2]); p256PointAddMixed((x$4 = i + 1 >> 0, ((x$4 < 0 || x$4 >= precomp.length) ? $throwRuntimeError("index out of range") : precomp[x$4]))[0], (x$5 = i + 1 >> 0, ((x$5 < 0 || x$5 >= precomp.length) ? $throwRuntimeError("index out of range") : precomp[x$5]))[1], (x$6 = i + 1 >> 0, ((x$6 < 0 || x$6 >= precomp.length) ? $throwRuntimeError("index out of range") : precomp[x$6]))[2], ((i < 0 || i >= precomp.length) ? $throwRuntimeError("index out of range") : precomp[i])[0], ((i < 0 || i >= precomp.length) ? $throwRuntimeError("index out of range") : precomp[i])[1], ((i < 0 || i >= precomp.length) ? $throwRuntimeError("index out of range") : 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") : 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") : 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") : 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") : 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))) >>> 0; i$4 = i$4 + (1) >> 0; } }; p256FromBig = function(out, in$1) { var $ptr, bits, bits$1, i, in$1, out, tmp; tmp = new big.Int.ptr().Lsh(in$1, 257); tmp.Mod(tmp, p256.CurveParams.P); 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") : out[i] = (((0 >= bits.$length ? $throwRuntimeError("index out of range") : bits.$array[bits.$offset + 0]) >>> 0) & 536870911) >>> 0); } else { out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : 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") : out[i] = (((0 >= bits$1.$length ? $throwRuntimeError("index out of range") : bits$1.$array[bits$1.$offset + 0]) >>> 0) & 268435455) >>> 0); } else { out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = 0); } tmp.Rsh(tmp, 28); i = i + (1) >> 0; } }; p256ToBig = function(in$1) { var $ptr, _tmp, _tmp$1, i, in$1, result, tmp; _tmp = new big.Int.ptr(); _tmp$1 = new big.Int.ptr(); 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") : in$1[i])))); result.Add(result, tmp); i = i - (1) >> 0; } result.Mul(result, p256RInverse); result.Mod(result, p256.CurveParams.P); return result; }; 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", pkg: "", typ: ptrType$1, tag: ""}, {prop: "N", name: "N", pkg: "", typ: ptrType$1, tag: ""}, {prop: "B", name: "B", pkg: "", typ: ptrType$1, tag: ""}, {prop: "Gx", name: "Gx", pkg: "", typ: ptrType$1, tag: ""}, {prop: "Gy", name: "Gy", pkg: "", typ: ptrType$1, tag: ""}, {prop: "BitSize", name: "BitSize", pkg: "", typ: $Int, tag: ""}]); p224Curve.init([{prop: "CurveParams", name: "", pkg: "", typ: ptrType, tag: ""}, {prop: "gx", name: "gx", pkg: "crypto/elliptic", typ: p224FieldElement, tag: ""}, {prop: "gy", name: "gy", pkg: "crypto/elliptic", typ: p224FieldElement, tag: ""}, {prop: "b", name: "b", pkg: "crypto/elliptic", typ: p224FieldElement, tag: ""}]); p224FieldElement.init($Uint32, 8); p224LargeFieldElement.init($Uint64, 15); p256Curve.init([{prop: "CurveParams", name: "", pkg: "", 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(); p384 = ptrType.nil; p521 = ptrType.nil; p224 = new p224Curve.ptr(); p256 = new p256Curve.ptr(); p256RInverse = ptrType$1.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["encoding/asn1"] = (function() { var $pkg = {}, $init, bytes, errors, fmt, io, big, reflect, strconv, strings, time, utf8, StructuralError, SyntaxError, BitString, ObjectIdentifier, Enumerated, Flag, RawValue, RawContent, tagAndLength, fieldParameters, forkableWriter, sliceType, ptrType, sliceType$1, ptrType$1, ptrType$2, sliceType$2, ptrType$3, arrayType, ptrType$4, ptrType$5, bigOne, bitStringType, objectIdentifierType, enumeratedType, flagType, timeType, rawValueType, rawContentsType, bigIntType, x, x$1, x$2, parseBool, parseInt64, parseInt32, parseBigInt, parseBitString, parseObjectIdentifier, parseBase128Int, parseUTCTime, parseGeneralizedTime, parsePrintableString, isPrintable, parseIA5String, parseT61String, parseUTF8String, parseTagAndLength, parseSequenceOf, invalidLength, parseField, canHaveDefaultValue, setDefaultValue, Unmarshal, UnmarshalWithParams, parseFieldParameters, getUniversalType, newForkableWriter, marshalBase128Int, marshalInt64, int64Length, marshalBigInt, marshalLength, lengthLength, marshalTagAndLength, marshalBitString, marshalObjectIdentifier, marshalPrintableString, marshalIA5String, marshalUTF8String, marshalTwoDigits, marshalFourDigits, outsideUTCRange, marshalUTCTime, marshalGeneralizedTime, marshalTimeCommon, stripTagAndLength, marshalBody, marshalField, Marshal; bytes = $packages["bytes"]; errors = $packages["errors"]; fmt = $packages["fmt"]; io = $packages["io"]; 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", "StructuralError", "encoding/asn1", function(Msg_) { this.$val = this; if (arguments.length === 0) { this.Msg = ""; return; } this.Msg = Msg_; }); SyntaxError = $pkg.SyntaxError = $newType(0, $kindStruct, "asn1.SyntaxError", "SyntaxError", "encoding/asn1", function(Msg_) { this.$val = this; if (arguments.length === 0) { this.Msg = ""; return; } this.Msg = Msg_; }); BitString = $pkg.BitString = $newType(0, $kindStruct, "asn1.BitString", "BitString", "encoding/asn1", 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", "ObjectIdentifier", "encoding/asn1", null); Enumerated = $pkg.Enumerated = $newType(4, $kindInt, "asn1.Enumerated", "Enumerated", "encoding/asn1", null); Flag = $pkg.Flag = $newType(1, $kindBool, "asn1.Flag", "Flag", "encoding/asn1", null); RawValue = $pkg.RawValue = $newType(0, $kindStruct, "asn1.RawValue", "RawValue", "encoding/asn1", 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", "RawContent", "encoding/asn1", null); tagAndLength = $pkg.tagAndLength = $newType(0, $kindStruct, "asn1.tagAndLength", "tagAndLength", "encoding/asn1", 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", "fieldParameters", "encoding/asn1", function(optional_, explicit_, application_, defaultValue_, tag_, stringType_, set_, omitEmpty_) { this.$val = this; if (arguments.length === 0) { this.optional = false; this.explicit = false; this.application = false; this.defaultValue = ptrType$1.nil; this.tag = ptrType$2.nil; this.stringType = 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.set = set_; this.omitEmpty = omitEmpty_; }); forkableWriter = $pkg.forkableWriter = $newType(0, $kindStruct, "asn1.forkableWriter", "forkableWriter", "encoding/asn1", function(Buffer_, pre_, post_) { this.$val = this; if (arguments.length === 0) { this.Buffer = ptrType$5.nil; this.pre = ptrType$3.nil; this.post = ptrType$3.nil; return; } this.Buffer = Buffer_; this.pre = pre_; this.post = post_; }); sliceType = $sliceType($Uint8); ptrType = $ptrType(time.Location); sliceType$1 = $sliceType($Int); ptrType$1 = $ptrType($Int64); ptrType$2 = $ptrType($Int); sliceType$2 = $sliceType($emptyInterface); ptrType$3 = $ptrType(forkableWriter); arrayType = $arrayType($Uint8, 4); ptrType$4 = $ptrType(big.Int); ptrType$5 = $ptrType(bytes.Buffer); StructuralError.ptr.prototype.Error = function() { var $ptr, e; e = $clone(this, StructuralError); return "asn1: structure error: " + e.Msg; }; StructuralError.prototype.Error = function() { return this.$val.Error(); }; SyntaxError.ptr.prototype.Error = function() { var $ptr, e; e = $clone(this, SyntaxError); return "asn1: syntax error: " + e.Msg; }; SyntaxError.prototype.Error = function() { return this.$val.Error(); }; parseBool = function(bytes$1) { var $ptr, _ref, bytes$1, err, ret, x$3, x$4; ret = false; err = $ifaceNil; if (!((bytes$1.$length === 1))) { err = (x$3 = new SyntaxError.ptr("invalid boolean"), new x$3.constructor.elem(x$3)); return [ret, err]; } _ref = (0 >= bytes$1.$length ? $throwRuntimeError("index out of range") : bytes$1.$array[bytes$1.$offset + 0]); if (_ref === 0) { ret = false; } else if (_ref === 255) { ret = true; } else { err = (x$4 = new SyntaxError.ptr("invalid boolean"), new x$4.constructor.elem(x$4)); } return [ret, err]; }; parseInt64 = function(bytes$1) { var $ptr, bytes$1, bytesRead, err, ret, x$3, x$4; ret = new $Int64(0, 0); err = $ifaceNil; if (bytes$1.$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$1.$length)) { break; } ret = $shiftLeft64(ret, (8)); ret = (x$4 = new $Int64(0, ((bytesRead < 0 || bytesRead >= bytes$1.$length) ? $throwRuntimeError("index out of range") : bytes$1.$array[bytes$1.$offset + bytesRead])), new $Int64(ret.$high | x$4.$high, (ret.$low | x$4.$low) >>> 0)); bytesRead = bytesRead + (1) >> 0; } ret = $shiftLeft64(ret, ((64 - ((bytes$1.$length << 24 >>> 24) * 8 << 24 >>> 24) << 24 >>> 24))); ret = $shiftRightInt64(ret, ((64 - ((bytes$1.$length << 24 >>> 24) * 8 << 24 >>> 24) << 24 >>> 24))); return [ret, err]; }; parseInt32 = function(bytes$1) { var $ptr, _tuple, bytes$1, err, ret64, x$3, x$4; _tuple = parseInt64(bytes$1); ret64 = _tuple[0]; err = _tuple[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { return [0, err]; } 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$1) { var $ptr, _i, _ref, bytes$1, i, notBytes, ret; ret = new big.Int.ptr(); if (bytes$1.$length > 0 && ((((0 >= bytes$1.$length ? $throwRuntimeError("index out of range") : bytes$1.$array[bytes$1.$offset + 0]) & 128) >>> 0) === 128)) { notBytes = $makeSlice(sliceType, bytes$1.$length); _ref = notBytes; _i = 0; while (true) { if (!(_i < _ref.$length)) { break; } i = _i; ((i < 0 || i >= notBytes.$length) ? $throwRuntimeError("index out of range") : notBytes.$array[notBytes.$offset + i] = ~((i < 0 || i >= bytes$1.$length) ? $throwRuntimeError("index out of range") : bytes$1.$array[bytes$1.$offset + i]) << 24 >>> 24); _i++; } ret.SetBytes(notBytes); ret.Add(ret, bigOne); ret.Neg(ret); return ret; } ret.SetBytes(bytes$1); return ret; }; BitString.ptr.prototype.At = function(i) { var $ptr, _q, _r, b, i, x$3, x$4, y, y$1; b = $clone(this, BitString); 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") : 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 = $clone(this, BitString); 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") : a.$array[a.$offset + 0] = (y = shift, y < 32 ? ((x$3 = b.Bytes, (0 >= x$3.$length ? $throwRuntimeError("index out of range") : 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") : 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") : x$4.$array[x$4.$offset + x$5])) << y$1) : 0) << 24 >>> 24); ((i < 0 || i >= a.$length) ? $throwRuntimeError("index out of range") : a.$array[a.$offset + i] = (((i < 0 || i >= a.$length) ? $throwRuntimeError("index out of range") : 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") : 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$1) { var $ptr, bytes$1, err, paddingBits, ret, x$3, x$4, x$5, y; ret = new BitString.ptr(); err = $ifaceNil; if (bytes$1.$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$1.$length ? $throwRuntimeError("index out of range") : bytes$1.$array[bytes$1.$offset + 0]) >> 0); if (paddingBits > 7 || (bytes$1.$length === 1) && paddingBits > 0 || !(((((x$4 = bytes$1.$length - 1 >> 0, ((x$4 < 0 || x$4 >= bytes$1.$length) ? $throwRuntimeError("index out of range") : bytes$1.$array[bytes$1.$offset + x$4])) & (((((y = (0 >= bytes$1.$length ? $throwRuntimeError("index out of range") : bytes$1.$array[bytes$1.$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 = (((bytes$1.$length - 1 >> 0)) * 8 >> 0) - paddingBits >> 0; ret.Bytes = $subslice(bytes$1, 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") : oi.$array[oi.$offset + i]) === ((i < 0 || i >= other.$length) ? $throwRuntimeError("index out of range") : 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") : _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$1) { var $ptr, _q, _r, _tuple, _tuple$1, bytes$1, err, i, offset, s, v, x$3; s = sliceType$1.nil; err = $ifaceNil; if (bytes$1.$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$1.$length + 1 >> 0)); _tuple = parseBase128Int(bytes$1, 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") : 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") : 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") : s.$array[s.$offset + 0] = 2); (1 >= s.$length ? $throwRuntimeError("index out of range") : s.$array[s.$offset + 1] = v - 80 >> 0); } i = 2; while (true) { if (!(offset < bytes$1.$length)) { break; } _tuple$1 = parseBase128Int(bytes$1, 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") : s.$array[s.$offset + i] = v); i = i + (1) >> 0; } s = $subslice(s, 0, i); return [s, err]; }; parseBase128Int = function(bytes$1, initOffset) { var $ptr, b, bytes$1, 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$1.$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$1.$length) ? $throwRuntimeError("index out of range") : bytes$1.$array[bytes$1.$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$1) { var $ptr, _r, _r$1, _r$2, _r$3, _tuple, _tuple$1, _v, bytes$1, err, ret, 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; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _v = $f._v; bytes$1 = $f.bytes$1; err = $f.err; ret = $f.ret; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: ret = new time.Time.ptr(); err = $ifaceNil; s = $bytesToString(bytes$1); _r = time.Parse("0601021504Z0700", s); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _tuple = _r; $copy(ret, _tuple[0], time.Time); err = _tuple[1]; /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; } /* */ $s = 3; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2: _r$1 = time.Parse("060102150405Z0700", 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; $copy(ret, _tuple$1[0], time.Time); err = _tuple$1[1]; /* } */ case 3: if (!($interfaceIsEqual(err, $ifaceNil))) { _v = false; $s = 7; continue s; } _r$2 = ret.Year(); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } _v = _r$2 >= 2050; case 7: /* */ if (_v) { $s = 5; continue; } /* */ $s = 6; continue; /* if (_v) { */ case 5: _r$3 = ret.AddDate(-100, 0, 0); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } $copy(ret, _r$3, time.Time); /* } */ case 6: return [ret, err]; /* */ $s = -1; case -1: } 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._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._v = _v; $f.bytes$1 = bytes$1; $f.err = err; $f.ret = ret; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; }; parseGeneralizedTime = function(bytes$1) { var $ptr, _r, _tuple, bytes$1, err, 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; bytes$1 = $f.bytes$1; err = $f.err; ret = $f.ret; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: ret = new time.Time.ptr(); err = $ifaceNil; _r = time.Parse("20060102150405Z0700", $bytesToString(bytes$1)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _tuple = _r; $copy(ret, _tuple[0], time.Time); err = _tuple[1]; return [ret, err]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parseGeneralizedTime }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.bytes$1 = bytes$1; $f.err = err; $f.ret = ret; $f.$s = $s; $f.$r = $r; return $f; }; parsePrintableString = function(bytes$1) { var $ptr, _i, _ref, b, bytes$1, err, ret, x$3; ret = ""; err = $ifaceNil; _ref = bytes$1; _i = 0; while (true) { if (!(_i < _ref.$length)) { break; } b = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _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$1); 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$1) { var $ptr, _i, _ref, b, bytes$1, err, ret, x$3; ret = ""; err = $ifaceNil; _ref = bytes$1; _i = 0; while (true) { if (!(_i < _ref.$length)) { break; } b = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _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$1); return [ret, err]; }; parseT61String = function(bytes$1) { var $ptr, _tmp, _tmp$1, bytes$1, err, ret; ret = ""; err = $ifaceNil; _tmp = $bytesToString(bytes$1); _tmp$1 = $ifaceNil; ret = _tmp; err = _tmp$1; return [ret, err]; }; parseUTF8String = function(bytes$1) { var $ptr, _tmp, _tmp$1, bytes$1, err, ret; ret = ""; err = $ifaceNil; _tmp = $bytesToString(bytes$1); _tmp$1 = $ifaceNil; ret = _tmp; err = _tmp$1; return [ret, err]; }; parseTagAndLength = function(bytes$1, initOffset) { var $ptr, _tuple, b, bytes$1, err, i, initOffset, numBytes, offset, ret, x$3, x$4, x$5, x$6, x$7, y; ret = new tagAndLength.ptr(); offset = 0; err = $ifaceNil; offset = initOffset; b = ((offset < 0 || offset >= bytes$1.$length) ? $throwRuntimeError("index out of range") : bytes$1.$array[bytes$1.$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$1, offset); ret.tag = _tuple[0]; offset = _tuple[1]; err = _tuple[2]; if (!($interfaceIsEqual(err, $ifaceNil))) { return [ret, offset, err]; } } if (offset >= bytes$1.$length) { err = (x$3 = new SyntaxError.ptr("truncated tag or length"), new x$3.constructor.elem(x$3)); return [ret, offset, err]; } b = ((offset < 0 || offset >= bytes$1.$length) ? $throwRuntimeError("index out of range") : bytes$1.$array[bytes$1.$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$4 = new SyntaxError.ptr("indefinite length found (not DER)"), new x$4.constructor.elem(x$4)); return [ret, offset, err]; } ret.length = 0; i = 0; while (true) { if (!(i < numBytes)) { break; } if (offset >= bytes$1.$length) { err = (x$5 = new SyntaxError.ptr("truncated tag or length"), new x$5.constructor.elem(x$5)); return [ret, offset, err]; } b = ((offset < 0 || offset >= bytes$1.$length) ? $throwRuntimeError("index out of range") : bytes$1.$array[bytes$1.$offset + offset]); offset = offset + (1) >> 0; if (ret.length >= 8388608) { err = (x$6 = new StructuralError.ptr("length too large"), new x$6.constructor.elem(x$6)); 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$7 = new StructuralError.ptr("superfluous leading zeros in length"), new x$7.constructor.elem(x$7)); return [ret, offset, err]; } i = i + (1) >> 0; } } return [ret, offset, err]; }; parseSequenceOf = function(bytes$1, sliceType$2, elemType) { var $ptr, _r, _r$1, _r$2, _r$3, _ref, _tuple, _tuple$1, _tuple$2, bytes$1, compoundType, elemType, err, expectedTag, i, numElements, offset, offset$1, ok, params, ret, sliceType$2, 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; _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; _tuple$2 = $f._tuple$2; bytes$1 = $f.bytes$1; 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$2 = $f.sliceType$2; 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(); 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)); return [ret, err]; } numElements = 0; offset = 0; while (true) { if (!(offset < bytes$1.$length)) { break; } t = $clone(new tagAndLength.ptr(), tagAndLength); _tuple$1 = parseTagAndLength(bytes$1, offset); $copy(t, _tuple$1[0], tagAndLength); offset = _tuple$1[1]; err = _tuple$1[2]; if (!($interfaceIsEqual(err, $ifaceNil))) { return [ret, err]; } _ref = t.tag; if (_ref === 22 || _ref === 27 || _ref === 20 || _ref === 12) { t.tag = 19; } else if (_ref === 24 || _ref === 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)); return [ret, err]; } if (invalidLength(offset, t.length, bytes$1.$length)) { err = (x$5 = new SyntaxError.ptr("truncated sequence"), new x$5.constructor.elem(x$5)); return [ret, err]; } offset = offset + (t.length) >> 0; numElements = numElements + (1) >> 0; } _r$1 = reflect.MakeSlice(sliceType$2, 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$1.nil, ptrType$2.nil, 0, false, false); offset$1 = 0; i = 0; /* while (true) { */ case 3: /* if (!(i < numElements)) { break; } */ if(!(i < numElements)) { $s = 4; continue; } _r$2 = ret.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(_r$2, bytes$1, offset$1, params); /* */ $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))) { return [ret, err]; } i = i + (1) >> 0; /* } */ $s = 3; continue; case 4: return [ret, err]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parseSequenceOf }; } $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._tuple$2 = _tuple$2; $f.bytes$1 = bytes$1; $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$2 = sliceType$2; $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$1, initOffset, params) { var $ptr, _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$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _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$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, _v, _v$1, bs, bytes$1, bytes$2, compoundType, err, err1, err1$1, err1$2, err1$3, err1$4, err1$5, err1$6, err1$7, expectedClass, expectedClass$1, expectedTag, field, fieldType, i, 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$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; _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$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; _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$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$1 = $f.bytes$1; bytes$2 = $f.bytes$2; 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; expectedClass = $f.expectedClass; expectedClass$1 = $f.expectedClass$1; expectedTag = $f.expectedTag; field = $f.field; fieldType = $f.fieldType; i = $f.i; 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$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; params = $clone(params, fieldParameters); v = v; offset = initOffset; fieldType = v.Type(); if (offset === bytes$1.$length) { if (!setDefaultValue(v, params)) { err = (x$3 = new SyntaxError.ptr("sequence truncated"), new x$3.constructor.elem(x$3)); } return [offset, err]; } /* */ if ($interfaceIsEqual(fieldType, rawValueType)) { $s = 1; continue; } /* */ $s = 2; continue; /* if ($interfaceIsEqual(fieldType, rawValueType)) { */ case 1: t = $clone(new tagAndLength.ptr(), tagAndLength); _tuple = parseTagAndLength(bytes$1, offset); $copy(t, _tuple[0], tagAndLength); offset = _tuple[1]; err = _tuple[2]; if (!($interfaceIsEqual(err, $ifaceNil))) { return [offset, err]; } if (invalidLength(offset, t.length, bytes$1.$length)) { err = (x$4 = new SyntaxError.ptr("data truncated"), new x$4.constructor.elem(x$4)); return [offset, err]; } result = new RawValue.ptr(t.class$0, t.tag, t.isCompound, $subslice(bytes$1, offset, (offset + t.length >> 0)), $subslice(bytes$1, 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 = v.Set(_r); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } 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 = $clone(new tagAndLength.ptr(), tagAndLength); _tuple$1 = parseTagAndLength(bytes$1, offset); $copy(t$1, _tuple$1[0], tagAndLength); offset = _tuple$1[1]; err = _tuple$1[2]; if (!($interfaceIsEqual(err, $ifaceNil))) { return [offset, err]; } if (invalidLength(offset, t$1.length, bytes$1.$length)) { err = (x$5 = new SyntaxError.ptr("data truncated"), new x$5.constructor.elem(x$5)); 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$1, offset, (offset + t$1.length >> 0)); _ref = t$1.tag; /* */ if (_ref === 19) { $s = 12; continue; } /* */ if (_ref === 22) { $s = 13; continue; } /* */ if (_ref === 20) { $s = 14; continue; } /* */ if (_ref === 12) { $s = 15; continue; } /* */ if (_ref === 2) { $s = 16; continue; } /* */ if (_ref === 3) { $s = 17; continue; } /* */ if (_ref === 6) { $s = 18; continue; } /* */ if (_ref === 23) { $s = 19; continue; } /* */ if (_ref === 4) { $s = 20; continue; } /* */ $s = 21; continue; /* if (_ref === 19) { */ case 12: _tuple$2 = parsePrintableString(innerBytes); result$1 = new $String(_tuple$2[0]); err = _tuple$2[1]; $s = 22; continue; /* } else if (_ref === 22) { */ case 13: _tuple$3 = parseIA5String(innerBytes); result$1 = new $String(_tuple$3[0]); err = _tuple$3[1]; $s = 22; continue; /* } else if (_ref === 20) { */ case 14: _tuple$4 = parseT61String(innerBytes); result$1 = new $String(_tuple$4[0]); err = _tuple$4[1]; $s = 22; continue; /* } else if (_ref === 12) { */ case 15: _tuple$5 = parseUTF8String(innerBytes); result$1 = new $String(_tuple$5[0]); err = _tuple$5[1]; $s = 22; continue; /* } else if (_ref === 2) { */ case 16: _tuple$6 = parseInt64(innerBytes); result$1 = _tuple$6[0]; err = _tuple$6[1]; $s = 22; continue; /* } else if (_ref === 3) { */ case 17: _tuple$7 = parseBitString(innerBytes); result$1 = new _tuple$7[0].constructor.elem(_tuple$7[0]); err = _tuple$7[1]; $s = 22; continue; /* } else if (_ref === 6) { */ case 18: _tuple$8 = parseObjectIdentifier(innerBytes); result$1 = _tuple$8[0]; err = _tuple$8[1]; $s = 22; continue; /* } else if (_ref === 23) { */ case 19: _r$3 = parseUTCTime(innerBytes); /* */ $s = 23; case 23: 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 = 22; continue; /* } else if (_ref === 4) { */ case 20: result$1 = innerBytes; $s = 22; continue; /* } else { */ case 21: /* } */ case 22: /* } */ case 11: offset = offset + (t$1.length) >> 0; if (!($interfaceIsEqual(err, $ifaceNil))) { return [offset, err]; } /* */ if (!($interfaceIsEqual(result$1, $ifaceNil))) { $s = 24; continue; } /* */ $s = 25; continue; /* if (!($interfaceIsEqual(result$1, $ifaceNil))) { */ case 24: _r$4 = reflect.ValueOf(result$1); /* */ $s = 26; case 26: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } $r = v.Set(_r$4); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 25: return [offset, err]; /* } */ case 6: _r$5 = getUniversalType(fieldType); /* */ $s = 28; case 28: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } _tuple$10 = _r$5; universalTag = _tuple$10[0]; compoundType = _tuple$10[1]; ok1 = _tuple$10[2]; /* */ if (!ok1) { $s = 29; continue; } /* */ $s = 30; continue; /* if (!ok1) { */ case 29: _r$6 = fmt.Sprintf("unknown Go type: %v", new sliceType$2([fieldType])); /* */ $s = 31; case 31: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } err = (x$6 = new StructuralError.ptr(_r$6), new x$6.constructor.elem(x$6)); return [offset, err]; /* } */ case 30: _tuple$11 = parseTagAndLength(bytes$1, offset); t$2 = $clone(_tuple$11[0], tagAndLength); offset = _tuple$11[1]; err = _tuple$11[2]; if (!($interfaceIsEqual(err, $ifaceNil))) { return [offset, err]; } if (params.explicit) { expectedClass = 2; if (params.application) { expectedClass = 1; } 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$12 = parseTagAndLength(bytes$1, offset); $copy(t$2, _tuple$12[0], tagAndLength); offset = _tuple$12[1]; err = _tuple$12[2]; if (!($interfaceIsEqual(err, $ifaceNil))) { return [offset, err]; } } else { if (!($interfaceIsEqual(fieldType, flagType))) { err = (x$7 = new StructuralError.ptr("zero length explicit tag was not an asn1.Flag"), new x$7.constructor.elem(x$7)); return [offset, err]; } v.SetBool(true); return [offset, err]; } } else { ok = setDefaultValue(v, params); if (ok) { offset = initOffset; } else { err = (x$8 = new StructuralError.ptr("explicitly tagged member didn't match"), new x$8.constructor.elem(x$8)); } return [offset, err]; } } if (universalTag === 19) { if (t$2.class$0 === 0) { _ref$1 = t$2.tag; if (_ref$1 === 22 || _ref$1 === 27 || _ref$1 === 20 || _ref$1 === 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$2.nil)) { expectedClass$1 = 2; expectedTag = params.tag.$get(); } if (!params.explicit && params.application && !(params.tag === ptrType$2.nil)) { expectedClass$1 = 1; expectedTag = params.tag.$get(); } /* */ if (!((t$2.class$0 === expectedClass$1)) || !((t$2.tag === expectedTag)) || !(t$2.isCompound === compoundType)) { $s = 32; continue; } /* */ $s = 33; continue; /* if (!((t$2.class$0 === expectedClass$1)) || !((t$2.tag === expectedTag)) || !(t$2.isCompound === compoundType)) { */ case 32: ok$1 = setDefaultValue(v, params); /* */ if (ok$1) { $s = 34; continue; } /* */ $s = 35; continue; /* if (ok$1) { */ case 34: offset = initOffset; $s = 36; continue; /* } else { */ case 35: _arg = new $Int(expectedTag); _arg$1 = new t$2.constructor.elem(t$2); _arg$2 = new params.constructor.elem(params); _r$7 = fieldType.Name(); /* */ $s = 37; case 37: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } _arg$3 = new $String(_r$7); _arg$4 = new $Int(offset); _r$8 = fmt.Sprintf("tags don't match (%d vs %+v) %+v %s @%d", new sliceType$2([_arg, _arg$1, _arg$2, _arg$3, _arg$4])); /* */ $s = 38; case 38: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } err = (x$9 = new StructuralError.ptr(_r$8), new x$9.constructor.elem(x$9)); /* } */ case 36: return [offset, err]; /* } */ case 33: if (invalidLength(offset, t$2.length, bytes$1.$length)) { err = (x$10 = new SyntaxError.ptr("data truncated"), new x$10.constructor.elem(x$10)); return [offset, err]; } innerBytes$1 = $subslice(bytes$1, offset, (offset + t$2.length >> 0)); offset = offset + (t$2.length) >> 0; _ref$2 = fieldType; /* */ if ($interfaceIsEqual(_ref$2, objectIdentifierType)) { $s = 39; continue; } /* */ if ($interfaceIsEqual(_ref$2, bitStringType)) { $s = 40; continue; } /* */ if ($interfaceIsEqual(_ref$2, timeType)) { $s = 41; continue; } /* */ if ($interfaceIsEqual(_ref$2, enumeratedType)) { $s = 42; continue; } /* */ if ($interfaceIsEqual(_ref$2, flagType)) { $s = 43; continue; } /* */ if ($interfaceIsEqual(_ref$2, bigIntType)) { $s = 44; continue; } /* */ $s = 45; continue; /* if ($interfaceIsEqual(_ref$2, objectIdentifierType)) { */ case 39: _tuple$13 = parseObjectIdentifier(innerBytes$1); newSlice = _tuple$13[0]; err1 = _tuple$13[1]; _r$9 = reflect.MakeSlice(v.Type(), newSlice.$length, newSlice.$length); /* */ $s = 46; case 46: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } $r = v.Set(_r$9); /* */ $s = 47; case 47: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* */ if ($interfaceIsEqual(err1, $ifaceNil)) { $s = 48; continue; } /* */ $s = 49; continue; /* if ($interfaceIsEqual(err1, $ifaceNil)) { */ case 48: _arg$5 = v; _r$10 = reflect.ValueOf(newSlice); /* */ $s = 50; case 50: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } _arg$6 = _r$10; _r$11 = reflect.Copy(_arg$5, _arg$6); /* */ $s = 51; case 51: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } _r$11; /* } */ case 49: err = err1; return [offset, err]; $s = 45; continue; /* } else if ($interfaceIsEqual(_ref$2, bitStringType)) { */ case 40: _tuple$14 = parseBitString(innerBytes$1); bs = $clone(_tuple$14[0], BitString); err1$1 = _tuple$14[1]; /* */ if ($interfaceIsEqual(err1$1, $ifaceNil)) { $s = 52; continue; } /* */ $s = 53; continue; /* if ($interfaceIsEqual(err1$1, $ifaceNil)) { */ case 52: _r$12 = reflect.ValueOf(new bs.constructor.elem(bs)); /* */ $s = 54; case 54: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } $r = v.Set(_r$12); /* */ $s = 55; case 55: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 53: err = err1$1; return [offset, err]; $s = 45; continue; /* } else if ($interfaceIsEqual(_ref$2, timeType)) { */ case 41: time$1 = $clone(new time.Time.ptr(), time.Time); err1$2 = $ifaceNil; /* */ if (universalTag === 23) { $s = 56; continue; } /* */ $s = 57; continue; /* if (universalTag === 23) { */ case 56: _r$13 = parseUTCTime(innerBytes$1); /* */ $s = 59; case 59: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } _tuple$15 = _r$13; $copy(time$1, _tuple$15[0], time.Time); err1$2 = _tuple$15[1]; $s = 58; continue; /* } else { */ case 57: _r$14 = parseGeneralizedTime(innerBytes$1); /* */ $s = 60; case 60: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } _tuple$16 = _r$14; $copy(time$1, _tuple$16[0], time.Time); err1$2 = _tuple$16[1]; /* } */ case 58: /* */ if ($interfaceIsEqual(err1$2, $ifaceNil)) { $s = 61; continue; } /* */ $s = 62; continue; /* if ($interfaceIsEqual(err1$2, $ifaceNil)) { */ case 61: _r$15 = reflect.ValueOf(new time$1.constructor.elem(time$1)); /* */ $s = 63; case 63: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } $r = v.Set(_r$15); /* */ $s = 64; case 64: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 62: err = err1$2; return [offset, err]; $s = 45; continue; /* } else if ($interfaceIsEqual(_ref$2, enumeratedType)) { */ case 42: _tuple$17 = parseInt32(innerBytes$1); parsedInt = _tuple$17[0]; err1$3 = _tuple$17[1]; if ($interfaceIsEqual(err1$3, $ifaceNil)) { v.SetInt(new $Int64(0, parsedInt)); } err = err1$3; return [offset, err]; $s = 45; continue; /* } else if ($interfaceIsEqual(_ref$2, flagType)) { */ case 43: v.SetBool(true); return [offset, err]; $s = 45; continue; /* } else if ($interfaceIsEqual(_ref$2, bigIntType)) { */ case 44: parsedInt$1 = parseBigInt(innerBytes$1); _r$16 = reflect.ValueOf(parsedInt$1); /* */ $s = 65; case 65: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } $r = v.Set(_r$16); /* */ $s = 66; case 66: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } return [offset, err]; /* } */ case 45: val = v; _ref$3 = val.Kind(); /* */ if (_ref$3 === 1) { $s = 67; continue; } /* */ if (_ref$3 === 2 || _ref$3 === 5 || _ref$3 === 6) { $s = 68; continue; } /* */ if (_ref$3 === 25) { $s = 69; continue; } /* */ if (_ref$3 === 23) { $s = 70; continue; } /* */ if (_ref$3 === 24) { $s = 71; continue; } /* */ $s = 72; continue; /* if (_ref$3 === 1) { */ case 67: _tuple$18 = parseBool(innerBytes$1); parsedBool = _tuple$18[0]; err1$4 = _tuple$18[1]; if ($interfaceIsEqual(err1$4, $ifaceNil)) { val.SetBool(parsedBool); } err = err1$4; return [offset, err]; $s = 72; continue; /* } else if (_ref$3 === 2 || _ref$3 === 5 || _ref$3 === 6) { */ case 68: _r$17 = val.Type().Size(); /* */ $s = 76; case 76: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } /* */ if (_r$17 === 4) { $s = 73; continue; } /* */ $s = 74; continue; /* if (_r$17 === 4) { */ case 73: _tuple$19 = parseInt32(innerBytes$1); parsedInt$2 = _tuple$19[0]; err1$5 = _tuple$19[1]; if ($interfaceIsEqual(err1$5, $ifaceNil)) { val.SetInt(new $Int64(0, parsedInt$2)); } err = err1$5; $s = 75; continue; /* } else { */ case 74: _tuple$20 = parseInt64(innerBytes$1); parsedInt$3 = _tuple$20[0]; err1$6 = _tuple$20[1]; if ($interfaceIsEqual(err1$6, $ifaceNil)) { val.SetInt(parsedInt$3); } err = err1$6; /* } */ case 75: return [offset, err]; $s = 72; continue; /* } else if (_ref$3 === 25) { */ case 69: structType = fieldType; _r$18 = structType.NumField(); /* */ $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)) { _v$1 = false; $s = 79; continue s; } _r$19 = structType.Field(0); /* */ $s = 81; case 81: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; } _v$1 = $interfaceIsEqual(_r$19.Type, rawContentsType); case 79: /* */ if (_v$1) { $s = 77; continue; } /* */ $s = 78; continue; /* if (_v$1) { */ case 77: bytes$2 = $subslice(bytes$1, initOffset, offset); _r$20 = val.Field(0); /* */ $s = 82; case 82: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; } _r$21 = reflect.ValueOf($subslice(new RawContent(bytes$2.$array), bytes$2.$offset, bytes$2.$offset + bytes$2.$length)); /* */ $s = 83; case 83: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; } $r = _r$20.Set(_r$21); /* */ $s = 84; case 84: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 78: innerOffset = 0; i = 0; /* while (true) { */ case 85: _r$22 = structType.NumField(); /* */ $s = 87; case 87: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } /* if (!(i < _r$22)) { break; } */ if(!(i < _r$22)) { $s = 86; continue; } _r$23 = structType.Field(i); /* */ $s = 88; case 88: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } field = $clone(_r$23, reflect.StructField); /* */ if ((i === 0) && $interfaceIsEqual(field.Type, rawContentsType)) { $s = 89; continue; } /* */ $s = 90; continue; /* if ((i === 0) && $interfaceIsEqual(field.Type, rawContentsType)) { */ case 89: i = i + (1) >> 0; /* continue; */ $s = 85; continue; /* } */ case 90: _r$24 = val.Field(i); /* */ $s = 91; case 91: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } _r$25 = parseField(_r$24, innerBytes$1, innerOffset, parseFieldParameters(new reflect.StructTag(field.Tag).Get("asn1"))); /* */ $s = 92; case 92: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; } _tuple$21 = _r$25; innerOffset = _tuple$21[0]; err = _tuple$21[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { return [offset, err]; } i = i + (1) >> 0; /* } */ $s = 85; continue; case 86: return [offset, err]; $s = 72; continue; /* } else if (_ref$3 === 23) { */ case 70: sliceType$3 = fieldType; _r$26 = sliceType$3.Elem(); /* */ $s = 95; case 95: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; } _r$27 = _r$26.Kind(); /* */ $s = 96; case 96: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; } /* */ if (_r$27 === 8) { $s = 93; continue; } /* */ $s = 94; continue; /* if (_r$27 === 8) { */ case 93: _r$28 = reflect.MakeSlice(sliceType$3, innerBytes$1.$length, innerBytes$1.$length); /* */ $s = 97; case 97: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; } $r = val.Set(_r$28); /* */ $s = 98; case 98: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } _arg$7 = val; _r$29 = reflect.ValueOf(innerBytes$1); /* */ $s = 99; case 99: if($c) { $c = false; _r$29 = _r$29.$blk(); } if (_r$29 && _r$29.$blk !== undefined) { break s; } _arg$8 = _r$29; _r$30 = reflect.Copy(_arg$7, _arg$8); /* */ $s = 100; case 100: if($c) { $c = false; _r$30 = _r$30.$blk(); } if (_r$30 && _r$30.$blk !== undefined) { break s; } _r$30; return [offset, err]; /* } */ case 94: _arg$9 = innerBytes$1; _arg$10 = sliceType$3; _r$31 = sliceType$3.Elem(); /* */ $s = 101; case 101: if($c) { $c = false; _r$31 = _r$31.$blk(); } if (_r$31 && _r$31.$blk !== undefined) { break s; } _arg$11 = _r$31; _r$32 = parseSequenceOf(_arg$9, _arg$10, _arg$11); /* */ $s = 102; case 102: if($c) { $c = false; _r$32 = _r$32.$blk(); } if (_r$32 && _r$32.$blk !== undefined) { break s; } _tuple$22 = _r$32; newSlice$1 = _tuple$22[0]; err1$7 = _tuple$22[1]; /* */ if ($interfaceIsEqual(err1$7, $ifaceNil)) { $s = 103; continue; } /* */ $s = 104; continue; /* if ($interfaceIsEqual(err1$7, $ifaceNil)) { */ case 103: $r = val.Set(newSlice$1); /* */ $s = 105; case 105: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 104: err = err1$7; return [offset, err]; $s = 72; continue; /* } else if (_ref$3 === 24) { */ case 71: v$1 = ""; _ref$4 = universalTag; /* */ if (_ref$4 === 19) { $s = 106; continue; } /* */ if (_ref$4 === 22) { $s = 107; continue; } /* */ if (_ref$4 === 20) { $s = 108; continue; } /* */ if (_ref$4 === 12) { $s = 109; continue; } /* */ if (_ref$4 === 27) { $s = 110; continue; } /* */ $s = 111; continue; /* if (_ref$4 === 19) { */ case 106: _tuple$23 = parsePrintableString(innerBytes$1); v$1 = _tuple$23[0]; err = _tuple$23[1]; $s = 112; continue; /* } else if (_ref$4 === 22) { */ case 107: _tuple$24 = parseIA5String(innerBytes$1); v$1 = _tuple$24[0]; err = _tuple$24[1]; $s = 112; continue; /* } else if (_ref$4 === 20) { */ case 108: _tuple$25 = parseT61String(innerBytes$1); v$1 = _tuple$25[0]; err = _tuple$25[1]; $s = 112; continue; /* } else if (_ref$4 === 12) { */ case 109: _tuple$26 = parseUTF8String(innerBytes$1); v$1 = _tuple$26[0]; err = _tuple$26[1]; $s = 112; continue; /* } else if (_ref$4 === 27) { */ case 110: _tuple$27 = parseT61String(innerBytes$1); v$1 = _tuple$27[0]; err = _tuple$27[1]; $s = 112; continue; /* } else { */ case 111: _r$33 = fmt.Sprintf("internal error: unknown string type %d", new sliceType$2([new $Int(universalTag)])); /* */ $s = 113; case 113: if($c) { $c = false; _r$33 = _r$33.$blk(); } if (_r$33 && _r$33.$blk !== undefined) { break s; } err = (x$11 = new SyntaxError.ptr(_r$33), new x$11.constructor.elem(x$11)); /* } */ case 112: if ($interfaceIsEqual(err, $ifaceNil)) { val.SetString(v$1); } return [offset, err]; /* } */ case 72: _r$34 = v.Type().String(); /* */ $s = 114; case 114: if($c) { $c = false; _r$34 = _r$34.$blk(); } if (_r$34 && _r$34.$blk !== undefined) { break s; } err = (x$12 = new StructuralError.ptr("unsupported: " + _r$34), new x$12.constructor.elem(x$12)); return [offset, err]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parseField }; } $f.$ptr = $ptr; $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$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._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$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$1 = bytes$1; $f.bytes$2 = bytes$2; $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.expectedClass = expectedClass; $f.expectedClass$1 = expectedClass$1; $f.expectedTag = expectedTag; $f.field = field; $f.fieldType = fieldType; $f.i = i; $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$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, _ref, k; _ref = k; if (_ref === 2 || _ref === 3 || _ref === 4 || _ref === 5 || _ref === 6) { return true; } return false; }; setDefaultValue = function(v, params) { var $ptr, ok, params, v; ok = false; params = $clone(params, fieldParameters); v = v; if (!params.optional) { return ok; } ok = true; if (params.defaultValue === ptrType$1.nil) { return ok; } if (canHaveDefaultValue(v.Kind())) { v.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]; return [rest, err]; /* */ $s = -1; case -1: } 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 = _r.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(v, b, 0, parseFieldParameters(params)); /* */ $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; return [rest, err]; } _tmp$2 = $subslice(b, offset); _tmp$3 = $ifaceNil; rest = _tmp$2; err = _tmp$3; return [rest, err]; /* */ $s = -1; case -1: } 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(); _ref = strings.Split(str, ","); _i = 0; while (true) { if (!(_i < _ref.$length)) { break; } part = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]); if (part === "optional") { ret.optional = true; } else if (part === "explicit") { ret.explicit = true; if (ret.tag === ptrType$2.nil) { ret.tag = $newDataPointer(0, ptrType$2); } } 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(part.substring(8), 10, 64); i = _tuple[0]; err = _tuple[1]; if ($interfaceIsEqual(err, $ifaceNil)) { ret.defaultValue = $newDataPointer(new $Int64(0, 0), ptrType$1); ret.defaultValue.$set(i); } } else if (strings.HasPrefix(part, "tag:")) { _tuple$1 = strconv.Atoi(part.substring(4)); i$1 = _tuple$1[0]; err$1 = _tuple$1[1]; if ($interfaceIsEqual(err$1, $ifaceNil)) { ret.tag = $newDataPointer(0, ptrType$2); ret.tag.$set(i$1); } } else if (part === "set") { ret.set = true; } else if (part === "application") { ret.application = true; if (ret.tag === ptrType$2.nil) { ret.tag = $newDataPointer(0, ptrType$2); } } else if (part === "omitempty") { ret.omitEmpty = true; } _i++; } return ret; }; getUniversalType = function(t) { var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _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$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; _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; _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; _ref = t; if ($interfaceIsEqual(_ref, objectIdentifierType)) { _tmp = 6; _tmp$1 = false; _tmp$2 = true; tagNumber = _tmp; isCompound = _tmp$1; ok = _tmp$2; return [tagNumber, isCompound, ok]; } else if ($interfaceIsEqual(_ref, bitStringType)) { _tmp$3 = 3; _tmp$4 = false; _tmp$5 = true; tagNumber = _tmp$3; isCompound = _tmp$4; ok = _tmp$5; return [tagNumber, isCompound, ok]; } else if ($interfaceIsEqual(_ref, timeType)) { _tmp$6 = 23; _tmp$7 = false; _tmp$8 = true; tagNumber = _tmp$6; isCompound = _tmp$7; ok = _tmp$8; return [tagNumber, isCompound, ok]; } else if ($interfaceIsEqual(_ref, enumeratedType)) { _tmp$9 = 10; _tmp$10 = false; _tmp$11 = true; tagNumber = _tmp$9; isCompound = _tmp$10; ok = _tmp$11; return [tagNumber, isCompound, ok]; } else if ($interfaceIsEqual(_ref, bigIntType)) { _tmp$12 = 2; _tmp$13 = false; _tmp$14 = true; tagNumber = _tmp$12; isCompound = _tmp$13; ok = _tmp$14; return [tagNumber, isCompound, ok]; } _r = t.Kind(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _ref$1 = _r; /* */ if (_ref$1 === 1) { $s = 2; continue; } /* */ if (_ref$1 === 2 || _ref$1 === 3 || _ref$1 === 4 || _ref$1 === 5 || _ref$1 === 6) { $s = 3; continue; } /* */ if (_ref$1 === 25) { $s = 4; continue; } /* */ if (_ref$1 === 23) { $s = 5; continue; } /* */ if (_ref$1 === 24) { $s = 6; continue; } /* */ $s = 7; continue; /* if (_ref$1 === 1) { */ case 2: _tmp$15 = 1; _tmp$16 = false; _tmp$17 = true; tagNumber = _tmp$15; isCompound = _tmp$16; ok = _tmp$17; return [tagNumber, isCompound, ok]; $s = 7; continue; /* } else if (_ref$1 === 2 || _ref$1 === 3 || _ref$1 === 4 || _ref$1 === 5 || _ref$1 === 6) { */ case 3: _tmp$18 = 2; _tmp$19 = false; _tmp$20 = true; tagNumber = _tmp$18; isCompound = _tmp$19; ok = _tmp$20; return [tagNumber, isCompound, ok]; $s = 7; continue; /* } else if (_ref$1 === 25) { */ case 4: _tmp$21 = 16; _tmp$22 = true; _tmp$23 = true; tagNumber = _tmp$21; isCompound = _tmp$22; ok = _tmp$23; return [tagNumber, isCompound, ok]; $s = 7; continue; /* } else if (_ref$1 === 23) { */ case 5: _r$1 = t.Elem(); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } _r$2 = _r$1.Kind(); /* */ $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 === 8) { $s = 8; continue; } /* */ $s = 9; continue; /* if (_r$2 === 8) { */ case 8: _tmp$24 = 4; _tmp$25 = false; _tmp$26 = true; tagNumber = _tmp$24; isCompound = _tmp$25; ok = _tmp$26; return [tagNumber, isCompound, ok]; /* } */ case 9: _r$3 = t.Name(); /* */ $s = 14; case 14: 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 = 15; case 15: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } /* */ if (_r$4) { $s = 12; continue; } /* */ $s = 13; continue; /* if (_r$4) { */ case 12: _tmp$27 = 17; _tmp$28 = true; _tmp$29 = true; tagNumber = _tmp$27; isCompound = _tmp$28; ok = _tmp$29; return [tagNumber, isCompound, ok]; /* } */ case 13: _tmp$30 = 16; _tmp$31 = true; _tmp$32 = true; tagNumber = _tmp$30; isCompound = _tmp$31; ok = _tmp$32; return [tagNumber, isCompound, ok]; $s = 7; continue; /* } else if (_ref$1 === 24) { */ case 6: _tmp$33 = 19; _tmp$34 = false; _tmp$35 = true; tagNumber = _tmp$33; isCompound = _tmp$34; ok = _tmp$35; return [tagNumber, isCompound, ok]; /* } */ case 7: _tmp$36 = 0; _tmp$37 = false; _tmp$38 = false; tagNumber = _tmp$36; isCompound = _tmp$37; ok = _tmp$38; return [tagNumber, isCompound, ok]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: getUniversalType }; } $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._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$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; }; newForkableWriter = function() { var $ptr; return new forkableWriter.ptr(new bytes.Buffer.ptr(), ptrType$3.nil, ptrType$3.nil); }; forkableWriter.ptr.prototype.fork = function() { var $ptr, _tmp, _tmp$1, f, post, pre; pre = ptrType$3.nil; post = ptrType$3.nil; f = this; if (!(f.pre === ptrType$3.nil) || !(f.post === ptrType$3.nil)) { $panic(new $String("have already forked")); } f.pre = newForkableWriter(); f.post = newForkableWriter(); _tmp = f.pre; _tmp$1 = f.post; pre = _tmp; post = _tmp$1; return [pre, post]; }; forkableWriter.prototype.fork = function() { return this.$val.fork(); }; forkableWriter.ptr.prototype.Len = function() { var $ptr, f, l; l = 0; f = this; l = l + (f.Buffer.Len()) >> 0; if (!(f.pre === ptrType$3.nil)) { l = l + (f.pre.Len()) >> 0; } if (!(f.post === ptrType$3.nil)) { l = l + (f.post.Len()) >> 0; } return l; }; forkableWriter.prototype.Len = function() { return this.$val.Len(); }; forkableWriter.ptr.prototype.writeTo = function(out) { var $ptr, _r, _r$1, _r$2, _tuple, _tuple$1, _tuple$2, err, f, n, nn, 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; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; err = $f.err; f = $f.f; n = $f.n; nn = $f.nn; out = $f.out; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: n = 0; err = $ifaceNil; f = this; _r = out.Write(f.Buffer.Bytes()); /* */ $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))) { return [n, err]; } nn = 0; /* */ if (!(f.pre === ptrType$3.nil)) { $s = 2; continue; } /* */ $s = 3; continue; /* if (!(f.pre === ptrType$3.nil)) { */ case 2: _r$1 = f.pre.writeTo(out); /* */ $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; nn = _tuple$1[0]; err = _tuple$1[1]; n = n + (nn) >> 0; if (!($interfaceIsEqual(err, $ifaceNil))) { return [n, err]; } /* } */ case 3: /* */ if (!(f.post === ptrType$3.nil)) { $s = 5; continue; } /* */ $s = 6; continue; /* if (!(f.post === ptrType$3.nil)) { */ case 5: _r$2 = f.post.writeTo(out); /* */ $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; nn = _tuple$2[0]; err = _tuple$2[1]; n = n + (nn) >> 0; /* } */ case 6: return [n, err]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: forkableWriter.ptr.prototype.writeTo }; } $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.f = f; $f.n = n; $f.nn = nn; $f.out = out; $f.$s = $s; $f.$r = $r; return $f; }; forkableWriter.prototype.writeTo = function(out) { return this.$val.writeTo(out); }; marshalBase128Int = function(out, n) { var $ptr, err, i, i$1, l, n, o, out; err = $ifaceNil; if ((n.$high === 0 && n.$low === 0)) { err = out.Buffer.WriteByte(0); return err; } 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)); } i$1 = l - 1 >> 0; while (true) { if (!(i$1 >= 0)) { break; } o = ($shiftRightInt64(n, ((i$1 * 7 >> 0) >>> 0)).$low << 24 >>> 24); o = (o & (127)) >>> 0; if (!((i$1 === 0))) { o = (o | (128)) >>> 0; } err = out.Buffer.WriteByte(o); if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } i$1 = i$1 - (1) >> 0; } err = $ifaceNil; return err; }; marshalInt64 = function(out, i) { var $ptr, err, i, n, out; err = $ifaceNil; n = int64Length(i); while (true) { if (!(n > 0)) { break; } err = out.Buffer.WriteByte(($shiftRightInt64(i, ((((n - 1 >> 0)) * 8 >> 0) >>> 0)).$low << 24 >>> 24)); if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } n = n - (1) >> 0; } err = $ifaceNil; return err; }; int64Length = function(i) { var $ptr, i, numBytes; numBytes = 0; numBytes = 1; while (true) { if (!((i.$high > 0 || (i.$high === 0 && i.$low > 127)))) { break; } numBytes = numBytes + (1) >> 0; i = $shiftRightInt64(i, (8)); } while (true) { if (!((i.$high < -1 || (i.$high === -1 && i.$low < 4294967168)))) { break; } numBytes = numBytes + (1) >> 0; i = $shiftRightInt64(i, (8)); } return numBytes; }; marshalBigInt = function(out, n) { var $ptr, _i, _ref, _tuple, _tuple$1, bytes$1, bytes$2, err, i, n, nMinus1, out; err = $ifaceNil; if (n.Sign() < 0) { nMinus1 = new big.Int.ptr().Neg(n); nMinus1.Sub(nMinus1, bigOne); bytes$1 = nMinus1.Bytes(); _ref = bytes$1; _i = 0; while (true) { if (!(_i < _ref.$length)) { break; } i = _i; ((i < 0 || i >= bytes$1.$length) ? $throwRuntimeError("index out of range") : bytes$1.$array[bytes$1.$offset + i] = (((i < 0 || i >= bytes$1.$length) ? $throwRuntimeError("index out of range") : bytes$1.$array[bytes$1.$offset + i]) ^ (255)) << 24 >>> 24); _i++; } if ((bytes$1.$length === 0) || ((((0 >= bytes$1.$length ? $throwRuntimeError("index out of range") : bytes$1.$array[bytes$1.$offset + 0]) & 128) >>> 0) === 0)) { err = out.Buffer.WriteByte(255); if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } } _tuple = out.Buffer.Write(bytes$1); err = _tuple[1]; } else if (n.Sign() === 0) { err = out.Buffer.WriteByte(0); } else { bytes$2 = n.Bytes(); if (bytes$2.$length > 0 && !(((((0 >= bytes$2.$length ? $throwRuntimeError("index out of range") : bytes$2.$array[bytes$2.$offset + 0]) & 128) >>> 0) === 0))) { err = out.Buffer.WriteByte(0); if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } } _tuple$1 = out.Buffer.Write(bytes$2); err = _tuple$1[1]; } return err; }; marshalLength = function(out, i) { var $ptr, err, i, n, out; err = $ifaceNil; n = lengthLength(i); while (true) { if (!(n > 0)) { break; } err = out.Buffer.WriteByte((((i >> $min(((((n - 1 >> 0)) * 8 >> 0) >>> 0), 31)) >> 0) << 24 >>> 24)); if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } n = n - (1) >> 0; } err = $ifaceNil; return err; }; 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; }; marshalTagAndLength = function(out, t) { var $ptr, b, err, l, out, t; err = $ifaceNil; t = $clone(t, tagAndLength); b = (t.class$0 << 24 >>> 24) << 6 << 24 >>> 24; if (t.isCompound) { b = (b | (32)) >>> 0; } if (t.tag >= 31) { b = (b | (31)) >>> 0; err = out.Buffer.WriteByte(b); if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } err = marshalBase128Int(out, new $Int64(0, t.tag)); if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } } else { b = (b | ((t.tag << 24 >>> 24))) >>> 0; err = out.Buffer.WriteByte(b); if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } } if (t.length >= 128) { l = lengthLength(t.length); err = out.Buffer.WriteByte((128 | (l << 24 >>> 24)) >>> 0); if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } err = marshalLength(out, t.length); if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } } else { err = out.Buffer.WriteByte((t.length << 24 >>> 24)); if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } } err = $ifaceNil; return err; }; marshalBitString = function(out, b) { var $ptr, _r, _r$1, _tuple, b, err, out, paddingBits; err = $ifaceNil; b = $clone(b, BitString); paddingBits = ((_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); err = out.Buffer.WriteByte(paddingBits); if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } _tuple = out.Buffer.Write(b.Bytes); err = _tuple[1]; return err; }; marshalObjectIdentifier = function(out, oid) { var $ptr, err, i, oid, out, x$3; err = $ifaceNil; if (oid.$length < 2 || (0 >= oid.$length ? $throwRuntimeError("index out of range") : oid.$array[oid.$offset + 0]) > 2 || ((0 >= oid.$length ? $throwRuntimeError("index out of range") : oid.$array[oid.$offset + 0]) < 2 && (1 >= oid.$length ? $throwRuntimeError("index out of range") : oid.$array[oid.$offset + 1]) >= 40)) { err = (x$3 = new StructuralError.ptr("invalid object identifier"), new x$3.constructor.elem(x$3)); return err; } err = marshalBase128Int(out, new $Int64(0, (((0 >= oid.$length ? $throwRuntimeError("index out of range") : oid.$array[oid.$offset + 0]) * 40 >> 0) + (1 >= oid.$length ? $throwRuntimeError("index out of range") : oid.$array[oid.$offset + 1]) >> 0))); if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } i = 2; while (true) { if (!(i < oid.$length)) { break; } err = marshalBase128Int(out, new $Int64(0, ((i < 0 || i >= oid.$length) ? $throwRuntimeError("index out of range") : oid.$array[oid.$offset + i]))); if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } i = i + (1) >> 0; } return err; }; marshalPrintableString = function(out, s) { var $ptr, _i, _ref, _tuple, b, c, err, out, s, x$3; err = $ifaceNil; b = new sliceType($stringToBytes(s)); _ref = b; _i = 0; while (true) { if (!(_i < _ref.$length)) { break; } c = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]); if (!isPrintable(c)) { err = (x$3 = new StructuralError.ptr("PrintableString contains invalid character"), new x$3.constructor.elem(x$3)); return err; } _i++; } _tuple = out.Buffer.Write(b); err = _tuple[1]; return err; }; marshalIA5String = function(out, s) { var $ptr, _i, _ref, _tuple, b, c, err, out, s, x$3; err = $ifaceNil; b = new sliceType($stringToBytes(s)); _ref = b; _i = 0; while (true) { if (!(_i < _ref.$length)) { break; } c = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]); if (c > 127) { err = (x$3 = new StructuralError.ptr("IA5String contains invalid character"), new x$3.constructor.elem(x$3)); return err; } _i++; } _tuple = out.Buffer.Write(b); err = _tuple[1]; return err; }; marshalUTF8String = function(out, s) { var $ptr, _tuple, err, out, s; err = $ifaceNil; _tuple = out.Buffer.Write(new sliceType($stringToBytes(s))); err = _tuple[1]; return err; }; marshalTwoDigits = function(out, v) { var $ptr, _q, _r, _r$1, err, out, v; err = $ifaceNil; err = out.Buffer.WriteByte(((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)); if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } err = out.Buffer.WriteByte(((48 + (_r$1 = v % 10, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) >> 0) << 24 >>> 24)); return err; }; marshalFourDigits = function(out, v) { var $ptr, _i, _q, _r, _ref, _tuple, bytes$1, err, i, out, v, x$3; err = $ifaceNil; bytes$1 = $clone(arrayType.zero(), arrayType); _ref = bytes$1; _i = 0; while (true) { if (!(_i < 4)) { break; } i = _i; (x$3 = 3 - i >> 0, ((x$3 < 0 || x$3 >= bytes$1.length) ? $throwRuntimeError("index out of range") : bytes$1[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++; } _tuple = out.Buffer.Write(new sliceType(bytes$1)); err = _tuple[1]; return err; }; 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: t = $clone(t, time.Time); _r = t.Year(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } year = _r; return year < 1950 || year >= 2050; /* */ $s = -1; case -1: } 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; }; marshalUTCTime = function(out, t) { var $ptr, _r, _r$1, err, out, 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; err = $f.err; out = $f.out; t = $f.t; x$3 = $f.x$3; year = $f.year; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: err = $ifaceNil; t = $clone(t, time.Time); _r = t.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) { err = marshalTwoDigits(out, (year - 1900 >> 0)); } else if (2000 <= year && year < 2050) { err = marshalTwoDigits(out, (year - 2000 >> 0)); } else { err = (x$3 = new StructuralError.ptr("cannot represent time as UTCTime"), new x$3.constructor.elem(x$3)); return err; } if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } _r$1 = marshalTimeCommon(out, t); /* */ $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; return err; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: marshalUTCTime }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.err = err; $f.out = out; $f.t = t; $f.x$3 = x$3; $f.year = year; $f.$s = $s; $f.$r = $r; return $f; }; marshalGeneralizedTime = function(out, t) { var $ptr, _r, _r$1, err, out, 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; err = $f.err; out = $f.out; t = $f.t; x$3 = $f.x$3; year = $f.year; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: err = $ifaceNil; t = $clone(t, time.Time); _r = t.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) { err = (x$3 = new StructuralError.ptr("cannot represent time as GeneralizedTime"), new x$3.constructor.elem(x$3)); return err; } err = marshalFourDigits(out, year); if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } _r$1 = marshalTimeCommon(out, t); /* */ $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; return err; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: marshalGeneralizedTime }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.err = err; $f.out = out; $f.t = t; $f.x$3 = x$3; $f.year = year; $f.$s = $s; $f.$r = $r; return $f; }; marshalTimeCommon = function(out, t) { var $ptr, _q, _q$1, _q$2, _r, _r$1, _r$2, _r$3, _tuple, _tuple$1, _tuple$2, day, err, hour, min, month, offset, offsetMinutes, out, 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; err = $f.err; hour = $f.hour; min = $f.min; month = $f.month; offset = $f.offset; offsetMinutes = $f.offsetMinutes; out = $f.out; sec = $f.sec; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: err = $ifaceNil; t = $clone(t, time.Time); _r = t.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]; err = marshalTwoDigits(out, (month >> 0)); if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } err = marshalTwoDigits(out, day); if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } _r$1 = t.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]; err = marshalTwoDigits(out, hour); if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } err = marshalTwoDigits(out, min); if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } err = marshalTwoDigits(out, sec); if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } _r$2 = t.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) { err = out.Buffer.WriteByte(90); return err; } else if (offset > 0) { err = out.Buffer.WriteByte(43); } else if (offset < 0) { err = out.Buffer.WriteByte(45); } if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } 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; } err = marshalTwoDigits(out, (_q$2 = offsetMinutes / 60, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >> 0 : $throwRuntimeError("integer divide by zero"))); if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } err = marshalTwoDigits(out, (_r$3 = offsetMinutes % 60, _r$3 === _r$3 ? _r$3 : $throwRuntimeError("integer divide by zero"))); return err; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: marshalTimeCommon }; } $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.err = err; $f.hour = hour; $f.min = min; $f.month = month; $f.offset = offset; $f.offsetMinutes = offsetMinutes; $f.out = out; $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); }; marshalBody = function(out, value, params) { var $ptr, _arg, _arg$1, _arg$10, _arg$11, _arg$12, _arg$13, _arg$14, _arg$15, _arg$16, _arg$17, _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$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _tuple, _tuple$1, _tuple$2, _tuple$3, _v, bytes$1, bytes$2, err, fp, i, i$1, i$2, i$3, out, params, pre, pre$1, s, sliceType$3, startingField, t, t$1, v, value, 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; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$10 = $f._arg$10; _arg$11 = $f._arg$11; _arg$12 = $f._arg$12; _arg$13 = $f._arg$13; _arg$14 = $f._arg$14; _arg$15 = $f._arg$15; _arg$16 = $f._arg$16; _arg$17 = $f._arg$17; _arg$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$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; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _v = $f._v; bytes$1 = $f.bytes$1; bytes$2 = $f.bytes$2; err = $f.err; fp = $f.fp; i = $f.i; i$1 = $f.i$1; i$2 = $f.i$2; i$3 = $f.i$3; out = $f.out; params = $f.params; pre = $f.pre; pre$1 = $f.pre$1; s = $f.s; sliceType$3 = $f.sliceType$3; 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; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: err = $ifaceNil; params = $clone(params, fieldParameters); value = value; _ref = value.Type(); /* */ if ($interfaceIsEqual(_ref, timeType)) { $s = 1; continue; } /* */ if ($interfaceIsEqual(_ref, bitStringType)) { $s = 2; continue; } /* */ if ($interfaceIsEqual(_ref, objectIdentifierType)) { $s = 3; continue; } /* */ if ($interfaceIsEqual(_ref, bigIntType)) { $s = 4; continue; } /* */ $s = 5; continue; /* if ($interfaceIsEqual(_ref, timeType)) { */ case 1: _r = value.Interface(); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } t = $clone($assertType(_r, time.Time), time.Time); _r$1 = outsideUTCRange(t); /* */ $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 = 7; continue; } /* */ $s = 8; continue; /* if (_r$1) { */ case 7: _r$2 = marshalGeneralizedTime(out, t); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } err = _r$2; return err; $s = 9; continue; /* } else { */ case 8: _r$3 = marshalUTCTime(out, t); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } err = _r$3; return err; /* } */ case 9: $s = 5; continue; /* } else if ($interfaceIsEqual(_ref, bitStringType)) { */ case 2: _arg = out; _r$4 = value.Interface(); /* */ $s = 13; case 13: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } _arg$1 = $assertType(_r$4, BitString); _r$5 = marshalBitString(_arg, _arg$1); /* */ $s = 14; case 14: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } err = _r$5; return err; $s = 5; continue; /* } else if ($interfaceIsEqual(_ref, objectIdentifierType)) { */ case 3: _arg$2 = out; _r$6 = value.Interface(); /* */ $s = 15; case 15: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } _arg$3 = (x$3 = $assertType(_r$6, ObjectIdentifier), $subslice(new sliceType$1(x$3.$array), x$3.$offset, x$3.$offset + x$3.$length)); _r$7 = marshalObjectIdentifier(_arg$2, _arg$3); /* */ $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; return err; $s = 5; continue; /* } else if ($interfaceIsEqual(_ref, bigIntType)) { */ case 4: _arg$4 = out; _r$8 = value.Interface(); /* */ $s = 17; case 17: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } _arg$5 = $assertType(_r$8, ptrType$4); _r$9 = marshalBigInt(_arg$4, _arg$5); /* */ $s = 18; case 18: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } err = _r$9; return err; /* } */ case 5: v = value; _ref$1 = v.Kind(); /* */ if (_ref$1 === 1) { $s = 19; continue; } /* */ if (_ref$1 === 2 || _ref$1 === 3 || _ref$1 === 4 || _ref$1 === 5 || _ref$1 === 6) { $s = 20; continue; } /* */ if (_ref$1 === 25) { $s = 21; continue; } /* */ if (_ref$1 === 23) { $s = 22; continue; } /* */ if (_ref$1 === 24) { $s = 23; continue; } /* */ $s = 24; continue; /* if (_ref$1 === 1) { */ case 19: if (v.Bool()) { err = out.Buffer.WriteByte(255); return err; } else { err = out.Buffer.WriteByte(0); return err; } $s = 24; continue; /* } else if (_ref$1 === 2 || _ref$1 === 3 || _ref$1 === 4 || _ref$1 === 5 || _ref$1 === 6) { */ case 20: err = marshalInt64(out, v.Int()); return err; $s = 24; continue; /* } else if (_ref$1 === 25) { */ case 21: t$1 = v.Type(); startingField = 0; _r$10 = t$1.NumField(); /* */ $s = 28; case 28: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } if (!(_r$10 > 0)) { _v = false; $s = 27; continue s; } _r$11 = t$1.Field(0); /* */ $s = 29; case 29: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } _v = $interfaceIsEqual(_r$11.Type, rawContentsType); case 27: /* */ if (_v) { $s = 25; continue; } /* */ $s = 26; continue; /* if (_v) { */ case 25: _r$12 = v.Field(0); /* */ $s = 30; case 30: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } s = _r$12; /* */ if (s.Len() > 0) { $s = 31; continue; } /* */ $s = 32; continue; /* if (s.Len() > 0) { */ case 31: bytes$1 = $makeSlice(sliceType, s.Len()); i = 0; /* while (true) { */ case 34: /* if (!(i < s.Len())) { break; } */ if(!(i < s.Len())) { $s = 35; continue; } _r$13 = s.Index(i); /* */ $s = 36; case 36: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } _r$14 = _r$13.Uint(); /* */ $s = 37; case 37: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } ((i < 0 || i >= bytes$1.$length) ? $throwRuntimeError("index out of range") : bytes$1.$array[bytes$1.$offset + i] = (_r$14.$low << 24 >>> 24)); i = i + (1) >> 0; /* } */ $s = 34; continue; case 35: _tuple = out.Buffer.Write(stripTagAndLength(bytes$1)); err = _tuple[1]; return err; $s = 33; continue; /* } else { */ case 32: startingField = 1; /* } */ case 33: /* } */ case 26: i$1 = startingField; /* while (true) { */ case 38: _r$15 = t$1.NumField(); /* */ $s = 40; case 40: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } /* if (!(i$1 < _r$15)) { break; } */ if(!(i$1 < _r$15)) { $s = 39; continue; } pre = ptrType$3.nil; _tuple$1 = out.fork(); pre = _tuple$1[0]; out = _tuple$1[1]; _arg$6 = pre; _r$16 = v.Field(i$1); /* */ $s = 41; case 41: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } _arg$7 = _r$16; _r$17 = t$1.Field(i$1); /* */ $s = 42; case 42: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } _r$18 = new reflect.StructTag(_r$17.Tag).Get("asn1"); /* */ $s = 43; case 43: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; } _r$19 = parseFieldParameters(_r$18); /* */ $s = 44; case 44: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; } _arg$8 = _r$19; _r$20 = marshalField(_arg$6, _arg$7, _arg$8); /* */ $s = 45; case 45: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; } err = _r$20; if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } i$1 = i$1 + (1) >> 0; /* } */ $s = 38; continue; case 39: return err; $s = 24; continue; /* } else if (_ref$1 === 23) { */ case 22: sliceType$3 = v.Type(); _r$21 = sliceType$3.Elem(); /* */ $s = 48; case 48: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; } _r$22 = _r$21.Kind(); /* */ $s = 49; case 49: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } /* */ if (_r$22 === 8) { $s = 46; continue; } /* */ $s = 47; continue; /* if (_r$22 === 8) { */ case 46: bytes$2 = $makeSlice(sliceType, v.Len()); i$2 = 0; /* while (true) { */ case 50: /* if (!(i$2 < v.Len())) { break; } */ if(!(i$2 < v.Len())) { $s = 51; continue; } _r$23 = v.Index(i$2); /* */ $s = 52; case 52: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } _r$24 = _r$23.Uint(); /* */ $s = 53; case 53: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } ((i$2 < 0 || i$2 >= bytes$2.$length) ? $throwRuntimeError("index out of range") : bytes$2.$array[bytes$2.$offset + i$2] = (_r$24.$low << 24 >>> 24)); i$2 = i$2 + (1) >> 0; /* } */ $s = 50; continue; case 51: _tuple$2 = out.Buffer.Write(bytes$2); err = _tuple$2[1]; return err; /* } */ case 47: fp = $clone(new fieldParameters.ptr(), fieldParameters); i$3 = 0; /* while (true) { */ case 54: /* if (!(i$3 < v.Len())) { break; } */ if(!(i$3 < v.Len())) { $s = 55; continue; } pre$1 = ptrType$3.nil; _tuple$3 = out.fork(); pre$1 = _tuple$3[0]; out = _tuple$3[1]; _arg$9 = pre$1; _r$25 = v.Index(i$3); /* */ $s = 56; case 56: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; } _arg$10 = _r$25; _arg$11 = fp; _r$26 = marshalField(_arg$9, _arg$10, _arg$11); /* */ $s = 57; case 57: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; } err = _r$26; if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } i$3 = i$3 + (1) >> 0; /* } */ $s = 54; continue; case 55: return err; $s = 24; continue; /* } else if (_ref$1 === 24) { */ case 23: _ref$2 = params.stringType; /* */ if (_ref$2 === 22) { $s = 58; continue; } /* */ if (_ref$2 === 19) { $s = 59; continue; } /* */ $s = 60; continue; /* if (_ref$2 === 22) { */ case 58: _arg$12 = out; _r$27 = v.String(); /* */ $s = 62; case 62: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; } _arg$13 = _r$27; _r$28 = marshalIA5String(_arg$12, _arg$13); /* */ $s = 63; case 63: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; } err = _r$28; return err; $s = 61; continue; /* } else if (_ref$2 === 19) { */ case 59: _arg$14 = out; _r$29 = v.String(); /* */ $s = 64; case 64: if($c) { $c = false; _r$29 = _r$29.$blk(); } if (_r$29 && _r$29.$blk !== undefined) { break s; } _arg$15 = _r$29; _r$30 = marshalPrintableString(_arg$14, _arg$15); /* */ $s = 65; case 65: if($c) { $c = false; _r$30 = _r$30.$blk(); } if (_r$30 && _r$30.$blk !== undefined) { break s; } err = _r$30; return err; $s = 61; continue; /* } else { */ case 60: _arg$16 = out; _r$31 = v.String(); /* */ $s = 66; case 66: if($c) { $c = false; _r$31 = _r$31.$blk(); } if (_r$31 && _r$31.$blk !== undefined) { break s; } _arg$17 = _r$31; _r$32 = marshalUTF8String(_arg$16, _arg$17); /* */ $s = 67; case 67: if($c) { $c = false; _r$32 = _r$32.$blk(); } if (_r$32 && _r$32.$blk !== undefined) { break s; } err = _r$32; return err; /* } */ case 61: /* } */ case 24: err = (x$4 = new StructuralError.ptr("unknown Go type"), new x$4.constructor.elem(x$4)); return err; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: marshalBody }; } $f.$ptr = $ptr; $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$10 = _arg$10; $f._arg$11 = _arg$11; $f._arg$12 = _arg$12; $f._arg$13 = _arg$13; $f._arg$14 = _arg$14; $f._arg$15 = _arg$15; $f._arg$16 = _arg$16; $f._arg$17 = _arg$17; $f._arg$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$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._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._v = _v; $f.bytes$1 = bytes$1; $f.bytes$2 = bytes$2; $f.err = err; $f.fp = fp; $f.i = i; $f.i$1 = i$1; $f.i$2 = i$2; $f.i$3 = i$3; $f.out = out; $f.params = params; $f.pre = pre; $f.pre$1 = pre$1; $f.s = s; $f.sliceType$3 = sliceType$3; $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.$s = $s; $f.$r = $r; return $f; }; marshalField = function(out, v, params) { var $ptr, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _i, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _rune, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _v, body, bodyLen, class$1, defaultValue, err, explicitTag, isCompound, ok, out, params, r, rv, tag, tags, v, 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; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _arg$3 = $f._arg$3; _arg$4 = $f._arg$4; _arg$5 = $f._arg$5; _arg$6 = $f._arg$6; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$17 = $f._r$17; _r$18 = $f._r$18; _r$19 = $f._r$19; _r$2 = $f._r$2; _r$20 = $f._r$20; _r$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; _rune = $f._rune; _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; body = $f.body; bodyLen = $f.bodyLen; class$1 = $f.class$1; defaultValue = $f.defaultValue; err = $f.err; explicitTag = $f.explicitTag; isCompound = $f.isCompound; ok = $f.ok; out = $f.out; params = $f.params; r = $f.r; rv = $f.rv; tag = $f.tag; tags = $f.tags; v = $f.v; 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: err = $ifaceNil; params = $clone(params, fieldParameters); v = v; if (!(v.Kind() === 20)) { _v = false; $s = 3; continue s; } _r = v.Type().NumMethod(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _v = _r === 0; case 3: /* */ if (_v) { $s = 1; continue; } /* */ $s = 2; continue; /* if (_v) { */ case 1: _arg = out; _r$1 = v.Elem(); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } _arg$1 = _r$1; _arg$2 = params; _r$2 = marshalField(_arg, _arg$1, _arg$2); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } err = _r$2; return err; /* } */ case 2: if ((v.Kind() === 23) && (v.Len() === 0) && params.omitEmpty) { return err; } /* */ if (params.optional && !(params.defaultValue === ptrType$1.nil) && canHaveDefaultValue(v.Kind())) { $s = 7; continue; } /* */ $s = 8; continue; /* if (params.optional && !(params.defaultValue === ptrType$1.nil) && canHaveDefaultValue(v.Kind())) { */ case 7: _r$3 = reflect.New(v.Type()); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } _r$4 = _r$3.Elem(); /* */ $s = 10; case 10: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } defaultValue = _r$4; defaultValue.SetInt(params.defaultValue.$get()); _r$5 = v.Interface(); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } _arg$3 = _r$5; _r$6 = defaultValue.Interface(); /* */ $s = 14; case 14: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } _arg$4 = _r$6; _r$7 = reflect.DeepEqual(_arg$3, _arg$4); /* */ $s = 15; case 15: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } /* */ if (_r$7) { $s = 11; continue; } /* */ $s = 12; continue; /* if (_r$7) { */ case 11: return err; /* } */ case 12: /* } */ case 8: /* */ if (params.optional && params.defaultValue === ptrType$1.nil) { $s = 16; continue; } /* */ $s = 17; continue; /* if (params.optional && params.defaultValue === ptrType$1.nil) { */ case 16: _r$8 = v.Interface(); /* */ $s = 20; case 20: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } _arg$5 = _r$8; _r$9 = reflect.Zero(v.Type()); /* */ $s = 21; case 21: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } _r$10 = _r$9.Interface(); /* */ $s = 22; case 22: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } _arg$6 = _r$10; _r$11 = reflect.DeepEqual(_arg$5, _arg$6); /* */ $s = 23; case 23: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } /* */ if (_r$11) { $s = 18; continue; } /* */ $s = 19; continue; /* if (_r$11) { */ case 18: return err; /* } */ case 19: /* } */ case 17: /* */ if ($interfaceIsEqual(v.Type(), rawValueType)) { $s = 24; continue; } /* */ $s = 25; continue; /* if ($interfaceIsEqual(v.Type(), rawValueType)) { */ case 24: _r$12 = v.Interface(); /* */ $s = 26; case 26: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } rv = $clone($assertType(_r$12, RawValue), RawValue); if (!((rv.FullBytes.$length === 0))) { _tuple = out.Buffer.Write(rv.FullBytes); err = _tuple[1]; } else { err = marshalTagAndLength(out, new tagAndLength.ptr(rv.Class, rv.Tag, rv.Bytes.$length, rv.IsCompound)); if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } _tuple$1 = out.Buffer.Write(rv.Bytes); err = _tuple$1[1]; } return err; /* } */ case 25: _r$13 = getUniversalType(v.Type()); /* */ $s = 27; case 27: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } _tuple$2 = _r$13; tag = _tuple$2[0]; isCompound = _tuple$2[1]; ok = _tuple$2[2]; /* */ if (!ok) { $s = 28; continue; } /* */ $s = 29; continue; /* if (!ok) { */ case 28: _r$14 = fmt.Sprintf("unknown Go type: %v", new sliceType$2([v.Type()])); /* */ $s = 30; case 30: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } err = (x$3 = new StructuralError.ptr(_r$14), new x$3.constructor.elem(x$3)); return err; /* } */ case 29: class$1 = 0; if (!((params.stringType === 0)) && !((tag === 19))) { err = (x$4 = new StructuralError.ptr("explicit string type given to non-string member"), new x$4.constructor.elem(x$4)); return err; } _ref = tag; /* */ if (_ref === 19) { $s = 31; continue; } /* */ if (_ref === 23) { $s = 32; continue; } /* */ $s = 33; continue; /* if (_ref === 19) { */ case 31: /* */ if (params.stringType === 0) { $s = 34; continue; } /* */ $s = 35; continue; /* if (params.stringType === 0) { */ case 34: _r$15 = v.String(); /* */ $s = 37; case 37: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } _ref$1 = _r$15; _i = 0; /* while (true) { */ case 38: /* if (!(_i < _ref$1.length)) { break; } */ if(!(_i < _ref$1.length)) { $s = 39; continue; } _rune = $decodeRune(_ref$1, _i); r = _rune[0]; /* */ if (r >= 128 || !isPrintable((r << 24 >>> 24))) { $s = 40; continue; } /* */ $s = 41; continue; /* if (r >= 128 || !isPrintable((r << 24 >>> 24))) { */ case 40: _r$16 = v.String(); /* */ $s = 44; case 44: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } _r$17 = utf8.ValidString(_r$16); /* */ $s = 45; case 45: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } /* */ if (!_r$17) { $s = 42; continue; } /* */ $s = 43; continue; /* if (!_r$17) { */ case 42: err = errors.New("asn1: string not valid UTF-8"); return err; /* } */ case 43: tag = 12; /* break; */ $s = 39; continue; /* } */ case 41: _i += _rune[1]; /* } */ $s = 38; continue; case 39: $s = 36; continue; /* } else { */ case 35: tag = params.stringType; /* } */ case 36: $s = 33; continue; /* } else if (_ref === 23) { */ case 32: _r$18 = v.Interface(); /* */ $s = 48; case 48: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; } _r$19 = outsideUTCRange($assertType(_r$18, time.Time)); /* */ $s = 49; case 49: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; } /* */ if (_r$19) { $s = 46; continue; } /* */ $s = 47; continue; /* if (_r$19) { */ case 46: tag = 24; /* } */ case 47: /* } */ case 33: if (params.set) { if (!((tag === 16))) { err = (x$5 = new StructuralError.ptr("non sequence tagged as set"), new x$5.constructor.elem(x$5)); return err; } tag = 17; } _tuple$3 = out.fork(); tags = _tuple$3[0]; body = _tuple$3[1]; _r$20 = marshalBody(body, v, params); /* */ $s = 50; case 50: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; } err = _r$20; if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } bodyLen = body.Len(); explicitTag = ptrType$3.nil; if (params.explicit) { _tuple$4 = tags.fork(); explicitTag = _tuple$4[0]; tags = _tuple$4[1]; } if (!params.explicit && !(params.tag === ptrType$2.nil)) { tag = params.tag.$get(); class$1 = 2; } err = marshalTagAndLength(tags, new tagAndLength.ptr(class$1, tag, bodyLen, isCompound)); if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } if (params.explicit) { err = marshalTagAndLength(explicitTag, new tagAndLength.ptr(2, params.tag.$get(), bodyLen + tags.Len() >> 0, true)); } err = $ifaceNil; return err; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: marshalField }; } $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._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$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._rune = _rune; $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.body = body; $f.bodyLen = bodyLen; $f.class$1 = class$1; $f.defaultValue = defaultValue; $f.err = err; $f.explicitTag = explicitTag; $f.isCompound = isCompound; $f.ok = ok; $f.out = out; $f.params = params; $f.r = r; $f.rv = rv; $f.tag = tag; $f.tags = tags; $f.v = v; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$r = $r; return $f; }; Marshal = function(val) { var $ptr, _r, _r$1, _r$2, _tuple, err, f, out, 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; _tuple = $f._tuple; err = $f.err; f = $f.f; out = $f.out; v = $f.v; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: out = [out]; out[0] = $clone(new bytes.Buffer.ptr(), bytes.Buffer); _r = reflect.ValueOf(val); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } v = _r; f = newForkableWriter(); _r$1 = marshalField(f, v, new fieldParameters.ptr(false, false, false, ptrType$1.nil, ptrType$2.nil, 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; } err = _r$1; if (!($interfaceIsEqual(err, $ifaceNil))) { return [sliceType.nil, err]; } _r$2 = f.writeTo(out[0]); /* */ $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; err = _tuple[1]; return [out[0].Bytes(), $ifaceNil]; /* */ $s = -1; case -1: } 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.err = err; $f.f = f; $f.out = out; $f.v = v; $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)}]; ptrType$3.methods = [{prop: "fork", name: "fork", pkg: "encoding/asn1", typ: $funcType([], [ptrType$3, ptrType$3], false)}, {prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "writeTo", name: "writeTo", pkg: "encoding/asn1", typ: $funcType([io.Writer], [$Int, $error], false)}]; StructuralError.init([{prop: "Msg", name: "Msg", pkg: "", typ: $String, tag: ""}]); SyntaxError.init([{prop: "Msg", name: "Msg", pkg: "", typ: $String, tag: ""}]); BitString.init([{prop: "Bytes", name: "Bytes", pkg: "", typ: sliceType, tag: ""}, {prop: "BitLength", name: "BitLength", pkg: "", typ: $Int, tag: ""}]); ObjectIdentifier.init($Int); RawValue.init([{prop: "Class", name: "Class", pkg: "", typ: $Int, tag: ""}, {prop: "Tag", name: "Tag", pkg: "", typ: $Int, tag: ""}, {prop: "IsCompound", name: "IsCompound", pkg: "", typ: $Bool, tag: ""}, {prop: "Bytes", name: "Bytes", pkg: "", typ: sliceType, tag: ""}, {prop: "FullBytes", name: "FullBytes", pkg: "", typ: sliceType, tag: ""}]); RawContent.init($Uint8); tagAndLength.init([{prop: "class$0", name: "class", pkg: "encoding/asn1", typ: $Int, tag: ""}, {prop: "tag", name: "tag", pkg: "encoding/asn1", typ: $Int, tag: ""}, {prop: "length", name: "length", pkg: "encoding/asn1", typ: $Int, tag: ""}, {prop: "isCompound", name: "isCompound", pkg: "encoding/asn1", typ: $Bool, tag: ""}]); fieldParameters.init([{prop: "optional", name: "optional", pkg: "encoding/asn1", typ: $Bool, tag: ""}, {prop: "explicit", name: "explicit", pkg: "encoding/asn1", typ: $Bool, tag: ""}, {prop: "application", name: "application", pkg: "encoding/asn1", typ: $Bool, tag: ""}, {prop: "defaultValue", name: "defaultValue", pkg: "encoding/asn1", typ: ptrType$1, tag: ""}, {prop: "tag", name: "tag", pkg: "encoding/asn1", typ: ptrType$2, tag: ""}, {prop: "stringType", name: "stringType", pkg: "encoding/asn1", typ: $Int, tag: ""}, {prop: "set", name: "set", pkg: "encoding/asn1", typ: $Bool, tag: ""}, {prop: "omitEmpty", name: "omitEmpty", pkg: "encoding/asn1", typ: $Bool, tag: ""}]); forkableWriter.init([{prop: "Buffer", name: "", pkg: "", typ: ptrType$5, tag: ""}, {prop: "pre", name: "pre", pkg: "encoding/asn1", typ: ptrType$3, tag: ""}, {prop: "post", name: "post", pkg: "encoding/asn1", typ: ptrType$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: $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 = big.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = reflect.$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 = time.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = utf8.$init(); /* */ $s = 10; case 10: 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()); /* */ } 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, elliptic, asn1, io, big, PublicKey, PrivateKey, ecdsaSignature, sliceType, ptrType, ptrType$1, one, randFieldElement, hashToInt, fermatInverse, Sign, Verify; crypto = $packages["crypto"]; elliptic = $packages["crypto/elliptic"]; asn1 = $packages["encoding/asn1"]; io = $packages["io"]; big = $packages["math/big"]; PublicKey = $pkg.PublicKey = $newType(0, $kindStruct, "ecdsa.PublicKey", "PublicKey", "crypto/ecdsa", 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", "PrivateKey", "crypto/ecdsa", function(PublicKey_, D_) { this.$val = this; if (arguments.length === 0) { this.PublicKey = new PublicKey.ptr(); this.D = ptrType.nil; return; } this.PublicKey = PublicKey_; this.D = D_; }); ecdsaSignature = $pkg.ecdsaSignature = $newType(0, $kindStruct, "ecdsa.ecdsaSignature", "ecdsaSignature", "crypto/ecdsa", 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_; }); sliceType = $sliceType($Uint8); ptrType = $ptrType(big.Int); ptrType$1 = $ptrType(PrivateKey); 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))) { 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; } return _r$1; /* */ $s = -1; case -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, _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; _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))) { return [k, err]; } k = new big.Int.ptr().SetBytes(b); n = new big.Int.ptr().Sub(params.N, one); k.Mod(k, n); k.Add(k, one); return [k, err]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: randFieldElement }; } $f.$ptr = $ptr; $f._q = _q; $f._r = _r; $f._r$1 = _r$1; $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().SetBytes(hash); excess = (hash.$length * 8 >> 0) - orderBits >> 0; if (excess > 0) { ret.Rsh(ret, (excess >>> 0)); } return ret; /* */ $s = -1; case -1: } 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, k, nMinus2, two; two = big.NewInt(new $Int64(0, 2)); nMinus2 = new big.Int.ptr().Sub(N, two); return new big.Int.ptr().Exp(k, nMinus2, N); }; Sign = function(rand, priv, hash) { var $ptr, N, _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, _tuple, _tuple$1, c, e, err, hash, k, kInv, 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; _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; c = $f.c; e = $f.e; err = $f.err; hash = $f.hash; k = $f.k; kInv = $f.kInv; 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; c = priv.PublicKey.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; _tmp = ptrType.nil; _tmp$1 = ptrType.nil; k = _tmp; kInv = _tmp$1; /* while (true) { */ case 2: /* while (true) { */ case 4: _r$1 = randFieldElement(c, rand); /* */ $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; k = _tuple[0]; err = _tuple[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { r = ptrType.nil; return [r, s, err]; } kInv = fermatInverse(k, N); _r$2 = priv.PublicKey.Curve.ScalarBaseMult(k.Bytes()); /* */ $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; r = _tuple$1[0]; r.Mod(r, N); if (!((r.Sign() === 0))) { /* break; */ $s = 5; continue; } /* } */ $s = 4; continue; case 5: _r$3 = hashToInt(hash, c); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } e = _r$3; s = new big.Int.ptr().Mul(priv.D, r); s.Add(s, e); s.Mul(s, kInv); s.Mod(s, N); if (!((s.Sign() === 0))) { /* break; */ $s = 3; continue; } /* } */ $s = 2; continue; case 3: return [r, s, err]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Sign }; } $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._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.c = c; $f.e = e; $f.err = err; $f.hash = hash; $f.k = k; $f.kInv = kInv; $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$2, _r$3, _r$4, _tuple, _tuple$1, _tuple$2, c, e, hash, 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$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; c = $f.c; e = $f.e; hash = $f.hash; 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)) { return false; } if (r.Cmp(N) >= 0 || s.Cmp(N) >= 0) { 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 = new big.Int.ptr().ModInverse(s, N); u1 = e.Mul(e, w); u1.Mod(u1, N); u2 = w.Mul(r, w); u2.Mod(u2, N); _r$2 = c.ScalarBaseMult(u1.Bytes()); /* */ $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; x1 = _tuple[0]; y1 = _tuple[1]; _r$3 = c.ScalarMult(pub.X, pub.Y, u2.Bytes()); /* */ $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; x2 = _tuple$1[0]; y2 = _tuple$1[1]; _r$4 = c.Add(x1, y1, x2, y2); /* */ $s = 5; case 5: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } _tuple$2 = _r$4; x = _tuple$2[0]; y = _tuple$2[1]; if ((x.Sign() === 0) && (y.Sign() === 0)) { return false; } x.Mod(x, N); return x.Cmp(r) === 0; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Verify }; } $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._r$4 = _r$4; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.c = c; $f.e = e; $f.hash = hash; $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; 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)}]; PublicKey.init([{prop: "Curve", name: "", pkg: "", typ: elliptic.Curve, tag: ""}, {prop: "X", name: "X", pkg: "", typ: ptrType, tag: ""}, {prop: "Y", name: "Y", pkg: "", typ: ptrType, tag: ""}]); PrivateKey.init([{prop: "PublicKey", name: "", pkg: "", typ: PublicKey, tag: ""}, {prop: "D", name: "D", pkg: "", typ: ptrType, tag: ""}]); ecdsaSignature.init([{prop: "R", name: "R", pkg: "", typ: ptrType, tag: ""}, {prop: "S", name: "S", pkg: "", 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 = crypto.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = elliptic.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = asn1.$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 = big.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } one = new big.Int.ptr().SetInt64(new $Int64(0, 1)); /* */ } 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", "hmac", "crypto/hmac", function(size_, blocksize_, key_, tmp_, outer_, inner_) { this.$val = this; if (arguments.length === 0) { this.size = 0; this.blocksize = 0; this.key = sliceType.nil; this.tmp = sliceType.nil; this.outer = $ifaceNil; this.inner = $ifaceNil; return; } this.size = size_; this.blocksize = blocksize_; this.key = key_; this.tmp = tmp_; this.outer = outer_; this.inner = inner_; }); sliceType = $sliceType($Uint8); ptrType = $ptrType(hmac); hmac.ptr.prototype.tmpPad = function(xor) { var $ptr, _i, _ref, h, i, i$1, k, x, x$1, xor; h = this; _ref = h.key; _i = 0; while (true) { if (!(_i < _ref.$length)) { break; } i = _i; k = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]); (x = h.tmp, ((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i] = (xor ^ k) << 24 >>> 24)); _i++; } i$1 = h.key.$length; while (true) { if (!(i$1 < h.blocksize)) { break; } (x$1 = h.tmp, ((i$1 < 0 || i$1 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + i$1] = xor)); i$1 = i$1 + (1) >> 0; } }; hmac.prototype.tmpPad = function(xor) { return this.$val.tmpPad(xor); }; hmac.ptr.prototype.Sum = function(in$1) { var $ptr, _r, _r$1, _r$2, 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; 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; h.tmpPad(92); $copySlice($subslice(h.tmp, h.blocksize), $subslice(in$1, origLen)); $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.tmp); /* */ $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.Sum($subslice(in$1, 0, origLen)); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } return _r$2; /* */ $s = -1; case -1: } 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.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]; return [n, err]; /* */ $s = -1; case -1: } 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; } h.tmpPad(54); _r = h.inner.Write($subslice(h.tmp, 0, h.blocksize)); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _r; /* */ $s = -1; case -1: } 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, _r, _r$1, _r$2, _r$3, _r$4, _r$5, h, hm, 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; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; h = $f.h; hm = $f.hm; key = $f.key; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: hm = new hmac.ptr(); _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.tmp = $makeSlice(sliceType, (hm.blocksize + hm.size >> 0)); /* */ 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: hm.key = $makeSlice(sliceType, key.$length); $copySlice(hm.key, key); $r = hm.Reset(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } return hm; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: New }; } $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.h = h; $f.hm = hm; $f.key = key; $f.$s = $s; $f.$r = $r; return $f; }; $pkg.New = New; ptrType.methods = [{prop: "tmpPad", name: "tmpPad", pkg: "crypto/hmac", typ: $funcType([$Uint8], [], false)}, {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([{prop: "size", name: "size", pkg: "crypto/hmac", typ: $Int, tag: ""}, {prop: "blocksize", name: "blocksize", pkg: "crypto/hmac", typ: $Int, tag: ""}, {prop: "key", name: "key", pkg: "crypto/hmac", typ: sliceType, tag: ""}, {prop: "tmp", name: "tmp", pkg: "crypto/hmac", typ: sliceType, tag: ""}, {prop: "outer", name: "outer", pkg: "crypto/hmac", typ: hash.Hash, tag: ""}, {prop: "inner", name: "inner", pkg: "crypto/hmac", 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/md5"] = (function() { var $pkg = {}, $init, crypto, hash, runtime, digest, sliceType, arrayType, arrayType$1, arrayType$2, arrayType$3, ptrType, arrayType$4, 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", "digest", "crypto/md5", function(s_, x_, nx_, len_) { this.$val = this; if (arguments.length === 0) { this.s = arrayType$4.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_; }); sliceType = $sliceType($Uint8); arrayType = $arrayType($Uint8, 16); arrayType$1 = $arrayType($Uint8, 64); arrayType$2 = $arrayType($Uint8, 4); arrayType$3 = $arrayType($Uint32, 16); ptrType = $ptrType(arrayType$3); arrayType$4 = $arrayType($Uint32, 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(); 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, i, n, n$1, nn, p, 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; d = $f.d; err = $f.err; i = $f.i; n = $f.n; n$1 = $f.n$1; nn = $f.nn; p = $f.p; 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: 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 = p.$length; if (n > (64 - d.nx >> 0)) { n = 64 - d.nx >> 0; } i = 0; while (true) { if (!(i < n)) { break; } (x$2 = d.x, x$3 = d.nx + i >> 0, ((x$3 < 0 || x$3 >= x$2.length) ? $throwRuntimeError("index out of range") : x$2[x$3] = ((i < 0 || i >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + i]))); i = i + (1) >> 0; } 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, $subslice(new sliceType(d.x), 0, 64)); /* */ $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); } return [nn, err]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: digest.ptr.prototype.Write }; } $f.$ptr = $ptr; $f.d = d; $f.err = err; $f.i = i; $f.n = n; $f.n$1 = n$1; $f.nn = nn; $f.p = p; $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; }; 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); return $appendSlice(in$1, new sliceType(hash$1)); /* */ $s = -1; case -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 = $clone(arrayType$1.zero(), arrayType$1); 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") : 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 = $clone(arrayType.zero(), arrayType); _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") : _ref[_i]); (x$3 = i$1 * 4 >> 0, ((x$3 < 0 || x$3 >= digest$1.length) ? $throwRuntimeError("index out of range") : digest$1[x$3] = (s << 24 >>> 24))); (x$4 = (i$1 * 4 >> 0) + 1 >> 0, ((x$4 < 0 || x$4 >= digest$1.length) ? $throwRuntimeError("index out of range") : digest$1[x$4] = ((s >>> 8 >>> 0) << 24 >>> 24))); (x$5 = (i$1 * 4 >> 0) + 2 >> 0, ((x$5 < 0 || x$5 >= digest$1.length) ? $throwRuntimeError("index out of range") : digest$1[x$5] = ((s >>> 16 >>> 0) << 24 >>> 24))); (x$6 = (i$1 * 4 >> 0) + 3 >> 0, ((x$6 < 0 || x$6 >= digest$1.length) ? $throwRuntimeError("index out of range") : digest$1[x$6] = ((s >>> 24 >>> 0) << 24 >>> 24))); _i++; } return digest$1; /* */ $s = -1; case -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$2); }; 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 = $clone(arrayType$3.zero(), arrayType$3); 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 (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") : X[x$3] = ((((((((j < 0 || j >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + j]) >>> 0) | (((x = j + 1 >> 0, ((x < 0 || x >= p.$length) ? $throwRuntimeError("index out of range") : 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") : 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") : 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], false)}]; digest.init([{prop: "s", name: "s", pkg: "crypto/md5", typ: arrayType$4, tag: ""}, {prop: "x", name: "x", pkg: "crypto/md5", typ: arrayType$1, tag: ""}, {prop: "nx", name: "nx", pkg: "crypto/md5", typ: $Int, tag: ""}, {prop: "len", name: "len", pkg: "crypto/md5", 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/rand"] = (function() { var $pkg = {}, $init, errors, nosync, io, big, os, syscall, rngReader, sliceType, ptrType, ptrType$1, ptrType$2, ptrType$3, ptrType$4, smallPrimesProduct, init, Int; errors = $packages["errors"]; nosync = $packages["github.com/gopherjs/gopherjs/nosync"]; io = $packages["io"]; big = $packages["math/big"]; os = $packages["os"]; syscall = $packages["syscall"]; rngReader = $pkg.rngReader = $newType(0, $kindStruct, "rand.rngReader", "rngReader", "crypto/rand", function(prov_, mu_) { this.$val = this; if (arguments.length === 0) { this.prov = 0; this.mu = new nosync.Mutex.ptr(); return; } this.prov = prov_; this.mu = mu_; }); sliceType = $sliceType($Uint8); ptrType = $ptrType(syscall.Handle); ptrType$1 = $ptrType($Uint16); ptrType$2 = $ptrType($Uint8); ptrType$3 = $ptrType(big.Int); ptrType$4 = $ptrType(rngReader); init = function() { var $ptr; $pkg.Reader = new rngReader.ptr(0, new nosync.Mutex.ptr()); }; rngReader.ptr.prototype.Read = function(b) { var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, b, err, err$1, n, r; n = 0; err = $ifaceNil; r = this; r.mu.Lock(); if (r.prov === 0) { err$1 = syscall.CryptAcquireContext((r.$ptr_prov || (r.$ptr_prov = new ptrType(function() { return this.$target.prov; }, function($v) { this.$target.prov = $v; }, r))), ptrType$1.nil, ptrType$1.nil, 1, 4026531904); if (!($interfaceIsEqual(err$1, $ifaceNil))) { r.mu.Unlock(); _tmp = 0; _tmp$1 = os.NewSyscallError("CryptAcquireContext", err$1); n = _tmp; err = _tmp$1; return [n, err]; } } r.mu.Unlock(); if (b.$length === 0) { _tmp$2 = 0; _tmp$3 = $ifaceNil; n = _tmp$2; err = _tmp$3; return [n, err]; } err = syscall.CryptGenRandom(r.prov, (b.$length >>> 0), $indexPtr(b.$array, b.$offset + 0, ptrType$2)); if (!($interfaceIsEqual(err, $ifaceNil))) { _tmp$4 = 0; _tmp$5 = os.NewSyscallError("CryptGenRandom", err); n = _tmp$4; err = _tmp$5; return [n, err]; } _tmp$6 = b.$length; _tmp$7 = $ifaceNil; n = _tmp$6; err = _tmp$7; return [n, err]; }; rngReader.prototype.Read = function(b) { return this.$val.Read(b); }; 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$3.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(); /* 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$3.nil; _tmp$1 = err; n = _tmp; err = _tmp$1; return [n, err]; } (0 >= bytes.$length ? $throwRuntimeError("index out of range") : bytes.$array[bytes.$offset + 0] = ((0 >= bytes.$length ? $throwRuntimeError("index out of range") : 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) { return [n, err]; } /* } */ $s = 1; continue; case 2: /* */ $s = -1; case -1: } 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$4.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}]; rngReader.init([{prop: "prov", name: "prov", pkg: "crypto/rand", typ: syscall.Handle, tag: ""}, {prop: "mu", name: "mu", pkg: "crypto/rand", typ: nosync.Mutex, 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 = 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 = big.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = os.$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; } $pkg.Reader = $ifaceNil; smallPrimesProduct = new big.Int.ptr().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/rc4"] = (function() { var $pkg = {}, $init, strconv, Cipher, KeySizeError, ptrType, arrayType, sliceType, NewCipher; strconv = $packages["strconv"]; Cipher = $pkg.Cipher = $newType(0, $kindStruct, "rc4.Cipher", "Cipher", "crypto/rc4", 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", "KeySizeError", "crypto/rc4", 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 = $clone(new Cipher.ptr(), Cipher); i = 0; while (true) { if (!(i < 256)) { break; } (x = c.s, ((i < 0 || i >= x.length) ? $throwRuntimeError("index out of range") : 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") : 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") : 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") : x$3[j])); _tmp$1 = (x$4 = c.s, ((i$1 < 0 || i$1 >= x$4.length) ? $throwRuntimeError("index out of range") : x$4[i$1])); (x$5 = c.s, ((i$1 < 0 || i$1 >= x$5.length) ? $throwRuntimeError("index out of range") : x$5[i$1] = _tmp)); (x$6 = c.s, ((j < 0 || j >= x$6.length) ? $throwRuntimeError("index out of range") : 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") : 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") : _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") : x[i])) << 24 >>> 24)) << 24 >>> 24; _tmp$2 = (x$1 = c.s, ((j < 0 || j >= x$1.length) ? $throwRuntimeError("index out of range") : x$1[j])); _tmp$3 = (x$2 = c.s, ((i < 0 || i >= x$2.length) ? $throwRuntimeError("index out of range") : x$2[i])); (x$3 = c.s, ((i < 0 || i >= x$3.length) ? $throwRuntimeError("index out of range") : x$3[i] = _tmp$2)); (x$4 = c.s, ((j < 0 || j >= x$4.length) ? $throwRuntimeError("index out of range") : x$4[j] = _tmp$3)); ((k < 0 || k >= dst.$length) ? $throwRuntimeError("index out of range") : 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") : x$7[i])) + (x$8 = c.s, ((j < 0 || j >= x$8.length) ? $throwRuntimeError("index out of range") : x$8[j])) >>> 0) << 24 >>> 24), ((x$6 < 0 || x$6 >= x$5.length) ? $throwRuntimeError("index out of range") : 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([{prop: "s", name: "s", pkg: "crypto/rc4", typ: arrayType, tag: ""}, {prop: "i", name: "i", pkg: "crypto/rc4", typ: $Uint8, tag: ""}, {prop: "j", name: "j", pkg: "crypto/rc4", 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, big, PSSOptions, PublicKey, PrivateKey, PrecomputedValues, CRTValue, sliceType, arrayType, ptrType, ptrType$1, ptrType$2, sliceType$1, arrayType$1, sliceType$2, hashPrefixes, bigZero, bigOne, errPublicModulus, errPublicExponentSmall, errPublicExponentLarge, _map, _key, EncryptPKCS1v15, DecryptPKCS1v15SessionKey, decryptPKCS1v15, nonZeroRandomBytes, SignPKCS1v15, VerifyPKCS1v15, pkcs1v15HashInfo, copyWithLeftPad, emsaPSSEncode, signPSSWithSalt, SignPSS, checkPub, incCounter, mgf1XOR, encrypt, modInverse, decrypt, leftPad; bytes = $packages["bytes"]; crypto = $packages["crypto"]; rand = $packages["crypto/rand"]; subtle = $packages["crypto/subtle"]; errors = $packages["errors"]; hash = $packages["hash"]; io = $packages["io"]; big = $packages["math/big"]; PSSOptions = $pkg.PSSOptions = $newType(0, $kindStruct, "rsa.PSSOptions", "PSSOptions", "crypto/rsa", 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", "PublicKey", "crypto/rsa", 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_; }); PrivateKey = $pkg.PrivateKey = $newType(0, $kindStruct, "rsa.PrivateKey", "PrivateKey", "crypto/rsa", function(PublicKey_, D_, Primes_, Precomputed_) { this.$val = this; if (arguments.length === 0) { this.PublicKey = new PublicKey.ptr(); this.D = ptrType$1.nil; this.Primes = sliceType$1.nil; this.Precomputed = new PrecomputedValues.ptr(); return; } this.PublicKey = PublicKey_; this.D = D_; this.Primes = Primes_; this.Precomputed = Precomputed_; }); PrecomputedValues = $pkg.PrecomputedValues = $newType(0, $kindStruct, "rsa.PrecomputedValues", "PrecomputedValues", "crypto/rsa", 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", "CRTValue", "crypto/rsa", 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(PrivateKey); sliceType$1 = $sliceType(ptrType$1); arrayType$1 = $arrayType($Uint8, 4); sliceType$2 = $sliceType(CRTValue); EncryptPKCS1v15 = function(rand$1, pub, msg) { var $ptr, _q, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, c, em, err, err$1, k, m, mm, msg, out, 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; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; 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; out = $f.out; 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: out = sliceType.nil; err = $ifaceNil; err$1 = checkPub(pub); if (!($interfaceIsEqual(err$1, $ifaceNil))) { _tmp = sliceType.nil; _tmp$1 = err$1; out = _tmp; err = _tmp$1; return [out, 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)) { err = $pkg.ErrMessageTooLong; return [out, err]; } em = $makeSlice(sliceType, k); (1 >= em.$length ? $throwRuntimeError("index out of range") : em.$array[em.$offset + 1] = 2); _tmp$2 = $subslice(em, 2, ((em.$length - msg.$length >> 0) - 1 >> 0)); _tmp$3 = $subslice(em, (em.$length - msg.$length >> 0)); ps = _tmp$2; mm = _tmp$3; _r = nonZeroRandomBytes(ps, rand$1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } err = _r; if (!($interfaceIsEqual(err, $ifaceNil))) { return [out, err]; } (x = (em.$length - msg.$length >> 0) - 1 >> 0, ((x < 0 || x >= em.$length) ? $throwRuntimeError("index out of range") : em.$array[em.$offset + x] = 0)); $copySlice(mm, msg); m = new big.Int.ptr().SetBytes(em); c = encrypt(new big.Int.ptr(), pub, m); copyWithLeftPad(em, c.Bytes()); out = em; return [out, err]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: EncryptPKCS1v15 }; } $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.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.out = out; $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; 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 = $ifaceNil; err$1 = checkPub(priv.PublicKey); if (!($interfaceIsEqual(err$1, $ifaceNil))) { err = err$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) { err = $pkg.ErrDecryption; return 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]; em = _tuple[1]; index = _tuple[2]; err = _tuple[3]; if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } if (!((em.$length === k))) { err = $pkg.ErrDecryption; return err; } valid = valid & (subtle.ConstantTimeEq(((em.$length - index >> 0) >> 0), (key.$length >> 0))); subtle.ConstantTimeCopy(valid, key, $subslice(em, (em.$length - key.$length >> 0))); return err; /* */ $s = -1; case -1: } 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; return [valid, em, index, err]; } c = new big.Int.ptr().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))) { return [valid, em, index, err]; } em = leftPad(m.Bytes(), k); firstByteIsZero = subtle.ConstantTimeByteEq((0 >= em.$length ? $throwRuntimeError("index out of range") : em.$array[em.$offset + 0]), 0); secondByteIsTwo = subtle.ConstantTimeByteEq((1 >= em.$length ? $throwRuntimeError("index out of range") : 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") : 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; return [valid, em, index, err]; /* */ $s = -1; case -1: } 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))) { 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") : s.$array[s.$offset + i]) === 0)) { break; } */ if(!(((i < 0 || i >= s.$length) ? $throwRuntimeError("index out of range") : 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))) { return err; } ((i < 0 || i >= s.$length) ? $throwRuntimeError("index out of range") : s.$array[s.$offset + i] = (((i < 0 || i >= s.$length) ? $throwRuntimeError("index out of range") : s.$array[s.$offset + i]) ^ (66)) << 24 >>> 24); /* } */ $s = 4; continue; case 5: i = i + (1) >> 0; /* } */ $s = 2; continue; case 3: return err; /* */ $s = -1; case -1: } 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, _tmp, _tmp$1, _tuple, _tuple$1, c, em, err, hash$1, hashLen, hashed, i, k, m, prefix, priv, rand$1, s, 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; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _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; s = $f.s; tLen = $f.tLen; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: s = sliceType.nil; err = $ifaceNil; _tuple = pkcs1v15HashInfo(hash$1, hashed.$length); hashLen = _tuple[0]; prefix = _tuple[1]; err = _tuple[2]; if (!($interfaceIsEqual(err, $ifaceNil))) { return [s, 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)) { _tmp = sliceType.nil; _tmp$1 = $pkg.ErrMessageTooLong; s = _tmp; err = _tmp$1; return [s, err]; } em = $makeSlice(sliceType, k); (1 >= em.$length ? $throwRuntimeError("index out of range") : 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") : 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().SetBytes(em); _r = decrypt(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))) { return [s, err]; } copyWithLeftPad(em, c.Bytes()); s = em; return [s, err]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: SignPKCS1v15 }; } $f.$ptr = $ptr; $f._q = _q; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $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.s = s; $f.tLen = tLen; $f.$s = $s; $f.$r = $r; return $f; }; $pkg.SignPKCS1v15 = SignPKCS1v15; VerifyPKCS1v15 = function(pub, hash$1, hashed, sig) { var $ptr, _q, _tuple, c, em, err, hash$1, hashLen, hashed, i, k, m, ok, prefix, pub, sig, tLen, x; err = $ifaceNil; _tuple = pkcs1v15HashInfo(hash$1, hashed.$length); hashLen = _tuple[0]; prefix = _tuple[1]; err = _tuple[2]; if (!($interfaceIsEqual(err, $ifaceNil))) { 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)) { err = $pkg.ErrVerification; return err; } c = new big.Int.ptr().SetBytes(sig); m = encrypt(new big.Int.ptr(), pub, c); em = leftPad(m.Bytes(), k); ok = subtle.ConstantTimeByteEq((0 >= em.$length ? $throwRuntimeError("index out of range") : em.$array[em.$offset + 0]), 0); ok = ok & (subtle.ConstantTimeByteEq((1 >= em.$length ? $throwRuntimeError("index out of range") : 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") : 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") : em.$array[em.$offset + i]), 255)); i = i + (1) >> 0; } if (!((ok === 1))) { err = $pkg.ErrVerification; return err; } err = $ifaceNil; return err; }; $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[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") : 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))) { return [sliceType.nil, errors.New("crypto/rsa: input must be hashed message")]; } if (emLen < ((hLen + sLen >> 0) + 2 >> 0)) { 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 = $clone(arrayType.zero(), arrayType); _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") : 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") : db.$array[db.$offset + 0] = ((0 >= db.$length ? $throwRuntimeError("index out of range") : db.$array[db.$offset + 0]) & ((((y = (((8 * emLen >> 0) - 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") : em.$array[em.$offset + x$1] = 188)); return [em, $ifaceNil]; /* */ $s = -1; case -1: } 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; }; 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))) { return [s, err]; } m = new big.Int.ptr().SetBytes(em); _r$2 = decrypt(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))) { 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()); return [s, err]; /* */ $s = -1; case -1: } 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, _q, _r, _r$1, _ref, _tuple, _tuple$1, err, hash$1, hashed, opts, priv, rand$1, s, salt, saltLength, $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; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; err = $f.err; hash$1 = $f.hash$1; hashed = $f.hashed; opts = $f.opts; priv = $f.priv; rand$1 = $f.rand$1; s = $f.s; salt = $f.salt; saltLength = $f.saltLength; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: s = sliceType.nil; err = $ifaceNil; saltLength = opts.saltLength(); _ref = saltLength; if (_ref === 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 (_ref === -1) { saltLength = new crypto.Hash(hash$1).Size(); } if (!((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 = 2; continue; } /* */ $s = 3; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2: return [s, err]; /* } */ case 3: _r$1 = signPSSWithSalt(rand$1, priv, hash$1, hashed, salt); /* */ $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; s = _tuple$1[0]; err = _tuple$1[1]; return [s, err]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: SignPSS }; } $f.$ptr = $ptr; $f._q = _q; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.err = err; $f.hash$1 = hash$1; $f.hashed = hashed; $f.opts = opts; $f.priv = priv; $f.rand$1 = rand$1; $f.s = s; $f.salt = salt; $f.saltLength = saltLength; $f.$s = $s; $f.$r = $r; return $f; }; $pkg.SignPSS = SignPSS; 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; } 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; } return _r$2; /* */ $s = -1; case -1: } 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.Validate = function() { var $ptr, _i, _i$1, _i$2, _r, _ref, _ref$1, _ref$2, congruence, de, err, modulus, pminus1, prime, prime$1, prime$2, 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; _i$2 = $f._i$2; _r = $f._r; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; congruence = $f.congruence; de = $f.de; err = $f.err; modulus = $f.modulus; pminus1 = $f.pminus1; prime = $f.prime; prime$1 = $f.prime$1; prime$2 = $f.prime$2; 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))) { return err; } _ref = priv.Primes; _i = 0; /* while (true) { */ case 1: /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } prime = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]); _r = prime.ProbablyPrime(20); /* */ $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: return errors.New("crypto/rsa: prime factor is composite"); /* } */ case 4: _i++; /* } */ $s = 1; continue; case 2: modulus = new big.Int.ptr().Set(bigOne); _ref$1 = priv.Primes; _i$1 = 0; while (true) { if (!(_i$1 < _ref$1.$length)) { break; } prime$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? $throwRuntimeError("index out of range") : _ref$1.$array[_ref$1.$offset + _i$1]); modulus.Mul(modulus, prime$1); _i$1++; } if (!((modulus.Cmp(priv.PublicKey.N) === 0))) { return errors.New("crypto/rsa: invalid modulus"); } congruence = new big.Int.ptr(); de = new big.Int.ptr().SetInt64(new $Int64(0, priv.PublicKey.E)); de.Mul(de, priv.D); _ref$2 = priv.Primes; _i$2 = 0; while (true) { if (!(_i$2 < _ref$2.$length)) { break; } prime$2 = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? $throwRuntimeError("index out of range") : _ref$2.$array[_ref$2.$offset + _i$2]); pminus1 = new big.Int.ptr().Sub(prime$2, bigOne); congruence.Mod(de, pminus1); if (!((congruence.Cmp(bigOne) === 0))) { return errors.New("crypto/rsa: invalid exponents"); } _i$2++; } return $ifaceNil; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: PrivateKey.ptr.prototype.Validate }; } $f.$ptr = $ptr; $f._i = _i; $f._i$1 = _i$1; $f._i$2 = _i$2; $f._r = _r; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f.congruence = congruence; $f.de = de; $f.err = err; $f.modulus = modulus; $f.pminus1 = pminus1; $f.prime = prime; $f.prime$1 = prime$1; $f.prime$2 = prime$2; $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] = $clone(arrayType$1.zero(), arrayType$1); 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") : out.$array[out.$offset + done] = (((done < 0 || done >= out.$length) ? $throwRuntimeError("index out of range") : out.$array[out.$offset + done]) ^ (((i < 0 || i >= digest.$length) ? $throwRuntimeError("index out of range") : 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; case -1: } 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, c, e, m, pub; e = big.NewInt(new $Int64(0, pub.E)); c.Exp(m, e, pub.N); return c; }; modInverse = function(a, n) { var $ptr, _tmp, _tmp$1, a, g, ia, n, ok, x, y; ia = ptrType$1.nil; ok = false; g = new big.Int.ptr(); x = new big.Int.ptr(); y = new big.Int.ptr(); g.GCD(x, y, a, n); if (!((g.Cmp(bigOne) === 0))) { return [ia, ok]; } if (x.Cmp(bigOne) < 0) { x.Add(x, n); } _tmp = x; _tmp$1 = true; ia = _tmp; ok = _tmp$1; return [ia, ok]; }; PrivateKey.ptr.prototype.Precompute = function() { var $ptr, i, prime, priv, r, values, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8; priv = this; if (!(priv.Precomputed.Dp === ptrType$1.nil)) { return; } priv.Precomputed.Dp = new big.Int.ptr().Sub((x = priv.Primes, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0])), bigOne); priv.Precomputed.Dp.Mod(priv.D, priv.Precomputed.Dp); priv.Precomputed.Dq = new big.Int.ptr().Sub((x$1 = priv.Primes, (1 >= x$1.$length ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + 1])), bigOne); priv.Precomputed.Dq.Mod(priv.D, priv.Precomputed.Dq); priv.Precomputed.Qinv = new big.Int.ptr().ModInverse((x$2 = priv.Primes, (1 >= x$2.$length ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + 1])), (x$3 = priv.Primes, (0 >= x$3.$length ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + 0]))); r = new big.Int.ptr().Mul((x$4 = priv.Primes, (0 >= x$4.$length ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + 0])), (x$5 = priv.Primes, (1 >= x$5.$length ? $throwRuntimeError("index out of range") : x$5.$array[x$5.$offset + 1]))); priv.Precomputed.CRTValues = $makeSlice(sliceType$2, (priv.Primes.$length - 2 >> 0)); i = 2; while (true) { if (!(i < priv.Primes.$length)) { break; } prime = (x$6 = priv.Primes, ((i < 0 || i >= x$6.$length) ? $throwRuntimeError("index out of range") : 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") : x$7.$array[x$7.$offset + x$8])); values.Exp = new big.Int.ptr().Sub(prime, bigOne); values.Exp.Mod(priv.D, values.Exp); values.R = new big.Int.ptr().Set(r); values.Coeff = new big.Int.ptr().ModInverse(r, prime); r.Mul(r, prime); i = i + (1) >> 0; } }; PrivateKey.prototype.Precompute = function() { return this.$val.Precompute(); }; decrypt = function(random, priv, c) { var $ptr, _i, _r, _ref, _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; _ref = $f._ref; _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; 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))) { return [m, err]; } if (r.Cmp(bigZero) === 0) { r = bigOne; } ok = false; _tuple$1 = modInverse(r, priv.PublicKey.N); 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)); rpowe = new big.Int.ptr().Exp(r, bigE, priv.PublicKey.N); cCopy = new big.Int.ptr().Set(c); cCopy.Mul(cCopy, rpowe); cCopy.Mod(cCopy, priv.PublicKey.N); c = cCopy; /* } */ case 2: if (priv.Precomputed.Dp === ptrType$1.nil) { m = new big.Int.ptr().Exp(c, priv.D, priv.PublicKey.N); } else { m = new big.Int.ptr().Exp(c, priv.Precomputed.Dp, (x = priv.Primes, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0]))); m2 = new big.Int.ptr().Exp(c, priv.Precomputed.Dq, (x$1 = priv.Primes, (1 >= x$1.$length ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + 1]))); m.Sub(m, m2); if (m.Sign() < 0) { m.Add(m, (x$2 = priv.Primes, (0 >= x$2.$length ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + 0]))); } m.Mul(m, priv.Precomputed.Qinv); m.Mod(m, (x$3 = priv.Primes, (0 >= x$3.$length ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + 0]))); m.Mul(m, (x$4 = priv.Primes, (1 >= x$4.$length ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + 1]))); m.Add(m, m2); _ref = priv.Precomputed.CRTValues; _i = 0; while (true) { if (!(_i < _ref.$length)) { break; } i = _i; values = $clone(((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _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") : x$5.$array[x$5.$offset + x$6])); m2.Exp(c, values.Exp, prime); m2.Sub(m2, m); m2.Mul(m2, values.Coeff); m2.Mod(m2, prime); if (m2.Sign() < 0) { m2.Add(m2, prime); } m2.Mul(m2, values.R); m.Add(m, m2); _i++; } } if (!(ir === ptrType$1.nil)) { m.Mul(m, ir); m.Mod(m, priv.PublicKey.N); } return [m, err]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: decrypt }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._ref = _ref; $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; }; 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$2.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: "Validate", name: "Validate", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Precompute", name: "Precompute", pkg: "", typ: $funcType([], [], false)}]; PSSOptions.init([{prop: "SaltLength", name: "SaltLength", pkg: "", typ: $Int, tag: ""}, {prop: "Hash", name: "Hash", pkg: "", typ: crypto.Hash, tag: ""}]); PublicKey.init([{prop: "N", name: "N", pkg: "", typ: ptrType$1, tag: ""}, {prop: "E", name: "E", pkg: "", typ: $Int, tag: ""}]); PrivateKey.init([{prop: "PublicKey", name: "", pkg: "", typ: PublicKey, tag: ""}, {prop: "D", name: "D", pkg: "", typ: ptrType$1, tag: ""}, {prop: "Primes", name: "Primes", pkg: "", typ: sliceType$1, tag: ""}, {prop: "Precomputed", name: "Precomputed", pkg: "", typ: PrecomputedValues, tag: ""}]); PrecomputedValues.init([{prop: "Dp", name: "Dp", pkg: "", typ: ptrType$1, tag: ""}, {prop: "Dq", name: "Dq", pkg: "", typ: ptrType$1, tag: ""}, {prop: "Qinv", name: "Qinv", pkg: "", typ: ptrType$1, tag: ""}, {prop: "CRTValues", name: "CRTValues", pkg: "", typ: sliceType$2, tag: ""}]); CRTValue.init([{prop: "Exp", name: "Exp", pkg: "", typ: ptrType$1, tag: ""}, {prop: "Coeff", name: "Coeff", pkg: "", typ: ptrType$1, tag: ""}, {prop: "R", name: "R", pkg: "", 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 = big.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } hashPrefixes = (_map = new $Map(), _key = 2, _map[_key] = { k: _key, v: new sliceType([48, 32, 48, 12, 6, 8, 42, 134, 72, 134, 247, 13, 2, 5, 5, 0, 4, 16]) }, _key = 3, _map[_key] = { k: _key, v: new sliceType([48, 33, 48, 9, 6, 5, 43, 14, 3, 2, 26, 5, 0, 4, 20]) }, _key = 4, _map[_key] = { k: _key, v: new sliceType([48, 45, 48, 13, 6, 9, 96, 134, 72, 1, 101, 3, 4, 2, 4, 5, 0, 4, 28]) }, _key = 5, _map[_key] = { k: _key, v: new sliceType([48, 49, 48, 13, 6, 9, 96, 134, 72, 1, 101, 3, 4, 2, 1, 5, 0, 4, 32]) }, _key = 6, _map[_key] = { k: _key, v: new sliceType([48, 65, 48, 13, 6, 9, 96, 134, 72, 1, 101, 3, 4, 2, 2, 5, 0, 4, 48]) }, _key = 7, _map[_key] = { k: _key, v: new sliceType([48, 81, 48, 13, 6, 9, 96, 134, 72, 1, 101, 3, 4, 2, 3, 5, 0, 4, 64]) }, _key = 8, _map[_key] = { k: _key, v: new sliceType([]) }, _key = 9, _map[_key] = { k: _key, v: new sliceType([48, 32, 48, 8, 6, 6, 40, 207, 6, 3, 0, 49, 4, 20]) }, _map); 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, sliceType, arrayType, arrayType$1, arrayType$2, arrayType$3, ptrType, block, init, New, blockGeneric; crypto = $packages["crypto"]; hash = $packages["hash"]; digest = $pkg.digest = $newType(0, $kindStruct, "sha1.digest", "digest", "crypto/sha1", function(h_, x_, nx_, len_) { this.$val = this; if (arguments.length === 0) { this.h = arrayType$3.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_; }); sliceType = $sliceType($Uint8); arrayType = $arrayType($Uint8, 20); arrayType$1 = $arrayType($Uint8, 64); arrayType$2 = $arrayType($Uint32, 16); arrayType$3 = $arrayType($Uint32, 5); 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(); 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); } return [nn, err]; /* */ $s = -1; case -1: } 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); return $appendSlice(in$1, new sliceType(hash$1)); /* */ $s = -1; case -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 = $clone(arrayType$1.zero(), arrayType$1); 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") : 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 = $clone(arrayType.zero(), arrayType); _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") : _ref[_i]); (x$3 = i$1 * 4 >> 0, ((x$3 < 0 || x$3 >= digest$1.length) ? $throwRuntimeError("index out of range") : digest$1[x$3] = ((s >>> 24 >>> 0) << 24 >>> 24))); (x$4 = (i$1 * 4 >> 0) + 1 >> 0, ((x$4 < 0 || x$4 >= digest$1.length) ? $throwRuntimeError("index out of range") : digest$1[x$4] = ((s >>> 16 >>> 0) << 24 >>> 24))); (x$5 = (i$1 * 4 >> 0) + 2 >> 0, ((x$5 < 0 || x$5 >= digest$1.length) ? $throwRuntimeError("index out of range") : digest$1[x$5] = ((s >>> 8 >>> 0) << 24 >>> 24))); (x$6 = (i$1 * 4 >> 0) + 3 >> 0, ((x$6 < 0 || x$6 >= digest$1.length) ? $throwRuntimeError("index out of range") : digest$1[x$6] = (s << 24 >>> 24))); _i++; } return digest$1; /* */ $s = -1; case -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(); }; 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 = $clone(arrayType$2.zero(), arrayType$2); _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 = i * 4 >> 0; ((i < 0 || i >= w.length) ? $throwRuntimeError("index out of range") : w[i] = (((((((((j < 0 || j >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + j]) >>> 0) << 24 >>> 0) | (((x = j + 1 >> 0, ((x < 0 || x >= p.$length) ? $throwRuntimeError("index out of range") : 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") : 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") : 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") : 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") : w[x$4])) ^ (x$5 = ((i$1 - 8 >> 0)) & 15, ((x$5 < 0 || x$5 >= w.length) ? $throwRuntimeError("index out of range") : w[x$5]))) >>> 0) ^ (x$6 = ((i$1 - 14 >> 0)) & 15, ((x$6 < 0 || x$6 >= w.length) ? $throwRuntimeError("index out of range") : w[x$6]))) >>> 0) ^ (x$7 = (i$1) & 15, ((x$7 < 0 || x$7 >= w.length) ? $throwRuntimeError("index out of range") : w[x$7]))) >>> 0; (x$8 = i$1 & 15, ((x$8 < 0 || x$8 >= w.length) ? $throwRuntimeError("index out of range") : 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") : 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") : w[x$10])) ^ (x$11 = ((i$1 - 8 >> 0)) & 15, ((x$11 < 0 || x$11 >= w.length) ? $throwRuntimeError("index out of range") : w[x$11]))) >>> 0) ^ (x$12 = ((i$1 - 14 >> 0)) & 15, ((x$12 < 0 || x$12 >= w.length) ? $throwRuntimeError("index out of range") : w[x$12]))) >>> 0) ^ (x$13 = (i$1) & 15, ((x$13 < 0 || x$13 >= w.length) ? $throwRuntimeError("index out of range") : w[x$13]))) >>> 0; (x$14 = i$1 & 15, ((x$14 < 0 || x$14 >= w.length) ? $throwRuntimeError("index out of range") : 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") : 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") : w[x$16])) ^ (x$17 = ((i$1 - 8 >> 0)) & 15, ((x$17 < 0 || x$17 >= w.length) ? $throwRuntimeError("index out of range") : w[x$17]))) >>> 0) ^ (x$18 = ((i$1 - 14 >> 0)) & 15, ((x$18 < 0 || x$18 >= w.length) ? $throwRuntimeError("index out of range") : w[x$18]))) >>> 0) ^ (x$19 = (i$1) & 15, ((x$19 < 0 || x$19 >= w.length) ? $throwRuntimeError("index out of range") : w[x$19]))) >>> 0; (x$20 = i$1 & 15, ((x$20 < 0 || x$20 >= w.length) ? $throwRuntimeError("index out of range") : 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") : 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") : w[x$22])) ^ (x$23 = ((i$1 - 8 >> 0)) & 15, ((x$23 < 0 || x$23 >= w.length) ? $throwRuntimeError("index out of range") : w[x$23]))) >>> 0) ^ (x$24 = ((i$1 - 14 >> 0)) & 15, ((x$24 < 0 || x$24 >= w.length) ? $throwRuntimeError("index out of range") : w[x$24]))) >>> 0) ^ (x$25 = (i$1) & 15, ((x$25 < 0 || x$25 >= w.length) ? $throwRuntimeError("index out of range") : w[x$25]))) >>> 0; (x$26 = i$1 & 15, ((x$26 < 0 || x$26 >= w.length) ? $throwRuntimeError("index out of range") : 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") : 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], false)}]; digest.init([{prop: "h", name: "h", pkg: "crypto/sha1", typ: arrayType$3, tag: ""}, {prop: "x", name: "x", pkg: "crypto/sha1", typ: arrayType$1, tag: ""}, {prop: "nx", name: "nx", pkg: "crypto/sha1", typ: $Int, tag: ""}, {prop: "len", name: "len", pkg: "crypto/sha1", 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, sliceType$1, arrayType, arrayType$1, arrayType$3, arrayType$4, ptrType, _K, init, New, New224, block; crypto = $packages["crypto"]; hash = $packages["hash"]; digest = $pkg.digest = $newType(0, $kindStruct, "sha256.digest", "digest", "crypto/sha256", function(h_, x_, nx_, len_, is224_) { this.$val = this; if (arguments.length === 0) { this.h = arrayType$4.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); sliceType$1 = $sliceType($Uint8); arrayType = $arrayType($Uint8, 32); arrayType$1 = $arrayType($Uint8, 64); arrayType$3 = $arrayType($Uint32, 64); arrayType$4 = $arrayType($Uint32, 8); 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(); d.Reset(); return d; }; $pkg.New = New; New224 = function() { var $ptr, d; d = new digest.ptr(); 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; 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) { n = $copySlice($subslice(new sliceType$1(d.x), d.nx), p); d.nx = d.nx + (n) >> 0; if (d.nx === 64) { block(d, new sliceType$1(d.x)); d.nx = 0; } p = $subslice(p, n); } if (p.$length >= 64) { n$1 = (p.$length & ~63) >> 0; block(d, $subslice(p, 0, n$1)); p = $subslice(p, n$1); } if (p.$length > 0) { d.nx = $copySlice(new sliceType$1(d.x), p); } return [nn, err]; }; digest.prototype.Write = function(p) { return this.$val.Write(p); }; digest.ptr.prototype.Sum = function(in$1) { var $ptr, d, d0, hash$1, in$1; d0 = this; d = $clone(d0, digest); hash$1 = $clone(d.checkSum(), arrayType); if (d.is224) { return $appendSlice(in$1, $subslice(new sliceType$1(hash$1), 0, 28)); } return $appendSlice(in$1, new sliceType$1(hash$1)); }; digest.prototype.Sum = function(in$1) { return this.$val.Sum(in$1); }; digest.ptr.prototype.checkSum = function() { var $ptr, _i, _ref, d, digest$1, h, i, i$1, len, s, tmp, x, x$1, x$2, x$3, x$4, x$5, x$6; d = this; len = d.len; tmp = $clone(arrayType$1.zero(), arrayType$1); tmp[0] = 128; if ((x = $div64(len, new $Uint64(0, 64), true), (x.$high < 0 || (x.$high === 0 && x.$low < 56)))) { 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))))); } else { 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))))); } len = $shiftLeft64(len, (3)); i = 0; while (true) { if (!(i < 8)) { break; } ((i < 0 || i >= tmp.length) ? $throwRuntimeError("index out of range") : tmp[i] = ($shiftRightUint64(len, ((56 - (8 * i >>> 0) >>> 0))).$low << 24 >>> 24)); i = i + (1) >>> 0; } d.Write($subslice(new sliceType$1(tmp), 0, 8)); 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 = $clone(arrayType.zero(), arrayType); _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") : _ref.$array[_ref.$offset + _i]); (x$3 = i$1 * 4 >> 0, ((x$3 < 0 || x$3 >= digest$1.length) ? $throwRuntimeError("index out of range") : digest$1[x$3] = ((s >>> 24 >>> 0) << 24 >>> 24))); (x$4 = (i$1 * 4 >> 0) + 1 >> 0, ((x$4 < 0 || x$4 >= digest$1.length) ? $throwRuntimeError("index out of range") : digest$1[x$4] = ((s >>> 16 >>> 0) << 24 >>> 24))); (x$5 = (i$1 * 4 >> 0) + 2 >> 0, ((x$5 < 0 || x$5 >= digest$1.length) ? $throwRuntimeError("index out of range") : digest$1[x$5] = ((s >>> 8 >>> 0) << 24 >>> 24))); (x$6 = (i$1 * 4 >> 0) + 3 >> 0, ((x$6 < 0 || x$6 >= digest$1.length) ? $throwRuntimeError("index out of range") : digest$1[x$6] = (s << 24 >>> 24))); _i++; } return digest$1; }; digest.prototype.checkSum = function() { return this.$val.checkSum(); }; block = 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 = $clone(arrayType$3.zero(), arrayType$3); _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 = i * 4 >> 0; ((i < 0 || i >= w.length) ? $throwRuntimeError("index out of range") : w[i] = (((((((((j < 0 || j >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + j]) >>> 0) << 24 >>> 0) | (((x = j + 1 >> 0, ((x < 0 || x >= p.$length) ? $throwRuntimeError("index out of range") : 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") : 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") : 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") : 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") : 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") : w[i$1] = ((t1 + (x$5 = i$1 - 7 >> 0, ((x$5 < 0 || x$5 >= w.length) ? $throwRuntimeError("index out of range") : w[x$5])) >>> 0) + t2 >>> 0) + (x$6 = i$1 - 16 >> 0, ((x$6 < 0 || x$6 >= w.length) ? $throwRuntimeError("index out of range") : 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") : _K.$array[_K.$offset + i$2]) >>> 0) + ((i$2 < 0 || i$2 >= w.length) ? $throwRuntimeError("index out of range") : 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], false)}]; digest.init([{prop: "h", name: "h", pkg: "crypto/sha256", typ: arrayType$4, tag: ""}, {prop: "x", name: "x", pkg: "crypto/sha256", typ: arrayType$1, tag: ""}, {prop: "nx", name: "nx", pkg: "crypto/sha256", typ: $Int, tag: ""}, {prop: "len", name: "len", pkg: "crypto/sha256", typ: $Uint64, tag: ""}, {prop: "is224", name: "is224", pkg: "crypto/sha256", 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]); 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", "Parameters", "crypto/dsa", 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", "PublicKey", "crypto/dsa", function(Parameters_, Y_) { this.$val = this; if (arguments.length === 0) { this.Parameters = new Parameters.ptr(); this.Y = ptrType.nil; return; } this.Parameters = Parameters_; this.Y = Y_; }); ptrType = $ptrType(big.Int); Verify = function(pub, hash, r, s) { var $ptr, hash, n, pub, r, s, u1, u2, v, w, z; if (r.Sign() < 1 || r.Cmp(pub.Parameters.Q) >= 0) { return false; } if (s.Sign() < 1 || s.Cmp(pub.Parameters.Q) >= 0) { return false; } w = new big.Int.ptr().ModInverse(s, pub.Parameters.Q); n = pub.Parameters.Q.BitLen(); if (!(((n & 7) === 0))) { return false; } z = new big.Int.ptr().SetBytes(hash); u1 = new big.Int.ptr().Mul(z, w); u1.Mod(u1, pub.Parameters.Q); u2 = w.Mul(r, w); u2.Mod(u2, pub.Parameters.Q); v = u1.Exp(pub.Parameters.G, u1, pub.Parameters.P); u2.Exp(pub.Y, u2, pub.Parameters.P); v.Mul(v, u2); v.Mod(v, pub.Parameters.P); v.Mod(v, pub.Parameters.Q); return v.Cmp(r) === 0; }; $pkg.Verify = Verify; Parameters.init([{prop: "P", name: "P", pkg: "", typ: ptrType, tag: ""}, {prop: "Q", name: "Q", pkg: "", typ: ptrType, tag: ""}, {prop: "G", name: "G", pkg: "", typ: ptrType, tag: ""}]); PublicKey.init([{prop: "Parameters", name: "", pkg: "", typ: Parameters, tag: ""}, {prop: "Y", name: "Y", pkg: "", 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/sha512"] = (function() { var $pkg = {}, $init, crypto, hash, digest, sliceType, sliceType$1, arrayType, arrayType$1, arrayType$3, arrayType$4, ptrType, _K, init, New, New384, block; crypto = $packages["crypto"]; hash = $packages["hash"]; digest = $pkg.digest = $newType(0, $kindStruct, "sha512.digest", "digest", "crypto/sha512", function(h_, x_, nx_, len_, is384_) { this.$val = this; if (arguments.length === 0) { this.h = arrayType$4.zero(); this.x = arrayType$1.zero(); this.nx = 0; this.len = new $Uint64(0, 0); this.is384 = false; return; } this.h = h_; this.x = x_; this.nx = nx_; this.len = len_; this.is384 = is384_; }); sliceType = $sliceType($Uint64); sliceType$1 = $sliceType($Uint8); arrayType = $arrayType($Uint8, 64); arrayType$1 = $arrayType($Uint8, 128); arrayType$3 = $arrayType($Uint64, 80); arrayType$4 = $arrayType($Uint64, 8); ptrType = $ptrType(digest); init = function() { var $ptr; crypto.RegisterHash(6, New384); crypto.RegisterHash(7, New); }; digest.ptr.prototype.Reset = function() { var $ptr, d; d = this; if (!d.is384) { 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); } else { 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); } 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(); d.Reset(); return d; }; $pkg.New = New; New384 = function() { var $ptr, d; d = new digest.ptr(); d.is384 = true; d.Reset(); return d; }; $pkg.New384 = New384; digest.ptr.prototype.Size = function() { var $ptr, d; d = this; if (!d.is384) { return 64; } return 48; }; 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; 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) { n = $copySlice($subslice(new sliceType$1(d.x), d.nx), p); d.nx = d.nx + (n) >> 0; if (d.nx === 128) { block(d, new sliceType$1(d.x)); d.nx = 0; } p = $subslice(p, n); } if (p.$length >= 128) { n$1 = (p.$length & ~127) >> 0; block(d, $subslice(p, 0, n$1)); p = $subslice(p, n$1); } if (p.$length > 0) { d.nx = $copySlice(new sliceType$1(d.x), p); } return [nn, err]; }; digest.prototype.Write = function(p) { return this.$val.Write(p); }; digest.ptr.prototype.Sum = function(in$1) { var $ptr, d, d0, hash$1, in$1; d0 = this; d = new digest.ptr(); $copy(d, d0, digest); hash$1 = $clone(d.checkSum(), arrayType); if (d.is384) { return $appendSlice(in$1, $subslice(new sliceType$1(hash$1), 0, 48)); } return $appendSlice(in$1, new sliceType$1(hash$1)); }; digest.prototype.Sum = function(in$1) { return this.$val.Sum(in$1); }; digest.ptr.prototype.checkSum = function() { var $ptr, _i, _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; d = this; len = d.len; tmp = $clone(arrayType$1.zero(), arrayType$1); tmp[0] = 128; if ((x = $div64(len, new $Uint64(0, 128), true), (x.$high < 0 || (x.$high === 0 && x.$low < 112)))) { 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))))); } else { 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))))); } len = $shiftLeft64(len, (3)); i = 0; while (true) { if (!(i < 16)) { break; } ((i < 0 || i >= tmp.length) ? $throwRuntimeError("index out of range") : tmp[i] = ($shiftRightUint64(len, ((120 - (8 * i >>> 0) >>> 0))).$low << 24 >>> 24)); i = i + (1) >>> 0; } d.Write($subslice(new sliceType$1(tmp), 0, 16)); if (!((d.nx === 0))) { $panic(new $String("d.nx != 0")); } h = new sliceType(d.h); if (d.is384) { h = $subslice(new sliceType(d.h), 0, 6); } digest$1 = $clone(arrayType.zero(), arrayType); _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") : _ref.$array[_ref.$offset + _i]); (x$3 = i$1 * 8 >> 0, ((x$3 < 0 || x$3 >= digest$1.length) ? $throwRuntimeError("index out of range") : digest$1[x$3] = ($shiftRightUint64(s, 56).$low << 24 >>> 24))); (x$4 = (i$1 * 8 >> 0) + 1 >> 0, ((x$4 < 0 || x$4 >= digest$1.length) ? $throwRuntimeError("index out of range") : digest$1[x$4] = ($shiftRightUint64(s, 48).$low << 24 >>> 24))); (x$5 = (i$1 * 8 >> 0) + 2 >> 0, ((x$5 < 0 || x$5 >= digest$1.length) ? $throwRuntimeError("index out of range") : digest$1[x$5] = ($shiftRightUint64(s, 40).$low << 24 >>> 24))); (x$6 = (i$1 * 8 >> 0) + 3 >> 0, ((x$6 < 0 || x$6 >= digest$1.length) ? $throwRuntimeError("index out of range") : digest$1[x$6] = ($shiftRightUint64(s, 32).$low << 24 >>> 24))); (x$7 = (i$1 * 8 >> 0) + 4 >> 0, ((x$7 < 0 || x$7 >= digest$1.length) ? $throwRuntimeError("index out of range") : digest$1[x$7] = ($shiftRightUint64(s, 24).$low << 24 >>> 24))); (x$8 = (i$1 * 8 >> 0) + 5 >> 0, ((x$8 < 0 || x$8 >= digest$1.length) ? $throwRuntimeError("index out of range") : digest$1[x$8] = ($shiftRightUint64(s, 16).$low << 24 >>> 24))); (x$9 = (i$1 * 8 >> 0) + 6 >> 0, ((x$9 < 0 || x$9 >= digest$1.length) ? $throwRuntimeError("index out of range") : digest$1[x$9] = ($shiftRightUint64(s, 8).$low << 24 >>> 24))); (x$10 = (i$1 * 8 >> 0) + 7 >> 0, ((x$10 < 0 || x$10 >= digest$1.length) ? $throwRuntimeError("index out of range") : digest$1[x$10] = (s.$low << 24 >>> 24))); _i++; } return digest$1; }; digest.prototype.checkSum = function() { return this.$val.checkSum(); }; block = 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 = $clone(arrayType$3.zero(), arrayType$3); _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 = i * 8 >> 0; ((i < 0 || i >= w.length) ? $throwRuntimeError("index out of range") : 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") : 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") : 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") : 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") : 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") : 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") : 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") : 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") : 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") : 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") : 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") : 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") : 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") : 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") : _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") : 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], false)}]; digest.init([{prop: "h", name: "h", pkg: "crypto/sha512", typ: arrayType$4, tag: ""}, {prop: "x", name: "x", pkg: "crypto/sha512", typ: arrayType$1, tag: ""}, {prop: "nx", name: "nx", pkg: "crypto/sha512", typ: $Int, tag: ""}, {prop: "len", name: "len", pkg: "crypto/sha512", typ: $Uint64, tag: ""}, {prop: "is384", name: "is384", pkg: "crypto/sha512", 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([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)]); init(); /* */ } 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$4, ptrType, ptrType$1, ptrType$2, sliceType$5, sliceType$6, ptrType$3, oidCountry, oidOrganization, oidOrganizationalUnit, oidCommonName, oidSerialNumber, oidLocality, oidProvince, oidStreetAddress, oidPostalCode, appendRDNs; asn1 = $packages["encoding/asn1"]; big = $packages["math/big"]; time = $packages["time"]; AlgorithmIdentifier = $pkg.AlgorithmIdentifier = $newType(0, $kindStruct, "pkix.AlgorithmIdentifier", "AlgorithmIdentifier", "crypto/x509/pkix", function(Algorithm_, Parameters_) { this.$val = this; if (arguments.length === 0) { this.Algorithm = asn1.ObjectIdentifier.nil; this.Parameters = new asn1.RawValue.ptr(); return; } this.Algorithm = Algorithm_; this.Parameters = Parameters_; }); RDNSequence = $pkg.RDNSequence = $newType(12, $kindSlice, "pkix.RDNSequence", "RDNSequence", "crypto/x509/pkix", null); RelativeDistinguishedNameSET = $pkg.RelativeDistinguishedNameSET = $newType(12, $kindSlice, "pkix.RelativeDistinguishedNameSET", "RelativeDistinguishedNameSET", "crypto/x509/pkix", null); AttributeTypeAndValue = $pkg.AttributeTypeAndValue = $newType(0, $kindStruct, "pkix.AttributeTypeAndValue", "AttributeTypeAndValue", "crypto/x509/pkix", 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", "Extension", "crypto/x509/pkix", function(Id_, Critical_, Value_) { this.$val = this; if (arguments.length === 0) { this.Id = asn1.ObjectIdentifier.nil; this.Critical = false; this.Value = sliceType$4.nil; return; } this.Id = Id_; this.Critical = Critical_; this.Value = Value_; }); Name = $pkg.Name = $newType(0, $kindStruct, "pkix.Name", "Name", "crypto/x509/pkix", function(Country_, Organization_, OrganizationalUnit_, Locality_, Province_, StreetAddress_, PostalCode_, SerialNumber_, CommonName_, Names_) { 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; 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_; }); CertificateList = $pkg.CertificateList = $newType(0, $kindStruct, "pkix.CertificateList", "CertificateList", "crypto/x509/pkix", function(TBSCertList_, SignatureAlgorithm_, SignatureValue_) { this.$val = this; if (arguments.length === 0) { this.TBSCertList = new TBSCertificateList.ptr(); this.SignatureAlgorithm = new AlgorithmIdentifier.ptr(); this.SignatureValue = new asn1.BitString.ptr(); return; } this.TBSCertList = TBSCertList_; this.SignatureAlgorithm = SignatureAlgorithm_; this.SignatureValue = SignatureValue_; }); TBSCertificateList = $pkg.TBSCertificateList = $newType(0, $kindStruct, "pkix.TBSCertificateList", "TBSCertificateList", "crypto/x509/pkix", 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(); this.Issuer = RDNSequence.nil; this.ThisUpdate = new time.Time.ptr(); this.NextUpdate = new time.Time.ptr(); 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", "RevokedCertificate", "crypto/x509/pkix", function(SerialNumber_, RevocationTime_, Extensions_) { this.$val = this; if (arguments.length === 0) { this.SerialNumber = ptrType$3.nil; this.RevocationTime = new time.Time.ptr(); 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$4 = $sliceType($Uint8); ptrType = $ptrType(RDNSequence); ptrType$1 = $ptrType(Name); ptrType$2 = $ptrType(CertificateList); sliceType$5 = $sliceType(RevokedCertificate); sliceType$6 = $sliceType(Extension); ptrType$3 = $ptrType(big.Int); Name.ptr.prototype.FillFromRDNSequence = function(rdns) { var $ptr, _i, _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") : _ref.$array[_ref.$offset + _i]); if (rdn.$length === 0) { _i++; continue; } atv = $clone((0 >= rdn.$length ? $throwRuntimeError("index out of range") : rdn.$array[rdn.$offset + 0]), AttributeTypeAndValue); n.Names = $append(n.Names, atv); _tuple = $assertType(atv.Value, $String, true); value = _tuple[0]; ok = _tuple[1]; if (!ok) { _i++; continue; } t = atv.Type; if ((t.$length === 4) && ((0 >= t.$length ? $throwRuntimeError("index out of range") : t.$array[t.$offset + 0]) === 2) && ((1 >= t.$length ? $throwRuntimeError("index out of range") : t.$array[t.$offset + 1]) === 5) && ((2 >= t.$length ? $throwRuntimeError("index out of range") : t.$array[t.$offset + 2]) === 4)) { _ref$1 = (3 >= t.$length ? $throwRuntimeError("index out of range") : t.$array[t.$offset + 3]); if (_ref$1 === 3) { n.CommonName = value; } else if (_ref$1 === 5) { n.SerialNumber = value; } else if (_ref$1 === 6) { n.Country = $append(n.Country, value); } else if (_ref$1 === 7) { n.Locality = $append(n.Locality, value); } else if (_ref$1 === 8) { n.Province = $append(n.Province, value); } else if (_ref$1 === 9) { n.StreetAddress = $append(n.StreetAddress, value); } else if (_ref$1 === 10) { n.Organization = $append(n.Organization, value); } else if (_ref$1 === 11) { n.OrganizationalUnit = $append(n.OrganizationalUnit, value); } else if (_ref$1 === 17) { n.PostalCode = $append(n.PostalCode, value); } } _i++; } }; Name.prototype.FillFromRDNSequence = function(rdns) { return this.$val.FillFromRDNSequence(rdns); }; appendRDNs = function(in$1, values, oid) { var $ptr, _i, _ref, i, in$1, oid, s, value, values; if (values.$length === 0) { 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") : _ref.$array[_ref.$offset + _i]); ((i < 0 || i >= s.$length) ? $throwRuntimeError("index out of range") : s.$array[s.$offset + i]).Type = oid; ((i < 0 || i >= s.$length) ? $throwRuntimeError("index out of range") : 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.ptr.prototype.ToRDNSequence = function() { var $ptr, n, ret; ret = RDNSequence.nil; n = $clone(this, Name); ret = appendRDNs(ret, n.Country, $subslice(new asn1.ObjectIdentifier(oidCountry.$array), oidCountry.$offset, oidCountry.$offset + oidCountry.$length)); ret = appendRDNs(ret, n.Organization, $subslice(new asn1.ObjectIdentifier(oidOrganization.$array), oidOrganization.$offset, oidOrganization.$offset + oidOrganization.$length)); ret = appendRDNs(ret, n.OrganizationalUnit, $subslice(new asn1.ObjectIdentifier(oidOrganizationalUnit.$array), oidOrganizationalUnit.$offset, oidOrganizationalUnit.$offset + oidOrganizationalUnit.$length)); ret = appendRDNs(ret, n.Locality, $subslice(new asn1.ObjectIdentifier(oidLocality.$array), oidLocality.$offset, oidLocality.$offset + oidLocality.$length)); ret = appendRDNs(ret, n.Province, $subslice(new asn1.ObjectIdentifier(oidProvince.$array), oidProvince.$offset, oidProvince.$offset + oidProvince.$length)); ret = appendRDNs(ret, n.StreetAddress, $subslice(new asn1.ObjectIdentifier(oidStreetAddress.$array), oidStreetAddress.$offset, oidStreetAddress.$offset + oidStreetAddress.$length)); ret = appendRDNs(ret, n.PostalCode, $subslice(new asn1.ObjectIdentifier(oidPostalCode.$array), oidPostalCode.$offset, oidPostalCode.$offset + oidPostalCode.$length)); if (n.CommonName.length > 0) { ret = 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 = appendRDNs(ret, new sliceType$2([n.SerialNumber]), $subslice(new asn1.ObjectIdentifier(oidSerialNumber.$array), oidSerialNumber.$offset, oidSerialNumber.$offset + oidSerialNumber.$length)); } ret = ret; return ret; }; Name.prototype.ToRDNSequence = function() { return this.$val.ToRDNSequence(); }; CertificateList.ptr.prototype.HasExpired = function(now) { var $ptr, certList, now; certList = this; now = $clone(now, time.Time); return now.After(certList.TBSCertList.NextUpdate); }; CertificateList.prototype.HasExpired = function(now) { return this.$val.HasExpired(now); }; Name.methods = [{prop: "ToRDNSequence", name: "ToRDNSequence", pkg: "", typ: $funcType([], [RDNSequence], false)}]; ptrType$1.methods = [{prop: "FillFromRDNSequence", name: "FillFromRDNSequence", pkg: "", typ: $funcType([ptrType], [], false)}]; ptrType$2.methods = [{prop: "HasExpired", name: "HasExpired", pkg: "", typ: $funcType([time.Time], [$Bool], false)}]; AlgorithmIdentifier.init([{prop: "Algorithm", name: "Algorithm", pkg: "", typ: asn1.ObjectIdentifier, tag: ""}, {prop: "Parameters", name: "Parameters", pkg: "", typ: asn1.RawValue, tag: "asn1:\"optional\""}]); RDNSequence.init(RelativeDistinguishedNameSET); RelativeDistinguishedNameSET.init(AttributeTypeAndValue); AttributeTypeAndValue.init([{prop: "Type", name: "Type", pkg: "", typ: asn1.ObjectIdentifier, tag: ""}, {prop: "Value", name: "Value", pkg: "", typ: $emptyInterface, tag: ""}]); Extension.init([{prop: "Id", name: "Id", pkg: "", typ: asn1.ObjectIdentifier, tag: ""}, {prop: "Critical", name: "Critical", pkg: "", typ: $Bool, tag: "asn1:\"optional\""}, {prop: "Value", name: "Value", pkg: "", typ: sliceType$4, tag: ""}]); Name.init([{prop: "Country", name: "Country", pkg: "", typ: sliceType$2, tag: ""}, {prop: "Organization", name: "Organization", pkg: "", typ: sliceType$2, tag: ""}, {prop: "OrganizationalUnit", name: "OrganizationalUnit", pkg: "", typ: sliceType$2, tag: ""}, {prop: "Locality", name: "Locality", pkg: "", typ: sliceType$2, tag: ""}, {prop: "Province", name: "Province", pkg: "", typ: sliceType$2, tag: ""}, {prop: "StreetAddress", name: "StreetAddress", pkg: "", typ: sliceType$2, tag: ""}, {prop: "PostalCode", name: "PostalCode", pkg: "", typ: sliceType$2, tag: ""}, {prop: "SerialNumber", name: "SerialNumber", pkg: "", typ: $String, tag: ""}, {prop: "CommonName", name: "CommonName", pkg: "", typ: $String, tag: ""}, {prop: "Names", name: "Names", pkg: "", typ: sliceType$1, tag: ""}]); CertificateList.init([{prop: "TBSCertList", name: "TBSCertList", pkg: "", typ: TBSCertificateList, tag: ""}, {prop: "SignatureAlgorithm", name: "SignatureAlgorithm", pkg: "", typ: AlgorithmIdentifier, tag: ""}, {prop: "SignatureValue", name: "SignatureValue", pkg: "", typ: asn1.BitString, tag: ""}]); TBSCertificateList.init([{prop: "Raw", name: "Raw", pkg: "", typ: asn1.RawContent, tag: ""}, {prop: "Version", name: "Version", pkg: "", typ: $Int, tag: "asn1:\"optional,default:2\""}, {prop: "Signature", name: "Signature", pkg: "", typ: AlgorithmIdentifier, tag: ""}, {prop: "Issuer", name: "Issuer", pkg: "", typ: RDNSequence, tag: ""}, {prop: "ThisUpdate", name: "ThisUpdate", pkg: "", typ: time.Time, tag: ""}, {prop: "NextUpdate", name: "NextUpdate", pkg: "", typ: time.Time, tag: "asn1:\"optional\""}, {prop: "RevokedCertificates", name: "RevokedCertificates", pkg: "", typ: sliceType$5, tag: "asn1:\"optional\""}, {prop: "Extensions", name: "Extensions", pkg: "", typ: sliceType$6, tag: "asn1:\"tag:0,optional,explicit\""}]); RevokedCertificate.init([{prop: "SerialNumber", name: "SerialNumber", pkg: "", typ: ptrType$3, tag: ""}, {prop: "RevocationTime", name: "RevocationTime", pkg: "", typ: time.Time, tag: ""}, {prop: "Extensions", name: "Extensions", pkg: "", 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, io, sort, Block, sliceType, ptrType, mapType, pemStart, pemEnd, pemEndOfLine, getLine, removeWhitespace, Decode, decodeError; bytes = $packages["bytes"]; base64 = $packages["encoding/base64"]; io = $packages["io"]; sort = $packages["sort"]; Block = $pkg.Block = $newType(0, $kindStruct, "pem.Block", "Block", "encoding/pem", 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") : 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; return [line, rest]; /* */ $s = -1; case -1: } 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") : _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") : 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, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, base64Data, data, err, i, i$1, i$2, 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; _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; base64Data = $f.base64Data; data = $f.data; err = $f.err; i = $f.i; i$1 = $f.i$1; i$2 = $f.i$2; 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; 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]; return [p, rest]; /* } */ case 3: typeLine = $subslice(typeLine, 0, (typeLine.$length - pemEndOfLine.$length >> 0)); p = new Block.ptr($bytesToString(typeLine), new $Map(), sliceType.nil); /* while (true) { */ case 5: if (rest.$length === 0) { _tmp$2 = ptrType.nil; _tmp$3 = data; p = _tmp$2; rest = _tmp$3; 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"))[_key] = { k: _key, v: $bytesToString(val) }; rest = next; /* } */ $s = 5; continue; case 6: i$2 = bytes.Index(rest, pemEnd); /* */ if (i$2 < 0) { $s = 10; continue; } /* */ $s = 11; continue; /* if (i$2 < 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]; return [p, rest]; /* } */ case 11: base64Data = removeWhitespace($subslice(rest, 0, i$2)); p.Bytes = $makeSlice(sliceType, base64.StdEncoding.DecodedLen(base64Data.$length)); _r$6 = base64.StdEncoding.Decode(p.Bytes, base64Data); /* */ $s = 13; case 13: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } _tuple$4 = _r$6; n = _tuple$4[0]; err = _tuple$4[1]; /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 14; continue; } /* */ $s = 15; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 14: _r$7 = decodeError(data, rest); /* */ $s = 16; case 16: 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]; return [p, rest]; /* } */ case 15: p.Bytes = $subslice(p.Bytes, 0, n); _r$8 = getLine($subslice(rest, (i$2 + pemEnd.$length >> 0))); /* */ $s = 17; case 17: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } _tuple$6 = _r$8; rest = _tuple$6[1]; return [p, rest]; /* */ $s = -1; case -1: } 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._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.base64Data = base64Data; $f.data = data; $f.err = err; $f.i = i; $f.i$1 = i$1; $f.i$2 = i$2; $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; } return [p, rest]; /* */ $s = -1; case -1: } 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", pkg: "", typ: $String, tag: ""}, {prop: "Headers", name: "Headers", pkg: "", typ: mapType, tag: ""}, {prop: "Bytes", name: "Bytes", pkg: "", 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 = io.$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; } 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["net"] = (function() { var $pkg = {}, $init, errors, io, rand, os, runtime, sort, sync, atomic, syscall, time, dnsRR_Header, dnsRR_CNAME, dnsRR_HINFO, dnsRR_MB, dnsRR_MG, dnsRR_MINFO, dnsRR_MR, dnsRR_MX, dnsRR_NS, dnsRR_PTR, dnsRR_SOA, dnsRR_TXT, dnsRR_SRV, dnsRR_A, dnsRR_AAAA, fdMutex, pollDesc, operation, ioSrv, ioSrvReq, netFD, Interface, Flags, IP, IPMask, ParseError, IPAddr, HardwareAddr, Addr, Conn, conn, Error, Listener, OpError, temporary, timeout, timeoutError, writerOnly, sockaddr, TCPAddr, TCPConn, TCPListener, UDPAddr, UnixAddr, ptrType, sliceType, sliceType$1, structType$1, chanType, ptrType$2, ptrType$3, ptrType$4, ptrType$5, ptrType$7, ptrType$8, ptrType$9, ptrType$10, ptrType$11, ptrType$15, ptrType$16, chanType$4, ptrType$18, ptrType$19, chanType$5, funcType, ptrType$20, ptrType$21, arrayType, arrayType$1, ptrType$22, ptrType$23, ptrType$24, arrayType$2, sliceType$5, ptrType$25, ptrType$26, ptrType$27, ptrType$29, sliceType$6, ptrType$30, sliceType$7, arrayType$3, sliceType$8, arrayType$4, arrayType$5, arrayType$6, ptrType$31, ptrType$32, ptrType$49, arrayType$7, arrayType$8, ptrType$51, ptrType$52, ptrType$54, ptrType$55, ptrType$57, funcType$1, ptrType$63, ptrType$64, ptrType$65, ptrType$66, ptrType$67, ptrType$68, ptrType$69, ptrType$70, ptrType$71, ptrType$72, ptrType$73, ptrType$74, ptrType$75, ptrType$78, ptrType$79, ptrType$80, funcType$2, funcType$3, ptrType$81, ptrType$82, ptrType$83, rr_mk, serverInit, initErr, canCancelIO, skipSyncNotif, hasLoadSetFileCompletionNotificationModes, rsrv, wsrv, onceStartServer, errNoSupport, errInvalidInterface, errInvalidInterfaceIndex, errInvalidInterfaceName, errNoSuchInterface, errNoSuchMulticastInterface, flagNames, v4InV6Prefix, classAMask, classBMask, classCMask, supportsIPv4, supportsIPv6, supportsIPv4map, errNoSuitableAddress, listenerBacklog, errMissingAddress, errTimeout, errClosing, threadLimit, _map, _key, Listen, sysInit, probeIPv4Stack, probeIPv6Stack, maxListenerBacklog, runtime_Semacquire, runtime_Semrelease, runtimeNano, runtime_pollServerInit, runtime_pollOpen, runtime_pollClose, runtime_pollWait, runtime_pollWaitCanceled, runtime_pollReset, runtime_pollSetDeadline, runtime_pollUnblock, convertErr, setDeadlineImpl, closesocket, startServer, newFD, InterfaceByIndex, interfaceByIndex, bytePtrToString, getAdapterList, getInterfaceList, interfaceTable, interfaceAddrTable, interfaceMulticastAddrTable, IPv4, IPv4Mask, isZeros, allFF, ipEmptyString, bytesEqual, simpleMaskLength, parseIPv4, parseIPv6, ParseIP, sockaddrToIP, init, splitHostZone, JoinHostPort, zoneToString, genericReadFrom, byteIndex, dtoi, xtoi, itoa, itod, appendHex, last, sendFile, sysSocket, boolint, setReadBuffer, setWriteBuffer, setKeepAlive, setLinger, sockaddrToTCP, newTCPConn, setNoDelay, setKeepAlivePeriod, sockaddrToUDP, sockaddrToUnix, sockaddrToUnixgram, sockaddrToUnixpacket; errors = $packages["errors"]; 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"]; dnsRR_Header = $pkg.dnsRR_Header = $newType(0, $kindStruct, "net.dnsRR_Header", "dnsRR_Header", "net", 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", "dnsRR_CNAME", "net", function(Hdr_, Cname_) { this.$val = this; if (arguments.length === 0) { this.Hdr = new dnsRR_Header.ptr(); this.Cname = ""; return; } this.Hdr = Hdr_; this.Cname = Cname_; }); dnsRR_HINFO = $pkg.dnsRR_HINFO = $newType(0, $kindStruct, "net.dnsRR_HINFO", "dnsRR_HINFO", "net", function(Hdr_, Cpu_, Os_) { this.$val = this; if (arguments.length === 0) { this.Hdr = new dnsRR_Header.ptr(); this.Cpu = ""; this.Os = ""; return; } this.Hdr = Hdr_; this.Cpu = Cpu_; this.Os = Os_; }); dnsRR_MB = $pkg.dnsRR_MB = $newType(0, $kindStruct, "net.dnsRR_MB", "dnsRR_MB", "net", function(Hdr_, Mb_) { this.$val = this; if (arguments.length === 0) { this.Hdr = new dnsRR_Header.ptr(); this.Mb = ""; return; } this.Hdr = Hdr_; this.Mb = Mb_; }); dnsRR_MG = $pkg.dnsRR_MG = $newType(0, $kindStruct, "net.dnsRR_MG", "dnsRR_MG", "net", function(Hdr_, Mg_) { this.$val = this; if (arguments.length === 0) { this.Hdr = new dnsRR_Header.ptr(); this.Mg = ""; return; } this.Hdr = Hdr_; this.Mg = Mg_; }); dnsRR_MINFO = $pkg.dnsRR_MINFO = $newType(0, $kindStruct, "net.dnsRR_MINFO", "dnsRR_MINFO", "net", function(Hdr_, Rmail_, Email_) { this.$val = this; if (arguments.length === 0) { this.Hdr = new dnsRR_Header.ptr(); this.Rmail = ""; this.Email = ""; return; } this.Hdr = Hdr_; this.Rmail = Rmail_; this.Email = Email_; }); dnsRR_MR = $pkg.dnsRR_MR = $newType(0, $kindStruct, "net.dnsRR_MR", "dnsRR_MR", "net", function(Hdr_, Mr_) { this.$val = this; if (arguments.length === 0) { this.Hdr = new dnsRR_Header.ptr(); this.Mr = ""; return; } this.Hdr = Hdr_; this.Mr = Mr_; }); dnsRR_MX = $pkg.dnsRR_MX = $newType(0, $kindStruct, "net.dnsRR_MX", "dnsRR_MX", "net", function(Hdr_, Pref_, Mx_) { this.$val = this; if (arguments.length === 0) { this.Hdr = new dnsRR_Header.ptr(); 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", "dnsRR_NS", "net", function(Hdr_, Ns_) { this.$val = this; if (arguments.length === 0) { this.Hdr = new dnsRR_Header.ptr(); this.Ns = ""; return; } this.Hdr = Hdr_; this.Ns = Ns_; }); dnsRR_PTR = $pkg.dnsRR_PTR = $newType(0, $kindStruct, "net.dnsRR_PTR", "dnsRR_PTR", "net", function(Hdr_, Ptr_) { this.$val = this; if (arguments.length === 0) { this.Hdr = new dnsRR_Header.ptr(); this.Ptr = ""; return; } this.Hdr = Hdr_; this.Ptr = Ptr_; }); dnsRR_SOA = $pkg.dnsRR_SOA = $newType(0, $kindStruct, "net.dnsRR_SOA", "dnsRR_SOA", "net", function(Hdr_, Ns_, Mbox_, Serial_, Refresh_, Retry_, Expire_, Minttl_) { this.$val = this; if (arguments.length === 0) { this.Hdr = new dnsRR_Header.ptr(); 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", "dnsRR_TXT", "net", function(Hdr_, Txt_) { this.$val = this; if (arguments.length === 0) { this.Hdr = new dnsRR_Header.ptr(); this.Txt = ""; return; } this.Hdr = Hdr_; this.Txt = Txt_; }); dnsRR_SRV = $pkg.dnsRR_SRV = $newType(0, $kindStruct, "net.dnsRR_SRV", "dnsRR_SRV", "net", function(Hdr_, Priority_, Weight_, Port_, Target_) { this.$val = this; if (arguments.length === 0) { this.Hdr = new dnsRR_Header.ptr(); 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", "dnsRR_A", "net", function(Hdr_, A_) { this.$val = this; if (arguments.length === 0) { this.Hdr = new dnsRR_Header.ptr(); this.A = 0; return; } this.Hdr = Hdr_; this.A = A_; }); dnsRR_AAAA = $pkg.dnsRR_AAAA = $newType(0, $kindStruct, "net.dnsRR_AAAA", "dnsRR_AAAA", "net", function(Hdr_, AAAA_) { this.$val = this; if (arguments.length === 0) { this.Hdr = new dnsRR_Header.ptr(); this.AAAA = arrayType$1.zero(); return; } this.Hdr = Hdr_; this.AAAA = AAAA_; }); fdMutex = $pkg.fdMutex = $newType(0, $kindStruct, "net.fdMutex", "fdMutex", "net", 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", "pollDesc", "net", function(runtimeCtx_) { this.$val = this; if (arguments.length === 0) { this.runtimeCtx = 0; return; } this.runtimeCtx = runtimeCtx_; }); operation = $pkg.operation = $newType(0, $kindStruct, "net.operation", "operation", "net", function(o_, runtimeCtx_, mode_, errno_, qty_, fd_, errc_, buf_, sa_, rsa_, rsan_, handle_, flags_) { this.$val = this; if (arguments.length === 0) { this.o = new syscall.Overlapped.ptr(); this.runtimeCtx = 0; this.mode = 0; this.errno = 0; this.qty = 0; this.fd = ptrType$18.nil; this.errc = chanType$5.nil; this.buf = new syscall.WSABuf.ptr(); this.sa = $ifaceNil; this.rsa = ptrType$23.nil; this.rsan = 0; this.handle = 0; this.flags = 0; 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_; }); ioSrv = $pkg.ioSrv = $newType(0, $kindStruct, "net.ioSrv", "ioSrv", "net", function(req_) { this.$val = this; if (arguments.length === 0) { this.req = chanType$4.nil; return; } this.req = req_; }); ioSrvReq = $pkg.ioSrvReq = $newType(0, $kindStruct, "net.ioSrvReq", "ioSrvReq", "net", 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", "netFD", "net", function(fdmu_, sysfd_, family_, sotype_, isConnected_, skipSyncNotif_, net_, laddr_, raddr_, rop_, wop_, pd_) { this.$val = this; if (arguments.length === 0) { this.fdmu = new fdMutex.ptr(); this.sysfd = 0; this.family = 0; this.sotype = 0; this.isConnected = false; this.skipSyncNotif = false; this.net = ""; this.laddr = $ifaceNil; this.raddr = $ifaceNil; this.rop = new operation.ptr(); this.wop = new operation.ptr(); this.pd = new pollDesc.ptr(); return; } this.fdmu = fdmu_; this.sysfd = sysfd_; this.family = family_; this.sotype = sotype_; 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", "Interface", "net", 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", "Flags", "net", null); IP = $pkg.IP = $newType(12, $kindSlice, "net.IP", "IP", "net", null); IPMask = $pkg.IPMask = $newType(12, $kindSlice, "net.IPMask", "IPMask", "net", null); ParseError = $pkg.ParseError = $newType(0, $kindStruct, "net.ParseError", "ParseError", "net", function(Type_, Text_) { this.$val = this; if (arguments.length === 0) { this.Type = ""; this.Text = ""; return; } this.Type = Type_; this.Text = Text_; }); IPAddr = $pkg.IPAddr = $newType(0, $kindStruct, "net.IPAddr", "IPAddr", "net", function(IP_, Zone_) { this.$val = this; if (arguments.length === 0) { this.IP = IP.nil; this.Zone = ""; return; } this.IP = IP_; this.Zone = Zone_; }); HardwareAddr = $pkg.HardwareAddr = $newType(12, $kindSlice, "net.HardwareAddr", "HardwareAddr", "net", null); Addr = $pkg.Addr = $newType(8, $kindInterface, "net.Addr", "Addr", "net", null); Conn = $pkg.Conn = $newType(8, $kindInterface, "net.Conn", "Conn", "net", null); conn = $pkg.conn = $newType(0, $kindStruct, "net.conn", "conn", "net", function(fd_) { this.$val = this; if (arguments.length === 0) { this.fd = ptrType$18.nil; return; } this.fd = fd_; }); Error = $pkg.Error = $newType(8, $kindInterface, "net.Error", "Error", "net", null); Listener = $pkg.Listener = $newType(8, $kindInterface, "net.Listener", "Listener", "net", null); OpError = $pkg.OpError = $newType(0, $kindStruct, "net.OpError", "OpError", "net", function(Op_, Net_, Addr_, Err_) { this.$val = this; if (arguments.length === 0) { this.Op = ""; this.Net = ""; this.Addr = $ifaceNil; this.Err = $ifaceNil; return; } this.Op = Op_; this.Net = Net_; this.Addr = Addr_; this.Err = Err_; }); temporary = $pkg.temporary = $newType(8, $kindInterface, "net.temporary", "temporary", "net", null); timeout = $pkg.timeout = $newType(8, $kindInterface, "net.timeout", "timeout", "net", null); timeoutError = $pkg.timeoutError = $newType(0, $kindStruct, "net.timeoutError", "timeoutError", "net", function() { this.$val = this; if (arguments.length === 0) { return; } }); writerOnly = $pkg.writerOnly = $newType(0, $kindStruct, "net.writerOnly", "writerOnly", "net", function(Writer_) { this.$val = this; if (arguments.length === 0) { this.Writer = $ifaceNil; return; } this.Writer = Writer_; }); sockaddr = $pkg.sockaddr = $newType(8, $kindInterface, "net.sockaddr", "sockaddr", "net", null); TCPAddr = $pkg.TCPAddr = $newType(0, $kindStruct, "net.TCPAddr", "TCPAddr", "net", 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", "TCPConn", "net", function(conn_) { this.$val = this; if (arguments.length === 0) { this.conn = new conn.ptr(); return; } this.conn = conn_; }); TCPListener = $pkg.TCPListener = $newType(0, $kindStruct, "net.TCPListener", "TCPListener", "net", function(fd_) { this.$val = this; if (arguments.length === 0) { this.fd = ptrType$18.nil; return; } this.fd = fd_; }); UDPAddr = $pkg.UDPAddr = $newType(0, $kindStruct, "net.UDPAddr", "UDPAddr", "net", 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_; }); UnixAddr = $pkg.UnixAddr = $newType(0, $kindStruct, "net.UnixAddr", "UnixAddr", "net", function(Name_, Net_) { this.$val = this; if (arguments.length === 0) { this.Name = ""; this.Net = ""; return; } this.Name = Name_; this.Net = Net_; }); ptrType = $ptrType(ioSrv); sliceType = $sliceType($String); sliceType$1 = $sliceType($Uint8); structType$1 = $structType([]); chanType = $chanType(structType$1, false, false); ptrType$2 = $ptrType(TCPAddr); ptrType$3 = $ptrType(UDPAddr); ptrType$4 = $ptrType(IPAddr); ptrType$5 = $ptrType(UnixAddr); ptrType$7 = $ptrType(dnsRR_Header); ptrType$8 = $ptrType(dnsRR_CNAME); ptrType$9 = $ptrType($Uint16); ptrType$10 = $ptrType($String); ptrType$11 = $ptrType($Uint32); ptrType$15 = $ptrType($Uint8); ptrType$16 = $ptrType($Uint64); chanType$4 = $chanType(ioSrvReq, false, false); ptrType$18 = $ptrType(netFD); ptrType$19 = $ptrType(syscall.Overlapped); chanType$5 = $chanType($error, false, false); funcType = $funcType([ptrType$18], [$error], false); ptrType$20 = $ptrType(syscall.SockaddrInet4); ptrType$21 = $ptrType(syscall.SockaddrInet6); arrayType = $arrayType($Uint8, 4); arrayType$1 = $arrayType($Uint8, 16); ptrType$22 = $ptrType(syscall.Handle); ptrType$23 = $ptrType(syscall.RawSockaddrAny); ptrType$24 = $ptrType($Int32); arrayType$2 = $arrayType(syscall.RawSockaddrAny, 2); sliceType$5 = $sliceType(syscall.RawSockaddrAny); ptrType$25 = $ptrType(OpError); ptrType$26 = $ptrType(ptrType$23); ptrType$27 = $ptrType(os.File); ptrType$29 = $ptrType(Interface); sliceType$6 = $sliceType(Addr); ptrType$30 = $ptrType(syscall.IpAdapterInfo); sliceType$7 = $sliceType(syscall.InterfaceInfo); arrayType$3 = $arrayType(syscall.InterfaceInfo, 20); sliceType$8 = $sliceType(Interface); arrayType$4 = $arrayType($Uint16, 256); arrayType$5 = $arrayType($Uint8, 8); arrayType$6 = $arrayType($Uint8, 256); ptrType$31 = $ptrType(syscall.RawSockaddrInet4); ptrType$32 = $ptrType(syscall.IpAddrString); ptrType$49 = $ptrType(conn); arrayType$7 = $arrayType($Uint8, 30); arrayType$8 = $arrayType($Uint8, 32); ptrType$51 = $ptrType(io.LimitedReader); ptrType$52 = $ptrType(syscall.TransmitFileBuffers); ptrType$54 = $ptrType(TCPConn); ptrType$55 = $ptrType(TCPListener); ptrType$57 = $ptrType(syscall.SockaddrUnix); funcType$1 = $funcType([$emptyInterface, $String, $String], [$Bool], false); ptrType$63 = $ptrType(dnsRR_HINFO); ptrType$64 = $ptrType(dnsRR_MB); ptrType$65 = $ptrType(dnsRR_MG); ptrType$66 = $ptrType(dnsRR_MINFO); ptrType$67 = $ptrType(dnsRR_MR); 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); funcType$2 = $funcType([ptrType$80], [$error], false); funcType$3 = $funcType([syscall.Sockaddr], [Addr], false); ptrType$81 = $ptrType(IP); ptrType$82 = $ptrType(ParseError); ptrType$83 = $ptrType(timeoutError); Listen = function(net, laddr) { var $ptr, laddr, net; $panic(errors.New("network access is not supported by GopherJS")); }; $pkg.Listen = Listen; 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]; }; maxListenerBacklog = function() { var $ptr; return 2147483647; }; 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$10(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$9(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$9(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$11(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$9(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: return _v; /* */ $s = -1; case -1: } 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$10(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: return _v; /* */ $s = -1; case -1: } 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_HINFO.ptr.prototype.Header = function() { var $ptr, rr; rr = this; return rr.Hdr; }; dnsRR_HINFO.prototype.Header = function() { return this.$val.Header(); }; dnsRR_HINFO.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_Cpu || (rr.$ptr_Cpu = new ptrType$10(function() { return this.$target.Cpu; }, function($v) { this.$target.Cpu = $v; }, rr))), "Cpu", ""); /* */ $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_Os || (rr.$ptr_Os = new ptrType$10(function() { return this.$target.Os; }, function($v) { this.$target.Os = $v; }, rr))), "Os", ""); /* */ $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: return _v; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: dnsRR_HINFO.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_HINFO.prototype.Walk = function(f) { return this.$val.Walk(f); }; dnsRR_MB.ptr.prototype.Header = function() { var $ptr, rr; rr = this; return rr.Hdr; }; dnsRR_MB.prototype.Header = function() { return this.$val.Header(); }; dnsRR_MB.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_Mb || (rr.$ptr_Mb = new ptrType$10(function() { return this.$target.Mb; }, function($v) { this.$target.Mb = $v; }, rr))), "Mb", "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: return _v; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: dnsRR_MB.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_MB.prototype.Walk = function(f) { return this.$val.Walk(f); }; dnsRR_MG.ptr.prototype.Header = function() { var $ptr, rr; rr = this; return rr.Hdr; }; dnsRR_MG.prototype.Header = function() { return this.$val.Header(); }; dnsRR_MG.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_Mg || (rr.$ptr_Mg = new ptrType$10(function() { return this.$target.Mg; }, function($v) { this.$target.Mg = $v; }, rr))), "Mg", "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: return _v; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: dnsRR_MG.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_MG.prototype.Walk = function(f) { return this.$val.Walk(f); }; dnsRR_MINFO.ptr.prototype.Header = function() { var $ptr, rr; rr = this; return rr.Hdr; }; dnsRR_MINFO.prototype.Header = function() { return this.$val.Header(); }; dnsRR_MINFO.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_Rmail || (rr.$ptr_Rmail = new ptrType$10(function() { return this.$target.Rmail; }, function($v) { this.$target.Rmail = $v; }, rr))), "Rmail", "domain"); /* */ $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_Email || (rr.$ptr_Email = new ptrType$10(function() { return this.$target.Email; }, function($v) { this.$target.Email = $v; }, rr))), "Email", "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: return _v; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: dnsRR_MINFO.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_MINFO.prototype.Walk = function(f) { return this.$val.Walk(f); }; dnsRR_MR.ptr.prototype.Header = function() { var $ptr, rr; rr = this; return rr.Hdr; }; dnsRR_MR.prototype.Header = function() { return this.$val.Header(); }; dnsRR_MR.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_Mr || (rr.$ptr_Mr = new ptrType$10(function() { return this.$target.Mr; }, function($v) { this.$target.Mr = $v; }, rr))), "Mr", "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: return _v; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: dnsRR_MR.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_MR.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$9(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$10(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: return _v; /* */ $s = -1; case -1: } 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$10(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: return _v; /* */ $s = -1; case -1: } 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$10(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: return _v; /* */ $s = -1; case -1: } 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$10(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$10(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$11(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$11(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$11(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$11(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$11(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: return _v; /* */ $s = -1; case -1: } 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, _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_Txt || (rr.$ptr_Txt = new ptrType$10(function() { return this.$target.Txt; }, function($v) { this.$target.Txt = $v; }, rr))), "Txt", ""); /* */ $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: return _v; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: dnsRR_TXT.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_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$9(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$9(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$9(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$10(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: return _v; /* */ $s = -1; case -1: } 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$11(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: return _v; /* */ $s = -1; case -1: } 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: return _v; /* */ $s = -1; case -1: } 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$16(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$16(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$16(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$16(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$11(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$11(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$16(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$16(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$11.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$11(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$11(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$16(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$16(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$11.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$11(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$11(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$16(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$16(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() { $panic("Native function not implemented: net.runtime_Semacquire"); }; runtime_Semrelease = function() { $panic("Native function not implemented: net.runtime_Semrelease"); }; runtimeNano = function() { $panic("Native function not implemented: net.runtimeNano"); }; runtime_pollServerInit = function() { $panic("Native function not implemented: net.runtime_pollServerInit"); }; runtime_pollOpen = function() { $panic("Native function not implemented: net.runtime_pollOpen"); }; runtime_pollClose = function() { $panic("Native function not implemented: net.runtime_pollClose"); }; runtime_pollWait = function() { $panic("Native function not implemented: net.runtime_pollWait"); }; runtime_pollWaitCanceled = function() { $panic("Native function not implemented: net.runtime_pollWaitCanceled"); }; runtime_pollReset = function() { $panic("Native function not implemented: net.runtime_pollReset"); }; runtime_pollSetDeadline = function() { $panic("Native function not implemented: net.runtime_pollSetDeadline"); }; runtime_pollUnblock = function() { $panic("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]; if (!((errno === 0))) { return new syscall.Errno((errno >>> 0)); } pd.runtimeCtx = ctx; return $ifaceNil; /* */ $s = -1; case -1: } 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.Lock = function() { var $ptr, pd; pd = this; }; pollDesc.prototype.Lock = function() { return this.$val.Lock(); }; pollDesc.ptr.prototype.Unlock = function() { var $ptr, pd; pd = this; }; pollDesc.prototype.Unlock = function() { return this.$val.Unlock(); }; pollDesc.ptr.prototype.Wakeup = function() { var $ptr, pd; pd = this; }; pollDesc.prototype.Wakeup = function() { return this.$val.Wakeup(); }; pollDesc.ptr.prototype.Evict = function() { var $ptr, pd; pd = this; if (pd.runtimeCtx === 0) { return false; } runtime_pollUnblock(pd.runtimeCtx); return false; }; 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.PrepareRead = function() { var $ptr, pd; pd = this; return pd.Prepare(114); }; pollDesc.prototype.PrepareRead = function() { return this.$val.PrepareRead(); }; pollDesc.ptr.prototype.PrepareWrite = function() { var $ptr, pd; pd = this; return pd.Prepare(119); }; pollDesc.prototype.PrepareWrite = function() { return this.$val.PrepareWrite(); }; 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.WaitRead = function() { var $ptr, pd; pd = this; return pd.Wait(114); }; pollDesc.prototype.WaitRead = function() { return this.$val.WaitRead(); }; pollDesc.ptr.prototype.WaitWrite = function() { var $ptr, pd; pd = this; return pd.Wait(119); }; pollDesc.prototype.WaitWrite = function() { return this.$val.WaitWrite(); }; 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); }; pollDesc.ptr.prototype.WaitCanceledRead = function() { var $ptr, pd; pd = this; pd.WaitCanceled(114); }; pollDesc.prototype.WaitCanceledRead = function() { return this.$val.WaitCanceledRead(); }; pollDesc.ptr.prototype.WaitCanceledWrite = function() { var $ptr, pd; pd = this; pd.WaitCanceled(119); }; pollDesc.prototype.WaitCanceledWrite = function() { return this.$val.WaitCanceledWrite(); }; convertErr = function(res) { var $ptr, _ref, res; _ref = res; if (_ref === 0) { return $ifaceNil; } else if (_ref === 1) { return errClosing; } else if (_ref === 2) { return errTimeout; } console.log("unreachable: ", res); $panic(new $String("unreachable")); }; netFD.ptr.prototype.setDeadline = function(t) { var $ptr, fd, t; fd = this; t = $clone(t, time.Time); return setDeadlineImpl(fd, t, 233); }; netFD.prototype.setDeadline = function(t) { return this.$val.setDeadline(t); }; netFD.ptr.prototype.setReadDeadline = function(t) { var $ptr, fd, t; fd = this; t = $clone(t, time.Time); return setDeadlineImpl(fd, t, 114); }; netFD.prototype.setReadDeadline = function(t) { return this.$val.setReadDeadline(t); }; netFD.ptr.prototype.setWriteDeadline = function(t) { var $ptr, fd, t; fd = this; t = $clone(t, time.Time); return setDeadlineImpl(fd, t, 119); }; netFD.prototype.setWriteDeadline = function(t) { return this.$val.setWriteDeadline(t); }; setDeadlineImpl = function(fd, t, mode) { var $ptr, d, err, fd, mode, t, x, x$1, x$2; t = $clone(t, time.Time); d = (x = runtimeNano(), x$1 = (x$2 = t.Sub(time.Now()), new $Int64(x$2.$high, x$2.$low)), new $Int64(x.$high + x$1.$high, x.$low + x$1.$low)); if (t.IsZero()) { d = new $Int64(0, 0); } err = fd.incref(); if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } runtime_pollSetDeadline(fd.pd.runtimeCtx, d, mode); fd.decref(); return $ifaceNil; }; closesocket = function(s) { var $ptr, s; return syscall.Closesocket(s); }; operation.ptr.prototype.InitBuf = function(buf) { var $ptr, buf, o; o = this; o.buf.Len = (buf.$length >>> 0); o.buf.Buf = ptrType$15.nil; if (!((buf.$length === 0))) { o.buf.Buf = $indexPtr(buf.$array, buf.$offset + 0, ptrType$15); } }; operation.prototype.InitBuf = function(buf) { return this.$val.InitBuf(buf); }; ioSrv.ptr.prototype.ProcessRemoteIO = function() { var $ptr, _arg, _arg$1, _ok, _r, _r$1, _ref, _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; _arg = $f._arg; _arg$1 = $f._arg$1; _ok = $f._ok; _r = $f._r; _r$1 = $f._r$1; _ref = $f._ref; _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, []]); _ref = s.req; /* while (true) { */ case 1: _r = $recv(_ref); /* */ $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); _ok = _tuple[1]; if (!_ok) { /* break; */ $s = 2; continue; } /* */ if (!(r.submit === $throwNilPointerError)) { $s = 4; continue; } /* */ $s = 5; continue; /* if (!(r.submit === $throwNilPointerError)) { */ case 4: _arg = r.o.errc; _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; } _arg$1 = _r$1; $r = $send(_arg, _arg$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; case -1: } 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._arg = _arg; $f._arg$1 = _arg$1; $f._ok = _ok; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $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, _r, _r$1, _r$2, _r$3, _ref, _ref$1, 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; _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; 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))) { return [0, new OpError.ptr(name, fd.net, fd.laddr, 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, new ioSrvReq.ptr(o, submit)); /* */ $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: _ref = err; if ($interfaceIsEqual(_ref, $ifaceNil)) { if (o.fd.skipSyncNotif) { return [(o.qty >> 0), $ifaceNil]; } } else if ($interfaceIsEqual(_ref, new syscall.Errno(997))) { err = $ifaceNil; } else { return [0, new OpError.ptr(name, fd.net, fd.laddr, err)]; } err = fd.pd.Wait((o.mode >> 0)); if ($interfaceIsEqual(err, $ifaceNil)) { if (!((o.errno === 0))) { err = new syscall.Errno((o.errno >>> 0)); return [0, new OpError.ptr(name, fd.net, fd.laddr, err)]; } return [(o.qty >> 0), $ifaceNil]; } netpollErr = err; _ref$1 = netpollErr; /* */ if ($interfaceIsEqual(_ref$1, errClosing) || $interfaceIsEqual(_ref$1, errTimeout)) { $s = 7; continue; } /* */ $s = 8; continue; /* if ($interfaceIsEqual(_ref$1, errClosing) || $interfaceIsEqual(_ref$1, errTimeout)) { */ case 7: $s = 9; continue; /* } else { */ case 8: _r$2 = netpollErr.Error(); /* */ $s = 10; case 10: 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 9: /* */ if (canCancelIO) { $s = 11; continue; } /* */ $s = 12; continue; /* if (canCancelIO) { */ case 11: err$1 = syscall.CancelIoEx(fd.sysfd, o.o); if (!($interfaceIsEqual(err$1, $ifaceNil)) && !($interfaceIsEqual(err$1, new syscall.Errno(1168)))) { $panic(err$1); } $s = 13; continue; /* } else { */ case 12: $r = $send(s.req, new ioSrvReq.ptr(o, $throwNilPointerError)); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } _r$3 = $recv(o.errc); /* */ $s = 15; case 15: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } _r$3[0]; /* } */ case 13: 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; } return [0, new OpError.ptr(name, fd.net, fd.laddr, err)]; } return [(o.qty >> 0), $ifaceNil]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: ioSrv.ptr.prototype.ExecIO }; } $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.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(); wsrv = new ioSrv.ptr(); if (!canCancelIO) { rsrv.req = new chanType$4(0); $go($methodVal(rsrv, "ProcessRemoteIO"), []); wsrv.req = new chanType$4(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))) { return [ptrType$18.nil, initErr]; } $r = onceStartServer.Do(startServer); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } return [new netFD.ptr(new fdMutex.ptr(), sysfd, family, sotype, false, false, net, $ifaceNil, $ifaceNil, new operation.ptr(), new operation.ptr(), new pollDesc.ptr()), $ifaceNil]; /* */ $s = -1; case -1: } 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, _r, _ref, 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; _r = $f._r; _ref = $f._ref; 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 = 2; continue; } /* */ $s = 3; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2: return err; /* } */ case 3: 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; } } _ref = fd.net; if (_ref === "udp" || _ref === "udp4" || _ref === "udp6") { ret[0] = 0; flag[0] = 0; size = 4; err$2 = syscall.WSAIoctl(fd.sysfd, 2550136844, (flag.$ptr || (flag.$ptr = new ptrType$11(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, flag))), size, ptrType$15.nil, 0, (ret.$ptr || (ret.$ptr = new ptrType$11(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, ret))), ptrType$19.nil, 0); if (!($interfaceIsEqual(err$2, $ifaceNil))) { 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 chanType$5(0); fd.wop.errc = new chanType$5(0); } return $ifaceNil; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: netFD.ptr.prototype.init }; } $f.$ptr = $ptr; $f._r = _r; $f._ref = _ref; $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$18.prototype.Close))); }; netFD.prototype.setAddr = function(laddr, raddr) { return this.$val.setAddr(laddr, raddr); }; netFD.ptr.prototype.destroy = function() { var $ptr, fd; fd = this; if (fd.sysfd === 4294967295) { return; } fd.pd.Close(); closesocket(fd.sysfd); fd.sysfd = 4294967295; runtime.SetFinalizer(fd, $ifaceNil); }; netFD.prototype.destroy = function() { return this.$val.destroy(); }; 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; fd = this; if (fd.fdmu.Decref()) { fd.destroy(); } }; 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; fd = this; if (fd.fdmu.RWUnlock(true)) { fd.destroy(); } }; 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; fd = this; if (fd.fdmu.RWUnlock(false)) { fd.destroy(); } }; netFD.prototype.writeUnlock = function() { return this.$val.writeUnlock(); }; netFD.ptr.prototype.Close = function() { var $ptr, fd; fd = this; if (!fd.fdmu.IncrefAndClose()) { return errClosing; } fd.pd.Evict(); fd.decref(); return $ifaceNil; }; netFD.prototype.Close = function() { return this.$val.Close(); }; netFD.ptr.prototype.shutdown = function(how) { var $ptr, err, err$1, fd, how, $deferred; /* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); fd = this; err = fd.incref(); if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } $deferred.push([$methodVal(fd, "decref"), []]); err$1 = syscall.Shutdown(fd.sysfd, how); if (!($interfaceIsEqual(err$1, $ifaceNil))) { return new OpError.ptr("shutdown", fd.net, fd.laddr, err$1); } return $ifaceNil; /* */ } catch(err) { $err = err; return $ifaceNil; } finally { $callDeferred($deferred, $err); } }; netFD.prototype.shutdown = function(how) { return this.$val.shutdown(how); }; netFD.ptr.prototype.closeRead = function() { var $ptr, fd; fd = this; return fd.shutdown(0); }; netFD.prototype.closeRead = function() { return this.$val.closeRead(); }; netFD.ptr.prototype.closeWrite = function() { var $ptr, fd; fd = this; return fd.shutdown(1); }; netFD.prototype.closeWrite = function() { return this.$val.closeWrite(); }; netFD.ptr.prototype.Read = function(buf) { var $ptr, _r, _tuple, buf, err, err$1, fd, n, o, $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; buf = $f.buf; err = $f.err; err$1 = $f.err$1; fd = $f.fd; n = $f.n; 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); fd = this; err = fd.readLock(); if (!($interfaceIsEqual(err, $ifaceNil))) { 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$11(function() { return this.$target.qty; }, function($v) { this.$target.qty = $v; }, o$1))), (o$1.$ptr_flags || (o$1.$ptr_flags = new ptrType$11(function() { return this.$target.flags; }, function($v) { this.$target.flags = $v; }, o$1))), o$1.o, ptrType$15.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 ($interfaceIsEqual(err$1, $ifaceNil) && (n === 0)) { err$1 = io.EOF; } return [n, err$1]; /* */ $s = -1; case -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.buf = buf; $f.err = err; $f.err$1 = err$1; $f.fd = fd; $f.n = n; $f.o = o; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } }; netFD.prototype.Read = function(buf) { return this.$val.Read(buf); }; netFD.ptr.prototype.Write = function(buf) { var $ptr, _r, buf, err, fd, o, $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; buf = $f.buf; err = $f.err; fd = $f.fd; 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); fd = this; err = fd.writeLock(); if (!($interfaceIsEqual(err, $ifaceNil))) { return [0, err]; } $deferred.push([$methodVal(fd, "writeUnlock"), []]); 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$11(function() { return this.$target.qty; }, function($v) { this.$target.qty = $v; }, o$1))), 0, o$1.o, ptrType$15.nil); })); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -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.buf = buf; $f.err = err; $f.fd = fd; $f.o = o; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } }; netFD.prototype.Write = function(buf) { return this.$val.Write(buf); }; netFD.ptr.prototype.acceptOne = function(rawsa, o) { var $ptr, _r, _r$1, _r$2, _r$3, _tuple, _tuple$1, _tuple$2, err, err$1, fd, netfd, o, 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; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; err = $f.err; err$1 = $f.err$1; fd = $f.fd; netfd = $f.netfd; o = $f.o; 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))) { return [ptrType$18.nil, new OpError.ptr("socket", fd.net, fd.laddr, 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))) { closesocket(s); return [ptrType$18.nil, new OpError.ptr("accept", fd.net, fd.laddr, err)]; } _r$2 = netfd.init(); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } err$1 = _r$2; /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 4; continue; } /* */ $s = 5; continue; /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 4: fd.Close(); return [ptrType$18.nil, err$1]; /* } */ case 5: o.handle = s; o.rsan = 112; _r$3 = rsrv.ExecIO(o, "AcceptEx", (function(rawsa) { return function(o$1) { var $ptr, o$1; return syscall.AcceptEx(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$11(function() { return this.$target.qty; }, function($v) { this.$target.qty = $v; }, o$1))), o$1.o); }; })(rawsa)); /* */ $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; err = _tuple$2[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { netfd.Close(); return [ptrType$18.nil, err]; } err = syscall.Setsockopt(s, 65535, 28683, (fd.$ptr_sysfd || (fd.$ptr_sysfd = new ptrType$22(function() { return this.$target.sysfd; }, function($v) { this.$target.sysfd = $v; }, fd))), 4); if (!($interfaceIsEqual(err, $ifaceNil))) { netfd.Close(); return [ptrType$18.nil, new OpError.ptr("Setsockopt", fd.net, fd.laddr, err)]; } return [netfd, $ifaceNil]; /* */ $s = -1; case -1: } 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._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.err = err; $f.err$1 = err$1; $f.fd = fd; $f.netfd = netfd; $f.o = o; $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, _arg, _arg$1, _r, _r$1, _r$2, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, err, err$1, errno, fd, llen, lrsa, lsa, netfd, o, ok, operr, 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; _arg = $f._arg; _arg$1 = $f._arg$1; _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; _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; netfd = $f.netfd; o = $f.o; ok = $f.ok; operr = $f.operr; 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))) { return [ptrType$18.nil, err]; } $deferred.push([$methodVal(fd, "readUnlock"), []]); o = fd.rop; netfd = ptrType$18.nil; err$1 = $ifaceNil; rawsa = $clone(arrayType$2.zero(), arrayType$2); /* while (true) { */ case 1: _r = fd.acceptOne(new sliceType$5(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$25, true); operr = _tuple$1[0]; ok = _tuple$1[1]; if (!ok) { return [ptrType$18.nil, err$1]; } _tuple$2 = $assertType(operr.Err, syscall.Errno, true); errno = _tuple$2[0]; ok = _tuple$2[1]; if (!ok) { return [ptrType$18.nil, err$1]; } _ref = errno; if (_ref === 64 || _ref === 10054) { } else { return [ptrType$18.nil, err$1]; } /* } */ $s = 1; continue; case 2: _tmp = ptrType$23.nil; _tmp$1 = ptrType$23.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$26(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, lrsa))), (llen.$ptr || (llen.$ptr = new ptrType$24(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, llen))), (rrsa.$ptr || (rrsa.$ptr = new ptrType$26(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, rrsa))), (rlen.$ptr || (rlen.$ptr = new ptrType$24(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; } return [netfd, $ifaceNil]; /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; return [ptrType$18.nil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: netFD.ptr.prototype.accept }; } $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._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.err = err; $f.err$1 = err$1; $f.errno = errno; $f.fd = fd; $f.llen = llen; $f.lrsa = lrsa; $f.lsa = lsa; $f.netfd = netfd; $f.o = o; $f.ok = ok; $f.operr = operr; $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$27.nil, os.NewSyscallError("dup", new syscall.Errno(536871042))]; }; netFD.prototype.dup = function() { return this.$val.dup(); }; 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") : _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, ifi; ifi = this; if (ifi === ptrType$29.nil) { return [sliceType$6.nil, errInvalidInterface]; } return interfaceAddrTable(ifi); }; Interface.prototype.Addrs = function() { return this.$val.Addrs(); }; Interface.ptr.prototype.MulticastAddrs = function() { var $ptr, ifi; ifi = this; if (ifi === ptrType$29.nil) { return [sliceType$6.nil, errInvalidInterface]; } return interfaceMulticastAddrTable(ifi); }; Interface.prototype.MulticastAddrs = function() { return this.$val.MulticastAddrs(); }; InterfaceByIndex = function(index) { var $ptr, _r, _tuple, err, ift, index, $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; ift = $f.ift; index = $f.index; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: if (index <= 0) { return [ptrType$29.nil, errInvalidInterfaceIndex]; } _r = interfaceTable(index); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _tuple = _r; ift = _tuple[0]; err = _tuple[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { return [ptrType$29.nil, err]; } return interfaceByIndex(ift, index); /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: InterfaceByIndex }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.ift = ift; $f.index = index; $f.$s = $s; $f.$r = $r; return $f; }; $pkg.InterfaceByIndex = InterfaceByIndex; interfaceByIndex = function(ift, index) { var $ptr, _i, _ref, ifi, ift, index; _ref = ift; _i = 0; while (true) { if (!(_i < _ref.$length)) { break; } ifi = $clone(((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]), Interface); if (index === ifi.Index) { return [ifi, $ifaceNil]; } _i++; } return [ptrType$29.nil, errNoSuchInterface]; }; bytePtrToString = function(p) { var $ptr, a, i, p; a = p; i = 0; while (true) { if (!(!(((a.nilCheck, ((i < 0 || i >= a.length) ? $throwRuntimeError("index out of range") : a[i])) === 0)))) { break; } i = i + (1) >> 0; } return $bytesToString($subslice(new sliceType$1(a), 0, i)); }; getAdapterList = function() { var $ptr, a, b, err, l, l_ptr; b = $makeSlice(sliceType$1, 1000); l = (b.$length >>> 0); a = $pointerOfStructConversion($sliceToArray(b), ptrType$30); err = syscall.GetAdaptersInfo(a, (l_ptr || (l_ptr = new ptrType$11(function() { return l; }, function($v) { l = $v; })))); if ($interfaceIsEqual(err, new syscall.Errno(111))) { b = $makeSlice(sliceType$1, l); a = $pointerOfStructConversion($sliceToArray(b), ptrType$30); err = syscall.GetAdaptersInfo(a, (l_ptr || (l_ptr = new ptrType$11(function() { return l; }, function($v) { l = $v; })))); } if (!($interfaceIsEqual(err, $ifaceNil))) { return [ptrType$30.nil, os.NewSyscallError("GetAdaptersInfo", err)]; } return [a, $ifaceNil]; }; getInterfaceList = function() { var $ptr, _q, _r, _tuple, c, err, ii, ret, s, size, $s, $deferred, $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; err = $f.err; ii = $f.ii; ret = $f.ret; s = $f.s; 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); ret = [ret]; _r = sysSocket(2, 2, 17); /* */ $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))) { return [sliceType$7.nil, os.NewSyscallError("Socket", err)]; } $deferred.push([syscall.Closesocket, [s]]); ii = arrayType$3.zero(); ret[0] = 0; size = 1520; err = syscall.WSAIoctl(s, 1074033791, ptrType$15.nil, 0, $sliceToArray(new sliceType$1(ii)), size, (ret.$ptr || (ret.$ptr = new ptrType$11(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, ret))), ptrType$19.nil, 0); if (!($interfaceIsEqual(err, $ifaceNil))) { return [sliceType$7.nil, os.NewSyscallError("WSAIoctl", err)]; } c = (_q = ret[0] / 76, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")); return [$subslice(new sliceType$7(ii), 0, (c - 1 >>> 0)), $ifaceNil]; /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; return [sliceType$7.nil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: getInterfaceList }; } $f.$ptr = $ptr; $f._q = _q; $f._r = _r; $f._tuple = _tuple; $f.c = c; $f.err = err; $f.ii = ii; $f.ret = ret; $f.s = s; $f.size = size; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } }; interfaceTable = function(ifindex) { var $ptr, _i, _r, _ref, _tuple, _tuple$1, ai, e, err, flags, ifi, ifindex, ift, ii, ii$1, index, ip, ipl, ips, ipv4, name, row, 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; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; ai = $f.ai; e = $f.e; err = $f.err; flags = $f.flags; ifi = $f.ifi; ifindex = $f.ifindex; ift = $f.ift; ii = $f.ii; ii$1 = $f.ii$1; index = $f.index; ip = $f.ip; ipl = $f.ipl; ips = $f.ips; ipv4 = $f.ipv4; name = $f.name; row = $f.row; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: _tuple = getAdapterList(); ai = _tuple[0]; err = _tuple[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { return [sliceType$8.nil, err]; } _r = getInterfaceList(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _tuple$1 = _r; ii = _tuple$1[0]; err = _tuple$1[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { return [sliceType$8.nil, err]; } ift = sliceType$8.nil; while (true) { if (!(!(ai === ptrType$30.nil))) { break; } row = [row]; index = ai.Index; if ((ifindex === 0) || (ifindex === (index >> 0))) { flags = 0; row[0] = new syscall.MibIfRow.ptr(arrayType$4.zero(), index, 0, 0, 0, 0, arrayType$5.zero(), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, arrayType$6.zero()); e = syscall.GetIfEntry(row[0]); if (!($interfaceIsEqual(e, $ifaceNil))) { return [sliceType$8.nil, os.NewSyscallError("GetIfEntry", e)]; } _ref = ii; _i = 0; while (true) { if (!(_i < _ref.$length)) { break; } ii$1 = $clone(((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]), syscall.InterfaceInfo); ip = $clone($pointerOfStructConversion(ii$1.Address, ptrType$31).Addr, arrayType); ipv4 = IPv4(ip[0], ip[1], ip[2], ip[3]); ipl = ai.IpAddressList; while (true) { if (!(!(ipl === ptrType$32.nil))) { break; } ips = bytePtrToString($indexPtr(ipl.IpAddress.String, 0, ptrType$15)); if (ipv4.Equal(parseIPv4(ips))) { break; } ipl = ipl.Next; } if (ipl === ptrType$32.nil) { _i++; continue; } if (!((((ii$1.Flags & 1) >>> 0) === 0))) { flags = (flags | (1)) >>> 0; } if (!((((ii$1.Flags & 4) >>> 0) === 0))) { flags = (flags | (4)) >>> 0; } if (!((((ii$1.Flags & 2) >>> 0) === 0))) { flags = (flags | (2)) >>> 0; } if (!((((ii$1.Flags & 8) >>> 0) === 0))) { flags = (flags | (8)) >>> 0; } if (!((((ii$1.Flags & 16) >>> 0) === 0))) { flags = (flags | (16)) >>> 0; } _i++; } name = bytePtrToString($indexPtr(ai.AdapterName, 0, ptrType$15)); ifi = new Interface.ptr((index >> 0), (row[0].Mtu >> 0), name, (x = $subslice(new sliceType$1(row[0].PhysAddr), 0, row[0].PhysAddrLen), $subslice(new HardwareAddr(x.$array), x.$offset, x.$offset + x.$length)), flags); ift = $append(ift, ifi); } ai = ai.Next; } return [ift, $ifaceNil]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: interfaceTable }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.ai = ai; $f.e = e; $f.err = err; $f.flags = flags; $f.ifi = ifi; $f.ifindex = ifindex; $f.ift = ift; $f.ii = ii; $f.ii$1 = ii$1; $f.index = index; $f.ip = ip; $f.ipl = ipl; $f.ips = ips; $f.ipv4 = ipv4; $f.name = name; $f.row = row; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; }; interfaceAddrTable = function(ifi) { var $ptr, _tuple, ai, err, ifa, ifat, ifi, index, ipl; _tuple = getAdapterList(); ai = _tuple[0]; err = _tuple[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { return [sliceType$6.nil, err]; } ifat = sliceType$6.nil; while (true) { if (!(!(ai === ptrType$30.nil))) { break; } index = ai.Index; if (ifi === ptrType$29.nil || (ifi.Index === (index >> 0))) { ipl = ai.IpAddressList; while (true) { if (!(!(ipl === ptrType$32.nil))) { break; } ifa = new IPAddr.ptr(parseIPv4(bytePtrToString($indexPtr(ipl.IpAddress.String, 0, ptrType$15))), ""); ifat = $append(ifat, ifa.toAddr()); ipl = ipl.Next; } } ai = ai.Next; } return [ifat, $ifaceNil]; }; interfaceMulticastAddrTable = function(ifi) { var $ptr, ifi; return [sliceType$6.nil, $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") : p.$array[p.$offset + 12] = a); (13 >= p.$length ? $throwRuntimeError("index out of range") : p.$array[p.$offset + 13] = b); (14 >= p.$length ? $throwRuntimeError("index out of range") : p.$array[p.$offset + 14] = c); (15 >= p.$length ? $throwRuntimeError("index out of range") : 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") : p.$array[p.$offset + 0] = a); (1 >= p.$length ? $throwRuntimeError("index out of range") : p.$array[p.$offset + 1] = b); (2 >= p.$length ? $throwRuntimeError("index out of range") : p.$array[p.$offset + 2] = c); (3 >= p.$length ? $throwRuntimeError("index out of range") : p.$array[p.$offset + 3] = d); return p; }; $pkg.IPv4Mask = IPv4Mask; IP.prototype.IsUnspecified = function() { var $ptr, ip; ip = this; if (ip.Equal($pkg.IPv4zero) || ip.Equal($pkg.IPv6unspecified)) { return true; } return false; }; $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) && ((0 >= ip4.$length ? $throwRuntimeError("index out of range") : ip4.$array[ip4.$offset + 0]) === 127)) { return true; } 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) && ((((0 >= ip4.$length ? $throwRuntimeError("index out of range") : ip4.$array[ip4.$offset + 0]) & 240) >>> 0) === 224)) { return true; } return (0 >= ip.$length ? $throwRuntimeError("index out of range") : 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") : ip.$array[ip.$offset + 0]) === 255) && ((((1 >= ip.$length ? $throwRuntimeError("index out of range") : 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) && ((0 >= ip4.$length ? $throwRuntimeError("index out of range") : ip4.$array[ip4.$offset + 0]) === 224) && ((1 >= ip4.$length ? $throwRuntimeError("index out of range") : ip4.$array[ip4.$offset + 1]) === 0) && ((2 >= ip4.$length ? $throwRuntimeError("index out of range") : ip4.$array[ip4.$offset + 2]) === 0)) { return true; } return ((0 >= ip.$length ? $throwRuntimeError("index out of range") : ip.$array[ip.$offset + 0]) === 255) && ((((1 >= ip.$length ? $throwRuntimeError("index out of range") : 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) && ((0 >= ip4.$length ? $throwRuntimeError("index out of range") : ip4.$array[ip4.$offset + 0]) === 169) && ((1 >= ip4.$length ? $throwRuntimeError("index out of range") : ip4.$array[ip4.$offset + 1]) === 254)) { return true; } return ((0 >= ip.$length ? $throwRuntimeError("index out of range") : ip.$array[ip.$offset + 0]) === 254) && ((((1 >= ip.$length ? $throwRuntimeError("index out of range") : 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.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") : 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") : ip.$array[ip.$offset + 10]) === 255) && ((11 >= ip.$length ? $throwRuntimeError("index out of range") : 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") : ip.$array[ip.$offset + 0]), (1 >= ip.$length ? $throwRuntimeError("index out of range") : ip.$array[ip.$offset + 1]), (2 >= ip.$length ? $throwRuntimeError("index out of range") : ip.$array[ip.$offset + 2]), (3 >= ip.$length ? $throwRuntimeError("index out of range") : 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, _ref, ip; ip = this; ip = ip.To4(); if (ip === IP.nil) { return IPMask.nil; } _ref = true; if (_ref === (0 >= ip.$length ? $throwRuntimeError("index out of range") : ip.$array[ip.$offset + 0]) < 128) { return classAMask; } else if (_ref === (0 >= ip.$length ? $throwRuntimeError("index out of range") : 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") : _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") : out.$array[out.$offset + i] = (((i < 0 || i >= ip.$length) ? $throwRuntimeError("index out of range") : ip.$array[ip.$offset + i]) & ((i < 0 || i >= mask.$length) ? $throwRuntimeError("index out of range") : 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 ""; } p4 = p.To4(); if (p4.$length === 4) { return itod(((0 >= p4.$length ? $throwRuntimeError("index out of range") : p4.$array[p4.$offset + 0]) >>> 0)) + "." + itod(((1 >= p4.$length ? $throwRuntimeError("index out of range") : p4.$array[p4.$offset + 1]) >>> 0)) + "." + itod(((2 >= p4.$length ? $throwRuntimeError("index out of range") : p4.$array[p4.$offset + 2]) >>> 0)) + "." + itod(((3 >= p4.$length ? $throwRuntimeError("index out of range") : p4.$array[p4.$offset + 3]) >>> 0)); } if (!((p.$length === 16))) { return "?"; } 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") : p.$array[p.$offset + j]) === 0) && ((x = j + 1 >> 0, ((x < 0 || x >= p.$length) ? $throwRuntimeError("index out of range") : 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") : 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") : 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(); }; 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, errors.New("invalid IP address")]; } 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") : _ref.$array[_ref.$offset + _i]); if (!((((i < 0 || i >= y.$length) ? $throwRuntimeError("index out of range") : y.$array[y.$offset + i]) === b))) { return false; } _i++; } return true; }; 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") : _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") : 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 = m.$length * 8 >> 0; 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, _i, _ref, _tmp, _tmp$1, b, buf, i, m, x, x$1; m = this; if (m.$length === 0) { return ""; } buf = $makeSlice(sliceType$1, (m.$length * 2 >> 0)); _ref = m; _i = 0; while (true) { if (!(_i < _ref.$length)) { break; } i = _i; b = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]); _tmp = "0123456789abcdef".charCodeAt((b >>> 4 << 24 >>> 24)); _tmp$1 = "0123456789abcdef".charCodeAt(((b & 15) >>> 0)); (x = i * 2 >> 0, ((x < 0 || x >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + x] = _tmp)); (x$1 = (i * 2 >> 0) + 1 >> 0, ((x$1 < 0 || x$1 >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + x$1] = _tmp$1)); _i++; } return $bytesToString(buf); }; $ptrType(IPMask).prototype.String = function() { return this.$get().String(); }; parseIPv4 = function(s) { var $ptr, _tuple, i, j, n, ok, p, s; p = $clone(arrayType.zero(), arrayType); i = 0; j = 0; while (true) { if (!(j < 4)) { break; } if (i >= s.length) { return IP.nil; } if (j > 0) { if (!((s.charCodeAt(i) === 46))) { return IP.nil; } i = i + (1) >> 0; } n = 0; ok = false; _tuple = dtoi(s, i); n = _tuple[0]; i = _tuple[1]; ok = _tuple[2]; if (!ok || n > 255) { return IP.nil; } ((j < 0 || j >= p.length) ? $throwRuntimeError("index out of range") : p[j] = (n << 24 >>> 24)); j = j + (1) >> 0; } if (!((i === s.length))) { 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, ellipsis, i, i1, ip, ip4, j, k, k$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; i = 0; 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; i = 2; if (i === s.length) { _tmp = ip; _tmp$1 = zone; ip = _tmp; zone = _tmp$1; return [ip, zone]; } } j = 0; while (true) { if (!(j < 16)) { break; } _tuple$1 = xtoi(s, i); n = _tuple$1[0]; i1 = _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 (i1 < s.length && (s.charCodeAt(i1) === 46)) { if (ellipsis < 0 && !((j === 12))) { _tmp$4 = IP.nil; _tmp$5 = zone; ip = _tmp$4; zone = _tmp$5; return [ip, zone]; } if ((j + 4 >> 0) > 16) { _tmp$6 = IP.nil; _tmp$7 = zone; ip = _tmp$6; zone = _tmp$7; return [ip, zone]; } ip4 = parseIPv4(s.substring(i)); if (ip4 === IP.nil) { _tmp$8 = IP.nil; _tmp$9 = zone; ip = _tmp$8; zone = _tmp$9; return [ip, zone]; } ((j < 0 || j >= ip.$length) ? $throwRuntimeError("index out of range") : ip.$array[ip.$offset + j] = (12 >= ip4.$length ? $throwRuntimeError("index out of range") : ip4.$array[ip4.$offset + 12])); (x = j + 1 >> 0, ((x < 0 || x >= ip.$length) ? $throwRuntimeError("index out of range") : ip.$array[ip.$offset + x] = (13 >= ip4.$length ? $throwRuntimeError("index out of range") : ip4.$array[ip4.$offset + 13]))); (x$1 = j + 2 >> 0, ((x$1 < 0 || x$1 >= ip.$length) ? $throwRuntimeError("index out of range") : ip.$array[ip.$offset + x$1] = (14 >= ip4.$length ? $throwRuntimeError("index out of range") : ip4.$array[ip4.$offset + 14]))); (x$2 = j + 3 >> 0, ((x$2 < 0 || x$2 >= ip.$length) ? $throwRuntimeError("index out of range") : ip.$array[ip.$offset + x$2] = (15 >= ip4.$length ? $throwRuntimeError("index out of range") : ip4.$array[ip4.$offset + 15]))); i = s.length; j = j + (4) >> 0; break; } ((j < 0 || j >= ip.$length) ? $throwRuntimeError("index out of range") : ip.$array[ip.$offset + j] = ((n >> 8 >> 0) << 24 >>> 24)); (x$3 = j + 1 >> 0, ((x$3 < 0 || x$3 >= ip.$length) ? $throwRuntimeError("index out of range") : ip.$array[ip.$offset + x$3] = (n << 24 >>> 24))); j = j + (2) >> 0; i = i1; if (i === s.length) { break; } if (!((s.charCodeAt(i) === 58)) || ((i + 1 >> 0) === s.length)) { _tmp$10 = IP.nil; _tmp$11 = zone; ip = _tmp$10; zone = _tmp$11; return [ip, zone]; } i = i + (1) >> 0; if (s.charCodeAt(i) === 58) { if (ellipsis >= 0) { _tmp$12 = IP.nil; _tmp$13 = zone; ip = _tmp$12; zone = _tmp$13; return [ip, zone]; } ellipsis = j; i = i + (1) >> 0; if (i === s.length) { break; } } } if (!((i === s.length))) { _tmp$14 = IP.nil; _tmp$15 = zone; ip = _tmp$14; zone = _tmp$15; return [ip, zone]; } if (j < 16) { if (ellipsis < 0) { _tmp$16 = IP.nil; _tmp$17 = zone; ip = _tmp$16; zone = _tmp$17; return [ip, zone]; } n$1 = 16 - j >> 0; k = j - 1 >> 0; while (true) { if (!(k >= ellipsis)) { break; } (x$4 = k + n$1 >> 0, ((x$4 < 0 || x$4 >= ip.$length) ? $throwRuntimeError("index out of range") : ip.$array[ip.$offset + x$4] = ((k < 0 || k >= ip.$length) ? $throwRuntimeError("index out of range") : ip.$array[ip.$offset + k]))); k = k - (1) >> 0; } k$1 = (ellipsis + n$1 >> 0) - 1 >> 0; while (true) { if (!(k$1 >= ellipsis)) { break; } ((k$1 < 0 || k$1 >= ip.$length) ? $throwRuntimeError("index out of range") : ip.$array[ip.$offset + k$1] = 0); k$1 = k$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]; }; ParseError.ptr.prototype.Error = function() { var $ptr, e; e = this; return "invalid " + e.Type + ": " + e.Text; }; ParseError.prototype.Error = function() { return this.$val.Error(); }; ParseIP = function(s) { var $ptr, _ref, _tuple, i, ip, s; i = 0; while (true) { if (!(i < s.length)) { break; } _ref = s.charCodeAt(i); if (_ref === 46) { return parseIPv4(s); } else if (_ref === 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; a = this; if (a === ptrType$4.nil) { return ""; } if (!(a.Zone === "")) { return a.IP.String() + "%" + a.Zone; } return a.IP.String(); }; IPAddr.prototype.String = function() { return this.$val.String(); }; IPAddr.ptr.prototype.toAddr = function() { var $ptr, a; a = this; if (a === ptrType$4.nil) { return $ifaceNil; } return a; }; IPAddr.prototype.toAddr = function() { return this.$val.toAddr(); }; 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$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: sa$1 = _ref.$val; return 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$21, 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; } 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: return $ifaceNil; /* */ $s = -1; case -1: } 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; }; init = function() { var $ptr, _tuple; sysInit(); supportsIPv4 = probeIPv4Stack(); _tuple = probeIPv6Stack(); supportsIPv6 = _tuple[0]; supportsIPv4map = _tuple[1]; }; splitHostZone = function(s) { var $ptr, _tmp, _tmp$1, host, i, s, zone; host = ""; zone = ""; i = last(s, 37); if (i > 0) { _tmp = s.substring(0, i); _tmp$1 = s.substring((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; zoneToString = function(zone) { var $ptr, _r, _tuple, err, ifi, 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; err = $f.err; ifi = $f.ifi; zone = $f.zone; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: if (zone === 0) { return ""; } _r = InterfaceByIndex(zone); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _tuple = _r; ifi = _tuple[0]; err = _tuple[1]; /* */ if ($interfaceIsEqual(err, $ifaceNil)) { $s = 2; continue; } /* */ $s = 3; continue; /* if ($interfaceIsEqual(err, $ifaceNil)) { */ case 2: return ifi.Name; /* } */ case 3: return itod((zone >>> 0)); /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: zoneToString }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.ifi = ifi; $f.zone = zone; $f.$s = $s; $f.$r = $r; return $f; }; HardwareAddr.prototype.String = function() { var $ptr, _i, _ref, a, b, buf, i; a = this; if (a.$length === 0) { return ""; } buf = $makeSlice(sliceType$1, 0, ((a.$length * 3 >> 0) - 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") : _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(); }; conn.ptr.prototype.ok = function() { var $ptr, c; c = this; return !(c === ptrType$49.nil) && !(c.fd === ptrType$18.nil); }; conn.prototype.ok = function() { return this.$val.ok(); }; conn.ptr.prototype.Read = 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; if (!c.ok()) { 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; } return _r; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: conn.ptr.prototype.Read }; } $f.$ptr = $ptr; $f._r = _r; $f.b = b; $f.c = c; $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, 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; if (!c.ok()) { 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; } return _r; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: conn.ptr.prototype.Write }; } $f.$ptr = $ptr; $f._r = _r; $f.b = b; $f.c = c; $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, c; c = this; if (!c.ok()) { return new syscall.Errno(536870951); } return c.fd.Close(); }; 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, c, t; c = this; t = $clone(t, time.Time); if (!c.ok()) { return new syscall.Errno(536870951); } return c.fd.setDeadline(t); }; conn.prototype.SetDeadline = function(t) { return this.$val.SetDeadline(t); }; conn.ptr.prototype.SetReadDeadline = function(t) { var $ptr, c, t; c = this; t = $clone(t, time.Time); if (!c.ok()) { return new syscall.Errno(536870951); } return c.fd.setReadDeadline(t); }; conn.prototype.SetReadDeadline = function(t) { return this.$val.SetReadDeadline(t); }; conn.ptr.prototype.SetWriteDeadline = function(t) { var $ptr, c, t; c = this; t = $clone(t, time.Time); if (!c.ok()) { return new syscall.Errno(536870951); } return c.fd.setWriteDeadline(t); }; conn.prototype.SetWriteDeadline = function(t) { return this.$val.SetWriteDeadline(t); }; conn.ptr.prototype.SetReadBuffer = function(bytes) { var $ptr, bytes, c; c = this; if (!c.ok()) { return new syscall.Errno(536870951); } return setReadBuffer(c.fd, bytes); }; conn.prototype.SetReadBuffer = function(bytes) { return this.$val.SetReadBuffer(bytes); }; conn.ptr.prototype.SetWriteBuffer = function(bytes) { var $ptr, bytes, c; c = this; if (!c.ok()) { return new syscall.Errno(536870951); } return setWriteBuffer(c.fd, bytes); }; conn.prototype.SetWriteBuffer = function(bytes) { return this.$val.SetWriteBuffer(bytes); }; conn.ptr.prototype.File = function() { var $ptr, _tuple, c, err, f; f = ptrType$27.nil; err = $ifaceNil; c = this; _tuple = c.fd.dup(); f = _tuple[0]; err = _tuple[1]; return [f, err]; }; conn.prototype.File = function() { return this.$val.File(); }; OpError.ptr.prototype.Error = function() { var $ptr, _r, _r$1, 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; e = $f.e; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: e = this; if (e === ptrType$25.nil) { return ""; } s = e.Op; if (!(e.Net === "")) { s = s + (" " + e.Net); } /* */ if (!($interfaceIsEqual(e.Addr, $ifaceNil))) { $s = 1; continue; } /* */ $s = 2; continue; /* if (!($interfaceIsEqual(e.Addr, $ifaceNil))) { */ case 1: _r = e.Addr.String(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } s = s + (" " + _r); /* } */ case 2: _r$1 = e.Err.Error(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } s = s + (": " + _r$1); return s; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: OpError.ptr.prototype.Error }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $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.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: return _v; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: OpError.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; }; OpError.prototype.Temporary = function() { return this.$val.Temporary(); }; OpError.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: return _v; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: OpError.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; }; OpError.prototype.Timeout = function() { return this.$val.Timeout(); }; 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(); }; 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]; return [n, err]; /* */ $s = -1; case -1: } 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; }; byteIndex = function(s, c) { var $ptr, c, i, s; i = 0; while (true) { if (!(i < s.length)) { break; } if (s.charCodeAt(i) === c) { return i; } i = i + (1) >> 0; } return -1; }; dtoi = function(s, i0) { var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, i, i0, n, ok, s; n = 0; i = 0; ok = false; n = 0; i = i0; while (true) { if (!(i < s.length && 48 <= s.charCodeAt(i) && s.charCodeAt(i) <= 57)) { break; } n = (n * 10 >> 0) + ((s.charCodeAt(i) - 48 << 24 >>> 24) >> 0) >> 0; 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 === i0) { _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]; }; xtoi = function(s, i0) { var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, i, i0, n, ok, s; n = 0; i = 0; ok = false; n = 0; i = i0; while (true) { if (!(i < s.length)) { break; } if (48 <= s.charCodeAt(i) && s.charCodeAt(i) <= 57) { n = n * (16) >> 0; n = n + (((s.charCodeAt(i) - 48 << 24 >>> 24) >> 0)) >> 0; } else if (97 <= s.charCodeAt(i) && s.charCodeAt(i) <= 102) { n = n * (16) >> 0; n = n + ((((s.charCodeAt(i) - 97 << 24 >>> 24) >> 0) + 10 >> 0)) >> 0; } else if (65 <= s.charCodeAt(i) && s.charCodeAt(i) <= 70) { n = n * (16) >> 0; 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 === i0) { _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(i) { var $ptr, _q, _r, buf, i, n, neg, ui; buf = $clone(arrayType$7.zero(), arrayType$7); n = 30; neg = false; if (i < 0) { i = -i; neg = true; } ui = (i >>> 0); while (true) { if (!(ui > 0 || (n === 30))) { break; } n = n - (1) >> 0; ((n < 0 || n >= buf.length) ? $throwRuntimeError("index out of range") : buf[n] = ((48 + (_r = ui % 10, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) >>> 0) << 24 >>> 24)); ui = (_q = ui / (10), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")); } if (neg) { n = n - (1) >> 0; ((n < 0 || n >= buf.length) ? $throwRuntimeError("index out of range") : buf[n] = 45); } return $bytesToString($subslice(new sliceType$1(buf), n)); }; itod = function(i) { var $ptr, _q, _r, b, bp, i; if (i === 0) { return "0"; } b = $clone(arrayType$8.zero(), arrayType$8); bp = 32; while (true) { if (!(i > 0)) { break; } bp = bp - (1) >> 0; ((bp < 0 || bp >= b.length) ? $throwRuntimeError("index out of range") : b[bp] = ((_r = i % 10, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) << 24 >>> 24) + 48 << 24 >>> 24); i = (_q = i / (10), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")); } return $bytesToString($subslice(new sliceType$1(b), bp)); }; 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 = ((j * 4 >> 0) >>> 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; }; 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$51, 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; return [written, err, handled]; } } _tuple$1 = $assertType(r, ptrType$27, 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; 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; 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$52.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 = err; _tmp$13 = false; written = _tmp$11; err = _tmp$12; handled = _tmp$13; return [written, err, handled]; } if (!(lr === ptrType$51.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; return [written, err, handled]; /* */ $s = -1; case -1: } 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; } } }; netFD.ptr.prototype.addrFunc = function() { var $ptr, _ref, _ref$1, _ref$2, fd; fd = this; _ref = fd.family; if (_ref === 2 || _ref === 23) { _ref$1 = fd.sotype; if (_ref$1 === 1) { return sockaddrToTCP; } else if (_ref$1 === 2) { return sockaddrToUDP; } else if (_ref$1 === 3) { return sockaddrToIP; } } else if (_ref === 1) { _ref$2 = fd.sotype; if (_ref$2 === 1) { return sockaddrToUnix; } else if (_ref$2 === 2) { return sockaddrToUnixgram; } else if (_ref$2 === 5) { return sockaddrToUnixpacket; } } return (function(param) { var $ptr, param; return $ifaceNil; }); }; netFD.prototype.addrFunc = function() { return this.$val.addrFunc(); }; sysSocket = function(f, t, p) { var $ptr, _tuple, err, f, p, s, t, $s, $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; p = $f.p; s = $f.s; t = $f.t; $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; } _tuple = syscall.Socket(f, t, p); s = _tuple[0]; err = _tuple[1]; if ($interfaceIsEqual(err, $ifaceNil)) { syscall.CloseOnExec(s); } $r = syscall.ForkLock.RUnlock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } return [s, err]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: sysSocket }; } $f.$ptr = $ptr; $f._tuple = _tuple; $f.err = err; $f.f = f; $f.p = p; $f.s = s; $f.t = t; $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, $deferred; /* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); err = fd.incref(); if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } $deferred.push([$methodVal(fd, "decref"), []]); return os.NewSyscallError("setsockopt", syscall.SetsockoptInt(fd.sysfd, 65535, 4098, bytes)); /* */ } catch(err) { $err = err; return $ifaceNil; } finally { $callDeferred($deferred, $err); } }; setWriteBuffer = function(fd, bytes) { var $ptr, bytes, err, fd, $deferred; /* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); err = fd.incref(); if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } $deferred.push([$methodVal(fd, "decref"), []]); return os.NewSyscallError("setsockopt", syscall.SetsockoptInt(fd.sysfd, 65535, 4097, bytes)); /* */ } catch(err) { $err = err; return $ifaceNil; } finally { $callDeferred($deferred, $err); } }; setKeepAlive = function(fd, keepalive) { var $ptr, err, fd, keepalive, $deferred; /* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); err = fd.incref(); if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } $deferred.push([$methodVal(fd, "decref"), []]); return os.NewSyscallError("setsockopt", syscall.SetsockoptInt(fd.sysfd, 65535, 8, boolint(keepalive))); /* */ } catch(err) { $err = err; return $ifaceNil; } finally { $callDeferred($deferred, $err); } }; setLinger = function(fd, sec) { var $ptr, err, fd, l, sec, $deferred; /* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); l = $clone(new syscall.Linger.ptr(), syscall.Linger); if (sec >= 0) { l.Onoff = 1; l.Linger = (sec >> 0); } else { l.Onoff = 0; l.Linger = 0; } err = fd.incref(); if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } $deferred.push([$methodVal(fd, "decref"), []]); return os.NewSyscallError("setsockopt", syscall.SetsockoptLinger(fd.sysfd, 65535, 128, l)); /* */ } catch(err) { $err = err; return $ifaceNil; } finally { $callDeferred($deferred, $err); } }; 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$2.nil) { return ""; } 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.toAddr = function() { var $ptr, a; a = this; if (a === ptrType$2.nil) { return $ifaceNil; } return a; }; TCPAddr.prototype.toAddr = function() { return this.$val.toAddr(); }; 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$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: sa$1 = _ref.$val; 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, ""); $s = 3; continue; /* } else if ($assertType(_ref, ptrType$21, 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; } 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: return $ifaceNil; /* */ $s = -1; case -1: } 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; }; newTCPConn = function(fd) { var $ptr, c, fd; c = new TCPConn.ptr(new conn.ptr(fd)); c.SetNoDelay(true); return c; }; 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 = 2; continue; } /* */ $s = 3; continue; /* if (handled) { */ case 2: return [n, err]; /* } */ case 3: _r$1 = genericReadFrom(c, r); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } return _r$1; /* */ $s = -1; case -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); }; TCPConn.ptr.prototype.CloseRead = function() { var $ptr, c; c = this; if (!c.conn.ok()) { return new syscall.Errno(536870951); } return c.conn.fd.closeRead(); }; TCPConn.prototype.CloseRead = function() { return this.$val.CloseRead(); }; TCPConn.ptr.prototype.CloseWrite = function() { var $ptr, c; c = this; if (!c.conn.ok()) { return new syscall.Errno(536870951); } return c.conn.fd.closeWrite(); }; TCPConn.prototype.CloseWrite = function() { return this.$val.CloseWrite(); }; TCPConn.ptr.prototype.SetLinger = function(sec) { var $ptr, c, sec; c = this; if (!c.conn.ok()) { return new syscall.Errno(536870951); } return setLinger(c.conn.fd, sec); }; TCPConn.prototype.SetLinger = function(sec) { return this.$val.SetLinger(sec); }; TCPConn.ptr.prototype.SetKeepAlive = function(keepalive) { var $ptr, c, keepalive; c = this; if (!c.conn.ok()) { return new syscall.Errno(536870951); } return setKeepAlive(c.conn.fd, keepalive); }; TCPConn.prototype.SetKeepAlive = function(keepalive) { return this.$val.SetKeepAlive(keepalive); }; TCPConn.ptr.prototype.SetKeepAlivePeriod = function(d) { var $ptr, c, d; c = this; if (!c.conn.ok()) { return new syscall.Errno(536870951); } return setKeepAlivePeriod(c.conn.fd, d); }; TCPConn.prototype.SetKeepAlivePeriod = function(d) { return this.$val.SetKeepAlivePeriod(d); }; TCPConn.ptr.prototype.SetNoDelay = function(noDelay) { var $ptr, c, noDelay; c = this; if (!c.conn.ok()) { return new syscall.Errno(536870951); } return setNoDelay(c.conn.fd, noDelay); }; TCPConn.prototype.SetNoDelay = function(noDelay) { return this.$val.SetNoDelay(noDelay); }; TCPListener.ptr.prototype.AcceptTCP = function() { var $ptr, _r, _tuple, err, fd, 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; err = $f.err; fd = $f.fd; l = $f.l; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: l = this; if (l === ptrType$55.nil || l.fd === ptrType$18.nil) { return [ptrType$54.nil, new syscall.Errno(536870951)]; } _r = l.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))) { return [ptrType$54.nil, err]; } return [newTCPConn(fd), $ifaceNil]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: TCPListener.ptr.prototype.AcceptTCP }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.fd = fd; $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; _r = l.AcceptTCP(); /* */ $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))) { return [$ifaceNil, err]; } return [c, $ifaceNil]; /* */ $s = -1; case -1: } 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, l; l = this; if (l === ptrType$55.nil || l.fd === ptrType$18.nil) { return new syscall.Errno(536870951); } return l.fd.Close(); }; 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, l, t; l = this; t = $clone(t, time.Time); if (l === ptrType$55.nil || l.fd === ptrType$18.nil) { return new syscall.Errno(536870951); } return l.fd.setDeadline(t); }; TCPListener.prototype.SetDeadline = function(t) { return this.$val.SetDeadline(t); }; TCPListener.ptr.prototype.File = function() { var $ptr, _tuple, err, f, l; f = ptrType$27.nil; err = $ifaceNil; l = this; _tuple = l.fd.dup(); f = _tuple[0]; err = _tuple[1]; return [f, err]; }; TCPListener.prototype.File = function() { return this.$val.File(); }; setNoDelay = function(fd, noDelay) { var $ptr, err, fd, noDelay, $deferred; /* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); err = fd.incref(); if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } $deferred.push([$methodVal(fd, "decref"), []]); return os.NewSyscallError("setsockopt", syscall.SetsockoptInt(fd.sysfd, 6, 1, boolint(noDelay))); /* */ } catch(err) { $err = err; return $ifaceNil; } finally { $callDeferred($deferred, $err); } }; setKeepAlivePeriod = function(fd, d) { var $ptr, d, err, err$1, fd, ka, msecs, ret, ret_ptr, size, x, $deferred; /* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); err = fd.incref(); if (!($interfaceIsEqual(err, $ifaceNil))) { 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 = new syscall.TCPKeepalive.ptr(1, msecs, msecs); ret = 0; size = 12; err$1 = syscall.WSAIoctl(fd.sysfd, 2550136836, ka, size, ptrType$15.nil, 0, (ret_ptr || (ret_ptr = new ptrType$11(function() { return ret; }, function($v) { ret = $v; }))), ptrType$19.nil, 0); return os.NewSyscallError("WSAIoctl", err$1); /* */ } catch(err) { $err = err; return $ifaceNil; } finally { $callDeferred($deferred, $err); } }; 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$3.nil) { return ""; } 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.toAddr = function() { var $ptr, a; a = this; if (a === ptrType$3.nil) { return $ifaceNil; } return a; }; UDPAddr.prototype.toAddr = function() { return this.$val.toAddr(); }; 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$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: sa$1 = _ref.$val; 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, ""); $s = 3; continue; /* } else if ($assertType(_ref, ptrType$21, 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; } 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: return $ifaceNil; /* */ $s = -1; case -1: } 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; }; 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$5.nil) { return ""; } return a.Name; }; UnixAddr.prototype.String = function() { return this.$val.String(); }; UnixAddr.ptr.prototype.toAddr = function() { var $ptr, a; a = this; if (a === ptrType$5.nil) { return $ifaceNil; } return a; }; UnixAddr.prototype.toAddr = function() { return this.$val.toAddr(); }; sockaddrToUnix = function(sa) { var $ptr, _tuple, ok, s, sa; _tuple = $assertType(sa, ptrType$57, 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$57, 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$57, true); s = _tuple[0]; ok = _tuple[1]; if (ok) { return new UnixAddr.ptr(s.Name, "unixpacket"); } return $ifaceNil; }; ptrType$7.methods = [{prop: "Header", name: "Header", pkg: "", typ: $funcType([], [ptrType$7], false)}, {prop: "Walk", name: "Walk", pkg: "", typ: $funcType([funcType$1], [$Bool], false)}]; ptrType$8.methods = [{prop: "Header", name: "Header", pkg: "", typ: $funcType([], [ptrType$7], false)}, {prop: "Walk", name: "Walk", pkg: "", typ: $funcType([funcType$1], [$Bool], false)}]; ptrType$63.methods = [{prop: "Header", name: "Header", pkg: "", typ: $funcType([], [ptrType$7], false)}, {prop: "Walk", name: "Walk", pkg: "", typ: $funcType([funcType$1], [$Bool], false)}]; ptrType$64.methods = [{prop: "Header", name: "Header", pkg: "", typ: $funcType([], [ptrType$7], false)}, {prop: "Walk", name: "Walk", pkg: "", typ: $funcType([funcType$1], [$Bool], false)}]; ptrType$65.methods = [{prop: "Header", name: "Header", pkg: "", typ: $funcType([], [ptrType$7], false)}, {prop: "Walk", name: "Walk", pkg: "", typ: $funcType([funcType$1], [$Bool], false)}]; ptrType$66.methods = [{prop: "Header", name: "Header", pkg: "", typ: $funcType([], [ptrType$7], false)}, {prop: "Walk", name: "Walk", pkg: "", typ: $funcType([funcType$1], [$Bool], false)}]; ptrType$67.methods = [{prop: "Header", name: "Header", pkg: "", typ: $funcType([], [ptrType$7], false)}, {prop: "Walk", name: "Walk", pkg: "", typ: $funcType([funcType$1], [$Bool], false)}]; ptrType$68.methods = [{prop: "Header", name: "Header", pkg: "", typ: $funcType([], [ptrType$7], false)}, {prop: "Walk", name: "Walk", pkg: "", typ: $funcType([funcType$1], [$Bool], false)}]; ptrType$69.methods = [{prop: "Header", name: "Header", pkg: "", typ: $funcType([], [ptrType$7], false)}, {prop: "Walk", name: "Walk", pkg: "", typ: $funcType([funcType$1], [$Bool], false)}]; ptrType$70.methods = [{prop: "Header", name: "Header", pkg: "", typ: $funcType([], [ptrType$7], false)}, {prop: "Walk", name: "Walk", pkg: "", typ: $funcType([funcType$1], [$Bool], false)}]; ptrType$71.methods = [{prop: "Header", name: "Header", pkg: "", typ: $funcType([], [ptrType$7], false)}, {prop: "Walk", name: "Walk", pkg: "", typ: $funcType([funcType$1], [$Bool], false)}]; ptrType$72.methods = [{prop: "Header", name: "Header", pkg: "", typ: $funcType([], [ptrType$7], false)}, {prop: "Walk", name: "Walk", pkg: "", typ: $funcType([funcType$1], [$Bool], false)}]; ptrType$73.methods = [{prop: "Header", name: "Header", pkg: "", typ: $funcType([], [ptrType$7], false)}, {prop: "Walk", name: "Walk", pkg: "", typ: $funcType([funcType$1], [$Bool], false)}]; ptrType$74.methods = [{prop: "Header", name: "Header", pkg: "", typ: $funcType([], [ptrType$7], false)}, {prop: "Walk", name: "Walk", pkg: "", typ: $funcType([funcType$1], [$Bool], false)}]; ptrType$75.methods = [{prop: "Header", name: "Header", pkg: "", typ: $funcType([], [ptrType$7], false)}, {prop: "Walk", name: "Walk", pkg: "", typ: $funcType([funcType$1], [$Bool], false)}]; ptrType$78.methods = [{prop: "Incref", name: "Incref", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IncrefAndClose", name: "IncrefAndClose", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Decref", name: "Decref", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "RWLock", name: "RWLock", pkg: "", typ: $funcType([$Bool], [$Bool], false)}, {prop: "RWUnlock", name: "RWUnlock", pkg: "", typ: $funcType([$Bool], [$Bool], false)}]; ptrType$79.methods = [{prop: "Init", name: "Init", pkg: "", typ: $funcType([ptrType$18], [$error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [], false)}, {prop: "Lock", name: "Lock", pkg: "", typ: $funcType([], [], false)}, {prop: "Unlock", name: "Unlock", pkg: "", typ: $funcType([], [], false)}, {prop: "Wakeup", name: "Wakeup", pkg: "", typ: $funcType([], [], false)}, {prop: "Evict", name: "Evict", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Prepare", name: "Prepare", pkg: "", typ: $funcType([$Int], [$error], false)}, {prop: "PrepareRead", name: "PrepareRead", pkg: "", typ: $funcType([], [$error], false)}, {prop: "PrepareWrite", name: "PrepareWrite", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Wait", name: "Wait", pkg: "", typ: $funcType([$Int], [$error], false)}, {prop: "WaitRead", name: "WaitRead", pkg: "", typ: $funcType([], [$error], false)}, {prop: "WaitWrite", name: "WaitWrite", pkg: "", typ: $funcType([], [$error], false)}, {prop: "WaitCanceled", name: "WaitCanceled", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "WaitCanceledRead", name: "WaitCanceledRead", pkg: "", typ: $funcType([], [], false)}, {prop: "WaitCanceledWrite", name: "WaitCanceledWrite", pkg: "", typ: $funcType([], [], false)}]; ptrType$80.methods = [{prop: "InitBuf", name: "InitBuf", pkg: "", typ: $funcType([sliceType$1], [], false)}]; ptrType.methods = [{prop: "ProcessRemoteIO", name: "ProcessRemoteIO", pkg: "", typ: $funcType([], [], false)}, {prop: "ExecIO", name: "ExecIO", pkg: "", typ: $funcType([ptrType$80, $String, funcType$2], [$Int, $error], false)}]; ptrType$18.methods = [{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: "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([syscall.Sockaddr, syscall.Sockaddr, time.Time], [$error], false)}, {prop: "destroy", name: "destroy", pkg: "net", typ: $funcType([], [], false)}, {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: "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: "writeTo", name: "writeTo", pkg: "net", typ: $funcType([sliceType$1, syscall.Sockaddr], [$Int, $error], false)}, {prop: "acceptOne", name: "acceptOne", pkg: "net", typ: $funcType([sliceType$5, ptrType$80], [ptrType$18, $error], false)}, {prop: "accept", name: "accept", pkg: "net", typ: $funcType([], [ptrType$18, $error], false)}, {prop: "dup", name: "dup", pkg: "net", typ: $funcType([], [ptrType$27, $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$3], false)}, {prop: "dial", name: "dial", pkg: "net", typ: $funcType([sockaddr, sockaddr, time.Time], [$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$29.methods = [{prop: "Addrs", name: "Addrs", pkg: "", typ: $funcType([], [sliceType$6, $error], false)}, {prop: "MulticastAddrs", name: "MulticastAddrs", pkg: "", typ: $funcType([], [sliceType$6, $error], false)}]; Flags.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], 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)}]; ptrType$81.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$82.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; ptrType$4.methods = [{prop: "Network", name: "Network", pkg: "", typ: $funcType([], [$String], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "toAddr", name: "toAddr", pkg: "net", typ: $funcType([], [Addr], 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)}]; HardwareAddr.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; ptrType$49.methods = [{prop: "ok", name: "ok", pkg: "net", typ: $funcType([], [$Bool], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "LocalAddr", name: "LocalAddr", pkg: "", typ: $funcType([], [Addr], false)}, {prop: "RemoteAddr", name: "RemoteAddr", pkg: "", typ: $funcType([], [Addr], false)}, {prop: "SetDeadline", name: "SetDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "SetReadDeadline", name: "SetReadDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "SetWriteDeadline", name: "SetWriteDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "SetReadBuffer", name: "SetReadBuffer", pkg: "", typ: $funcType([$Int], [$error], false)}, {prop: "SetWriteBuffer", name: "SetWriteBuffer", pkg: "", typ: $funcType([$Int], [$error], false)}, {prop: "File", name: "File", pkg: "", typ: $funcType([], [ptrType$27, $error], false)}]; ptrType$25.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$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$2.methods = [{prop: "Network", name: "Network", pkg: "", typ: $funcType([], [$String], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "toAddr", name: "toAddr", pkg: "net", typ: $funcType([], [Addr], 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)}]; ptrType$54.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)}]; ptrType$55.methods = [{prop: "AcceptTCP", name: "AcceptTCP", pkg: "", typ: $funcType([], [ptrType$54, $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$27, $error], false)}]; ptrType$3.methods = [{prop: "Network", name: "Network", pkg: "", typ: $funcType([], [$String], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "toAddr", name: "toAddr", pkg: "net", typ: $funcType([], [Addr], 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)}]; ptrType$5.methods = [{prop: "Network", name: "Network", pkg: "", typ: $funcType([], [$String], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "toAddr", name: "toAddr", pkg: "net", typ: $funcType([], [Addr], 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)}]; dnsRR_Header.init([{prop: "Name", name: "Name", pkg: "", typ: $String, tag: "net:\"domain-name\""}, {prop: "Rrtype", name: "Rrtype", pkg: "", typ: $Uint16, tag: ""}, {prop: "Class", name: "Class", pkg: "", typ: $Uint16, tag: ""}, {prop: "Ttl", name: "Ttl", pkg: "", typ: $Uint32, tag: ""}, {prop: "Rdlength", name: "Rdlength", pkg: "", typ: $Uint16, tag: ""}]); dnsRR_CNAME.init([{prop: "Hdr", name: "Hdr", pkg: "", typ: dnsRR_Header, tag: ""}, {prop: "Cname", name: "Cname", pkg: "", typ: $String, tag: "net:\"domain-name\""}]); dnsRR_HINFO.init([{prop: "Hdr", name: "Hdr", pkg: "", typ: dnsRR_Header, tag: ""}, {prop: "Cpu", name: "Cpu", pkg: "", typ: $String, tag: ""}, {prop: "Os", name: "Os", pkg: "", typ: $String, tag: ""}]); dnsRR_MB.init([{prop: "Hdr", name: "Hdr", pkg: "", typ: dnsRR_Header, tag: ""}, {prop: "Mb", name: "Mb", pkg: "", typ: $String, tag: "net:\"domain-name\""}]); dnsRR_MG.init([{prop: "Hdr", name: "Hdr", pkg: "", typ: dnsRR_Header, tag: ""}, {prop: "Mg", name: "Mg", pkg: "", typ: $String, tag: "net:\"domain-name\""}]); dnsRR_MINFO.init([{prop: "Hdr", name: "Hdr", pkg: "", typ: dnsRR_Header, tag: ""}, {prop: "Rmail", name: "Rmail", pkg: "", typ: $String, tag: "net:\"domain-name\""}, {prop: "Email", name: "Email", pkg: "", typ: $String, tag: "net:\"domain-name\""}]); dnsRR_MR.init([{prop: "Hdr", name: "Hdr", pkg: "", typ: dnsRR_Header, tag: ""}, {prop: "Mr", name: "Mr", pkg: "", typ: $String, tag: "net:\"domain-name\""}]); dnsRR_MX.init([{prop: "Hdr", name: "Hdr", pkg: "", typ: dnsRR_Header, tag: ""}, {prop: "Pref", name: "Pref", pkg: "", typ: $Uint16, tag: ""}, {prop: "Mx", name: "Mx", pkg: "", typ: $String, tag: "net:\"domain-name\""}]); dnsRR_NS.init([{prop: "Hdr", name: "Hdr", pkg: "", typ: dnsRR_Header, tag: ""}, {prop: "Ns", name: "Ns", pkg: "", typ: $String, tag: "net:\"domain-name\""}]); dnsRR_PTR.init([{prop: "Hdr", name: "Hdr", pkg: "", typ: dnsRR_Header, tag: ""}, {prop: "Ptr", name: "Ptr", pkg: "", typ: $String, tag: "net:\"domain-name\""}]); dnsRR_SOA.init([{prop: "Hdr", name: "Hdr", pkg: "", typ: dnsRR_Header, tag: ""}, {prop: "Ns", name: "Ns", pkg: "", typ: $String, tag: "net:\"domain-name\""}, {prop: "Mbox", name: "Mbox", pkg: "", typ: $String, tag: "net:\"domain-name\""}, {prop: "Serial", name: "Serial", pkg: "", typ: $Uint32, tag: ""}, {prop: "Refresh", name: "Refresh", pkg: "", typ: $Uint32, tag: ""}, {prop: "Retry", name: "Retry", pkg: "", typ: $Uint32, tag: ""}, {prop: "Expire", name: "Expire", pkg: "", typ: $Uint32, tag: ""}, {prop: "Minttl", name: "Minttl", pkg: "", typ: $Uint32, tag: ""}]); dnsRR_TXT.init([{prop: "Hdr", name: "Hdr", pkg: "", typ: dnsRR_Header, tag: ""}, {prop: "Txt", name: "Txt", pkg: "", typ: $String, tag: ""}]); dnsRR_SRV.init([{prop: "Hdr", name: "Hdr", pkg: "", typ: dnsRR_Header, tag: ""}, {prop: "Priority", name: "Priority", pkg: "", typ: $Uint16, tag: ""}, {prop: "Weight", name: "Weight", pkg: "", typ: $Uint16, tag: ""}, {prop: "Port", name: "Port", pkg: "", typ: $Uint16, tag: ""}, {prop: "Target", name: "Target", pkg: "", typ: $String, tag: "net:\"domain-name\""}]); dnsRR_A.init([{prop: "Hdr", name: "Hdr", pkg: "", typ: dnsRR_Header, tag: ""}, {prop: "A", name: "A", pkg: "", typ: $Uint32, tag: "net:\"ipv4\""}]); dnsRR_AAAA.init([{prop: "Hdr", name: "Hdr", pkg: "", typ: dnsRR_Header, tag: ""}, {prop: "AAAA", name: "AAAA", pkg: "", typ: arrayType$1, tag: "net:\"ipv6\""}]); fdMutex.init([{prop: "state", name: "state", pkg: "net", typ: $Uint64, tag: ""}, {prop: "rsema", name: "rsema", pkg: "net", typ: $Uint32, tag: ""}, {prop: "wsema", name: "wsema", pkg: "net", typ: $Uint32, tag: ""}]); pollDesc.init([{prop: "runtimeCtx", name: "runtimeCtx", pkg: "net", typ: $Uintptr, tag: ""}]); operation.init([{prop: "o", name: "o", pkg: "net", typ: syscall.Overlapped, tag: ""}, {prop: "runtimeCtx", name: "runtimeCtx", pkg: "net", typ: $Uintptr, tag: ""}, {prop: "mode", name: "mode", pkg: "net", typ: $Int32, tag: ""}, {prop: "errno", name: "errno", pkg: "net", typ: $Int32, tag: ""}, {prop: "qty", name: "qty", pkg: "net", typ: $Uint32, tag: ""}, {prop: "fd", name: "fd", pkg: "net", typ: ptrType$18, tag: ""}, {prop: "errc", name: "errc", pkg: "net", typ: chanType$5, tag: ""}, {prop: "buf", name: "buf", pkg: "net", typ: syscall.WSABuf, tag: ""}, {prop: "sa", name: "sa", pkg: "net", typ: syscall.Sockaddr, tag: ""}, {prop: "rsa", name: "rsa", pkg: "net", typ: ptrType$23, tag: ""}, {prop: "rsan", name: "rsan", pkg: "net", typ: $Int32, tag: ""}, {prop: "handle", name: "handle", pkg: "net", typ: syscall.Handle, tag: ""}, {prop: "flags", name: "flags", pkg: "net", typ: $Uint32, tag: ""}]); ioSrv.init([{prop: "req", name: "req", pkg: "net", typ: chanType$4, tag: ""}]); ioSrvReq.init([{prop: "o", name: "o", pkg: "net", typ: ptrType$80, tag: ""}, {prop: "submit", name: "submit", pkg: "net", typ: funcType$2, tag: ""}]); netFD.init([{prop: "fdmu", name: "fdmu", pkg: "net", typ: fdMutex, tag: ""}, {prop: "sysfd", name: "sysfd", pkg: "net", typ: syscall.Handle, tag: ""}, {prop: "family", name: "family", pkg: "net", typ: $Int, tag: ""}, {prop: "sotype", name: "sotype", pkg: "net", typ: $Int, tag: ""}, {prop: "isConnected", name: "isConnected", pkg: "net", typ: $Bool, tag: ""}, {prop: "skipSyncNotif", name: "skipSyncNotif", pkg: "net", typ: $Bool, tag: ""}, {prop: "net", name: "net", pkg: "net", typ: $String, tag: ""}, {prop: "laddr", name: "laddr", pkg: "net", typ: Addr, tag: ""}, {prop: "raddr", name: "raddr", pkg: "net", typ: Addr, tag: ""}, {prop: "rop", name: "rop", pkg: "net", typ: operation, tag: ""}, {prop: "wop", name: "wop", pkg: "net", typ: operation, tag: ""}, {prop: "pd", name: "pd", pkg: "net", typ: pollDesc, tag: ""}]); Interface.init([{prop: "Index", name: "Index", pkg: "", typ: $Int, tag: ""}, {prop: "MTU", name: "MTU", pkg: "", typ: $Int, tag: ""}, {prop: "Name", name: "Name", pkg: "", typ: $String, tag: ""}, {prop: "HardwareAddr", name: "HardwareAddr", pkg: "", typ: HardwareAddr, tag: ""}, {prop: "Flags", name: "Flags", pkg: "", typ: Flags, tag: ""}]); IP.init($Uint8); IPMask.init($Uint8); ParseError.init([{prop: "Type", name: "Type", pkg: "", typ: $String, tag: ""}, {prop: "Text", name: "Text", pkg: "", typ: $String, tag: ""}]); IPAddr.init([{prop: "IP", name: "IP", pkg: "", typ: IP, tag: ""}, {prop: "Zone", name: "Zone", pkg: "", typ: $String, 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([{prop: "fd", name: "fd", pkg: "net", typ: ptrType$18, tag: ""}]); 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)}]); 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)}]); OpError.init([{prop: "Op", name: "Op", pkg: "", typ: $String, tag: ""}, {prop: "Net", name: "Net", pkg: "", typ: $String, tag: ""}, {prop: "Addr", name: "Addr", pkg: "", typ: Addr, tag: ""}, {prop: "Err", name: "Err", pkg: "", typ: $error, tag: ""}]); temporary.init([{prop: "Temporary", name: "Temporary", pkg: "", typ: $funcType([], [$Bool], false)}]); timeout.init([{prop: "Timeout", name: "Timeout", pkg: "", typ: $funcType([], [$Bool], false)}]); timeoutError.init([]); writerOnly.init([{prop: "Writer", name: "", pkg: "", typ: io.Writer, tag: ""}]); 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: "toAddr", name: "toAddr", pkg: "net", typ: $funcType([], [Addr], false)}]); TCPAddr.init([{prop: "IP", name: "IP", pkg: "", typ: IP, tag: ""}, {prop: "Port", name: "Port", pkg: "", typ: $Int, tag: ""}, {prop: "Zone", name: "Zone", pkg: "", typ: $String, tag: ""}]); TCPConn.init([{prop: "conn", name: "", pkg: "net", typ: conn, tag: ""}]); TCPListener.init([{prop: "fd", name: "fd", pkg: "net", typ: ptrType$18, tag: ""}]); UDPAddr.init([{prop: "IP", name: "IP", pkg: "", typ: IP, tag: ""}, {prop: "Port", name: "Port", pkg: "", typ: $Int, tag: ""}, {prop: "Zone", name: "Zone", pkg: "", typ: $String, tag: ""}]); UnixAddr.init([{prop: "Name", name: "Name", pkg: "", typ: $String, tag: ""}, {prop: "Net", name: "Net", pkg: "", 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 = 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 = rand.$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 = sort.$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 = atomic.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = syscall.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = time.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } serverInit = new sync.Once.ptr(); initErr = $ifaceNil; canCancelIO = false; skipSyncNotif = false; hasLoadSetFileCompletionNotificationModes = false; rsrv = ptrType.nil; wsrv = ptrType.nil; onceStartServer = new sync.Once.ptr(); supportsIPv4 = false; supportsIPv6 = false; supportsIPv4map = false; rr_mk = (_map = new $Map(), _key = 5, _map[_key] = { k: _key, v: (function() { var $ptr; return new dnsRR_CNAME.ptr(); }) }, _key = 13, _map[_key] = { k: _key, v: (function() { var $ptr; return new dnsRR_HINFO.ptr(); }) }, _key = 7, _map[_key] = { k: _key, v: (function() { var $ptr; return new dnsRR_MB.ptr(); }) }, _key = 8, _map[_key] = { k: _key, v: (function() { var $ptr; return new dnsRR_MG.ptr(); }) }, _key = 14, _map[_key] = { k: _key, v: (function() { var $ptr; return new dnsRR_MINFO.ptr(); }) }, _key = 9, _map[_key] = { k: _key, v: (function() { var $ptr; return new dnsRR_MR.ptr(); }) }, _key = 15, _map[_key] = { k: _key, v: (function() { var $ptr; return new dnsRR_MX.ptr(); }) }, _key = 2, _map[_key] = { k: _key, v: (function() { var $ptr; return new dnsRR_NS.ptr(); }) }, _key = 12, _map[_key] = { k: _key, v: (function() { var $ptr; return new dnsRR_PTR.ptr(); }) }, _key = 6, _map[_key] = { k: _key, v: (function() { var $ptr; return new dnsRR_SOA.ptr(); }) }, _key = 16, _map[_key] = { k: _key, v: (function() { var $ptr; return new dnsRR_TXT.ptr(); }) }, _key = 33, _map[_key] = { k: _key, v: (function() { var $ptr; return new dnsRR_SRV.ptr(); }) }, _key = 1, _map[_key] = { k: _key, v: (function() { var $ptr; return new dnsRR_A.ptr(); }) }, _key = 28, _map[_key] = { k: _key, v: (function() { var $ptr; return new dnsRR_AAAA.ptr(); }) }, _map); errNoSupport = errors.New("address family not supported"); 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"]); 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.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); errNoSuitableAddress = errors.New("no suitable address found"); listenerBacklog = maxListenerBacklog(); errMissingAddress = errors.New("missing address"); errTimeout = new timeoutError.ptr(); errClosing = errors.New("use of closed network connection"); $pkg.ErrWriteToConnected = errors.New("use of WriteTo with pre-connected connection"); threadLimit = new chanType(500); init(); /* */ } 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, testing, time, utf8, CertPool, pkcs1PrivateKey, pkcs1AdditionalRSAPrime, rsaPublicKey, pkcs8, ecPrivateKey, InvalidReason, CertificateInvalidError, HostnameError, UnknownAuthorityError, SystemRootsError, VerifyOptions, certificate, tbsCertificate, dsaAlgorithmParameters, dsaSignature, ecdsaSignature, validity, publicKeyInfo, authKeyId, SignatureAlgorithm, PublicKeyAlgorithm, KeyUsage, ExtKeyUsage, Certificate, ConstraintViolationError, UnhandledCriticalExtension, basicConstraints, policyInformation, nameConstraints, generalSubtree, authorityInfoAccess, distributionPoint, distributionPointName, ptrType, structType, sliceType$1, structType$1, sliceType$2, sliceType$3, sliceType$4, sliceType$5, ptrType$1, sliceType$6, ptrType$2, sliceType$7, ptrType$4, ptrType$5, sliceType$8, sliceType$9, ptrType$6, ptrType$7, ptrType$8, ptrType$9, ptrType$10, ptrType$11, sliceType$10, ptrType$12, sliceType$11, ptrType$13, sliceType$12, ptrType$14, sliceType$13, ptrType$15, ptrType$16, ptrType$17, ptrType$18, ptrType$19, sliceType$14, ptrType$20, ptrType$21, ptrType$22, ptrType$23, sliceType$15, sliceType$16, ptrType$24, sliceType$17, ptrType$25, sliceType$18, ptrType$26, ptrType$27, sliceType$19, ptrType$28, sliceType$20, ptrType$29, sliceType$23, sliceType$24, ptrType$31, sliceType$25, mapType, mapType$1, once, systemRoots, oidSignatureMD2WithRSA, oidSignatureMD5WithRSA, oidSignatureSHA1WithRSA, oidSignatureSHA256WithRSA, oidSignatureSHA384WithRSA, oidSignatureSHA512WithRSA, oidSignatureDSAWithSHA1, oidSignatureDSAWithSHA256, oidSignatureECDSAWithSHA1, oidSignatureECDSAWithSHA256, oidSignatureECDSAWithSHA384, oidSignatureECDSAWithSHA512, signatureAlgorithmDetails, oidPublicKeyRSA, oidPublicKeyDSA, oidPublicKeyECDSA, oidNamedCurveP224, oidNamedCurveP256, oidNamedCurveP384, oidNamedCurveP521, oidExtKeyUsageAny, oidExtKeyUsageServerAuth, oidExtKeyUsageClientAuth, oidExtKeyUsageCodeSigning, oidExtKeyUsageEmailProtection, oidExtKeyUsageIPSECEndSystem, oidExtKeyUsageIPSECTunnel, oidExtKeyUsageIPSECUser, oidExtKeyUsageTimeStamping, oidExtKeyUsageOCSPSigning, oidExtKeyUsageMicrosoftServerGatedCrypto, oidExtKeyUsageNetscapeServerGatedCrypto, extKeyUsageOIDs, entrustBrokenSPKI, oidExtensionAuthorityInfoAccess, oidAuthorityInfoAccessOcsp, oidAuthorityInfoAccessIssuers, initSystemRoots, NewCertPool, ParsePKCS1PrivateKey, ParsePKCS8PrivateKey, systemRootsPool, createStoreContext, extractSimpleChain, checkChainTrustStatus, checkChainSSLServerPolicy, ParseECPrivateKey, parseECPrivateKey, appendToFreshChain, matchHostnames, toLowerCaseASCII, checkChainForKeyUsage, getSignatureAlgorithmFromOID, getPublicKeyAlgorithmFromOID, namedCurveFromOID, extKeyUsageFromOID, parsePublicKey, parseSANExtension, parseCertificate, ParseCertificate; 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"]; testing = $packages["testing"]; time = $packages["time"]; utf8 = $packages["unicode/utf8"]; CertPool = $pkg.CertPool = $newType(0, $kindStruct, "x509.CertPool", "CertPool", "crypto/x509", function(bySubjectKeyId_, byName_, certs_) { this.$val = this; if (arguments.length === 0) { this.bySubjectKeyId = false; this.byName = false; this.certs = sliceType$6.nil; return; } this.bySubjectKeyId = bySubjectKeyId_; this.byName = byName_; this.certs = certs_; }); pkcs1PrivateKey = $pkg.pkcs1PrivateKey = $newType(0, $kindStruct, "x509.pkcs1PrivateKey", "pkcs1PrivateKey", "crypto/x509", function(Version_, N_, E_, D_, P_, Q_, Dp_, Dq_, Qinv_, AdditionalPrimes_) { this.$val = this; if (arguments.length === 0) { this.Version = 0; this.N = ptrType$5.nil; this.E = 0; this.D = ptrType$5.nil; this.P = ptrType$5.nil; this.Q = ptrType$5.nil; this.Dp = ptrType$5.nil; this.Dq = ptrType$5.nil; this.Qinv = ptrType$5.nil; this.AdditionalPrimes = sliceType$9.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", "pkcs1AdditionalRSAPrime", "crypto/x509", function(Prime_, Exp_, Coeff_) { this.$val = this; if (arguments.length === 0) { this.Prime = ptrType$5.nil; this.Exp = ptrType$5.nil; this.Coeff = ptrType$5.nil; return; } this.Prime = Prime_; this.Exp = Exp_; this.Coeff = Coeff_; }); rsaPublicKey = $pkg.rsaPublicKey = $newType(0, $kindStruct, "x509.rsaPublicKey", "rsaPublicKey", "crypto/x509", function(N_, E_) { this.$val = this; if (arguments.length === 0) { this.N = ptrType$5.nil; this.E = 0; return; } this.N = N_; this.E = E_; }); pkcs8 = $pkg.pkcs8 = $newType(0, $kindStruct, "x509.pkcs8", "pkcs8", "crypto/x509", function(Version_, Algo_, PrivateKey_) { this.$val = this; if (arguments.length === 0) { this.Version = 0; this.Algo = new pkix.AlgorithmIdentifier.ptr(); this.PrivateKey = sliceType$3.nil; return; } this.Version = Version_; this.Algo = Algo_; this.PrivateKey = PrivateKey_; }); ecPrivateKey = $pkg.ecPrivateKey = $newType(0, $kindStruct, "x509.ecPrivateKey", "ecPrivateKey", "crypto/x509", 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(); return; } this.Version = Version_; this.PrivateKey = PrivateKey_; this.NamedCurveOID = NamedCurveOID_; this.PublicKey = PublicKey_; }); InvalidReason = $pkg.InvalidReason = $newType(4, $kindInt, "x509.InvalidReason", "InvalidReason", "crypto/x509", null); CertificateInvalidError = $pkg.CertificateInvalidError = $newType(0, $kindStruct, "x509.CertificateInvalidError", "CertificateInvalidError", "crypto/x509", 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", "HostnameError", "crypto/x509", 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", "UnknownAuthorityError", "crypto/x509", 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", "SystemRootsError", "crypto/x509", function() { this.$val = this; if (arguments.length === 0) { return; } }); VerifyOptions = $pkg.VerifyOptions = $newType(0, $kindStruct, "x509.VerifyOptions", "VerifyOptions", "crypto/x509", 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(); this.KeyUsages = sliceType$14.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", "certificate", "crypto/x509", function(Raw_, TBSCertificate_, SignatureAlgorithm_, SignatureValue_) { this.$val = this; if (arguments.length === 0) { this.Raw = asn1.RawContent.nil; this.TBSCertificate = new tbsCertificate.ptr(); this.SignatureAlgorithm = new pkix.AlgorithmIdentifier.ptr(); this.SignatureValue = new asn1.BitString.ptr(); return; } this.Raw = Raw_; this.TBSCertificate = TBSCertificate_; this.SignatureAlgorithm = SignatureAlgorithm_; this.SignatureValue = SignatureValue_; }); tbsCertificate = $pkg.tbsCertificate = $newType(0, $kindStruct, "x509.tbsCertificate", "tbsCertificate", "crypto/x509", 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$5.nil; this.SignatureAlgorithm = new pkix.AlgorithmIdentifier.ptr(); this.Issuer = new asn1.RawValue.ptr(); this.Validity = new validity.ptr(); this.Subject = new asn1.RawValue.ptr(); this.PublicKey = new publicKeyInfo.ptr(); this.UniqueId = new asn1.BitString.ptr(); this.SubjectUniqueId = new asn1.BitString.ptr(); this.Extensions = sliceType$23.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", "dsaAlgorithmParameters", "crypto/x509", function(P_, Q_, G_) { this.$val = this; if (arguments.length === 0) { this.P = ptrType$5.nil; this.Q = ptrType$5.nil; this.G = ptrType$5.nil; return; } this.P = P_; this.Q = Q_; this.G = G_; }); dsaSignature = $pkg.dsaSignature = $newType(0, $kindStruct, "x509.dsaSignature", "dsaSignature", "crypto/x509", function(R_, S_) { this.$val = this; if (arguments.length === 0) { this.R = ptrType$5.nil; this.S = ptrType$5.nil; return; } this.R = R_; this.S = S_; }); ecdsaSignature = $pkg.ecdsaSignature = $newType(0, $kindStruct, "x509.ecdsaSignature", "ecdsaSignature", "crypto/x509", function(R_, S_) { this.$val = this; if (arguments.length === 0) { this.R = ptrType$5.nil; this.S = ptrType$5.nil; return; } this.R = R_; this.S = S_; }); validity = $pkg.validity = $newType(0, $kindStruct, "x509.validity", "validity", "crypto/x509", function(NotBefore_, NotAfter_) { this.$val = this; if (arguments.length === 0) { this.NotBefore = new time.Time.ptr(); this.NotAfter = new time.Time.ptr(); return; } this.NotBefore = NotBefore_; this.NotAfter = NotAfter_; }); publicKeyInfo = $pkg.publicKeyInfo = $newType(0, $kindStruct, "x509.publicKeyInfo", "publicKeyInfo", "crypto/x509", function(Raw_, Algorithm_, PublicKey_) { this.$val = this; if (arguments.length === 0) { this.Raw = asn1.RawContent.nil; this.Algorithm = new pkix.AlgorithmIdentifier.ptr(); this.PublicKey = new asn1.BitString.ptr(); return; } this.Raw = Raw_; this.Algorithm = Algorithm_; this.PublicKey = PublicKey_; }); authKeyId = $pkg.authKeyId = $newType(0, $kindStruct, "x509.authKeyId", "authKeyId", "crypto/x509", 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", "SignatureAlgorithm", "crypto/x509", null); PublicKeyAlgorithm = $pkg.PublicKeyAlgorithm = $newType(4, $kindInt, "x509.PublicKeyAlgorithm", "PublicKeyAlgorithm", "crypto/x509", null); KeyUsage = $pkg.KeyUsage = $newType(4, $kindInt, "x509.KeyUsage", "KeyUsage", "crypto/x509", null); ExtKeyUsage = $pkg.ExtKeyUsage = $newType(4, $kindInt, "x509.ExtKeyUsage", "ExtKeyUsage", "crypto/x509", null); Certificate = $pkg.Certificate = $newType(0, $kindStruct, "x509.Certificate", "Certificate", "crypto/x509", function(Raw_, RawTBSCertificate_, RawSubjectPublicKeyInfo_, RawSubject_, RawIssuer_, Signature_, SignatureAlgorithm_, PublicKeyAlgorithm_, PublicKey_, Version_, SerialNumber_, Issuer_, Subject_, NotBefore_, NotAfter_, KeyUsage_, Extensions_, ExtraExtensions_, 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$5.nil; this.Issuer = new pkix.Name.ptr(); this.Subject = new pkix.Name.ptr(); this.NotBefore = new time.Time.ptr(); this.NotAfter = new time.Time.ptr(); this.KeyUsage = 0; this.Extensions = sliceType$23.nil; this.ExtraExtensions = sliceType$23.nil; this.ExtKeyUsage = sliceType$14.nil; this.UnknownExtKeyUsage = sliceType$18.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$15.nil; this.IssuingCertificateURL = sliceType$15.nil; this.DNSNames = sliceType$15.nil; this.EmailAddresses = sliceType$15.nil; this.IPAddresses = sliceType$16.nil; this.PermittedDNSDomainsCritical = false; this.PermittedDNSDomains = sliceType$15.nil; this.CRLDistributionPoints = sliceType$15.nil; this.PolicyIdentifiers = sliceType$18.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.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_; }); ConstraintViolationError = $pkg.ConstraintViolationError = $newType(0, $kindStruct, "x509.ConstraintViolationError", "ConstraintViolationError", "crypto/x509", function() { this.$val = this; if (arguments.length === 0) { return; } }); UnhandledCriticalExtension = $pkg.UnhandledCriticalExtension = $newType(0, $kindStruct, "x509.UnhandledCriticalExtension", "UnhandledCriticalExtension", "crypto/x509", function() { this.$val = this; if (arguments.length === 0) { return; } }); basicConstraints = $pkg.basicConstraints = $newType(0, $kindStruct, "x509.basicConstraints", "basicConstraints", "crypto/x509", 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", "policyInformation", "crypto/x509", 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", "nameConstraints", "crypto/x509", function(Permitted_, Excluded_) { this.$val = this; if (arguments.length === 0) { this.Permitted = sliceType$24.nil; this.Excluded = sliceType$24.nil; return; } this.Permitted = Permitted_; this.Excluded = Excluded_; }); generalSubtree = $pkg.generalSubtree = $newType(0, $kindStruct, "x509.generalSubtree", "generalSubtree", "crypto/x509", function(Name_) { this.$val = this; if (arguments.length === 0) { this.Name = ""; return; } this.Name = Name_; }); authorityInfoAccess = $pkg.authorityInfoAccess = $newType(0, $kindStruct, "x509.authorityInfoAccess", "authorityInfoAccess", "crypto/x509", function(Method_, Location_) { this.$val = this; if (arguments.length === 0) { this.Method = asn1.ObjectIdentifier.nil; this.Location = new asn1.RawValue.ptr(); return; } this.Method = Method_; this.Location = Location_; }); distributionPoint = $pkg.distributionPoint = $newType(0, $kindStruct, "x509.distributionPoint", "distributionPoint", "crypto/x509", function(DistributionPoint_, Reason_, CRLIssuer_) { this.$val = this; if (arguments.length === 0) { this.DistributionPoint = new distributionPointName.ptr(); this.Reason = new asn1.BitString.ptr(); this.CRLIssuer = new asn1.RawValue.ptr(); return; } this.DistributionPoint = DistributionPoint_; this.Reason = Reason_; this.CRLIssuer = CRLIssuer_; }); distributionPointName = $pkg.distributionPointName = $newType(0, $kindStruct, "x509.distributionPointName", "distributionPointName", "crypto/x509", function(FullName_, RelativeName_) { this.$val = this; if (arguments.length === 0) { this.FullName = new asn1.RawValue.ptr(); this.RelativeName = pkix.RDNSequence.nil; return; } this.FullName = FullName_; this.RelativeName = RelativeName_; }); ptrType = $ptrType(CertPool); structType = $structType([{prop: "algo", name: "algo", pkg: "crypto/x509", typ: SignatureAlgorithm, tag: ""}, {prop: "oid", name: "oid", pkg: "crypto/x509", typ: asn1.ObjectIdentifier, tag: ""}, {prop: "pubKeyAlgo", name: "pubKeyAlgo", pkg: "crypto/x509", typ: PublicKeyAlgorithm, tag: ""}, {prop: "hash", name: "hash", pkg: "crypto/x509", typ: crypto.Hash, tag: ""}]); sliceType$1 = $sliceType(structType); structType$1 = $structType([{prop: "extKeyUsage", name: "extKeyUsage", pkg: "crypto/x509", typ: ExtKeyUsage, tag: ""}, {prop: "oid", name: "oid", pkg: "crypto/x509", typ: asn1.ObjectIdentifier, tag: ""}]); sliceType$2 = $sliceType(structType$1); sliceType$3 = $sliceType($Uint8); sliceType$4 = $sliceType($Int); sliceType$5 = $sliceType($emptyInterface); ptrType$1 = $ptrType(Certificate); sliceType$6 = $sliceType(ptrType$1); ptrType$2 = $ptrType(pem.Block); sliceType$7 = $sliceType(sliceType$3); ptrType$4 = $ptrType(rsa.PrivateKey); ptrType$5 = $ptrType(big.Int); sliceType$8 = $sliceType(ptrType$5); sliceType$9 = $sliceType(pkcs1AdditionalRSAPrime); ptrType$6 = $ptrType(asn1.ObjectIdentifier); 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$10 = $sliceType(ptrType$10); ptrType$12 = $ptrType(syscall.CertChainElement); sliceType$11 = $sliceType(ptrType$12); ptrType$13 = $ptrType($Uint16); sliceType$12 = $sliceType(sliceType$6); ptrType$14 = $ptrType(VerifyOptions); sliceType$13 = $sliceType(ptrType$8); ptrType$15 = $ptrType(ptrType$8); ptrType$16 = $ptrType(syscall.Filetime); ptrType$17 = $ptrType(syscall.CertChainContext); ptrType$18 = $ptrType(ptrType$17); ptrType$19 = $ptrType(ecdsa.PrivateKey); sliceType$14 = $sliceType(ExtKeyUsage); ptrType$20 = $ptrType(rsa.PublicKey); ptrType$21 = $ptrType(ecdsa.PublicKey); ptrType$22 = $ptrType(dsa.PublicKey); ptrType$23 = $ptrType(ptrType$5); sliceType$15 = $sliceType($String); sliceType$16 = $sliceType(net.IP); ptrType$24 = $ptrType(pkix.RDNSequence); sliceType$17 = $sliceType(distributionPoint); ptrType$25 = $ptrType(sliceType$17); sliceType$18 = $sliceType(asn1.ObjectIdentifier); ptrType$26 = $ptrType(sliceType$18); ptrType$27 = $ptrType(sliceType$3); sliceType$19 = $sliceType(policyInformation); ptrType$28 = $ptrType(sliceType$19); sliceType$20 = $sliceType(authorityInfoAccess); ptrType$29 = $ptrType(sliceType$20); sliceType$23 = $sliceType(pkix.Extension); sliceType$24 = $sliceType(generalSubtree); ptrType$31 = $ptrType(pkix.CertificateList); sliceType$25 = $sliceType(pkix.RevokedCertificate); mapType = $mapType($String, sliceType$4); mapType$1 = $mapType($Int, sliceType$12); initSystemRoots = function() { var $ptr; }; NewCertPool = function() { var $ptr; return new CertPool.ptr(new $Map(), new $Map(), sliceType$6.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) { return [parents, errCert, err]; } candidates = sliceType$4.nil; if (cert.AuthorityKeyId.$length > 0) { candidates = (_entry = s.bySubjectKeyId[$bytesToString(cert.AuthorityKeyId)], _entry !== undefined ? _entry.v : sliceType$4.nil); } if (candidates.$length === 0) { candidates = (_entry$1 = s.byName[$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") : _ref.$array[_ref.$offset + _i]); _r = cert.CheckSignatureFrom((x = s.certs, ((c < 0 || c >= x.$length) ? $throwRuntimeError("index out of range") : 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)) { $s = 4; continue; } /* */ $s = 5; continue; /* if ($interfaceIsEqual(err, $ifaceNil)) { */ case 4: parents = $append(parents, c); $s = 6; continue; /* } else { */ case 5: errCert = (x$1 = s.certs, ((c < 0 || c >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + c])); /* } */ case 6: _i++; /* } */ $s = 1; continue; case 2: return [parents, errCert, err]; /* */ $s = -1; case -1: } 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.AddCert = function(cert) { var $ptr, _entry, _entry$1, _i, _key, _key$1, _ref, c, cert, keyId, n, name, s; s = this; if (cert === ptrType$1.nil) { $panic(new $String("adding nil Certificate to CertPool")); } _ref = s.certs; _i = 0; while (true) { if (!(_i < _ref.$length)) { break; } c = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]); if (c.Equal(cert)) { return; } _i++; } 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"))[_key] = { k: _key, v: $append((_entry = s.bySubjectKeyId[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"))[_key$1] = { k: _key$1, v: $append((_entry$1 = s.byName[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: return ok; /* */ $s = -1; case -1: } 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; res = sliceType$7.nil; s = this; res = $makeSlice(sliceType$7, 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") : _ref.$array[_ref.$offset + _i]); ((i < 0 || i >= res.$length) ? $throwRuntimeError("index out of range") : 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, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _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; _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; 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]; key = ptrType$4.nil; err = $ifaceNil; priv[0] = $clone(new pkcs1PrivateKey.ptr(), pkcs1PrivateKey); _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) { err = (x = new asn1.SyntaxError.ptr("trailing data"), new x.constructor.elem(x)); return [key, err]; } if (!($interfaceIsEqual(err, $ifaceNil))) { return [key, err]; } if (priv[0].Version > 1) { _tmp = ptrType$4.nil; _tmp$1 = errors.New("x509: unsupported private key version"); key = _tmp; err = _tmp$1; return [key, err]; } if (priv[0].N.Sign() <= 0 || priv[0].D.Sign() <= 0 || priv[0].P.Sign() <= 0 || priv[0].Q.Sign() <= 0) { _tmp$2 = ptrType$4.nil; _tmp$3 = errors.New("x509: private key contains zero or negative value"); key = _tmp$2; err = _tmp$3; return [key, err]; } key = new rsa.PrivateKey.ptr(); $copy(key.PublicKey, new rsa.PublicKey.ptr(priv[0].N, priv[0].E), rsa.PublicKey); 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") : x$1.$array[x$1.$offset + 0] = priv[0].P)); (x$2 = key.Primes, (1 >= x$2.$length ? $throwRuntimeError("index out of range") : 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") : _ref.$array[_ref.$offset + _i]), pkcs1AdditionalRSAPrime); if (a.Prime.Sign() <= 0) { _tmp$4 = ptrType$4.nil; _tmp$5 = errors.New("x509: private key contains zero or negative prime"); key = _tmp$4; err = _tmp$5; return [key, err]; } (x$3 = key.Primes, x$4 = i + 2 >> 0, ((x$4 < 0 || x$4 >= x$3.$length) ? $throwRuntimeError("index out of range") : 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))) { _tmp$6 = ptrType$4.nil; _tmp$7 = err; key = _tmp$6; err = _tmp$7; return [key, err]; } key.Precompute(); return [key, err]; /* */ $s = -1; case -1: } 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._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.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] = $clone(new pkcs8.ptr(), pkcs8); _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 = $ifaceNil; _tmp$1 = err$1; key = _tmp; err = _tmp$1; return [key, err]; /* } */ case 3: /* */ if (privKey[0].Algo.Algorithm.Equal(oidPublicKeyRSA)) { $s = 4; continue; } /* */ if (privKey[0].Algo.Algorithm.Equal(oidPublicKeyECDSA)) { $s = 5; continue; } /* */ $s = 6; continue; /* if (privKey[0].Algo.Algorithm.Equal(oidPublicKeyRSA)) { */ case 4: _r$1 = ParsePKCS1PrivateKey(privKey[0].PrivateKey); /* */ $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; key = _tuple$1[0]; err = _tuple$1[1]; /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 9; continue; } /* */ $s = 10; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 9: _r$2 = err.Error(); /* */ $s = 11; case 11: 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 = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } _tmp$2 = $ifaceNil; _tmp$3 = _r$3; key = _tmp$2; err = _tmp$3; return [key, err]; /* } */ case 10: _tmp$4 = key; _tmp$5 = $ifaceNil; key = _tmp$4; err = _tmp$5; return [key, err]; $s = 7; continue; /* } else if (privKey[0].Algo.Algorithm.Equal(oidPublicKeyECDSA)) { */ case 5: bytes$1 = privKey[0].Algo.Parameters.FullBytes; namedCurveOID = $newDataPointer(asn1.ObjectIdentifier.nil, ptrType$6); _r$4 = asn1.Unmarshal(bytes$1, namedCurveOID); /* */ $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; err$2 = _tuple$2[1]; /* */ if (!($interfaceIsEqual(err$2, $ifaceNil))) { $s = 14; continue; } /* */ $s = 15; continue; /* if (!($interfaceIsEqual(err$2, $ifaceNil))) { */ case 14: namedCurveOID = ptrType$6.nil; /* } */ case 15: _r$5 = parseECPrivateKey(namedCurveOID, privKey[0].PrivateKey); /* */ $s = 16; case 16: 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 = 17; continue; } /* */ $s = 18; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 17: _r$6 = err.Error(); /* */ $s = 19; case 19: 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 = 20; case 20: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } _tmp$6 = $ifaceNil; _tmp$7 = _r$7; key = _tmp$6; err = _tmp$7; return [key, err]; /* } */ case 18: _tmp$8 = key; _tmp$9 = $ifaceNil; key = _tmp$8; err = _tmp$9; return [key, err]; $s = 7; continue; /* } else { */ case 6: _r$8 = fmt.Errorf("x509: PKCS#8 wrapping contained private key with unknown algorithm: %v", new sliceType$5([privKey[0].Algo.Algorithm])); /* */ $s = 21; case 21: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } _tmp$10 = $ifaceNil; _tmp$11 = _r$8; key = _tmp$10; err = _tmp$11; return [key, err]; /* } */ case 7: /* */ $s = -1; case -1: } 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; } return systemRoots; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: systemRootsPool }; } $f.$ptr = $ptr; $f.$s = $s; $f.$r = $r; return $f; }; createStoreContext = function(leaf, opts) { var $ptr, _i, _ref, _tuple, _tuple$1, _tuple$2, ctx, err, err$1, handle, intermediate, leaf, leafCtx, opts, storeCtx, storeCtx_ptr, 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_ptr || (storeCtx_ptr = 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") : _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$6.nil; err = $ifaceNil; if (simpleChain === ptrType$11.nil || (count === 0)) { _tmp = sliceType$6.nil; _tmp$1 = errors.New("x509: invalid simple chain"); chain = _tmp; err = _tmp$1; return [chain, err]; } simpleChains = new sliceType$10(simpleChain); lastChain = (x = count - 1 >> 0, ((x < 0 || x >= simpleChains.$length) ? $throwRuntimeError("index out of range") : simpleChains.$array[simpleChains.$offset + x])); elements = new sliceType$11(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") : 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$6.nil; _tmp$3 = err$1; chain = _tmp$2; err = _tmp$3; 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; return [chain, err]; /* */ $s = -1; case -1: } 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, _ref, c, chainCtx, status, x, x$1; if (!((chainCtx.TrustStatus.ErrorStatus === 0))) { status = chainCtx.TrustStatus.ErrorStatus; _ref = status; if (_ref === 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, _ref, _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))) { _ref = status.Error; if (_ref === 2148204801) { return (x = new CertificateInvalidError.ptr(c, 1), new x.constructor.elem(x)); } else if (_ref === 2148204815) { return (x$1 = new HostnameError.ptr(c, opts.DNSName), new x$1.constructor.elem(x$1)); } else if (_ref === 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$12.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$12.nil; _tmp$1 = err; chains = _tmp; err = _tmp$1; return [chains, err]; } $deferred.push([syscall.CertFreeCertificateContext, [storeCtx]]); para = new syscall.CertChainPara.ptr(); para.Size = 44; if (hasDNSName) { oids = new sliceType$13([(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) && !opts.CurrentTime.IsZero()) { ft[0] = $clone(syscall.NsecToFiletime(opts.CurrentTime.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$12.nil; _tmp$3 = err; chains = _tmp$2; err = _tmp$3; return [chains, err]; } $deferred.push([syscall.CertFreeCertificateChain, [chainCtx[0]]]); err = checkChainTrustStatus(c, chainCtx[0]); if (!($interfaceIsEqual(err, $ifaceNil))) { _tmp$4 = sliceType$12.nil; _tmp$5 = err; chains = _tmp$4; err = _tmp$5; return [chains, err]; } if (hasDNSName) { err = checkChainSSLServerPolicy(c, chainCtx[0], opts); if (!($interfaceIsEqual(err, $ifaceNil))) { _tmp$6 = sliceType$12.nil; _tmp$7 = err; chains = _tmp$6; err = _tmp$7; 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$12.nil; _tmp$9 = err; chains = _tmp$8; err = _tmp$9; return [chains, err]; } chains = $append(chains, chain); _tmp$10 = chains; _tmp$11 = $ifaceNil; chains = _tmp$10; err = _tmp$11; return [chains, err]; /* */ $s = -1; case -1: } 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, _tuple, der, err, 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; _tuple = $f._tuple; der = $f.der; err = $f.err; key = $f.key; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: key = ptrType$19.nil; err = $ifaceNil; _r = parseECPrivateKey(ptrType$6.nil, 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]; return [key, err]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: ParseECPrivateKey }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.der = der; $f.err = err; $f.key = key; $f.$s = $s; $f.$r = $r; return $f; }; $pkg.ParseECPrivateKey = ParseECPrivateKey; parseECPrivateKey = function(namedCurveOID, der) { 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, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, curve, der, err, err$1, k, key, namedCurveOID, priv, 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$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; 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; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: privKey = [privKey]; key = ptrType$19.nil; err = $ifaceNil; privKey[0] = $clone(new ecPrivateKey.ptr(), ecPrivateKey); _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: _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 = ptrType$19.nil; _tmp$1 = _r$2; key = _tmp; err = _tmp$1; return [key, err]; /* } */ case 3: /* */ if (!((privKey[0].Version === 1))) { $s = 6; continue; } /* */ $s = 7; continue; /* if (!((privKey[0].Version === 1))) { */ case 6: _r$3 = fmt.Errorf("x509: unknown EC private key version %d", new sliceType$5([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$2 = ptrType$19.nil; _tmp$3 = _r$3; key = _tmp$2; err = _tmp$3; 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; return [key, err]; } k = new big.Int.ptr().SetBytes(privKey[0].PrivateKey); _r$6 = curve.Params(); /* */ $s = 16; case 16: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } _r$7 = k.Cmp(_r$6.N); /* */ $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 = 14; continue; } /* */ $s = 15; continue; /* if (_r$7 >= 0) { */ case 14: _tmp$6 = ptrType$19.nil; _tmp$7 = errors.New("x509: invalid elliptic curve private key value"); key = _tmp$6; err = _tmp$7; return [key, err]; /* } */ case 15: priv = new ecdsa.PrivateKey.ptr(); priv.PublicKey.Curve = curve; priv.D = k; _r$8 = curve.ScalarBaseMult(privKey[0].PrivateKey); /* */ $s = 18; case 18: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } _tuple$1 = _r$8; priv.PublicKey.X = _tuple$1[0]; priv.PublicKey.Y = _tuple$1[1]; _tmp$8 = priv; _tmp$9 = $ifaceNil; key = _tmp$8; err = _tmp$9; return [key, err]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parseECPrivateKey }; } $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._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.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.$s = $s; $f.$r = $r; return $f; }; CertificateInvalidError.ptr.prototype.Error = function() { var $ptr, _ref, e; e = $clone(this, CertificateInvalidError); _ref = e.Reason; if (_ref === 0) { return "x509: certificate is not authorized to sign other certificates"; } else if (_ref === 1) { return "x509: certificate has expired or is not yet valid"; } else if (_ref === 2) { return "x509: a root or intermediate certificate is not authorized to sign in this domain"; } else if (_ref === 3) { return "x509: too many intermediates for path length constraint"; } else if (_ref === 4) { return "x509: certificate specifies an incompatible key usage"; } 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 = $clone(this, HostnameError); 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") : _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; } } 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, 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; 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 = $clone(this, UnknownAuthorityError); 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) { if (e.hintCert.Subject.Organization.$length > 0) { certName = (x = e.hintCert.Subject.Organization, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0])); } certName = "serial:" + e.hintCert.SerialNumber.String(); } _r = fmt.Sprintf(" (possibly because of %q while trying to verify candidate authority certificate %q)", new sliceType$5([e.hintErr, new $String(certName)])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } s = s + (_r); /* } */ case 2: return s; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: UnknownAuthorityError.ptr.prototype.Error }; } $f.$ptr = $ptr; $f._r = _r; $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; return "x509: failed to load system roots and no roots provided"; }; SystemRootsError.prototype.Error = function() { return this.$val.Error(); }; Certificate.ptr.prototype.isValid = function(certType, currentChain, opts) { var $ptr, _i, _ref, c, certType, currentChain, domain, now, numIntermediates, ok, opts, x, x$1, x$2, x$3; c = this; now = $clone(opts.CurrentTime, time.Time); if (now.IsZero()) { $copy(now, time.Now(), time.Time); } if (now.Before(c.NotBefore) || now.After(c.NotAfter)) { return (x = new CertificateInvalidError.ptr(c, 1), new x.constructor.elem(x)); } if (c.PermittedDNSDomains.$length > 0) { ok = false; _ref = c.PermittedDNSDomains; _i = 0; while (true) { if (!(_i < _ref.$length)) { break; } domain = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]); if (opts.DNSName === domain || (strings.HasSuffix(opts.DNSName, domain) && opts.DNSName.length >= (1 + domain.length >> 0) && (opts.DNSName.charCodeAt(((opts.DNSName.length - domain.length >> 0) - 1 >> 0)) === 46))) { ok = true; break; } _i++; } if (!ok) { return (x$1 = new CertificateInvalidError.ptr(c, 2), new x$1.constructor.elem(x$1)); } } if ((certType === 1) && (!c.BasicConstraintsValid || !c.IsCA)) { return (x$2 = new CertificateInvalidError.ptr(c, 0), new x$2.constructor.elem(x$2)); } if (c.BasicConstraintsValid && c.MaxPathLen >= 0) { numIntermediates = currentChain.$length - 1 >> 0; if (numIntermediates > c.MaxPathLen) { return (x$3 = new CertificateInvalidError.ptr(c, 3), new x$3.constructor.elem(x$3)); } } 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, _r, _r$1, _r$2, _ref, _ref$1, _tmp, _tmp$1, _tuple, _tuple$1, c, candidate, candidateChains, chains, err, keyUsages, opts, usage, 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; _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; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; c = $f.c; candidate = $f.candidate; candidateChains = $f.candidateChains; chains = $f.chains; err = $f.err; keyUsages = $f.keyUsages; opts = $f.opts; usage = $f.usage; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: opts = [opts]; chains = sliceType$12.nil; err = $ifaceNil; c = this; opts[0] = $clone(opts[0], VerifyOptions); /* */ 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]; return [chains, err]; /* } */ case 2: /* */ 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 = sliceType$12.nil; _tmp$1 = (x = new SystemRootsError.ptr(), new x.constructor.elem(x)); chains = _tmp; err = _tmp$1; return [chains, err]; } /* } */ case 5: err = c.isValid(0, sliceType$6.nil, opts[0]); if (!($interfaceIsEqual(err, $ifaceNil))) { return [chains, err]; } if (opts[0].DNSName.length > 0) { err = c.VerifyHostname(opts[0].DNSName); if (!($interfaceIsEqual(err, $ifaceNil))) { return [chains, err]; } } _r$2 = c.buildChains(new $Map(), new sliceType$6([c]), opts[0]); /* */ $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; candidateChains = _tuple$1[0]; err = _tuple$1[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { return [chains, err]; } keyUsages = opts[0].KeyUsages; if (keyUsages.$length === 0) { keyUsages = new sliceType$14([1]); } _ref = keyUsages; _i = 0; while (true) { if (!(_i < _ref.$length)) { break; } usage = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]); if (usage === 0) { chains = candidateChains; return [chains, err]; } _i++; } _ref$1 = candidateChains; _i$1 = 0; while (true) { if (!(_i$1 < _ref$1.$length)) { break; } candidate = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? $throwRuntimeError("index out of range") : _ref$1.$array[_ref$1.$offset + _i$1]); if (checkChainForKeyUsage(candidate, keyUsages)) { chains = $append(chains, candidate); } _i$1++; } if (chains.$length === 0) { err = (x$1 = new CertificateInvalidError.ptr(c, 4), new x$1.constructor.elem(x$1)); } return [chains, err]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Certificate.ptr.prototype.Verify }; } $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._ref = _ref; $f._ref$1 = _ref$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.c = c; $f.candidate = candidate; $f.candidateChains = candidateChains; $f.chains = chains; $f.err = err; $f.keyUsages = keyUsages; $f.opts = opts; $f.usage = usage; $f.x = x; $f.x$1 = x$1; $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$6, (chain.$length + 1 >> 0)); $copySlice(n, chain); (x = chain.$length, ((x < 0 || x >= n.$length) ? $throwRuntimeError("index out of range") : n.$array[n.$offset + x] = cert)); return n; }; Certificate.ptr.prototype.buildChains = function(cache, currentChain, opts) { var $ptr, _entry, _i, _i$1, _i$2, _key, _r, _r$1, _r$2, _ref, _ref$1, _ref$2, _tuple, _tuple$1, _tuple$2, _tuple$3, c, cache, cert, 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; _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; _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; 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$12.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") : _ref.$array[_ref.$offset + _i]); root = (x = opts.Roots.certs, ((rootNum < 0 || rootNum >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + rootNum])); 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$1 = possibleIntermediates; _i$1 = 0; /* while (true) { */ case 5: /* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 6; continue; } intermediateNum = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? $throwRuntimeError("index out of range") : _ref$1.$array[_ref$1.$offset + _i$1]); intermediate = (x$1 = opts.Intermediates.certs, ((intermediateNum < 0 || intermediateNum >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + intermediateNum])); _ref$2 = currentChain; _i$2 = 0; /* while (true) { */ case 7: /* if (!(_i$2 < _ref$2.$length)) { break; } */ if(!(_i$2 < _ref$2.$length)) { $s = 8; continue; } cert = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? $throwRuntimeError("index out of range") : _ref$2.$array[_ref$2.$offset + _i$2]); if (cert === intermediate) { _i$1++; /* continue nextIntermediate; */ $s = 5; continue s; } _i$2++; /* } */ $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$1++; /* continue; */ $s = 5; continue; /* } */ case 10: childChains = sliceType$12.nil; _tuple$2 = (_entry = cache[intermediateNum], _entry !== undefined ? [_entry.v, true] : [sliceType$12.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"))[_key] = { k: _key, v: childChains }; /* } */ case 12: chains = $appendSlice(chains, childChains); _i$1++; /* } */ $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)); } return [chains, err]; /* */ $s = -1; case -1: } 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._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._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.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; 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") : _ref.$array[_ref.$offset + _i]); if (patternPart === "*") { _i++; continue; } if (!(patternPart === ((i < 0 || i >= hostParts.$length) ? $throwRuntimeError("index out of range") : 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") : _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") : out.$array[out.$offset + i] = ((i < 0 || i >= out.$length) ? $throwRuntimeError("index out of range") : 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 = h.substring(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") : _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") : _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$14, 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") : 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") : _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") : _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") : _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") : usages.$array[usages.$offset + i$1] = -1); usagesRemaining = usagesRemaining - (1) >> 0; if (usagesRemaining === 0) { return false; } _i$1++; } i = i - (1) >> 0; } return true; }; getSignatureAlgorithmFromOID = function(oid) { var $ptr, _i, _ref, details, oid; _ref = signatureAlgorithmDetails; _i = 0; while (true) { if (!(_i < _ref.$length)) { break; } details = $clone(((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]), structType); if (oid.Equal(details.oid)) { return details.algo; } _i++; } return 0; }; 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 = 1; continue; } /* */ if (oid.Equal(oidNamedCurveP256)) { $s = 2; continue; } /* */ if (oid.Equal(oidNamedCurveP384)) { $s = 3; continue; } /* */ if (oid.Equal(oidNamedCurveP521)) { $s = 4; continue; } /* */ $s = 5; continue; /* if (oid.Equal(oidNamedCurveP224)) { */ case 1: _r = elliptic.P224(); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; $s = 5; continue; /* } else if (oid.Equal(oidNamedCurveP256)) { */ case 2: _r$1 = elliptic.P256(); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } return _r$1; $s = 5; continue; /* } else if (oid.Equal(oidNamedCurveP384)) { */ case 3: _r$2 = elliptic.P384(); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } return _r$2; $s = 5; continue; /* } else if (oid.Equal(oidNamedCurveP521)) { */ case 4: _r$3 = elliptic.P521(); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } return _r$3; /* } */ case 5: return $ifaceNil; /* */ $s = -1; case -1: } 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") : _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]; }; 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, err, 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; err = $f.err; parent = $f.parent; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: err = $ifaceNil; c = this; if (((parent.Version === 3) && !parent.BasicConstraintsValid || parent.BasicConstraintsValid && !parent.IsCA) && !bytes.Equal(c.RawSubjectPublicKeyInfo, entrustBrokenSPKI)) { err = (x = new ConstraintViolationError.ptr(), new x.constructor.elem(x)); return err; } if (!((parent.KeyUsage === 0)) && ((parent.KeyUsage & 32) === 0)) { err = (x$1 = new ConstraintViolationError.ptr(), new x$1.constructor.elem(x$1)); return err; } if (parent.PublicKeyAlgorithm === 0) { err = $pkg.ErrUnsupportedAlgorithm; return err; } _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; } err = _r; return err; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Certificate.ptr.prototype.CheckSignatureFrom }; } $f.$ptr = $ptr; $f._r = _r; $f.c = c; $f.err = err; $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, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, _ref$1, _tuple, _tuple$1, algo, c, digest, dsaSig, ecdsaSig, err, err$1, err$2, h, hashType, pub, pub$1, pub$2, 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; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _ref = $f._ref; _ref$1 = $f._ref$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; algo = $f.algo; c = $f.c; 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; signature = $f.signature; signed = $f.signed; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: err = $ifaceNil; c = this; hashType = 0; _ref = algo; if (_ref === 3 || _ref === 7 || _ref === 9) { hashType = 3; } else if (_ref === 4 || _ref === 8 || _ref === 10) { hashType = 5; } else if (_ref === 5 || _ref === 11) { hashType = 6; } else if (_ref === 6 || _ref === 12) { hashType = 7; } else { err = $pkg.ErrUnsupportedAlgorithm; return err; } if (!new crypto.Hash(hashType).Available()) { err = $pkg.ErrUnsupportedAlgorithm; 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$1 = c.PublicKey; /* */ if ($assertType(_ref$1, ptrType$20, true)[1]) { $s = 4; continue; } /* */ if ($assertType(_ref$1, ptrType$22, true)[1]) { $s = 5; continue; } /* */ if ($assertType(_ref$1, ptrType$21, true)[1]) { $s = 6; continue; } /* */ $s = 7; continue; /* if ($assertType(_ref$1, ptrType$20, true)[1]) { */ case 4: pub = _ref$1.$val; err = rsa.VerifyPKCS1v15(pub, hashType, digest, signature); return err; $s = 7; continue; /* } else if ($assertType(_ref$1, ptrType$22, true)[1]) { */ case 5: pub$1 = _ref$1.$val; dsaSig = new dsaSignature.ptr(); _r$3 = asn1.Unmarshal(signature, dsaSig); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } _tuple = _r$3; err$1 = _tuple[1]; /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 9; continue; } /* */ $s = 10; continue; /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 9: err = err$1; return err; /* } */ case 10: if (dsaSig.R.Sign() <= 0 || dsaSig.S.Sign() <= 0) { err = errors.New("x509: DSA signature contained zero or negative values"); return err; } if (!dsa.Verify(pub$1, digest, dsaSig.R, dsaSig.S)) { err = errors.New("x509: DSA verification failure"); return err; } return err; $s = 7; continue; /* } else if ($assertType(_ref$1, ptrType$21, true)[1]) { */ case 6: pub$2 = _ref$1.$val; ecdsaSig = new ecdsaSignature.ptr(); _r$4 = asn1.Unmarshal(signature, ecdsaSig); /* */ $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; err$2 = _tuple$1[1]; /* */ if (!($interfaceIsEqual(err$2, $ifaceNil))) { $s = 12; continue; } /* */ $s = 13; continue; /* if (!($interfaceIsEqual(err$2, $ifaceNil))) { */ case 12: err = err$2; return err; /* } */ case 13: if (ecdsaSig.R.Sign() <= 0 || ecdsaSig.S.Sign() <= 0) { err = errors.New("x509: ECDSA signature contained zero or negative values"); return err; } _r$5 = ecdsa.Verify(pub$2, digest, ecdsaSig.R, ecdsaSig.S); /* */ $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: err = errors.New("x509: ECDSA verification failure"); return err; /* } */ case 15: return err; /* } */ case 7: err = $pkg.ErrUnsupportedAlgorithm; return err; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Certificate.ptr.prototype.CheckSignature }; } $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._ref$1 = _ref$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.algo = algo; $f.c = c; $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.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); }; Certificate.ptr.prototype.CheckCRLSignature = function(crl) { var $ptr, _r, algo, c, crl, err, 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; algo = $f.algo; c = $f.c; crl = $f.crl; err = $f.err; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: err = $ifaceNil; c = this; algo = getSignatureAlgorithmFromOID(crl.SignatureAlgorithm.Algorithm); _r = c.CheckSignature(algo, (x = crl.TBSCertList.Raw, $subslice(new sliceType$3(x.$array), x.$offset, x.$offset + x.$length)), crl.SignatureValue.RightAlign()); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } err = _r; return err; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Certificate.ptr.prototype.CheckCRLSignature }; } $f.$ptr = $ptr; $f._r = _r; $f.algo = algo; $f.c = c; $f.crl = crl; $f.err = err; $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 = $clone(this, UnhandledCriticalExtension); return "x509: unhandled critical extension"; }; UnhandledCriticalExtension.prototype.Error = function() { return this.$val.Error(); }; parsePublicKey = function(algo, keyData) { var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, _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, 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; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; 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; x = $f.x; y = $f.y; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: p = [p]; asn1Data = keyData.PublicKey.RightAlign(); _ref = algo; /* */ if (_ref === 1) { $s = 1; continue; } /* */ if (_ref === 2) { $s = 2; continue; } /* */ if (_ref === 3) { $s = 3; continue; } /* */ $s = 4; continue; /* if (_ref === 1) { */ case 1: p$1 = new rsaPublicKey.ptr(); _r = asn1.Unmarshal(asn1Data, p$1); /* */ $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))) { return [$ifaceNil, err]; } if (p$1.N.Sign() <= 0) { return [$ifaceNil, errors.New("x509: RSA modulus is not a positive number")]; } if (p$1.E <= 0) { return [$ifaceNil, errors.New("x509: RSA public exponent is not a positive number")]; } pub = new rsa.PublicKey.ptr(p$1.N, p$1.E); return [pub, $ifaceNil]; $s = 5; continue; /* } else if (_ref === 2) { */ case 2: p[0] = ptrType$5.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 = 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))) { return [$ifaceNil, err$1]; } paramsData = keyData.Algorithm.Parameters.FullBytes; params = new dsaAlgorithmParameters.ptr(); _r$2 = asn1.Unmarshal(paramsData, params); /* */ $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$1 = _tuple$2[1]; if (!($interfaceIsEqual(err$1, $ifaceNil))) { return [$ifaceNil, err$1]; } if (p[0].Sign() <= 0 || params.P.Sign() <= 0 || params.Q.Sign() <= 0 || params.G.Sign() <= 0) { 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]); return [pub$1, $ifaceNil]; $s = 5; continue; /* } else if (_ref === 3) { */ case 3: paramsData$1 = keyData.Algorithm.Parameters.FullBytes; namedCurveOID = $newDataPointer(asn1.ObjectIdentifier.nil, ptrType$6); _r$3 = asn1.Unmarshal(paramsData$1, namedCurveOID); /* */ $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$2 = _tuple$3[1]; if (!($interfaceIsEqual(err$2, $ifaceNil))) { return [$ifaceNil, err$2]; } _r$4 = namedCurveFromOID(namedCurveOID.$get()); /* */ $s = 10; case 10: 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)) { return [$ifaceNil, errors.New("x509: unsupported elliptic curve")]; } _r$5 = elliptic.Unmarshal(namedCurve, asn1Data); /* */ $s = 11; case 11: 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$5.nil) { return [$ifaceNil, errors.New("x509: failed to unmarshal elliptic curve point")]; } pub$2 = new ecdsa.PublicKey.ptr(namedCurve, x, y); return [pub$2, $ifaceNil]; $s = 5; continue; /* } else { */ case 4: return [$ifaceNil, $ifaceNil]; /* } */ case 5: /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parsePublicKey }; } $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._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.x = x; $f.y = y; $f.$s = $s; $f.$r = $r; return $f; }; parseSANExtension = function(value) { var $ptr, _r, _r$1, _ref, _ref$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; _r = $f._r; _r$1 = $f._r$1; _ref = $f._ref; _ref$1 = $f._ref$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$15.nil; emailAddresses = sliceType$15.nil; ipAddresses = sliceType$16.nil; err = $ifaceNil; seq[0] = $clone(new asn1.RawValue.ptr(), asn1.RawValue); _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; err = _tuple[1]; /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; } /* */ $s = 3; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2: return [dnsNames, emailAddresses, ipAddresses, err]; /* } */ case 3: 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)); return [dnsNames, emailAddresses, ipAddresses, err]; } rest = seq[0].Bytes; /* while (true) { */ case 4: /* if (!(rest.$length > 0)) { break; } */ if(!(rest.$length > 0)) { $s = 5; continue; } v = [v]; v[0] = $clone(new asn1.RawValue.ptr(), asn1.RawValue); _r$1 = asn1.Unmarshal(rest, v[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; rest = _tuple$1[0]; err = _tuple$1[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { return [dnsNames, emailAddresses, ipAddresses, err]; } _ref = v[0].Tag; if (_ref === 1) { emailAddresses = $append(emailAddresses, $bytesToString(v[0].Bytes)); } else if (_ref === 2) { dnsNames = $append(dnsNames, $bytesToString(v[0].Bytes)); } else if (_ref === 7) { _ref$1 = v[0].Bytes.$length; if (_ref$1 === 4 || _ref$1 === 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)); return [dnsNames, emailAddresses, ipAddresses, err]; } } /* } */ $s = 4; continue; case 5: return [dnsNames, emailAddresses, ipAddresses, err]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parseSANExtension }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f._ref$1 = _ref$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.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, _i, _i$1, _i$2, _i$3, _i$4, _i$5, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _ref$5, _ref$6, _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$2, err$3, err$4, err$5, err$6, extKeyUsage, i, i$1, in$1, issuer, keyUsage, keyid, n, ok, out, policies, policy, subject, subtree, u, usage, usageBits, v, x, x$1, x$10, 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; _i = $f._i; _i$1 = $f._i$1; _i$2 = $f._i$2; _i$3 = $f._i$3; _i$4 = $f._i$4; _i$5 = $f._i$5; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; _ref$3 = $f._ref$3; _ref$4 = $f._ref$4; _ref$5 = $f._ref$5; _ref$6 = $f._ref$6; _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$2 = $f.err$2; err$3 = $f.err$3; err$4 = $f.err$4; err$5 = $f.err$5; err$6 = $f.err$6; 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; subject = $f.subject; subtree = $f.subtree; u = $f.u; usage = $f.usage; usageBits = $f.usageBits; v = $f.v; 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; y = $f.y; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: issuer = [issuer]; subject = [subject]; out = new Certificate.ptr(); 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 = in$1.SignatureValue.RightAlign(); out.SignatureAlgorithm = getSignatureAlgorithmFromOID(in$1.TBSCertificate.SignatureAlgorithm.Algorithm); out.PublicKeyAlgorithm = getPublicKeyAlgorithmFromOID(in$1.TBSCertificate.PublicKey.Algorithm.Algorithm); err = $ifaceNil; _r = parsePublicKey(out.PublicKeyAlgorithm, in$1.TBSCertificate.PublicKey); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _tuple = _r; out.PublicKey = _tuple[0]; err = _tuple[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { return [ptrType$1.nil, err]; } if (in$1.TBSCertificate.SerialNumber.Sign() < 0) { return [ptrType$1.nil, errors.New("x509: negative serial number")]; } 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$1 = asn1.Unmarshal(in$1.TBSCertificate.Subject.FullBytes, (subject.$ptr || (subject.$ptr = new ptrType$24(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, subject)))); /* */ $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 = 3; continue; } /* */ $s = 4; continue; /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 3: return [ptrType$1.nil, err$1]; /* } */ case 4: _r$2 = asn1.Unmarshal(in$1.TBSCertificate.Issuer.FullBytes, (issuer.$ptr || (issuer.$ptr = new ptrType$24(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, issuer)))); /* */ $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$2 = _tuple$2[1]; /* */ if (!($interfaceIsEqual(err$2, $ifaceNil))) { $s = 6; continue; } /* */ $s = 7; continue; /* if (!($interfaceIsEqual(err$2, $ifaceNil))) { */ case 6: return [ptrType$1.nil, err$2]; /* } */ case 7: out.Issuer.FillFromRDNSequence((issuer.$ptr || (issuer.$ptr = new ptrType$24(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, issuer)))); out.Subject.FillFromRDNSequence((subject.$ptr || (subject.$ptr = new ptrType$24(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, subject)))); $copy(out.NotBefore, in$1.TBSCertificate.Validity.NotBefore, time.Time); $copy(out.NotAfter, in$1.TBSCertificate.Validity.NotAfter, time.Time); _ref = in$1.TBSCertificate.Extensions; _i = 0; /* while (true) { */ case 8: /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 9; 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") : _ref.$array[_ref.$offset + _i]), pkix.Extension); out.Extensions = $append(out.Extensions, e); /* */ if ((e.Id.$length === 4) && ((x$3 = e.Id, (0 >= x$3.$length ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + 0])) === 2) && ((x$4 = e.Id, (1 >= x$4.$length ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + 1])) === 5) && ((x$5 = e.Id, (2 >= x$5.$length ? $throwRuntimeError("index out of range") : x$5.$array[x$5.$offset + 2])) === 29)) { $s = 10; continue; } /* */ if (e.Id.Equal($subslice(new asn1.ObjectIdentifier(oidExtensionAuthorityInfoAccess.$array), oidExtensionAuthorityInfoAccess.$offset, oidExtensionAuthorityInfoAccess.$offset + oidExtensionAuthorityInfoAccess.$length))) { $s = 11; continue; } /* */ $s = 12; continue; /* if ((e.Id.$length === 4) && ((x$3 = e.Id, (0 >= x$3.$length ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + 0])) === 2) && ((x$4 = e.Id, (1 >= x$4.$length ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + 1])) === 5) && ((x$5 = e.Id, (2 >= x$5.$length ? $throwRuntimeError("index out of range") : x$5.$array[x$5.$offset + 2])) === 29)) { */ case 10: _ref$1 = (x$6 = e.Id, (3 >= x$6.$length ? $throwRuntimeError("index out of range") : x$6.$array[x$6.$offset + 3])); /* */ if (_ref$1 === 15) { $s = 13; continue; } /* */ if (_ref$1 === 19) { $s = 14; continue; } /* */ if (_ref$1 === 17) { $s = 15; continue; } /* */ if (_ref$1 === 30) { $s = 16; continue; } /* */ if (_ref$1 === 31) { $s = 17; continue; } /* */ if (_ref$1 === 35) { $s = 18; continue; } /* */ if (_ref$1 === 37) { $s = 19; continue; } /* */ if (_ref$1 === 14) { $s = 20; continue; } /* */ if (_ref$1 === 32) { $s = 21; continue; } /* */ $s = 22; continue; /* if (_ref$1 === 15) { */ case 13: usageBits[0] = $clone(new asn1.BitString.ptr(), asn1.BitString); _r$3 = asn1.Unmarshal(e.Value, usageBits[0]); /* */ $s = 23; case 23: 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)) { usage = 0; i = 0; while (true) { if (!(i < 9)) { break; } if (!((usageBits[0].At(i) === 0))) { usage = usage | (((y = (i >>> 0), y < 32 ? (1 << y) : 0) >> 0)); } i = i + (1) >> 0; } out.KeyUsage = (usage >> 0); _i++; /* continue; */ $s = 8; continue; } $s = 22; continue; /* } else if (_ref$1 === 19) { */ case 14: constraints$1[0] = $clone(new basicConstraints.ptr(), basicConstraints); _r$4 = asn1.Unmarshal(e.Value, constraints$1[0]); /* */ $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; err$4 = _tuple$4[1]; if ($interfaceIsEqual(err$4, $ifaceNil)) { out.BasicConstraintsValid = true; out.IsCA = constraints$1[0].IsCA; out.MaxPathLen = constraints$1[0].MaxPathLen; out.MaxPathLenZero = out.MaxPathLen === 0; _i++; /* continue; */ $s = 8; continue; } $s = 22; continue; /* } else if (_ref$1 === 17) { */ case 15: _r$5 = parseSANExtension(e.Value); /* */ $s = 25; case 25: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } _tuple$5 = _r$5; out.DNSNames = _tuple$5[0]; out.EmailAddresses = _tuple$5[1]; out.IPAddresses = _tuple$5[2]; err = _tuple$5[3]; if (!($interfaceIsEqual(err, $ifaceNil))) { return [ptrType$1.nil, err]; } if (out.DNSNames.$length > 0 || out.EmailAddresses.$length > 0 || out.IPAddresses.$length > 0) { _i++; /* continue; */ $s = 8; continue; } $s = 22; continue; /* } else if (_ref$1 === 30) { */ case 16: constraints[0] = $clone(new nameConstraints.ptr(), nameConstraints); _r$6 = asn1.Unmarshal(e.Value, constraints[0]); /* */ $s = 26; case 26: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } _tuple$6 = _r$6; err$5 = _tuple$6[1]; if (!($interfaceIsEqual(err$5, $ifaceNil))) { return [ptrType$1.nil, err$5]; } if (constraints[0].Excluded.$length > 0 && e.Critical) { return [out, (x$7 = new UnhandledCriticalExtension.ptr(), new x$7.constructor.elem(x$7))]; } _ref$2 = constraints[0].Permitted; _i$1 = 0; /* while (true) { */ case 27: /* if (!(_i$1 < _ref$2.$length)) { break; } */ if(!(_i$1 < _ref$2.$length)) { $s = 28; continue; } subtree = $clone(((_i$1 < 0 || _i$1 >= _ref$2.$length) ? $throwRuntimeError("index out of range") : _ref$2.$array[_ref$2.$offset + _i$1]), generalSubtree); if (subtree.Name.length === 0) { if (e.Critical) { return [out, (x$8 = new UnhandledCriticalExtension.ptr(), new x$8.constructor.elem(x$8))]; } _i$1++; /* continue; */ $s = 27; continue; } out.PermittedDNSDomains = $append(out.PermittedDNSDomains, subtree.Name); _i$1++; /* } */ $s = 27; continue; case 28: _i++; /* continue; */ $s = 8; continue; $s = 22; continue; /* } else if (_ref$1 === 31) { */ case 17: cdp[0] = sliceType$17.nil; _r$7 = asn1.Unmarshal(e.Value, (cdp.$ptr || (cdp.$ptr = new ptrType$25(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, cdp)))); /* */ $s = 29; case 29: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } _tuple$7 = _r$7; err$6 = _tuple$7[1]; if (!($interfaceIsEqual(err$6, $ifaceNil))) { return [ptrType$1.nil, err$6]; } _ref$3 = cdp[0]; _i$2 = 0; /* while (true) { */ case 30: /* if (!(_i$2 < _ref$3.$length)) { break; } */ if(!(_i$2 < _ref$3.$length)) { $s = 31; continue; } n = [n]; dp = $clone(((_i$2 < 0 || _i$2 >= _ref$3.$length) ? $throwRuntimeError("index out of range") : _ref$3.$array[_ref$3.$offset + _i$2]), distributionPoint); n[0] = $clone(new asn1.RawValue.ptr(), asn1.RawValue); _r$8 = asn1.Unmarshal(dp.DistributionPoint.FullName.Bytes, n[0]); /* */ $s = 32; case 32: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } _tuple$8 = _r$8; err$6 = _tuple$8[1]; if (!($interfaceIsEqual(err$6, $ifaceNil))) { return [ptrType$1.nil, err$6]; } if (n[0].Tag === 6) { out.CRLDistributionPoints = $append(out.CRLDistributionPoints, $bytesToString(n[0].Bytes)); } _i$2++; /* } */ $s = 30; continue; case 31: _i++; /* continue; */ $s = 8; continue; $s = 22; continue; /* } else if (_ref$1 === 35) { */ case 18: a[0] = $clone(new authKeyId.ptr(), authKeyId); _r$9 = asn1.Unmarshal(e.Value, a[0]); /* */ $s = 33; case 33: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } _tuple$9 = _r$9; err = _tuple$9[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { return [ptrType$1.nil, err]; } out.AuthorityKeyId = a[0].Id; _i++; /* continue; */ $s = 8; continue; $s = 22; continue; /* } else if (_ref$1 === 37) { */ case 19: keyUsage[0] = sliceType$18.nil; _r$10 = asn1.Unmarshal(e.Value, (keyUsage.$ptr || (keyUsage.$ptr = new ptrType$26(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, keyUsage)))); /* */ $s = 34; case 34: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } _tuple$10 = _r$10; err = _tuple$10[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { return [ptrType$1.nil, err]; } _ref$4 = keyUsage[0]; _i$3 = 0; while (true) { if (!(_i$3 < _ref$4.$length)) { break; } u = ((_i$3 < 0 || _i$3 >= _ref$4.$length) ? $throwRuntimeError("index out of range") : _ref$4.$array[_ref$4.$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++; } _i++; /* continue; */ $s = 8; continue; $s = 22; continue; /* } else if (_ref$1 === 14) { */ case 20: keyid[0] = sliceType$3.nil; _r$11 = asn1.Unmarshal(e.Value, (keyid.$ptr || (keyid.$ptr = new ptrType$27(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, keyid)))); /* */ $s = 35; case 35: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } _tuple$12 = _r$11; err = _tuple$12[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { return [ptrType$1.nil, err]; } out.SubjectKeyId = keyid[0]; _i++; /* continue; */ $s = 8; continue; $s = 22; continue; /* } else if (_ref$1 === 32) { */ case 21: policies[0] = sliceType$19.nil; _r$12 = asn1.Unmarshal(e.Value, (policies.$ptr || (policies.$ptr = new ptrType$28(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, policies)))); /* */ $s = 36; case 36: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } _tuple$13 = _r$12; err = _tuple$13[1]; /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 37; continue; } /* */ $s = 38; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 37: return [ptrType$1.nil, err]; /* } */ case 38: out.PolicyIdentifiers = $makeSlice(sliceType$18, policies[0].$length); _ref$5 = policies[0]; _i$4 = 0; while (true) { if (!(_i$4 < _ref$5.$length)) { break; } i$1 = _i$4; policy = $clone(((_i$4 < 0 || _i$4 >= _ref$5.$length) ? $throwRuntimeError("index out of range") : _ref$5.$array[_ref$5.$offset + _i$4]), policyInformation); (x$9 = out.PolicyIdentifiers, ((i$1 < 0 || i$1 >= x$9.$length) ? $throwRuntimeError("index out of range") : x$9.$array[x$9.$offset + i$1] = policy.Policy)); _i$4++; } /* } */ case 22: $s = 12; continue; /* } else if (e.Id.Equal($subslice(new asn1.ObjectIdentifier(oidExtensionAuthorityInfoAccess.$array), oidExtensionAuthorityInfoAccess.$offset, oidExtensionAuthorityInfoAccess.$offset + oidExtensionAuthorityInfoAccess.$length))) { */ case 11: aia[0] = sliceType$20.nil; _r$13 = asn1.Unmarshal(e.Value, (aia.$ptr || (aia.$ptr = new ptrType$29(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, aia)))); /* */ $s = 39; case 39: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } _tuple$14 = _r$13; err = _tuple$14[1]; /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 40; continue; } /* */ $s = 41; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 40: return [ptrType$1.nil, err]; /* } */ case 41: _ref$6 = aia[0]; _i$5 = 0; while (true) { if (!(_i$5 < _ref$6.$length)) { break; } v = $clone(((_i$5 < 0 || _i$5 >= _ref$6.$length) ? $throwRuntimeError("index out of range") : _ref$6.$array[_ref$6.$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++; } /* } */ case 12: if (e.Critical) { return [out, (x$10 = new UnhandledCriticalExtension.ptr(), new x$10.constructor.elem(x$10))]; } _i++; /* } */ $s = 8; continue; case 9: return [out, $ifaceNil]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parseCertificate }; } $f.$ptr = $ptr; $f._i = _i; $f._i$1 = _i$1; $f._i$2 = _i$2; $f._i$3 = _i$3; $f._i$4 = _i$4; $f._i$5 = _i$5; $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f._ref$3 = _ref$3; $f._ref$4 = _ref$4; $f._ref$5 = _ref$5; $f._ref$6 = _ref$6; $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$2 = err$2; $f.err$3 = err$3; $f.err$4 = err$4; $f.err$5 = err$5; $f.err$6 = err$6; $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.subject = subject; $f.subtree = subtree; $f.u = u; $f.usage = usage; $f.usageBits = usageBits; $f.v = v; $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.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] = $clone(new certificate.ptr(), certificate); _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))) { return [ptrType$1.nil, err]; } if (rest.$length > 0) { 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; } return _r$1; /* */ $s = -1; case -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; Certificate.ptr.prototype.CreateCRL = function(rand, priv, revokedCerts, now, expiry) { var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, _tuple$3, c, crlBytes, digest, err, expiry, h, now, ok, priv, rand, revokedCerts, rsaPriv, signature, tbsCertList, tbsCertListContents, 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; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; c = $f.c; crlBytes = $f.crlBytes; digest = $f.digest; err = $f.err; expiry = $f.expiry; h = $f.h; now = $f.now; ok = $f.ok; priv = $f.priv; rand = $f.rand; revokedCerts = $f.revokedCerts; rsaPriv = $f.rsaPriv; signature = $f.signature; tbsCertList = $f.tbsCertList; tbsCertListContents = $f.tbsCertListContents; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: crlBytes = sliceType$3.nil; err = $ifaceNil; c = this; expiry = $clone(expiry, time.Time); now = $clone(now, time.Time); _tuple = $assertType(priv, ptrType$4, true); rsaPriv = _tuple[0]; ok = _tuple[1]; if (!ok) { _tmp = sliceType$3.nil; _tmp$1 = errors.New("x509: non-RSA private keys not supported"); crlBytes = _tmp; err = _tmp$1; return [crlBytes, err]; } tbsCertList = new pkix.TBSCertificateList.ptr(asn1.RawContent.nil, 2, new pkix.AlgorithmIdentifier.ptr(oidSignatureSHA1WithRSA, new asn1.RawValue.ptr()), c.Subject.ToRDNSequence(), $clone(now.UTC(), time.Time), $clone(expiry.UTC(), time.Time), revokedCerts, sliceType$23.nil); _r = asn1.Marshal(new tbsCertList.constructor.elem(tbsCertList)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _tuple$1 = _r; tbsCertListContents = _tuple$1[0]; err = _tuple$1[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { return [crlBytes, err]; } h = sha1.New(); _r$1 = h.Write(tbsCertListContents); /* */ $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; _r$3 = rsa.SignPKCS1v15(rand, rsaPriv, 3, digest); /* */ $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; signature = _tuple$2[0]; err = _tuple$2[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { return [crlBytes, err]; } _r$4 = asn1.Marshal((x = new pkix.CertificateList.ptr($clone(tbsCertList, pkix.TBSCertificateList), new pkix.AlgorithmIdentifier.ptr(oidSignatureSHA1WithRSA, new asn1.RawValue.ptr()), new asn1.BitString.ptr(signature, signature.$length * 8 >> 0)), new x.constructor.elem(x))); /* */ $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; crlBytes = _tuple$3[0]; err = _tuple$3[1]; return [crlBytes, err]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Certificate.ptr.prototype.CreateCRL }; } $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._tuple$3 = _tuple$3; $f.c = c; $f.crlBytes = crlBytes; $f.digest = digest; $f.err = err; $f.expiry = expiry; $f.h = h; $f.now = now; $f.ok = ok; $f.priv = priv; $f.rand = rand; $f.revokedCerts = revokedCerts; $f.rsaPriv = rsaPriv; $f.signature = signature; $f.tbsCertList = tbsCertList; $f.tbsCertListContents = tbsCertListContents; $f.x = x; $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: "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$7], 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)}]; ptrType$1.methods = [{prop: "systemVerify", name: "systemVerify", pkg: "crypto/x509", typ: $funcType([ptrType$14], [sliceType$12, $error], false)}, {prop: "isValid", name: "isValid", pkg: "crypto/x509", typ: $funcType([$Int, sliceType$6, ptrType$14], [$error], false)}, {prop: "Verify", name: "Verify", pkg: "", typ: $funcType([VerifyOptions], [sliceType$12, $error], false)}, {prop: "buildChains", name: "buildChains", pkg: "crypto/x509", typ: $funcType([mapType$1, sliceType$6, ptrType$14], [sliceType$12, $error], false)}, {prop: "VerifyHostname", name: "VerifyHostname", pkg: "", typ: $funcType([$String], [$error], false)}, {prop: "Equal", name: "Equal", pkg: "", typ: $funcType([ptrType$1], [$Bool], false)}, {prop: "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$31], [$error], false)}, {prop: "CreateCRL", name: "CreateCRL", pkg: "", typ: $funcType([io.Reader, $emptyInterface, sliceType$25, time.Time, time.Time], [sliceType$3, $error], 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([{prop: "bySubjectKeyId", name: "bySubjectKeyId", pkg: "crypto/x509", typ: mapType, tag: ""}, {prop: "byName", name: "byName", pkg: "crypto/x509", typ: mapType, tag: ""}, {prop: "certs", name: "certs", pkg: "crypto/x509", typ: sliceType$6, tag: ""}]); pkcs1PrivateKey.init([{prop: "Version", name: "Version", pkg: "", typ: $Int, tag: ""}, {prop: "N", name: "N", pkg: "", typ: ptrType$5, tag: ""}, {prop: "E", name: "E", pkg: "", typ: $Int, tag: ""}, {prop: "D", name: "D", pkg: "", typ: ptrType$5, tag: ""}, {prop: "P", name: "P", pkg: "", typ: ptrType$5, tag: ""}, {prop: "Q", name: "Q", pkg: "", typ: ptrType$5, tag: ""}, {prop: "Dp", name: "Dp", pkg: "", typ: ptrType$5, tag: "asn1:\"optional\""}, {prop: "Dq", name: "Dq", pkg: "", typ: ptrType$5, tag: "asn1:\"optional\""}, {prop: "Qinv", name: "Qinv", pkg: "", typ: ptrType$5, tag: "asn1:\"optional\""}, {prop: "AdditionalPrimes", name: "AdditionalPrimes", pkg: "", typ: sliceType$9, tag: "asn1:\"optional,omitempty\""}]); pkcs1AdditionalRSAPrime.init([{prop: "Prime", name: "Prime", pkg: "", typ: ptrType$5, tag: ""}, {prop: "Exp", name: "Exp", pkg: "", typ: ptrType$5, tag: ""}, {prop: "Coeff", name: "Coeff", pkg: "", typ: ptrType$5, tag: ""}]); rsaPublicKey.init([{prop: "N", name: "N", pkg: "", typ: ptrType$5, tag: ""}, {prop: "E", name: "E", pkg: "", typ: $Int, tag: ""}]); pkcs8.init([{prop: "Version", name: "Version", pkg: "", typ: $Int, tag: ""}, {prop: "Algo", name: "Algo", pkg: "", typ: pkix.AlgorithmIdentifier, tag: ""}, {prop: "PrivateKey", name: "PrivateKey", pkg: "", typ: sliceType$3, tag: ""}]); ecPrivateKey.init([{prop: "Version", name: "Version", pkg: "", typ: $Int, tag: ""}, {prop: "PrivateKey", name: "PrivateKey", pkg: "", typ: sliceType$3, tag: ""}, {prop: "NamedCurveOID", name: "NamedCurveOID", pkg: "", typ: asn1.ObjectIdentifier, tag: "asn1:\"optional,explicit,tag:0\""}, {prop: "PublicKey", name: "PublicKey", pkg: "", typ: asn1.BitString, tag: "asn1:\"optional,explicit,tag:1\""}]); CertificateInvalidError.init([{prop: "Cert", name: "Cert", pkg: "", typ: ptrType$1, tag: ""}, {prop: "Reason", name: "Reason", pkg: "", typ: InvalidReason, tag: ""}]); HostnameError.init([{prop: "Certificate", name: "Certificate", pkg: "", typ: ptrType$1, tag: ""}, {prop: "Host", name: "Host", pkg: "", typ: $String, tag: ""}]); UnknownAuthorityError.init([{prop: "cert", name: "cert", pkg: "crypto/x509", typ: ptrType$1, tag: ""}, {prop: "hintErr", name: "hintErr", pkg: "crypto/x509", typ: $error, tag: ""}, {prop: "hintCert", name: "hintCert", pkg: "crypto/x509", typ: ptrType$1, tag: ""}]); SystemRootsError.init([]); VerifyOptions.init([{prop: "DNSName", name: "DNSName", pkg: "", typ: $String, tag: ""}, {prop: "Intermediates", name: "Intermediates", pkg: "", typ: ptrType, tag: ""}, {prop: "Roots", name: "Roots", pkg: "", typ: ptrType, tag: ""}, {prop: "CurrentTime", name: "CurrentTime", pkg: "", typ: time.Time, tag: ""}, {prop: "KeyUsages", name: "KeyUsages", pkg: "", typ: sliceType$14, tag: ""}]); certificate.init([{prop: "Raw", name: "Raw", pkg: "", typ: asn1.RawContent, tag: ""}, {prop: "TBSCertificate", name: "TBSCertificate", pkg: "", typ: tbsCertificate, tag: ""}, {prop: "SignatureAlgorithm", name: "SignatureAlgorithm", pkg: "", typ: pkix.AlgorithmIdentifier, tag: ""}, {prop: "SignatureValue", name: "SignatureValue", pkg: "", typ: asn1.BitString, tag: ""}]); tbsCertificate.init([{prop: "Raw", name: "Raw", pkg: "", typ: asn1.RawContent, tag: ""}, {prop: "Version", name: "Version", pkg: "", typ: $Int, tag: "asn1:\"optional,explicit,default:1,tag:0\""}, {prop: "SerialNumber", name: "SerialNumber", pkg: "", typ: ptrType$5, tag: ""}, {prop: "SignatureAlgorithm", name: "SignatureAlgorithm", pkg: "", typ: pkix.AlgorithmIdentifier, tag: ""}, {prop: "Issuer", name: "Issuer", pkg: "", typ: asn1.RawValue, tag: ""}, {prop: "Validity", name: "Validity", pkg: "", typ: validity, tag: ""}, {prop: "Subject", name: "Subject", pkg: "", typ: asn1.RawValue, tag: ""}, {prop: "PublicKey", name: "PublicKey", pkg: "", typ: publicKeyInfo, tag: ""}, {prop: "UniqueId", name: "UniqueId", pkg: "", typ: asn1.BitString, tag: "asn1:\"optional,tag:1\""}, {prop: "SubjectUniqueId", name: "SubjectUniqueId", pkg: "", typ: asn1.BitString, tag: "asn1:\"optional,tag:2\""}, {prop: "Extensions", name: "Extensions", pkg: "", typ: sliceType$23, tag: "asn1:\"optional,explicit,tag:3\""}]); dsaAlgorithmParameters.init([{prop: "P", name: "P", pkg: "", typ: ptrType$5, tag: ""}, {prop: "Q", name: "Q", pkg: "", typ: ptrType$5, tag: ""}, {prop: "G", name: "G", pkg: "", typ: ptrType$5, tag: ""}]); dsaSignature.init([{prop: "R", name: "R", pkg: "", typ: ptrType$5, tag: ""}, {prop: "S", name: "S", pkg: "", typ: ptrType$5, tag: ""}]); ecdsaSignature.init([{prop: "R", name: "R", pkg: "", typ: ptrType$5, tag: ""}, {prop: "S", name: "S", pkg: "", typ: ptrType$5, tag: ""}]); validity.init([{prop: "NotBefore", name: "NotBefore", pkg: "", typ: time.Time, tag: ""}, {prop: "NotAfter", name: "NotAfter", pkg: "", typ: time.Time, tag: ""}]); publicKeyInfo.init([{prop: "Raw", name: "Raw", pkg: "", typ: asn1.RawContent, tag: ""}, {prop: "Algorithm", name: "Algorithm", pkg: "", typ: pkix.AlgorithmIdentifier, tag: ""}, {prop: "PublicKey", name: "PublicKey", pkg: "", typ: asn1.BitString, tag: ""}]); authKeyId.init([{prop: "Id", name: "Id", pkg: "", typ: sliceType$3, tag: "asn1:\"optional,tag:0\""}]); Certificate.init([{prop: "Raw", name: "Raw", pkg: "", typ: sliceType$3, tag: ""}, {prop: "RawTBSCertificate", name: "RawTBSCertificate", pkg: "", typ: sliceType$3, tag: ""}, {prop: "RawSubjectPublicKeyInfo", name: "RawSubjectPublicKeyInfo", pkg: "", typ: sliceType$3, tag: ""}, {prop: "RawSubject", name: "RawSubject", pkg: "", typ: sliceType$3, tag: ""}, {prop: "RawIssuer", name: "RawIssuer", pkg: "", typ: sliceType$3, tag: ""}, {prop: "Signature", name: "Signature", pkg: "", typ: sliceType$3, tag: ""}, {prop: "SignatureAlgorithm", name: "SignatureAlgorithm", pkg: "", typ: SignatureAlgorithm, tag: ""}, {prop: "PublicKeyAlgorithm", name: "PublicKeyAlgorithm", pkg: "", typ: PublicKeyAlgorithm, tag: ""}, {prop: "PublicKey", name: "PublicKey", pkg: "", typ: $emptyInterface, tag: ""}, {prop: "Version", name: "Version", pkg: "", typ: $Int, tag: ""}, {prop: "SerialNumber", name: "SerialNumber", pkg: "", typ: ptrType$5, tag: ""}, {prop: "Issuer", name: "Issuer", pkg: "", typ: pkix.Name, tag: ""}, {prop: "Subject", name: "Subject", pkg: "", typ: pkix.Name, tag: ""}, {prop: "NotBefore", name: "NotBefore", pkg: "", typ: time.Time, tag: ""}, {prop: "NotAfter", name: "NotAfter", pkg: "", typ: time.Time, tag: ""}, {prop: "KeyUsage", name: "KeyUsage", pkg: "", typ: KeyUsage, tag: ""}, {prop: "Extensions", name: "Extensions", pkg: "", typ: sliceType$23, tag: ""}, {prop: "ExtraExtensions", name: "ExtraExtensions", pkg: "", typ: sliceType$23, tag: ""}, {prop: "ExtKeyUsage", name: "ExtKeyUsage", pkg: "", typ: sliceType$14, tag: ""}, {prop: "UnknownExtKeyUsage", name: "UnknownExtKeyUsage", pkg: "", typ: sliceType$18, tag: ""}, {prop: "BasicConstraintsValid", name: "BasicConstraintsValid", pkg: "", typ: $Bool, tag: ""}, {prop: "IsCA", name: "IsCA", pkg: "", typ: $Bool, tag: ""}, {prop: "MaxPathLen", name: "MaxPathLen", pkg: "", typ: $Int, tag: ""}, {prop: "MaxPathLenZero", name: "MaxPathLenZero", pkg: "", typ: $Bool, tag: ""}, {prop: "SubjectKeyId", name: "SubjectKeyId", pkg: "", typ: sliceType$3, tag: ""}, {prop: "AuthorityKeyId", name: "AuthorityKeyId", pkg: "", typ: sliceType$3, tag: ""}, {prop: "OCSPServer", name: "OCSPServer", pkg: "", typ: sliceType$15, tag: ""}, {prop: "IssuingCertificateURL", name: "IssuingCertificateURL", pkg: "", typ: sliceType$15, tag: ""}, {prop: "DNSNames", name: "DNSNames", pkg: "", typ: sliceType$15, tag: ""}, {prop: "EmailAddresses", name: "EmailAddresses", pkg: "", typ: sliceType$15, tag: ""}, {prop: "IPAddresses", name: "IPAddresses", pkg: "", typ: sliceType$16, tag: ""}, {prop: "PermittedDNSDomainsCritical", name: "PermittedDNSDomainsCritical", pkg: "", typ: $Bool, tag: ""}, {prop: "PermittedDNSDomains", name: "PermittedDNSDomains", pkg: "", typ: sliceType$15, tag: ""}, {prop: "CRLDistributionPoints", name: "CRLDistributionPoints", pkg: "", typ: sliceType$15, tag: ""}, {prop: "PolicyIdentifiers", name: "PolicyIdentifiers", pkg: "", typ: sliceType$18, tag: ""}]); ConstraintViolationError.init([]); UnhandledCriticalExtension.init([]); basicConstraints.init([{prop: "IsCA", name: "IsCA", pkg: "", typ: $Bool, tag: "asn1:\"optional\""}, {prop: "MaxPathLen", name: "MaxPathLen", pkg: "", typ: $Int, tag: "asn1:\"optional,default:-1\""}]); policyInformation.init([{prop: "Policy", name: "Policy", pkg: "", typ: asn1.ObjectIdentifier, tag: ""}]); nameConstraints.init([{prop: "Permitted", name: "Permitted", pkg: "", typ: sliceType$24, tag: "asn1:\"optional,tag:0\""}, {prop: "Excluded", name: "Excluded", pkg: "", typ: sliceType$24, tag: "asn1:\"optional,tag:1\""}]); generalSubtree.init([{prop: "Name", name: "Name", pkg: "", typ: $String, tag: "asn1:\"tag:2,optional,ia5\""}]); authorityInfoAccess.init([{prop: "Method", name: "Method", pkg: "", typ: asn1.ObjectIdentifier, tag: ""}, {prop: "Location", name: "Location", pkg: "", typ: asn1.RawValue, tag: ""}]); distributionPoint.init([{prop: "DistributionPoint", name: "DistributionPoint", pkg: "", typ: distributionPointName, tag: "asn1:\"optional,tag:0\""}, {prop: "Reason", name: "Reason", pkg: "", typ: asn1.BitString, tag: "asn1:\"optional,tag:1\""}, {prop: "CRLIssuer", name: "CRLIssuer", pkg: "", typ: asn1.RawValue, tag: "asn1:\"optional,tag:2\""}]); distributionPointName.init([{prop: "FullName", name: "FullName", pkg: "", typ: asn1.RawValue, tag: "asn1:\"optional,tag:0\""}, {prop: "RelativeName", name: "RelativeName", pkg: "", 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 = testing.$init(); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = time.$init(); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = utf8.$init(); /* */ $s = 31; case 31: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } once = new sync.Once.ptr(); systemRoots = ptrType.nil; $pkg.IncorrectPasswordError = errors.New("x509: decryption password incorrect"); 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]); oidSignatureDSAWithSHA1 = new asn1.ObjectIdentifier([1, 2, 840, 10040, 4, 3]); oidSignatureDSAWithSHA256 = new asn1.ObjectIdentifier([2, 16, 840, 1, 101, 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]); 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(4, oidSignatureSHA256WithRSA, 1, 5), new structType.ptr(5, oidSignatureSHA384WithRSA, 1, 6), new structType.ptr(6, oidSignatureSHA512WithRSA, 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]); 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["crypto/tls"] = (function() { var $pkg = {}, $init, bytes, list, crypto, aes, cipher, des, ecdsa, elliptic, hmac, md5, rand, rc4, rsa, sha1, sha256, subtle, x509, asn1, pem, errors, fmt, hash, io, ioutil, big, net, strconv, strings, sync, time, alert, keyAgreement, cipherSuite, macFunction, fixedNonceAEAD, ssl30MAC, tls10MAC, recordType, CurveID, signatureAndHash, ConnectionState, ClientAuthType, ClientSessionState, ClientSessionCache, ClientHelloInfo, Config, Certificate, ecdsaSignature, Conn, halfConn, cbcMode, block, clientHandshakeState, clientHelloMsg, serverHelloMsg, certificateMsg, serverKeyExchangeMsg, certificateStatusMsg, serverHelloDoneMsg, clientKeyExchangeMsg, finishedMsg, nextProtoMsg, certificateRequestMsg, certificateVerifyMsg, newSessionTicketMsg, serverHandshakeState, rsaKeyAgreement, ecdheKeyAgreement, finishedHash, sessionState, listener, sliceType, ptrType, sliceType$1, sliceType$2, sliceType$3, sliceType$4, ptrType$1, ptrType$2, ptrType$3, ptrType$7, sliceType$5, arrayType, ptrType$8, sliceType$6, sliceType$7, ptrType$9, ptrType$10, ptrType$11, ptrType$12, ptrType$13, sliceType$8, ptrType$14, sliceType$9, ptrType$15, ptrType$16, ptrType$17, ptrType$18, ptrType$19, ptrType$20, ptrType$21, ptrType$22, ptrType$23, ptrType$24, ptrType$25, ptrType$26, ptrType$27, ptrType$28, arrayType$1, arrayType$2, arrayType$3, sliceType$10, arrayType$4, arrayType$5, ptrType$29, funcType, funcType$1, funcType$2, funcType$3, ptrType$30, sliceType$11, arrayType$6, ptrType$31, funcType$4, mapType, funcType$5, arrayType$7, ptrType$33, ptrType$34, ptrType$35, ptrType$36, ptrType$37, alertText, cipherSuites, ssl30Pad1, ssl30Pad2, supportedSKXSignatureAlgorithms, supportedClientCertSignatureAlgorithms, defaultCurvePreferences, emptyConfig, emptyConfig_ptr, once, varDefaultCipherSuites, errClientKeyExchange, errServerKeyExchange, masterSecretLabel, keyExpansionLabel, clientFinishedLabel, serverFinishedLabel, ssl3ClientFinishedMagic, ssl3ServerFinishedMagic, _map, _key, cipherRC4, cipher3DES, cipherAES, macSHA1, aeadAESGCM, rsaKA, ecdheECDSAKA, ecdheRSAKA, mutualCipherSuite, defaultConfig, defaultCipherSuites, initDefaultCipherSuites, unexpectedMessageError, removePadding, removePaddingSSL30, roundUp, padToBlockSize, clientSessionCacheKey, mutualProtocol, sha1Hash, md5SHA1Hash, sha256Hash, hashForServerKeyExchange, pickTLS12HashForSignature, curveForCurveID, splitPreMasterSecret, pHash, prf10, prf12, prf30, prfForVersion, masterFromPreMasterSecret, keysFromMasterSecret, newFinishedHash, finishedSum30, Server, NewListener, 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"]; md5 = $packages["crypto/md5"]; rand = $packages["crypto/rand"]; rc4 = $packages["crypto/rc4"]; rsa = $packages["crypto/rsa"]; sha1 = $packages["crypto/sha1"]; sha256 = $packages["crypto/sha256"]; 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"]; time = $packages["time"]; alert = $pkg.alert = $newType(1, $kindUint8, "tls.alert", "alert", "crypto/tls", null); keyAgreement = $pkg.keyAgreement = $newType(8, $kindInterface, "tls.keyAgreement", "keyAgreement", "crypto/tls", null); cipherSuite = $pkg.cipherSuite = $newType(0, $kindStruct, "tls.cipherSuite", "cipherSuite", "crypto/tls", 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", "macFunction", "crypto/tls", null); fixedNonceAEAD = $pkg.fixedNonceAEAD = $newType(0, $kindStruct, "tls.fixedNonceAEAD", "fixedNonceAEAD", "crypto/tls", function(sealNonce_, openNonce_, aead_) { this.$val = this; if (arguments.length === 0) { this.sealNonce = sliceType$4.nil; this.openNonce = sliceType$4.nil; this.aead = $ifaceNil; return; } this.sealNonce = sealNonce_; this.openNonce = openNonce_; this.aead = aead_; }); ssl30MAC = $pkg.ssl30MAC = $newType(0, $kindStruct, "tls.ssl30MAC", "ssl30MAC", "crypto/tls", function(h_, key_) { this.$val = this; if (arguments.length === 0) { this.h = $ifaceNil; this.key = sliceType$4.nil; return; } this.h = h_; this.key = key_; }); tls10MAC = $pkg.tls10MAC = $newType(0, $kindStruct, "tls.tls10MAC", "tls10MAC", "crypto/tls", function(h_) { this.$val = this; if (arguments.length === 0) { this.h = $ifaceNil; return; } this.h = h_; }); recordType = $pkg.recordType = $newType(1, $kindUint8, "tls.recordType", "recordType", "crypto/tls", null); CurveID = $pkg.CurveID = $newType(2, $kindUint16, "tls.CurveID", "CurveID", "crypto/tls", null); signatureAndHash = $pkg.signatureAndHash = $newType(0, $kindStruct, "tls.signatureAndHash", "signatureAndHash", "crypto/tls", 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", "ConnectionState", "crypto/tls", function(Version_, HandshakeComplete_, DidResume_, CipherSuite_, NegotiatedProtocol_, NegotiatedProtocolIsMutual_, ServerName_, PeerCertificates_, VerifiedChains_, 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$8.nil; this.VerifiedChains = sliceType$10.nil; this.TLSUnique = sliceType$4.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.TLSUnique = TLSUnique_; }); ClientAuthType = $pkg.ClientAuthType = $newType(4, $kindInt, "tls.ClientAuthType", "ClientAuthType", "crypto/tls", null); ClientSessionState = $pkg.ClientSessionState = $newType(0, $kindStruct, "tls.ClientSessionState", "ClientSessionState", "crypto/tls", function(sessionTicket_, vers_, cipherSuite_, masterSecret_, serverCertificates_) { this.$val = this; if (arguments.length === 0) { this.sessionTicket = sliceType$4.nil; this.vers = 0; this.cipherSuite = 0; this.masterSecret = sliceType$4.nil; this.serverCertificates = sliceType$8.nil; return; } this.sessionTicket = sessionTicket_; this.vers = vers_; this.cipherSuite = cipherSuite_; this.masterSecret = masterSecret_; this.serverCertificates = serverCertificates_; }); ClientSessionCache = $pkg.ClientSessionCache = $newType(8, $kindInterface, "tls.ClientSessionCache", "ClientSessionCache", "crypto/tls", null); ClientHelloInfo = $pkg.ClientHelloInfo = $newType(0, $kindStruct, "tls.ClientHelloInfo", "ClientHelloInfo", "crypto/tls", function(CipherSuites_, ServerName_, SupportedCurves_, SupportedPoints_) { this.$val = this; if (arguments.length === 0) { this.CipherSuites = sliceType.nil; this.ServerName = ""; this.SupportedCurves = sliceType$3.nil; this.SupportedPoints = sliceType$4.nil; return; } this.CipherSuites = CipherSuites_; this.ServerName = ServerName_; this.SupportedCurves = SupportedCurves_; this.SupportedPoints = SupportedPoints_; }); Config = $pkg.Config = $newType(0, $kindStruct, "tls.Config", "Config", "crypto/tls", function(Rand_, Time_, Certificates_, NameToCertificate_, GetCertificate_, RootCAs_, NextProtos_, ServerName_, ClientAuth_, ClientCAs_, InsecureSkipVerify_, CipherSuites_, PreferServerCipherSuites_, SessionTicketsDisabled_, SessionTicketKey_, ClientSessionCache_, MinVersion_, MaxVersion_, CurvePreferences_, serverInitOnce_) { this.$val = this; if (arguments.length === 0) { this.Rand = $ifaceNil; this.Time = $throwNilPointerError; this.Certificates = sliceType$11.nil; this.NameToCertificate = false; this.GetCertificate = $throwNilPointerError; this.RootCAs = ptrType$14.nil; this.NextProtos = sliceType$7.nil; this.ServerName = ""; this.ClientAuth = 0; this.ClientCAs = ptrType$14.nil; this.InsecureSkipVerify = false; this.CipherSuites = sliceType.nil; this.PreferServerCipherSuites = false; this.SessionTicketsDisabled = false; this.SessionTicketKey = arrayType$6.zero(); this.ClientSessionCache = $ifaceNil; this.MinVersion = 0; this.MaxVersion = 0; this.CurvePreferences = sliceType$3.nil; this.serverInitOnce = new sync.Once.ptr(); return; } this.Rand = Rand_; this.Time = Time_; this.Certificates = Certificates_; this.NameToCertificate = NameToCertificate_; this.GetCertificate = GetCertificate_; 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.serverInitOnce = serverInitOnce_; }); Certificate = $pkg.Certificate = $newType(0, $kindStruct, "tls.Certificate", "Certificate", "crypto/tls", function(Certificate_, PrivateKey_, OCSPStaple_, Leaf_) { this.$val = this; if (arguments.length === 0) { this.Certificate = sliceType$6.nil; this.PrivateKey = $ifaceNil; this.OCSPStaple = sliceType$4.nil; this.Leaf = ptrType$13.nil; return; } this.Certificate = Certificate_; this.PrivateKey = PrivateKey_; this.OCSPStaple = OCSPStaple_; this.Leaf = Leaf_; }); ecdsaSignature = $pkg.ecdsaSignature = $newType(0, $kindStruct, "tls.ecdsaSignature", "ecdsaSignature", "crypto/tls", function(R_, S_) { this.$val = this; if (arguments.length === 0) { this.R = ptrType$1.nil; this.S = ptrType$1.nil; return; } this.R = R_; this.S = S_; }); Conn = $pkg.Conn = $newType(0, $kindStruct, "tls.Conn", "Conn", "crypto/tls", function(conn_, isClient_, handshakeMutex_, handshakeErr_, vers_, haveVers_, config_, handshakeComplete_, didResume_, cipherSuite_, ocspResponse_, peerCertificates_, verifiedChains_, serverName_, firstFinished_, clientProtocol_, clientProtocolFallback_, in$17_, out_, rawInput_, input_, hand_, tmp_) { this.$val = this; if (arguments.length === 0) { this.conn = $ifaceNil; this.isClient = false; this.handshakeMutex = new sync.Mutex.ptr(); this.handshakeErr = $ifaceNil; this.vers = 0; this.haveVers = false; this.config = ptrType$2.nil; this.handshakeComplete = false; this.didResume = false; this.cipherSuite = 0; this.ocspResponse = sliceType$4.nil; this.peerCertificates = sliceType$8.nil; this.verifiedChains = sliceType$10.nil; this.serverName = ""; this.firstFinished = arrayType$4.zero(); this.clientProtocol = ""; this.clientProtocolFallback = false; this.in$17 = new halfConn.ptr(); this.out = new halfConn.ptr(); this.rawInput = ptrType$8.nil; this.input = ptrType$8.nil; this.hand = new bytes.Buffer.ptr(); this.tmp = arrayType$5.zero(); return; } this.conn = conn_; this.isClient = isClient_; this.handshakeMutex = handshakeMutex_; this.handshakeErr = handshakeErr_; this.vers = vers_; this.haveVers = haveVers_; this.config = config_; this.handshakeComplete = handshakeComplete_; this.didResume = didResume_; this.cipherSuite = cipherSuite_; this.ocspResponse = ocspResponse_; this.peerCertificates = peerCertificates_; this.verifiedChains = verifiedChains_; this.serverName = serverName_; this.firstFinished = firstFinished_; this.clientProtocol = clientProtocol_; this.clientProtocolFallback = clientProtocolFallback_; this.in$17 = in$17_; this.out = out_; this.rawInput = rawInput_; this.input = input_; this.hand = hand_; this.tmp = tmp_; }); halfConn = $pkg.halfConn = $newType(0, $kindStruct, "tls.halfConn", "halfConn", "crypto/tls", function(Mutex_, err_, version_, cipher_, mac_, seq_, bfree_, nextCipher_, nextMac_, inDigestBuf_, outDigestBuf_) { this.$val = this; if (arguments.length === 0) { this.Mutex = new sync.Mutex.ptr(); this.err = $ifaceNil; this.version = 0; this.cipher = $ifaceNil; this.mac = $ifaceNil; this.seq = arrayType$7.zero(); this.bfree = ptrType$8.nil; this.nextCipher = $ifaceNil; this.nextMac = $ifaceNil; this.inDigestBuf = sliceType$4.nil; this.outDigestBuf = sliceType$4.nil; return; } this.Mutex = Mutex_; this.err = err_; this.version = version_; this.cipher = cipher_; this.mac = mac_; this.seq = seq_; this.bfree = bfree_; this.nextCipher = nextCipher_; this.nextMac = nextMac_; this.inDigestBuf = inDigestBuf_; this.outDigestBuf = outDigestBuf_; }); cbcMode = $pkg.cbcMode = $newType(8, $kindInterface, "tls.cbcMode", "cbcMode", "crypto/tls", null); block = $pkg.block = $newType(0, $kindStruct, "tls.block", "block", "crypto/tls", function(data_, off_, link_) { this.$val = this; if (arguments.length === 0) { this.data = sliceType$4.nil; this.off = 0; this.link = ptrType$8.nil; return; } this.data = data_; this.off = off_; this.link = link_; }); clientHandshakeState = $pkg.clientHandshakeState = $newType(0, $kindStruct, "tls.clientHandshakeState", "clientHandshakeState", "crypto/tls", function(c_, serverHello_, hello_, suite_, finishedHash_, masterSecret_, session_) { this.$val = this; if (arguments.length === 0) { this.c = ptrType$10.nil; this.serverHello = ptrType$9.nil; this.hello = ptrType$11.nil; this.suite = ptrType.nil; this.finishedHash = new finishedHash.ptr(); this.masterSecret = sliceType$4.nil; this.session = ptrType$7.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", "clientHelloMsg", "crypto/tls", function(raw_, vers_, random_, sessionId_, cipherSuites_, compressionMethods_, nextProtoNeg_, serverName_, ocspStapling_, supportedCurves_, supportedPoints_, ticketSupported_, sessionTicket_, signatureAndHashes_, secureRenegotiation_, alpnProtocols_) { this.$val = this; if (arguments.length === 0) { this.raw = sliceType$4.nil; this.vers = 0; this.random = sliceType$4.nil; this.sessionId = sliceType$4.nil; this.cipherSuites = sliceType.nil; this.compressionMethods = sliceType$4.nil; this.nextProtoNeg = false; this.serverName = ""; this.ocspStapling = false; this.supportedCurves = sliceType$3.nil; this.supportedPoints = sliceType$4.nil; this.ticketSupported = false; this.sessionTicket = sliceType$4.nil; this.signatureAndHashes = sliceType$2.nil; this.secureRenegotiation = false; this.alpnProtocols = sliceType$7.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.supportedCurves = supportedCurves_; this.supportedPoints = supportedPoints_; this.ticketSupported = ticketSupported_; this.sessionTicket = sessionTicket_; this.signatureAndHashes = signatureAndHashes_; this.secureRenegotiation = secureRenegotiation_; this.alpnProtocols = alpnProtocols_; }); serverHelloMsg = $pkg.serverHelloMsg = $newType(0, $kindStruct, "tls.serverHelloMsg", "serverHelloMsg", "crypto/tls", function(raw_, vers_, random_, sessionId_, cipherSuite_, compressionMethod_, nextProtoNeg_, nextProtos_, ocspStapling_, ticketSupported_, secureRenegotiation_, alpnProtocol_) { this.$val = this; if (arguments.length === 0) { this.raw = sliceType$4.nil; this.vers = 0; this.random = sliceType$4.nil; this.sessionId = sliceType$4.nil; this.cipherSuite = 0; this.compressionMethod = 0; this.nextProtoNeg = false; this.nextProtos = sliceType$7.nil; this.ocspStapling = false; this.ticketSupported = false; this.secureRenegotiation = 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.ticketSupported = ticketSupported_; this.secureRenegotiation = secureRenegotiation_; this.alpnProtocol = alpnProtocol_; }); certificateMsg = $pkg.certificateMsg = $newType(0, $kindStruct, "tls.certificateMsg", "certificateMsg", "crypto/tls", function(raw_, certificates_) { this.$val = this; if (arguments.length === 0) { this.raw = sliceType$4.nil; this.certificates = sliceType$6.nil; return; } this.raw = raw_; this.certificates = certificates_; }); serverKeyExchangeMsg = $pkg.serverKeyExchangeMsg = $newType(0, $kindStruct, "tls.serverKeyExchangeMsg", "serverKeyExchangeMsg", "crypto/tls", function(raw_, key_) { this.$val = this; if (arguments.length === 0) { this.raw = sliceType$4.nil; this.key = sliceType$4.nil; return; } this.raw = raw_; this.key = key_; }); certificateStatusMsg = $pkg.certificateStatusMsg = $newType(0, $kindStruct, "tls.certificateStatusMsg", "certificateStatusMsg", "crypto/tls", function(raw_, statusType_, response_) { this.$val = this; if (arguments.length === 0) { this.raw = sliceType$4.nil; this.statusType = 0; this.response = sliceType$4.nil; return; } this.raw = raw_; this.statusType = statusType_; this.response = response_; }); serverHelloDoneMsg = $pkg.serverHelloDoneMsg = $newType(0, $kindStruct, "tls.serverHelloDoneMsg", "serverHelloDoneMsg", "crypto/tls", function() { this.$val = this; if (arguments.length === 0) { return; } }); clientKeyExchangeMsg = $pkg.clientKeyExchangeMsg = $newType(0, $kindStruct, "tls.clientKeyExchangeMsg", "clientKeyExchangeMsg", "crypto/tls", function(raw_, ciphertext_) { this.$val = this; if (arguments.length === 0) { this.raw = sliceType$4.nil; this.ciphertext = sliceType$4.nil; return; } this.raw = raw_; this.ciphertext = ciphertext_; }); finishedMsg = $pkg.finishedMsg = $newType(0, $kindStruct, "tls.finishedMsg", "finishedMsg", "crypto/tls", function(raw_, verifyData_) { this.$val = this; if (arguments.length === 0) { this.raw = sliceType$4.nil; this.verifyData = sliceType$4.nil; return; } this.raw = raw_; this.verifyData = verifyData_; }); nextProtoMsg = $pkg.nextProtoMsg = $newType(0, $kindStruct, "tls.nextProtoMsg", "nextProtoMsg", "crypto/tls", function(raw_, proto_) { this.$val = this; if (arguments.length === 0) { this.raw = sliceType$4.nil; this.proto = ""; return; } this.raw = raw_; this.proto = proto_; }); certificateRequestMsg = $pkg.certificateRequestMsg = $newType(0, $kindStruct, "tls.certificateRequestMsg", "certificateRequestMsg", "crypto/tls", function(raw_, hasSignatureAndHash_, certificateTypes_, signatureAndHashes_, certificateAuthorities_) { this.$val = this; if (arguments.length === 0) { this.raw = sliceType$4.nil; this.hasSignatureAndHash = false; this.certificateTypes = sliceType$4.nil; this.signatureAndHashes = sliceType$2.nil; this.certificateAuthorities = sliceType$6.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", "certificateVerifyMsg", "crypto/tls", function(raw_, hasSignatureAndHash_, signatureAndHash_, signature_) { this.$val = this; if (arguments.length === 0) { this.raw = sliceType$4.nil; this.hasSignatureAndHash = false; this.signatureAndHash = new signatureAndHash.ptr(); this.signature = sliceType$4.nil; return; } this.raw = raw_; this.hasSignatureAndHash = hasSignatureAndHash_; this.signatureAndHash = signatureAndHash_; this.signature = signature_; }); newSessionTicketMsg = $pkg.newSessionTicketMsg = $newType(0, $kindStruct, "tls.newSessionTicketMsg", "newSessionTicketMsg", "crypto/tls", function(raw_, ticket_) { this.$val = this; if (arguments.length === 0) { this.raw = sliceType$4.nil; this.ticket = sliceType$4.nil; return; } this.raw = raw_; this.ticket = ticket_; }); serverHandshakeState = $pkg.serverHandshakeState = $newType(0, $kindStruct, "tls.serverHandshakeState", "serverHandshakeState", "crypto/tls", function(c_, clientHello_, hello_, suite_, ellipticOk_, ecdsaOk_, sessionState_, finishedHash_, masterSecret_, certsFromClient_, cert_) { this.$val = this; if (arguments.length === 0) { this.c = ptrType$10.nil; this.clientHello = ptrType$11.nil; this.hello = ptrType$9.nil; this.suite = ptrType.nil; this.ellipticOk = false; this.ecdsaOk = false; this.sessionState = ptrType$26.nil; this.finishedHash = new finishedHash.ptr(); this.masterSecret = sliceType$4.nil; this.certsFromClient = sliceType$6.nil; this.cert = ptrType$3.nil; return; } this.c = c_; this.clientHello = clientHello_; this.hello = hello_; this.suite = suite_; this.ellipticOk = ellipticOk_; this.ecdsaOk = ecdsaOk_; this.sessionState = sessionState_; this.finishedHash = finishedHash_; this.masterSecret = masterSecret_; this.certsFromClient = certsFromClient_; this.cert = cert_; }); rsaKeyAgreement = $pkg.rsaKeyAgreement = $newType(0, $kindStruct, "tls.rsaKeyAgreement", "rsaKeyAgreement", "crypto/tls", function() { this.$val = this; if (arguments.length === 0) { return; } }); ecdheKeyAgreement = $pkg.ecdheKeyAgreement = $newType(0, $kindStruct, "tls.ecdheKeyAgreement", "ecdheKeyAgreement", "crypto/tls", function(version_, sigType_, privateKey_, curve_, x_, y_) { this.$val = this; if (arguments.length === 0) { this.version = 0; this.sigType = 0; this.privateKey = sliceType$4.nil; this.curve = $ifaceNil; this.x = ptrType$1.nil; this.y = ptrType$1.nil; return; } this.version = version_; this.sigType = sigType_; this.privateKey = privateKey_; this.curve = curve_; this.x = x_; this.y = y_; }); finishedHash = $pkg.finishedHash = $newType(0, $kindStruct, "tls.finishedHash", "finishedHash", "crypto/tls", function(client_, server_, clientMD5_, serverMD5_, version_) { this.$val = this; if (arguments.length === 0) { this.client = $ifaceNil; this.server = $ifaceNil; this.clientMD5 = $ifaceNil; this.serverMD5 = $ifaceNil; this.version = 0; return; } this.client = client_; this.server = server_; this.clientMD5 = clientMD5_; this.serverMD5 = serverMD5_; this.version = version_; }); sessionState = $pkg.sessionState = $newType(0, $kindStruct, "tls.sessionState", "sessionState", "crypto/tls", function(vers_, cipherSuite_, masterSecret_, certificates_) { this.$val = this; if (arguments.length === 0) { this.vers = 0; this.cipherSuite = 0; this.masterSecret = sliceType$4.nil; this.certificates = sliceType$6.nil; return; } this.vers = vers_; this.cipherSuite = cipherSuite_; this.masterSecret = masterSecret_; this.certificates = certificates_; }); listener = $pkg.listener = $newType(0, $kindStruct, "tls.listener", "listener", "crypto/tls", function(Listener_, config_) { this.$val = this; if (arguments.length === 0) { this.Listener = $ifaceNil; this.config = ptrType$2.nil; return; } this.Listener = Listener_; this.config = config_; }); sliceType = $sliceType($Uint16); ptrType = $ptrType(cipherSuite); sliceType$1 = $sliceType(ptrType); sliceType$2 = $sliceType(signatureAndHash); sliceType$3 = $sliceType(CurveID); sliceType$4 = $sliceType($Uint8); ptrType$1 = $ptrType(big.Int); ptrType$2 = $ptrType(Config); ptrType$3 = $ptrType(Certificate); ptrType$7 = $ptrType(ClientSessionState); sliceType$5 = $sliceType($emptyInterface); arrayType = $arrayType($Uint8, 13); ptrType$8 = $ptrType(block); sliceType$6 = $sliceType(sliceType$4); sliceType$7 = $sliceType($String); ptrType$9 = $ptrType(serverHelloMsg); ptrType$10 = $ptrType(Conn); ptrType$11 = $ptrType(clientHelloMsg); ptrType$12 = $ptrType(certificateMsg); ptrType$13 = $ptrType(x509.Certificate); sliceType$8 = $sliceType(ptrType$13); ptrType$14 = $ptrType(x509.CertPool); sliceType$9 = $sliceType(x509.ExtKeyUsage); ptrType$15 = $ptrType(rsa.PublicKey); ptrType$16 = $ptrType(ecdsa.PublicKey); ptrType$17 = $ptrType(certificateStatusMsg); ptrType$18 = $ptrType(serverKeyExchangeMsg); ptrType$19 = $ptrType(certificateRequestMsg); ptrType$20 = $ptrType(serverHelloDoneMsg); ptrType$21 = $ptrType(clientKeyExchangeMsg); ptrType$22 = $ptrType(finishedMsg); ptrType$23 = $ptrType(newSessionTicketMsg); ptrType$24 = $ptrType(nextProtoMsg); ptrType$25 = $ptrType(certificateVerifyMsg); ptrType$26 = $ptrType(sessionState); ptrType$27 = $ptrType(ecdsa.PrivateKey); ptrType$28 = $ptrType(rsa.PrivateKey); arrayType$1 = $arrayType($Uint8, 11); arrayType$2 = $arrayType($Uint8, 64); arrayType$3 = $arrayType($Uint8, 4); sliceType$10 = $sliceType(sliceType$8); arrayType$4 = $arrayType($Uint8, 12); arrayType$5 = $arrayType($Uint8, 16); ptrType$29 = $ptrType(pem.Block); funcType = $funcType([$Uint16], [keyAgreement], false); funcType$1 = $funcType([sliceType$4, sliceType$4, $Bool], [$emptyInterface], false); funcType$2 = $funcType([$Uint16, sliceType$4], [macFunction], false); funcType$3 = $funcType([sliceType$4, sliceType$4], [cipher.AEAD], false); ptrType$30 = $ptrType(fixedNonceAEAD); sliceType$11 = $sliceType(Certificate); arrayType$6 = $arrayType($Uint8, 32); ptrType$31 = $ptrType(ClientHelloInfo); funcType$4 = $funcType([], [time.Time], false); mapType = $mapType($String, ptrType$3); funcType$5 = $funcType([ptrType$31], [ptrType$3, $error], false); arrayType$7 = $arrayType($Uint8, 8); ptrType$33 = $ptrType(halfConn); ptrType$34 = $ptrType(clientHandshakeState); ptrType$35 = $ptrType(serverHandshakeState); ptrType$36 = $ptrType(ecdheKeyAgreement); ptrType$37 = $ptrType(listener); alert.prototype.String = function() { var $ptr, _entry, _tuple, e, ok, s; e = this.$val; _tuple = (_entry = alertText[e], _entry !== undefined ? [_entry.v, true] : ["", false]); s = _tuple[0]; ok = _tuple[1]; if (ok) { return s; } return "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; } 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; } return _r$1; /* */ $s = -1; case -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; } 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; } return _r$1; /* */ $s = -1; case -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$4, key.$length)); $copySlice(mac.key, key); return new mac.constructor.elem(mac); } _r = hmac.New(sha1.New, key); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return (x = new tls10MAC.ptr(_r), new x.constructor.elem(x)); /* */ $s = -1; case -1: } 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; }; 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; } return _r; /* */ $s = -1; case -1: } 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.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(f.sealNonce, (f.sealNonce.$length - 8 >> 0)), nonce); _r = f.aead.Seal(out, f.sealNonce, plaintext, additionalData); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -1: } 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(f.openNonce, (f.openNonce.$length - 8 >> 0)), nonce); _r = f.aead.Open(out, f.openNonce, plaintext, additionalData); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -1: } 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); }; aeadAESGCM = function(key, fixedNonce) { var $ptr, _r, _tmp, _tmp$1, _tuple, _tuple$1, aead, aes$1, err, fixedNonce, key, nonce1, nonce2, $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; aead = $f.aead; aes$1 = $f.aes$1; err = $f.err; fixedNonce = $f.fixedNonce; key = $f.key; nonce1 = $f.nonce1; nonce2 = $f.nonce2; $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 = _tuple$1[0]; err = _tuple$1[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { $panic(err); } _tmp = $makeSlice(sliceType$4, 12); _tmp$1 = $makeSlice(sliceType$4, 12); nonce1 = _tmp; nonce2 = _tmp$1; $copySlice(nonce1, fixedNonce); $copySlice(nonce2, fixedNonce); return new fixedNonceAEAD.ptr(nonce1, nonce2, aead); /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: aeadAESGCM }; } $f.$ptr = $ptr; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.aead = aead; $f.aes$1 = aes$1; $f.err = err; $f.fixedNonce = fixedNonce; $f.key = key; $f.nonce1 = nonce1; $f.nonce2 = nonce2; $f.$s = $s; $f.$r = $r; return $f; }; 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 = $clone(this, ssl30MAC); _r = s.h.Size(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -1: } 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) { 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, 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; 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 = $clone(this, ssl30MAC); 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$4(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$4(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; } return _r$11; /* */ $s = -1; case -1: } 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.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) { return this.$val.MAC(digestBuf, seq, header, data); }; 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 = $clone(this, tls10MAC); _r = s.h.Size(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -1: } 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) { var $ptr, _r, _r$1, _r$2, _r$3, data, digestBuf, header, 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; data = $f.data; digestBuf = $f.digestBuf; header = $f.header; s = $f.s; seq = $f.seq; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: s = $clone(this, tls10MAC); $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; } return _r$3; /* */ $s = -1; case -1: } 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.data = data; $f.digestBuf = digestBuf; $f.header = header; $f.s = s; $f.seq = seq; $f.$s = $s; $f.$r = $r; return $f; }; tls10MAC.prototype.MAC = function(digestBuf, seq, header, data) { return this.$val.MAC(digestBuf, seq, header, data); }; 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$4.nil, $ifaceNil, ptrType$1.nil, ptrType$1.nil); }; ecdheRSAKA = function(version) { var $ptr, version; return new ecdheKeyAgreement.ptr(version, 1, sliceType$4.nil, $ifaceNil, ptrType$1.nil, ptrType$1.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") : _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") : _ref$1.$array[_ref$1.$offset + _i$1]); if (suite.id === want) { return suite; } _i$1++; } return ptrType.nil; } _i++; } return ptrType.nil; }; Config.ptr.prototype.serverInit = function() { var $ptr, _i, _r, _ref, _tuple, b, c, err, $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; b = $f.b; c = $f.c; err = $f.err; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: c = this; if (c.SessionTicketsDisabled) { return; } _ref = c.SessionTicketKey; _i = 0; while (true) { if (!(_i < 32)) { break; } b = ((_i < 0 || _i >= _ref.length) ? $throwRuntimeError("index out of range") : _ref[_i]); if (!((b === 0))) { return; } _i++; } _r = io.ReadFull(c.rand(), new sliceType$4(c.SessionTicketKey)); /* */ $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; } /* */ $s = 3; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2: c.SessionTicketsDisabled = true; /* } */ case 3: /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Config.ptr.prototype.serverInit }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._ref = _ref; $f._tuple = _tuple; $f.b = b; $f.c = c; $f.err = err; $f.$s = $s; $f.$r = $r; return $f; }; Config.prototype.serverInit = function() { return this.$val.serverInit(); }; 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; } return _r; /* */ $s = -1; case -1: } 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.nil) { $s = 1; continue; } /* */ $s = 2; continue; /* if (s === sliceType.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: return s; /* */ $s = -1; case -1: } 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$2.nil || (c.MinVersion === 0)) { return 768; } return c.MinVersion; }; Config.prototype.minVersion = function() { return this.$val.minVersion(); }; Config.ptr.prototype.maxVersion = function() { var $ptr, c; c = this; if (c === ptrType$2.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$2.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)) { $s = 1; continue; } /* */ $s = 2; continue; /* if (!(c.GetCertificate === $throwNilPointerError)) { */ 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$3.nil) || !($interfaceIsEqual(err, $ifaceNil))) { return [cert, err]; } /* } */ case 2: if ((c.Certificates.$length === 1) || c.NameToCertificate === false) { return [(x = c.Certificates, (0 >= x.$length ? $throwRuntimeError("index out of range") : 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 = name.substring(0, (name.length - 1 >> 0)); } _tuple$1 = (_entry = c.NameToCertificate[name], _entry !== undefined ? [_entry.v, true] : [ptrType$3.nil, false]); cert$1 = _tuple$1[0]; ok = _tuple$1[1]; if (ok) { 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") : labels.$array[labels.$offset + i] = "*"); candidate = strings.Join(labels, "."); _tuple$2 = (_entry$1 = c.NameToCertificate[candidate], _entry$1 !== undefined ? [_entry$1.v, true] : [ptrType$3.nil, false]); cert$2 = _tuple$2[0]; ok$1 = _tuple$2[1]; if (ok$1) { return [cert$2, $ifaceNil]; } _i++; } return [(x$1 = c.Certificates, (0 >= x$1.$length ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + 0])), $ifaceNil]; /* */ $s = -1; case -1: } 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$1, _key$2, _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$1 = $f._key$1; _key$2 = $f._key$2; _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 = new $Map(); _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") : x.$array[x.$offset + i])); _r = x509.ParseCertificate((x$1 = cert.Certificate, (0 >= x$1.$length ? $throwRuntimeError("index out of range") : 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$1 = x509Cert.Subject.CommonName; (c.NameToCertificate || $throwRuntimeError("assignment to entry in nil map"))[_key$1] = { k: _key$1, 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") : _ref$1.$array[_ref$1.$offset + _i$1]); _key$2 = san; (c.NameToCertificate || $throwRuntimeError("assignment to entry in nil map"))[_key$2] = { k: _key$2, v: cert }; _i$1++; } _i++; /* } */ $s = 1; continue; case 2: /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Config.ptr.prototype.BuildNameToCertificate }; } $f.$ptr = $ptr; $f._i = _i; $f._i$1 = _i$1; $f._key$1 = _key$1; $f._key$2 = _key$2; $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(); }; 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; } return varDefaultCipherSuites; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: defaultCipherSuites }; } $f.$ptr = $ptr; $f.$s = $s; $f.$r = $r; return $f; }; initDefaultCipherSuites = function() { var $ptr, _i, _ref, i, suite; varDefaultCipherSuites = $makeSlice(sliceType, cipherSuites.$length); _ref = cipherSuites; _i = 0; while (true) { if (!(_i < _ref.$length)) { break; } i = _i; suite = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]); ((i < 0 || i >= varDefaultCipherSuites.$length) ? $throwRuntimeError("index out of range") : varDefaultCipherSuites.$array[varDefaultCipherSuites.$offset + i] = suite.id); _i++; } }; 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$5([got, wanted])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -1: } 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; }; 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; } return _r; /* */ $s = -1; case -1: } 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; } return _r; /* */ $s = -1; case -1: } 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; t = $clone(t, time.Time); _r = c.conn.SetDeadline(t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -1: } 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; t = $clone(t, time.Time); _r = c.conn.SetReadDeadline(t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -1: } 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; t = $clone(t, time.Time); _r = c.conn.SetWriteDeadline(t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -1: } 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.error = function() { var $ptr, err, hc, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; err = $f.err; hc = $f.hc; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: hc = this; $r = hc.Mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } err = hc.err; $r = hc.Mutex.Unlock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } return err; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: halfConn.ptr.prototype.error }; } $f.$ptr = $ptr; $f.err = err; $f.hc = hc; $f.$s = $s; $f.$r = $r; return $f; }; halfConn.prototype.error = function() { return this.$val.error(); }; 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") : 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") : x$1[i] = (x = hc.seq, ((i < 0 || i >= x.length) ? $throwRuntimeError("index out of range") : x[i])) + (1) << 24 >>> 24)); if (!(((x$2 = hc.seq, ((i < 0 || i >= x$2.length) ? $throwRuntimeError("index out of range") : x$2[i])) === 0))) { return; } i = i - (1) >> 0; } $panic(new $String("TLS: sequence number wraparound")); }; halfConn.prototype.incSeq = function() { return this.$val.incSeq(); }; removePadding = function(payload) { var $ptr, b, good, i, mask, paddingLen, payload, t, t$1, toCheck, toRemove, x, x$1; if (payload.$length < 1) { return [payload, 0]; } paddingLen = (x = payload.$length - 1 >> 0, ((x < 0 || x >= payload.$length) ? $throwRuntimeError("index out of range") : 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") : 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 = ((good & paddingLen) >>> 0) + 1 << 24 >>> 24; return [$subslice(payload, 0, (payload.$length - (toRemove >> 0) >> 0)), good]; }; removePaddingSSL30 = function(payload) { var $ptr, paddingLen, payload, x; if (payload.$length < 1) { return [payload, 0]; } paddingLen = ((x = payload.$length - 1 >> 0, ((x < 0 || x >= payload.$length) ? $throwRuntimeError("index out of range") : payload.$array[payload.$offset + x])) >> 0) + 1 >> 0; if (paddingLen > payload.$length) { return [payload, 0]; } return [$subslice(payload, 0, (payload.$length - paddingLen >> 0)), 255]; }; 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, _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, additionalData, alertValue, b, blockSize, c, c$1, c$2, c$3, err, explicitIVLen, hc, localMAC, macSize, n, n$1, nonce, ok, paddingGood, 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; _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; additionalData = $f.additionalData; 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; 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; 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, 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: 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, cipher.AEAD, true)[1]) { */ case 7: c$1 = _ref; explicitIVLen = 8; if (payload.$length < explicitIVLen) { _tmp = false; _tmp$1 = 0; _tmp$2 = 20; ok = _tmp; prefixLen = _tmp$1; alertValue = _tmp$2; return [ok, prefixLen, alertValue]; } nonce = $subslice(payload, 0, 8); payload = $subslice(payload, 8); additionalData = $clone(arrayType.zero(), arrayType); $copySlice(new sliceType$4(additionalData), new sliceType$4(hc.seq)); $copySlice($subslice(new sliceType$4(additionalData), 8), $subslice(b.data, 0, 3)); _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; } n = payload.$length - _r$1 >> 0; additionalData[11] = ((n >> 8 >> 0) << 24 >>> 24); additionalData[12] = (n << 24 >>> 24); err = $ifaceNil; _r$2 = c$1.Open($subslice(payload, 0, 0), nonce, payload, new sliceType$4(additionalData)); /* */ $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; 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; 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$3 = c$2.BlockSize(); /* */ $s = 14; case 14: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } blockSize = _r$3; if (hc.version >= 770) { explicitIVLen = blockSize; } if (!(((_r$4 = payload.$length % blockSize, _r$4 === _r$4 ? _r$4 : $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; return [ok, prefixLen, alertValue]; } /* */ if (explicitIVLen > 0) { $s = 15; continue; } /* */ $s = 16; continue; /* if (explicitIVLen > 0) { */ case 15: $r = c$2.SetIV($subslice(payload, 0, explicitIVLen)); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } payload = $subslice(payload, explicitIVLen); /* } */ case 16: $r = c$2.CryptBlocks(payload, payload); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } if (hc.version === 768) { _tuple$1 = removePaddingSSL30(payload); payload = _tuple$1[0]; paddingGood = _tuple$1[1]; } else { _tuple$2 = removePadding(payload); payload = _tuple$2[0]; paddingGood = _tuple$2[1]; } b.resize((5 + explicitIVLen >> 0) + payload.$length >> 0); $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 = 19; continue; } /* */ $s = 20; continue; /* if (!($interfaceIsEqual(hc.mac, $ifaceNil))) { */ case 19: if (payload.$length < macSize) { _tmp$9 = false; _tmp$10 = 0; _tmp$11 = 20; ok = _tmp$9; prefixLen = _tmp$10; alertValue = _tmp$11; return [ok, prefixLen, alertValue]; } n$1 = payload.$length - macSize >> 0; (x = b.data, (3 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 3] = ((n$1 >> 8 >> 0) << 24 >>> 24))); (x$1 = b.data, (4 >= x$1.$length ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + 4] = (n$1 << 24 >>> 24))); b.resize((5 + explicitIVLen >> 0) + n$1 >> 0); remoteMAC = $subslice(payload, n$1); _r$5 = hc.mac.MAC(hc.inDigestBuf, $subslice(new sliceType$4(hc.seq), 0), $subslice(b.data, 0, 5), $subslice(payload, 0, n$1)); /* */ $s = 21; case 21: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } localMAC = _r$5; 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; return [ok, prefixLen, alertValue]; } hc.inDigestBuf = localMAC; /* } */ case 20: hc.incSeq(); _tmp$15 = true; _tmp$16 = 5 + explicitIVLen >> 0; _tmp$17 = 0; ok = _tmp$15; prefixLen = _tmp$16; alertValue = _tmp$17; return [ok, prefixLen, alertValue]; /* */ $s = -1; case -1: } 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._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.additionalData = additionalData; $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.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$4.nil; finalBlock = sliceType$4.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$4, 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") : 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, additionalData, 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; additionalData = $f.additionalData; 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$4(hc.seq), 0), $subslice(b.data, 0, 5), $subslice(b.data, (5 + explicitIVLen >> 0))); /* */ $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, 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: 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, cipher.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)); payload$1 = $subslice(b.data, (5 + explicitIVLen >> 0)); payload$1 = $subslice(payload$1, 0, payloadLen); additionalData = $clone(arrayType.zero(), arrayType); $copySlice(new sliceType$4(additionalData), new sliceType$4(hc.seq)); $copySlice($subslice(new sliceType$4(additionalData), 8), $subslice(b.data, 0, 3)); additionalData[11] = ((payloadLen >> 8 >> 0) << 24 >>> 24); additionalData[12] = (payloadLen << 24 >>> 24); _r$2 = c$1.Seal($subslice(payload$1, 0, 0), nonce, payload$1, new sliceType$4(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") : x.$array[x.$offset + 3] = ((n$1 >> 8 >> 0) << 24 >>> 24))); (x$1 = b.data, (4 >= x$1.$length ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + 4] = (n$1 << 24 >>> 24))); hc.incSeq(); return [true, 0]; /* */ $s = -1; case -1: } 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.additionalData = additionalData; $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 = m * (2) >> 0; } data = $makeSlice(sliceType$4, 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) { 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))) { return err; } /* } */ $s = 1; continue; case 2: return $ifaceNil; /* */ $s = -1; case -1: } 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$8.nil) { return new block.ptr(); } hc.bfree = b.link; b.link = ptrType$8.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$8.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); }; Conn.ptr.prototype.readRecord = function(want) { var $ptr, _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$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _tuple, _tuple$1, _tuple$2, _tuple$3, _v, _v$1, b, c, data, e, e$1, err, err$1, err$2, err$3, err$4, n, off, ok, ok$1, ok$2, typ, vers, want, 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; _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$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; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _v = $f._v; _v$1 = $f._v$1; 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; err$4 = $f.err$4; 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; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: c = this; _ref = want; /* */ if (_ref === 22 || _ref === 20) { $s = 1; continue; } /* */ if (_ref === 23) { $s = 2; continue; } /* */ $s = 3; continue; /* if (_ref === 22 || _ref === 20) { */ case 1: /* */ if (c.handshakeComplete) { $s = 5; continue; } /* */ $s = 6; continue; /* if (c.handshakeComplete) { */ case 5: _r = c.sendAlert(80); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _r; return c.in$17.setErrorLocked(errors.New("tls: handshake or ChangeCipherSpec requested after handshake complete")); /* } */ case 6: $s = 4; continue; /* } else if (_ref === 23) { */ case 2: /* */ if (!c.handshakeComplete) { $s = 8; continue; } /* */ $s = 9; continue; /* if (!c.handshakeComplete) { */ case 8: _r$1 = c.sendAlert(80); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } _r$1; return c.in$17.setErrorLocked(errors.New("tls: application data record requested before handshake complete")); /* } */ case 9: $s = 4; continue; /* } else { */ case 3: _r$2 = c.sendAlert(80); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } _r$2; return c.in$17.setErrorLocked(errors.New("tls: unknown record type requested")); /* } */ case 4: /* Again: */ case 12: if (c.rawInput === ptrType$8.nil) { c.rawInput = c.in$17.newBlock(); } b = c.rawInput; _r$3 = b.readFromUntil(c.conn, 5); /* */ $s = 13; case 13: 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 = 14; continue; } /* */ $s = 15; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 14: _tuple = $assertType(err, net.Error, true); e = _tuple[0]; ok = _tuple[1]; if (!ok) { _v = true; $s = 18; continue s; } _r$4 = e.Temporary(); /* */ $s = 19; case 19: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } _v = !_r$4; case 18: /* */ if (_v) { $s = 16; continue; } /* */ $s = 17; continue; /* if (_v) { */ case 16: c.in$17.setErrorLocked(err); /* } */ case 17: return err; /* } */ case 15: typ = ((x = b.data, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0])) << 24 >>> 24); /* */ if ((want === 22) && (typ === 128)) { $s = 20; continue; } /* */ $s = 21; continue; /* if ((want === 22) && (typ === 128)) { */ case 20: _r$5 = c.sendAlert(70); /* */ $s = 22; case 22: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } _r$5; return c.in$17.setErrorLocked(errors.New("tls: unsupported SSLv2 handshake received")); /* } */ case 21: vers = ((((x$1 = b.data, (1 >= x$1.$length ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + 1])) << 16 >>> 16) << 8 << 16 >>> 16) | ((x$2 = b.data, (2 >= x$2.$length ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + 2])) << 16 >>> 16)) >>> 0; n = (((x$3 = b.data, (3 >= x$3.$length ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + 3])) >> 0) << 8 >> 0) | ((x$4 = b.data, (4 >= x$4.$length ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + 4])) >> 0); /* */ if (c.haveVers && !((vers === c.vers))) { $s = 23; continue; } /* */ $s = 24; continue; /* if (c.haveVers && !((vers === c.vers))) { */ case 23: _r$6 = c.sendAlert(70); /* */ $s = 25; case 25: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } _r$6; _r$7 = fmt.Errorf("tls: received record with version %x when expecting version %x", new sliceType$5([new $Uint16(vers), new $Uint16(c.vers)])); /* */ $s = 26; case 26: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } _r$8 = c.in$17.setErrorLocked(_r$7); /* */ $s = 27; case 27: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } return _r$8; /* } */ case 24: /* */ if (n > 18432) { $s = 28; continue; } /* */ $s = 29; continue; /* if (n > 18432) { */ case 28: _r$9 = c.sendAlert(22); /* */ $s = 30; case 30: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } _r$9; _r$10 = fmt.Errorf("tls: oversized record received with length %d", new sliceType$5([new $Int(n)])); /* */ $s = 31; case 31: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } _r$11 = c.in$17.setErrorLocked(_r$10); /* */ $s = 32; case 32: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } return _r$11; /* } */ case 29: /* */ if (!c.haveVers) { $s = 33; continue; } /* */ $s = 34; continue; /* if (!c.haveVers) { */ case 33: /* */ if ((!((typ === 21)) && !((typ === want))) || vers >= 4096 || n >= 12288) { $s = 35; continue; } /* */ $s = 36; continue; /* if ((!((typ === 21)) && !((typ === want))) || vers >= 4096 || n >= 12288) { */ case 35: _r$12 = c.sendAlert(10); /* */ $s = 37; case 37: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } _r$12; _r$13 = fmt.Errorf("tls: first record does not look like a TLS handshake", new sliceType$5([])); /* */ $s = 38; case 38: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } _r$14 = c.in$17.setErrorLocked(_r$13); /* */ $s = 39; case 39: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } return _r$14; /* } */ case 36: /* } */ case 34: _r$15 = b.readFromUntil(c.conn, 5 + n >> 0); /* */ $s = 40; case 40: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } err$1 = _r$15; /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 41; continue; } /* */ $s = 42; continue; /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 41: 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 = 45; continue s; } _r$16 = e$1.Temporary(); /* */ $s = 46; case 46: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } _v$1 = !_r$16; case 45: /* */ if (_v$1) { $s = 43; continue; } /* */ $s = 44; continue; /* if (_v$1) { */ case 43: c.in$17.setErrorLocked(err$1); /* } */ case 44: return err$1; /* } */ case 42: _tuple$2 = c.in$17.splitBlock(b, 5 + n >> 0); b = _tuple$2[0]; c.rawInput = _tuple$2[1]; _r$17 = c.in$17.decrypt(b); /* */ $s = 47; case 47: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } _tuple$3 = _r$17; ok$2 = _tuple$3[0]; off = _tuple$3[1]; err$2 = _tuple$3[2]; /* */ if (!ok$2) { $s = 48; continue; } /* */ $s = 49; continue; /* if (!ok$2) { */ case 48: _r$18 = c.sendAlert(err$2); /* */ $s = 50; case 50: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; } _r$19 = c.in$17.setErrorLocked(_r$18); /* */ $s = 51; case 51: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; } _r$19; /* } */ case 49: b.off = off; data = $subslice(b.data, b.off); /* */ if (data.$length > 16384) { $s = 52; continue; } /* */ $s = 53; continue; /* if (data.$length > 16384) { */ case 52: _r$20 = c.sendAlert(22); /* */ $s = 54; case 54: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; } err$3 = _r$20; c.in$17.freeBlock(b); return c.in$17.setErrorLocked(err$3); /* } */ case 53: _ref$1 = typ; /* */ if (_ref$1 === 21) { $s = 55; continue; } /* */ if (_ref$1 === 20) { $s = 56; continue; } /* */ if (_ref$1 === 23) { $s = 57; continue; } /* */ if (_ref$1 === 22) { $s = 58; continue; } /* */ $s = 59; continue; /* switch (0) { default: if (_ref$1 === 21) { */ case 55: /* */ if (!((data.$length === 2))) { $s = 61; continue; } /* */ $s = 62; continue; /* if (!((data.$length === 2))) { */ case 61: _r$21 = c.sendAlert(10); /* */ $s = 63; case 63: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; } _r$22 = c.in$17.setErrorLocked(_r$21); /* */ $s = 64; case 64: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } _r$22; /* break; */ $s = 60; continue; /* } */ case 62: if (((1 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 1]) << 24 >>> 24) === 0) { c.in$17.setErrorLocked(io.EOF); /* break; */ $s = 60; continue; } _ref$2 = (0 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 0]); /* */ if (_ref$2 === 1) { $s = 65; continue; } /* */ if (_ref$2 === 2) { $s = 66; continue; } /* */ $s = 67; continue; /* if (_ref$2 === 1) { */ case 65: c.in$17.freeBlock(b); /* goto Again */ $s = 12; continue; $s = 68; continue; /* } else if (_ref$2 === 2) { */ case 66: c.in$17.setErrorLocked(new net.OpError.ptr("remote error", "", $ifaceNil, new alert(((1 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 1]) << 24 >>> 24)))); $s = 68; continue; /* } else { */ case 67: _r$23 = c.sendAlert(10); /* */ $s = 69; case 69: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } _r$24 = c.in$17.setErrorLocked(_r$23); /* */ $s = 70; case 70: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } _r$24; /* } */ case 68: $s = 60; continue; /* } else if (_ref$1 === 20) { */ case 56: /* */ if (!((typ === want)) || !((data.$length === 1)) || !(((0 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 0]) === 1))) { $s = 71; continue; } /* */ $s = 72; continue; /* if (!((typ === want)) || !((data.$length === 1)) || !(((0 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 0]) === 1))) { */ case 71: _r$25 = c.sendAlert(10); /* */ $s = 73; case 73: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; } _r$26 = c.in$17.setErrorLocked(_r$25); /* */ $s = 74; case 74: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; } _r$26; /* break; */ $s = 60; continue; /* } */ case 72: err$4 = c.in$17.changeCipherSpec(); /* */ if (!($interfaceIsEqual(err$4, $ifaceNil))) { $s = 75; continue; } /* */ $s = 76; continue; /* if (!($interfaceIsEqual(err$4, $ifaceNil))) { */ case 75: _r$27 = c.sendAlert($assertType(err$4, alert)); /* */ $s = 77; case 77: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; } _r$28 = c.in$17.setErrorLocked(_r$27); /* */ $s = 78; case 78: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; } _r$28; /* } */ case 76: $s = 60; continue; /* } else if (_ref$1 === 23) { */ case 57: /* */ if (!((typ === want))) { $s = 79; continue; } /* */ $s = 80; continue; /* if (!((typ === want))) { */ case 79: _r$29 = c.sendAlert(10); /* */ $s = 81; case 81: if($c) { $c = false; _r$29 = _r$29.$blk(); } if (_r$29 && _r$29.$blk !== undefined) { break s; } _r$30 = c.in$17.setErrorLocked(_r$29); /* */ $s = 82; case 82: if($c) { $c = false; _r$30 = _r$30.$blk(); } if (_r$30 && _r$30.$blk !== undefined) { break s; } _r$30; /* break; */ $s = 60; continue; /* } */ case 80: c.input = b; b = ptrType$8.nil; $s = 60; continue; /* } else if (_ref$1 === 22) { */ case 58: /* */ if (!((typ === want))) { $s = 83; continue; } /* */ $s = 84; continue; /* if (!((typ === want))) { */ case 83: _r$31 = c.sendAlert(100); /* */ $s = 85; case 85: if($c) { $c = false; _r$31 = _r$31.$blk(); } if (_r$31 && _r$31.$blk !== undefined) { break s; } _r$32 = c.in$17.setErrorLocked(_r$31); /* */ $s = 86; case 86: if($c) { $c = false; _r$32 = _r$32.$blk(); } if (_r$32 && _r$32.$blk !== undefined) { break s; } return _r$32; /* } */ case 84: c.hand.Write(data); $s = 60; continue; /* } else { */ case 59: _r$33 = c.sendAlert(10); /* */ $s = 87; case 87: if($c) { $c = false; _r$33 = _r$33.$blk(); } if (_r$33 && _r$33.$blk !== undefined) { break s; } _r$34 = c.in$17.setErrorLocked(_r$33); /* */ $s = 88; case 88: if($c) { $c = false; _r$34 = _r$34.$blk(); } if (_r$34 && _r$34.$blk !== undefined) { break s; } _r$34; /* } } */ case 60: if (!(b === ptrType$8.nil)) { c.in$17.freeBlock(b); } return c.in$17.err; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.readRecord }; } $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$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$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._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._v = _v; $f._v$1 = _v$1; $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.err$4 = err$4; $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.$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, _r, _ref, 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; _ref = $f._ref; c = $f.c; err = $f.err; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: c = this; _ref = err; if (_ref === 100 || _ref === 0) { c.tmp[0] = 1; } else { c.tmp[0] = 2; } c.tmp[1] = (err << 24 >>> 24); _r = c.writeRecord(21, $subslice(new sliceType$4(c.tmp), 0, 2)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _r; if (!((err === 0))) { return c.out.setErrorLocked(new net.OpError.ptr("local error", "", $ifaceNil, new alert(err))); } return $ifaceNil; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.sendAlertLocked }; } $f.$ptr = $ptr; $f._r = _r; $f._ref = _ref; $f.c = c; $f.err = err; $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; } return _r; /* */ $s = -1; case -1: } 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.writeRecord = function(typ, data) { var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, _tuple$3, b, c, cbc, data, err, explicitIV, explicitIVIsSeq, explicitIVLen, m, n, ok, ok$1, typ, vers, 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; _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; b = $f.b; c = $f.c; cbc = $f.cbc; data = $f.data; err = $f.err; explicitIV = $f.explicitIV; explicitIVIsSeq = $f.explicitIVIsSeq; explicitIVLen = $f.explicitIVLen; m = $f.m; 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; $r = $f.$r; } s: while (true) { switch ($s) { case 0: n = 0; err = $ifaceNil; c = this; b = c.out.newBlock(); /* while (true) { */ case 1: /* if (!(data.$length > 0)) { break; } */ if(!(data.$length > 0)) { $s = 2; continue; } m = data.$length; if (m > 16384) { m = 16384; } 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) { _tuple$1 = $assertType(c.out.cipher, cipher.AEAD, true); ok$1 = _tuple$1[1]; if (ok$1) { explicitIVLen = 8; explicitIVIsSeq = true; } } b.resize((5 + explicitIVLen >> 0) + m >> 0); (x = b.data, (0 >= x.$length ? $throwRuntimeError("index out of range") : 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") : 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") : x$2.$array[x$2.$offset + 2] = (vers << 24 >>> 24))); (x$3 = b.data, (3 >= x$3.$length ? $throwRuntimeError("index out of range") : 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") : x$4.$array[x$4.$offset + 4] = (m << 24 >>> 24))); /* */ if (explicitIVLen > 0) { $s = 8; continue; } /* */ $s = 9; continue; /* if (explicitIVLen > 0) { */ case 8: explicitIV = $subslice(b.data, 5, (5 + explicitIVLen >> 0)); /* */ if (explicitIVIsSeq) { $s = 10; continue; } /* */ $s = 11; continue; /* if (explicitIVIsSeq) { */ case 10: $copySlice(explicitIV, new sliceType$4(c.out.seq)); $s = 12; continue; /* } else { */ case 11: _r$1 = io.ReadFull(c.config.rand(), explicitIV); /* */ $s = 13; case 13: 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]; /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 14; continue; } /* */ $s = 15; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 14: /* break; */ $s = 2; continue; /* } */ case 15: /* } */ case 12: /* } */ case 9: $copySlice($subslice(b.data, (5 + explicitIVLen >> 0)), data); _r$2 = c.out.encrypt(b, explicitIVLen); /* */ $s = 16; case 16: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } _r$2; _r$3 = c.conn.Write(b.data); /* */ $s = 17; case 17: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } _tuple$3 = _r$3; err = _tuple$3[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { /* break; */ $s = 2; continue; } n = n + (m) >> 0; data = $subslice(data, m); /* } */ $s = 1; continue; case 2: c.out.freeBlock(b); /* */ if (typ === 20) { $s = 18; continue; } /* */ $s = 19; continue; /* if (typ === 20) { */ case 18: err = c.out.changeCipherSpec(); /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 20; continue; } /* */ $s = 21; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 20: c.tmp[0] = 2; c.tmp[1] = ($assertType(err, alert) << 24 >>> 24); _r$4 = c.writeRecord(21, $subslice(new sliceType$4(c.tmp), 0, 2)); /* */ $s = 22; case 22: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } _r$4; _tmp = n; _tmp$1 = c.out.setErrorLocked(new net.OpError.ptr("local error", "", $ifaceNil, err)); n = _tmp; err = _tmp$1; return [n, err]; /* } */ case 21: /* } */ case 19: return [n, err]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.writeRecord }; } $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._tuple$3 = _tuple$3; $f.b = b; $f.c = c; $f.cbc = cbc; $f.data = data; $f.err = err; $f.explicitIV = explicitIV; $f.explicitIVIsSeq = explicitIVIsSeq; $f.explicitIVLen = explicitIVLen; $f.m = m; $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.$r = $r; return $f; }; Conn.prototype.writeRecord = function(typ, data) { return this.$val.writeRecord(typ, data); }; Conn.ptr.prototype.readHandshake = function() { var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _ref, 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; _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; 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$17.err; if (!($interfaceIsEqual(err, $ifaceNil))) { 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 = 4; continue; } /* */ $s = 5; continue; /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 4: return [$ifaceNil, err$1]; /* } */ case 5: /* } */ $s = 1; continue; case 2: data = c.hand.Bytes(); n = ((((1 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 1]) >> 0) << 16 >> 0) | (((2 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 2]) >> 0) << 8 >> 0)) | ((3 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 3]) >> 0); /* */ if (n > 65536) { $s = 6; continue; } /* */ $s = 7; continue; /* if (n > 65536) { */ case 6: _r$1 = c.sendAlert(80); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } _r$2 = c.in$17.setErrorLocked(_r$1); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } return [$ifaceNil, _r$2]; /* } */ case 7: /* while (true) { */ case 10: /* if (!(c.hand.Len() < (4 + n >> 0))) { break; } */ if(!(c.hand.Len() < (4 + n >> 0))) { $s = 11; continue; } err$2 = c.in$17.err; if (!($interfaceIsEqual(err$2, $ifaceNil))) { return [$ifaceNil, err$2]; } _r$3 = c.readRecord(22); /* */ $s = 12; case 12: 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 = 13; continue; } /* */ $s = 14; continue; /* if (!($interfaceIsEqual(err$3, $ifaceNil))) { */ case 13: return [$ifaceNil, err$3]; /* } */ case 14: /* } */ $s = 10; continue; case 11: data = c.hand.Next(4 + n >> 0); m = $ifaceNil; _ref = (0 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 0]); /* */ if (_ref === 1) { $s = 15; continue; } /* */ if (_ref === 2) { $s = 16; continue; } /* */ if (_ref === 4) { $s = 17; continue; } /* */ if (_ref === 11) { $s = 18; continue; } /* */ if (_ref === 13) { $s = 19; continue; } /* */ if (_ref === 22) { $s = 20; continue; } /* */ if (_ref === 12) { $s = 21; continue; } /* */ if (_ref === 14) { $s = 22; continue; } /* */ if (_ref === 16) { $s = 23; continue; } /* */ if (_ref === 15) { $s = 24; continue; } /* */ if (_ref === 67) { $s = 25; continue; } /* */ if (_ref === 20) { $s = 26; continue; } /* */ $s = 27; continue; /* if (_ref === 1) { */ case 15: m = new clientHelloMsg.ptr(); $s = 28; continue; /* } else if (_ref === 2) { */ case 16: m = new serverHelloMsg.ptr(); $s = 28; continue; /* } else if (_ref === 4) { */ case 17: m = new newSessionTicketMsg.ptr(); $s = 28; continue; /* } else if (_ref === 11) { */ case 18: m = new certificateMsg.ptr(); $s = 28; continue; /* } else if (_ref === 13) { */ case 19: m = new certificateRequestMsg.ptr(sliceType$4.nil, c.vers >= 771, sliceType$4.nil, sliceType$2.nil, sliceType$6.nil); $s = 28; continue; /* } else if (_ref === 22) { */ case 20: m = new certificateStatusMsg.ptr(); $s = 28; continue; /* } else if (_ref === 12) { */ case 21: m = new serverKeyExchangeMsg.ptr(); $s = 28; continue; /* } else if (_ref === 14) { */ case 22: m = new serverHelloDoneMsg.ptr(); $s = 28; continue; /* } else if (_ref === 16) { */ case 23: m = new clientKeyExchangeMsg.ptr(); $s = 28; continue; /* } else if (_ref === 15) { */ case 24: m = new certificateVerifyMsg.ptr(sliceType$4.nil, c.vers >= 771, new signatureAndHash.ptr(), sliceType$4.nil); $s = 28; continue; /* } else if (_ref === 67) { */ case 25: m = new nextProtoMsg.ptr(); $s = 28; continue; /* } else if (_ref === 20) { */ case 26: m = new finishedMsg.ptr(); $s = 28; continue; /* } else { */ case 27: _r$4 = c.sendAlert(10); /* */ $s = 29; case 29: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } _r$5 = c.in$17.setErrorLocked(_r$4); /* */ $s = 30; case 30: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } return [$ifaceNil, _r$5]; /* } */ case 28: data = $appendSlice(sliceType$4.nil, data); _r$6 = m.unmarshal(data); /* */ $s = 33; case 33: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } /* */ if (!_r$6) { $s = 31; continue; } /* */ $s = 32; continue; /* if (!_r$6) { */ case 31: _r$7 = c.sendAlert(10); /* */ $s = 34; case 34: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } _r$8 = c.in$17.setErrorLocked(_r$7); /* */ $s = 35; case 35: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } return [$ifaceNil, _r$8]; /* } */ case 32: return [m, $ifaceNil]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.readHandshake }; } $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.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, $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; $s = $f.$s; $deferred = $f.$deferred; $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.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 = 2; continue; } /* */ $s = 3; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2: return [0, err]; /* } */ case 3: $r = c.out.Mutex.Lock(); /* */ $s = 4; case 4: 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))) { return [0, err$1]; } if (!c.handshakeComplete) { return [0, new alert(80)]; } m = 0; /* */ if (b.$length > 1 && c.vers <= 769) { $s = 5; continue; } /* */ $s = 6; continue; /* if (b.$length > 1 && c.vers <= 769) { */ case 5: _tuple = $assertType(c.out.cipher, cipher.BlockMode, true); ok = _tuple[1]; /* */ if (ok) { $s = 7; continue; } /* */ $s = 8; continue; /* if (ok) { */ case 7: _r$1 = c.writeRecord(23, $subslice(b, 0, 1)); /* */ $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; n = _tuple$1[0]; err$2 = _tuple$1[1]; if (!($interfaceIsEqual(err$2, $ifaceNil))) { return [n, c.out.setErrorLocked(err$2)]; } _tmp = 1; _tmp$1 = $subslice(b, 1); m = _tmp; b = _tmp$1; /* } */ case 8: /* } */ case 6: _r$2 = c.writeRecord(23, b); /* */ $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; n$1 = _tuple$2[0]; err$3 = _tuple$2[1]; return [n$1 + m >> 0, c.out.setErrorLocked(err$3)]; /* */ $s = -1; case -1: } 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.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } }; Conn.prototype.Write = function(b) { return this.$val.Write(b); }; Conn.ptr.prototype.Read = function(b) { var $ptr, _r, _r$1, _r$2, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, b, c, emptyRecordCount, err, err$1, err$2, 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; _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; c = $f.c; emptyRecordCount = $f.emptyRecordCount; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; 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 = 2; continue; } /* */ $s = 3; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2: return [n, err]; /* } */ case 3: if (b.$length === 0) { return [n, err]; } $r = c.in$17.Mutex.Lock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $deferred.push([$methodVal(c.in$17.Mutex, "Unlock"), []]); emptyRecordCount = 0; /* while (true) { */ case 5: /* if (!(emptyRecordCount <= 100)) { break; } */ if(!(emptyRecordCount <= 100)) { $s = 6; continue; } /* while (true) { */ case 7: /* if (!(c.input === ptrType$8.nil && $interfaceIsEqual(c.in$17.err, $ifaceNil))) { break; } */ if(!(c.input === ptrType$8.nil && $interfaceIsEqual(c.in$17.err, $ifaceNil))) { $s = 8; continue; } _r$1 = c.readRecord(23); /* */ $s = 9; case 9: 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 = 10; continue; } /* */ $s = 11; continue; /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 10: _tmp = 0; _tmp$1 = err$1; n = _tmp; err = _tmp$1; return [n, err]; /* } */ case 11: /* } */ $s = 7; continue; case 8: err$2 = c.in$17.err; if (!($interfaceIsEqual(err$2, $ifaceNil))) { _tmp$2 = 0; _tmp$3 = err$2; n = _tmp$2; err = _tmp$3; return [n, err]; } _tuple = c.input.Read(b); n = _tuple[0]; err = _tuple[1]; if (c.input.off >= c.input.data.$length) { c.in$17.freeBlock(c.input); c.input = ptrType$8.nil; } ri = c.rawInput; /* */ if (!(ri === ptrType$8.nil) && !((n === 0)) && $interfaceIsEqual(err, $ifaceNil) && c.input === ptrType$8.nil && ri.data.$length > 0 && (((x = ri.data, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0])) << 24 >>> 24) === 21)) { $s = 12; continue; } /* */ $s = 13; continue; /* if (!(ri === ptrType$8.nil) && !((n === 0)) && $interfaceIsEqual(err, $ifaceNil) && c.input === ptrType$8.nil && ri.data.$length > 0 && (((x = ri.data, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0])) << 24 >>> 24) === 21)) { */ case 12: _r$2 = c.readRecord(23); /* */ $s = 14; case 14: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } recErr = _r$2; /* */ if (!($interfaceIsEqual(recErr, $ifaceNil))) { $s = 15; continue; } /* */ $s = 16; continue; /* if (!($interfaceIsEqual(recErr, $ifaceNil))) { */ case 15: err = recErr; /* } */ case 16: /* } */ case 13: if (!((n === 0)) || !($interfaceIsEqual(err, $ifaceNil))) { _tmp$4 = n; _tmp$5 = err; n = _tmp$4; err = _tmp$5; return [n, err]; } emptyRecordCount = emptyRecordCount + (1) >> 0; /* } */ $s = 5; continue; case 6: _tmp$6 = 0; _tmp$7 = io.ErrNoProgress; n = _tmp$6; err = _tmp$7; return [n, err]; /* */ $s = -1; case -1: } 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._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.c = c; $f.emptyRecordCount = emptyRecordCount; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $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, alertErr, 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; alertErr = $f.alertErr; 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; alertErr = $ifaceNil; $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 = 2; continue; } /* */ $s = 3; continue; /* if (c.handshakeComplete) { */ case 2: _r = c.sendAlert(0); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } alertErr = _r; /* } */ case 3: _r$1 = c.conn.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; /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 6; continue; } /* */ $s = 7; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 6: return err; /* } */ case 7: return alertErr; /* */ $s = -1; case -1: } 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.alertErr = alertErr; $f.c = c; $f.err = err; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } }; Conn.prototype.Close = function() { return this.$val.Close(); }; Conn.ptr.prototype.Handshake = function() { var $ptr, _r, _r$1, 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; 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"), []]); err = c.handshakeErr; if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } if (c.handshakeComplete) { return $ifaceNil; } /* */ if (c.isClient) { $s = 2; continue; } /* */ $s = 3; continue; /* if (c.isClient) { */ case 2: _r = c.clientHandshake(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } c.handshakeErr = _r; $s = 4; continue; /* } else { */ case 3: _r$1 = c.serverHandshake(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } c.handshakeErr = _r$1; /* } */ case 4: return c.handshakeErr; /* */ $s = -1; case -1: } 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.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 = $clone(new ConnectionState.ptr(), ConnectionState); state.HandshakeComplete = c.handshakeComplete; 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.ServerName = c.serverName; if (!c.didResume) { state.TLSUnique = new sliceType$4(c.firstFinished); } } return state; /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; return new ConnectionState.ptr(); } 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"), []]); return c.ocspResponse; /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; return sliceType$4.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) { return errors.New("tls: VerifyHostname called on TLS server connection"); } if (!c.handshakeComplete) { return errors.New("tls: handshake has not yet been performed"); } return (x = c.peerCertificates, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0])).VerifyHostname(host); /* */ $s = -1; case -1: } 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, c, cacheKey, candidateSession, cipherSuiteOk, err, err$1, err$10, 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; 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$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$2.nil) { c.config = defaultConfig(); } if ((c.config.ServerName.length === 0) && !c.config.InsecureSkipVerify) { 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") : _ref.$array[_ref.$offset + _i]); l = proto.length; if ((l === 0) || l > 255) { return errors.New("tls: invalid NextProtos value"); } else { nextProtosLength = nextProtosLength + ((1 + l >> 0)) >> 0; } _i++; } if (nextProtosLength > 65535) { return errors.New("tls: NextProtos values too large"); } hello = new clientHelloMsg.ptr(sliceType$4.nil, c.config.maxVersion(), $makeSlice(sliceType$4, 32), sliceType$4.nil, sliceType.nil, new sliceType$4([0]), c.config.NextProtos.$length > 0, c.config.ServerName, true, c.config.curvePreferences(), new sliceType$4([0]), false, sliceType$4.nil, sliceType$2.nil, true, c.config.NextProtos); _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, 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") : _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") : _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; } return _r$4; /* } */ case 6: if (hello.vers >= 771) { hello.signatureAndHashes = supportedSKXSignatureAlgorithms; } session = ptrType$7.nil; cacheKey = ""; sessionCache = c.config.ClientSessionCache; if (c.config.SessionTicketsDisabled) { sessionCache = $ifaceNil; } /* */ if (!($interfaceIsEqual(sessionCache, $ifaceNil))) { $s = 10; continue; } /* */ $s = 11; continue; /* if (!($interfaceIsEqual(sessionCache, $ifaceNil))) { */ case 10: hello.ticketSupported = true; _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") : _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$7.nil)) { $s = 15; continue; } /* */ $s = 16; continue; /* if (!(session === ptrType$7.nil)) { */ case 15: hello.sessionTicket = session.sessionTicket; hello.sessionId = $makeSlice(sliceType$4, 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; } 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; } _r$12; _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$3 = _r$13; msg = _tuple$3[0]; err = _tuple$3[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } _tuple$4 = $assertType(msg, ptrType$9, true); serverHello = _tuple$4[0]; ok$1 = _tuple$4[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; } return _r$15; /* } */ case 26: _tuple$5 = c.config.mutualVersion(serverHello.vers); vers = _tuple$5[0]; ok$1 = _tuple$5[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$5([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; } return _r$17; /* } */ case 30: c.vers = vers; c.haveVers = true; _r$18 = c.config.cipherSuites(); /* */ $s = 33; case 33: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; } _r$19 = mutualCipherSuite(_r$18, serverHello.cipherSuite); /* */ $s = 34; case 34: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; } suite$1 = _r$19; /* */ if (suite$1 === ptrType.nil) { $s = 35; continue; } /* */ $s = 36; continue; /* if (suite$1 === ptrType.nil) { */ case 35: _r$20 = c.sendAlert(40); /* */ $s = 37; case 37: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; } _r$20; _r$21 = fmt.Errorf("tls: server selected an unsupported cipher suite", new sliceType$5([])); /* */ $s = 38; case 38: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; } return _r$21; /* } */ case 36: hs = new clientHandshakeState.ptr(c, serverHello, hello, suite$1, $clone(newFinishedHash(c.vers), finishedHash), sliceType$4.nil, session); _r$22 = hs.finishedHash.Write(hs.hello.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; _r$23 = hs.finishedHash.Write(hs.serverHello.marshal()); /* */ $s = 40; case 40: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } _r$23; _r$24 = hs.processServerHello(); /* */ $s = 41; case 41: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } _tuple$6 = _r$24; isResume = _tuple$6[0]; err = _tuple$6[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } /* */ if (isResume) { $s = 42; continue; } /* */ $s = 43; continue; /* if (isResume) { */ case 42: _r$25 = hs.establishKeys(); /* */ $s = 45; case 45: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; } err$2 = _r$25; /* */ if (!($interfaceIsEqual(err$2, $ifaceNil))) { $s = 46; continue; } /* */ $s = 47; continue; /* if (!($interfaceIsEqual(err$2, $ifaceNil))) { */ case 46: return err$2; /* } */ case 47: _r$26 = hs.readSessionTicket(); /* */ $s = 48; case 48: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; } err$3 = _r$26; /* */ if (!($interfaceIsEqual(err$3, $ifaceNil))) { $s = 49; continue; } /* */ $s = 50; continue; /* if (!($interfaceIsEqual(err$3, $ifaceNil))) { */ case 49: return err$3; /* } */ case 50: _r$27 = hs.readFinished(new sliceType$4(c.firstFinished)); /* */ $s = 51; case 51: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; } err$4 = _r$27; /* */ if (!($interfaceIsEqual(err$4, $ifaceNil))) { $s = 52; continue; } /* */ $s = 53; continue; /* if (!($interfaceIsEqual(err$4, $ifaceNil))) { */ case 52: return err$4; /* } */ case 53: _r$28 = hs.sendFinished(sliceType$4.nil); /* */ $s = 54; case 54: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; } err$5 = _r$28; /* */ if (!($interfaceIsEqual(err$5, $ifaceNil))) { $s = 55; continue; } /* */ $s = 56; continue; /* if (!($interfaceIsEqual(err$5, $ifaceNil))) { */ case 55: return err$5; /* } */ case 56: $s = 44; continue; /* } else { */ case 43: _r$29 = hs.doFullHandshake(); /* */ $s = 57; case 57: if($c) { $c = false; _r$29 = _r$29.$blk(); } if (_r$29 && _r$29.$blk !== undefined) { break s; } err$6 = _r$29; /* */ if (!($interfaceIsEqual(err$6, $ifaceNil))) { $s = 58; continue; } /* */ $s = 59; continue; /* if (!($interfaceIsEqual(err$6, $ifaceNil))) { */ case 58: return err$6; /* } */ case 59: _r$30 = hs.establishKeys(); /* */ $s = 60; case 60: if($c) { $c = false; _r$30 = _r$30.$blk(); } if (_r$30 && _r$30.$blk !== undefined) { break s; } err$7 = _r$30; /* */ if (!($interfaceIsEqual(err$7, $ifaceNil))) { $s = 61; continue; } /* */ $s = 62; continue; /* if (!($interfaceIsEqual(err$7, $ifaceNil))) { */ case 61: return err$7; /* } */ case 62: _r$31 = hs.sendFinished(new sliceType$4(c.firstFinished)); /* */ $s = 63; case 63: 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 = 64; continue; } /* */ $s = 65; continue; /* if (!($interfaceIsEqual(err$8, $ifaceNil))) { */ case 64: return err$8; /* } */ case 65: _r$32 = hs.readSessionTicket(); /* */ $s = 66; case 66: if($c) { $c = false; _r$32 = _r$32.$blk(); } if (_r$32 && _r$32.$blk !== undefined) { break s; } err$9 = _r$32; /* */ if (!($interfaceIsEqual(err$9, $ifaceNil))) { $s = 67; continue; } /* */ $s = 68; continue; /* if (!($interfaceIsEqual(err$9, $ifaceNil))) { */ case 67: return err$9; /* } */ case 68: _r$33 = hs.readFinished(sliceType$4.nil); /* */ $s = 69; case 69: if($c) { $c = false; _r$33 = _r$33.$blk(); } if (_r$33 && _r$33.$blk !== undefined) { break s; } err$10 = _r$33; /* */ if (!($interfaceIsEqual(err$10, $ifaceNil))) { $s = 70; continue; } /* */ $s = 71; continue; /* if (!($interfaceIsEqual(err$10, $ifaceNil))) { */ case 70: return err$10; /* } */ case 71: /* } */ case 44: /* */ if (!($interfaceIsEqual(sessionCache, $ifaceNil)) && !(hs.session === ptrType$7.nil) && !(session === hs.session)) { $s = 72; continue; } /* */ $s = 73; continue; /* if (!($interfaceIsEqual(sessionCache, $ifaceNil)) && !(hs.session === ptrType$7.nil) && !(session === hs.session)) { */ case 72: $r = sessionCache.Put(cacheKey, hs.session); /* */ $s = 74; case 74: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 73: c.didResume = isResume; c.handshakeComplete = true; c.cipherSuite = suite$1.id; return $ifaceNil; /* */ $s = -1; case -1: } 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.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$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, _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$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, _ref$3, _ref$4, _ref$5, _ref$6, _ref$7, _ref$8, _tmp, _tmp$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, asn1Data, c, ca, cert, cert$1, cert$2, certMsg, certReq, certRequested, certType, certVerify, certs, chain, chainToSend, ckx, cs, digest, digest$1, ecdsaAvail, err, err$1, hashFunc, hashFunc$1, hashId, hashId$1, hs, i, i$1, i$2, j, key, keyAgreement$1, msg, ok, ok$1, ok$2, opts, preMasterSecret, rsaAvail, shd, signed, skx, 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; _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$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; _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; _ref$8 = $f._ref$8; _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$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; asn1Data = $f.asn1Data; c = $f.c; ca = $f.ca; cert = $f.cert; cert$1 = $f.cert$1; cert$2 = $f.cert$2; certMsg = $f.certMsg; certReq = $f.certReq; certRequested = $f.certRequested; certType = $f.certType; certVerify = $f.certVerify; certs = $f.certs; chain = $f.chain; chainToSend = $f.chainToSend; ckx = $f.ckx; cs = $f.cs; digest = $f.digest; digest$1 = $f.digest$1; ecdsaAvail = $f.ecdsaAvail; err = $f.err; err$1 = $f.err$1; hashFunc = $f.hashFunc; hashFunc$1 = $f.hashFunc$1; hashId = $f.hashId; hashId$1 = $f.hashId$1; hs = $f.hs; i = $f.i; i$1 = $f.i$1; i$2 = $f.i$2; j = $f.j; 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; rsaAvail = $f.rsaAvail; shd = $f.shd; signed = $f.signed; skx = $f.skx; x509Cert = $f.x509Cert; $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))) { return err; } _tuple$1 = $assertType(msg, ptrType$12, 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; } 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; certs = $makeSlice(sliceType$8, certMsg.certificates.$length); _ref = certMsg.certificates; _i = 0; /* while (true) { */ case 7: /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 8; continue; } i = _i; asn1Data = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]); _r$4 = x509.ParseCertificate(asn1Data); /* */ $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; cert = _tuple$2[0]; err$1 = _tuple$2[1]; /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 10; continue; } /* */ $s = 11; continue; /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 10: _r$5 = c.sendAlert(42); /* */ $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 = err$1.Error(); /* */ $s = 13; case 13: 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 = 14; case 14: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } return _r$7; /* } */ case 11: ((i < 0 || i >= certs.$length) ? $throwRuntimeError("index out of range") : certs.$array[certs.$offset + i] = cert); _i++; /* } */ $s = 7; continue; case 8: /* */ if (!c.config.InsecureSkipVerify) { $s = 15; continue; } /* */ $s = 16; continue; /* if (!c.config.InsecureSkipVerify) { */ case 15: _r$8 = c.config.time(); /* */ $s = 17; case 17: 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$9.nil); _ref$1 = certs; _i$1 = 0; /* while (true) { */ case 18: /* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 19; continue; } i$1 = _i$1; cert$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? $throwRuntimeError("index out of range") : _ref$1.$array[_ref$1.$offset + _i$1]); if (i$1 === 0) { _i$1++; /* continue; */ $s = 18; continue; } opts.Intermediates.AddCert(cert$1); _i$1++; /* } */ $s = 18; continue; case 19: _r$9 = (0 >= certs.$length ? $throwRuntimeError("index out of range") : certs.$array[certs.$offset + 0]).Verify(opts); /* */ $s = 20; case 20: 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 = 21; continue; } /* */ $s = 22; continue; /* if (!($interfaceIsEqual(err, $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; return err; /* } */ case 22: /* } */ case 16: _ref$2 = (0 >= certs.$length ? $throwRuntimeError("index out of range") : certs.$array[certs.$offset + 0]).PublicKey; /* */ if ($assertType(_ref$2, ptrType$15, true)[1] || $assertType(_ref$2, ptrType$16, true)[1]) { $s = 24; continue; } /* */ $s = 25; continue; /* switch (0) { default: if ($assertType(_ref$2, ptrType$15, true)[1] || $assertType(_ref$2, ptrType$16, true)[1]) { */ case 24: /* break; */ $s = 26; continue; $s = 26; continue; /* } else { */ case 25: _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: server's certificate contains an unsupported type of public key: %T", new sliceType$5([(0 >= certs.$length ? $throwRuntimeError("index out of range") : 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; } return _r$12; /* } } */ case 26: c.peerCertificates = certs; /* */ if (hs.serverHello.ocspStapling) { $s = 29; continue; } /* */ $s = 30; continue; /* if (hs.serverHello.ocspStapling) { */ case 29: _r$13 = c.readHandshake(); /* */ $s = 31; case 31: 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))) { return err; } _tuple$5 = $assertType(msg, ptrType$17, true); cs = _tuple$5[0]; ok$1 = _tuple$5[1]; /* */ if (!ok$1) { $s = 32; continue; } /* */ $s = 33; continue; /* if (!ok$1) { */ case 32: _r$14 = c.sendAlert(10); /* */ $s = 34; case 34: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } _r$14; _r$15 = unexpectedMessageError(cs, msg); /* */ $s = 35; case 35: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } return _r$15; /* } */ case 33: _r$16 = hs.finishedHash.Write(cs.marshal()); /* */ $s = 36; case 36: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } _r$16; if (cs.statusType === 1) { c.ocspResponse = cs.response; } /* } */ case 30: _r$17 = c.readHandshake(); /* */ $s = 37; case 37: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } _tuple$6 = _r$17; msg = _tuple$6[0]; err = _tuple$6[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } _r$18 = hs.suite.ka(c.vers); /* */ $s = 38; case 38: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; } keyAgreement$1 = _r$18; _tuple$7 = $assertType(msg, ptrType$18, true); skx = _tuple$7[0]; ok = _tuple$7[1]; /* */ if (ok) { $s = 39; continue; } /* */ $s = 40; continue; /* if (ok) { */ case 39: _r$19 = hs.finishedHash.Write(skx.marshal()); /* */ $s = 41; case 41: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; } _r$19; _r$20 = keyAgreement$1.processServerKeyExchange(c.config, hs.hello, hs.serverHello, (0 >= certs.$length ? $throwRuntimeError("index out of range") : certs.$array[certs.$offset + 0]), skx); /* */ $s = 42; case 42: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; } err = _r$20; /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 43; continue; } /* */ $s = 44; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 43: _r$21 = c.sendAlert(10); /* */ $s = 45; case 45: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; } _r$21; return err; /* } */ case 44: _r$22 = c.readHandshake(); /* */ $s = 46; case 46: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } _tuple$8 = _r$22; msg = _tuple$8[0]; err = _tuple$8[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } /* } */ case 40: chainToSend = ptrType$3.nil; certRequested = false; _tuple$9 = $assertType(msg, ptrType$19, true); certReq = _tuple$9[0]; ok = _tuple$9[1]; /* */ if (ok) { $s = 47; continue; } /* */ $s = 48; continue; /* if (ok) { */ case 47: certRequested = true; _r$23 = hs.finishedHash.Write(certReq.marshal()); /* */ $s = 49; case 49: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } _r$23; _tmp = false; _tmp$1 = false; rsaAvail = _tmp; ecdsaAvail = _tmp$1; _ref$3 = certReq.certificateTypes; _i$2 = 0; while (true) { if (!(_i$2 < _ref$3.$length)) { break; } certType = ((_i$2 < 0 || _i$2 >= _ref$3.$length) ? $throwRuntimeError("index out of range") : _ref$3.$array[_ref$3.$offset + _i$2]); _ref$4 = certType; if (_ref$4 === 1) { rsaAvail = true; } else if (_ref$4 === 64) { ecdsaAvail = true; } _i$2++; } _ref$5 = c.config.Certificates; _i$3 = 0; /* while (true) { */ case 50: /* if (!(_i$3 < _ref$5.$length)) { break; } */ if(!(_i$3 < _ref$5.$length)) { $s = 51; continue; } i$2 = _i$3; chain = $clone(((_i$3 < 0 || _i$3 >= _ref$5.$length) ? $throwRuntimeError("index out of range") : _ref$5.$array[_ref$5.$offset + _i$3]), Certificate); /* */ if (!rsaAvail && !ecdsaAvail) { $s = 52; continue; } /* */ $s = 53; continue; /* if (!rsaAvail && !ecdsaAvail) { */ case 52: _i$3++; /* continue; */ $s = 50; continue; /* } */ case 53: _ref$6 = chain.Certificate; _i$4 = 0; /* while (true) { */ case 54: /* if (!(_i$4 < _ref$6.$length)) { break; } */ if(!(_i$4 < _ref$6.$length)) { $s = 55; continue; } j = _i$4; cert$2 = ((_i$4 < 0 || _i$4 >= _ref$6.$length) ? $throwRuntimeError("index out of range") : _ref$6.$array[_ref$6.$offset + _i$4]); x509Cert = chain.Leaf; /* */ if (!((j === 0)) || x509Cert === ptrType$13.nil) { $s = 56; continue; } /* */ $s = 57; continue; /* if (!((j === 0)) || x509Cert === ptrType$13.nil) { */ case 56: _r$24 = x509.ParseCertificate(cert$2); /* */ $s = 58; case 58: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } _tuple$10 = _r$24; x509Cert = _tuple$10[0]; err = _tuple$10[1]; /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 59; continue; } /* */ $s = 60; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 59: _r$25 = c.sendAlert(80); /* */ $s = 61; case 61: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; } _r$25; _r$26 = err.Error(); /* */ $s = 62; case 62: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; } _r$27 = errors.New("tls: failed to parse client certificate #" + strconv.Itoa(i$2) + ": " + _r$26); /* */ $s = 63; case 63: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; } return _r$27; /* } */ case 60: /* } */ case 57: if (rsaAvail && (x509Cert.PublicKeyAlgorithm === 1)) { } else if (ecdsaAvail && (x509Cert.PublicKeyAlgorithm === 3)) { } else { _i$3++; /* continue findCert; */ $s = 50; continue s; } if (certReq.certificateAuthorities.$length === 0) { chainToSend = chain; /* break findCert; */ $s = 51; continue s; } _ref$7 = certReq.certificateAuthorities; _i$5 = 0; while (true) { if (!(_i$5 < _ref$7.$length)) { break; } ca = ((_i$5 < 0 || _i$5 >= _ref$7.$length) ? $throwRuntimeError("index out of range") : _ref$7.$array[_ref$7.$offset + _i$5]); if (bytes.Equal(x509Cert.RawIssuer, ca)) { chainToSend = chain; /* break findCert; */ $s = 51; continue s; } _i$5++; } _i$4++; /* } */ $s = 54; continue; case 55: _i$3++; /* } */ $s = 50; continue; case 51: _r$28 = c.readHandshake(); /* */ $s = 64; case 64: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; } _tuple$11 = _r$28; msg = _tuple$11[0]; err = _tuple$11[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } /* } */ case 48: _tuple$12 = $assertType(msg, ptrType$20, true); shd = _tuple$12[0]; ok = _tuple$12[1]; /* */ if (!ok) { $s = 65; continue; } /* */ $s = 66; continue; /* if (!ok) { */ case 65: _r$29 = c.sendAlert(10); /* */ $s = 67; case 67: if($c) { $c = false; _r$29 = _r$29.$blk(); } if (_r$29 && _r$29.$blk !== undefined) { break s; } _r$29; _r$30 = unexpectedMessageError(shd, msg); /* */ $s = 68; case 68: if($c) { $c = false; _r$30 = _r$30.$blk(); } if (_r$30 && _r$30.$blk !== undefined) { break s; } return _r$30; /* } */ case 66: _r$31 = hs.finishedHash.Write(shd.marshal()); /* */ $s = 69; case 69: if($c) { $c = false; _r$31 = _r$31.$blk(); } if (_r$31 && _r$31.$blk !== undefined) { break s; } _r$31; /* */ if (certRequested) { $s = 70; continue; } /* */ $s = 71; continue; /* if (certRequested) { */ case 70: certMsg = new certificateMsg.ptr(); if (!(chainToSend === ptrType$3.nil)) { certMsg.certificates = chainToSend.Certificate; } _r$32 = hs.finishedHash.Write(certMsg.marshal()); /* */ $s = 72; case 72: if($c) { $c = false; _r$32 = _r$32.$blk(); } if (_r$32 && _r$32.$blk !== undefined) { break s; } _r$32; _r$33 = c.writeRecord(22, certMsg.marshal()); /* */ $s = 73; case 73: if($c) { $c = false; _r$33 = _r$33.$blk(); } if (_r$33 && _r$33.$blk !== undefined) { break s; } _r$33; /* } */ case 71: _r$34 = keyAgreement$1.generateClientKeyExchange(c.config, hs.hello, (0 >= certs.$length ? $throwRuntimeError("index out of range") : certs.$array[certs.$offset + 0])); /* */ $s = 74; case 74: if($c) { $c = false; _r$34 = _r$34.$blk(); } if (_r$34 && _r$34.$blk !== undefined) { break s; } _tuple$13 = _r$34; preMasterSecret = _tuple$13[0]; ckx = _tuple$13[1]; err = _tuple$13[2]; /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 75; continue; } /* */ $s = 76; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 75: _r$35 = c.sendAlert(80); /* */ $s = 77; case 77: if($c) { $c = false; _r$35 = _r$35.$blk(); } if (_r$35 && _r$35.$blk !== undefined) { break s; } _r$35; return err; /* } */ case 76: /* */ if (!(ckx === ptrType$21.nil)) { $s = 78; continue; } /* */ $s = 79; continue; /* if (!(ckx === ptrType$21.nil)) { */ case 78: _r$36 = hs.finishedHash.Write(ckx.marshal()); /* */ $s = 80; case 80: if($c) { $c = false; _r$36 = _r$36.$blk(); } if (_r$36 && _r$36.$blk !== undefined) { break s; } _r$36; _r$37 = c.writeRecord(22, ckx.marshal()); /* */ $s = 81; case 81: if($c) { $c = false; _r$37 = _r$37.$blk(); } if (_r$37 && _r$37.$blk !== undefined) { break s; } _r$37; /* } */ case 79: /* */ if (!(chainToSend === ptrType$3.nil)) { $s = 82; continue; } /* */ $s = 83; continue; /* if (!(chainToSend === ptrType$3.nil)) { */ case 82: signed = sliceType$4.nil; certVerify = new certificateVerifyMsg.ptr(sliceType$4.nil, c.vers >= 771, new signatureAndHash.ptr(), sliceType$4.nil); _tuple$14 = $assertType(chainToSend.PrivateKey, crypto.Signer, true); key = _tuple$14[0]; ok$2 = _tuple$14[1]; /* */ if (!ok$2) { $s = 84; continue; } /* */ $s = 85; continue; /* if (!ok$2) { */ case 84: _r$38 = c.sendAlert(80); /* */ $s = 86; case 86: if($c) { $c = false; _r$38 = _r$38.$blk(); } if (_r$38 && _r$38.$blk !== undefined) { break s; } _r$38; _r$39 = fmt.Errorf("tls: client certificate private key of type %T does not implement crypto.Signer", new sliceType$5([chainToSend.PrivateKey])); /* */ $s = 87; case 87: if($c) { $c = false; _r$39 = _r$39.$blk(); } if (_r$39 && _r$39.$blk !== undefined) { break s; } return _r$39; /* } */ case 85: _r$40 = key.Public(); /* */ $s = 88; case 88: if($c) { $c = false; _r$40 = _r$40.$blk(); } if (_r$40 && _r$40.$blk !== undefined) { break s; } _ref$8 = _r$40; /* */ if ($assertType(_ref$8, ptrType$16, true)[1]) { $s = 89; continue; } /* */ if ($assertType(_ref$8, ptrType$15, true)[1]) { $s = 90; continue; } /* */ $s = 91; continue; /* if ($assertType(_ref$8, ptrType$16, true)[1]) { */ case 89: _r$41 = hs.finishedHash.hashForClientCertificate(3); /* */ $s = 93; case 93: if($c) { $c = false; _r$41 = _r$41.$blk(); } if (_r$41 && _r$41.$blk !== undefined) { break s; } _tuple$15 = _r$41; digest = _tuple$15[0]; hashFunc = _tuple$15[1]; hashId = _tuple$15[2]; _r$42 = key.Sign(c.config.rand(), digest, new crypto.Hash(hashFunc)); /* */ $s = 94; case 94: if($c) { $c = false; _r$42 = _r$42.$blk(); } if (_r$42 && _r$42.$blk !== undefined) { break s; } _tuple$16 = _r$42; signed = _tuple$16[0]; err = _tuple$16[1]; certVerify.signatureAndHash.signature = 3; certVerify.signatureAndHash.hash = hashId; $s = 92; continue; /* } else if ($assertType(_ref$8, ptrType$15, true)[1]) { */ case 90: _r$43 = hs.finishedHash.hashForClientCertificate(1); /* */ $s = 95; case 95: if($c) { $c = false; _r$43 = _r$43.$blk(); } if (_r$43 && _r$43.$blk !== undefined) { break s; } _tuple$17 = _r$43; digest$1 = _tuple$17[0]; hashFunc$1 = _tuple$17[1]; hashId$1 = _tuple$17[2]; _r$44 = key.Sign(c.config.rand(), digest$1, new crypto.Hash(hashFunc$1)); /* */ $s = 96; case 96: if($c) { $c = false; _r$44 = _r$44.$blk(); } if (_r$44 && _r$44.$blk !== undefined) { break s; } _tuple$18 = _r$44; signed = _tuple$18[0]; err = _tuple$18[1]; certVerify.signatureAndHash.signature = 1; certVerify.signatureAndHash.hash = hashId$1; $s = 92; continue; /* } else { */ case 91: _r$45 = fmt.Errorf("tls: unknown client certificate key type: %T", new sliceType$5([key])); /* */ $s = 97; case 97: if($c) { $c = false; _r$45 = _r$45.$blk(); } if (_r$45 && _r$45.$blk !== undefined) { break s; } err = _r$45; /* } */ case 92: /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 98; continue; } /* */ $s = 99; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 98: _r$46 = c.sendAlert(80); /* */ $s = 100; case 100: if($c) { $c = false; _r$46 = _r$46.$blk(); } if (_r$46 && _r$46.$blk !== undefined) { break s; } _r$46; _r$47 = err.Error(); /* */ $s = 101; case 101: if($c) { $c = false; _r$47 = _r$47.$blk(); } if (_r$47 && _r$47.$blk !== undefined) { break s; } _r$48 = errors.New("tls: failed to sign handshake with client certificate: " + _r$47); /* */ $s = 102; case 102: if($c) { $c = false; _r$48 = _r$48.$blk(); } if (_r$48 && _r$48.$blk !== undefined) { break s; } return _r$48; /* } */ case 99: certVerify.signature = signed; _r$49 = hs.finishedHash.Write(certVerify.marshal()); /* */ $s = 103; case 103: 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 = 104; case 104: if($c) { $c = false; _r$50 = _r$50.$blk(); } if (_r$50 && _r$50.$blk !== undefined) { break s; } _r$50; /* } */ case 83: _r$51 = masterFromPreMasterSecret(c.vers, preMasterSecret, hs.hello.random, hs.serverHello.random); /* */ $s = 105; case 105: if($c) { $c = false; _r$51 = _r$51.$blk(); } if (_r$51 && _r$51.$blk !== undefined) { break s; } hs.masterSecret = _r$51; return $ifaceNil; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: clientHandshakeState.ptr.prototype.doFullHandshake }; } $f.$ptr = $ptr; $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$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._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._ref$8 = _ref$8; $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$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.asn1Data = asn1Data; $f.c = c; $f.ca = ca; $f.cert = cert; $f.cert$1 = cert$1; $f.cert$2 = cert$2; $f.certMsg = certMsg; $f.certReq = certReq; $f.certRequested = certRequested; $f.certType = certType; $f.certVerify = certVerify; $f.certs = certs; $f.chain = chain; $f.chainToSend = chainToSend; $f.ckx = ckx; $f.cs = cs; $f.digest = digest; $f.digest$1 = digest$1; $f.ecdsaAvail = ecdsaAvail; $f.err = err; $f.err$1 = err$1; $f.hashFunc = hashFunc; $f.hashFunc$1 = hashFunc$1; $f.hashId = hashId; $f.hashId$1 = hashId$1; $f.hs = hs; $f.i = i; $f.i$1 = i$1; $f.i$2 = i$2; $f.j = j; $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.rsaAvail = rsaAvail; $f.shd = shd; $f.signed = signed; $f.skx = skx; $f.x509Cert = x509Cert; $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.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$17.prepareCipherSpec(c.vers, serverCipher, serverHash); c.out.prepareCipherSpec(c.vers, clientCipher, clientHash); return $ifaceNil; /* */ $s = -1; case -1: } 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$7.nil) && !(hs.hello.sessionId === sliceType$4.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, c, clientDidALPN, clientDidNPN, 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; c = $f.c; clientDidALPN = $f.clientDidALPN; clientDidNPN = $f.clientDidNPN; 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; return [false, errors.New("tls: server selected unsupported compression format")]; /* } */ case 2: clientDidNPN = hs.hello.nextProtoNeg; clientDidALPN = hs.hello.alpnProtocols.$length > 0; serverHasNPN = hs.serverHello.nextProtoNeg; serverHasALPN = hs.serverHello.alpnProtocol.length > 0; /* */ if (!clientDidNPN && serverHasNPN) { $s = 4; continue; } /* */ $s = 5; continue; /* if (!clientDidNPN && serverHasNPN) { */ case 4: _r$1 = c.sendAlert(40); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } _r$1; return [false, errors.New("server advertised unrequested NPN extension")]; /* } */ case 5: /* */ if (!clientDidALPN && serverHasALPN) { $s = 7; continue; } /* */ $s = 8; continue; /* if (!clientDidALPN && serverHasALPN) { */ case 7: _r$2 = c.sendAlert(40); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } _r$2; return [false, errors.New("server advertised unrequested ALPN extension")]; /* } */ case 8: /* */ if (serverHasNPN && serverHasALPN) { $s = 10; continue; } /* */ $s = 11; continue; /* if (serverHasNPN && serverHasALPN) { */ case 10: _r$3 = c.sendAlert(40); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } _r$3; return [false, errors.New("server advertised both NPN and ALPN extensions")]; /* } */ case 11: if (serverHasALPN) { c.clientProtocol = hs.serverHello.alpnProtocol; c.clientProtocolFallback = false; } if (hs.serverResumedSession()) { hs.masterSecret = hs.session.masterSecret; c.peerCertificates = hs.session.serverCertificates; return [true, $ifaceNil]; } return [false, $ifaceNil]; /* */ $s = -1; case -1: } 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.c = c; $f.clientDidALPN = clientDidALPN; $f.clientDidNPN = clientDidNPN; $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, _r$7, _tuple, _tuple$1, c, err, err$1, 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; _r$7 = $f._r$7; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; c = $f.c; err = $f.err; err$1 = $f.err$1; 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; _r$1 = c.in$17.error(); /* */ $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 = 3; continue; } /* */ $s = 4; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 3: return err; /* } */ case 4: _r$2 = c.readHandshake(); /* */ $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; msg = _tuple[0]; err$1 = _tuple[1]; if (!($interfaceIsEqual(err$1, $ifaceNil))) { return err$1; } _tuple$1 = $assertType(msg, ptrType$22, true); serverFinished = _tuple$1[0]; ok = _tuple$1[1]; /* */ if (!ok) { $s = 6; continue; } /* */ $s = 7; continue; /* if (!ok) { */ case 6: _r$3 = c.sendAlert(10); /* */ $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 = unexpectedMessageError(serverFinished, msg); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } return _r$4; /* } */ case 7: _r$5 = hs.finishedHash.serverSum(hs.masterSecret); /* */ $s = 10; case 10: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } verify = _r$5; /* */ if (!((verify.$length === serverFinished.verifyData.$length)) || !((subtle.ConstantTimeCompare(verify, serverFinished.verifyData) === 1))) { $s = 11; continue; } /* */ $s = 12; continue; /* if (!((verify.$length === serverFinished.verifyData.$length)) || !((subtle.ConstantTimeCompare(verify, serverFinished.verifyData) === 1))) { */ case 11: _r$6 = c.sendAlert(40); /* */ $s = 13; case 13: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } _r$6; return errors.New("tls: server's Finished message was incorrect"); /* } */ case 12: _r$7 = hs.finishedHash.Write(serverFinished.marshal()); /* */ $s = 14; case 14: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } _r$7; $copySlice(out, verify); return $ifaceNil; /* */ $s = -1; case -1: } 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._r$7 = _r$7; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.c = c; $f.err = err; $f.err$1 = err$1; $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) { 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))) { return err; } _tuple$1 = $assertType(msg, ptrType$23, 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; } 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); return $ifaceNil; /* */ $s = -1; case -1: } 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, c, 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; c = $f.c; 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$4([1])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _r; /* */ if (hs.serverHello.nextProtoNeg) { $s = 2; continue; } /* */ $s = 3; continue; /* if (hs.serverHello.nextProtoNeg) { */ case 2: nextProto = new nextProtoMsg.ptr(); _tuple = mutualProtocol(c.config.NextProtos, hs.serverHello.nextProtos); proto = _tuple[0]; fallback = _tuple[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; } _r$2; /* } */ case 3: finished = new finishedMsg.ptr(); _r$3 = hs.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; } _r$5; $copySlice(out, finished.verifyData); return $ifaceNil; /* */ $s = -1; case -1: } 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.c = c; $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); }; 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) { return config.ServerName; } _r = serverAddr.String(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -1: } 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") : _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") : _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") : protos.$array[protos.$offset + 0]), true]; }; 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$4.nil)) { return m.raw; } length = ((((35 + m.sessionId.$length >> 0) + 2 >> 0) + (m.cipherSuites.$length * 2 >> 0) >> 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 + (2 * m.supportedCurves.$length >> 0) >> 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 + (2 * m.signatureAndHashes.$length >> 0) >> 0)) >> 0; numExtensions = numExtensions + (1) >> 0; } if (m.secureRenegotiation) { extensionsLength = extensionsLength + (1) >> 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") : _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 (numExtensions > 0) { extensionsLength = extensionsLength + ((4 * numExtensions >> 0)) >> 0; length = length + ((2 + extensionsLength >> 0)) >> 0; } x = $makeSlice(sliceType$4, (4 + length >> 0)); (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0] = 1); (1 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 1] = ((length >> 16 >> 0) << 24 >>> 24)); (2 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 2] = ((length >> 8 >> 0) << 24 >>> 24)); (3 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 3] = (length << 24 >>> 24)); (4 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 4] = ((m.vers >>> 8 << 16 >>> 16) << 24 >>> 24)); (5 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 5] = (m.vers << 24 >>> 24)); $copySlice($subslice(x, 6, 38), m.random); (38 >= x.$length ? $throwRuntimeError("index out of range") : 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") : y.$array[y.$offset + 0] = ((m.cipherSuites.$length >> 7 >> 0) << 24 >>> 24)); (1 >= y.$length ? $throwRuntimeError("index out of range") : 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") : _ref$1.$array[_ref$1.$offset + _i$1]); (x$1 = 2 + (i * 2 >> 0) >> 0, ((x$1 < 0 || x$1 >= y.$length) ? $throwRuntimeError("index out of range") : y.$array[y.$offset + x$1] = ((suite >>> 8 << 16 >>> 16) << 24 >>> 24))); (x$2 = 3 + (i * 2 >> 0) >> 0, ((x$2 < 0 || x$2 >= y.$length) ? $throwRuntimeError("index out of range") : y.$array[y.$offset + x$2] = (suite << 24 >>> 24))); _i$1++; } z = $subslice(y, (2 + (m.cipherSuites.$length * 2 >> 0) >> 0)); (0 >= z.$length ? $throwRuntimeError("index out of range") : 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") : z.$array[z.$offset + 0] = ((extensionsLength >> 8 >> 0) << 24 >>> 24)); (1 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 1] = (extensionsLength << 24 >>> 24)); z = $subslice(z, 2); } if (m.nextProtoNeg) { (0 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 0] = 51); (1 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 1] = 116); z = $subslice(z, 4); } if (m.serverName.length > 0) { (0 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 0] = 0); (1 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 1] = 0); l$1 = m.serverName.length + 5 >> 0; (2 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 2] = ((l$1 >> 8 >> 0) << 24 >>> 24)); (3 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 3] = (l$1 << 24 >>> 24)); z = $subslice(z, 4); (0 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 0] = ((((m.serverName.length + 3 >> 0)) >> 8 >> 0) << 24 >>> 24)); (1 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 1] = ((m.serverName.length + 3 >> 0) << 24 >>> 24)); (3 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 3] = ((m.serverName.length >> 8 >> 0) << 24 >>> 24)); (4 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 4] = (m.serverName.length << 24 >>> 24)); $copySlice($subslice(z, 5), new sliceType$4($stringToBytes(m.serverName))); z = $subslice(z, l$1); } if (m.ocspStapling) { (0 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 0] = 0); (1 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 1] = 5); (2 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 2] = 0); (3 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 3] = 5); (4 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 4] = 1); z = $subslice(z, 9); } if (m.supportedCurves.$length > 0) { (0 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 0] = 0); (1 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 1] = 10); l$2 = 2 + (2 * m.supportedCurves.$length >> 0) >> 0; (2 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 2] = ((l$2 >> 8 >> 0) << 24 >>> 24)); (3 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 3] = (l$2 << 24 >>> 24)); l$2 = l$2 - (2) >> 0; (4 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 4] = ((l$2 >> 8 >> 0) << 24 >>> 24)); (5 >= z.$length ? $throwRuntimeError("index out of range") : 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") : _ref$2.$array[_ref$2.$offset + _i$2]); (0 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 0] = ((curve >>> 8 << 16 >>> 16) << 24 >>> 24)); (1 >= z.$length ? $throwRuntimeError("index out of range") : 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") : z.$array[z.$offset + 0] = 0); (1 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 1] = 11); l$3 = 1 + m.supportedPoints.$length >> 0; (2 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 2] = ((l$3 >> 8 >> 0) << 24 >>> 24)); (3 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 3] = (l$3 << 24 >>> 24)); l$3 = l$3 - (1) >> 0; (4 >= z.$length ? $throwRuntimeError("index out of range") : 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") : _ref$3.$array[_ref$3.$offset + _i$3]); (0 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 0] = pointFormat); z = $subslice(z, 1); _i$3++; } } if (m.ticketSupported) { (0 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 0] = 0); (1 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 1] = 35); l$4 = m.sessionTicket.$length; (2 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 2] = ((l$4 >> 8 >> 0) << 24 >>> 24)); (3 >= z.$length ? $throwRuntimeError("index out of range") : 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") : z.$array[z.$offset + 0] = 0); (1 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 1] = 13); l$5 = 2 + (2 * m.signatureAndHashes.$length >> 0) >> 0; (2 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 2] = ((l$5 >> 8 >> 0) << 24 >>> 24)); (3 >= z.$length ? $throwRuntimeError("index out of range") : 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") : z.$array[z.$offset + 0] = ((l$5 >> 8 >> 0) << 24 >>> 24)); (1 >= z.$length ? $throwRuntimeError("index out of range") : 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") : _ref$4.$array[_ref$4.$offset + _i$4]), signatureAndHash); (0 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 0] = sigAndHash.hash); (1 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 1] = sigAndHash.signature); z = $subslice(z, 2); _i$4++; } } if (m.secureRenegotiation) { (0 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 0] = 255); (1 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 1] = 1); (2 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 2] = 0); (3 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 3] = 1); z = $subslice(z, 5); } if (m.alpnProtocols.$length > 0) { (0 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 0] = 0); (1 >= z.$length ? $throwRuntimeError("index out of range") : 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") : _ref$5.$array[_ref$5.$offset + _i$5]); l$6 = s$1.length; (0 >= z.$length ? $throwRuntimeError("index out of range") : 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") : lengths.$array[lengths.$offset + 2] = ((stringsLength >> 8 >> 0) << 24 >>> 24)); (3 >= lengths.$length ? $throwRuntimeError("index out of range") : lengths.$array[lengths.$offset + 3] = (stringsLength << 24 >>> 24)); stringsLength = stringsLength + (2) >> 0; (0 >= lengths.$length ? $throwRuntimeError("index out of range") : lengths.$array[lengths.$offset + 0] = ((stringsLength >> 8 >> 0) << 24 >>> 24)); (1 >= lengths.$length ? $throwRuntimeError("index out of range") : lengths.$array[lengths.$offset + 1] = (stringsLength << 24 >>> 24)); } m.raw = x; return x; }; clientHelloMsg.prototype.marshal = function() { return this.$val.marshal(); }; clientHelloMsg.ptr.prototype.unmarshal = function(data) { var $ptr, _i, _q, _q$1, _q$2, _r, _r$1, _ref, _ref$1, cipherSuiteLen, compressionMethodsLen, d, d$1, d$2, d$3, data, extension, extensionsLength, i, i$1, i$2, i$3, l, l$1, l$2, l$3, length, m, n, nameLen, nameType, numCipherSuites, numCurves, numNames, 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") : data.$array[data.$offset + 4]) << 16 >>> 16) << 8 << 16 >>> 16) | ((5 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 5]) << 16 >>> 16)) >>> 0; m.random = $subslice(data, 6, 38); sessionIdLen = ((38 >= data.$length ? $throwRuntimeError("index out of range") : 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") : data.$array[data.$offset + 0]) >> 0) << 8 >> 0) | ((1 >= data.$length ? $throwRuntimeError("index out of range") : 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, numCipherSuites); i = 0; while (true) { if (!(i < numCipherSuites)) { break; } (x$2 = m.cipherSuites, ((i < 0 || i >= x$2.$length) ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + i] = ((((x = 2 + (2 * i >> 0) >> 0, ((x < 0 || x >= data.$length) ? $throwRuntimeError("index out of range") : data.$array[data.$offset + x])) << 16 >>> 16) << 8 << 16 >>> 16) | ((x$1 = 3 + (2 * i >> 0) >> 0, ((x$1 < 0 || x$1 >= data.$length) ? $throwRuntimeError("index out of range") : 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") : x$3.$array[x$3.$offset + i])) === 255) { m.secureRenegotiation = 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") : 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$4.nil; m.signatureAndHashes = sliceType$2.nil; m.alpnProtocols = sliceType$7.nil; if (data.$length === 0) { return true; } if (data.$length < 2) { return false; } extensionsLength = (((0 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 0]) >> 0) << 8 >> 0) | ((1 >= data.$length ? $throwRuntimeError("index out of range") : 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") : data.$array[data.$offset + 0]) << 16 >>> 16) << 8 << 16 >>> 16) | ((1 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 1]) << 16 >>> 16)) >>> 0; length = (((2 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 2]) >> 0) << 8 >> 0) | ((3 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 3]) >> 0); data = $subslice(data, 4); if (data.$length < length) { return false; } _ref = extension; if (_ref === 0) { if (length < 2) { return false; } numNames = (((0 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 0]) >> 0) << 8 >> 0) | ((1 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 1]) >> 0); d = $subslice(data, 2); i$1 = 0; while (true) { if (!(i$1 < numNames)) { break; } if (d.$length < 3) { return false; } nameType = (0 >= d.$length ? $throwRuntimeError("index out of range") : d.$array[d.$offset + 0]); nameLen = (((1 >= d.$length ? $throwRuntimeError("index out of range") : d.$array[d.$offset + 1]) >> 0) << 8 >> 0) | ((2 >= d.$length ? $throwRuntimeError("index out of range") : 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); i$1 = i$1 + (1) >> 0; } } else if (_ref === 13172) { if (length > 0) { return false; } m.nextProtoNeg = true; } else if (_ref === 5) { m.ocspStapling = length > 0 && ((0 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 0]) === 1); } else if (_ref === 10) { if (length < 2) { return false; } l = (((0 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 0]) >> 0) << 8 >> 0) | ((1 >= data.$length ? $throwRuntimeError("index out of range") : 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$2 = 0; while (true) { if (!(i$2 < numCurves)) { break; } (x$4 = m.supportedCurves, ((i$2 < 0 || i$2 >= x$4.$length) ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + i$2] = ((((0 >= d$1.$length ? $throwRuntimeError("index out of range") : d$1.$array[d$1.$offset + 0]) << 16 >>> 16) << 8 << 16 >>> 16) | ((1 >= d$1.$length ? $throwRuntimeError("index out of range") : d$1.$array[d$1.$offset + 1]) << 16 >>> 16)) >>> 0)); d$1 = $subslice(d$1, 2); i$2 = i$2 + (1) >> 0; } } else if (_ref === 11) { if (length < 1) { return false; } l$1 = ((0 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 0]) >> 0); if (!((length === (l$1 + 1 >> 0)))) { return false; } m.supportedPoints = $makeSlice(sliceType$4, l$1); $copySlice(m.supportedPoints, $subslice(data, 1)); } else if (_ref === 35) { m.ticketSupported = true; m.sessionTicket = $subslice(data, 0, length); } else if (_ref === 13) { if (length < 2 || !(((length & 1) === 0))) { return false; } l$2 = (((0 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 0]) >> 0) << 8 >> 0) | ((1 >= data.$length ? $throwRuntimeError("index out of range") : 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$2, n); _ref$1 = m.signatureAndHashes; _i = 0; while (true) { if (!(_i < _ref$1.$length)) { break; } i$3 = _i; (x$5 = m.signatureAndHashes, ((i$3 < 0 || i$3 >= x$5.$length) ? $throwRuntimeError("index out of range") : x$5.$array[x$5.$offset + i$3])).hash = (0 >= d$2.$length ? $throwRuntimeError("index out of range") : d$2.$array[d$2.$offset + 0]); (x$6 = m.signatureAndHashes, ((i$3 < 0 || i$3 >= x$6.$length) ? $throwRuntimeError("index out of range") : x$6.$array[x$6.$offset + i$3])).signature = (1 >= d$2.$length ? $throwRuntimeError("index out of range") : d$2.$array[d$2.$offset + 1]); d$2 = $subslice(d$2, 2); _i++; } } else if (_ref === 65282) { if (!((length === 1)) || !(((0 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 0]) === 0))) { return false; } m.secureRenegotiation = true; } else if (_ref === 16) { if (length < 2) { return false; } l$3 = (((0 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 0]) >> 0) << 8 >> 0) | ((1 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 1]) >> 0); if (!((l$3 === (length - 2 >> 0)))) { return false; } d$3 = $subslice(data, 2, length); while (true) { if (!(!((d$3.$length === 0)))) { break; } stringLen = ((0 >= d$3.$length ? $throwRuntimeError("index out of range") : d$3.$array[d$3.$offset + 0]) >> 0); d$3 = $subslice(d$3, 1); if ((stringLen === 0) || stringLen > d$3.$length) { return false; } m.alpnProtocols = $append(m.alpnProtocols, $bytesToString($subslice(d$3, 0, stringLen))); d$3 = $subslice(d$3, stringLen); } } 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, _ref, _ref$1, alpnLen, alpnLen$1, extensionsLength, l, l$1, length, m, nextProtoLen, numExtensions, v, v$1, x, z; m = this; if (!(m.raw === sliceType$4.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") : _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.secureRenegotiation) { extensionsLength = extensionsLength + (1) >> 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; } if (numExtensions > 0) { extensionsLength = extensionsLength + ((4 * numExtensions >> 0)) >> 0; length = length + ((2 + extensionsLength >> 0)) >> 0; } x = $makeSlice(sliceType$4, (4 + length >> 0)); (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0] = 2); (1 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 1] = ((length >> 16 >> 0) << 24 >>> 24)); (2 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 2] = ((length >> 8 >> 0) << 24 >>> 24)); (3 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 3] = (length << 24 >>> 24)); (4 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 4] = ((m.vers >>> 8 << 16 >>> 16) << 24 >>> 24)); (5 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 5] = (m.vers << 24 >>> 24)); $copySlice($subslice(x, 6, 38), m.random); (38 >= x.$length ? $throwRuntimeError("index out of range") : 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") : z.$array[z.$offset + 0] = ((m.cipherSuite >>> 8 << 16 >>> 16) << 24 >>> 24)); (1 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 1] = (m.cipherSuite << 24 >>> 24)); (2 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 2] = m.compressionMethod); z = $subslice(z, 3); if (numExtensions > 0) { (0 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 0] = ((extensionsLength >> 8 >> 0) << 24 >>> 24)); (1 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 1] = (extensionsLength << 24 >>> 24)); z = $subslice(z, 2); } if (m.nextProtoNeg) { (0 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 0] = 51); (1 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 1] = 116); (2 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 2] = ((nextProtoLen >> 8 >> 0) << 24 >>> 24)); (3 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 3] = (nextProtoLen << 24 >>> 24)); z = $subslice(z, 4); _ref$1 = m.nextProtos; _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") : _ref$1.$array[_ref$1.$offset + _i$1]); l = v$1.length; if (l > 255) { l = 255; } (0 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 0] = (l << 24 >>> 24)); $copySlice($subslice(z, 1), new sliceType$4($stringToBytes(v$1.substring(0, l)))); z = $subslice(z, (1 + l >> 0)); _i$1++; } } if (m.ocspStapling) { (0 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 0] = 0); (1 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 1] = 5); z = $subslice(z, 4); } if (m.ticketSupported) { (0 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 0] = 0); (1 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 1] = 35); z = $subslice(z, 4); } if (m.secureRenegotiation) { (0 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 0] = 255); (1 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 1] = 1); (2 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 2] = 0); (3 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 3] = 1); z = $subslice(z, 5); } alpnLen$1 = m.alpnProtocol.length; if (alpnLen$1 > 0) { (0 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 0] = 0); (1 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 1] = 16); l$1 = 3 + alpnLen$1 >> 0; (2 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 2] = ((l$1 >> 8 >> 0) << 24 >>> 24)); (3 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 3] = (l$1 << 24 >>> 24)); l$1 = l$1 - (2) >> 0; (4 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 4] = ((l$1 >> 8 >> 0) << 24 >>> 24)); (5 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 5] = (l$1 << 24 >>> 24)); l$1 = l$1 - (1) >> 0; (6 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 6] = (l$1 << 24 >>> 24)); $copySlice($subslice(z, 7), new sliceType$4($stringToBytes(m.alpnProtocol))); z = $subslice(z, (7 + alpnLen$1 >> 0)); } m.raw = x; return x; }; serverHelloMsg.prototype.marshal = function() { return this.$val.marshal(); }; serverHelloMsg.ptr.prototype.unmarshal = function(data) { var $ptr, _ref, d, d$1, data, extension, extensionsLength, l, l$1, length, m, sessionIdLen; m = this; if (data.$length < 42) { return false; } m.raw = data; m.vers = ((((4 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 4]) << 16 >>> 16) << 8 << 16 >>> 16) | ((5 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 5]) << 16 >>> 16)) >>> 0; m.random = $subslice(data, 6, 38); sessionIdLen = ((38 >= data.$length ? $throwRuntimeError("index out of range") : 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") : data.$array[data.$offset + 0]) << 16 >>> 16) << 8 << 16 >>> 16) | ((1 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 1]) << 16 >>> 16)) >>> 0; m.compressionMethod = (2 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 2]); data = $subslice(data, 3); m.nextProtoNeg = false; m.nextProtos = sliceType$7.nil; m.ocspStapling = false; 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") : data.$array[data.$offset + 0]) >> 0) << 8 >> 0) | ((1 >= data.$length ? $throwRuntimeError("index out of range") : 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") : data.$array[data.$offset + 0]) << 16 >>> 16) << 8 << 16 >>> 16) | ((1 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 1]) << 16 >>> 16)) >>> 0; length = (((2 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 2]) >> 0) << 8 >> 0) | ((3 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 3]) >> 0); data = $subslice(data, 4); if (data.$length < length) { return false; } _ref = extension; if (_ref === 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") : 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 (_ref === 5) { if (length > 0) { return false; } m.ocspStapling = true; } else if (_ref === 35) { if (length > 0) { return false; } m.ticketSupported = true; } else if (_ref === 65281) { if (!((length === 1)) || !(((0 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 0]) === 0))) { return false; } m.secureRenegotiation = true; } else if (_ref === 16) { d$1 = $subslice(data, 0, length); if (d$1.$length < 3) { return false; } l$1 = (((0 >= d$1.$length ? $throwRuntimeError("index out of range") : d$1.$array[d$1.$offset + 0]) >> 0) << 8 >> 0) | ((1 >= d$1.$length ? $throwRuntimeError("index out of range") : d$1.$array[d$1.$offset + 1]) >> 0); if (!((l$1 === (d$1.$length - 2 >> 0)))) { return false; } d$1 = $subslice(d$1, 2); l$1 = ((0 >= d$1.$length ? $throwRuntimeError("index out of range") : d$1.$array[d$1.$offset + 0]) >> 0); if (!((l$1 === (d$1.$length - 1 >> 0)))) { return false; } d$1 = $subslice(d$1, 1); m.alpnProtocol = $bytesToString(d$1); } 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$4.nil; m = this; if (!(m.raw === sliceType$4.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") : _ref.$array[_ref.$offset + _i]); i = i + (slice.$length) >> 0; _i++; } length = (3 + (3 * m.certificates.$length >> 0) >> 0) + i >> 0; x = $makeSlice(sliceType$4, (4 + length >> 0)); (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0] = 11); (1 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 1] = ((length >> 16 >> 0) << 24 >>> 24)); (2 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 2] = ((length >> 8 >> 0) << 24 >>> 24)); (3 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 3] = (length << 24 >>> 24)); certificateOctets = length - 3 >> 0; (4 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 4] = ((certificateOctets >> 16 >> 0) << 24 >>> 24)); (5 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 5] = ((certificateOctets >> 8 >> 0) << 24 >>> 24)); (6 >= x.$length ? $throwRuntimeError("index out of range") : 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") : _ref$1.$array[_ref$1.$offset + _i$1]); (0 >= y.$length ? $throwRuntimeError("index out of range") : y.$array[y.$offset + 0] = ((slice$1.$length >> 16 >> 0) << 24 >>> 24)); (1 >= y.$length ? $throwRuntimeError("index out of range") : y.$array[y.$offset + 1] = ((slice$1.$length >> 8 >> 0) << 24 >>> 24)); (2 >= y.$length ? $throwRuntimeError("index out of range") : 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") : data.$array[data.$offset + 4]) >>> 0) << 16 >>> 0) | (((5 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 5]) >>> 0) << 8 >>> 0)) >>> 0) | ((6 >= data.$length ? $throwRuntimeError("index out of range") : 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") : d.$array[d.$offset + 0]) >>> 0) << 16 >>> 0) | (((1 >= d.$length ? $throwRuntimeError("index out of range") : d.$array[d.$offset + 1]) >>> 0) << 8 >>> 0)) >>> 0) | ((2 >= d.$length ? $throwRuntimeError("index out of range") : 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$6, numCerts); d = $subslice(data, 7); i = 0; while (true) { if (!(i < numCerts)) { break; } certLen$1 = ((((((0 >= d.$length ? $throwRuntimeError("index out of range") : d.$array[d.$offset + 0]) >>> 0) << 16 >>> 0) | (((1 >= d.$length ? $throwRuntimeError("index out of range") : d.$array[d.$offset + 1]) >>> 0) << 8 >>> 0)) >>> 0) | ((2 >= d.$length ? $throwRuntimeError("index out of range") : d.$array[d.$offset + 2]) >>> 0)) >>> 0; (x = m.certificates, ((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : 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$4.nil)) { return m.raw; } length = m.key.$length; x = $makeSlice(sliceType$4, (length + 4 >> 0)); (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0] = 12); (1 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 1] = ((length >> 16 >> 0) << 24 >>> 24)); (2 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 2] = ((length >> 8 >> 0) << 24 >>> 24)); (3 >= x.$length ? $throwRuntimeError("index out of range") : 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$4.nil)) { return m.raw; } x = sliceType$4.nil; if (m.statusType === 1) { x = $makeSlice(sliceType$4, (8 + m.response.$length >> 0)); (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0] = 22); l = m.response.$length + 4 >> 0; (1 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 1] = ((l >> 16 >> 0) << 24 >>> 24)); (2 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 2] = ((l >> 8 >> 0) << 24 >>> 24)); (3 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 3] = (l << 24 >>> 24)); (4 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 4] = 1); l = l - (4) >> 0; (5 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 5] = ((l >> 16 >> 0) << 24 >>> 24)); (6 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 6] = ((l >> 8 >> 0) << 24 >>> 24)); (7 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 7] = (l << 24 >>> 24)); $copySlice($subslice(x, 8), m.response); } else { x = new sliceType$4([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") : data.$array[data.$offset + 4]); m.response = sliceType$4.nil; if (m.statusType === 1) { if (data.$length < 8) { return false; } respLen = ((((((5 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 5]) >>> 0) << 16 >>> 0) | (((6 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 6]) >>> 0) << 8 >>> 0)) >>> 0) | ((7 >= data.$length ? $throwRuntimeError("index out of range") : 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$4, 4); (0 >= x.$length ? $throwRuntimeError("index out of range") : 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$4.nil)) { return m.raw; } length = m.ciphertext.$length; x = $makeSlice(sliceType$4, (length + 4 >> 0)); (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0] = 16); (1 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 1] = ((length >> 16 >> 0) << 24 >>> 24)); (2 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 2] = ((length >> 8 >> 0) << 24 >>> 24)); (3 >= x.$length ? $throwRuntimeError("index out of range") : 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") : data.$array[data.$offset + 1]) >> 0) << 16 >> 0) | (((2 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 2]) >> 0) << 8 >> 0)) | ((3 >= data.$length ? $throwRuntimeError("index out of range") : 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$4.nil; m = this; if (!(m.raw === sliceType$4.nil)) { x = m.raw; return x; } x = $makeSlice(sliceType$4, (4 + m.verifyData.$length >> 0)); (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0] = 20); (3 >= x.$length ? $throwRuntimeError("index out of range") : 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$4.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$4, (length + 4 >> 0)); (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0] = 67); (1 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 1] = ((length >> 16 >> 0) << 24 >>> 24)); (2 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 2] = ((length >> 8 >> 0) << 24 >>> 24)); (3 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 3] = (length << 24 >>> 24)); y = $subslice(x, 4); (0 >= y.$length ? $throwRuntimeError("index out of range") : y.$array[y.$offset + 0] = (l << 24 >>> 24)); $copySlice($subslice(y, 1), new sliceType$4($stringToBytes(m.proto.substring(0, l)))); y = $subslice(y, (1 + l >> 0)); (0 >= y.$length ? $throwRuntimeError("index out of range") : 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") : 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") : 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$4.nil; m = this; if (!(m.raw === sliceType$4.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") : _ref.$array[_ref.$offset + _i]); casLength = casLength + ((2 + ca.$length >> 0)) >> 0; _i++; } length = length + (casLength) >> 0; if (m.hasSignatureAndHash) { length = length + ((2 + (2 * m.signatureAndHashes.$length >> 0) >> 0)) >> 0; } x = $makeSlice(sliceType$4, (4 + length >> 0)); (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0] = 13); (1 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 1] = ((length >> 16 >> 0) << 24 >>> 24)); (2 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 2] = ((length >> 8 >> 0) << 24 >>> 24)); (3 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 3] = (length << 24 >>> 24)); (4 >= x.$length ? $throwRuntimeError("index out of range") : 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 = m.signatureAndHashes.$length * 2 >> 0; (0 >= y.$length ? $throwRuntimeError("index out of range") : y.$array[y.$offset + 0] = ((n >> 8 >> 0) << 24 >>> 24)); (1 >= y.$length ? $throwRuntimeError("index out of range") : 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") : _ref$1.$array[_ref$1.$offset + _i$1]), signatureAndHash); (0 >= y.$length ? $throwRuntimeError("index out of range") : y.$array[y.$offset + 0] = sigAndHash.hash); (1 >= y.$length ? $throwRuntimeError("index out of range") : y.$array[y.$offset + 1] = sigAndHash.signature); y = $subslice(y, 2); _i$1++; } } (0 >= y.$length ? $throwRuntimeError("index out of range") : y.$array[y.$offset + 0] = ((casLength >> 8 >> 0) << 24 >>> 24)); (1 >= y.$length ? $throwRuntimeError("index out of range") : 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") : _ref$2.$array[_ref$2.$offset + _i$2]); (0 >= y.$length ? $throwRuntimeError("index out of range") : y.$array[y.$offset + 0] = ((ca$1.$length >> 8 >> 0) << 24 >>> 24)); (1 >= y.$length ? $throwRuntimeError("index out of range") : 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") : data.$array[data.$offset + 1]) >>> 0) << 16 >>> 0) | (((2 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 2]) >>> 0) << 8 >>> 0)) >>> 0) | ((3 >= data.$length ? $throwRuntimeError("index out of range") : 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") : data.$array[data.$offset + 4]) >> 0); data = $subslice(data, 5); if ((numCertTypes === 0) || data.$length <= numCertTypes) { return false; } m.certificateTypes = $makeSlice(sliceType$4, 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") : data.$array[data.$offset + 0]) << 16 >>> 16) << 8 << 16 >>> 16) | ((1 >= data.$length ? $throwRuntimeError("index out of range") : 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$2, 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") : x.$array[x.$offset + i])).hash = (0 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 0]); (x$1 = m.signatureAndHashes, ((i < 0 || i >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + i])).signature = (1 >= data.$length ? $throwRuntimeError("index out of range") : 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") : data.$array[data.$offset + 0]) << 16 >>> 16) << 8 << 16 >>> 16) | ((1 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 1]) << 16 >>> 16)) >>> 0; data = $subslice(data, 2); if (data.$length < (casLength >> 0)) { return false; } cas = $makeSlice(sliceType$4, casLength); $copySlice(cas, data); data = $subslice(data, casLength); m.certificateAuthorities = sliceType$6.nil; while (true) { if (!(cas.$length > 0)) { break; } if (cas.$length < 2) { return false; } caLen = ((((0 >= cas.$length ? $throwRuntimeError("index out of range") : cas.$array[cas.$offset + 0]) << 16 >>> 16) << 8 << 16 >>> 16) | ((1 >= cas.$length ? $throwRuntimeError("index out of range") : 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); } if (data.$length > 0) { return false; } return true; }; certificateRequestMsg.prototype.unmarshal = function(data) { return this.$val.unmarshal(data); }; certificateVerifyMsg.ptr.prototype.marshal = function() { var $ptr, length, m, siglength, x, y; x = sliceType$4.nil; m = this; if (!(m.raw === sliceType$4.nil)) { x = m.raw; return x; } siglength = m.signature.$length; length = 2 + siglength >> 0; if (m.hasSignatureAndHash) { length = length + (2) >> 0; } x = $makeSlice(sliceType$4, (4 + length >> 0)); (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0] = 15); (1 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 1] = ((length >> 16 >> 0) << 24 >>> 24)); (2 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 2] = ((length >> 8 >> 0) << 24 >>> 24)); (3 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 3] = (length << 24 >>> 24)); y = $subslice(x, 4); if (m.hasSignatureAndHash) { (0 >= y.$length ? $throwRuntimeError("index out of range") : y.$array[y.$offset + 0] = m.signatureAndHash.hash); (1 >= y.$length ? $throwRuntimeError("index out of range") : y.$array[y.$offset + 1] = m.signatureAndHash.signature); y = $subslice(y, 2); } (0 >= y.$length ? $throwRuntimeError("index out of range") : y.$array[y.$offset + 0] = ((siglength >> 8 >> 0) << 24 >>> 24)); (1 >= y.$length ? $throwRuntimeError("index out of range") : 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") : data.$array[data.$offset + 1]) >>> 0) << 16 >>> 0) | (((2 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 2]) >>> 0) << 8 >>> 0)) >>> 0) | ((3 >= data.$length ? $throwRuntimeError("index out of range") : 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") : data.$array[data.$offset + 0]); m.signatureAndHash.signature = (1 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 1]); data = $subslice(data, 2); } if (data.$length < 2) { return false; } siglength = (((0 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 0]) >> 0) << 8 >> 0) + ((1 >= data.$length ? $throwRuntimeError("index out of range") : 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$4.nil; m = this; if (!(m.raw === sliceType$4.nil)) { x = m.raw; return x; } ticketLen = m.ticket.$length; length = 6 + ticketLen >> 0; x = $makeSlice(sliceType$4, (4 + length >> 0)); (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0] = 4); (1 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 1] = ((length >> 16 >> 0) << 24 >>> 24)); (2 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 2] = ((length >> 8 >> 0) << 24 >>> 24)); (3 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 3] = (length << 24 >>> 24)); (8 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 8] = ((ticketLen >> 8 >> 0) << 24 >>> 24)); (9 >= x.$length ? $throwRuntimeError("index out of range") : 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") : data.$array[data.$offset + 1]) >>> 0) << 16 >>> 0) | (((2 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 2]) >>> 0) << 8 >>> 0)) >>> 0) | ((3 >= data.$length ? $throwRuntimeError("index out of range") : 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") : data.$array[data.$offset + 8]) >> 0) << 8 >> 0) + ((9 >= data.$length ? $throwRuntimeError("index out of range") : 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); }; Conn.ptr.prototype.serverHandshake = function() { var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, c, config, err, err$1, 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$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; c = $f.c; config = $f.config; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; err$3 = $f.err$3; err$4 = $f.err$4; err$5 = $f.err$5; err$6 = $f.err$6; err$7 = $f.err$7; err$8 = $f.err$8; err$9 = $f.err$9; hs = $f.hs; isResume = $f.isResume; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: c = this; config = c.config; $r = config.serverInitOnce.Do($methodVal(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$11.nil, ptrType$9.nil, ptrType.nil, false, false, ptrType$26.nil, new finishedHash.ptr(), sliceType$4.nil, sliceType$6.nil, ptrType$3.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))) { return err; } /* */ 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 = 7; continue; } /* */ $s = 8; continue; /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 7: return err$1; /* } */ case 8: _r$2 = hs.establishKeys(); /* */ $s = 9; case 9: 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 = 10; continue; } /* */ $s = 11; continue; /* if (!($interfaceIsEqual(err$2, $ifaceNil))) { */ case 10: return err$2; /* } */ case 11: _r$3 = hs.sendFinished(new sliceType$4(c.firstFinished)); /* */ $s = 12; case 12: 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 = 13; continue; } /* */ $s = 14; continue; /* if (!($interfaceIsEqual(err$3, $ifaceNil))) { */ case 13: return err$3; /* } */ case 14: _r$4 = hs.readFinished(sliceType$4.nil); /* */ $s = 15; case 15: 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 = 16; continue; } /* */ $s = 17; continue; /* if (!($interfaceIsEqual(err$4, $ifaceNil))) { */ case 16: return err$4; /* } */ case 17: c.didResume = true; $s = 5; continue; /* } else { */ case 4: _r$5 = hs.doFullHandshake(); /* */ $s = 18; case 18: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } err$5 = _r$5; /* */ if (!($interfaceIsEqual(err$5, $ifaceNil))) { $s = 19; continue; } /* */ $s = 20; continue; /* if (!($interfaceIsEqual(err$5, $ifaceNil))) { */ case 19: return err$5; /* } */ case 20: _r$6 = hs.establishKeys(); /* */ $s = 21; case 21: 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 = 22; continue; } /* */ $s = 23; continue; /* if (!($interfaceIsEqual(err$6, $ifaceNil))) { */ case 22: return err$6; /* } */ case 23: _r$7 = hs.readFinished(new sliceType$4(c.firstFinished)); /* */ $s = 24; case 24: 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 = 25; continue; } /* */ $s = 26; continue; /* if (!($interfaceIsEqual(err$7, $ifaceNil))) { */ case 25: return err$7; /* } */ case 26: _r$8 = hs.sendSessionTicket(); /* */ $s = 27; case 27: 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 = 28; continue; } /* */ $s = 29; continue; /* if (!($interfaceIsEqual(err$8, $ifaceNil))) { */ case 28: return err$8; /* } */ case 29: _r$9 = hs.sendFinished(sliceType$4.nil); /* */ $s = 30; case 30: 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 = 31; continue; } /* */ $s = 32; continue; /* if (!($interfaceIsEqual(err$9, $ifaceNil))) { */ case 31: return err$9; /* } */ case 32: /* } */ case 5: c.handshakeComplete = true; return $ifaceNil; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.serverHandshake }; } $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._tuple = _tuple; $f.c = c; $f.config = config; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.err$3 = err$3; $f.err$4 = err$4; $f.err$5 = err$5; $f.err$6 = err$6; $f.err$7 = err$7; $f.err$8 = err$8; $f.err$9 = err$9; $f.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, _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$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, _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, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, c, chi, compression, config, curve, err, fallback, foundCompression, hs, id, id$1, isResume, msg, ok, pointFormat, preferenceList, preferredCurves, selectedProto, supported, supportedCurve, supportedList, supportedPointFormat, 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; _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$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; _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$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; c = $f.c; chi = $f.chi; compression = $f.compression; config = $f.config; curve = $f.curve; err = $f.err; fallback = $f.fallback; foundCompression = $f.foundCompression; hs = $f.hs; id = $f.id; id$1 = $f.id$1; isResume = $f.isResume; msg = $f.msg; ok = $f.ok; pointFormat = $f.pointFormat; preferenceList = $f.preferenceList; preferredCurves = $f.preferredCurves; selectedProto = $f.selectedProto; supported = $f.supported; supportedCurve = $f.supportedCurve; supportedList = $f.supportedList; supportedPointFormat = $f.supportedPointFormat; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: isResume = false; err = $ifaceNil; hs = this; config = hs.c.config; 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; return [isResume, err]; } ok = false; _tuple$1 = $assertType(msg, ptrType$11, 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; _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$2 = false; _tmp$3 = _r$2; isResume = _tmp$2; err = _tmp$3; return [isResume, err]; /* } */ case 3: _tuple$2 = config.mutualVersion(hs.clientHello.vers); c.vers = _tuple$2[0]; ok = _tuple$2[1]; /* */ if (!ok) { $s = 6; continue; } /* */ $s = 7; continue; /* if (!ok) { */ case 6: _r$3 = c.sendAlert(70); /* */ $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 = fmt.Errorf("tls: client offered an unsupported, maximum protocol version of %x", new sliceType$5([new $Uint16(hs.clientHello.vers)])); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } _tmp$4 = false; _tmp$5 = _r$4; isResume = _tmp$4; err = _tmp$5; return [isResume, err]; /* } */ case 7: c.haveVers = true; $copy(hs.finishedHash, newFinishedHash(c.vers), finishedHash); _r$5 = hs.finishedHash.Write(hs.clientHello.marshal()); /* */ $s = 10; case 10: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } _r$5; hs.hello = new serverHelloMsg.ptr(); supportedCurve = false; preferredCurves = 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") : _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") : _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") : _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") : _ref$3.$array[_ref$3.$offset + _i$3]); if (compression === 0) { foundCompression = true; break; } _i$3++; } /* */ if (!foundCompression) { $s = 11; continue; } /* */ $s = 12; continue; /* if (!foundCompression) { */ case 11: _r$6 = c.sendAlert(40); /* */ $s = 13; case 13: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } _r$6; _tmp$6 = false; _tmp$7 = errors.New("tls: client does not support uncompressed connections"); isResume = _tmp$6; err = _tmp$7; return [isResume, err]; /* } */ case 12: hs.hello.vers = c.vers; hs.hello.random = $makeSlice(sliceType$4, 32); _r$7 = io.ReadFull(config.rand(), hs.hello.random); /* */ $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; err = _tuple$3[1]; /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 15; continue; } /* */ $s = 16; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 15: _r$8 = c.sendAlert(80); /* */ $s = 17; case 17: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } _r$8; _tmp$8 = false; _tmp$9 = err; isResume = _tmp$8; err = _tmp$9; return [isResume, err]; /* } */ case 16: hs.hello.secureRenegotiation = hs.clientHello.secureRenegotiation; hs.hello.compressionMethod = 0; if (hs.clientHello.serverName.length > 0) { c.serverName = hs.clientHello.serverName; } if (hs.clientHello.alpnProtocols.$length > 0) { _tuple$4 = mutualProtocol(hs.clientHello.alpnProtocols, c.config.NextProtos); selectedProto = _tuple$4[0]; fallback = _tuple$4[1]; if (!fallback) { hs.hello.alpnProtocol = selectedProto; c.clientProtocol = selectedProto; } } else { if (hs.clientHello.nextProtoNeg && config.NextProtos.$length > 0) { hs.hello.nextProtoNeg = true; hs.hello.nextProtos = config.NextProtos; } } /* */ if (config.Certificates.$length === 0) { $s = 18; continue; } /* */ $s = 19; continue; /* if (config.Certificates.$length === 0) { */ 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; _tmp$10 = false; _tmp$11 = errors.New("tls: no certificates configured"); isResume = _tmp$10; err = _tmp$11; return [isResume, err]; /* } */ case 19: hs.cert = (x = config.Certificates, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0])); /* */ if (hs.clientHello.serverName.length > 0) { $s = 21; continue; } /* */ $s = 22; continue; /* if (hs.clientHello.serverName.length > 0) { */ case 21: chi = new ClientHelloInfo.ptr(hs.clientHello.cipherSuites, hs.clientHello.serverName, hs.clientHello.supportedCurves, hs.clientHello.supportedPoints); _r$10 = config.getCertificate(chi); /* */ $s = 23; case 23: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } _tuple$5 = _r$10; hs.cert = _tuple$5[0]; err = _tuple$5[1]; /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 24; continue; } /* */ $s = 25; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 24: _r$11 = c.sendAlert(80); /* */ $s = 26; case 26: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } _r$11; _tmp$12 = false; _tmp$13 = err; isResume = _tmp$12; err = _tmp$13; return [isResume, err]; /* } */ case 25: /* } */ case 22: _tuple$6 = $assertType(hs.cert.PrivateKey, ptrType$27, true); hs.ecdsaOk = _tuple$6[1]; _r$12 = hs.checkForResumption(); /* */ $s = 29; case 29: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } /* */ if (_r$12) { $s = 27; continue; } /* */ $s = 28; continue; /* if (_r$12) { */ case 27: _tmp$14 = true; _tmp$15 = $ifaceNil; isResume = _tmp$14; err = _tmp$15; return [isResume, err]; /* } */ case 28: _tmp$16 = sliceType.nil; _tmp$17 = sliceType.nil; preferenceList = _tmp$16; supportedList = _tmp$17; /* */ if (c.config.PreferServerCipherSuites) { $s = 30; continue; } /* */ $s = 31; continue; /* if (c.config.PreferServerCipherSuites) { */ case 30: _r$13 = c.config.cipherSuites(); /* */ $s = 33; case 33: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } preferenceList = _r$13; supportedList = hs.clientHello.cipherSuites; $s = 32; continue; /* } else { */ case 31: preferenceList = hs.clientHello.cipherSuites; _r$14 = c.config.cipherSuites(); /* */ $s = 34; case 34: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } supportedList = _r$14; /* } */ case 32: _ref$4 = preferenceList; _i$4 = 0; while (true) { if (!(_i$4 < _ref$4.$length)) { break; } id = ((_i$4 < 0 || _i$4 >= _ref$4.$length) ? $throwRuntimeError("index out of range") : _ref$4.$array[_ref$4.$offset + _i$4]); hs.suite = c.tryCipherSuite(id, supportedList, c.vers, hs.ellipticOk, hs.ecdsaOk); if (!(hs.suite === ptrType.nil)) { break; } _i$4++; } /* */ if (hs.suite === ptrType.nil) { $s = 35; continue; } /* */ $s = 36; continue; /* if (hs.suite === ptrType.nil) { */ case 35: _r$15 = c.sendAlert(40); /* */ $s = 37; case 37: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } _r$15; _tmp$18 = false; _tmp$19 = errors.New("tls: no cipher suite supported by both client and server"); isResume = _tmp$18; err = _tmp$19; return [isResume, err]; /* } */ case 36: _ref$5 = hs.clientHello.cipherSuites; _i$5 = 0; /* while (true) { */ case 38: /* if (!(_i$5 < _ref$5.$length)) { break; } */ if(!(_i$5 < _ref$5.$length)) { $s = 39; continue; } id$1 = ((_i$5 < 0 || _i$5 >= _ref$5.$length) ? $throwRuntimeError("index out of range") : _ref$5.$array[_ref$5.$offset + _i$5]); /* */ if (id$1 === 22016) { $s = 40; continue; } /* */ $s = 41; continue; /* if (id$1 === 22016) { */ case 40: /* */ if (hs.clientHello.vers < c.config.MaxVersion) { $s = 42; continue; } /* */ $s = 43; continue; /* if (hs.clientHello.vers < c.config.MaxVersion) { */ case 42: _r$16 = c.sendAlert(86); /* */ $s = 44; case 44: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } _r$16; _tmp$20 = false; _tmp$21 = errors.New("tls: client using inppropriate protocol fallback"); isResume = _tmp$20; err = _tmp$21; return [isResume, err]; /* } */ case 43: /* break; */ $s = 39; continue; /* } */ case 41: _i$5++; /* } */ $s = 38; continue; case 39: _tmp$22 = false; _tmp$23 = $ifaceNil; isResume = _tmp$22; err = _tmp$23; return [isResume, err]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: serverHandshakeState.ptr.prototype.readClientHello }; } $f.$ptr = $ptr; $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$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._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$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.c = c; $f.chi = chi; $f.compression = compression; $f.config = config; $f.curve = curve; $f.err = err; $f.fallback = fallback; $f.foundCompression = foundCompression; $f.hs = hs; $f.id = id; $f.id$1 = id$1; $f.isResume = isResume; $f.msg = msg; $f.ok = ok; $f.pointFormat = pointFormat; $f.preferenceList = preferenceList; $f.preferredCurves = preferredCurves; $f.selectedProto = selectedProto; $f.supported = supported; $f.supportedCurve = supportedCurve; $f.supportedList = supportedList; $f.supportedPointFormat = supportedPointFormat; $f.x = x; $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, _arg$3, _arg$4, _i, _r, _r$1, _r$2, _ref, _tuple, _tuple$1, c, cipherSuiteOk, hs, id, needClientCerts, ok, ok$1, sessionHasClientCerts, vers, $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; _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; c = $f.c; cipherSuiteOk = $f.cipherSuiteOk; hs = $f.hs; id = $f.id; needClientCerts = $f.needClientCerts; ok = $f.ok; ok$1 = $f.ok$1; sessionHasClientCerts = $f.sessionHasClientCerts; vers = $f.vers; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: hs = this; c = hs.c; if (c.config.SessionTicketsDisabled) { return false; } ok = false; _r = c.decryptTicket(hs.clientHello.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 = 2; continue; } /* */ $s = 3; continue; /* if (!ok) { */ case 2: return false; /* } */ case 3: if (hs.sessionState.vers > hs.clientHello.vers) { return false; } _tuple$1 = c.config.mutualVersion(hs.sessionState.vers); vers = _tuple$1[0]; ok$1 = _tuple$1[1]; if (!ok$1 || !((vers === hs.sessionState.vers))) { 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") : _ref.$array[_ref.$offset + _i]); if (id === hs.sessionState.cipherSuite) { cipherSuiteOk = true; break; } _i++; } if (!cipherSuiteOk) { 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; _arg$3 = hs.ellipticOk; _arg$4 = hs.ecdsaOk; _r$2 = c.tryCipherSuite(_arg, _arg$1, _arg$2, _arg$3, _arg$4); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } hs.suite = _r$2; if (hs.suite === ptrType.nil) { return false; } sessionHasClientCerts = !((hs.sessionState.certificates.$length === 0)); needClientCerts = (c.config.ClientAuth === 2) || (c.config.ClientAuth === 4); if (needClientCerts && !sessionHasClientCerts) { return false; } if (sessionHasClientCerts && (c.config.ClientAuth === 0)) { return false; } return true; /* */ $s = -1; case -1: } 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._arg$3 = _arg$3; $f._arg$4 = _arg$4; $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.c = c; $f.cipherSuiteOk = cipherSuiteOk; $f.hs = hs; $f.id = id; $f.needClientCerts = needClientCerts; $f.ok = ok; $f.ok$1 = ok$1; $f.sessionHasClientCerts = sessionHasClientCerts; $f.vers = vers; $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, _tuple, c, err, 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; _tuple = $f._tuple; c = $f.c; err = $f.err; 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; _r = hs.finishedHash.Write(hs.hello.marshal()); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _r; _r$1 = c.writeRecord(22, hs.hello.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; /* */ if (hs.sessionState.certificates.$length > 0) { $s = 3; continue; } /* */ $s = 4; continue; /* if (hs.sessionState.certificates.$length > 0) { */ case 3: _r$2 = hs.processCertsFromClient(hs.sessionState.certificates); /* */ $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; err = _tuple[1]; /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 6; continue; } /* */ $s = 7; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 6: return err; /* } */ case 7: /* } */ case 4: hs.masterSecret = hs.sessionState.masterSecret; return $ifaceNil; /* */ $s = -1; case -1: } 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._tuple = _tuple; $f.c = c; $f.err = err; $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, _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$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _tuple, _tuple$1, _tuple$10, _tuple$11, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, c, certMsg, certReq, certStatus, certVerify, ckx, config, digest, digest$1, ecdsaSig, err, hashFunc, helloDone, hs, key, key$1, keyAgreement$1, msg, ok, ok$1, preMasterSecret, pub, skx, $s, $r; /* */ $s = 0; var $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$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$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$10 = $f._tuple$10; _tuple$11 = $f._tuple$11; _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; config = $f.config; digest = $f.digest; digest$1 = $f.digest$1; ecdsaSig = $f.ecdsaSig; err = $f.err; 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; skx = $f.skx; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: hs = this; config = hs.c.config; c = hs.c; if (hs.clientHello.ocspStapling && hs.cert.OCSPStaple.$length > 0) { hs.hello.ocspStapling = true; } hs.hello.ticketSupported = hs.clientHello.ticketSupported && !config.SessionTicketsDisabled; hs.hello.cipherSuite = hs.suite.id; _r = hs.finishedHash.Write(hs.hello.marshal()); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _r; _r$1 = c.writeRecord(22, hs.hello.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; certMsg = new certificateMsg.ptr(); certMsg.certificates = hs.cert.Certificate; _r$2 = hs.finishedHash.Write(certMsg.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, certMsg.marshal()); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } _r$3; /* */ if (hs.hello.ocspStapling) { $s = 5; continue; } /* */ $s = 6; continue; /* if (hs.hello.ocspStapling) { */ case 5: certStatus = new certificateStatusMsg.ptr(); certStatus.statusType = 1; certStatus.response = hs.cert.OCSPStaple; _r$4 = hs.finishedHash.Write(certStatus.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, certStatus.marshal()); /* */ $s = 8; case 8: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } _r$5; /* } */ case 6: _r$6 = hs.suite.ka(c.vers); /* */ $s = 9; case 9: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } keyAgreement$1 = _r$6; _r$7 = keyAgreement$1.generateServerKeyExchange(config, hs.cert, hs.clientHello, hs.hello); /* */ $s = 10; case 10: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } _tuple = _r$7; skx = _tuple[0]; err = _tuple[1]; /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 11; continue; } /* */ $s = 12; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 11: _r$8 = c.sendAlert(40); /* */ $s = 13; case 13: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } _r$8; return err; /* } */ case 12: /* */ if (!(skx === ptrType$18.nil)) { $s = 14; continue; } /* */ $s = 15; continue; /* if (!(skx === ptrType$18.nil)) { */ case 14: _r$9 = hs.finishedHash.Write(skx.marshal()); /* */ $s = 16; case 16: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } _r$9; _r$10 = c.writeRecord(22, skx.marshal()); /* */ $s = 17; case 17: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } _r$10; /* } */ case 15: /* */ if (config.ClientAuth >= 1) { $s = 18; continue; } /* */ $s = 19; continue; /* if (config.ClientAuth >= 1) { */ case 18: certReq = new certificateRequestMsg.ptr(); certReq.certificateTypes = new sliceType$4([1, 64]); if (c.vers >= 771) { certReq.hasSignatureAndHash = true; certReq.signatureAndHashes = supportedClientCertSignatureAlgorithms; } if (!(config.ClientCAs === ptrType$14.nil)) { certReq.certificateAuthorities = config.ClientCAs.Subjects(); } _r$11 = hs.finishedHash.Write(certReq.marshal()); /* */ $s = 20; case 20: 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, certReq.marshal()); /* */ $s = 21; case 21: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } _r$12; /* } */ case 19: helloDone = new serverHelloDoneMsg.ptr(); _r$13 = hs.finishedHash.Write(helloDone.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, helloDone.marshal()); /* */ $s = 23; case 23: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } _r$14; pub = $ifaceNil; _r$15 = c.readHandshake(); /* */ $s = 24; case 24: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } _tuple$1 = _r$15; msg = _tuple$1[0]; err = _tuple$1[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } ok = false; /* */ if (config.ClientAuth >= 1) { $s = 25; continue; } /* */ $s = 26; continue; /* if (config.ClientAuth >= 1) { */ case 25: _tuple$2 = $assertType(msg, ptrType$12, true); certMsg = _tuple$2[0]; ok = _tuple$2[1]; /* */ if (!ok) { $s = 27; continue; } /* */ $s = 28; continue; /* if (!ok) { */ case 27: _r$16 = c.sendAlert(10); /* */ $s = 29; case 29: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } _r$16; _r$17 = unexpectedMessageError(certMsg, msg); /* */ $s = 30; case 30: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } return _r$17; /* } */ case 28: _r$18 = hs.finishedHash.Write(certMsg.marshal()); /* */ $s = 31; case 31: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; } _r$18; /* */ if (certMsg.certificates.$length === 0) { $s = 32; continue; } /* */ $s = 33; continue; /* if (certMsg.certificates.$length === 0) { */ case 32: _ref = config.ClientAuth; /* */ if (_ref === 2 || _ref === 4) { $s = 34; continue; } /* */ $s = 35; continue; /* if (_ref === 2 || _ref === 4) { */ case 34: _r$19 = c.sendAlert(42); /* */ $s = 36; case 36: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; } _r$19; return errors.New("tls: client didn't provide a certificate"); /* } */ case 35: /* } */ case 33: _r$20 = hs.processCertsFromClient(certMsg.certificates); /* */ $s = 37; case 37: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; } _tuple$3 = _r$20; pub = _tuple$3[0]; err = _tuple$3[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } _r$21 = c.readHandshake(); /* */ $s = 38; case 38: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; } _tuple$4 = _r$21; msg = _tuple$4[0]; err = _tuple$4[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } /* } */ case 26: _tuple$5 = $assertType(msg, ptrType$21, true); ckx = _tuple$5[0]; ok = _tuple$5[1]; /* */ if (!ok) { $s = 39; continue; } /* */ $s = 40; continue; /* if (!ok) { */ case 39: _r$22 = c.sendAlert(10); /* */ $s = 41; case 41: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } _r$22; _r$23 = unexpectedMessageError(ckx, msg); /* */ $s = 42; case 42: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } return _r$23; /* } */ case 40: _r$24 = hs.finishedHash.Write(ckx.marshal()); /* */ $s = 43; case 43: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } _r$24; /* */ if (c.peerCertificates.$length > 0) { $s = 44; continue; } /* */ $s = 45; continue; /* if (c.peerCertificates.$length > 0) { */ case 44: _r$25 = c.readHandshake(); /* */ $s = 46; case 46: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; } _tuple$6 = _r$25; msg = _tuple$6[0]; err = _tuple$6[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } _tuple$7 = $assertType(msg, ptrType$25, true); certVerify = _tuple$7[0]; ok$1 = _tuple$7[1]; /* */ if (!ok$1) { $s = 47; continue; } /* */ $s = 48; continue; /* if (!ok$1) { */ case 47: _r$26 = c.sendAlert(10); /* */ $s = 49; case 49: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; } _r$26; _r$27 = unexpectedMessageError(certVerify, msg); /* */ $s = 50; case 50: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; } return _r$27; /* } */ case 48: _ref$1 = pub; /* */ if ($assertType(_ref$1, ptrType$16, true)[1]) { $s = 51; continue; } /* */ if ($assertType(_ref$1, ptrType$15, true)[1]) { $s = 52; continue; } /* */ $s = 53; continue; /* switch (0) { default: if ($assertType(_ref$1, ptrType$16, true)[1]) { */ case 51: key = _ref$1.$val; ecdsaSig = new ecdsaSignature.ptr(); _r$28 = asn1.Unmarshal(certVerify.signature, ecdsaSig); /* */ $s = 54; case 54: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; } _tuple$8 = _r$28; err = _tuple$8[1]; /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 55; continue; } /* */ $s = 56; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 55: /* break; */ $s = 53; continue; /* } */ case 56: if (ecdsaSig.R.Sign() <= 0 || ecdsaSig.S.Sign() <= 0) { err = errors.New("ECDSA signature contained zero or negative values"); /* break; */ $s = 53; continue; } _r$29 = hs.finishedHash.hashForClientCertificate(3); /* */ $s = 57; case 57: if($c) { $c = false; _r$29 = _r$29.$blk(); } if (_r$29 && _r$29.$blk !== undefined) { break s; } _tuple$9 = _r$29; digest = _tuple$9[0]; _r$30 = ecdsa.Verify(key, digest, ecdsaSig.R, ecdsaSig.S); /* */ $s = 60; case 60: if($c) { $c = false; _r$30 = _r$30.$blk(); } if (_r$30 && _r$30.$blk !== undefined) { break s; } /* */ if (!_r$30) { $s = 58; continue; } /* */ $s = 59; continue; /* if (!_r$30) { */ case 58: err = errors.New("ECDSA verification failure"); /* break; */ $s = 53; continue; /* } */ case 59: $s = 53; continue; /* } else if ($assertType(_ref$1, ptrType$15, true)[1]) { */ case 52: key$1 = _ref$1.$val; _r$31 = hs.finishedHash.hashForClientCertificate(1); /* */ $s = 61; case 61: if($c) { $c = false; _r$31 = _r$31.$blk(); } if (_r$31 && _r$31.$blk !== undefined) { break s; } _tuple$10 = _r$31; digest$1 = _tuple$10[0]; hashFunc = _tuple$10[1]; err = rsa.VerifyPKCS1v15(key$1, hashFunc, digest$1, certVerify.signature); /* } } */ case 53: /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 62; continue; } /* */ $s = 63; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 62: _r$32 = c.sendAlert(42); /* */ $s = 64; case 64: if($c) { $c = false; _r$32 = _r$32.$blk(); } if (_r$32 && _r$32.$blk !== undefined) { break s; } _r$32; _r$33 = err.Error(); /* */ $s = 65; case 65: if($c) { $c = false; _r$33 = _r$33.$blk(); } if (_r$33 && _r$33.$blk !== undefined) { break s; } _r$34 = errors.New("could not validate signature of connection nonces: " + _r$33); /* */ $s = 66; case 66: if($c) { $c = false; _r$34 = _r$34.$blk(); } if (_r$34 && _r$34.$blk !== undefined) { break s; } return _r$34; /* } */ case 63: _r$35 = hs.finishedHash.Write(certVerify.marshal()); /* */ $s = 67; case 67: if($c) { $c = false; _r$35 = _r$35.$blk(); } if (_r$35 && _r$35.$blk !== undefined) { break s; } _r$35; /* } */ case 45: _r$36 = keyAgreement$1.processClientKeyExchange(config, hs.cert, ckx, c.vers); /* */ $s = 68; case 68: if($c) { $c = false; _r$36 = _r$36.$blk(); } if (_r$36 && _r$36.$blk !== undefined) { break s; } _tuple$11 = _r$36; preMasterSecret = _tuple$11[0]; err = _tuple$11[1]; /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 69; continue; } /* */ $s = 70; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 69: _r$37 = c.sendAlert(40); /* */ $s = 71; case 71: if($c) { $c = false; _r$37 = _r$37.$blk(); } if (_r$37 && _r$37.$blk !== undefined) { break s; } _r$37; return err; /* } */ case 70: _r$38 = masterFromPreMasterSecret(c.vers, preMasterSecret, hs.clientHello.random, hs.hello.random); /* */ $s = 72; case 72: if($c) { $c = false; _r$38 = _r$38.$blk(); } if (_r$38 && _r$38.$blk !== undefined) { break s; } hs.masterSecret = _r$38; return $ifaceNil; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: serverHandshakeState.ptr.prototype.doFullHandshake }; } $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$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$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$10 = _tuple$10; $f._tuple$11 = _tuple$11; $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.config = config; $f.digest = digest; $f.digest$1 = digest$1; $f.ecdsaSig = ecdsaSig; $f.err = err; $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.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.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$17.prepareCipherSpec(c.vers, clientCipher, clientHash); c.out.prepareCipherSpec(c.vers, serverCipher, serverHash); return $ifaceNil; /* */ $s = -1; case -1: } 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$11, _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, err$2, 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$11 = $f._r$11; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; c = $f.c; clientFinished = $f.clientFinished; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; 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; _r$1 = c.in$17.error(); /* */ $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 = 3; continue; } /* */ $s = 4; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 3: return err; /* } */ case 4: /* */ if (hs.hello.nextProtoNeg) { $s = 5; continue; } /* */ $s = 6; continue; /* if (hs.hello.nextProtoNeg) { */ case 5: _r$2 = c.readHandshake(); /* */ $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; msg = _tuple[0]; err$1 = _tuple[1]; if (!($interfaceIsEqual(err$1, $ifaceNil))) { return err$1; } _tuple$1 = $assertType(msg, ptrType$24, true); nextProto = _tuple$1[0]; ok = _tuple$1[1]; /* */ if (!ok) { $s = 8; continue; } /* */ $s = 9; continue; /* if (!ok) { */ case 8: _r$3 = c.sendAlert(10); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } _r$3; _r$4 = unexpectedMessageError(nextProto, msg); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } return _r$4; /* } */ case 9: _r$5 = hs.finishedHash.Write(nextProto.marshal()); /* */ $s = 12; case 12: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } _r$5; c.clientProtocol = nextProto.proto; /* } */ case 6: _r$6 = c.readHandshake(); /* */ $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; msg$1 = _tuple$2[0]; err$2 = _tuple$2[1]; if (!($interfaceIsEqual(err$2, $ifaceNil))) { return err$2; } _tuple$3 = $assertType(msg$1, ptrType$22, true); clientFinished = _tuple$3[0]; ok$1 = _tuple$3[1]; /* */ if (!ok$1) { $s = 14; continue; } /* */ $s = 15; continue; /* if (!ok$1) { */ case 14: _r$7 = c.sendAlert(10); /* */ $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 = unexpectedMessageError(clientFinished, msg$1); /* */ $s = 17; case 17: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } return _r$8; /* } */ case 15: _r$9 = hs.finishedHash.clientSum(hs.masterSecret); /* */ $s = 18; case 18: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } verify = _r$9; /* */ if (!((verify.$length === clientFinished.verifyData.$length)) || !((subtle.ConstantTimeCompare(verify, clientFinished.verifyData) === 1))) { $s = 19; continue; } /* */ $s = 20; continue; /* if (!((verify.$length === clientFinished.verifyData.$length)) || !((subtle.ConstantTimeCompare(verify, clientFinished.verifyData) === 1))) { */ case 19: _r$10 = c.sendAlert(40); /* */ $s = 21; case 21: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } _r$10; return errors.New("tls: client's Finished message is incorrect"); /* } */ case 20: _r$11 = hs.finishedHash.Write(clientFinished.marshal()); /* */ $s = 22; case 22: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } _r$11; $copySlice(out, verify); return $ifaceNil; /* */ $s = -1; case -1: } 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$11 = _r$11; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.c = c; $f.clientFinished = clientFinished; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $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, c, err, 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; c = $f.c; err = $f.err; 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) { return $ifaceNil; } c = hs.c; m = new newSessionTicketMsg.ptr(); err = $ifaceNil; state[0] = new sessionState.ptr(c.vers, hs.suite.id, hs.masterSecret, hs.certsFromClient); _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))) { 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; } _r$2; return $ifaceNil; /* */ $s = -1; case -1: } 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.c = c; $f.err = err; $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, c, 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; c = $f.c; 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$4([1])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _r; finished = new finishedMsg.ptr(); _r$1 = hs.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; } _r$3; c.cipherSuite = hs.suite.id; $copySlice(out, finished.verifyData); return $ifaceNil; /* */ $s = -1; case -1: } 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.c = c; $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, _i$2, _r, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _ref$3, _tuple, _tuple$1, asn1Data, c, cert, certificates, certs, chains, err, err$1, hs, i, key, key$1, ku, ok, 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; _i$2 = $f._i$2; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; _ref$3 = $f._ref$3; _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; hs = $f.hs; i = $f.i; key = $f.key; key$1 = $f.key$1; ku = $f.ku; ok = $f.ok; 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$8, 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") : _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") : 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; } 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$9([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") : _ref$1.$array[_ref$1.$offset + _i$1]); opts.Intermediates.AddCert(cert); _i$1++; } _r$5 = (0 >= certs.$length ? $throwRuntimeError("index out of range") : certs.$array[certs.$offset + 0]).Verify(opts); /* */ $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; } return [$ifaceNil, _r$8]; /* } */ case 14: ok = false; _ref$2 = (0 >= certs.$length ? $throwRuntimeError("index out of range") : certs.$array[certs.$offset + 0]).ExtKeyUsage; _i$2 = 0; while (true) { if (!(_i$2 < _ref$2.$length)) { break; } ku = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? $throwRuntimeError("index out of range") : _ref$2.$array[_ref$2.$offset + _i$2]); if (ku === 2) { ok = true; break; } _i$2++; } /* */ if (!ok) { $s = 18; continue; } /* */ $s = 19; continue; /* if (!ok) { */ case 18: _r$9 = c.sendAlert(40); /* */ $s = 20; case 20: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } _r$9; return [$ifaceNil, errors.New("tls: client's certificate's extended key usage doesn't permit it to be used for client authentication")]; /* } */ case 19: c.verifiedChains = chains; /* } */ case 10: /* */ if (certs.$length > 0) { $s = 21; continue; } /* */ $s = 22; continue; /* if (certs.$length > 0) { */ case 21: pub = $ifaceNil; _ref$3 = (0 >= certs.$length ? $throwRuntimeError("index out of range") : certs.$array[certs.$offset + 0]).PublicKey; /* */ if ($assertType(_ref$3, ptrType$16, true)[1] || $assertType(_ref$3, ptrType$15, true)[1]) { $s = 23; continue; } /* */ $s = 24; continue; /* if ($assertType(_ref$3, ptrType$16, true)[1] || $assertType(_ref$3, ptrType$15, true)[1]) { */ case 23: key = _ref$3; pub = key; $s = 25; continue; /* } else { */ case 24: key$1 = _ref$3; _r$10 = c.sendAlert(43); /* */ $s = 26; case 26: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } _r$10; _r$11 = fmt.Errorf("tls: client's certificate contains an unsupported public key of type %T", new sliceType$5([(0 >= certs.$length ? $throwRuntimeError("index out of range") : certs.$array[certs.$offset + 0]).PublicKey])); /* */ $s = 27; case 27: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } return [$ifaceNil, _r$11]; /* } */ case 25: c.peerCertificates = certs; return [pub, $ifaceNil]; /* } */ case 22: return [$ifaceNil, $ifaceNil]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: serverHandshakeState.ptr.prototype.processCertsFromClient }; } $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$10 = _r$10; $f._r$11 = _r$11; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f._ref$3 = _ref$3; $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.hs = hs; $f.i = i; $f.key = key; $f.key$1 = key$1; $f.ku = ku; $f.ok = ok; $f.opts = opts; $f.pub = pub; $f.$s = $s; $f.$r = $r; return $f; }; serverHandshakeState.prototype.processCertsFromClient = function(certificates) { return this.$val.processCertsFromClient(certificates); }; Conn.ptr.prototype.tryCipherSuite = function(id, supportedCipherSuites, version, ellipticOk, ecdsaOk) { var $ptr, _i, _i$1, _ref, _ref$1, c, candidate, ecdsaOk, ellipticOk, id, s, supported, supportedCipherSuites, version; c = this; _ref = supportedCipherSuites; _i = 0; while (true) { if (!(_i < _ref.$length)) { break; } supported = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]); if (id === supported) { candidate = ptrType.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") : _ref$1.$array[_ref$1.$offset + _i$1]); if (s.id === id) { candidate = s; break; } _i$1++; } if (candidate === ptrType.nil) { _i++; continue; } if ((!(((candidate.flags & 1) === 0))) && !ellipticOk) { _i++; continue; } if (!((!(((candidate.flags & 2) === 0))) === ecdsaOk)) { _i++; continue; } if (version < 771 && !(((candidate.flags & 4) === 0))) { _i++; continue; } return candidate; } _i++; } return ptrType.nil; }; Conn.prototype.tryCipherSuite = function(id, supportedCipherSuites, version, ellipticOk, ecdsaOk) { return this.$val.tryCipherSuite(id, supportedCipherSuites, version, ellipticOk, ecdsaOk); }; rsaKeyAgreement.ptr.prototype.generateServerKeyExchange = function(config, cert, clientHello, hello) { var $ptr, cert, clientHello, config, hello, ka; ka = $clone(this, rsaKeyAgreement); return [ptrType$18.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, _r$1, _tuple, cert, ciphertext, ciphertextLen, ckx, config, err, ka, preMasterSecret, 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; _r$1 = $f._r$1; _tuple = $f._tuple; cert = $f.cert; ciphertext = $f.ciphertext; ciphertextLen = $f.ciphertextLen; ckx = $f.ckx; config = $f.config; err = $f.err; ka = $f.ka; preMasterSecret = $f.preMasterSecret; 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 = $clone(this, rsaKeyAgreement); preMasterSecret = $makeSlice(sliceType$4, 48); _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))) { return [sliceType$4.nil, err]; } if (ckx.ciphertext.$length < 2) { return [sliceType$4.nil, errClientKeyExchange]; } ciphertext = ckx.ciphertext; if (!((version === 768))) { ciphertextLen = (((x = ckx.ciphertext, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0])) >> 0) << 8 >> 0) | ((x$1 = ckx.ciphertext, (1 >= x$1.$length ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + 1])) >> 0); if (!((ciphertextLen === (ckx.ciphertext.$length - 2 >> 0)))) { return [sliceType$4.nil, errClientKeyExchange]; } ciphertext = $subslice(ckx.ciphertext, 2); } _r$1 = rsa.DecryptPKCS1v15SessionKey(config.rand(), $assertType(cert.PrivateKey, ptrType$28), ciphertext, preMasterSecret); /* */ $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))) { return [sliceType$4.nil, err]; } return [preMasterSecret, $ifaceNil]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: rsaKeyAgreement.ptr.prototype.processClientKeyExchange }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.cert = cert; $f.ciphertext = ciphertext; $f.ciphertextLen = ciphertextLen; $f.ckx = ckx; $f.config = config; $f.err = err; $f.ka = ka; $f.preMasterSecret = preMasterSecret; $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 = $clone(this, rsaKeyAgreement); 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 = $clone(this, rsaKeyAgreement); preMasterSecret = $makeSlice(sliceType$4, 48); (0 >= preMasterSecret.$length ? $throwRuntimeError("index out of range") : preMasterSecret.$array[preMasterSecret.$offset + 0] = ((clientHello.vers >>> 8 << 16 >>> 16) << 24 >>> 24)); (1 >= preMasterSecret.$length ? $throwRuntimeError("index out of range") : 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))) { return [sliceType$4.nil, ptrType$21.nil, err]; } _r$1 = rsa.EncryptPKCS1v15(config.rand(), $assertType(cert.PublicKey, ptrType$15), 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))) { return [sliceType$4.nil, ptrType$21.nil, err]; } ckx = new clientKeyExchangeMsg.ptr(); ckx.ciphertext = $makeSlice(sliceType$4, (encrypted.$length + 2 >> 0)); (x = ckx.ciphertext, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0] = ((encrypted.$length >> 8 >> 0) << 24 >>> 24))); (x$1 = ckx.ciphertext, (1 >= x$1.$length ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + 1] = (encrypted.$length << 24 >>> 24))); $copySlice($subslice(ckx.ciphertext, 2), encrypted); return [preMasterSecret, ckx, $ifaceNil]; /* */ $s = -1; case -1: } 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") : _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$4.nil); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } return _r$1; /* */ $s = -1; case -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$4, 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") : _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$4.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); return md5sha1; /* */ $s = -1; case -1: } 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; }; sha256Hash = function(slices) { var $ptr, _i, _r, _r$1, _ref, h, 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; h = $f.h; slice = $f.slice; slices = $f.slices; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: h = sha256.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") : _ref.$array[_ref.$offset + _i]); _r = h.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 = h.Sum(sliceType$4.nil); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } return _r$1; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: sha256Hash }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f.h = h; $f.slice = slice; $f.slices = slices; $f.$s = $s; $f.$r = $r; return $f; }; hashForServerKeyExchange = function(sigType, hashFunc, version, slices) { var $ptr, _r, _r$1, _r$2, _r$3, _ref, hashFunc, sigType, slices, 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; _r$2 = $f._r$2; _r$3 = $f._r$3; _ref = $f._ref; hashFunc = $f.hashFunc; sigType = $f.sigType; 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: _ref = hashFunc; /* */ if (_ref === 4) { $s = 3; continue; } /* */ if (_ref === 2) { $s = 4; continue; } /* */ $s = 5; continue; /* if (_ref === 4) { */ case 3: _r = sha256Hash(slices); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return [_r, 5, $ifaceNil]; $s = 6; continue; /* } else if (_ref === 2) { */ case 4: _r$1 = sha1Hash(slices); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } return [_r$1, 3, $ifaceNil]; $s = 6; continue; /* } else { */ case 5: return [sliceType$4.nil, 0, errors.New("tls: unknown hash function used by peer")]; /* } */ case 6: /* } */ case 2: /* */ if (sigType === 3) { $s = 9; continue; } /* */ $s = 10; continue; /* if (sigType === 3) { */ case 9: _r$2 = sha1Hash(slices); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } return [_r$2, 3, $ifaceNil]; /* } */ case 10: _r$3 = md5SHA1Hash(slices); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } return [_r$3, 8, $ifaceNil]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: hashForServerKeyExchange }; } $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.hashFunc = hashFunc; $f.sigType = sigType; $f.slices = slices; $f.version = version; $f.$s = $s; $f.$r = $r; return $f; }; pickTLS12HashForSignature = function(sigType, clientSignatureAndHashes) { var $ptr, _i, _ref, _ref$1, clientSignatureAndHashes, sigAndHash, sigType; if (clientSignatureAndHashes.$length === 0) { return [2, $ifaceNil]; } _ref = clientSignatureAndHashes; _i = 0; while (true) { if (!(_i < _ref.$length)) { break; } sigAndHash = $clone(((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]), signatureAndHash); if (!((sigAndHash.signature === sigType))) { _i++; continue; } _ref$1 = sigAndHash.hash; if (_ref$1 === 2 || _ref$1 === 4) { return [sigAndHash.hash, $ifaceNil]; } _i++; } return [0, errors.New("tls: client doesn't support any common hash functions")]; }; curveForCurveID = function(id) { var $ptr, _r, _r$1, _r$2, _ref, 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; _r$1 = $f._r$1; _r$2 = $f._r$2; _ref = $f._ref; id = $f.id; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: _ref = id; /* */ if (_ref === 23) { $s = 1; continue; } /* */ if (_ref === 24) { $s = 2; continue; } /* */ if (_ref === 25) { $s = 3; continue; } /* */ $s = 4; continue; /* if (_ref === 23) { */ case 1: _r = elliptic.P256(); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return [_r, true]; $s = 5; continue; /* } else if (_ref === 24) { */ case 2: _r$1 = elliptic.P384(); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } return [_r$1, true]; $s = 5; continue; /* } else if (_ref === 25) { */ case 3: _r$2 = elliptic.P521(); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } return [_r$2, true]; $s = 5; continue; /* } else { */ case 4: return [$ifaceNil, false]; /* } */ case 5: /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: curveForCurveID }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._ref = _ref; $f.id = id; $f.$s = $s; $f.$r = $r; return $f; }; ecdheKeyAgreement.ptr.prototype.generateServerKeyExchange = function(config, cert, clientHello, hello) { var $ptr, _i, _i$1, _r, _r$1, _r$10, _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, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, c, candidate, cert, clientHello, config, curveid, digest, ecdhePublic, err, err$1, hashFunc, hello, k, ka, ok, ok$1, ok$2, preferredCurves, privKey, privKey$1, r, s, serverECDHParams, sig, sigAndHashLen, skx, tls12HashId, 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; _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; _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; _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; curveid = $f.curveid; digest = $f.digest; ecdhePublic = $f.ecdhePublic; err = $f.err; err$1 = $f.err$1; 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; preferredCurves = $f.preferredCurves; privKey = $f.privKey; privKey$1 = $f.privKey$1; r = $f.r; s = $f.s; serverECDHParams = $f.serverECDHParams; sig = $f.sig; sigAndHashLen = $f.sigAndHashLen; skx = $f.skx; tls12HashId = $f.tls12HashId; x = $f.x; x$1 = $f.x$1; y = $f.y; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: ka = this; curveid = 0; 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") : _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") : _ref$1.$array[_ref$1.$offset + _i$1]); if (candidate === c) { curveid = c; break NextCandidate; } _i$1++; } _i++; } if (curveid === 0) { return [ptrType$18.nil, errors.New("tls: no supported elliptic curves offered")]; } ok = false; _r = curveForCurveID(curveid); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _tuple = _r; ka.curve = _tuple[0]; ok = _tuple[1]; /* */ if (!ok) { $s = 2; continue; } /* */ $s = 3; continue; /* if (!ok) { */ case 2: return [ptrType$18.nil, errors.New("tls: preferredCurves includes unsupported curve")]; /* } */ case 3: _tmp = ptrType$1.nil; _tmp$1 = ptrType$1.nil; x = _tmp; y = _tmp$1; err = $ifaceNil; _r$1 = elliptic.GenerateKey(ka.curve, config.rand()); /* */ $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; ka.privateKey = _tuple$1[0]; x = _tuple$1[1]; y = _tuple$1[2]; err = _tuple$1[3]; if (!($interfaceIsEqual(err, $ifaceNil))) { return [ptrType$18.nil, err]; } _r$2 = elliptic.Marshal(ka.curve, x, y); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } ecdhePublic = _r$2; serverECDHParams = $makeSlice(sliceType$4, (4 + ecdhePublic.$length >> 0)); (0 >= serverECDHParams.$length ? $throwRuntimeError("index out of range") : serverECDHParams.$array[serverECDHParams.$offset + 0] = 3); (1 >= serverECDHParams.$length ? $throwRuntimeError("index out of range") : serverECDHParams.$array[serverECDHParams.$offset + 1] = ((curveid >>> 8 << 16 >>> 16) << 24 >>> 24)); (2 >= serverECDHParams.$length ? $throwRuntimeError("index out of range") : serverECDHParams.$array[serverECDHParams.$offset + 2] = (curveid << 24 >>> 24)); (3 >= serverECDHParams.$length ? $throwRuntimeError("index out of range") : serverECDHParams.$array[serverECDHParams.$offset + 3] = (ecdhePublic.$length << 24 >>> 24)); $copySlice($subslice(serverECDHParams, 4), ecdhePublic); tls12HashId = 0; if (ka.version >= 771) { _tuple$2 = pickTLS12HashForSignature(ka.sigType, clientHello.signatureAndHashes); tls12HashId = _tuple$2[0]; err = _tuple$2[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { return [ptrType$18.nil, err]; } } _r$3 = hashForServerKeyExchange(ka.sigType, tls12HashId, ka.version, new sliceType$6([clientHello.random, hello.random, serverECDHParams])); /* */ $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; digest = _tuple$3[0]; hashFunc = _tuple$3[1]; err = _tuple$3[2]; if (!($interfaceIsEqual(err, $ifaceNil))) { return [ptrType$18.nil, err]; } sig = sliceType$4.nil; _ref$2 = ka.sigType; /* */ if (_ref$2 === 3) { $s = 7; continue; } /* */ if (_ref$2 === 1) { $s = 8; continue; } /* */ $s = 9; continue; /* if (_ref$2 === 3) { */ case 7: _tuple$4 = $assertType(cert.PrivateKey, ptrType$27, true); privKey = _tuple$4[0]; ok$1 = _tuple$4[1]; if (!ok$1) { return [ptrType$18.nil, errors.New("ECDHE ECDSA requires an ECDSA server private key")]; } _r$4 = ecdsa.Sign(config.rand(), privKey, digest); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } _tuple$5 = _r$4; r = _tuple$5[0]; s = _tuple$5[1]; err$1 = _tuple$5[2]; /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 12; continue; } /* */ $s = 13; continue; /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 12: _r$5 = err$1.Error(); /* */ $s = 14; case 14: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } _r$6 = errors.New("failed to sign ECDHE parameters: " + _r$5); /* */ $s = 15; case 15: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } return [ptrType$18.nil, _r$6]; /* } */ case 13: _r$7 = asn1.Marshal((x$1 = new ecdsaSignature.ptr(r, s), new x$1.constructor.elem(x$1))); /* */ $s = 16; case 16: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } _tuple$6 = _r$7; sig = _tuple$6[0]; err$1 = _tuple$6[1]; $s = 10; continue; /* } else if (_ref$2 === 1) { */ case 8: _tuple$7 = $assertType(cert.PrivateKey, ptrType$28, true); privKey$1 = _tuple$7[0]; ok$2 = _tuple$7[1]; if (!ok$2) { return [ptrType$18.nil, errors.New("ECDHE RSA requires a RSA server private key")]; } _r$8 = rsa.SignPKCS1v15(config.rand(), privKey$1, hashFunc, digest); /* */ $s = 17; case 17: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } _tuple$8 = _r$8; sig = _tuple$8[0]; err = _tuple$8[1]; /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 18; continue; } /* */ $s = 19; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 18: _r$9 = err.Error(); /* */ $s = 20; case 20: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } _r$10 = errors.New("failed to sign ECDHE parameters: " + _r$9); /* */ $s = 21; case 21: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } return [ptrType$18.nil, _r$10]; /* } */ case 19: $s = 10; continue; /* } else { */ case 9: return [ptrType$18.nil, errors.New("unknown ECDHE signature algorithm")]; /* } */ case 10: skx = new serverKeyExchangeMsg.ptr(); sigAndHashLen = 0; if (ka.version >= 771) { sigAndHashLen = 2; } skx.key = $makeSlice(sliceType$4, (((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") : k.$array[k.$offset + 0] = tls12HashId); (1 >= k.$length ? $throwRuntimeError("index out of range") : k.$array[k.$offset + 1] = ka.sigType); k = $subslice(k, 2); } (0 >= k.$length ? $throwRuntimeError("index out of range") : k.$array[k.$offset + 0] = ((sig.$length >> 8 >> 0) << 24 >>> 24)); (1 >= k.$length ? $throwRuntimeError("index out of range") : k.$array[k.$offset + 1] = (sig.$length << 24 >>> 24)); $copySlice($subslice(k, 2), sig); return [skx, $ifaceNil]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: ecdheKeyAgreement.ptr.prototype.generateServerKeyExchange }; } $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$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._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.curveid = curveid; $f.digest = digest; $f.ecdhePublic = ecdhePublic; $f.err = err; $f.err$1 = err$1; $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.preferredCurves = preferredCurves; $f.privKey = privKey; $f.privKey$1 = privKey$1; $f.r = r; $f.s = s; $f.serverECDHParams = serverECDHParams; $f.sig = sig; $f.sigAndHashLen = sigAndHashLen; $f.skx = skx; $f.tls12HashId = tls12HashId; $f.x = x; $f.x$1 = x$1; $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, _tuple, _tuple$1, cert, ckx, config, ka, preMasterSecret, 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; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; cert = $f.cert; ckx = $f.ckx; config = $f.config; ka = $f.ka; preMasterSecret = $f.preMasterSecret; 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: ka = this; if ((ckx.ciphertext.$length === 0) || !((((x = ckx.ciphertext, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0])) >> 0) === (ckx.ciphertext.$length - 1 >> 0)))) { return [sliceType$4.nil, errClientKeyExchange]; } _r = elliptic.Unmarshal(ka.curve, $subslice(ckx.ciphertext, 1)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _tuple = _r; x$1 = _tuple[0]; y = _tuple[1]; if (x$1 === ptrType$1.nil) { return [sliceType$4.nil, errClientKeyExchange]; } _r$1 = ka.curve.IsOnCurve(x$1, 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: return [sliceType$4.nil, errClientKeyExchange]; /* } */ case 3: _r$2 = ka.curve.ScalarMult(x$1, y, ka.privateKey); /* */ $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; x$1 = _tuple$1[0]; _r$3 = ka.curve.Params(); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } preMasterSecret = $makeSlice(sliceType$4, (((_r$3.BitSize + 7 >> 0)) >> 3 >> 0)); xBytes = x$1.Bytes(); $copySlice($subslice(preMasterSecret, (preMasterSecret.$length - xBytes.$length >> 0)), xBytes); return [preMasterSecret, $ifaceNil]; /* */ $s = -1; case -1: } 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._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.cert = cert; $f.ckx = ckx; $f.config = config; $f.ka = ka; $f.preMasterSecret = preMasterSecret; $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, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, cert, clientHello, config, curveid, digest, ecdsaSig, err, err$1, err$2, hashFunc, ka, ok, ok$1, ok$2, pubKey, pubKey$1, publicLen, serverECDHParams, serverHello, sig, sigAndHash, sigLen, skx, tls12HashId, 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$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; _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; curveid = $f.curveid; 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; publicLen = $f.publicLen; serverECDHParams = $f.serverECDHParams; serverHello = $f.serverHello; sig = $f.sig; sigAndHash = $f.sigAndHash; sigLen = $f.sigLen; skx = $f.skx; tls12HashId = $f.tls12HashId; 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) { return errServerKeyExchange; } if (!(((x = skx.key, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0])) === 3))) { return errors.New("tls: server selected unsupported curve"); } curveid = ((((x$1 = skx.key, (1 >= x$1.$length ? $throwRuntimeError("index out of range") : 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") : x$2.$array[x$2.$offset + 2])) << 16 >>> 16)) >>> 0; ok = false; _r = curveForCurveID(curveid); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _tuple = _r; ka.curve = _tuple[0]; ok = _tuple[1]; /* */ if (!ok) { $s = 2; continue; } /* */ $s = 3; continue; /* if (!ok) { */ case 2: return errors.New("tls: server selected unsupported curve"); /* } */ case 3: publicLen = ((x$3 = skx.key, (3 >= x$3.$length ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + 3])) >> 0); if ((publicLen + 4 >> 0) > skx.key.$length) { return errServerKeyExchange; } _r$1 = elliptic.Unmarshal(ka.curve, $subslice(skx.key, 4, (4 + publicLen >> 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; ka.x = _tuple$1[0]; ka.y = _tuple$1[1]; if (ka.x === ptrType$1.nil) { return errServerKeyExchange; } _r$2 = ka.curve.IsOnCurve(ka.x, ka.y); /* */ $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: return errServerKeyExchange; /* } */ case 6: serverECDHParams = $subslice(skx.key, 0, (4 + publicLen >> 0)); sig = $subslice(skx.key, (4 + publicLen >> 0)); if (sig.$length < 2) { return errServerKeyExchange; } tls12HashId = 0; if (ka.version >= 771) { sigAndHash = sliceType$4.nil; _tmp = $subslice(sig, 0, 2); _tmp$1 = $subslice(sig, 2); sigAndHash = _tmp; sig = _tmp$1; if (!(((1 >= sigAndHash.$length ? $throwRuntimeError("index out of range") : sigAndHash.$array[sigAndHash.$offset + 1]) === ka.sigType))) { return errServerKeyExchange; } tls12HashId = (0 >= sigAndHash.$length ? $throwRuntimeError("index out of range") : sigAndHash.$array[sigAndHash.$offset + 0]); if (sig.$length < 2) { return errServerKeyExchange; } } sigLen = (((0 >= sig.$length ? $throwRuntimeError("index out of range") : sig.$array[sig.$offset + 0]) >> 0) << 8 >> 0) | ((1 >= sig.$length ? $throwRuntimeError("index out of range") : sig.$array[sig.$offset + 1]) >> 0); if (!(((sigLen + 2 >> 0) === sig.$length))) { return errServerKeyExchange; } sig = $subslice(sig, 2); _r$3 = hashForServerKeyExchange(ka.sigType, tls12HashId, ka.version, new sliceType$6([clientHello.random, serverHello.random, serverECDHParams])); /* */ $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; digest = _tuple$2[0]; hashFunc = _tuple$2[1]; err = _tuple$2[2]; if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } _ref = ka.sigType; /* */ if (_ref === 3) { $s = 9; continue; } /* */ if (_ref === 1) { $s = 10; continue; } /* */ $s = 11; continue; /* if (_ref === 3) { */ case 9: _tuple$3 = $assertType(cert.PublicKey, ptrType$16, true); pubKey = _tuple$3[0]; ok$1 = _tuple$3[1]; if (!ok$1) { return errors.New("ECDHE ECDSA requires a ECDSA server public key"); } ecdsaSig = new ecdsaSignature.ptr(); _r$4 = asn1.Unmarshal(sig, ecdsaSig); /* */ $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; err$1 = _tuple$4[1]; /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 14; continue; } /* */ $s = 15; continue; /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 14: return err$1; /* } */ case 15: if (ecdsaSig.R.Sign() <= 0 || ecdsaSig.S.Sign() <= 0) { return errors.New("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: return errors.New("ECDSA verification failure"); /* } */ case 17: $s = 12; continue; /* } else if (_ref === 1) { */ case 10: _tuple$5 = $assertType(cert.PublicKey, ptrType$15, true); pubKey$1 = _tuple$5[0]; ok$2 = _tuple$5[1]; if (!ok$2) { return errors.New("ECDHE RSA requires a RSA server public key"); } err$2 = rsa.VerifyPKCS1v15(pubKey$1, hashFunc, digest, sig); if (!($interfaceIsEqual(err$2, $ifaceNil))) { return err$2; } $s = 12; continue; /* } else { */ case 11: return errors.New("unknown ECDHE signature algorithm"); /* } */ case 12: return $ifaceNil; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: ecdheKeyAgreement.ptr.prototype.processServerKeyExchange }; } $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._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.curveid = curveid; $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.publicLen = publicLen; $f.serverECDHParams = serverECDHParams; $f.serverHello = serverHello; $f.sig = sig; $f.sigAndHash = sigAndHash; $f.sigLen = sigLen; $f.skx = skx; $f.tls12HashId = tls12HashId; $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, _tuple, _tuple$1, cert, ckx, clientHello, config, err, ka, mx, my, preMasterSecret, priv, serialized, 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; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; cert = $f.cert; ckx = $f.ckx; clientHello = $f.clientHello; config = $f.config; err = $f.err; ka = $f.ka; mx = $f.mx; my = $f.my; preMasterSecret = $f.preMasterSecret; priv = $f.priv; serialized = $f.serialized; x = $f.x; x$1 = $f.x$1; xBytes = $f.xBytes; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: ka = this; if ($interfaceIsEqual(ka.curve, $ifaceNil)) { return [sliceType$4.nil, ptrType$21.nil, errors.New("missing ServerKeyExchange message")]; } _r = elliptic.GenerateKey(ka.curve, config.rand()); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _tuple = _r; priv = _tuple[0]; mx = _tuple[1]; my = _tuple[2]; err = _tuple[3]; if (!($interfaceIsEqual(err, $ifaceNil))) { return [sliceType$4.nil, ptrType$21.nil, err]; } _r$1 = ka.curve.ScalarMult(ka.x, ka.y, priv); /* */ $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 = _tuple$1[0]; _r$2 = ka.curve.Params(); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } preMasterSecret = $makeSlice(sliceType$4, (((_r$2.BitSize + 7 >> 0)) >> 3 >> 0)); xBytes = x.Bytes(); $copySlice($subslice(preMasterSecret, (preMasterSecret.$length - xBytes.$length >> 0)), xBytes); _r$3 = elliptic.Marshal(ka.curve, mx, my); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } serialized = _r$3; ckx = new clientKeyExchangeMsg.ptr(); ckx.ciphertext = $makeSlice(sliceType$4, (1 + serialized.$length >> 0)); (x$1 = ckx.ciphertext, (0 >= x$1.$length ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + 0] = (serialized.$length << 24 >>> 24))); $copySlice($subslice(ckx.ciphertext, 1), serialized); return [preMasterSecret, ckx, $ifaceNil]; /* */ $s = -1; case -1: } 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._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.cert = cert; $f.ckx = ckx; $f.clientHello = clientHello; $f.config = config; $f.err = err; $f.ka = ka; $f.mx = mx; $f.my = my; $f.preMasterSecret = preMasterSecret; $f.priv = priv; $f.serialized = serialized; $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$4.nil; s2 = sliceType$4.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$4.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$4.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$4.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; case -1: } 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$4, (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$4, 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") : _ref.$array[_ref.$offset + _i]); ((i < 0 || i >= result.$length) ? $throwRuntimeError("index out of range") : result.$array[result.$offset + i] = (((i < 0 || i >= result.$length) ? $throwRuntimeError("index out of range") : result.$array[result.$offset + i]) ^ (b)) << 24 >>> 24); _i++; } /* */ $s = -1; case -1: } 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(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$4, (label.$length + seed.$length >> 0)); $copySlice(labelAndSeed, label); $copySlice($subslice(labelAndSeed, label.$length), seed); $r = pHash(result, secret, labelAndSeed, sha256.New); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: prf12 }; } $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 = $clone(arrayType$1.zero(), arrayType$1); /* 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") : 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$4(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$4.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$4.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; case -1: } 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; }; prfForVersion = function(version) { var $ptr, _ref, version; _ref = version; if (_ref === 768) { return prf30; } else if (_ref === 769 || _ref === 770) { return prf10; } else if (_ref === 771) { return prf12; } else { $panic(new $String("unknown version")); } }; masterFromPreMasterSecret = function(version, preMasterSecret, clientRandom, serverRandom) { var $ptr, clientRandom, masterSecret, preMasterSecret, seed, serverRandom, 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; version = $f.version; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: seed = $clone(arrayType$2.zero(), arrayType$2); $copySlice($subslice(new sliceType$4(seed), 0, clientRandom.$length), clientRandom); $copySlice($subslice(new sliceType$4(seed), clientRandom.$length), serverRandom); masterSecret = $makeSlice(sliceType$4, 48); $r = prfForVersion(version)(masterSecret, preMasterSecret, masterSecretLabel, $subslice(new sliceType$4(seed), 0)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } return masterSecret; /* */ $s = -1; case -1: } 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.version = version; $f.$s = $s; $f.$r = $r; return $f; }; keysFromMasterSecret = function(version, masterSecret, clientRandom, serverRandom, macLen, keyLen, ivLen) { var $ptr, clientIV, clientKey, clientMAC, clientRandom, ivLen, keyLen, keyMaterial, macLen, masterSecret, n, seed, serverIV, serverKey, serverMAC, serverRandom, 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; version = $f.version; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: clientMAC = sliceType$4.nil; serverMAC = sliceType$4.nil; clientKey = sliceType$4.nil; serverKey = sliceType$4.nil; clientIV = sliceType$4.nil; serverIV = sliceType$4.nil; seed = $clone(arrayType$2.zero(), arrayType$2); $copySlice($subslice(new sliceType$4(seed), 0, clientRandom.$length), serverRandom); $copySlice($subslice(new sliceType$4(seed), serverRandom.$length), clientRandom); n = ((2 * macLen >> 0) + (2 * keyLen >> 0) >> 0) + (2 * ivLen >> 0) >> 0; keyMaterial = $makeSlice(sliceType$4, n); $r = prfForVersion(version)(keyMaterial, masterSecret, keyExpansionLabel, $subslice(new sliceType$4(seed), 0)); /* */ $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); return [clientMAC, serverMAC, clientKey, serverKey, clientIV, serverIV]; /* */ $s = -1; case -1: } 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.version = version; $f.$s = $s; $f.$r = $r; return $f; }; newFinishedHash = function(version) { var $ptr, version; if (version >= 771) { return new finishedHash.ptr(sha256.New(), sha256.New(), $ifaceNil, $ifaceNil, version); } return new finishedHash.ptr(sha1.New(), sha1.New(), md5.New(), md5.New(), version); }; 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 = $clone(this, finishedHash); _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: _tmp = msg.$length; _tmp$1 = $ifaceNil; n = _tmp; err = _tmp$1; return [n, err]; /* */ $s = -1; case -1: } 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); }; 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: magic = $clone(magic, arrayType$3); _r = md5$1.Write(new sliceType$4(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$4(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$4.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$4(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$4.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(new sliceType$4(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$4(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$4.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$4(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$4.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$4, (md5Digest.$length + sha1Digest.$length >> 0)); $copySlice(ret, md5Digest); $copySlice($subslice(ret, md5Digest.$length), sha1Digest); return ret; /* */ $s = -1; case -1: } 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, _r, _r$1, _r$2, _r$3, h, masterSecret, out, seed, seed$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; h = $f.h; masterSecret = $f.masterSecret; out = $f.out; seed = $f.seed; seed$1 = $f.seed$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: h = $clone(this, finishedHash); /* */ if (h.version === 768) { $s = 1; continue; } /* */ $s = 2; continue; /* if (h.version === 768) { */ case 1: _r = finishedSum30(h.clientMD5, h.client, masterSecret, ssl3ClientFinishedMagic); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* } */ case 2: out = $makeSlice(sliceType$4, 12); /* */ if (h.version >= 771) { $s = 4; continue; } /* */ $s = 5; continue; /* if (h.version >= 771) { */ case 4: _r$1 = h.client.Sum(sliceType$4.nil); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } seed = _r$1; $r = prf12(out, masterSecret, clientFinishedLabel, seed); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $s = 6; continue; /* } else { */ case 5: seed$1 = $makeSlice(sliceType$4, 0, 36); _r$2 = h.clientMD5.Sum(seed$1); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } seed$1 = _r$2; _r$3 = h.client.Sum(seed$1); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } seed$1 = _r$3; $r = prf10(out, masterSecret, clientFinishedLabel, seed$1); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 6: return out; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: finishedHash.ptr.prototype.clientSum }; } $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.masterSecret = masterSecret; $f.out = out; $f.seed = seed; $f.seed$1 = seed$1; $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, _r, _r$1, _r$2, _r$3, h, masterSecret, out, seed, seed$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; h = $f.h; masterSecret = $f.masterSecret; out = $f.out; seed = $f.seed; seed$1 = $f.seed$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: h = $clone(this, finishedHash); /* */ if (h.version === 768) { $s = 1; continue; } /* */ $s = 2; continue; /* if (h.version === 768) { */ case 1: _r = finishedSum30(h.serverMD5, h.server, masterSecret, ssl3ServerFinishedMagic); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* } */ case 2: out = $makeSlice(sliceType$4, 12); /* */ if (h.version >= 771) { $s = 4; continue; } /* */ $s = 5; continue; /* if (h.version >= 771) { */ case 4: _r$1 = h.server.Sum(sliceType$4.nil); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } seed = _r$1; $r = prf12(out, masterSecret, serverFinishedLabel, seed); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $s = 6; continue; /* } else { */ case 5: seed$1 = $makeSlice(sliceType$4, 0, 36); _r$2 = h.serverMD5.Sum(seed$1); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } seed$1 = _r$2; _r$3 = h.server.Sum(seed$1); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } seed$1 = _r$3; $r = prf10(out, masterSecret, serverFinishedLabel, seed$1); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 6: return out; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: finishedHash.ptr.prototype.serverSum }; } $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.masterSecret = masterSecret; $f.out = out; $f.seed = seed; $f.seed$1 = seed$1; $f.$s = $s; $f.$r = $r; return $f; }; finishedHash.prototype.serverSum = function(masterSecret) { return this.$val.serverSum(masterSecret); }; finishedHash.ptr.prototype.hashForClientCertificate = function(sigType) { var $ptr, _r, _r$1, _r$2, _r$3, digest, digest$1, digest$2, h, sigType, $s, $r; /* */ $s = 0; var $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; digest = $f.digest; digest$1 = $f.digest$1; digest$2 = $f.digest$2; h = $f.h; sigType = $f.sigType; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: h = $clone(this, finishedHash); /* */ if (h.version >= 771) { $s = 1; continue; } /* */ $s = 2; continue; /* if (h.version >= 771) { */ case 1: _r = h.server.Sum(sliceType$4.nil); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } digest = _r; return [digest, 5, 4]; /* } */ case 2: /* */ if (sigType === 3) { $s = 4; continue; } /* */ $s = 5; continue; /* if (sigType === 3) { */ case 4: _r$1 = h.server.Sum(sliceType$4.nil); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } digest$1 = _r$1; return [digest$1, 3, 2]; /* } */ case 5: digest$2 = $makeSlice(sliceType$4, 0, 36); _r$2 = h.serverMD5.Sum(digest$2); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } digest$2 = _r$2; _r$3 = h.server.Sum(digest$2); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } digest$2 = _r$3; return [digest$2, 8, 0]; /* */ $s = -1; case -1: } 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.digest = digest; $f.digest$1 = digest$1; $f.digest$2 = digest$2; $f.h = h; $f.sigType = sigType; $f.$s = $s; $f.$r = $r; return $f; }; finishedHash.prototype.hashForClientCertificate = function(sigType) { return this.$val.hashForClientCertificate(sigType); }; 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") : _ref.$array[_ref.$offset + _i]); length = length + ((4 + cert.$length >> 0)) >> 0; _i++; } ret = $makeSlice(sliceType$4, length); x = ret; (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0] = ((s.vers >>> 8 << 16 >>> 16) << 24 >>> 24)); (1 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 1] = (s.vers << 24 >>> 24)); (2 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 2] = ((s.cipherSuite >>> 8 << 16 >>> 16) << 24 >>> 24)); (3 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 3] = (s.cipherSuite << 24 >>> 24)); (4 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 4] = ((s.masterSecret.$length >> 8 >> 0) << 24 >>> 24)); (5 >= x.$length ? $throwRuntimeError("index out of range") : 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") : x.$array[x.$offset + 0] = ((s.certificates.$length >> 8 >> 0) << 24 >>> 24)); (1 >= x.$length ? $throwRuntimeError("index out of range") : 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") : _ref$1.$array[_ref$1.$offset + _i$1]); (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0] = ((cert$1.$length >> 24 >> 0) << 24 >>> 24)); (1 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 1] = ((cert$1.$length >> 16 >> 0) << 24 >>> 24)); (2 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 2] = ((cert$1.$length >> 8 >> 0) << 24 >>> 24)); (3 >= x.$length ? $throwRuntimeError("index out of range") : 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") : data.$array[data.$offset + 0]) << 16 >>> 16) << 8 << 16 >>> 16) | ((1 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 1]) << 16 >>> 16)) >>> 0; s.cipherSuite = ((((2 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 2]) << 16 >>> 16) << 8 << 16 >>> 16) | ((3 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 3]) << 16 >>> 16)) >>> 0; masterSecretLen = (((4 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 4]) >> 0) << 8 >> 0) | ((5 >= data.$length ? $throwRuntimeError("index out of range") : 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") : data.$array[data.$offset + 0]) >> 0) << 8 >> 0) | ((1 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 1]) >> 0); data = $subslice(data, 2); s.certificates = $makeSlice(sliceType$6, 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") : data.$array[data.$offset + 0]) >> 0) << 24 >> 0) | (((1 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 1]) >> 0) << 16 >> 0)) | (((2 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 2]) >> 0) << 8 >> 0)) | ((3 >= data.$length ? $throwRuntimeError("index out of range") : 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") : x.$array[x.$offset + i] = $subslice(data, 0, certLen))); data = $subslice(data, certLen); _i++; } if (data.$length > 0) { return false; } return true; }; 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, _tuple, _tuple$1, block$1, c, encrypted, err, err$1, iv, mac, macBytes, serialized, 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; _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; block$1 = $f.block$1; c = $f.c; encrypted = $f.encrypted; err = $f.err; err$1 = $f.err$1; iv = $f.iv; mac = $f.mac; macBytes = $f.macBytes; serialized = $f.serialized; state = $f.state; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: c = this; serialized = state.marshal(); encrypted = $makeSlice(sliceType$4, ((16 + serialized.$length >> 0) + 32 >> 0)); iv = $subslice(encrypted, 0, 16); 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 = 2; continue; } /* */ $s = 3; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2: return [sliceType$4.nil, err]; /* } */ case 3: _tuple$1 = aes.NewCipher($subslice(new sliceType$4(c.config.SessionTicketKey), 0, 16)); block$1 = _tuple$1[0]; err$1 = _tuple$1[1]; /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 4; continue; } /* */ $s = 5; continue; /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 4: _r$1 = err$1.Error(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } _r$2 = errors.New("tls: failed to create cipher while encrypting ticket: " + _r$1); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } return [sliceType$4.nil, _r$2]; /* } */ case 5: _r$3 = cipher.NewCTR(block$1, iv); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } $r = _r$3.XORKeyStream($subslice(encrypted, 16), serialized); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } _r$4 = hmac.New(sha256.New, $subslice(new sliceType$4(c.config.SessionTicketKey), 16, 32)); /* */ $s = 10; case 10: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } mac = _r$4; _r$5 = mac.Write($subslice(encrypted, 0, (encrypted.$length - 32 >> 0))); /* */ $s = 11; case 11: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } _r$5; _r$6 = mac.Sum($subslice(macBytes, 0, 0)); /* */ $s = 12; case 12: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } _r$6; return [encrypted, $ifaceNil]; /* */ $s = -1; case -1: } 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._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.mac = mac; $f.macBytes = macBytes; $f.serialized = serialized; $f.state = state; $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, _r, _r$1, _r$2, _r$3, _tuple, block$1, c, ciphertext, encrypted, err, expected, iv, 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; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tuple = $f._tuple; block$1 = $f.block$1; c = $f.c; ciphertext = $f.ciphertext; encrypted = $f.encrypted; err = $f.err; expected = $f.expected; iv = $f.iv; 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 < 48) { return [ptrType$26.nil, false]; } iv = $subslice(encrypted, 0, 16); macBytes = $subslice(encrypted, (encrypted.$length - 32 >> 0)); _r = hmac.New(sha256.New, $subslice(new sliceType$4(c.config.SessionTicketKey), 16, 32)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } mac = _r; _r$1 = mac.Write($subslice(encrypted, 0, (encrypted.$length - 32 >> 0))); /* */ $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 = mac.Sum(sliceType$4.nil); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } expected = _r$2; if (!((subtle.ConstantTimeCompare(macBytes, expected) === 1))) { return [ptrType$26.nil, false]; } _tuple = aes.NewCipher($subslice(new sliceType$4(c.config.SessionTicketKey), 0, 16)); block$1 = _tuple[0]; err = _tuple[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { return [ptrType$26.nil, false]; } ciphertext = $subslice(encrypted, 16, (encrypted.$length - 32 >> 0)); plaintext = ciphertext; _r$3 = cipher.NewCTR(block$1, iv); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } $r = _r$3.XORKeyStream(plaintext, ciphertext); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } state = new sessionState.ptr(); ok = state.unmarshal(plaintext); return [state, ok]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.decryptTicket }; } $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$1 = block$1; $f.c = c; $f.ciphertext = ciphertext; $f.encrypted = encrypted; $f.err = err; $f.expected = expected; $f.iv = iv; $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(), $ifaceNil, 0, false, config, false, false, 0, sliceType$4.nil, sliceType$8.nil, sliceType$10.nil, "", arrayType$4.zero(), "", false, new halfConn.ptr(), new halfConn.ptr(), ptrType$8.nil, ptrType$8.nil, new bytes.Buffer.ptr(), arrayType$5.zero()); }; $pkg.Server = Server; 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: c = $ifaceNil; err = $ifaceNil; 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))) { return [c, err]; } c = Server(c, l.config); return [c, err]; /* */ $s = -1; case -1: } 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(); l.Listener = inner; l.config = config; return l; }; $pkg.NewListener = NewListener; LoadX509KeyPair = function(certFile, keyFile) { var $ptr, _r, _r$1, _r$2, _tuple, _tuple$1, _tuple$2, cert, 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; _tuple$2 = $f._tuple$2; cert = $f.cert; 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: cert = new Certificate.ptr(); err = $ifaceNil; _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))) { return [cert, 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))) { return [cert, 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; } _tuple$2 = _r$2; $copy(cert, _tuple$2[0], Certificate); err = _tuple$2[1]; return [cert, err]; /* */ $s = -1; case -1: } 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._tuple$2 = _tuple$2; $f.cert = cert; $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$2, _r$3, _ref, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, cert, certDERBlock, certPEMBlock, err, keyDERBlock, keyPEMBlock, ok, ok$1, priv, priv$1, pub, pub$1, pub$2, 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$2 = $f._r$2; _r$3 = $f._r$3; _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; 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; x = $f.x; x509Cert = $f.x509Cert; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: cert = new Certificate.ptr(); err = $ifaceNil; certDERBlock = ptrType$29.nil; /* while (true) { */ case 1: _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$29.nil) { /* break; */ $s = 2; continue; } if (certDERBlock.Type === "CERTIFICATE") { cert.Certificate = $append(cert.Certificate, certDERBlock.Bytes); } /* } */ $s = 1; continue; case 2: if (cert.Certificate.$length === 0) { err = errors.New("crypto/tls: failed to parse certificate PEM data"); return [cert, err]; } keyDERBlock = ptrType$29.nil; /* while (true) { */ case 4: _r$1 = pem.Decode(keyPEMBlock); /* */ $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; keyDERBlock = _tuple$1[0]; keyPEMBlock = _tuple$1[1]; if (keyDERBlock === ptrType$29.nil) { err = errors.New("crypto/tls: failed to parse key PEM data"); return [cert, err]; } if (keyDERBlock.Type === "PRIVATE KEY" || strings.HasSuffix(keyDERBlock.Type, " PRIVATE KEY")) { /* break; */ $s = 5; continue; } /* } */ $s = 4; continue; case 5: _r$2 = parsePrivateKey(keyDERBlock.Bytes); /* */ $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; cert.PrivateKey = _tuple$2[0]; err = _tuple$2[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { return [cert, err]; } _r$3 = x509.ParseCertificate((x = cert.Certificate, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0]))); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } _tuple$3 = _r$3; x509Cert = _tuple$3[0]; err = _tuple$3[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { return [cert, err]; } _ref = x509Cert.PublicKey; if ($assertType(_ref, ptrType$15, true)[1]) { pub = _ref.$val; _tuple$4 = $assertType(cert.PrivateKey, ptrType$28, true); priv = _tuple$4[0]; ok = _tuple$4[1]; if (!ok) { err = errors.New("crypto/tls: private key type does not match public key type"); return [cert, err]; } if (!((pub.N.Cmp(priv.PublicKey.N) === 0))) { err = errors.New("crypto/tls: private key does not match public key"); return [cert, err]; } } else if ($assertType(_ref, ptrType$16, true)[1]) { pub$1 = _ref.$val; _tuple$5 = $assertType(cert.PrivateKey, ptrType$27, true); priv$1 = _tuple$5[0]; ok$1 = _tuple$5[1]; if (!ok$1) { err = errors.New("crypto/tls: private key type does not match public key type"); return [cert, err]; } if (!((pub$1.X.Cmp(priv$1.PublicKey.X) === 0)) || !((pub$1.Y.Cmp(priv$1.PublicKey.Y) === 0))) { err = errors.New("crypto/tls: private key does not match public key"); return [cert, err]; } } else { pub$2 = _ref; err = errors.New("crypto/tls: unknown public key algorithm"); return [cert, err]; } return [cert, err]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: X509KeyPair }; } $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._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.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.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 = 2; continue; } /* */ $s = 3; continue; /* if ($interfaceIsEqual(err, $ifaceNil)) { */ case 2: return [key, $ifaceNil]; /* } */ case 3: _r$1 = x509.ParsePKCS8PrivateKey(der); /* */ $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; key$1 = _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: _ref = key$1; if ($assertType(_ref, ptrType$28, true)[1] || $assertType(_ref, ptrType$27, true)[1]) { key$2 = _ref; return [key$2, $ifaceNil]; } else { key$3 = _ref; return [$ifaceNil, errors.New("crypto/tls: found unknown private key type in PKCS#8 wrapping")]; } /* } */ case 6: _r$2 = x509.ParseECPrivateKey(der); /* */ $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; key$4 = _tuple$2[0]; err$2 = _tuple$2[1]; /* */ if ($interfaceIsEqual(err$2, $ifaceNil)) { $s = 8; continue; } /* */ $s = 9; continue; /* if ($interfaceIsEqual(err$2, $ifaceNil)) { */ case 8: return [key$4, $ifaceNil]; /* } */ case 9: return [$ifaceNil, errors.New("crypto/tls: failed to parse private key")]; /* */ $s = -1; case -1: } 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$30.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$4, sliceType$4, sliceType$4, sliceType$4], [sliceType$4], false)}, {prop: "Open", name: "Open", pkg: "", typ: $funcType([sliceType$4, sliceType$4, sliceType$4, sliceType$4], [sliceType$4, $error], false)}]; ssl30MAC.methods = [{prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "MAC", name: "MAC", pkg: "", typ: $funcType([sliceType$4, sliceType$4, sliceType$4, sliceType$4], [sliceType$4], false)}]; tls10MAC.methods = [{prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "MAC", name: "MAC", pkg: "", typ: $funcType([sliceType$4, sliceType$4, sliceType$4, sliceType$4], [sliceType$4], false)}]; ptrType$2.methods = [{prop: "serverInit", name: "serverInit", pkg: "crypto/tls", typ: $funcType([], [], 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], 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$3, $error], false)}, {prop: "BuildNameToCertificate", name: "BuildNameToCertificate", pkg: "", typ: $funcType([], [], false)}]; ptrType$10.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: "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: "writeRecord", name: "writeRecord", pkg: "crypto/tls", typ: $funcType([recordType, sliceType$4], [$Int, $error], false)}, {prop: "readHandshake", name: "readHandshake", pkg: "crypto/tls", typ: $funcType([], [$emptyInterface, $error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$4], [$Int, $error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$4], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", 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$4], 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: "tryCipherSuite", name: "tryCipherSuite", pkg: "crypto/tls", typ: $funcType([$Uint16, sliceType, $Uint16, $Bool, $Bool], [ptrType], false)}, {prop: "encryptTicket", name: "encryptTicket", pkg: "crypto/tls", typ: $funcType([ptrType$26], [sliceType$4, $error], false)}, {prop: "decryptTicket", name: "decryptTicket", pkg: "crypto/tls", typ: $funcType([sliceType$4], [ptrType$26, $Bool], false)}]; ptrType$33.methods = [{prop: "setErrorLocked", name: "setErrorLocked", pkg: "crypto/tls", typ: $funcType([$error], [$error], false)}, {prop: "error", name: "error", pkg: "crypto/tls", typ: $funcType([], [$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: "resetSeq", name: "resetSeq", pkg: "crypto/tls", typ: $funcType([], [], false)}, {prop: "decrypt", name: "decrypt", pkg: "crypto/tls", typ: $funcType([ptrType$8], [$Bool, $Int, alert], false)}, {prop: "encrypt", name: "encrypt", pkg: "crypto/tls", typ: $funcType([ptrType$8, $Int], [$Bool, alert], false)}, {prop: "newBlock", name: "newBlock", pkg: "crypto/tls", typ: $funcType([], [ptrType$8], false)}, {prop: "freeBlock", name: "freeBlock", pkg: "crypto/tls", typ: $funcType([ptrType$8], [], false)}, {prop: "splitBlock", name: "splitBlock", pkg: "crypto/tls", typ: $funcType([ptrType$8, $Int], [ptrType$8, ptrType$8], false)}]; ptrType$8.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$4], [$Int, $error], false)}]; ptrType$34.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$4], [$error], false)}, {prop: "readSessionTicket", name: "readSessionTicket", pkg: "crypto/tls", typ: $funcType([], [$error], false)}, {prop: "sendFinished", name: "sendFinished", pkg: "crypto/tls", typ: $funcType([sliceType$4], [$error], false)}]; ptrType$11.methods = [{prop: "equal", name: "equal", pkg: "crypto/tls", typ: $funcType([$emptyInterface], [$Bool], false)}, {prop: "marshal", name: "marshal", pkg: "crypto/tls", typ: $funcType([], [sliceType$4], false)}, {prop: "unmarshal", name: "unmarshal", pkg: "crypto/tls", typ: $funcType([sliceType$4], [$Bool], false)}]; ptrType$9.methods = [{prop: "equal", name: "equal", pkg: "crypto/tls", typ: $funcType([$emptyInterface], [$Bool], false)}, {prop: "marshal", name: "marshal", pkg: "crypto/tls", typ: $funcType([], [sliceType$4], false)}, {prop: "unmarshal", name: "unmarshal", pkg: "crypto/tls", typ: $funcType([sliceType$4], [$Bool], false)}]; ptrType$12.methods = [{prop: "equal", name: "equal", pkg: "crypto/tls", typ: $funcType([$emptyInterface], [$Bool], false)}, {prop: "marshal", name: "marshal", pkg: "crypto/tls", typ: $funcType([], [sliceType$4], false)}, {prop: "unmarshal", name: "unmarshal", pkg: "crypto/tls", typ: $funcType([sliceType$4], [$Bool], false)}]; ptrType$18.methods = [{prop: "equal", name: "equal", pkg: "crypto/tls", typ: $funcType([$emptyInterface], [$Bool], false)}, {prop: "marshal", name: "marshal", pkg: "crypto/tls", typ: $funcType([], [sliceType$4], false)}, {prop: "unmarshal", name: "unmarshal", pkg: "crypto/tls", typ: $funcType([sliceType$4], [$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$4], false)}, {prop: "unmarshal", name: "unmarshal", pkg: "crypto/tls", typ: $funcType([sliceType$4], [$Bool], false)}]; ptrType$20.methods = [{prop: "equal", name: "equal", pkg: "crypto/tls", typ: $funcType([$emptyInterface], [$Bool], false)}, {prop: "marshal", name: "marshal", pkg: "crypto/tls", typ: $funcType([], [sliceType$4], false)}, {prop: "unmarshal", name: "unmarshal", pkg: "crypto/tls", typ: $funcType([sliceType$4], [$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$4], false)}, {prop: "unmarshal", name: "unmarshal", pkg: "crypto/tls", typ: $funcType([sliceType$4], [$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$4], false)}, {prop: "unmarshal", name: "unmarshal", pkg: "crypto/tls", typ: $funcType([sliceType$4], [$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$4], false)}, {prop: "unmarshal", name: "unmarshal", pkg: "crypto/tls", typ: $funcType([sliceType$4], [$Bool], false)}]; ptrType$19.methods = [{prop: "equal", name: "equal", pkg: "crypto/tls", typ: $funcType([$emptyInterface], [$Bool], false)}, {prop: "marshal", name: "marshal", pkg: "crypto/tls", typ: $funcType([], [sliceType$4], false)}, {prop: "unmarshal", name: "unmarshal", pkg: "crypto/tls", typ: $funcType([sliceType$4], [$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$4], false)}, {prop: "unmarshal", name: "unmarshal", pkg: "crypto/tls", typ: $funcType([sliceType$4], [$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$4], false)}, {prop: "unmarshal", name: "unmarshal", pkg: "crypto/tls", typ: $funcType([sliceType$4], [$Bool], false)}]; ptrType$35.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$4], [$error], false)}, {prop: "sendSessionTicket", name: "sendSessionTicket", pkg: "crypto/tls", typ: $funcType([], [$error], false)}, {prop: "sendFinished", name: "sendFinished", pkg: "crypto/tls", typ: $funcType([sliceType$4], [$error], false)}, {prop: "processCertsFromClient", name: "processCertsFromClient", pkg: "crypto/tls", typ: $funcType([sliceType$6], [crypto.PublicKey, $error], false)}]; rsaKeyAgreement.methods = [{prop: "generateServerKeyExchange", name: "generateServerKeyExchange", pkg: "crypto/tls", typ: $funcType([ptrType$2, ptrType$3, ptrType$11, ptrType$9], [ptrType$18, $error], false)}, {prop: "processClientKeyExchange", name: "processClientKeyExchange", pkg: "crypto/tls", typ: $funcType([ptrType$2, ptrType$3, ptrType$21, $Uint16], [sliceType$4, $error], false)}, {prop: "processServerKeyExchange", name: "processServerKeyExchange", pkg: "crypto/tls", typ: $funcType([ptrType$2, ptrType$11, ptrType$9, ptrType$13, ptrType$18], [$error], false)}, {prop: "generateClientKeyExchange", name: "generateClientKeyExchange", pkg: "crypto/tls", typ: $funcType([ptrType$2, ptrType$11, ptrType$13], [sliceType$4, ptrType$21, $error], false)}]; ptrType$36.methods = [{prop: "generateServerKeyExchange", name: "generateServerKeyExchange", pkg: "crypto/tls", typ: $funcType([ptrType$2, ptrType$3, ptrType$11, ptrType$9], [ptrType$18, $error], false)}, {prop: "processClientKeyExchange", name: "processClientKeyExchange", pkg: "crypto/tls", typ: $funcType([ptrType$2, ptrType$3, ptrType$21, $Uint16], [sliceType$4, $error], false)}, {prop: "processServerKeyExchange", name: "processServerKeyExchange", pkg: "crypto/tls", typ: $funcType([ptrType$2, ptrType$11, ptrType$9, ptrType$13, ptrType$18], [$error], false)}, {prop: "generateClientKeyExchange", name: "generateClientKeyExchange", pkg: "crypto/tls", typ: $funcType([ptrType$2, ptrType$11, ptrType$13], [sliceType$4, ptrType$21, $error], false)}]; finishedHash.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$4], [$Int, $error], false)}, {prop: "clientSum", name: "clientSum", pkg: "crypto/tls", typ: $funcType([sliceType$4], [sliceType$4], false)}, {prop: "serverSum", name: "serverSum", pkg: "crypto/tls", typ: $funcType([sliceType$4], [sliceType$4], false)}, {prop: "hashForClientCertificate", name: "hashForClientCertificate", pkg: "crypto/tls", typ: $funcType([$Uint8], [sliceType$4, crypto.Hash, $Uint8], 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$4], false)}, {prop: "unmarshal", name: "unmarshal", pkg: "crypto/tls", typ: $funcType([sliceType$4], [$Bool], false)}]; ptrType$37.methods = [{prop: "Accept", name: "Accept", pkg: "", typ: $funcType([], [net.Conn, $error], false)}]; keyAgreement.init([{prop: "generateClientKeyExchange", name: "generateClientKeyExchange", pkg: "crypto/tls", typ: $funcType([ptrType$2, ptrType$11, ptrType$13], [sliceType$4, ptrType$21, $error], false)}, {prop: "generateServerKeyExchange", name: "generateServerKeyExchange", pkg: "crypto/tls", typ: $funcType([ptrType$2, ptrType$3, ptrType$11, ptrType$9], [ptrType$18, $error], false)}, {prop: "processClientKeyExchange", name: "processClientKeyExchange", pkg: "crypto/tls", typ: $funcType([ptrType$2, ptrType$3, ptrType$21, $Uint16], [sliceType$4, $error], false)}, {prop: "processServerKeyExchange", name: "processServerKeyExchange", pkg: "crypto/tls", typ: $funcType([ptrType$2, ptrType$11, ptrType$9, ptrType$13, ptrType$18], [$error], false)}]); cipherSuite.init([{prop: "id", name: "id", pkg: "crypto/tls", typ: $Uint16, tag: ""}, {prop: "keyLen", name: "keyLen", pkg: "crypto/tls", typ: $Int, tag: ""}, {prop: "macLen", name: "macLen", pkg: "crypto/tls", typ: $Int, tag: ""}, {prop: "ivLen", name: "ivLen", pkg: "crypto/tls", typ: $Int, tag: ""}, {prop: "ka", name: "ka", pkg: "crypto/tls", typ: funcType, tag: ""}, {prop: "flags", name: "flags", pkg: "crypto/tls", typ: $Int, tag: ""}, {prop: "cipher", name: "cipher", pkg: "crypto/tls", typ: funcType$1, tag: ""}, {prop: "mac", name: "mac", pkg: "crypto/tls", typ: funcType$2, tag: ""}, {prop: "aead", name: "aead", pkg: "crypto/tls", typ: funcType$3, tag: ""}]); macFunction.init([{prop: "MAC", name: "MAC", pkg: "", typ: $funcType([sliceType$4, sliceType$4, sliceType$4, sliceType$4], [sliceType$4], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int], false)}]); fixedNonceAEAD.init([{prop: "sealNonce", name: "sealNonce", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "openNonce", name: "openNonce", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "aead", name: "aead", pkg: "crypto/tls", typ: cipher.AEAD, tag: ""}]); ssl30MAC.init([{prop: "h", name: "h", pkg: "crypto/tls", typ: hash.Hash, tag: ""}, {prop: "key", name: "key", pkg: "crypto/tls", typ: sliceType$4, tag: ""}]); tls10MAC.init([{prop: "h", name: "h", pkg: "crypto/tls", typ: hash.Hash, tag: ""}]); signatureAndHash.init([{prop: "hash", name: "hash", pkg: "crypto/tls", typ: $Uint8, tag: ""}, {prop: "signature", name: "signature", pkg: "crypto/tls", typ: $Uint8, tag: ""}]); ConnectionState.init([{prop: "Version", name: "Version", pkg: "", typ: $Uint16, tag: ""}, {prop: "HandshakeComplete", name: "HandshakeComplete", pkg: "", typ: $Bool, tag: ""}, {prop: "DidResume", name: "DidResume", pkg: "", typ: $Bool, tag: ""}, {prop: "CipherSuite", name: "CipherSuite", pkg: "", typ: $Uint16, tag: ""}, {prop: "NegotiatedProtocol", name: "NegotiatedProtocol", pkg: "", typ: $String, tag: ""}, {prop: "NegotiatedProtocolIsMutual", name: "NegotiatedProtocolIsMutual", pkg: "", typ: $Bool, tag: ""}, {prop: "ServerName", name: "ServerName", pkg: "", typ: $String, tag: ""}, {prop: "PeerCertificates", name: "PeerCertificates", pkg: "", typ: sliceType$8, tag: ""}, {prop: "VerifiedChains", name: "VerifiedChains", pkg: "", typ: sliceType$10, tag: ""}, {prop: "TLSUnique", name: "TLSUnique", pkg: "", typ: sliceType$4, tag: ""}]); ClientSessionState.init([{prop: "sessionTicket", name: "sessionTicket", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "vers", name: "vers", pkg: "crypto/tls", typ: $Uint16, tag: ""}, {prop: "cipherSuite", name: "cipherSuite", pkg: "crypto/tls", typ: $Uint16, tag: ""}, {prop: "masterSecret", name: "masterSecret", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "serverCertificates", name: "serverCertificates", pkg: "crypto/tls", typ: sliceType$8, tag: ""}]); ClientSessionCache.init([{prop: "Get", name: "Get", pkg: "", typ: $funcType([$String], [ptrType$7, $Bool], false)}, {prop: "Put", name: "Put", pkg: "", typ: $funcType([$String, ptrType$7], [], false)}]); ClientHelloInfo.init([{prop: "CipherSuites", name: "CipherSuites", pkg: "", typ: sliceType, tag: ""}, {prop: "ServerName", name: "ServerName", pkg: "", typ: $String, tag: ""}, {prop: "SupportedCurves", name: "SupportedCurves", pkg: "", typ: sliceType$3, tag: ""}, {prop: "SupportedPoints", name: "SupportedPoints", pkg: "", typ: sliceType$4, tag: ""}]); Config.init([{prop: "Rand", name: "Rand", pkg: "", typ: io.Reader, tag: ""}, {prop: "Time", name: "Time", pkg: "", typ: funcType$4, tag: ""}, {prop: "Certificates", name: "Certificates", pkg: "", typ: sliceType$11, tag: ""}, {prop: "NameToCertificate", name: "NameToCertificate", pkg: "", typ: mapType, tag: ""}, {prop: "GetCertificate", name: "GetCertificate", pkg: "", typ: funcType$5, tag: ""}, {prop: "RootCAs", name: "RootCAs", pkg: "", typ: ptrType$14, tag: ""}, {prop: "NextProtos", name: "NextProtos", pkg: "", typ: sliceType$7, tag: ""}, {prop: "ServerName", name: "ServerName", pkg: "", typ: $String, tag: ""}, {prop: "ClientAuth", name: "ClientAuth", pkg: "", typ: ClientAuthType, tag: ""}, {prop: "ClientCAs", name: "ClientCAs", pkg: "", typ: ptrType$14, tag: ""}, {prop: "InsecureSkipVerify", name: "InsecureSkipVerify", pkg: "", typ: $Bool, tag: ""}, {prop: "CipherSuites", name: "CipherSuites", pkg: "", typ: sliceType, tag: ""}, {prop: "PreferServerCipherSuites", name: "PreferServerCipherSuites", pkg: "", typ: $Bool, tag: ""}, {prop: "SessionTicketsDisabled", name: "SessionTicketsDisabled", pkg: "", typ: $Bool, tag: ""}, {prop: "SessionTicketKey", name: "SessionTicketKey", pkg: "", typ: arrayType$6, tag: ""}, {prop: "ClientSessionCache", name: "ClientSessionCache", pkg: "", typ: ClientSessionCache, tag: ""}, {prop: "MinVersion", name: "MinVersion", pkg: "", typ: $Uint16, tag: ""}, {prop: "MaxVersion", name: "MaxVersion", pkg: "", typ: $Uint16, tag: ""}, {prop: "CurvePreferences", name: "CurvePreferences", pkg: "", typ: sliceType$3, tag: ""}, {prop: "serverInitOnce", name: "serverInitOnce", pkg: "crypto/tls", typ: sync.Once, tag: ""}]); Certificate.init([{prop: "Certificate", name: "Certificate", pkg: "", typ: sliceType$6, tag: ""}, {prop: "PrivateKey", name: "PrivateKey", pkg: "", typ: crypto.PrivateKey, tag: ""}, {prop: "OCSPStaple", name: "OCSPStaple", pkg: "", typ: sliceType$4, tag: ""}, {prop: "Leaf", name: "Leaf", pkg: "", typ: ptrType$13, tag: ""}]); ecdsaSignature.init([{prop: "R", name: "R", pkg: "", typ: ptrType$1, tag: ""}, {prop: "S", name: "S", pkg: "", typ: ptrType$1, tag: ""}]); Conn.init([{prop: "conn", name: "conn", pkg: "crypto/tls", typ: net.Conn, tag: ""}, {prop: "isClient", name: "isClient", pkg: "crypto/tls", typ: $Bool, tag: ""}, {prop: "handshakeMutex", name: "handshakeMutex", pkg: "crypto/tls", typ: sync.Mutex, tag: ""}, {prop: "handshakeErr", name: "handshakeErr", pkg: "crypto/tls", typ: $error, tag: ""}, {prop: "vers", name: "vers", pkg: "crypto/tls", typ: $Uint16, tag: ""}, {prop: "haveVers", name: "haveVers", pkg: "crypto/tls", typ: $Bool, tag: ""}, {prop: "config", name: "config", pkg: "crypto/tls", typ: ptrType$2, tag: ""}, {prop: "handshakeComplete", name: "handshakeComplete", pkg: "crypto/tls", typ: $Bool, tag: ""}, {prop: "didResume", name: "didResume", pkg: "crypto/tls", typ: $Bool, tag: ""}, {prop: "cipherSuite", name: "cipherSuite", pkg: "crypto/tls", typ: $Uint16, tag: ""}, {prop: "ocspResponse", name: "ocspResponse", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "peerCertificates", name: "peerCertificates", pkg: "crypto/tls", typ: sliceType$8, tag: ""}, {prop: "verifiedChains", name: "verifiedChains", pkg: "crypto/tls", typ: sliceType$10, tag: ""}, {prop: "serverName", name: "serverName", pkg: "crypto/tls", typ: $String, tag: ""}, {prop: "firstFinished", name: "firstFinished", pkg: "crypto/tls", typ: arrayType$4, tag: ""}, {prop: "clientProtocol", name: "clientProtocol", pkg: "crypto/tls", typ: $String, tag: ""}, {prop: "clientProtocolFallback", name: "clientProtocolFallback", pkg: "crypto/tls", typ: $Bool, tag: ""}, {prop: "in$17", name: "in", pkg: "crypto/tls", typ: halfConn, tag: ""}, {prop: "out", name: "out", pkg: "crypto/tls", typ: halfConn, tag: ""}, {prop: "rawInput", name: "rawInput", pkg: "crypto/tls", typ: ptrType$8, tag: ""}, {prop: "input", name: "input", pkg: "crypto/tls", typ: ptrType$8, tag: ""}, {prop: "hand", name: "hand", pkg: "crypto/tls", typ: bytes.Buffer, tag: ""}, {prop: "tmp", name: "tmp", pkg: "crypto/tls", typ: arrayType$5, tag: ""}]); halfConn.init([{prop: "Mutex", name: "", pkg: "", typ: sync.Mutex, tag: ""}, {prop: "err", name: "err", pkg: "crypto/tls", typ: $error, tag: ""}, {prop: "version", name: "version", pkg: "crypto/tls", typ: $Uint16, tag: ""}, {prop: "cipher", name: "cipher", pkg: "crypto/tls", typ: $emptyInterface, tag: ""}, {prop: "mac", name: "mac", pkg: "crypto/tls", typ: macFunction, tag: ""}, {prop: "seq", name: "seq", pkg: "crypto/tls", typ: arrayType$7, tag: ""}, {prop: "bfree", name: "bfree", pkg: "crypto/tls", typ: ptrType$8, tag: ""}, {prop: "nextCipher", name: "nextCipher", pkg: "crypto/tls", typ: $emptyInterface, tag: ""}, {prop: "nextMac", name: "nextMac", pkg: "crypto/tls", typ: macFunction, tag: ""}, {prop: "inDigestBuf", name: "inDigestBuf", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "outDigestBuf", name: "outDigestBuf", pkg: "crypto/tls", typ: sliceType$4, tag: ""}]); cbcMode.init([{prop: "BlockSize", name: "BlockSize", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "CryptBlocks", name: "CryptBlocks", pkg: "", typ: $funcType([sliceType$4, sliceType$4], [], false)}, {prop: "SetIV", name: "SetIV", pkg: "", typ: $funcType([sliceType$4], [], false)}]); block.init([{prop: "data", name: "data", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "off", name: "off", pkg: "crypto/tls", typ: $Int, tag: ""}, {prop: "link", name: "link", pkg: "crypto/tls", typ: ptrType$8, tag: ""}]); clientHandshakeState.init([{prop: "c", name: "c", pkg: "crypto/tls", typ: ptrType$10, tag: ""}, {prop: "serverHello", name: "serverHello", pkg: "crypto/tls", typ: ptrType$9, tag: ""}, {prop: "hello", name: "hello", pkg: "crypto/tls", typ: ptrType$11, tag: ""}, {prop: "suite", name: "suite", pkg: "crypto/tls", typ: ptrType, tag: ""}, {prop: "finishedHash", name: "finishedHash", pkg: "crypto/tls", typ: finishedHash, tag: ""}, {prop: "masterSecret", name: "masterSecret", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "session", name: "session", pkg: "crypto/tls", typ: ptrType$7, tag: ""}]); clientHelloMsg.init([{prop: "raw", name: "raw", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "vers", name: "vers", pkg: "crypto/tls", typ: $Uint16, tag: ""}, {prop: "random", name: "random", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "sessionId", name: "sessionId", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "cipherSuites", name: "cipherSuites", pkg: "crypto/tls", typ: sliceType, tag: ""}, {prop: "compressionMethods", name: "compressionMethods", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "nextProtoNeg", name: "nextProtoNeg", pkg: "crypto/tls", typ: $Bool, tag: ""}, {prop: "serverName", name: "serverName", pkg: "crypto/tls", typ: $String, tag: ""}, {prop: "ocspStapling", name: "ocspStapling", pkg: "crypto/tls", typ: $Bool, tag: ""}, {prop: "supportedCurves", name: "supportedCurves", pkg: "crypto/tls", typ: sliceType$3, tag: ""}, {prop: "supportedPoints", name: "supportedPoints", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "ticketSupported", name: "ticketSupported", pkg: "crypto/tls", typ: $Bool, tag: ""}, {prop: "sessionTicket", name: "sessionTicket", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "signatureAndHashes", name: "signatureAndHashes", pkg: "crypto/tls", typ: sliceType$2, tag: ""}, {prop: "secureRenegotiation", name: "secureRenegotiation", pkg: "crypto/tls", typ: $Bool, tag: ""}, {prop: "alpnProtocols", name: "alpnProtocols", pkg: "crypto/tls", typ: sliceType$7, tag: ""}]); serverHelloMsg.init([{prop: "raw", name: "raw", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "vers", name: "vers", pkg: "crypto/tls", typ: $Uint16, tag: ""}, {prop: "random", name: "random", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "sessionId", name: "sessionId", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "cipherSuite", name: "cipherSuite", pkg: "crypto/tls", typ: $Uint16, tag: ""}, {prop: "compressionMethod", name: "compressionMethod", pkg: "crypto/tls", typ: $Uint8, tag: ""}, {prop: "nextProtoNeg", name: "nextProtoNeg", pkg: "crypto/tls", typ: $Bool, tag: ""}, {prop: "nextProtos", name: "nextProtos", pkg: "crypto/tls", typ: sliceType$7, tag: ""}, {prop: "ocspStapling", name: "ocspStapling", pkg: "crypto/tls", typ: $Bool, tag: ""}, {prop: "ticketSupported", name: "ticketSupported", pkg: "crypto/tls", typ: $Bool, tag: ""}, {prop: "secureRenegotiation", name: "secureRenegotiation", pkg: "crypto/tls", typ: $Bool, tag: ""}, {prop: "alpnProtocol", name: "alpnProtocol", pkg: "crypto/tls", typ: $String, tag: ""}]); certificateMsg.init([{prop: "raw", name: "raw", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "certificates", name: "certificates", pkg: "crypto/tls", typ: sliceType$6, tag: ""}]); serverKeyExchangeMsg.init([{prop: "raw", name: "raw", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "key", name: "key", pkg: "crypto/tls", typ: sliceType$4, tag: ""}]); certificateStatusMsg.init([{prop: "raw", name: "raw", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "statusType", name: "statusType", pkg: "crypto/tls", typ: $Uint8, tag: ""}, {prop: "response", name: "response", pkg: "crypto/tls", typ: sliceType$4, tag: ""}]); serverHelloDoneMsg.init([]); clientKeyExchangeMsg.init([{prop: "raw", name: "raw", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "ciphertext", name: "ciphertext", pkg: "crypto/tls", typ: sliceType$4, tag: ""}]); finishedMsg.init([{prop: "raw", name: "raw", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "verifyData", name: "verifyData", pkg: "crypto/tls", typ: sliceType$4, tag: ""}]); nextProtoMsg.init([{prop: "raw", name: "raw", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "proto", name: "proto", pkg: "crypto/tls", typ: $String, tag: ""}]); certificateRequestMsg.init([{prop: "raw", name: "raw", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "hasSignatureAndHash", name: "hasSignatureAndHash", pkg: "crypto/tls", typ: $Bool, tag: ""}, {prop: "certificateTypes", name: "certificateTypes", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "signatureAndHashes", name: "signatureAndHashes", pkg: "crypto/tls", typ: sliceType$2, tag: ""}, {prop: "certificateAuthorities", name: "certificateAuthorities", pkg: "crypto/tls", typ: sliceType$6, tag: ""}]); certificateVerifyMsg.init([{prop: "raw", name: "raw", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "hasSignatureAndHash", name: "hasSignatureAndHash", pkg: "crypto/tls", typ: $Bool, tag: ""}, {prop: "signatureAndHash", name: "signatureAndHash", pkg: "crypto/tls", typ: signatureAndHash, tag: ""}, {prop: "signature", name: "signature", pkg: "crypto/tls", typ: sliceType$4, tag: ""}]); newSessionTicketMsg.init([{prop: "raw", name: "raw", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "ticket", name: "ticket", pkg: "crypto/tls", typ: sliceType$4, tag: ""}]); serverHandshakeState.init([{prop: "c", name: "c", pkg: "crypto/tls", typ: ptrType$10, tag: ""}, {prop: "clientHello", name: "clientHello", pkg: "crypto/tls", typ: ptrType$11, tag: ""}, {prop: "hello", name: "hello", pkg: "crypto/tls", typ: ptrType$9, tag: ""}, {prop: "suite", name: "suite", pkg: "crypto/tls", typ: ptrType, tag: ""}, {prop: "ellipticOk", name: "ellipticOk", pkg: "crypto/tls", typ: $Bool, tag: ""}, {prop: "ecdsaOk", name: "ecdsaOk", pkg: "crypto/tls", typ: $Bool, tag: ""}, {prop: "sessionState", name: "sessionState", pkg: "crypto/tls", typ: ptrType$26, tag: ""}, {prop: "finishedHash", name: "finishedHash", pkg: "crypto/tls", typ: finishedHash, tag: ""}, {prop: "masterSecret", name: "masterSecret", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "certsFromClient", name: "certsFromClient", pkg: "crypto/tls", typ: sliceType$6, tag: ""}, {prop: "cert", name: "cert", pkg: "crypto/tls", typ: ptrType$3, tag: ""}]); rsaKeyAgreement.init([]); ecdheKeyAgreement.init([{prop: "version", name: "version", pkg: "crypto/tls", typ: $Uint16, tag: ""}, {prop: "sigType", name: "sigType", pkg: "crypto/tls", typ: $Uint8, tag: ""}, {prop: "privateKey", name: "privateKey", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "curve", name: "curve", pkg: "crypto/tls", typ: elliptic.Curve, tag: ""}, {prop: "x", name: "x", pkg: "crypto/tls", typ: ptrType$1, tag: ""}, {prop: "y", name: "y", pkg: "crypto/tls", typ: ptrType$1, tag: ""}]); finishedHash.init([{prop: "client", name: "client", pkg: "crypto/tls", typ: hash.Hash, tag: ""}, {prop: "server", name: "server", pkg: "crypto/tls", typ: hash.Hash, tag: ""}, {prop: "clientMD5", name: "clientMD5", pkg: "crypto/tls", typ: hash.Hash, tag: ""}, {prop: "serverMD5", name: "serverMD5", pkg: "crypto/tls", typ: hash.Hash, tag: ""}, {prop: "version", name: "version", pkg: "crypto/tls", typ: $Uint16, tag: ""}]); sessionState.init([{prop: "vers", name: "vers", pkg: "crypto/tls", typ: $Uint16, tag: ""}, {prop: "cipherSuite", name: "cipherSuite", pkg: "crypto/tls", typ: $Uint16, tag: ""}, {prop: "masterSecret", name: "masterSecret", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "certificates", name: "certificates", pkg: "crypto/tls", typ: sliceType$6, tag: ""}]); listener.init([{prop: "Listener", name: "", pkg: "", typ: net.Listener, tag: ""}, {prop: "config", name: "config", pkg: "crypto/tls", typ: ptrType$2, 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 = 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 = md5.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = rand.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = rc4.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = rsa.$init(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = sha1.$init(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = sha256.$init(); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = subtle.$init(); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = x509.$init(); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = asn1.$init(); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = pem.$init(); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = errors.$init(); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = fmt.$init(); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = hash.$init(); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = io.$init(); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = ioutil.$init(); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = big.$init(); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = net.$init(); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = strconv.$init(); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = strings.$init(); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = sync.$init(); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = time.$init(); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } emptyConfig = new Config.ptr(); once = new sync.Once.ptr(); varDefaultCipherSuites = sliceType.nil; alertText = (_map = new $Map(), _key = 0, _map[_key] = { k: _key, v: "close notify" }, _key = 10, _map[_key] = { k: _key, v: "unexpected message" }, _key = 20, _map[_key] = { k: _key, v: "bad record MAC" }, _key = 21, _map[_key] = { k: _key, v: "decryption failed" }, _key = 22, _map[_key] = { k: _key, v: "record overflow" }, _key = 30, _map[_key] = { k: _key, v: "decompression failure" }, _key = 40, _map[_key] = { k: _key, v: "handshake failure" }, _key = 42, _map[_key] = { k: _key, v: "bad certificate" }, _key = 43, _map[_key] = { k: _key, v: "unsupported certificate" }, _key = 44, _map[_key] = { k: _key, v: "revoked certificate" }, _key = 45, _map[_key] = { k: _key, v: "expired certificate" }, _key = 46, _map[_key] = { k: _key, v: "unknown certificate" }, _key = 47, _map[_key] = { k: _key, v: "illegal parameter" }, _key = 48, _map[_key] = { k: _key, v: "unknown certificate authority" }, _key = 49, _map[_key] = { k: _key, v: "access denied" }, _key = 50, _map[_key] = { k: _key, v: "error decoding message" }, _key = 51, _map[_key] = { k: _key, v: "error decrypting message" }, _key = 70, _map[_key] = { k: _key, v: "protocol version not supported" }, _key = 71, _map[_key] = { k: _key, v: "insufficient security level" }, _key = 80, _map[_key] = { k: _key, v: "internal error" }, _key = 86, _map[_key] = { k: _key, v: "inappropriate fallback" }, _key = 90, _map[_key] = { k: _key, v: "user canceled" }, _key = 100, _map[_key] = { k: _key, v: "no renegotiation" }, _map); 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$1([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(49169, 16, 20, 0, ecdheRSAKA, 1, cipherRC4, macSHA1, $throwNilPointerError), new cipherSuite.ptr(49159, 16, 20, 0, ecdheECDSAKA, 3, cipherRC4, macSHA1, $throwNilPointerError), new cipherSuite.ptr(49171, 16, 20, 16, ecdheRSAKA, 1, cipherAES, macSHA1, $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(5, 16, 20, 0, rsaKA, 0, cipherRC4, macSHA1, $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)]); supportedSKXSignatureAlgorithms = new sliceType$2([new signatureAndHash.ptr(4, 1), new signatureAndHash.ptr(4, 3), new signatureAndHash.ptr(2, 1), new signatureAndHash.ptr(2, 3)]); supportedClientCertSignatureAlgorithms = new sliceType$2([new signatureAndHash.ptr(4, 1), new signatureAndHash.ptr(4, 3)]); defaultCurvePreferences = new sliceType$3([23, 24, 25]); errClientKeyExchange = errors.New("tls: invalid ClientKeyExchange message"); errServerKeyExchange = errors.New("tls: invalid ServerKeyExchange message"); masterSecretLabel = new sliceType$4($stringToBytes("master secret")); keyExpansionLabel = new sliceType$4($stringToBytes("key expansion")); clientFinishedLabel = new sliceType$4($stringToBytes("client finished")); serverFinishedLabel = new sliceType$4($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["mime"] = (function() { var $pkg = {}, $init, bytes, errors, fmt, sort, strings, sync, syscall, unicode, sliceType$1, sliceType$2, mimeTypesLower, mimeTypes, _map, _key, _r, isTSpecial, isTokenChar, checkMediaTypeDisposition, ParseMediaType, decode2231Enc, isNotTokenChar, consumeToken, consumeValue, consumeMediaParam, percentHexUnescape, ishex, unhex, clone; bytes = $packages["bytes"]; errors = $packages["errors"]; fmt = $packages["fmt"]; sort = $packages["sort"]; strings = $packages["strings"]; sync = $packages["sync"]; syscall = $packages["syscall"]; unicode = $packages["unicode"]; sliceType$1 = $sliceType($emptyInterface); sliceType$2 = $sliceType($Uint8); isTSpecial = function(r) { var $ptr, r; return !((strings.IndexRune("()<>@,;:\\\"/[]?=", r) === -1)); }; isTokenChar = function(r) { var $ptr, r; return r > 32 && r < 127 && !isTSpecial(r); }; checkMediaTypeDisposition = function(s) { var $ptr, _r$1, _r$2, _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$1 = $f._r$1; _r$2 = $f._r$2; _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$1 = consumeToken(s); /* */ $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; typ = _tuple[0]; rest = _tuple[1]; if (typ === "") { return errors.New("mime: no media type"); } if (rest === "") { return $ifaceNil; } if (!strings.HasPrefix(rest, "/")) { return errors.New("mime: expected slash after first token"); } _r$2 = consumeToken(rest.substring(1)); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } _tuple$1 = _r$2; subtype = _tuple$1[0]; rest = _tuple$1[1]; if (subtype === "") { return errors.New("mime: expected token after slash"); } if (!(rest === "")) { return errors.New("mime: unexpected content after media subtype"); } return $ifaceNil; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: checkMediaTypeDisposition }; } $f.$ptr = $ptr; $f._r$1 = _r$1; $f._r$2 = _r$2; $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$1, _key$2, _key$3, _key$4, _keys, _r$1, _r$10, _r$11, _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$1 = $f._key$1; _key$2 = $f._key$2; _key$3 = $f._key$3; _key$4 = $f._key$4; _keys = $f._keys; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _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$1 = strings.ToLower(v.substring(0, i)); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } _r$2 = strings.TrimSpace(_r$1); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } mediatype = _r$2; _r$3 = checkMediaTypeDisposition(mediatype); /* */ $s = 3; case 3: 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))) { _tmp = ""; _tmp$1 = false; _tmp$2 = err; mediatype = _tmp; params = _tmp$1; err = _tmp$2; return [mediatype, params, err]; } params = new $Map(); continuation = false; v = v.substring(i); /* while (true) { */ case 4: /* if (!(v.length > 0)) { break; } */ if(!(v.length > 0)) { $s = 5; continue; } _r$4 = strings.TrimLeftFunc(v, unicode.IsSpace); /* */ $s = 6; case 6: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } v = _r$4; if (v.length === 0) { /* break; */ $s = 5; continue; } _r$5 = consumeMediaParam(v); /* */ $s = 7; case 7: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } _tuple = _r$5; key = _tuple[0]; value = _tuple[1]; rest = _tuple[2]; /* */ if (key === "") { $s = 8; continue; } /* */ $s = 9; continue; /* if (key === "") { */ case 8: _r$6 = strings.TrimSpace(rest); /* */ $s = 12; case 12: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } /* */ if (_r$6 === ";") { $s = 10; continue; } /* */ $s = 11; continue; /* if (_r$6 === ";") { */ case 10: 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; return [mediatype, params, err]; /* } */ case 9: pmap = params; idx = strings.Index(key, "*"); if (!((idx === -1))) { baseName = key.substring(0, idx); if (continuation === false) { continuation = new $Map(); } ok = false; _tuple$1 = (_entry = continuation[baseName], _entry !== undefined ? [_entry.v, true] : [false, false]); pmap = _tuple$1[0]; ok = _tuple$1[1]; if (!ok) { _key$1 = baseName; (continuation || $throwRuntimeError("assignment to entry in nil map"))[_key$1] = { k: _key$1, v: new $Map() }; pmap = (_entry$1 = continuation[baseName], _entry$1 !== undefined ? _entry$1.v : false); } } _tuple$2 = (_entry$2 = pmap[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; return [mediatype, params, err]; } _key$2 = key; (pmap || $throwRuntimeError("assignment to entry in nil map"))[_key$2] = { k: _key$2, v: value }; v = rest; /* } */ $s = 4; continue; case 5: buf = $clone(new bytes.Buffer.ptr(), bytes.Buffer); _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[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$7 = decode2231Enc(v$1); /* */ $s = 17; case 17: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } decv = _r$7; _key$3 = key$1; (params || $throwRuntimeError("assignment to entry in nil map"))[_key$3] = { k: _key$3, v: decv }; _i++; /* continue; */ $s = 13; continue; /* } */ case 16: buf.Reset(); valid = false; n = 0; /* while (true) { */ case 18: _r$8 = fmt.Sprintf("%s*%d", new sliceType$1([new $String(key$1), new $Int(n)])); /* */ $s = 20; case 20: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } simplePart = _r$8; _tuple$4 = (_entry$5 = pieceMap[simplePart], _entry$5 !== undefined ? [_entry$5.v, true] : ["", false]); v$2 = _tuple$4[0]; ok$2 = _tuple$4[1]; /* */ if (ok$2) { $s = 21; continue; } /* */ $s = 22; continue; /* if (ok$2) { */ case 21: valid = true; buf.WriteString(v$2); n = n + (1) >> 0; /* continue; */ $s = 18; continue; /* } */ case 22: encodedPart = simplePart + "*"; _tuple$5 = (_entry$6 = pieceMap[encodedPart], _entry$6 !== undefined ? [_entry$6.v, true] : ["", false]); v$3 = _tuple$5[0]; ok$3 = _tuple$5[1]; /* */ if (ok$3) { $s = 23; continue; } /* */ $s = 24; continue; /* if (ok$3) { */ case 23: valid = true; /* */ if (n === 0) { $s = 26; continue; } /* */ $s = 27; continue; /* if (n === 0) { */ case 26: _r$9 = decode2231Enc(v$3); /* */ $s = 29; case 29: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } _r$10 = buf.WriteString(_r$9); /* */ $s = 30; case 30: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } _r$10; $s = 28; continue; /* } else { */ case 27: _r$11 = percentHexUnescape(v$3); /* */ $s = 31; case 31: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } _tuple$6 = _r$11; decv$1 = _tuple$6[0]; buf.WriteString(decv$1); /* } */ case 28: $s = 25; continue; /* } else { */ case 24: /* break; */ $s = 19; continue; /* } */ case 25: n = n + (1) >> 0; /* } */ $s = 18; continue; case 19: if (valid) { _key$4 = key$1; (params || $throwRuntimeError("assignment to entry in nil map"))[_key$4] = { k: _key$4, v: buf.String() }; } _i++; /* } */ $s = 13; continue; case 14: return [mediatype, params, err]; /* */ $s = -1; case -1: } 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$1 = _key$1; $f._key$2 = _key$2; $f._key$3 = _key$3; $f._key$4 = _key$4; $f._keys = _keys; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._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$1, _r$2, _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$1 = $f._r$1; _r$2 = $f._r$2; _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))) { return ""; } _r$1 = strings.ToLower((0 >= sv.$length ? $throwRuntimeError("index out of range") : sv.$array[sv.$offset + 0])); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } charset = _r$1; if (!(charset === "us-ascii") && !(charset === "utf-8")) { return ""; } _r$2 = percentHexUnescape((2 >= sv.$length ? $throwRuntimeError("index out of range") : sv.$array[sv.$offset + 2])); /* */ $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; encv = _tuple[0]; return encv; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: decode2231Enc }; } $f.$ptr = $ptr; $f._r$1 = _r$1; $f._r$2 = _r$2; $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$1, _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$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; 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$1 = strings.IndexFunc(v, isNotTokenChar); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } notPos = _r$1; if (notPos === -1) { _tmp = v; _tmp$1 = ""; token = _tmp; rest = _tmp$1; return [token, rest]; } if (notPos === 0) { _tmp$2 = ""; _tmp$3 = v; token = _tmp$2; rest = _tmp$3; return [token, rest]; } _tmp$4 = v.substring(0, notPos); _tmp$5 = v.substring(notPos); token = _tmp$4; rest = _tmp$5; return [token, rest]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: consumeToken }; } $f.$ptr = $ptr; $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.notPos = notPos; $f.rest = rest; $f.token = token; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; }; consumeValue = function(v) { var $ptr, _i, _r$1, _ref, _rune, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, buffer, idx, leadQuote, nextIsLiteral, 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; _i = $f._i; _r$1 = $f._r$1; _ref = $f._ref; _rune = $f._rune; _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; idx = $f.idx; leadQuote = $f.leadQuote; nextIsLiteral = $f.nextIsLiteral; 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 (!strings.HasPrefix(v, "\"") && !strings.HasPrefix(v, "'")) { $s = 1; continue; } /* */ $s = 2; continue; /* if (!strings.HasPrefix(v, "\"") && !strings.HasPrefix(v, "'")) { */ case 1: _r$1 = consumeToken(v); /* */ $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; value = _tuple[0]; rest = _tuple[1]; return [value, rest]; /* } */ case 2: leadQuote = (v.charCodeAt(0) >> 0); rest = v.substring(1); buffer = new bytes.Buffer.ptr(); idx = 0; r = 0; nextIsLiteral = false; _ref = rest; _i = 0; while (true) { if (!(_i < _ref.length)) { break; } _rune = $decodeRune(_ref, _i); idx = _i; r = _rune[0]; if (nextIsLiteral) { buffer.WriteRune(r); nextIsLiteral = false; } else if (r === leadQuote) { _tmp = buffer.String(); _tmp$1 = rest.substring((idx + 1 >> 0)); value = _tmp; rest = _tmp$1; return [value, rest]; } else if (r === 92) { nextIsLiteral = true; } else if (!((r === 13)) && !((r === 10))) { buffer.WriteRune(r); } else { _tmp$2 = ""; _tmp$3 = v; value = _tmp$2; rest = _tmp$3; return [value, rest]; } _i += _rune[1]; } _tmp$4 = ""; _tmp$5 = v; value = _tmp$4; rest = _tmp$5; return [value, rest]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: consumeValue }; } $f.$ptr = $ptr; $f._i = _i; $f._r$1 = _r$1; $f._ref = _ref; $f._rune = _rune; $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.idx = idx; $f.leadQuote = leadQuote; $f.nextIsLiteral = nextIsLiteral; $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$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, param, 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$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$12 = $f._tmp$12; _tmp$13 = $f._tmp$13; _tmp$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; v = $f.v; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: param = ""; value = ""; rest = ""; _r$1 = strings.TrimLeftFunc(v, unicode.IsSpace); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } rest = _r$1; if (!strings.HasPrefix(rest, ";")) { _tmp = ""; _tmp$1 = ""; _tmp$2 = v; param = _tmp; value = _tmp$1; rest = _tmp$2; return [param, value, rest]; } rest = rest.substring(1); _r$2 = strings.TrimLeftFunc(rest, unicode.IsSpace); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } rest = _r$2; _r$3 = consumeToken(rest); /* */ $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; param = _tuple[0]; rest = _tuple[1]; _r$4 = strings.ToLower(param); /* */ $s = 4; case 4: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } param = _r$4; if (param === "") { _tmp$3 = ""; _tmp$4 = ""; _tmp$5 = v; param = _tmp$3; value = _tmp$4; rest = _tmp$5; return [param, value, rest]; } _r$5 = strings.TrimLeftFunc(rest, unicode.IsSpace); /* */ $s = 5; case 5: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } rest = _r$5; if (!strings.HasPrefix(rest, "=")) { _tmp$6 = ""; _tmp$7 = ""; _tmp$8 = v; param = _tmp$6; value = _tmp$7; rest = _tmp$8; return [param, value, rest]; } rest = rest.substring(1); _r$6 = strings.TrimLeftFunc(rest, unicode.IsSpace); /* */ $s = 6; case 6: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } rest = _r$6; _r$7 = consumeValue(rest); /* */ $s = 7; case 7: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } _tuple$1 = _r$7; value = _tuple$1[0]; rest = _tuple$1[1]; if (value === "") { _tmp$9 = ""; _tmp$10 = ""; _tmp$11 = v; param = _tmp$9; value = _tmp$10; rest = _tmp$11; return [param, value, rest]; } _tmp$12 = param; _tmp$13 = value; _tmp$14 = rest; param = _tmp$12; value = _tmp$13; rest = _tmp$14; return [param, value, rest]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: consumeMediaParam }; } $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._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.v = v; $f.value = value; $f.$s = $s; $f.$r = $r; return $f; }; percentHexUnescape = function(s) { var $ptr, _r$1, _ref, 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; _r$1 = $f._r$1; _ref = $f._ref; 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 = s.substring(i); if (s.length > 3) { s = s.substring(0, 3); } _r$1 = fmt.Errorf("mime: bogus characters after %%: %q", new sliceType$1([new $String(s)])); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } return ["", _r$1]; /* } */ case 6: i = i + (3) >> 0; /* } */ $s = 1; continue; case 2: if (percents === 0) { return [s, $ifaceNil]; } t = $makeSlice(sliceType$2, (s.length - (2 * percents >> 0) >> 0)); j = 0; i$1 = 0; while (true) { if (!(i$1 < s.length)) { break; } _ref = s.charCodeAt(i$1); if (_ref === 37) { ((j < 0 || j >= t.$length) ? $throwRuntimeError("index out of range") : 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") : t.$array[t.$offset + j] = s.charCodeAt(i$1)); j = j + (1) >> 0; i$1 = i$1 + (1) >> 0; } } return [$bytesToString(t), $ifaceNil]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: percentHexUnescape }; } $f.$ptr = $ptr; $f._r$1 = _r$1; $f._ref = _ref; $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; }; clone = function(m) { var $ptr, _entry, _i, _key$1, _keys, _r$1, _ref, k, m, m2, 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; _key$1 = $f._key$1; _keys = $f._keys; _r$1 = $f._r$1; _ref = $f._ref; k = $f.k; m = $f.m; m2 = $f.m2; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: m2 = new $Map(); _ref = m; _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; v = _entry.v; _key$1 = k; (m2 || $throwRuntimeError("assignment to entry in nil map"))[_key$1] = { k: _key$1, v: v }; _r$1 = strings.ToLower(k); /* */ $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 === k)) { $s = 3; continue; } /* */ $s = 4; continue; /* if (!(_r$1 === k)) { */ case 3: $panic(new $String("keys in mimeTypesLower must be lowercase")); /* } */ case 4: _i++; /* } */ $s = 1; continue; case 2: return m2; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: clone }; } $f.$ptr = $ptr; $f._entry = _entry; $f._i = _i; $f._key$1 = _key$1; $f._keys = _keys; $f._r$1 = _r$1; $f._ref = _ref; $f.k = k; $f.m = m; $f.m2 = m2; $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 = 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 = strings.$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 = syscall.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = unicode.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } mimeTypesLower = (_map = new $Map(), _key = ".css", _map[_key] = { k: _key, v: "text/css; charset=utf-8" }, _key = ".gif", _map[_key] = { k: _key, v: "image/gif" }, _key = ".htm", _map[_key] = { k: _key, v: "text/html; charset=utf-8" }, _key = ".html", _map[_key] = { k: _key, v: "text/html; charset=utf-8" }, _key = ".jpg", _map[_key] = { k: _key, v: "image/jpeg" }, _key = ".js", _map[_key] = { k: _key, v: "application/x-javascript" }, _key = ".pdf", _map[_key] = { k: _key, v: "application/pdf" }, _key = ".png", _map[_key] = { k: _key, v: "image/png" }, _key = ".xml", _map[_key] = { k: _key, v: "text/xml; charset=utf-8" }, _map); _r = clone(mimeTypesLower); /* */ $s = 9; case 9: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } mimeTypes = _r; /* */ } 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, NewReader, trim, parseCodeLine, CanonicalMIMEHeaderKey, 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", "MIMEHeader", "net/textproto", null); Reader = $pkg.Reader = $newType(0, $kindStruct, "textproto.Reader", "Reader", "net/textproto", 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", "dotReader", "net/textproto", 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", "Error", "net/textproto", 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", "ProtocolError", "net/textproto", 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"))[_key] = { k: _key, v: $append((_entry = h[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"))[_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[CanonicalMIMEHeaderKey(key)], _entry !== undefined ? _entry.v : sliceType$1.nil); if (v.$length === 0) { return ""; } return (0 >= v.$length ? $throwRuntimeError("index out of range") : 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[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]; return [$bytesToString(line), err]; /* */ $s = -1; case -1: } 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; } return [line, err]; /* */ $s = -1; case -1: } 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))) { return [sliceType.nil, err]; } if (line === sliceType.nil && !more) { return [l, $ifaceNil]; } line = $appendSlice(line, l); if (!more) { /* break; */ $s = 3; continue; } /* } */ $s = 2; continue; case 3: return [line, $ifaceNil]; /* */ $s = -1; case -1: } 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]; return [$bytesToString(line), err]; /* */ $s = -1; case -1: } 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") : s.$array[s.$offset + i]) === 32) || (((i < 0 || i >= s.$length) ? $throwRuntimeError("index out of range") : 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") : s.$array[s.$offset + x])) === 32) || ((x$1 = n - 1 >> 0, ((x$1 < 0 || x$1 >= s.$length) ? $throwRuntimeError("index out of range") : 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; } return [line, err]; /* */ $s = -1; case -1: } 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))) { return [sliceType.nil, err]; } if (line.$length === 0) { 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") : peek.$array[peek.$offset + 0]))) { 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, line$1); /* } */ $s = 5; continue; case 6: return [r.buf, $ifaceNil]; /* */ $s = -1; case -1: } 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: return n; /* */ $s = -1; case -1: } 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))) { 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]; return [code, continued, message, err]; /* */ $s = -1; case -1: } 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(line.substring(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 = line.substring(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); } return [code, message, err]; /* */ $s = -1; case -1: } 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, 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; 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]; /* while (true) { */ case 2: /* if (!($interfaceIsEqual(err, $ifaceNil) && continued)) { break; } */ if(!($interfaceIsEqual(err, $ifaceNil) && 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; return [code, message, err]; } code2 = 0; moreMessage = ""; _tuple$2 = parseCodeLine(line, expectCode); 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: return [code, message, err]; /* */ $s = -1; case -1: } 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.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); return r.dot; /* */ $s = -1; case -1: } 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, _r, _ref, _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; _r = $f._r; _ref = $f._ref; _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; } _ref = d.state; switch (0) { default: if (_ref === 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 (_ref === 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 (_ref === 2) { if (c === 10) { d.state = 5; /* continue; */ $s = 1; continue; } br.UnreadByte(); c = 13; d.state = 4; } else if (_ref === 3) { if (c === 10) { d.state = 0; break; } br.UnreadByte(); c = 13; d.state = 4; } else if (_ref === 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") : 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; } return [n, err]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: dotReader.ptr.prototype.Read }; } $f.$ptr = $ptr; $f._r = _r; $f._ref = _ref; $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) { 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; case -1: } 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; } return _r$1; /* */ $s = -1; case -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 = line.substring(1); } v = $append(v, line); /* } */ $s = 1; continue; case 2: return [v, err]; /* */ $s = -1; case -1: } 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 = new $Map(); /* 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) { return [m, err]; } i = bytes.IndexByte(kv, 58); if (i < 0) { 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") : kv.$array[kv.$offset + x])) === 32))) { break; } endKey = endKey - (1) >> 0; } key = canonicalMIMEHeaderKey($subslice(kv, 0, endKey)); i = i + (1) >> 0; while (true) { if (!(i < kv.$length && ((((i < 0 || i >= kv.$length) ? $throwRuntimeError("index out of range") : kv.$array[kv.$offset + i]) === 32) || (((i < 0 || i >= kv.$length) ? $throwRuntimeError("index out of range") : kv.$array[kv.$offset + i]) === 9)))) { break; } i = i + (1) >> 0; } value = $bytesToString($subslice(kv, i)); vv = (_entry = m[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") : vv.$array[vv.$offset + 0] = value); _key = key; (m || $throwRuntimeError("assignment to entry in nil map"))[_key] = { k: _key, v: vv }; } else { _key$1 = key; (m || $throwRuntimeError("assignment to entry in nil map"))[_key$1] = { k: _key$1, v: $append(vv, value) }; } if (!($interfaceIsEqual(err, $ifaceNil))) { return [m, err]; } /* } */ $s = 2; continue; case 3: /* */ $s = -1; case -1: } 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) { 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) { return n; } n = n + (1) >> 0; peek = $subslice(peek, (i + 1 >> 0)); } return n; /* */ $s = -1; case -1: } 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 (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; canonicalMIMEHeaderKey = function(a) { var $ptr, _entry, _i, _ref, a, c, i, upper, v; upper = true; _ref = a; _i = 0; while (true) { if (!(_i < _ref.$length)) { break; } i = _i; c = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]); if (c === 32) { c = 45; } else if (upper && 97 <= c && c <= 122) { c = c - (32) << 24 >>> 24; } else if (!upper && 65 <= c && c <= 90) { c = c + (32) << 24 >>> 24; } ((i < 0 || i >= a.$length) ? $throwRuntimeError("index out of range") : a.$array[a.$offset + i] = c); upper = c === 45; _i++; } v = (_entry = commonHeader[$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") : _ref.$array[_ref.$offset + _i]); _key = v; (commonHeader || $throwRuntimeError("assignment to entry in nil map"))[_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; } return _r; /* */ $s = -1; case -1: } 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 = s.substring(1); } while (true) { if (!(s.length > 0 && isASCIISpace(s.charCodeAt((s.length - 1 >> 0))))) { break; } s = s.substring(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([{prop: "R", name: "R", pkg: "", typ: ptrType, tag: ""}, {prop: "dot", name: "dot", pkg: "net/textproto", typ: ptrType$1, tag: ""}, {prop: "buf", name: "buf", pkg: "net/textproto", typ: sliceType, tag: ""}]); dotReader.init([{prop: "r", name: "r", pkg: "net/textproto", typ: ptrType$2, tag: ""}, {prop: "state", name: "state", pkg: "net/textproto", typ: $Int, tag: ""}]); Error.init([{prop: "Code", name: "Code", pkg: "", typ: $Int, tag: ""}, {prop: "Msg", name: "Msg", pkg: "", 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 = new $Map(); 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, textproto, os, strings, Form, FileHeader, File, sectionReadCloser, Part, partReader, Reader, qpReader, sliceType, sliceType$1, ptrType, sliceType$2, ptrType$1, sliceType$3, ptrType$2, ptrType$3, ptrType$4, ptrType$5, sliceType$4, mapType, mapType$1, ptrType$8, mapType$2, ptrType$9, emptyParams, crlf, lf, softSuffix, quoteEscaper, NewReader, newPart, skipLWSPChar, newQuotedPrintableReader, fromHex, isQPDiscardWhitespace; 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"]; textproto = $packages["net/textproto"]; os = $packages["os"]; strings = $packages["strings"]; Form = $pkg.Form = $newType(0, $kindStruct, "multipart.Form", "Form", "mime/multipart", 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", "FileHeader", "mime/multipart", function(Filename_, Header_, content_, tmpfile_) { this.$val = this; if (arguments.length === 0) { this.Filename = ""; this.Header = false; this.content = sliceType.nil; this.tmpfile = ""; return; } this.Filename = Filename_; this.Header = Header_; this.content = content_; this.tmpfile = tmpfile_; }); File = $pkg.File = $newType(8, $kindInterface, "multipart.File", "File", "mime/multipart", null); sectionReadCloser = $pkg.sectionReadCloser = $newType(0, $kindStruct, "multipart.sectionReadCloser", "sectionReadCloser", "mime/multipart", function(SectionReader_) { this.$val = this; if (arguments.length === 0) { this.SectionReader = ptrType$8.nil; return; } this.SectionReader = SectionReader_; }); Part = $pkg.Part = $newType(0, $kindStruct, "multipart.Part", "Part", "mime/multipart", function(Header_, buffer_, mr_, bytesRead_, disposition_, dispositionParams_, r_) { this.$val = this; if (arguments.length === 0) { this.Header = false; this.buffer = ptrType$4.nil; this.mr = ptrType$5.nil; this.bytesRead = 0; this.disposition = ""; this.dispositionParams = false; this.r = $ifaceNil; return; } this.Header = Header_; this.buffer = buffer_; this.mr = mr_; this.bytesRead = bytesRead_; this.disposition = disposition_; this.dispositionParams = dispositionParams_; this.r = r_; }); partReader = $pkg.partReader = $newType(0, $kindStruct, "multipart.partReader", "partReader", "mime/multipart", 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", "Reader", "mime/multipart", 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.nil; this.nlDashBoundary = sliceType.nil; this.dashBoundaryDash = sliceType.nil; this.dashBoundary = sliceType.nil; return; } this.bufReader = bufReader_; this.currentPart = currentPart_; this.partsRead = partsRead_; this.nl = nl_; this.nlDashBoundary = nlDashBoundary_; this.dashBoundaryDash = dashBoundaryDash_; this.dashBoundary = dashBoundary_; }); qpReader = $pkg.qpReader = $newType(0, $kindStruct, "multipart.qpReader", "qpReader", "mime/multipart", function(br_, rerr_, line_) { this.$val = this; if (arguments.length === 0) { this.br = ptrType$2.nil; this.rerr = $ifaceNil; this.line = sliceType.nil; return; } this.br = br_; this.rerr = rerr_; this.line = line_; }); sliceType = $sliceType($Uint8); sliceType$1 = $sliceType($String); ptrType = $ptrType(Form); 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(bytes.Buffer); ptrType$5 = $ptrType(Reader); sliceType$4 = $sliceType($emptyInterface); mapType = $mapType($String, sliceType$1); mapType$1 = $mapType($String, sliceType$3); ptrType$8 = $ptrType(io.SectionReader); mapType$2 = $mapType($String, $String); ptrType$9 = $ptrType(qpReader); 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, err, err$1, err$2, err$3, f, 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; _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; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; err$3 = $f.err$3; f = $f.f; 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]; f = ptrType.nil; err[0] = $ifaceNil; r = this; form[0] = new Form.ptr(new $Map(), new $Map()); $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; f = _tmp; err[0] = _tmp$1; return [f, 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] = $clone(new bytes.Buffer.ptr(), bytes.Buffer); /* */ 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; f = _tmp$2; err[0] = _tmp$3; return [f, 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"); f = _tmp$4; err[0] = _tmp$5; return [f, err[0]]; } _key = name; (form[0].Value || $throwRuntimeError("assignment to entry in nil map"))[_key] = { k: _key, v: $append((_entry = form[0].Value[name], _entry !== undefined ? _entry.v : sliceType$1.nil), b[0].String()) }; /* continue; */ $s = 1; continue; /* } */ case 9: fh = new FileHeader.ptr(filename, p.Header, sliceType.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; f = _tmp$6; err[0] = _tmp$7; return [f, 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; f = _tmp$8; err[0] = _tmp$9; return [f, err[0]]; } $deferred.push([$methodVal(file, "Close"), []]); _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]; if (!($interfaceIsEqual(err$3, $ifaceNil))) { os.Remove(file.Name()); _tmp$10 = ptrType.nil; _tmp$11 = err$3; f = _tmp$10; err[0] = _tmp$11; return [f, 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"))[_key$1] = { k: _key$1, v: $append((_entry$1 = form[0].File[name], _entry$1 !== undefined ? _entry$1.v : sliceType$3.nil), fh) }; /* } */ $s = 1; continue; case 2: _tmp$12 = form[0]; _tmp$13 = $ifaceNil; f = _tmp$12; err[0] = _tmp$13; return [f, err[0]]; /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return [f, err[0]]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.ReadForm }; } $f.$ptr = $ptr; $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.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.err$3 = err$3; $f.f = f; $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") : _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, b, fh, r, x; fh = this; b = fh.content; if (!(b === sliceType.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]; } return os.Open(fh.tmpfile); }; FileHeader.prototype.Open = function() { return this.$val.Open(); }; sectionReadCloser.ptr.prototype.Close = function() { var $ptr, rc; rc = $clone(this, sectionReadCloser); 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")) { return ""; } return (_entry = p.dispositionParams["name"], _entry !== undefined ? _entry.v : ""); /* */ $s = -1; case -1: } 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: return (_entry = p.dispositionParams["filename"], _entry !== undefined ? _entry.v : ""); /* */ $s = -1; case -1: } 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; case -1: } 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($stringToBytes("\r\n--" + boundary + "--")); return new Reader.ptr(bufio.NewReader(r), 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; 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(new $Map(), new bytes.Buffer.ptr(), mr, 0, "", false, $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 = 2; continue; } /* */ $s = 3; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2: return [ptrType$3.nil, err]; /* } */ case 3: 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 = newQuotedPrintableReader(bp.r); } return [bp, $ifaceNil]; /* */ $s = -1; case -1: } 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; } return err; /* */ $s = -1; case -1: } 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]; return [n, err]; /* */ $s = -1; case -1: } 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, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, _tuple$1, _tuple$2, _tuple$3, d, err, err$1, foundBoundary, idx, n, nCopy, p, peek, pr, safeCount, unexpectedEOF, $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; _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; d = $f.d; err = $f.err; err$1 = $f.err$1; foundBoundary = $f.foundBoundary; idx = $f.idx; n = $f.n; nCopy = $f.nCopy; p = $f.p; peek = $f.peek; pr = $f.pr; safeCount = $f.safeCount; unexpectedEOF = $f.unexpectedEOF; $s = $f.$s; $deferred = $f.$deferred; $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 = [n]; p = [p]; n[0] = 0; err = $ifaceNil; pr = $clone(this, partReader); p[0] = pr.p; $deferred.push([(function(n, p) { return function() { var $ptr; p[0].bytesRead = p[0].bytesRead + (n[0]) >> 0; }; })(n, p), []]); if (p[0].buffer.Len() >= d.$length) { _tuple = p[0].buffer.Read(d); n[0] = _tuple[0]; err = _tuple[1]; return [n[0], err]; } _r = p[0].mr.bufReader.Peek(4096); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _tuple$1 = _r; peek = _tuple$1[0]; err = _tuple$1[1]; if ((p[0].bytesRead === 0) && p[0].mr.peekBufferIsEmptyPart(peek)) { _tmp = 0; _tmp$1 = io.EOF; n[0] = _tmp; err = _tmp$1; return [n[0], err]; } unexpectedEOF = $interfaceIsEqual(err, io.EOF); /* */ if (!($interfaceIsEqual(err, $ifaceNil)) && !unexpectedEOF) { $s = 2; continue; } /* */ $s = 3; continue; /* if (!($interfaceIsEqual(err, $ifaceNil)) && !unexpectedEOF) { */ case 2: _r$1 = fmt.Errorf("multipart: Part Read: %v", new sliceType$4([err])); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } _tmp$2 = 0; _tmp$3 = _r$1; n[0] = _tmp$2; err = _tmp$3; return [n[0], err]; /* } */ case 3: if (peek === sliceType.nil) { $panic(new $String("nil peek buf")); } nCopy = 0; foundBoundary = false; idx = bytes.Index(peek, p[0].mr.nlDashBoundary); if (!((idx === -1))) { nCopy = idx; foundBoundary = true; } else { safeCount = peek.$length - p[0].mr.nlDashBoundary.$length >> 0; if (safeCount > 0) { nCopy = safeCount; } else if (unexpectedEOF) { _tmp$4 = 0; _tmp$5 = io.ErrUnexpectedEOF; n[0] = _tmp$4; err = _tmp$5; return [n[0], err]; } } /* */ if (nCopy > 0) { $s = 5; continue; } /* */ $s = 6; continue; /* if (nCopy > 0) { */ case 5: _r$2 = io.CopyN(p[0].buffer, p[0].mr.bufReader, new $Int64(0, nCopy)); /* */ $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; err$1 = _tuple$2[1]; /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 8; continue; } /* */ $s = 9; continue; /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 8: _tmp$6 = 0; _tmp$7 = err$1; n[0] = _tmp$6; err = _tmp$7; return [n[0], err]; /* } */ case 9: /* } */ case 6: _tuple$3 = p[0].buffer.Read(d); n[0] = _tuple$3[0]; err = _tuple$3[1]; if ($interfaceIsEqual(err, io.EOF) && !foundBoundary) { err = $ifaceNil; } return [n[0], err]; /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return [n[0], err]; } if($curGoroutine.asleep) { 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._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.d = d; $f.err = err; $f.err$1 = err$1; $f.foundBoundary = foundBoundary; $f.idx = idx; $f.n = n; $f.nCopy = nCopy; $f.p = p; $f.peek = peek; $f.pr = pr; $f.safeCount = safeCount; $f.unexpectedEOF = unexpectedEOF; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } }; partReader.prototype.Read = function(d) { return this.$val.Read(d); }; 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; return $ifaceNil; /* */ $s = -1; case -1: } 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)) { 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; } 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))) { return [ptrType$3.nil, err$1]; } r.currentPart = bp; return [bp, $ifaceNil]; /* } */ case 11: if (r.isFinalBoundary(line)) { 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; } 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; } return [ptrType$3.nil, _r$5]; /* } */ $s = 4; continue; case 5: /* */ $s = -1; case -1: } 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") : 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); }; Reader.ptr.prototype.peekBufferIsEmptyPart = function(peek) { var $ptr, mr, peek, rest, rest$1; mr = this; if (bytes.HasPrefix(peek, mr.dashBoundaryDash)) { rest = $subslice(peek, mr.dashBoundaryDash.$length); rest = skipLWSPChar(rest); return bytes.HasPrefix(rest, mr.nl) || (rest.$length === 0); } if (!bytes.HasPrefix(peek, mr.dashBoundary)) { return false; } rest$1 = $subslice(peek, mr.dashBoundary.$length); rest$1 = skipLWSPChar(rest$1); return bytes.HasPrefix(rest$1, mr.nl); }; Reader.prototype.peekBufferIsEmptyPart = function(peek) { return this.$val.peekBufferIsEmptyPart(peek); }; skipLWSPChar = function(b) { var $ptr, b; while (true) { if (!(b.$length > 0 && (((0 >= b.$length ? $throwRuntimeError("index out of range") : b.$array[b.$offset + 0]) === 32) || ((0 >= b.$length ? $throwRuntimeError("index out of range") : b.$array[b.$offset + 0]) === 9)))) { break; } b = $subslice(b, 1); } return b; }; newQuotedPrintableReader = function(r) { var $ptr, r; return new qpReader.ptr(bufio.NewReader(r), $ifaceNil, sliceType.nil); }; 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) { return [b - 48 << 24 >>> 24, $ifaceNil]; } else if (b >= 65 && b <= 70) { return [(b - 65 << 24 >>> 24) + 10 << 24 >>> 24, $ifaceNil]; } _r = fmt.Errorf("multipart: invalid quoted-printable hex byte 0x%02x", new sliceType$4([new $Uint8(b)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return [0, _r]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: fromHex }; } $f.$ptr = $ptr; $f._r = _r; $f.b = b; $f.$s = $s; $f.$r = $r; return $f; }; qpReader.ptr.prototype.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, q, 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; q = $f.q; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: b = 0; err = $ifaceNil; q = this; if (v.$length < 2) { _tmp = 0; _tmp$1 = io.ErrUnexpectedEOF; b = _tmp; err = _tmp$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") : 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))) { $s = 2; continue; } /* */ $s = 3; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2: _tmp$4 = 0; _tmp$5 = err; b = _tmp$4; err = _tmp$5; return [b, err]; /* } */ case 3: _r$1 = fromHex((1 >= v.$length ? $throwRuntimeError("index out of range") : v.$array[v.$offset + 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; lb = _tuple$1[0]; err = _tuple$1[1]; /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 5; continue; } /* */ $s = 6; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 5: _tmp$6 = 0; _tmp$7 = err; b = _tmp$6; err = _tmp$7; return [b, err]; /* } */ case 6: _tmp$8 = ((hb << 4 << 24 >>> 24) | lb) >>> 0; _tmp$9 = $ifaceNil; b = _tmp$8; err = _tmp$9; return [b, err]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: qpReader.ptr.prototype.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.q = q; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; }; qpReader.prototype.readHexByte = function(v) { return this.$val.readHexByte(v); }; isQPDiscardWhitespace = function(r) { var $ptr, _ref, r; _ref = r; if (_ref === 10 || _ref === 13 || _ref === 32 || _ref === 9) { return true; } return false; }; qpReader.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, q, rightStripped, wholeLine, 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; _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; q = $f.q; rightStripped = $f.rightStripped; wholeLine = $f.wholeLine; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: n = 0; err = $ifaceNil; q = this; /* while (true) { */ case 1: /* if (!(p.$length > 0)) { break; } */ if(!(p.$length > 0)) { $s = 2; continue; } /* */ if (q.line.$length === 0) { $s = 3; continue; } /* */ $s = 4; continue; /* if (q.line.$length === 0) { */ case 3: if (!($interfaceIsEqual(q.rerr, $ifaceNil))) { _tmp = n; _tmp$1 = q.rerr; n = _tmp; err = _tmp$1; return [n, err]; } _r = q.br.ReadSlice(10); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _tuple = _r; q.line = _tuple[0]; q.rerr = _tuple[1]; hasLF = bytes.HasSuffix(q.line, lf); hasCR = bytes.HasSuffix(q.line, crlf); wholeLine = q.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; } q.line = _r$1; /* */ if (bytes.HasSuffix(q.line, softSuffix)) { $s = 7; continue; } /* */ if (hasLF) { $s = 8; continue; } /* */ $s = 9; continue; /* if (bytes.HasSuffix(q.line, softSuffix)) { */ case 7: rightStripped = $subslice(wholeLine, q.line.$length); q.line = $subslice(q.line, 0, (q.line.$length - 1 >> 0)); /* */ if (!bytes.HasPrefix(rightStripped, lf) && !bytes.HasPrefix(rightStripped, crlf)) { $s = 10; continue; } /* */ $s = 11; continue; /* if (!bytes.HasPrefix(rightStripped, lf) && !bytes.HasPrefix(rightStripped, crlf)) { */ case 10: _r$2 = fmt.Errorf("multipart: invalid bytes after =: %q", new sliceType$4([rightStripped])); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } q.rerr = _r$2; /* } */ case 11: $s = 9; continue; /* } else if (hasLF) { */ case 8: if (hasCR) { q.line = $append(q.line, 13, 10); } else { q.line = $append(q.line, 10); } /* } */ case 9: /* continue; */ $s = 1; continue; /* } */ case 4: b = (x = q.line, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0])); /* */ if (b === 61) { $s = 13; continue; } /* */ if ((b === 9) || (b === 13) || (b === 10)) { $s = 14; continue; } /* */ if (b < 32 || b > 126) { $s = 15; continue; } /* */ $s = 16; continue; /* switch (0) { default: if (b === 61) { */ case 13: _r$3 = q.readHexByte($subslice(q.line, 1)); /* */ $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; b = _tuple$1[0]; err = _tuple$1[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { _tmp$2 = n; _tmp$3 = err; n = _tmp$2; err = _tmp$3; return [n, err]; } q.line = $subslice(q.line, 2); $s = 16; continue; /* } else if ((b === 9) || (b === 13) || (b === 10)) { */ case 14: /* break; */ $s = 16; continue; $s = 16; continue; /* } else if (b < 32 || b > 126) { */ case 15: _r$4 = fmt.Errorf("multipart: invalid unescaped byte 0x%02x in quoted-printable body", new sliceType$4([new $Uint8(b)])); /* */ $s = 18; case 18: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } _tmp$4 = n; _tmp$5 = _r$4; n = _tmp$4; err = _tmp$5; return [n, err]; /* } } */ case 16: (0 >= p.$length ? $throwRuntimeError("index out of range") : p.$array[p.$offset + 0] = b); p = $subslice(p, 1); q.line = $subslice(q.line, 1); n = n + (1) >> 0; /* } */ $s = 1; continue; case 2: _tmp$6 = n; _tmp$7 = $ifaceNil; n = _tmp$6; err = _tmp$7; return [n, err]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: qpReader.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.q = q; $f.rightStripped = rightStripped; $f.wholeLine = wholeLine; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; }; qpReader.prototype.Read = function(p) { return this.$val.Read(p); }; 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], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}]; partReader.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}]; ptrType$5.methods = [{prop: "ReadForm", name: "ReadForm", pkg: "", 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], [$Bool], false)}, {prop: "isBoundaryDelimiterLine", name: "isBoundaryDelimiterLine", pkg: "mime/multipart", typ: $funcType([sliceType], [$Bool], false)}, {prop: "peekBufferIsEmptyPart", name: "peekBufferIsEmptyPart", pkg: "mime/multipart", typ: $funcType([sliceType], [$Bool], false)}]; ptrType$9.methods = [{prop: "readHexByte", name: "readHexByte", pkg: "mime/multipart", typ: $funcType([sliceType], [$Uint8, $error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}]; Form.init([{prop: "Value", name: "Value", pkg: "", typ: mapType, tag: ""}, {prop: "File", name: "File", pkg: "", typ: mapType$1, tag: ""}]); FileHeader.init([{prop: "Filename", name: "Filename", pkg: "", typ: $String, tag: ""}, {prop: "Header", name: "Header", pkg: "", typ: textproto.MIMEHeader, tag: ""}, {prop: "content", name: "content", pkg: "mime/multipart", typ: sliceType, tag: ""}, {prop: "tmpfile", name: "tmpfile", pkg: "mime/multipart", typ: $String, tag: ""}]); File.init([{prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], 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: "Seek", name: "Seek", pkg: "", typ: $funcType([$Int64, $Int], [$Int64, $error], false)}]); sectionReadCloser.init([{prop: "SectionReader", name: "", pkg: "", typ: ptrType$8, tag: ""}]); Part.init([{prop: "Header", name: "Header", pkg: "", typ: textproto.MIMEHeader, tag: ""}, {prop: "buffer", name: "buffer", pkg: "mime/multipart", typ: ptrType$4, tag: ""}, {prop: "mr", name: "mr", pkg: "mime/multipart", typ: ptrType$5, tag: ""}, {prop: "bytesRead", name: "bytesRead", pkg: "mime/multipart", typ: $Int, tag: ""}, {prop: "disposition", name: "disposition", pkg: "mime/multipart", typ: $String, tag: ""}, {prop: "dispositionParams", name: "dispositionParams", pkg: "mime/multipart", typ: mapType$2, tag: ""}, {prop: "r", name: "r", pkg: "mime/multipart", typ: io.Reader, tag: ""}]); partReader.init([{prop: "p", name: "p", pkg: "mime/multipart", typ: ptrType$3, tag: ""}]); Reader.init([{prop: "bufReader", name: "bufReader", pkg: "mime/multipart", typ: ptrType$2, tag: ""}, {prop: "currentPart", name: "currentPart", pkg: "mime/multipart", typ: ptrType$3, tag: ""}, {prop: "partsRead", name: "partsRead", pkg: "mime/multipart", typ: $Int, tag: ""}, {prop: "nl", name: "nl", pkg: "mime/multipart", typ: sliceType, tag: ""}, {prop: "nlDashBoundary", name: "nlDashBoundary", pkg: "mime/multipart", typ: sliceType, tag: ""}, {prop: "dashBoundaryDash", name: "dashBoundaryDash", pkg: "mime/multipart", typ: sliceType, tag: ""}, {prop: "dashBoundary", name: "dashBoundary", pkg: "mime/multipart", typ: sliceType, tag: ""}]); qpReader.init([{prop: "br", name: "br", pkg: "mime/multipart", typ: ptrType$2, tag: ""}, {prop: "rerr", name: "rerr", pkg: "mime/multipart", typ: $error, tag: ""}, {prop: "line", name: "line", pkg: "mime/multipart", 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 = 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 = textproto.$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 = strings.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } emptyParams = new $Map(); crlf = new sliceType($stringToBytes("\r\n")); lf = new sliceType($stringToBytes("\n")); softSuffix = new sliceType($stringToBytes("=")); quoteEscaper = strings.NewReplacer(new sliceType$1(["\\", "\\\\", "\"", "\\\""])); /* */ } 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, ptrType, arrayType, sliceType, sliceType$1, ptrType$1, ptrType$2, NewChunkedReader, readLine, trimTrailingWhitespace, isASCIISpace, 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", "chunkedReader", "net/http/internal", function(r_, n_, err_, buf_) { this.$val = this; if (arguments.length === 0) { this.r = ptrType.nil; this.n = new $Uint64(0, 0); this.err = $ifaceNil; this.buf = arrayType.zero(); return; } this.r = r_; this.n = n_; this.err = err_; this.buf = buf_; }); chunkedWriter = $pkg.chunkedWriter = $newType(0, $kindStruct, "internal.chunkedWriter", "chunkedWriter", "net/http/internal", function(Wire_) { this.$val = this; if (arguments.length === 0) { this.Wire = $ifaceNil; return; } this.Wire = Wire_; }); ptrType = $ptrType(bufio.Reader); arrayType = $arrayType($Uint8, 2); sliceType = $sliceType($Uint8); sliceType$1 = $sliceType($emptyInterface); ptrType$1 = $ptrType(chunkedReader); ptrType$2 = $ptrType(chunkedWriter); 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()); }; $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 = readLine(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))) { return; } _tuple$1 = parseHexUint(line); cr.n = _tuple$1[0]; cr.err = _tuple$1[1]; if (!($interfaceIsEqual(cr.err, $ifaceNil))) { return; } if ((x = cr.n, (x.$high === 0 && x.$low === 0))) { cr.err = io.EOF; } /* */ $s = -1; case -1: } 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]; return bytes.IndexByte(peek, 10) >= 0; /* } */ case 2: return false; /* */ $s = -1; case -1: } 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 ((x = cr.n, (x.$high === 0 && x.$low === 0))) { $s = 3; continue; } /* */ $s = 4; continue; /* if ((x = cr.n, (x.$high === 0 && x.$low === 0))) { */ case 3: if (!(n > 0)) { _v = false; $s = 7; continue s; } _r = cr.chunkHeaderAvailable(); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _v = !_r; case 7: /* */ if (_v) { $s = 5; continue; } /* */ $s = 6; continue; /* if (_v) { */ case 5: /* break; */ $s = 2; continue; /* } */ case 6: $r = cr.beginChunk(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* continue; */ $s = 1; continue; /* } */ case 4: 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$1 = cr.r.Read(rbuf); /* */ $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; n0 = _tuple[0]; cr.err = _tuple[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)) { $s = 11; continue; } /* */ $s = 12; continue; /* if ((x$5 = cr.n, (x$5.$high === 0 && x$5.$low === 0)) && $interfaceIsEqual(cr.err, $ifaceNil)) { */ case 11: _r$2 = io.ReadFull(cr.r, $subslice(new sliceType(cr.buf), 0, 2)); /* */ $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; cr.err = _tuple$1[1]; /* */ if ($interfaceIsEqual(cr.err, $ifaceNil)) { $s = 14; continue; } /* */ $s = 15; continue; /* if ($interfaceIsEqual(cr.err, $ifaceNil)) { */ case 14: if (!((cr.buf[0] === 13)) || !((cr.buf[1] === 10))) { cr.err = errors.New("malformed chunked encoding"); } /* } */ case 15: /* } */ case 12: /* } */ $s = 1; continue; case 2: _tmp = n; _tmp$1 = cr.err; n = _tmp; err = _tmp$1; return [n, err]; /* */ $s = -1; case -1: } 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); }; readLine = function(b) { var $ptr, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, 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; _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; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: p = sliceType.nil; err = $ifaceNil; _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))) { $s = 2; continue; } /* */ $s = 3; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2: if ($interfaceIsEqual(err, io.EOF)) { err = io.ErrUnexpectedEOF; } else if ($interfaceIsEqual(err, bufio.ErrBufferFull)) { err = $pkg.ErrLineTooLong; } _tmp = sliceType.nil; _tmp$1 = err; p = _tmp; err = _tmp$1; return [p, err]; /* } */ case 3: if (p.$length >= 4096) { _tmp$2 = sliceType.nil; _tmp$3 = $pkg.ErrLineTooLong; p = _tmp$2; err = _tmp$3; return [p, err]; } _tmp$4 = trimTrailingWhitespace(p); _tmp$5 = $ifaceNil; p = _tmp$4; err = _tmp$5; return [p, err]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: readLine }; } $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.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") : 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); }; 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, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, _tuple$2, cw, data, 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; _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; cw = $f.cw; data = $f.data; err = $f.err; n = $f.n; $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; 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))) { $s = 2; continue; } /* */ $s = 3; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2: _tmp$2 = 0; _tmp$3 = err; n = _tmp$2; err = _tmp$3; return [n, err]; /* } */ case 3: _r$1 = cw.Wire.Write(data); /* */ $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]; /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 5; continue; } /* */ $s = 6; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 5: return [n, err]; /* } */ case 6: if (!((n === data.$length))) { err = io.ErrShortWrite; return [n, err]; } _r$2 = io.WriteString(cw.Wire, "\r\n"); /* */ $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; err = _tuple$2[1]; return [n, err]; /* */ $s = -1; case -1: } 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._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.cw = cw; $f.data = data; $f.err = err; $f.n = n; $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]; return err; /* */ $s = -1; case -1: } 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, b, err, n, v, x; n = new $Uint64(0, 0); err = $ifaceNil; _ref = v; _i = 0; while (true) { if (!(_i < _ref.$length)) { break; } b = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]); n = $shiftLeft64(n, (4)); 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]; } n = (x = new $Uint64(0, b), new $Uint64(n.$high | x.$high, (n.$low | x.$low) >>> 0)); _i++; } return [n, err]; }; ptrType$1.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$2.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}]; chunkedReader.init([{prop: "r", name: "r", pkg: "net/http/internal", typ: ptrType, tag: ""}, {prop: "n", name: "n", pkg: "net/http/internal", typ: $Uint64, tag: ""}, {prop: "err", name: "err", pkg: "net/http/internal", typ: $error, tag: ""}, {prop: "buf", name: "buf", pkg: "net/http/internal", typ: arrayType, tag: ""}]); chunkedWriter.init([{prop: "Wire", name: "Wire", pkg: "", typ: io.Writer, 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, sort, strconv, strings, Error, EscapeError, URL, Userinfo, Values, sliceType, ptrType, ptrType$1, sliceType$1, ptrType$2, ishex, unhex, shouldEscape, QueryUnescape, unescape, QueryEscape, escape, User, UserPassword, getscheme, split, Parse, ParseRequestURI, parse, parseAuthority, ParseQuery, parseQuery, resolvePath; bytes = $packages["bytes"]; errors = $packages["errors"]; sort = $packages["sort"]; strconv = $packages["strconv"]; strings = $packages["strings"]; Error = $pkg.Error = $newType(0, $kindStruct, "url.Error", "Error", "net/url", 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_; }); EscapeError = $pkg.EscapeError = $newType(8, $kindString, "url.EscapeError", "EscapeError", "net/url", null); URL = $pkg.URL = $newType(0, $kindStruct, "url.URL", "URL", "net/url", function(Scheme_, Opaque_, User_, Host_, Path_, RawQuery_, Fragment_) { this.$val = this; if (arguments.length === 0) { this.Scheme = ""; this.Opaque = ""; this.User = ptrType$1.nil; this.Host = ""; this.Path = ""; this.RawQuery = ""; this.Fragment = ""; return; } this.Scheme = Scheme_; this.Opaque = Opaque_; this.User = User_; this.Host = Host_; this.Path = Path_; this.RawQuery = RawQuery_; this.Fragment = Fragment_; }); Userinfo = $pkg.Userinfo = $newType(0, $kindStruct, "url.Userinfo", "Userinfo", "net/url", 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", "Values", "net/url", null); sliceType = $sliceType($Uint8); ptrType = $ptrType(URL); ptrType$1 = $ptrType(Userinfo); sliceType$1 = $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; } return e.Op + " " + e.URL + ": " + _r; /* */ $s = -1; case -1: } 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(); }; 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(); }; shouldEscape = function(c, mode) { var $ptr, _ref, _ref$1, c, mode; if (65 <= c && c <= 90 || 97 <= c && c <= 122 || 48 <= c && c <= 57) { return false; } _ref = c; if (_ref === 45 || _ref === 95 || _ref === 46 || _ref === 126) { return false; } else if (_ref === 36 || _ref === 38 || _ref === 43 || _ref === 44 || _ref === 47 || _ref === 58 || _ref === 59 || _ref === 61 || _ref === 63 || _ref === 64) { _ref$1 = mode; if (_ref$1 === 1) { return c === 63; } else if (_ref$1 === 2) { return (c === 64) || (c === 47) || (c === 63) || (c === 58); } else if (_ref$1 === 3) { return true; } else if (_ref$1 === 4) { return false; } } return true; }; QueryUnescape = function(s) { var $ptr, s; return unescape(s, 3); }; $pkg.QueryUnescape = QueryUnescape; unescape = function(s, mode) { var $ptr, _ref, _ref$1, hasPlus, i, i$1, j, mode, n, s, t; n = 0; hasPlus = false; i = 0; while (true) { if (!(i < s.length)) { break; } _ref = s.charCodeAt(i); if (_ref === 37) { n = n + (1) >> 0; if ((i + 2 >> 0) >= s.length || !ishex(s.charCodeAt((i + 1 >> 0))) || !ishex(s.charCodeAt((i + 2 >> 0)))) { s = s.substring(i); if (s.length > 3) { s = s.substring(0, 3); } return ["", new EscapeError(s)]; } i = i + (3) >> 0; } else if (_ref === 43) { hasPlus = mode === 3; i = i + (1) >> 0; } else { i = i + (1) >> 0; } } if ((n === 0) && !hasPlus) { return [s, $ifaceNil]; } t = $makeSlice(sliceType, (s.length - (2 * n >> 0) >> 0)); j = 0; i$1 = 0; while (true) { if (!(i$1 < s.length)) { break; } _ref$1 = s.charCodeAt(i$1); if (_ref$1 === 37) { ((j < 0 || j >= t.$length) ? $throwRuntimeError("index out of range") : 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 (_ref$1 === 43) { if (mode === 3) { ((j < 0 || j >= t.$length) ? $throwRuntimeError("index out of range") : t.$array[t.$offset + j] = 32); } else { ((j < 0 || j >= t.$length) ? $throwRuntimeError("index out of range") : 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") : 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, 3); }; $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 === 3)) { 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 + (2 * hexCount >> 0) >> 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 === 3)) { ((j < 0 || j >= t.$length) ? $throwRuntimeError("index out of range") : 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") : t.$array[t.$offset + j] = 37); (x = j + 1 >> 0, ((x < 0 || x >= t.$length) ? $throwRuntimeError("index out of range") : 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") : 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") : 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; if (u.passwordSet) { return [u.password, true]; } return ["", false]; }; Userinfo.prototype.Password = function() { return this.$val.Password(); }; Userinfo.ptr.prototype.String = function() { var $ptr, s, u; u = this; s = escape(u.username, 2); if (u.passwordSet) { s = s + (":" + escape(u.password, 2)); } 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 = rawurl.substring(0, i); _tmp$7 = rawurl.substring((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 [s.substring(0, i), s.substring((i + c.length >> 0))]; } return [s.substring(0, i), s.substring(i)]; }; Parse = function(rawurl) { var $ptr, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _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; _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; 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: url = ptrType.nil; err = $ifaceNil; _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 = 2; continue; } /* */ $s = 3; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2: _tmp = ptrType.nil; _tmp$1 = err; url = _tmp; err = _tmp$1; return [url, err]; /* } */ case 3: if (frag === "") { _tmp$2 = url; _tmp$3 = $ifaceNil; url = _tmp$2; err = _tmp$3; return [url, err]; } _tuple$2 = unescape(frag, 4); url.Fragment = _tuple$2[0]; err = _tuple$2[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { _tmp$4 = ptrType.nil; _tmp$5 = new Error.ptr("parse", rawurl, err); url = _tmp$4; err = _tmp$5; return [url, err]; } _tmp$6 = url; _tmp$7 = $ifaceNil; url = _tmp$6; err = _tmp$7; return [url, err]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Parse }; } $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._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: url = ptrType.nil; err = $ifaceNil; _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]; return [url, err]; /* */ $s = -1; case -1: } 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, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, authority, err, rawurl, rest, 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; _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; authority = $f.authority; err = $f.err; rawurl = $f.rawurl; rest = $f.rest; url = $f.url; viaRequest = $f.viaRequest; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: url = ptrType.nil; err = $ifaceNil; rest = ""; /* */ if (rawurl === "" && viaRequest) { $s = 1; continue; } /* */ $s = 2; continue; /* if (rawurl === "" && viaRequest) { */ case 1: err = errors.New("empty url"); /* goto Error */ $s = 3; continue; /* } */ case 2: url = new URL.ptr(); if (rawurl === "*") { url.Path = "*"; return [url, err]; } _tuple = getscheme(rawurl); url.Scheme = _tuple[0]; rest = _tuple[1]; err = _tuple[2]; /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 4; continue; } /* */ $s = 5; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 4: /* goto Error */ $s = 3; continue; /* } */ case 5: _r = strings.ToLower(url.Scheme); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } url.Scheme = _r; _tuple$1 = split(rest, "?", true); rest = _tuple$1[0]; url.RawQuery = _tuple$1[1]; /* */ if (!strings.HasPrefix(rest, "/")) { $s = 7; continue; } /* */ $s = 8; continue; /* if (!strings.HasPrefix(rest, "/")) { */ case 7: if (!(url.Scheme === "")) { url.Opaque = rest; _tmp = url; _tmp$1 = $ifaceNil; url = _tmp; err = _tmp$1; return [url, err]; } /* */ if (viaRequest) { $s = 9; continue; } /* */ $s = 10; continue; /* if (viaRequest) { */ case 9: err = errors.New("invalid URI for request"); /* goto Error */ $s = 3; continue; /* } */ case 10: /* } */ case 8: /* */ if ((!(url.Scheme === "") || !viaRequest && !strings.HasPrefix(rest, "///")) && strings.HasPrefix(rest, "//")) { $s = 11; continue; } /* */ $s = 12; continue; /* if ((!(url.Scheme === "") || !viaRequest && !strings.HasPrefix(rest, "///")) && strings.HasPrefix(rest, "//")) { */ case 11: authority = ""; _tuple$2 = split(rest.substring(2), "/", false); authority = _tuple$2[0]; rest = _tuple$2[1]; _tuple$3 = parseAuthority(authority); url.User = _tuple$3[0]; url.Host = _tuple$3[1]; err = _tuple$3[2]; /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 13; continue; } /* */ $s = 14; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 13: /* goto Error */ $s = 3; continue; /* } */ case 14: /* */ if (strings.Contains(url.Host, "%")) { $s = 15; continue; } /* */ $s = 16; continue; /* if (strings.Contains(url.Host, "%")) { */ case 15: err = errors.New("hexadecimal escape in host"); /* goto Error */ $s = 3; continue; /* } */ case 16: /* } */ case 12: _tuple$4 = unescape(rest, 1); url.Path = _tuple$4[0]; err = _tuple$4[1]; /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 17; continue; } /* */ $s = 18; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 17: /* goto Error */ $s = 3; continue; /* } */ case 18: _tmp$2 = url; _tmp$3 = $ifaceNil; url = _tmp$2; err = _tmp$3; return [url, err]; /* Error: */ case 3: _tmp$4 = ptrType.nil; _tmp$5 = new Error.ptr("parse", rawurl, err); url = _tmp$4; err = _tmp$5; return [url, err]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parse }; } $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._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f.authority = authority; $f.err = err; $f.rawurl = rawurl; $f.rest = rest; $f.url = url; $f.viaRequest = viaRequest; $f.$s = $s; $f.$r = $r; return $f; }; parseAuthority = function(authority) { var $ptr, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, _tuple$3, authority, err, host, i, password, user, userinfo, username; user = ptrType$1.nil; host = ""; err = $ifaceNil; i = strings.LastIndex(authority, "@"); if (i < 0) { host = authority; return [user, host, err]; } _tmp = authority.substring(0, i); _tmp$1 = authority.substring((i + 1 >> 0)); userinfo = _tmp; host = _tmp$1; if (strings.Index(userinfo, ":") < 0) { _tuple = unescape(userinfo, 2); userinfo = _tuple[0]; err = _tuple[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { return [user, host, err]; } user = User(userinfo); } else { _tuple$1 = split(userinfo, ":", true); username = _tuple$1[0]; password = _tuple$1[1]; _tuple$2 = unescape(username, 2); username = _tuple$2[0]; err = _tuple$2[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { return [user, host, err]; } _tuple$3 = unescape(password, 2); password = _tuple$3[0]; err = _tuple$3[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { return [user, host, err]; } user = UserPassword(username, password); } return [user, host, err]; }; URL.ptr.prototype.String = function() { var $ptr, buf, h, u, ui; u = this; buf = $clone(new bytes.Buffer.ptr(), bytes.Buffer); 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(h); } } if (!(u.Path === "") && !((u.Path.charCodeAt(0) === 47)) && !(u.Host === "")) { buf.WriteByte(47); } buf.WriteString(escape(u.Path, 1)); } if (!(u.RawQuery === "")) { buf.WriteByte(63); buf.WriteString(u.RawQuery); } if (!(u.Fragment === "")) { buf.WriteByte(35); buf.WriteString(escape(u.Fragment, 4)); } return buf.String(); }; URL.prototype.String = function() { return this.$val.String(); }; Values.prototype.Get = function(key) { var $ptr, _entry, _tuple, key, ok, v, vs; v = this.$val; if (v === false) { return ""; } _tuple = (_entry = v[key], _entry !== undefined ? [_entry.v, true] : [sliceType$1.nil, false]); vs = _tuple[0]; ok = _tuple[1]; if (!ok || (vs.$length === 0)) { return ""; } return (0 >= vs.$length ? $throwRuntimeError("index out of range") : 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"))[_key] = { k: _key, v: new sliceType$1([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"))[_key] = { k: _key, v: $append((_entry = v[key], _entry !== undefined ? _entry.v : sliceType$1.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[key]; }; $ptrType(Values).prototype.Del = function(key) { return new Values(this.$get()).Del(key); }; ParseQuery = function(query) { var $ptr, err, m, query; m = false; err = $ifaceNil; m = new $Map(); 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 = key.substring(0, i); _tmp$1 = key.substring((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 = key.substring(0, i$1); _tmp$3 = key.substring((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"))[_key] = { k: _key, v: $append((_entry = m[key], _entry !== undefined ? _entry.v : sliceType$1.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) { return ""; } buf = $clone(new bytes.Buffer.ptr(), bytes.Buffer); keys = $makeSlice(sliceType$1, 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") : _ref$1.$array[_ref$1.$offset + _i$1]); vs = (_entry$1 = v[k$1], _entry$1 !== undefined ? _entry$1.v : sliceType$1.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") : _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++; } return buf.String(); /* */ $s = -1; case -1: } 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, _i, _r, _ref, _ref$1, 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; _i = $f._i; _r = $f._r; _ref = $f._ref; _ref$1 = $f._ref$1; 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 = base.substring(0, (i + 1 >> 0)) + ref; } else { full = ref; } if (full === "") { return ""; } dst = sliceType$1.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") : _ref.$array[_ref.$offset + _i]); _ref$1 = elem; if (_ref$1 === ".") { } else if (_ref$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") : 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; } return "/" + _r; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: resolvePath }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._ref = _ref; $f._ref$1 = _ref$1; $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))) { 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; } return [_r$1, $ifaceNil]; /* */ $s = -1; case -1: } 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, 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; 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.Path, ""); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } url[0].Path = _r; return url[0]; /* } */ case 2: if (!(ref.Opaque === "")) { url[0].User = ptrType$1.nil; url[0].Host = ""; url[0].Path = ""; 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$1 = resolvePath(u.Path, ref.Path); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } url[0].Path = _r$1; return url[0]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: URL.ptr.prototype.ResolveReference }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $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 = escape(u.Path, 1); if (result === "") { result = "/"; } } else { if (strings.HasPrefix(result, "//")) { result = u.Scheme + ":" + result; } } if (!(u.RawQuery === "")) { result = result + ("?" + u.RawQuery); } return result; }; URL.prototype.RequestURI = function() { return this.$val.RequestURI(); }; ptrType$2.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; EscapeError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; ptrType.methods = [{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)}]; 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", pkg: "", typ: $String, tag: ""}, {prop: "URL", name: "URL", pkg: "", typ: $String, tag: ""}, {prop: "Err", name: "Err", pkg: "", typ: $error, tag: ""}]); URL.init([{prop: "Scheme", name: "Scheme", pkg: "", typ: $String, tag: ""}, {prop: "Opaque", name: "Opaque", pkg: "", typ: $String, tag: ""}, {prop: "User", name: "User", pkg: "", typ: ptrType$1, tag: ""}, {prop: "Host", name: "Host", pkg: "", typ: $String, tag: ""}, {prop: "Path", name: "Path", pkg: "", typ: $String, tag: ""}, {prop: "RawQuery", name: "RawQuery", pkg: "", typ: $String, tag: ""}, {prop: "Fragment", name: "Fragment", pkg: "", typ: $String, tag: ""}]); Userinfo.init([{prop: "username", name: "username", pkg: "net/url", typ: $String, tag: ""}, {prop: "password", name: "password", pkg: "net/url", typ: $String, tag: ""}, {prop: "passwordSet", name: "passwordSet", pkg: "net/url", typ: $Bool, tag: ""}]); Values.init($String, sliceType$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 = errors.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = sort.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = strconv.$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"] = (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", "lazybuf", "path", 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") : 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, b.s.substring(0, b.w)); } (x = b.buf, x$1 = b.w, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : 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 b.s.substring(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 = path.substring(0, (i + 1 >> 0)); _tmp$1 = path.substring((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([{prop: "s", name: "s", pkg: "path", typ: $String, tag: ""}, {prop: "buf", name: "buf", pkg: "path", typ: sliceType, tag: ""}, {prop: "w", name: "w", pkg: "path", 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["net/http"] = (function() { var $pkg = {}, $init, bufio, bytes, gzip, tls, base64, binary, errors, fmt, js, io, ioutil, log, mime, multipart, net, internal, textproto, url, os, path, filepath, runtime, sort, strconv, strings, sync, atomic, time, XHRTransport, Client, RoundTripper, cancelTimerBody, Cookie, Header, writeStringer, stringWriter, keyValues, headerSorter, CookieJar, ProtocolError, badStringError, Request, maxBytesReader, Response, Handler, ResponseWriter, conn, switchWriter, liveSwitchReader, chunkWriter, response, writerOnly, expectContinueReader, extraHeader, closeWriter, HandlerFunc, redirectHandler, ServeMux, muxEntry, Server, ConnState, serverHandler, tcpKeepAliveListener, globalOptionsHandler, eofReaderWithWriteTo, initNPNRequest, checkConnErrorWriter, sniffSig, exactSig, maskedSig, htmlSig, textSig, errorReader, transferWriter, transferReader, body, bodyLocked, canceler, sliceType, sliceType$1, sliceType$2, sliceType$3, structType, sliceType$4, ptrType, chanType, chanType$1, ptrType$1, ptrType$2, funcType, ptrType$3, funcType$1, ptrType$4, ptrType$5, sliceType$5, ptrType$6, ptrType$7, sliceType$6, ptrType$8, sliceType$8, ptrType$11, ptrType$12, ptrType$13, ptrType$14, ptrType$15, ptrType$16, ptrType$17, ptrType$18, ptrType$19, ptrType$20, ptrType$21, ptrType$22, sliceType$9, arrayType$1, sliceType$10, structType$1, ptrType$23, chanType$2, chanType$3, ptrType$24, ptrType$25, ptrType$26, ptrType$27, ptrType$28, arrayType$2, arrayType$3, ptrType$29, ptrType$30, ptrType$31, ptrType$32, ptrType$33, ptrType$34, sliceType$11, ptrType$35, sliceType$12, arrayType$4, sliceType$13, ptrType$36, sliceType$14, sliceType$15, ptrType$37, ptrType$38, ptrType$43, mapType, funcType$2, ptrType$44, funcType$3, ptrType$45, mapType$1, ptrType$48, ptrType$49, ptrType$50, ptrType$51, ptrType$52, ptrType$53, funcType$4, ptrType$54, mapType$2, funcType$5, mapType$3, funcType$6, ptrType$58, ptrType$59, ptrType$60, ptrType$61, cookieNameSanitizer, errSeeker, headerNewlineToSpace, headerSorterPool, isTokenTable, reqWriteExcludeHeader, multipartByReader, textprotoReaderPool, respExcludeHeader, crlf, colonSpace, bufioReaderPool, bufioWriter2kPool, bufioWriter2kPool_ptr, bufioWriter4kPool, bufioWriter4kPool_ptr, errTooLarge, extraHeaderKeys, headerContentLength, headerDate, statusMu, statusLines, htmlReplacer, stateName, eofReader, uniqNameNext, sniffSignatures, statusText, suppressedHeaders304, suppressedHeadersNoBody, singleCRLF, doubleCRLF, errTrailerEOF, _map, _key, _map$1, _key$1, _map$2, _key$2, _map$3, _key$3, refererForURL, send, basicAuth, shouldRedirectGet, shouldRedirectPost, Get, defaultCheckRedirect, readSetCookies, readCookies, validCookieDomain, isCookieDomainName, sanitizeCookieName, sanitizeCookieValue, validCookieValueByte, sanitizeCookiePath, validCookiePathByte, sanitizeOrWarn, parseCookieValue, isCookieNameValid, CanonicalHeaderKey, hasToken, isTokenBoundary, isToken, isNotToken, valueOrDefault, ParseHTTPVersion, NewRequest, parseBasicAuth, parseRequestLine, newTextprotoReader, putTextprotoReader, ReadRequest, MaxBytesReader, copyValues, parsePostForm, fixPragmaCacheControl, srcIsRegularFile, bufioWriterPool, newBufioReader, putBufioReader, newBufioWriterSize, putBufioWriter, appendTime, statusLine, validNPN, Error, NotFound, NotFoundHandler, Redirect, htmlEscape, RedirectHandler, NewServeMux, pathMatch, cleanPath, DetectContentType, isWS, newTransferWriter, noBodyExpected, bodyAllowedForStatus, suppressedHeaders, readTransfer, chunked, isIdentity, fixTransferEncoding, fixLength, shouldClose, fixTrailer, seeUpcomingDoubleCRLF, mergeSetHeader, parseContentLength; bufio = $packages["bufio"]; bytes = $packages["bytes"]; gzip = $packages["compress/gzip"]; 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"]; mime = $packages["mime"]; multipart = $packages["mime/multipart"]; net = $packages["net"]; internal = $packages["net/http/internal"]; textproto = $packages["net/textproto"]; url = $packages["net/url"]; os = $packages["os"]; path = $packages["path"]; filepath = $packages["path/filepath"]; runtime = $packages["runtime"]; sort = $packages["sort"]; strconv = $packages["strconv"]; strings = $packages["strings"]; sync = $packages["sync"]; atomic = $packages["sync/atomic"]; time = $packages["time"]; XHRTransport = $pkg.XHRTransport = $newType(0, $kindStruct, "http.XHRTransport", "XHRTransport", "net/http", function(inflight_) { this.$val = this; if (arguments.length === 0) { this.inflight = false; return; } this.inflight = inflight_; }); Client = $pkg.Client = $newType(0, $kindStruct, "http.Client", "Client", "net/http", 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", "RoundTripper", "net/http", null); cancelTimerBody = $pkg.cancelTimerBody = $newType(0, $kindStruct, "http.cancelTimerBody", "cancelTimerBody", "net/http", function(t_, rc_) { this.$val = this; if (arguments.length === 0) { this.t = ptrType$6.nil; this.rc = $ifaceNil; return; } this.t = t_; this.rc = rc_; }); Cookie = $pkg.Cookie = $newType(0, $kindStruct, "http.Cookie", "Cookie", "net/http", 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(); this.RawExpires = ""; this.MaxAge = 0; this.Secure = false; this.HttpOnly = false; this.Raw = ""; this.Unparsed = sliceType.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_; }); Header = $pkg.Header = $newType(4, $kindMap, "http.Header", "Header", "net/http", null); writeStringer = $pkg.writeStringer = $newType(8, $kindInterface, "http.writeStringer", "writeStringer", "net/http", null); stringWriter = $pkg.stringWriter = $newType(0, $kindStruct, "http.stringWriter", "stringWriter", "net/http", function(w_) { this.$val = this; if (arguments.length === 0) { this.w = $ifaceNil; return; } this.w = w_; }); keyValues = $pkg.keyValues = $newType(0, $kindStruct, "http.keyValues", "keyValues", "net/http", function(key_, values_) { this.$val = this; if (arguments.length === 0) { this.key = ""; this.values = sliceType.nil; return; } this.key = key_; this.values = values_; }); headerSorter = $pkg.headerSorter = $newType(0, $kindStruct, "http.headerSorter", "headerSorter", "net/http", function(kvs_) { this.$val = this; if (arguments.length === 0) { this.kvs = sliceType$8.nil; return; } this.kvs = kvs_; }); CookieJar = $pkg.CookieJar = $newType(8, $kindInterface, "http.CookieJar", "CookieJar", "net/http", null); ProtocolError = $pkg.ProtocolError = $newType(0, $kindStruct, "http.ProtocolError", "ProtocolError", "net/http", function(ErrorString_) { this.$val = this; if (arguments.length === 0) { this.ErrorString = ""; return; } this.ErrorString = ErrorString_; }); badStringError = $pkg.badStringError = $newType(0, $kindStruct, "http.badStringError", "badStringError", "net/http", 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", "Request", "net/http", function(Method_, URL_, Proto_, ProtoMajor_, ProtoMinor_, Header_, Body_, ContentLength_, TransferEncoding_, Close_, Host_, Form_, PostForm_, MultipartForm_, Trailer_, RemoteAddr_, RequestURI_, TLS_) { this.$val = this; if (arguments.length === 0) { this.Method = ""; this.URL = ptrType$5.nil; this.Proto = ""; this.ProtoMajor = 0; this.ProtoMinor = 0; this.Header = false; this.Body = $ifaceNil; this.ContentLength = new $Int64(0, 0); this.TransferEncoding = sliceType.nil; this.Close = false; this.Host = ""; this.Form = false; this.PostForm = false; this.MultipartForm = ptrType$13.nil; this.Trailer = false; this.RemoteAddr = ""; this.RequestURI = ""; this.TLS = ptrType$2.nil; return; } this.Method = Method_; this.URL = URL_; 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.Host = Host_; this.Form = Form_; this.PostForm = PostForm_; this.MultipartForm = MultipartForm_; this.Trailer = Trailer_; this.RemoteAddr = RemoteAddr_; this.RequestURI = RequestURI_; this.TLS = TLS_; }); maxBytesReader = $pkg.maxBytesReader = $newType(0, $kindStruct, "http.maxBytesReader", "maxBytesReader", "net/http", function(w_, r_, n_, stopped_) { this.$val = this; if (arguments.length === 0) { this.w = $ifaceNil; this.r = $ifaceNil; this.n = new $Int64(0, 0); this.stopped = false; return; } this.w = w_; this.r = r_; this.n = n_; this.stopped = stopped_; }); Response = $pkg.Response = $newType(0, $kindStruct, "http.Response", "Response", "net/http", function(Status_, StatusCode_, Proto_, ProtoMajor_, ProtoMinor_, Header_, Body_, ContentLength_, TransferEncoding_, Close_, 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.nil; this.Close = false; this.Trailer = false; this.Request = ptrType$1.nil; this.TLS = ptrType$2.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.Trailer = Trailer_; this.Request = Request_; this.TLS = TLS_; }); Handler = $pkg.Handler = $newType(8, $kindInterface, "http.Handler", "Handler", "net/http", null); ResponseWriter = $pkg.ResponseWriter = $newType(8, $kindInterface, "http.ResponseWriter", "ResponseWriter", "net/http", null); conn = $pkg.conn = $newType(0, $kindStruct, "http.conn", "conn", "net/http", function(remoteAddr_, server_, rwc_, w_, werr_, sr_, lr_, buf_, tlsState_, mu_, clientGone_, closeNotifyc_, hijackedv_) { this.$val = this; if (arguments.length === 0) { this.remoteAddr = ""; this.server = ptrType$50.nil; this.rwc = $ifaceNil; this.w = $ifaceNil; this.werr = $ifaceNil; this.sr = new liveSwitchReader.ptr(); this.lr = ptrType$25.nil; this.buf = ptrType$23.nil; this.tlsState = ptrType$2.nil; this.mu = new sync.Mutex.ptr(); this.clientGone = false; this.closeNotifyc = chanType$2.nil; this.hijackedv = false; return; } this.remoteAddr = remoteAddr_; this.server = server_; this.rwc = rwc_; this.w = w_; this.werr = werr_; this.sr = sr_; this.lr = lr_; this.buf = buf_; this.tlsState = tlsState_; this.mu = mu_; this.clientGone = clientGone_; this.closeNotifyc = closeNotifyc_; this.hijackedv = hijackedv_; }); switchWriter = $pkg.switchWriter = $newType(0, $kindStruct, "http.switchWriter", "switchWriter", "net/http", function(Writer_) { this.$val = this; if (arguments.length === 0) { this.Writer = $ifaceNil; return; } this.Writer = Writer_; }); liveSwitchReader = $pkg.liveSwitchReader = $newType(0, $kindStruct, "http.liveSwitchReader", "liveSwitchReader", "net/http", function(Mutex_, r_) { this.$val = this; if (arguments.length === 0) { this.Mutex = new sync.Mutex.ptr(); this.r = $ifaceNil; return; } this.Mutex = Mutex_; this.r = r_; }); chunkWriter = $pkg.chunkWriter = $newType(0, $kindStruct, "http.chunkWriter", "chunkWriter", "net/http", function(res_, header_, wroteHeader_, chunking_) { this.$val = this; if (arguments.length === 0) { this.res = ptrType$20.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", "response", "net/http", function(conn_, req_, wroteHeader_, wroteContinue_, w_, cw_, sw_, handlerHeader_, calledHeader_, written_, contentLength_, status_, closeAfterReply_, requestBodyLimitHit_, handlerDone_, dateBuf_, clenBuf_) { this.$val = this; if (arguments.length === 0) { this.conn = ptrType$26.nil; this.req = ptrType$1.nil; this.wroteHeader = false; this.wroteContinue = false; this.w = ptrType$14.nil; this.cw = new chunkWriter.ptr(); this.sw = ptrType$28.nil; 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.handlerDone = false; this.dateBuf = arrayType$2.zero(); this.clenBuf = arrayType$3.zero(); return; } this.conn = conn_; this.req = req_; this.wroteHeader = wroteHeader_; this.wroteContinue = wroteContinue_; this.w = w_; this.cw = cw_; this.sw = sw_; this.handlerHeader = handlerHeader_; this.calledHeader = calledHeader_; this.written = written_; this.contentLength = contentLength_; this.status = status_; this.closeAfterReply = closeAfterReply_; this.requestBodyLimitHit = requestBodyLimitHit_; this.handlerDone = handlerDone_; this.dateBuf = dateBuf_; this.clenBuf = clenBuf_; }); writerOnly = $pkg.writerOnly = $newType(0, $kindStruct, "http.writerOnly", "writerOnly", "net/http", function(Writer_) { this.$val = this; if (arguments.length === 0) { this.Writer = $ifaceNil; return; } this.Writer = Writer_; }); expectContinueReader = $pkg.expectContinueReader = $newType(0, $kindStruct, "http.expectContinueReader", "expectContinueReader", "net/http", function(resp_, readCloser_, closed_) { this.$val = this; if (arguments.length === 0) { this.resp = ptrType$20.nil; this.readCloser = $ifaceNil; this.closed = false; return; } this.resp = resp_; this.readCloser = readCloser_; this.closed = closed_; }); extraHeader = $pkg.extraHeader = $newType(0, $kindStruct, "http.extraHeader", "extraHeader", "net/http", 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", "closeWriter", "net/http", null); HandlerFunc = $pkg.HandlerFunc = $newType(4, $kindFunc, "http.HandlerFunc", "HandlerFunc", "net/http", null); redirectHandler = $pkg.redirectHandler = $newType(0, $kindStruct, "http.redirectHandler", "redirectHandler", "net/http", 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", "ServeMux", "net/http", function(mu_, m_, hosts_) { this.$val = this; if (arguments.length === 0) { this.mu = new sync.RWMutex.ptr(); this.m = false; this.hosts = false; return; } this.mu = mu_; this.m = m_; this.hosts = hosts_; }); muxEntry = $pkg.muxEntry = $newType(0, $kindStruct, "http.muxEntry", "muxEntry", "net/http", 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", "Server", "net/http", function(Addr_, Handler_, ReadTimeout_, WriteTimeout_, MaxHeaderBytes_, TLSConfig_, TLSNextProto_, ConnState_, ErrorLog_, disableKeepAlives_) { this.$val = this; if (arguments.length === 0) { this.Addr = ""; this.Handler = $ifaceNil; this.ReadTimeout = new time.Duration(0, 0); this.WriteTimeout = new time.Duration(0, 0); this.MaxHeaderBytes = 0; this.TLSConfig = ptrType$31.nil; this.TLSNextProto = false; this.ConnState = $throwNilPointerError; this.ErrorLog = ptrType$32.nil; this.disableKeepAlives = 0; return; } this.Addr = Addr_; this.Handler = Handler_; this.ReadTimeout = ReadTimeout_; this.WriteTimeout = WriteTimeout_; this.MaxHeaderBytes = MaxHeaderBytes_; this.TLSConfig = TLSConfig_; this.TLSNextProto = TLSNextProto_; this.ConnState = ConnState_; this.ErrorLog = ErrorLog_; this.disableKeepAlives = disableKeepAlives_; }); ConnState = $pkg.ConnState = $newType(4, $kindInt, "http.ConnState", "ConnState", "net/http", null); serverHandler = $pkg.serverHandler = $newType(0, $kindStruct, "http.serverHandler", "serverHandler", "net/http", function(srv_) { this.$val = this; if (arguments.length === 0) { this.srv = ptrType$50.nil; return; } this.srv = srv_; }); tcpKeepAliveListener = $pkg.tcpKeepAliveListener = $newType(0, $kindStruct, "http.tcpKeepAliveListener", "tcpKeepAliveListener", "net/http", function(TCPListener_) { this.$val = this; if (arguments.length === 0) { this.TCPListener = ptrType$33.nil; return; } this.TCPListener = TCPListener_; }); globalOptionsHandler = $pkg.globalOptionsHandler = $newType(0, $kindStruct, "http.globalOptionsHandler", "globalOptionsHandler", "net/http", function() { this.$val = this; if (arguments.length === 0) { return; } }); eofReaderWithWriteTo = $pkg.eofReaderWithWriteTo = $newType(0, $kindStruct, "http.eofReaderWithWriteTo", "eofReaderWithWriteTo", "net/http", function() { this.$val = this; if (arguments.length === 0) { return; } }); initNPNRequest = $pkg.initNPNRequest = $newType(0, $kindStruct, "http.initNPNRequest", "initNPNRequest", "net/http", function(c_, h_) { this.$val = this; if (arguments.length === 0) { this.c = ptrType$30.nil; this.h = new serverHandler.ptr(); return; } this.c = c_; this.h = h_; }); checkConnErrorWriter = $pkg.checkConnErrorWriter = $newType(0, $kindStruct, "http.checkConnErrorWriter", "checkConnErrorWriter", "net/http", function(c_) { this.$val = this; if (arguments.length === 0) { this.c = ptrType$26.nil; return; } this.c = c_; }); sniffSig = $pkg.sniffSig = $newType(8, $kindInterface, "http.sniffSig", "sniffSig", "net/http", null); exactSig = $pkg.exactSig = $newType(0, $kindStruct, "http.exactSig", "exactSig", "net/http", 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", "maskedSig", "net/http", 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", "htmlSig", "net/http", null); textSig = $pkg.textSig = $newType(4, $kindInt, "http.textSig", "textSig", "net/http", null); errorReader = $pkg.errorReader = $newType(0, $kindStruct, "http.errorReader", "errorReader", "net/http", function(err_) { this.$val = this; if (arguments.length === 0) { this.err = $ifaceNil; return; } this.err = err_; }); transferWriter = $pkg.transferWriter = $newType(0, $kindStruct, "http.transferWriter", "transferWriter", "net/http", function(Method_, Body_, BodyCloser_, ResponseToHEAD_, ContentLength_, Close_, TransferEncoding_, Trailer_) { 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.nil; this.Trailer = false; 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_; }); transferReader = $pkg.transferReader = $newType(0, $kindStruct, "http.transferReader", "transferReader", "net/http", 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.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", "body", "net/http", function(src_, hdr_, r_, closing_, mu_, closed_) { this.$val = this; if (arguments.length === 0) { this.src = $ifaceNil; this.hdr = $ifaceNil; this.r = ptrType$19.nil; this.closing = false; this.mu = new sync.Mutex.ptr(); this.closed = false; return; } this.src = src_; this.hdr = hdr_; this.r = r_; this.closing = closing_; this.mu = mu_; this.closed = closed_; }); bodyLocked = $pkg.bodyLocked = $newType(0, $kindStruct, "http.bodyLocked", "bodyLocked", "net/http", function(b_) { this.$val = this; if (arguments.length === 0) { this.b = ptrType$61.nil; return; } this.b = b_; }); canceler = $newType(8, $kindInterface, "http.canceler", "canceler", "net/http", null); sliceType = $sliceType($String); sliceType$1 = $sliceType($emptyInterface); sliceType$2 = $sliceType($Uint8); sliceType$3 = $sliceType(sliceType$2); structType = $structType([{prop: "eofReaderWithWriteTo", name: "", pkg: "net/http", typ: eofReaderWithWriteTo, tag: ""}, {prop: "Closer", name: "", pkg: "", typ: io.Closer, tag: ""}]); sliceType$4 = $sliceType(sniffSig); ptrType = $ptrType(Response); chanType = $chanType(ptrType, false, false); chanType$1 = $chanType($error, false, false); ptrType$1 = $ptrType(Request); ptrType$2 = $ptrType(tls.ConnectionState); funcType = $funcType([], [], false); ptrType$3 = $ptrType(js.Object); funcType$1 = $funcType([ptrType$3], [], false); ptrType$4 = $ptrType(url.Userinfo); ptrType$5 = $ptrType(url.URL); sliceType$5 = $sliceType(ptrType$1); ptrType$6 = $ptrType(time.Timer); ptrType$7 = $ptrType(Cookie); sliceType$6 = $sliceType(ptrType$7); ptrType$8 = $ptrType(time.Location); sliceType$8 = $sliceType(keyValues); ptrType$11 = $ptrType(headerSorter); ptrType$12 = $ptrType(multipart.Reader); ptrType$13 = $ptrType(multipart.Form); ptrType$14 = $ptrType(bufio.Writer); ptrType$15 = $ptrType(bytes.Buffer); ptrType$16 = $ptrType(bytes.Reader); ptrType$17 = $ptrType(strings.Reader); ptrType$18 = $ptrType(textproto.Reader); ptrType$19 = $ptrType(bufio.Reader); ptrType$20 = $ptrType(response); ptrType$21 = $ptrType(maxBytesReader); ptrType$22 = $ptrType(multipart.FileHeader); sliceType$9 = $sliceType(ptrType$22); arrayType$1 = $arrayType($Uint8, 1); sliceType$10 = $sliceType(io.Reader); structType$1 = $structType([{prop: "Reader", name: "", pkg: "", typ: io.Reader, tag: ""}, {prop: "Closer", name: "", pkg: "", typ: io.Closer, tag: ""}]); ptrType$23 = $ptrType(bufio.ReadWriter); chanType$2 = $chanType($Bool, false, false); chanType$3 = $chanType($Bool, false, true); ptrType$24 = $ptrType(os.File); ptrType$25 = $ptrType(io.LimitedReader); ptrType$26 = $ptrType(conn); ptrType$27 = $ptrType(sync.Pool); ptrType$28 = $ptrType(switchWriter); arrayType$2 = $arrayType($Uint8, 29); arrayType$3 = $arrayType($Uint8, 10); ptrType$29 = $ptrType(expectContinueReader); ptrType$30 = $ptrType(tls.Conn); ptrType$31 = $ptrType(tls.Config); ptrType$32 = $ptrType(log.Logger); ptrType$33 = $ptrType(net.TCPListener); ptrType$34 = $ptrType($Int32); sliceType$11 = $sliceType(tls.Certificate); ptrType$35 = $ptrType($packages["crypto/x509"].CertPool); sliceType$12 = $sliceType($Uint16); arrayType$4 = $arrayType($Uint8, 32); sliceType$13 = $sliceType(tls.CurveID); ptrType$36 = $ptrType($packages["crypto/x509"].Certificate); sliceType$14 = $sliceType(ptrType$36); sliceType$15 = $sliceType(sliceType$14); ptrType$37 = $ptrType(transferWriter); ptrType$38 = $ptrType(Header); ptrType$43 = $ptrType(XHRTransport); mapType = $mapType(ptrType$1, ptrType$3); funcType$2 = $funcType([$Int], [$Bool], false); ptrType$44 = $ptrType(Client); funcType$3 = $funcType([ptrType$1, sliceType$5], [$error], false); ptrType$45 = $ptrType(cancelTimerBody); mapType$1 = $mapType($String, $Bool); ptrType$48 = $ptrType(ProtocolError); ptrType$49 = $ptrType(badStringError); ptrType$50 = $ptrType(Server); ptrType$51 = $ptrType(liveSwitchReader); ptrType$52 = $ptrType(chunkWriter); ptrType$53 = $ptrType(redirectHandler); funcType$4 = $funcType([ResponseWriter, ptrType$1], [], false); ptrType$54 = $ptrType(ServeMux); mapType$2 = $mapType($String, muxEntry); funcType$5 = $funcType([ptrType$50, ptrType$30, Handler], [], false); mapType$3 = $mapType($String, funcType$5); funcType$6 = $funcType([net.Conn, ConnState], [], false); ptrType$58 = $ptrType(exactSig); ptrType$59 = $ptrType(maskedSig); ptrType$60 = $ptrType(errorReader); ptrType$61 = $ptrType(body); XHRTransport.ptr.prototype.RoundTrip = function(req) { var $ptr, _arg, _arg$1, _entry, _i, _i$1, _key$5, _key$6, _keys, _map$5, _r, _r$1, _ref, _ref$1, _selection, _tuple, body$1, err, err$1, errCh, key, req, resp, respCh, t, value, values, xhr, xhrConstructor, $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$5 = $f._key$5; _key$6 = $f._key$6; _keys = $f._keys; _map$5 = $f._map$5; _r = $f._r; _r$1 = $f._r$1; _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; xhrConstructor = $f.xhrConstructor; $s = $f.$s; $deferred = $f.$deferred; $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; xhrConstructor = $global.XMLHttpRequest; if (xhrConstructor === undefined) { return [ptrType.nil, errors.New("net/http: XMLHttpRequest not available")]; } xhr[0] = new (xhrConstructor)(); xhr[0].responseType = $externalize("arraybuffer", $String); if (t.inflight === false) { t.inflight = (_map$5 = new $Map(), _map$5); } _key$6 = req[0]; (t.inflight || $throwRuntimeError("assignment to entry in nil map"))[_key$6.$key()] = { k: _key$6, v: xhr[0] }; $deferred.push([function(_arg, _arg$1) { delete _arg[_arg$1.$key()]; }, [t.inflight, req[0]]]); respCh[0] = new chanType(0); errCh[0] = new chanType$1(0); xhr[0].onload = $externalize((function(errCh, req, respCh, xhr) { return function $b() { var $ptr, _r, _ref, _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; _r = $f._r; _ref = $f._ref; _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); _ref = req[0].Method; if (_ref === "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.nil, false, false, req[0], ptrType$2.nil)); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r = _r; $f._ref = _ref; $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); 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; case -1: } 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$1); 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; case -1: } 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$1); xhr[0].open($externalize(req[0].Method, $String), $externalize(req[0].URL.String(), $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") : _ref$1.$array[_ref$1.$offset + _i$1]); xhr[0].setRequestHeader($externalize(key, $String), $externalize(value, $String)); _i$1++; } _i++; } body$1 = sliceType$2.nil; /* */ if (!($interfaceIsEqual(req[0].Body, $ifaceNil))) { $s = 1; continue; } /* */ $s = 2; continue; /* if (!($interfaceIsEqual(req[0].Body, $ifaceNil))) { */ case 1: err = $ifaceNil; _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))) { return [ptrType.nil, err]; } /* } */ case 2: xhr[0].send($externalize(body$1, sliceType$2)); _r$1 = $select([[respCh[0]], [errCh[0]]]); /* */ $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) { resp = _selection[1][0]; return [resp, $ifaceNil]; } else if (_selection[0] === 1) { err$1 = _selection[1][0]; return [ptrType.nil, err$1]; } /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; return [ptrType.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$5 = _key$5; $f._key$6 = _key$6; $f._keys = _keys; $f._map$5 = _map$5; $f._r = _r; $f._r$1 = _r$1; $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.xhrConstructor = xhrConstructor; $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[req.$key()], _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$4.nil)) { auth = lastReq.User.String() + "@"; referer = strings.Replace(referer, auth, "", 1); } return referer; }; Client.ptr.prototype.send = function(req) { var $ptr, _i, _r, _r$1, _r$2, _ref, _tuple, c, cookie, 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; _tuple = $f._tuple; c = $f.c; cookie = $f.cookie; 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: 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") : _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()); /* */ $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]; err = _tuple[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { return [ptrType.nil, 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: return [resp, err]; /* */ $s = -1; case -1: } 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._tuple = _tuple; $f.c = c; $f.cookie = cookie; $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) { return this.$val.send(req); }; Client.ptr.prototype.Do = function(req) { var $ptr, _r, _r$1, _r$2, _tuple, _tuple$1, _tuple$2, c, err, req, resp, $s, $r; /* */ $s = 0; var $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; c = $f.c; err = $f.err; req = $f.req; resp = $f.resp; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: resp = ptrType.nil; err = $ifaceNil; c = this; /* */ if (req.Method === "GET" || req.Method === "HEAD") { $s = 1; continue; } /* */ $s = 2; continue; /* if (req.Method === "GET" || req.Method === "HEAD") { */ case 1: _r = c.doFollowingRedirects(req, shouldRedirectGet); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _tuple = _r; resp = _tuple[0]; err = _tuple[1]; return [resp, err]; /* } */ case 2: /* */ if (req.Method === "POST" || req.Method === "PUT") { $s = 4; continue; } /* */ $s = 5; continue; /* if (req.Method === "POST" || req.Method === "PUT") { */ case 4: _r$1 = c.doFollowingRedirects(req, shouldRedirectPost); /* */ $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; resp = _tuple$1[0]; err = _tuple$1[1]; return [resp, err]; /* } */ case 5: _r$2 = c.send(req); /* */ $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; resp = _tuple$2[0]; err = _tuple$2[1]; return [resp, err]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Client.ptr.prototype.Do }; } $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.c = c; $f.err = err; $f.req = req; $f.resp = resp; $f.$s = $s; $f.$r = $r; return $f; }; Client.prototype.Do = function(req) { return this.$val.Do(req); }; 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(req, t) { var $ptr, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, err, password, req, resp, t, 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$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; err = $f.err; password = $f.password; req = $f.req; resp = $f.resp; t = $f.t; u = $f.u; username = $f.username; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: resp = ptrType.nil; err = $ifaceNil; /* */ if ($interfaceIsEqual(t, $ifaceNil)) { $s = 1; continue; } /* */ $s = 2; continue; /* if ($interfaceIsEqual(t, $ifaceNil)) { */ case 1: $r = req.closeBody(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } _tmp = ptrType.nil; _tmp$1 = errors.New("http: no Client.Transport or DefaultTransport"); resp = _tmp; err = _tmp$1; return [resp, err]; /* } */ case 2: /* */ if (req.URL === ptrType$5.nil) { $s = 4; continue; } /* */ $s = 5; continue; /* if (req.URL === ptrType$5.nil) { */ case 4: $r = req.closeBody(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } _tmp$2 = ptrType.nil; _tmp$3 = errors.New("http: nil Request.URL"); resp = _tmp$2; err = _tmp$3; return [resp, err]; /* } */ case 5: /* */ if (!(req.RequestURI === "")) { $s = 7; continue; } /* */ $s = 8; continue; /* if (!(req.RequestURI === "")) { */ case 7: $r = req.closeBody(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } _tmp$4 = ptrType.nil; _tmp$5 = errors.New("http: Request.RequestURI can't be set in client requests."); resp = _tmp$4; err = _tmp$5; return [resp, err]; /* } */ case 8: if (req.Header === false) { req.Header = new $Map(); } u = req.URL.User; if (!(u === ptrType$4.nil)) { username = u.Username(); _tuple = u.Password(); password = _tuple[0]; new Header(req.Header).Set("Authorization", "Basic " + basicAuth(username, password)); } _r = t.RoundTrip(req); /* */ $s = 10; case 10: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _tuple$1 = _r; resp = _tuple$1[0]; err = _tuple$1[1]; /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 11; continue; } /* */ $s = 12; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 11: /* */ if (!(resp === ptrType.nil)) { $s = 13; continue; } /* */ $s = 14; continue; /* if (!(resp === ptrType.nil)) { */ case 13: $r = log.Printf("RoundTripper returned a response & error; ignoring response", new sliceType$1([])); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 14: _tmp$6 = ptrType.nil; _tmp$7 = err; resp = _tmp$6; err = _tmp$7; return [resp, err]; /* } */ case 12: _tmp$8 = resp; _tmp$9 = $ifaceNil; resp = _tmp$8; err = _tmp$9; return [resp, err]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: send }; } $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._tuple$1 = _tuple$1; $f.err = err; $f.password = password; $f.req = req; $f.resp = resp; $f.t = t; $f.u = u; $f.username = username; $f.$s = $s; $f.$r = $r; return $f; }; basicAuth = function(username, password) { var $ptr, auth, password, username; auth = username + ":" + password; return base64.StdEncoding.EncodeToString(new sliceType$2($stringToBytes(auth))); }; shouldRedirectGet = function(statusCode) { var $ptr, _ref, statusCode; _ref = statusCode; if (_ref === 301 || _ref === 302 || _ref === 303 || _ref === 307) { return true; } return false; }; shouldRedirectPost = function(statusCode) { var $ptr, _ref, statusCode; _ref = statusCode; if (_ref === 302 || _ref === 303) { return true; } return false; }; 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.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]; return [resp, err]; /* */ $s = -1; case -1: } 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.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.nil; _tmp$1 = err; resp = _tmp; err = _tmp$1; return [resp, err]; } _r$1 = c.doFollowingRedirects(req, shouldRedirectGet); /* */ $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]; return [resp, err]; /* */ $s = -1; case -1: } 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); }; Client.ptr.prototype.doFollowingRedirects = function(ireq, shouldRedirect) { 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$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, base, c, err, ireq, lastReq, method, nreq, ok, redirect, redirectChecker, redirectFailed, ref, req, reqmu, resp, shouldRedirect, timer, tr, urlErr, urlStr, via, 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$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$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; base = $f.base; c = $f.c; err = $f.err; ireq = $f.ireq; lastReq = $f.lastReq; method = $f.method; nreq = $f.nreq; ok = $f.ok; redirect = $f.redirect; redirectChecker = $f.redirectChecker; redirectFailed = $f.redirectFailed; ref = $f.ref; req = $f.req; reqmu = $f.reqmu; resp = $f.resp; shouldRedirect = $f.shouldRedirect; timer = $f.timer; tr = $f.tr; urlErr = $f.urlErr; urlStr = $f.urlStr; via = $f.via; 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: req = [req]; reqmu = [reqmu]; tr = [tr]; resp = ptrType.nil; err = $ifaceNil; c = this; base = ptrType$5.nil; redirectChecker = c.CheckRedirect; if (redirectChecker === $throwNilPointerError) { redirectChecker = defaultCheckRedirect; } via = sliceType$5.nil; /* */ if (ireq.URL === ptrType$5.nil) { $s = 1; continue; } /* */ $s = 2; continue; /* if (ireq.URL === ptrType$5.nil) { */ case 1: $r = ireq.closeBody(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } _tmp = ptrType.nil; _tmp$1 = errors.New("http: nil Request.URL"); resp = _tmp; err = _tmp$1; return [resp, err]; /* } */ case 2: reqmu[0] = $clone(new sync.Mutex.ptr(), sync.Mutex); req[0] = ireq; timer = ptrType$6.nil; /* */ if ((x = c.Timeout, (x.$high > 0 || (x.$high === 0 && x.$low > 0)))) { $s = 4; continue; } /* */ $s = 5; continue; /* if ((x = c.Timeout, (x.$high > 0 || (x.$high === 0 && x.$low > 0)))) { */ case 4: _tuple = $assertType(c.transport(), canceler, true); tr[0] = _tuple[0]; ok = _tuple[1]; /* */ if (!ok) { $s = 6; continue; } /* */ $s = 7; continue; /* if (!ok) { */ case 6: _r = fmt.Errorf("net/http: Client Transport of type %T doesn't support CancelRequest; Timeout not supported", new sliceType$1([c.transport()])); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _tmp$2 = ptrType.nil; _tmp$3 = _r; resp = _tmp$2; err = _tmp$3; return [resp, err]; /* } */ case 7: timer = time.AfterFunc(c.Timeout, (function(req, reqmu, tr) { return function $b() { var $ptr, $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; $deferred = $f.$deferred; $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 = reqmu[0].Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $deferred.push([$methodVal(reqmu[0], "Unlock"), []]); $r = tr[0].CancelRequest(req[0]); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } }; })(req, reqmu, tr)); /* } */ case 5: urlStr = ""; redirectFailed = false; redirect = 0; /* while (true) { */ case 9: /* */ if (!((redirect === 0))) { $s = 11; continue; } /* */ $s = 12; continue; /* if (!((redirect === 0))) { */ case 11: nreq = new Request.ptr(); nreq.Method = ireq.Method; if (ireq.Method === "POST" || ireq.Method === "PUT") { nreq.Method = "GET"; } nreq.Header = new $Map(); _r$1 = base.Parse(urlStr); /* */ $s = 13; case 13: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } _tuple$1 = _r$1; nreq.URL = _tuple$1[0]; err = _tuple$1[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { /* break; */ $s = 10; continue; } /* */ if (via.$length > 0) { $s = 14; continue; } /* */ $s = 15; continue; /* if (via.$length > 0) { */ case 14: lastReq = (x$1 = via.$length - 1 >> 0, ((x$1 < 0 || x$1 >= via.$length) ? $throwRuntimeError("index out of range") : via.$array[via.$offset + x$1])); ref = refererForURL(lastReq.URL, nreq.URL); if (!(ref === "")) { new Header(nreq.Header).Set("Referer", ref); } _r$2 = redirectChecker(nreq, via); /* */ $s = 16; case 16: 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))) { redirectFailed = true; /* break; */ $s = 10; continue; } /* } */ case 15: $r = reqmu[0].Lock(); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } req[0] = nreq; $r = reqmu[0].Unlock(); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 12: urlStr = req[0].URL.String(); _r$3 = c.send(req[0]); /* */ $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; resp = _tuple$2[0]; err = _tuple$2[1]; /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 20; continue; } /* */ $s = 21; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 20: /* break; */ $s = 10; continue; /* } */ case 21: _r$4 = shouldRedirect(resp.StatusCode); /* */ $s = 24; case 24: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } /* */ if (_r$4) { $s = 22; continue; } /* */ $s = 23; continue; /* if (_r$4) { */ case 22: /* */ if ((x$2 = resp.ContentLength, (x$2.$high === -1 && x$2.$low === 4294967295)) || (x$3 = resp.ContentLength, (x$3.$high < 0 || (x$3.$high === 0 && x$3.$low <= 2048)))) { $s = 25; continue; } /* */ $s = 26; continue; /* if ((x$2 = resp.ContentLength, (x$2.$high === -1 && x$2.$low === 4294967295)) || (x$3 = resp.ContentLength, (x$3.$high < 0 || (x$3.$high === 0 && x$3.$low <= 2048)))) { */ case 25: _r$5 = io.CopyN(ioutil.Discard, resp.Body, new $Int64(0, 2048)); /* */ $s = 27; case 27: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } _r$5; /* } */ case 26: _r$6 = resp.Body.Close(); /* */ $s = 28; case 28: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } _r$6; urlStr = new Header(resp.Header).Get("Location"); /* */ if (urlStr === "") { $s = 29; continue; } /* */ $s = 30; continue; /* if (urlStr === "") { */ case 29: _r$7 = fmt.Sprintf("%d response missing Location header", new sliceType$1([new $Int(resp.StatusCode)])); /* */ $s = 31; case 31: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } _r$8 = errors.New(_r$7); /* */ $s = 32; case 32: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } err = _r$8; /* break; */ $s = 10; continue; /* } */ case 30: base = req[0].URL; via = $append(via, req[0]); redirect = redirect + (1) >> 0; /* continue; */ $s = 9; continue; /* } */ case 23: if (!(timer === ptrType$6.nil)) { resp.Body = new cancelTimerBody.ptr(timer, resp.Body); } _tmp$4 = resp; _tmp$5 = $ifaceNil; resp = _tmp$4; err = _tmp$5; return [resp, err]; /* } */ $s = 9; continue; case 10: method = ireq.Method; _r$9 = strings.ToLower(method.substring(1)); /* */ $s = 33; case 33: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } urlErr = new url.Error.ptr(method.substring(0, 1) + _r$9, urlStr, err); if (redirectFailed) { _tmp$6 = resp; _tmp$7 = urlErr; resp = _tmp$6; err = _tmp$7; return [resp, err]; } /* */ if (!(resp === ptrType.nil)) { $s = 34; continue; } /* */ $s = 35; continue; /* if (!(resp === ptrType.nil)) { */ case 34: _r$10 = resp.Body.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; /* } */ case 35: _tmp$8 = ptrType.nil; _tmp$9 = urlErr; resp = _tmp$8; err = _tmp$9; return [resp, err]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Client.ptr.prototype.doFollowingRedirects }; } $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$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.base = base; $f.c = c; $f.err = err; $f.ireq = ireq; $f.lastReq = lastReq; $f.method = method; $f.nreq = nreq; $f.ok = ok; $f.redirect = redirect; $f.redirectChecker = redirectChecker; $f.redirectFailed = redirectFailed; $f.ref = ref; $f.req = req; $f.reqmu = reqmu; $f.resp = resp; $f.shouldRedirect = shouldRedirect; $f.timer = timer; $f.tr = tr; $f.urlErr = urlErr; $f.urlStr = urlStr; $f.via = via; $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; }; Client.prototype.doFollowingRedirects = function(ireq, shouldRedirect) { return this.$val.doFollowingRedirects(ireq, shouldRedirect); }; 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, bodyType, body$1) { var $ptr, _r, _r$1, _tmp, _tmp$1, _tuple, _tuple$1, body$1, bodyType, 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; body$1 = $f.body$1; bodyType = $f.bodyType; 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.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.nil; _tmp$1 = err; resp = _tmp; err = _tmp$1; return [resp, err]; } new Header(req.Header).Set("Content-Type", bodyType); _r$1 = c.doFollowingRedirects(req, shouldRedirectPost); /* */ $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]; return [resp, err]; /* */ $s = -1; case -1: } 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.bodyType = bodyType; $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.Post = function(url$1, bodyType, body$1) { return this.$val.Post(url$1, bodyType, 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.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]; return [resp, err]; /* */ $s = -1; case -1: } 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.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.nil; _tmp$1 = err; resp = _tmp; err = _tmp$1; return [resp, err]; } _r$1 = c.doFollowingRedirects(req, shouldRedirectGet); /* */ $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]; return [resp, err]; /* */ $s = -1; case -1: } 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, _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; _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, io.EOF)) { b.t.Stop(); } return [n, err]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: cancelTimerBody.ptr.prototype.Read }; } $f.$ptr = $ptr; $f._r = _r; $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; b.t.Stop(); return err; /* */ $s = -1; case -1: } 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(); }; readSetCookies = function(h) { var $ptr, _entry, _i, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _ref, _ref$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, attr, c, cookies, err, err$1, exptime, h, i, j, j$1, line, lowerAttr, name, parts, secs, success, val, 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; _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; _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 = $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; 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; parts = $f.parts; secs = $f.secs; success = $f.success; val = $f.val; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: cookies = new sliceType$6([]); _ref = (_entry = h["Set-Cookie"], _entry !== undefined ? _entry.v : sliceType.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") : _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") : parts.$array[parts.$offset + 0]) === "") { $s = 5; continue; } /* */ $s = 6; continue; /* if ((parts.$length === 1) && (0 >= parts.$length ? $throwRuntimeError("index out of range") : 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") : 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") : parts.$array[parts.$offset + 0] = _r$2); j = strings.Index((0 >= parts.$length ? $throwRuntimeError("index out of range") : 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 = (0 >= parts.$length ? $throwRuntimeError("index out of range") : parts.$array[parts.$offset + 0]).substring(0, j); _tmp$1 = (0 >= parts.$length ? $throwRuntimeError("index out of range") : parts.$array[parts.$offset + 0]).substring((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]; success = _tuple[1]; /* */ if (!success) { $s = 13; continue; } /* */ $s = 14; continue; /* if (!success) { */ case 13: _i++; /* continue; */ $s = 1; continue; /* } */ case 14: c = new Cookie.ptr(name, value, "", "", new time.Time.ptr(), "", 0, false, false, line, sliceType.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") : 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") : parts.$array[parts.$offset + i] = _r$4); /* */ if (((i < 0 || i >= parts.$length) ? $throwRuntimeError("index out of range") : parts.$array[parts.$offset + i]).length === 0) { $s = 18; continue; } /* */ $s = 19; continue; /* if (((i < 0 || i >= parts.$length) ? $throwRuntimeError("index out of range") : 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") : parts.$array[parts.$offset + i]); _tmp$3 = ""; attr = _tmp$2; val = _tmp$3; j$1 = strings.Index(attr, "="); if (j$1 >= 0) { _tmp$4 = attr.substring(0, j$1); _tmp$5 = attr.substring((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]; success = _tuple$1[1]; /* */ if (!success) { $s = 21; continue; } /* */ $s = 22; continue; /* if (!success) { */ case 21: c.Unparsed = $append(c.Unparsed, ((i < 0 || i >= parts.$length) ? $throwRuntimeError("index out of range") : parts.$array[parts.$offset + i])); i = i + (1) >> 0; /* continue; */ $s = 15; continue; /* } */ case 22: _ref$1 = lowerAttr; /* */ if (_ref$1 === "secure") { $s = 23; continue; } /* */ if (_ref$1 === "httponly") { $s = 24; continue; } /* */ if (_ref$1 === "domain") { $s = 25; continue; } /* */ if (_ref$1 === "max-age") { $s = 26; continue; } /* */ if (_ref$1 === "expires") { $s = 27; continue; } /* */ if (_ref$1 === "path") { $s = 28; continue; } /* */ $s = 29; continue; /* switch (0) { default: if (_ref$1 === "secure") { */ case 23: c.Secure = true; i = i + (1) >> 0; /* continue; */ $s = 15; continue; $s = 29; continue; /* } else if (_ref$1 === "httponly") { */ case 24: c.HttpOnly = true; i = i + (1) >> 0; /* continue; */ $s = 15; continue; $s = 29; continue; /* } else if (_ref$1 === "domain") { */ case 25: c.Domain = val; i = i + (1) >> 0; /* continue; */ $s = 15; continue; $s = 29; continue; /* } else if (_ref$1 === "max-age") { */ case 26: _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 = 29; continue; } if (secs <= 0) { c.MaxAge = -1; } else { c.MaxAge = secs; } i = i + (1) >> 0; /* continue; */ $s = 15; continue; $s = 29; continue; /* } else if (_ref$1 === "expires") { */ case 27: c.RawExpires = val; _r$6 = time.Parse("Mon, 02 Jan 2006 15:04:05 MST", val); /* */ $s = 30; case 30: 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 = 31; continue; } /* */ $s = 32; continue; /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 31: _r$7 = time.Parse("Mon, 02-Jan-2006 15:04:05 MST", val); /* */ $s = 33; case 33: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } _tuple$4 = _r$7; $copy(exptime, _tuple$4[0], time.Time); err$1 = _tuple$4[1]; if (!($interfaceIsEqual(err$1, $ifaceNil))) { $copy(c.Expires, new time.Time.ptr(new $Int64(0, 0), 0, ptrType$8.nil), time.Time); /* break; */ $s = 29; continue; } /* } */ case 32: $copy(c.Expires, exptime.UTC(), time.Time); i = i + (1) >> 0; /* continue; */ $s = 15; continue; $s = 29; continue; /* } else if (_ref$1 === "path") { */ case 28: c.Path = val; i = i + (1) >> 0; /* continue; */ $s = 15; continue; /* } } */ case 29: c.Unparsed = $append(c.Unparsed, ((i < 0 || i >= parts.$length) ? $throwRuntimeError("index out of range") : parts.$array[parts.$offset + i])); i = i + (1) >> 0; /* } */ $s = 15; continue; case 16: cookies = $append(cookies, c); _i++; /* } */ $s = 1; continue; case 2: return cookies; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: readSetCookies }; } $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._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$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.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.parts = parts; $f.secs = secs; $f.success = success; $f.val = val; $f.value = value; $f.$s = $s; $f.$r = $r; return $f; }; Cookie.ptr.prototype.String = function() { var $ptr, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _r, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, b, c, d, 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; _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$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; b = $f.b; c = $f.c; d = $f.d; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: b = [b]; c = this; b[0] = $clone(new bytes.Buffer.ptr(), bytes.Buffer); _arg = b[0]; _r = sanitizeCookieName(c.Name); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _arg$1 = 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$2 = new $String(_r$1); _r$2 = fmt.Fprintf(_arg, "%s=%s", new sliceType$1([_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; } _r$2; /* */ if (c.Path.length > 0) { $s = 4; continue; } /* */ $s = 5; continue; /* if (c.Path.length > 0) { */ case 4: _arg$3 = b[0]; _r$3 = sanitizeCookiePath(c.Path); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } _arg$4 = new $String(_r$3); _r$4 = fmt.Fprintf(_arg$3, "; Path=%s", new sliceType$1([_arg$4])); /* */ $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 5: /* */ if (c.Domain.length > 0) { $s = 8; continue; } /* */ $s = 9; continue; /* if (c.Domain.length > 0) { */ case 8: /* */ if (validCookieDomain(c.Domain)) { $s = 10; continue; } /* */ $s = 11; continue; /* if (validCookieDomain(c.Domain)) { */ case 10: d = c.Domain; if (d.charCodeAt(0) === 46) { d = d.substring(1); } _r$5 = fmt.Fprintf(b[0], "; Domain=%s", new sliceType$1([new $String(d)])); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } _r$5; $s = 12; continue; /* } else { */ case 11: $r = log.Printf("net/http: invalid Cookie.Domain %q; dropping domain attribute", new sliceType$1([new $String(c.Domain)])); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 12: /* } */ case 9: /* */ if ((x = c.Expires.Unix(), (x.$high > 0 || (x.$high === 0 && x.$low > 0)))) { $s = 15; continue; } /* */ $s = 16; continue; /* if ((x = c.Expires.Unix(), (x.$high > 0 || (x.$high === 0 && x.$low > 0)))) { */ case 15: _arg$5 = b[0]; _r$6 = c.Expires.UTC().Format("Mon, 02 Jan 2006 15:04:05 MST"); /* */ $s = 17; case 17: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } _arg$6 = new $String(_r$6); _r$7 = fmt.Fprintf(_arg$5, "; Expires=%s", new sliceType$1([_arg$6])); /* */ $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 16: /* */ if (c.MaxAge > 0) { $s = 19; continue; } /* */ if (c.MaxAge < 0) { $s = 20; continue; } /* */ $s = 21; continue; /* if (c.MaxAge > 0) { */ case 19: _r$8 = fmt.Fprintf(b[0], "; Max-Age=%d", new sliceType$1([new $Int(c.MaxAge)])); /* */ $s = 22; case 22: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } _r$8; $s = 21; continue; /* } else if (c.MaxAge < 0) { */ case 20: _r$9 = fmt.Fprintf(b[0], "; Max-Age=0", new sliceType$1([])); /* */ $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 21: /* */ if (c.HttpOnly) { $s = 24; continue; } /* */ $s = 25; continue; /* if (c.HttpOnly) { */ case 24: _r$10 = fmt.Fprintf(b[0], "; HttpOnly", new sliceType$1([])); /* */ $s = 26; case 26: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } _r$10; /* } */ case 25: /* */ if (c.Secure) { $s = 27; continue; } /* */ $s = 28; continue; /* if (c.Secure) { */ case 27: _r$11 = fmt.Fprintf(b[0], "; Secure", new sliceType$1([])); /* */ $s = 29; case 29: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } _r$11; /* } */ case 28: return b[0].String(); /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Cookie.ptr.prototype.String }; } $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._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.b = b; $f.c = c; $f.d = d; $f.x = x; $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, parsedPairs, parts, success, 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; parsedPairs = $f.parsedPairs; parts = $f.parts; success = $f.success; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: cookies = new sliceType$6([]); _tuple = (_entry = h["Cookie"], _entry !== undefined ? [_entry.v, true] : [sliceType.nil, false]); lines = _tuple[0]; ok = _tuple[1]; if (!ok) { return cookies; } _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") : _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") : parts.$array[parts.$offset + 0]) === "") { $s = 5; continue; } /* */ $s = 6; continue; /* if ((parts.$length === 1) && (0 >= parts.$length ? $throwRuntimeError("index out of range") : 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") : 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") : parts.$array[parts.$offset + i] = _r$2); /* */ if (((i < 0 || i >= parts.$length) ? $throwRuntimeError("index out of range") : parts.$array[parts.$offset + i]).length === 0) { $s = 10; continue; } /* */ $s = 11; continue; /* if (((i < 0 || i >= parts.$length) ? $throwRuntimeError("index out of range") : 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") : parts.$array[parts.$offset + i]); _tmp$1 = ""; name = _tmp; val = _tmp$1; j = strings.Index(name, "="); if (j >= 0) { _tmp$2 = name.substring(0, j); _tmp$3 = name.substring((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]; success = _tuple$1[1]; if (!success) { i = i + (1) >> 0; /* continue; */ $s = 7; continue; } cookies = $append(cookies, new Cookie.ptr(name, val, "", "", new time.Time.ptr(), "", 0, false, false, "", sliceType.nil)); parsedPairs = parsedPairs + (1) >> 0; i = i + (1) >> 0; /* } */ $s = 7; continue; case 8: _i++; /* } */ $s = 1; continue; case 2: return cookies; /* */ $s = -1; case -1: } 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.parsedPairs = parsedPairs; $f.parts = parts; $f.success = success; $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; }; 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 = s.substring(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; } return _r; /* */ $s = -1; case -1: } 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) { 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)) { return "\"" + v + "\""; } return v; /* */ $s = -1; case -1: } 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; } return _r; /* */ $s = -1; case -1: } 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$1([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) { 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: return $bytesToString(buf); /* */ $s = -1; case -1: } 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 = raw.substring(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: _r = strings.IndexFunc(raw, isNotToken); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r < 0; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: isCookieNameValid }; } $f.$ptr = $ptr; $f._r = _r; $f.raw = raw; $f.$s = $s; $f.$r = $r; return $f; }; 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[key], _entry !== undefined ? _entry.v : sliceType.nil); if (v.$length > 0) { return (0 >= v.$length ? $throwRuntimeError("index out of range") : 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; } return _r; /* */ $s = -1; case -1: } 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$5, _keys, _ref, h, h2, k, vv, vv2; h = this.$val; h2 = new $Map(); _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, vv.$length); $copySlice(vv2, vv); _key$5 = k; (h2 || $throwRuntimeError("assignment to entry in nil map"))[_key$5] = { k: _key$5, 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 = $clone(this, stringWriter); _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]; return [n, err]; /* */ $s = -1; case -1: } 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, x$1, x$2, x$3; s = this; _tmp = $clone((x = s.kvs, ((j < 0 || j >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + j])), keyValues); _tmp$1 = $clone((x$1 = s.kvs, ((i < 0 || i >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + i])), keyValues); $copy((x$2 = s.kvs, ((i < 0 || i >= x$2.$length) ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + i])), _tmp, keyValues); $copy((x$3 = s.kvs, ((j < 0 || j >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + j])), _tmp$1, keyValues); }; 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, x$1; s = this; return (x = s.kvs, ((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i])).key < (x$1 = s.kvs, ((j < 0 || j >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$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$8.nil; hs = ptrType$11.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$11); if (hs.kvs.$capacity < $keys(h).length) { hs.kvs = $makeSlice(sliceType$8, 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[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; return [kvs, hs]; /* */ $s = -1; case -1: } 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, $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 = $f.x; $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 = new stringWriter.ptr(w), new x.constructor.elem(x)); } _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") : _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") : _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([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") : _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 = 10; continue; } /* */ $s = 11; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 10: return err; /* } */ case 11: _i$2++; /* } */ $s = 7; continue; case 8: _i$1++; /* } */ $s = 4; continue; case 5: _i++; /* } */ $s = 2; continue; case 3: headerSorterPool.Put(sorter); return $ifaceNil; /* */ $s = -1; case -1: } 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 = x; $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(v.substring(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); }; isToken = function(r) { var $ptr, i, r; i = (r >> 0); return i < 127 && ((i < 0 || i >= isTokenTable.length) ? $throwRuntimeError("index out of range") : isTokenTable[i]); }; isNotToken = function(r) { var $ptr, r; return !isToken(r); }; ProtocolError.ptr.prototype.Error = function() { var $ptr, err; err = this; return err.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$1([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; } return _r; /* */ $s = -1; case -1: } 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.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.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; } return _r; /* */ $s = -1; case -1: } 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") : _ref.$array[_ref.$offset + _i]); return [c, $ifaceNil]; /* } */ $s = 2; continue; case 3: return [ptrType$7.nil, $pkg.ErrNoCookie]; /* */ $s = -1; case -1: } 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$1([_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; case -1: } 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) { return [ptrType$12.nil, errors.New("http: MultipartReader called twice")]; } if (!(r.MultipartForm === ptrType$13.nil)) { return [ptrType$12.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; } return _r; /* */ $s = -1; case -1: } 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 === "") { return [ptrType$12.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")) { return [ptrType$12.nil, $pkg.ErrNotMultipart]; } _tuple$1 = (_entry = params["boundary"], _entry !== undefined ? [_entry.v, true] : ["", false]); boundary = _tuple$1[0]; ok = _tuple$1[1]; if (!ok) { return [ptrType$12.nil, $pkg.ErrMissingBoundary]; } return [multipart.NewReader(r.Body, boundary), $ifaceNil]; /* */ $s = -1; case -1: } 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(); }; 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); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -1: } 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); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -1: } 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) { var $ptr, _entry, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, bw, err, extraHeaders, host, ok, req, ruri, tw, ua, userAgent, usingProxy, 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; _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; bw = $f.bw; err = $f.err; extraHeaders = $f.extraHeaders; host = $f.host; ok = $f.ok; req = $f.req; ruri = $f.ruri; tw = $f.tw; ua = $f.ua; userAgent = $f.userAgent; usingProxy = $f.usingProxy; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: req = this; host = req.Host; if (host === "") { if (req.URL === ptrType$5.nil) { return errors.New("http: Request.Write on Request with no Host or URL set"); } host = req.URL.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$14.nil; _tuple = $assertType(w, io.ByteWriter, true); ok = _tuple[1]; if (!ok) { bw = bufio.NewWriter(w); w = bw; } _r = fmt.Fprintf(w, "%s %s HTTP/1.1\r\n", new sliceType$1([new $String(valueOrDefault(req.Method, "GET")), new $String(ruri)])); /* */ $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))) { return err; } _r$1 = fmt.Fprintf(w, "Host: %s\r\n", new sliceType$1([new $String(host)])); /* */ $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; err = _tuple$2[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } userAgent = "Go 1.1 package http"; if (!(req.Header === false)) { ua = (_entry = req.Header["User-Agent"], _entry !== undefined ? _entry.v : sliceType.nil); if (ua.$length > 0) { userAgent = (0 >= ua.$length ? $throwRuntimeError("index out of range") : ua.$array[ua.$offset + 0]); } } /* */ if (!(userAgent === "")) { $s = 3; continue; } /* */ $s = 4; continue; /* if (!(userAgent === "")) { */ case 3: _r$2 = fmt.Fprintf(w, "User-Agent: %s\r\n", new sliceType$1([new $String(userAgent)])); /* */ $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; err = _tuple$3[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } /* } */ case 4: _r$3 = newTransferWriter(req); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } _tuple$4 = _r$3; tw = _tuple$4[0]; err = _tuple$4[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } _r$4 = tw.WriteHeader(w); /* */ $s = 7; case 7: 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))) { return err; } _r$5 = new Header(req.Header).WriteSubset(w, reqWriteExcludeHeader); /* */ $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))) { return err; } /* */ if (!(extraHeaders === false)) { $s = 9; continue; } /* */ $s = 10; continue; /* if (!(extraHeaders === false)) { */ case 9: _r$6 = new Header(extraHeaders).Write(w); /* */ $s = 11; case 11: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } err = _r$6; if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } /* } */ case 10: _r$7 = io.WriteString(w, "\r\n"); /* */ $s = 12; case 12: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } _tuple$5 = _r$7; err = _tuple$5[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } _r$8 = tw.WriteBody(w); /* */ $s = 13; case 13: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } err = _r$8; if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } /* */ if (!(bw === ptrType$14.nil)) { $s = 14; continue; } /* */ $s = 15; continue; /* if (!(bw === ptrType$14.nil)) { */ case 14: _r$9 = bw.Flush(); /* */ $s = 16; case 16: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } return _r$9; /* } */ case 15: return $ifaceNil; /* */ $s = -1; case -1: } return; } 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$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.bw = bw; $f.err = err; $f.extraHeaders = extraHeaders; $f.host = host; $f.ok = ok; $f.req = req; $f.ruri = ruri; $f.tw = tw; $f.ua = ua; $f.userAgent = userAgent; $f.usingProxy = usingProxy; $f.w = w; $f.$s = $s; $f.$r = $r; return $f; }; Request.prototype.write = function(w, usingProxy, extraHeaders) { return this.$val.write(w, usingProxy, extraHeaders); }; ParseHTTPVersion = function(vers) { var $ptr, _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$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; _ref = vers; if (_ref === "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 (_ref === "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(vers.substring(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(vers.substring((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; NewRequest = function(method, urlStr, body$1) { var $ptr, _r, _ref, _tuple, _tuple$1, body$1, err, method, ok, rc, req, u, urlStr, 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; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; body$1 = $f.body$1; err = $f.err; method = $f.method; ok = $f.ok; rc = $f.rc; req = $f.req; u = $f.u; urlStr = $f.urlStr; 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: _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))) { return [ptrType$1.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); } req = new Request.ptr(method, u, "HTTP/1.1", 1, 1, new $Map(), rc, new $Int64(0, 0), sliceType.nil, false, u.Host, false, false, ptrType$13.nil, false, "", "", ptrType$2.nil); if (!($interfaceIsEqual(body$1, $ifaceNil))) { _ref = body$1; if ($assertType(_ref, ptrType$15, true)[1]) { v = _ref.$val; req.ContentLength = new $Int64(0, v.Len()); } else if ($assertType(_ref, ptrType$16, true)[1]) { v$1 = _ref.$val; req.ContentLength = new $Int64(0, v$1.Len()); } else if ($assertType(_ref, ptrType$17, true)[1]) { v$2 = _ref.$val; req.ContentLength = new $Int64(0, v$2.Len()); } } return [req, $ifaceNil]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: NewRequest }; } $f.$ptr = $ptr; $f._r = _r; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.body$1 = body$1; $f.err = err; $f.method = method; $f.ok = ok; $f.rc = rc; $f.req = req; $f.u = u; $f.urlStr = urlStr; $f.v = v; $f.v$1 = v$1; $f.v$2 = v$2; $f.$s = $s; $f.$r = $r; return $f; }; $pkg.NewRequest = NewRequest; Request.ptr.prototype.BasicAuth = function() { var $ptr, _r, _tuple, auth, ok, password, r, 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; _tuple = $f._tuple; auth = $f.auth; ok = $f.ok; password = $f.password; r = $f.r; username = $f.username; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: username = ""; password = ""; ok = false; r = this; auth = new Header(r.Header).Get("Authorization"); if (auth === "") { return [username, password, ok]; } _r = parseBasicAuth(auth); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _tuple = _r; username = _tuple[0]; password = _tuple[1]; ok = _tuple[2]; return [username, password, ok]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Request.ptr.prototype.BasicAuth }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.auth = auth; $f.ok = ok; $f.password = password; $f.r = r; $f.username = username; $f.$s = $s; $f.$r = $r; return $f; }; Request.prototype.BasicAuth = function() { return this.$val.BasicAuth(); }; parseBasicAuth = function(auth) { var $ptr, _r, _tmp, _tmp$1, _tmp$2, _tuple, auth, c, cs, err, ok, password, s, 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$2 = $f._tmp$2; _tuple = $f._tuple; auth = $f.auth; c = $f.c; cs = $f.cs; err = $f.err; ok = $f.ok; password = $f.password; s = $f.s; username = $f.username; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: username = ""; password = ""; ok = false; if (!strings.HasPrefix(auth, "Basic ")) { return [username, password, ok]; } _r = base64.StdEncoding.DecodeString(strings.TrimPrefix(auth, "Basic ")); /* */ $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))) { return [username, password, ok]; } cs = $bytesToString(c); s = strings.IndexByte(cs, 58); if (s < 0) { return [username, password, ok]; } _tmp = cs.substring(0, s); _tmp$1 = cs.substring((s + 1 >> 0)); _tmp$2 = true; username = _tmp; password = _tmp$1; ok = _tmp$2; return [username, password, ok]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parseBasicAuth }; } $f.$ptr = $ptr; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tuple = _tuple; $f.auth = auth; $f.c = c; $f.cs = cs; $f.err = err; $f.ok = ok; $f.password = password; $f.s = s; $f.username = username; $f.$s = $s; $f.$r = $r; return $f; }; 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(line.substring((s1 + 1 >> 0)), " "); if (s1 < 0 || s2 < 0) { return [method, requestURI, proto, ok]; } s2 = s2 + ((s1 + 1 >> 0)) >> 0; _tmp = line.substring(0, s1); _tmp$1 = line.substring((s1 + 1 >> 0), s2); _tmp$2 = line.substring((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))) { $s = 2; continue; } /* */ $s = 3; continue; /* if (!($interfaceIsEqual(v, $ifaceNil))) { */ case 2: tr = $assertType(v, ptrType$18); tr.R = br; return tr; /* } */ case 3: return textproto.NewReader(br); /* */ $s = -1; case -1: } 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$19.nil; textprotoReaderPool.Put(r); }; ReadRequest = function(b) { var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _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, 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; _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$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; 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$1.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(); 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))) { $s = 3; continue; } /* */ $s = 4; continue; /* if (!($interfaceIsEqual(err[0], $ifaceNil))) { */ case 3: _tmp = ptrType$1.nil; _tmp$1 = err[0]; req = _tmp; err[0] = _tmp$1; return [req, err[0]]; /* } */ case 4: $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$1.nil; _tmp$3 = new badStringError.ptr("malformed HTTP request", s); req = _tmp$2; err[0] = _tmp$3; 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$1.nil; _tmp$5 = new badStringError.ptr("malformed HTTP version", req.Proto); req = _tmp$4; err[0] = _tmp$5; return [req, err[0]]; } justAuthority = req.Method === "CONNECT" && !strings.HasPrefix(rawurl, "/"); if (justAuthority) { rawurl = "http://" + rawurl; } _r$2 = url.ParseRequestURI(rawurl); /* */ $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; req.URL = _tuple$3[0]; err[0] = _tuple$3[1]; /* */ if (!($interfaceIsEqual(err[0], $ifaceNil))) { $s = 6; continue; } /* */ $s = 7; continue; /* if (!($interfaceIsEqual(err[0], $ifaceNil))) { */ case 6: _tmp$6 = ptrType$1.nil; _tmp$7 = err[0]; req = _tmp$6; err[0] = _tmp$7; return [req, err[0]]; /* } */ case 7: if (justAuthority) { req.URL.Scheme = ""; } _r$3 = tp[0].ReadMIMEHeader(); /* */ $s = 8; case 8: 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$1.nil; _tmp$9 = err[0]; req = _tmp$8; err[0] = _tmp$9; return [req, err[0]]; } req.Header = mimeHeader; req.Host = req.URL.Host; if (req.Host === "") { req.Host = new Header(req.Header).get("Host"); } delete req.Header["Host"]; fixPragmaCacheControl(req.Header); _r$4 = readTransfer(req, b); /* */ $s = 9; case 9: 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$1.nil; _tmp$11 = err[0]; req = _tmp$10; err[0] = _tmp$11; return [req, err[0]]; } _r$5 = shouldClose(req.ProtoMajor, req.ProtoMinor, req.Header, false); /* */ $s = 10; case 10: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } req.Close = _r$5; _tmp$12 = req; _tmp$13 = $ifaceNil; req = _tmp$12; err[0] = _tmp$13; return [req, err[0]]; /* */ $s = -1; case -1: } 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._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$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.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; } } }; $pkg.ReadRequest = ReadRequest; MaxBytesReader = function(w, r, n) { var $ptr, n, r, w; return new maxBytesReader.ptr(w, r, n, false); }; $pkg.MaxBytesReader = MaxBytesReader; maxBytesReader.ptr.prototype.Read = function(p) { var $ptr, _r, _tmp, _tmp$1, _tuple, _tuple$1, err, l, n, ok, p, res, 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; _tuple$1 = $f._tuple$1; err = $f.err; l = $f.l; n = $f.n; ok = $f.ok; p = $f.p; res = $f.res; 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)))) { if (!l.stopped) { l.stopped = true; _tuple = $assertType(l.w, ptrType$20, true); res = _tuple[0]; ok = _tuple[1]; if (ok) { res.requestTooLarge(); } } _tmp = 0; _tmp$1 = errors.New("http: request body too large"); n = _tmp; err = _tmp$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$1 = _r; n = _tuple$1[0]; err = _tuple$1[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)); return [n, err]; /* */ $s = -1; case -1: } 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._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 = 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; }; 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; } return _r; /* */ $s = -1; case -1: } 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") : _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, $s, $r; /* */ $s = 0; var $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 = $f.x; $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"); 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 = 2; continue; } /* */ $s = 3; continue; /* switch (0) { default: if (ct === "application/x-www-form-urlencoded") { */ case 2: reader = r.Body; maxFormSize = new $Int64(2147483647, 4294967295); _tuple$1 = $assertType(r.Body, ptrType$21, 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 = 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; b = _tuple$2[0]; e = _tuple$2[1]; if (!($interfaceIsEqual(e, $ifaceNil))) { if ($interfaceIsEqual(err, $ifaceNil)) { err = e; } /* break; */ $s = 3; continue; } if ((x = new $Int64(0, b.$length), (x.$high > maxFormSize.$high || (x.$high === maxFormSize.$high && x.$low > maxFormSize.$low)))) { err = errors.New("http: POST too large"); return [vs, err]; } _tuple$3 = url.ParseQuery($bytesToString(b)); vs = _tuple$3[0]; e = _tuple$3[1]; if ($interfaceIsEqual(err, $ifaceNil)) { err = e; } /* } } */ case 3: return [vs, err]; /* */ $s = -1; case -1: } 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 = x; $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 = new $Map(); } /* } */ case 2: if (r.Form === false) { if ($keys(r.PostForm).length > 0) { r.Form = new $Map(); copyValues(r.Form, r.PostForm); } newValues = false; if (!(r.URL === ptrType$5.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 = new $Map(); } if (r.Form === false) { r.Form = newValues; } else { copyValues(r.Form, newValues); } } return err; /* */ $s = -1; case -1: } 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, _i, _key$5, _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; _i = $f._i; _key$5 = $f._key$5; _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) { 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))) { return err; } /* } */ case 2: if (!(r.MultipartForm === ptrType$13.nil)) { 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))) { 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))) { return err$1; } _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$5 = k; (r.Form || $throwRuntimeError("assignment to entry in nil map"))[_key$5] = { k: _key$5, v: $appendSlice((_entry$1 = r.Form[k], _entry$1 !== undefined ? _entry$1.v : sliceType.nil), v) }; _i++; } r.MultipartForm = f; return $ifaceNil; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Request.ptr.prototype.ParseMultipartForm }; } $f.$ptr = $ptr; $f._entry = _entry; $f._entry$1 = _entry$1; $f._i = _i; $f._key$5 = _key$5; $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[key], _entry !== undefined ? _entry.v : sliceType.nil); if (vs.$length > 0) { return (0 >= vs.$length ? $throwRuntimeError("index out of range") : vs.$array[vs.$offset + 0]); } return ""; /* */ $s = -1; case -1: } 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[key], _entry !== undefined ? _entry.v : sliceType.nil); if (vs.$length > 0) { return (0 >= vs.$length ? $throwRuntimeError("index out of range") : vs.$array[vs.$offset + 0]); } return ""; /* */ $s = -1; case -1: } 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) { return [$ifaceNil, ptrType$22.nil, errors.New("http: multipart handled by MultipartReader")]; } /* */ if (r.MultipartForm === ptrType$13.nil) { $s = 1; continue; } /* */ $s = 2; continue; /* if (r.MultipartForm === ptrType$13.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))) { return [$ifaceNil, ptrType$22.nil, err]; } /* } */ case 2: if (!(r.MultipartForm === ptrType$13.nil) && !(r.MultipartForm.File === false)) { fhs = (_entry = r.MultipartForm.File[key], _entry !== undefined ? _entry.v : sliceType$9.nil); if (fhs.$length > 0) { _tuple = (0 >= fhs.$length ? $throwRuntimeError("index out of range") : fhs.$array[fhs.$offset + 0]).Open(); f = _tuple[0]; err$1 = _tuple[1]; return [f, (0 >= fhs.$length ? $throwRuntimeError("index out of range") : fhs.$array[fhs.$offset + 0]), err$1]; } } return [$ifaceNil, ptrType$22.nil, $pkg.ErrMissingFile]; /* */ $s = -1; case -1: } 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; case -1: } 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(); }; 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; } return _r; /* */ $s = -1; case -1: } 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 === "") { return [ptrType$5.nil, $pkg.ErrNoLocation]; } /* */ if (!(r.Request === ptrType$1.nil) && !(r.Request.URL === ptrType$5.nil)) { $s = 1; continue; } /* */ $s = 2; continue; /* if (!(r.Request === ptrType$1.nil) && !(r.Request.URL === ptrType$5.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; } 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; } return _r$1; /* */ $s = -1; case -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(); }; fixPragmaCacheControl = function(header) { var $ptr, _entry, _entry$1, _key$5, _tuple, _tuple$1, header, hp, ok, presentcc; _tuple = (_entry = header["Pragma"], _entry !== undefined ? [_entry.v, true] : [sliceType.nil, false]); hp = _tuple[0]; ok = _tuple[1]; if (ok && hp.$length > 0 && (0 >= hp.$length ? $throwRuntimeError("index out of range") : hp.$array[hp.$offset + 0]) === "no-cache") { _tuple$1 = (_entry$1 = header["Cache-Control"], _entry$1 !== undefined ? [_entry$1.v, true] : [sliceType.nil, false]); presentcc = _tuple$1[1]; if (!presentcc) { _key$5 = "Cache-Control"; (header || $throwRuntimeError("assignment to entry in nil map"))[_key$5] = { k: _key$5, v: new sliceType(["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, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, buf, contentLengthAlreadySent, err, err$1, err$2, err$3, err$4, n, ok, protoMajor, protoMinor, r, r1, statusCode, text, tw, 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; _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; _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; 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; protoMajor = $f.protoMajor; protoMinor = $f.protoMinor; r = $f.r; r1 = $f.r1; statusCode = $f.statusCode; text = $f.text; tw = $f.tw; 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: r = this; text = r.Status; if (text === "") { ok = false; _tuple = (_entry = statusText[r.StatusCode], _entry !== undefined ? [_entry.v, true] : ["", false]); text = _tuple[0]; ok = _tuple[1]; if (!ok) { text = "status code " + strconv.Itoa(r.StatusCode); } } _tmp = strconv.Itoa(r.ProtoMajor); _tmp$1 = strconv.Itoa(r.ProtoMinor); protoMajor = _tmp; protoMinor = _tmp$1; statusCode = strconv.Itoa(r.StatusCode) + " "; text = strings.TrimPrefix(text, statusCode); _r = io.WriteString(w, "HTTP/" + protoMajor + "." + protoMinor + " " + statusCode + text + "\r\n"); /* */ $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 = 2; continue; } /* */ $s = 3; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2: return err; /* } */ case 3: r1 = new Response.ptr(); $copy(r1, r, Response); /* */ if ((x = r1.ContentLength, (x.$high === 0 && x.$low === 0)) && !($interfaceIsEqual(r1.Body, $ifaceNil))) { $s = 4; continue; } /* */ $s = 5; continue; /* if ((x = r1.ContentLength, (x.$high === 0 && x.$low === 0)) && !($interfaceIsEqual(r1.Body, $ifaceNil))) { */ case 4: buf = $clone(arrayType$1.zero(), arrayType$1); _r$1 = r1.Body.Read(new sliceType$2(buf)); /* */ $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; n = _tuple$2[0]; err$1 = _tuple$2[1]; if (!($interfaceIsEqual(err$1, $ifaceNil)) && !($interfaceIsEqual(err$1, io.EOF))) { return err$1; } if (n === 0) { r1.Body = eofReader; } else { r1.ContentLength = new $Int64(-1, 4294967295); r1.Body = (x$1 = new structType$1.ptr(io.MultiReader(new sliceType$10([bytes.NewReader($subslice(new sliceType$2(buf), 0, 1)), r.Body])), r.Body), new x$1.constructor.elem(x$1)); } /* } */ case 5: if ((x$2 = r1.ContentLength, (x$2.$high === -1 && x$2.$low === 4294967295)) && !r1.Close && r1.ProtoAtLeast(1, 1) && !chunked(r1.TransferEncoding)) { r1.Close = true; } _r$2 = newTransferWriter(r1); /* */ $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; tw = _tuple$3[0]; err$2 = _tuple$3[1]; if (!($interfaceIsEqual(err$2, $ifaceNil))) { return err$2; } _r$3 = tw.WriteHeader(w); /* */ $s = 8; case 8: 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))) { return err$2; } _r$4 = new Header(r.Header).WriteSubset(w, respExcludeHeader); /* */ $s = 9; case 9: 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))) { return err$2; } contentLengthAlreadySent = tw.shouldSendContentLength(); /* */ if ((x$3 = r1.ContentLength, (x$3.$high === 0 && x$3.$low === 0)) && !chunked(r1.TransferEncoding) && !contentLengthAlreadySent) { $s = 10; continue; } /* */ $s = 11; continue; /* if ((x$3 = r1.ContentLength, (x$3.$high === 0 && x$3.$low === 0)) && !chunked(r1.TransferEncoding) && !contentLengthAlreadySent) { */ case 10: _r$5 = io.WriteString(w, "Content-Length: 0\r\n"); /* */ $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$3 = _tuple$4[1]; /* */ if (!($interfaceIsEqual(err$3, $ifaceNil))) { $s = 13; continue; } /* */ $s = 14; continue; /* if (!($interfaceIsEqual(err$3, $ifaceNil))) { */ case 13: return err$3; /* } */ case 14: /* } */ case 11: _r$6 = io.WriteString(w, "\r\n"); /* */ $s = 15; case 15: 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 = 16; continue; } /* */ $s = 17; continue; /* if (!($interfaceIsEqual(err$4, $ifaceNil))) { */ case 16: return err$4; /* } */ case 17: _r$7 = tw.WriteBody(w); /* */ $s = 18; case 18: 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))) { return err$2; } return $ifaceNil; /* */ $s = -1; case -1: } 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._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.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.protoMajor = protoMajor; $f.protoMinor = protoMinor; $f.r = r; $f.r1 = r1; $f.statusCode = statusCode; $f.text = text; $f.tw = tw; $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; }; 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"), []]); return c.hijackedv; /* */ $s = -1; case -1: } 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.hijack = function() { var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, buf, c, err, rwc, $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; buf = $f.buf; c = $f.c; err = $f.err; rwc = $f.rwc; $s = $f.$s; $deferred = $f.$deferred; $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$23.nil; err = $ifaceNil; 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"), []]); if (c.hijackedv) { _tmp = $ifaceNil; _tmp$1 = ptrType$23.nil; _tmp$2 = $pkg.ErrHijacked; rwc = _tmp; buf = _tmp$1; err = _tmp$2; return [rwc, buf, err]; } if (!(c.closeNotifyc === chanType$2.nil)) { _tmp$3 = $ifaceNil; _tmp$4 = ptrType$23.nil; _tmp$5 = errors.New("http: Hijack is incompatible with use of CloseNotifier"); rwc = _tmp$3; buf = _tmp$4; err = _tmp$5; return [rwc, buf, err]; } c.hijackedv = true; rwc = c.rwc; buf = c.buf; c.rwc = $ifaceNil; c.buf = ptrType$23.nil; $r = c.setState(rwc, 3); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } return [rwc, buf, err]; /* */ $s = -1; case -1: } 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: conn.ptr.prototype.hijack }; } $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.buf = buf; $f.c = c; $f.err = err; $f.rwc = rwc; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } }; conn.prototype.hijack = function() { return this.$val.hijack(); }; conn.ptr.prototype.closeNotify = function() { var $ptr, _tuple, c, pr, pw, readSource, $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; c = $f.c; pr = $f.pr; pw = $f.pw; readSource = $f.readSource; $s = $f.$s; $deferred = $f.$deferred; $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]; pw = [pw]; readSource = [readSource]; c[0] = this; $r = c[0].mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $deferred.push([$methodVal(c[0].mu, "Unlock"), []]); /* */ if (c[0].closeNotifyc === chanType$2.nil) { $s = 2; continue; } /* */ $s = 3; continue; /* if (c[0].closeNotifyc === chanType$2.nil) { */ case 2: c[0].closeNotifyc = new chanType$2(1); if (c[0].hijackedv) { return c[0].closeNotifyc; } _tuple = io.Pipe(); pr = _tuple[0]; pw[0] = _tuple[1]; readSource[0] = c[0].sr.r; $r = c[0].sr.Mutex.Lock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } c[0].sr.r = pr; $r = c[0].sr.Mutex.Unlock(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $go((function(c, pw, readSource) { return function $b() { var $ptr, _r, _r$1, _tuple$1, 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$1 = $f._tuple$1; err = $f.err; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: _r = io.Copy(pw[0], readSource[0]); /* */ $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)) { err = io.EOF; } _r$1 = pw[0].CloseWithError(err); /* */ $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 = c[0].noteClientGone(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tuple$1 = _tuple$1; $f.err = err; $f.$s = $s; $f.$r = $r; return $f; }; })(c, pw, readSource), []); /* } */ case 3: return c[0].closeNotifyc; /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; return chanType$3.nil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: conn.ptr.prototype.closeNotify }; } $f.$ptr = $ptr; $f._tuple = _tuple; $f.c = c; $f.pr = pr; $f.pw = pw; $f.readSource = readSource; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } }; conn.prototype.closeNotify = function() { return this.$val.closeNotify(); }; conn.ptr.prototype.noteClientGone = 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"), []]); /* */ if (!(c.closeNotifyc === chanType$2.nil) && !c.clientGone) { $s = 2; continue; } /* */ $s = 3; continue; /* if (!(c.closeNotifyc === chanType$2.nil) && !c.clientGone) { */ case 2: $r = $send(c.closeNotifyc, true); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 3: c.clientGone = true; /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: conn.ptr.prototype.noteClientGone }; } $f.$ptr = $ptr; $f.c = c; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } }; conn.prototype.noteClientGone = function() { return this.$val.noteClientGone(); }; liveSwitchReader.ptr.prototype.Read = function(p) { var $ptr, _r, _tuple, err, n, p, r, sr, $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; sr = $f.sr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: n = 0; err = $ifaceNil; sr = this; $r = sr.Mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } r = sr.r; $r = sr.Mutex.Unlock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } _r = r.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]; return [n, err]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: liveSwitchReader.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.sr = sr; $f.$s = $s; $f.$r = $r; return $f; }; liveSwitchReader.prototype.Read = function(p) { return this.$val.Read(p); }; 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; return [n, err]; } /* */ if (cw.chunking) { $s = 4; continue; } /* */ $s = 5; continue; /* if (cw.chunking) { */ case 4: _r = fmt.Fprintf(cw.res.conn.buf, "%x\r\n", new sliceType$1([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; return [n, err]; /* } */ case 8: /* } */ case 5: _r$2 = cw.res.conn.buf.Writer.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.buf.Writer.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: return [n, err]; /* */ $s = -1; case -1: } 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.buf.Writer.Flush(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _r; /* */ $s = -1; case -1: } 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, 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: /* */ if (cw.chunking) { $s = 4; continue; } /* */ $s = 5; continue; /* if (cw.chunking) { */ case 4: _r = cw.res.conn.buf.Writer.WriteString("0\r\n\r\n"); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _r; /* } */ case 5: /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: chunkWriter.ptr.prototype.close }; } $f.$ptr = $ptr; $f._r = _r; $f.cw = cw; $f.$s = $s; $f.$r = $r; return $f; }; chunkWriter.prototype.close = function() { return this.$val.close(); }; 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; w = this; _tuple = (_entry = w.handlerHeader["Content-Type"], _entry !== undefined ? [_entry.v, true] : [sliceType.nil, false]); haveType = _tuple[1]; return !w.cw.wroteHeader && !haveType && (x = w.written, (x.$high < 0 || (x.$high === 0 && x.$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$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: 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; 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; return [isRegular, err]; $s = 4; continue; /* } else if ($assertType(_ref, ptrType$25, 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]; return [isRegular, err]; $s = 4; continue; /* } else { */ case 3: v$2 = _ref; return [isRegular, err]; /* } */ case 4: /* */ $s = -1; case -1: } 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, _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, err, err$1, err$2, n, n0, n0$1, n0$2, ok, regFile, rf, src, w, x, x$1, x$2, 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; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tuple = $f._tuple; _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; 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 = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: 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; return [n, err]; } /* */ if (!ok || !regFile) { $s = 2; continue; } /* */ $s = 3; continue; /* if (!ok || !regFile) { */ case 2: _r$1 = io.Copy((x = new writerOnly.ptr(w), new x.constructor.elem(x)), src); /* */ $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]; return [n, err]; /* } */ case 3: /* */ if (!w.wroteHeader) { $s = 5; continue; } /* */ $s = 6; continue; /* if (!w.wroteHeader) { */ case 5: $r = w.WriteHeader(200); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 6: /* */ if (w.needsSniff()) { $s = 8; continue; } /* */ $s = 9; continue; /* if (w.needsSniff()) { */ case 8: _r$2 = io.Copy((x$1 = new writerOnly.ptr(w), new x$1.constructor.elem(x$1)), io.LimitReader(src, new $Int64(0, 512))); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } _tuple$3 = _r$2; n0 = _tuple$3[0]; err$1 = _tuple$3[1]; n = (x$2 = n0, new $Int64(n.$high + x$2.$high, n.$low + x$2.$low)); if (!($interfaceIsEqual(err$1, $ifaceNil))) { _tmp$2 = n; _tmp$3 = err$1; n = _tmp$2; err = _tmp$3; return [n, err]; } /* } */ case 9: _r$3 = w.w.Flush(); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } _r$3; $r = w.cw.flush(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* */ if (!w.cw.chunking && w.bodyAllowed()) { $s = 13; continue; } /* */ $s = 14; continue; /* if (!w.cw.chunking && w.bodyAllowed()) { */ case 13: _r$4 = rf.ReadFrom(src); /* */ $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; n0$1 = _tuple$4[0]; err$2 = _tuple$4[1]; n = (x$3 = n0$1, new $Int64(n.$high + x$3.$high, n.$low + x$3.$low)); w.written = (x$4 = w.written, x$5 = n0$1, new $Int64(x$4.$high + x$5.$high, x$4.$low + x$5.$low)); _tmp$4 = n; _tmp$5 = err$2; n = _tmp$4; err = _tmp$5; return [n, err]; /* } */ case 14: _r$5 = io.Copy((x$6 = new writerOnly.ptr(w), new x$6.constructor.elem(x$6)), src); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } _tuple$5 = _r$5; n0$2 = _tuple$5[0]; err = _tuple$5[1]; n = (x$7 = n0$2, new $Int64(n.$high + x$7.$high, n.$low + x$7.$low)); _tmp$6 = n; _tmp$7 = err; n = _tmp$6; err = _tmp$7; return [n, err]; /* */ $s = -1; case -1: } return; } 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._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.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 = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.$s = $s; $f.$r = $r; return $f; }; response.prototype.ReadFrom = function(src) { return this.$val.ReadFrom(src); }; Server.ptr.prototype.newConn = function(rwc) { var $ptr, _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, br, bw, c, err, rwc, srv, 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; br = $f.br; bw = $f.bw; c = $f.c; err = $f.err; rwc = $f.rwc; srv = $f.srv; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: c = ptrType$26.nil; err = $ifaceNil; srv = this; c = new conn.ptr(); _r = 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.remoteAddr = _r$1; c.server = srv; c.rwc = rwc; c.w = rwc; $copy(c.sr, new liveSwitchReader.ptr(new sync.Mutex.ptr(), c.rwc), liveSwitchReader); c.lr = $assertType(io.LimitReader(c.sr, new $Int64(2147483647, 4294967295)), ptrType$25); _r$2 = newBufioReader(c.lr); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } br = _r$2; _r$3 = newBufioWriterSize((x = new checkConnErrorWriter.ptr(c), new x.constructor.elem(x)), 4096); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } bw = _r$3; c.buf = bufio.NewReadWriter(br, bw); _tmp = c; _tmp$1 = $ifaceNil; c = _tmp; err = _tmp$1; return [c, err]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Server.ptr.prototype.newConn }; } $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.br = br; $f.bw = bw; $f.c = c; $f.err = err; $f.rwc = rwc; $f.srv = srv; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; }; Server.prototype.newConn = function(rwc) { return this.$val.newConn(rwc); }; bufioWriterPool = function(size) { var $ptr, _ref, size; _ref = size; if (_ref === 2048) { return bufioWriter2kPool; } else if (_ref === 4096) { return bufioWriter4kPool; } return ptrType$27.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))) { $s = 2; continue; } /* */ $s = 3; continue; /* if (!($interfaceIsEqual(v, $ifaceNil))) { */ case 2: br = $assertType(v, ptrType$19); br.Reset(r); return br; /* } */ case 3: return bufio.NewReader(r); /* */ $s = -1; case -1: } 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$27.nil)) { $s = 1; continue; } /* */ $s = 2; continue; /* if (!(pool === ptrType$27.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))) { $s = 4; continue; } /* */ $s = 5; continue; /* if (!($interfaceIsEqual(v, $ifaceNil))) { */ case 4: bw = $assertType(v, ptrType$14); bw.Reset(w); return bw; /* } */ case 5: /* } */ case 2: return bufio.NewWriterSize(w, size); /* */ $s = -1; case -1: } 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$27.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.initialLimitedReaderSize = function() { var $ptr, srv, x; srv = this; return (x = new $Int64(0, srv.maxHeaderBytes()), new $Int64(x.$high + 0, x.$low + 4096)); }; Server.prototype.initialLimitedReaderSize = function() { return this.$val.initialLimitedReaderSize(); }; 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; 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.buf.Writer.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.buf.Writer.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]; return [n, err]; /* */ $s = -1; case -1: } 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; } return _r; /* */ $s = -1; case -1: } 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: t = $clone(t, time.Time); $copy(t, t.UTC(), time.Time); _r = t.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 = t.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 = t.Weekday(); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } day = "SunMonTueWedThuFriSat".substring((3 * _r$2 >> 0)); mon = "JanFebMarAprMayJunJulAugSepOctNovDec".substring((3 * ((mm - 1 >> 0)) >> 0)); 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); /* */ $s = -1; case -1: } 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() { 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, c, d, d$1, err, req, w, 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; _tuple = $f._tuple; c = $f.c; d = $f.d; d$1 = $f.d$1; err = $f.err; req = $f.req; w = $f.w; 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 = [c]; d = [d]; w = ptrType$20.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$20.nil; _tmp$1 = $pkg.ErrHijacked; w = _tmp; err = _tmp$1; return [w, err]; /* } */ case 2: d$1 = c[0].server.ReadTimeout; /* */ if (!((d$1.$high === 0 && d$1.$low === 0))) { $s = 4; continue; } /* */ $s = 5; continue; /* if (!((d$1.$high === 0 && d$1.$low === 0))) { */ case 4: _r$1 = c[0].rwc.SetReadDeadline(time.Now().Add(d$1)); /* */ $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: d[0] = c[0].server.WriteTimeout; /* */ if (!((d[0].$high === 0 && d[0].$low === 0))) { $s = 7; continue; } /* */ $s = 8; continue; /* if (!((d[0].$high === 0 && d[0].$low === 0))) { */ case 7: $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(time.Now().Add(d[0])); /* */ $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; case -1: } 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 8: c[0].lr.N = c[0].server.initialLimitedReaderSize(); req = ptrType$1.nil; _r$2 = ReadRequest(c[0].buf.Reader); /* */ $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; req = _tuple[0]; err = _tuple[1]; /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 10; continue; } /* */ $s = 11; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 10: if ((x = c[0].lr.N, (x.$high === 0 && x.$low === 0))) { _tmp$2 = ptrType$20.nil; _tmp$3 = errTooLarge; w = _tmp$2; err = _tmp$3; return [w, err]; } _tmp$4 = ptrType$20.nil; _tmp$5 = err; w = _tmp$4; err = _tmp$5; return [w, err]; /* } */ case 11: c[0].lr.N = new $Int64(2147483647, 4294967295); req.RemoteAddr = c[0].remoteAddr; req.TLS = c[0].tlsState; w = new response.ptr(c[0], req, false, false, ptrType$14.nil, new chunkWriter.ptr(), ptrType$28.nil, new $Map(), false, new $Int64(0, 0), new $Int64(-1, 4294967295), 0, false, false, false, arrayType$2.zero(), arrayType$3.zero()); w.cw.res = w; _r$3 = newBufioWriterSize(w.cw, 2048); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } w.w = _r$3; _tmp$6 = w; _tmp$7 = $ifaceNil; w = _tmp$6; err = _tmp$7; return [w, err]; /* */ $s = -1; case -1: } 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._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.c = c; $f.d = d; $f.d$1 = d$1; $f.err = err; $f.req = req; $f.w = w; $f.x = x; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } }; conn.prototype.readRequest = function() { return this.$val.readRequest(); }; 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$1([])); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } 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$1([])); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } 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$1([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; case -1: } 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 = $clone(this, extraHeader); /* */ 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([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") : _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") : 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; case -1: } 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, _entry, _entry$1, _entry$2, _i, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _ref, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, code, connectionHeaderSet, cw, delHeader, ecr, excludeHeader, hasCL, hasTE, haveType, header, isExpecter, isHEAD, k, keepAlivesEnabled, n, ok, owned, p, sentLength, setHeader, te, w, 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; _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; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; code = $f.code; connectionHeaderSet = $f.connectionHeaderSet; cw = $f.cw; delHeader = $f.delHeader; ecr = $f.ecr; excludeHeader = $f.excludeHeader; hasCL = $f.hasCL; hasTE = $f.hasTE; haveType = $f.haveType; header = $f.header; isExpecter = $f.isExpecter; isHEAD = $f.isHEAD; k = $f.k; keepAlivesEnabled = $f.keepAlivesEnabled; n = $f.n; ok = $f.ok; owned = $f.owned; p = $f.p; sentLength = $f.sentLength; setHeader = $f.setHeader; te = $f.te; w = $f.w; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: excludeHeader = [excludeHeader]; header = [header]; owned = [owned]; cw = this; if (cw.wroteHeader) { 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$5, _tuple, key, ok; if (owned[0]) { new Header(header[0]).Del(key); return; } _tuple = (_entry = header[0][key], _entry !== undefined ? [_entry.v, true] : [sliceType.nil, false]); ok = _tuple[1]; if (!ok) { return; } if (excludeHeader[0] === false) { excludeHeader[0] = new $Map(); } _key$5 = key; (excludeHeader[0] || $throwRuntimeError("assignment to entry in nil map"))[_key$5] = { k: _key$5, v: true }; }; })(excludeHeader, header, owned); setHeader = $clone(new extraHeader.ptr(), extraHeader); if (w.handlerDone && 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.req.wantsHttp10KeepAlive() && keepAlivesEnabled) { sentLength = !(new Header(header[0]).get("Content-Length") === ""); if (sentLength && new Header(header[0]).get("Connection") === "keep-alive") { w.closeAfterReply = false; } } hasCL = !((x = w.contentLength, (x.$high === -1 && x.$low === 4294967295))); if (w.req.wantsHttp10KeepAlive() && (isHEAD || hasCL)) { _tuple = (_entry = header[0]["Connection"], _entry !== undefined ? [_entry.v, true] : [sliceType.nil, false]); connectionHeaderSet = _tuple[1]; if (!connectionHeaderSet) { setHeader.connection = "keep-alive"; } } else if (!w.req.ProtoAtLeast(1, 1) || w.req.wantsClose()) { w.closeAfterReply = true; } if (new Header(header[0]).get("Connection") === "close" || !keepAlivesEnabled) { w.closeAfterReply = true; } /* */ if (!((x$1 = w.req.ContentLength, (x$1.$high === 0 && x$1.$low === 0))) && !w.closeAfterReply) { $s = 1; continue; } /* */ $s = 2; continue; /* if (!((x$1 = w.req.ContentLength, (x$1.$high === 0 && x$1.$low === 0))) && !w.closeAfterReply) { */ case 1: _tuple$1 = $assertType(w.req.Body, ptrType$29, true); ecr = _tuple$1[0]; isExpecter = _tuple$1[1]; /* */ if (!isExpecter || ecr.resp.wroteContinue) { $s = 3; continue; } /* */ $s = 4; continue; /* if (!isExpecter || ecr.resp.wroteContinue) { */ case 3: _r = io.CopyN(ioutil.Discard, w.req.Body, new $Int64(0, 262145)); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _tuple$2 = _r; n = _tuple$2[0]; /* */ if ((n.$high > 0 || (n.$high === 0 && n.$low >= 262144))) { $s = 6; continue; } /* */ $s = 7; continue; /* if ((n.$high > 0 || (n.$high === 0 && n.$low >= 262144))) { */ case 6: w.requestTooLarge(); $r = delHeader("Connection"); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } setHeader.connection = "close"; $s = 8; continue; /* } else { */ case 7: _r$1 = w.req.Body.Close(); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } _r$1; /* } */ case 8: /* } */ case 4: /* } */ case 2: code = w.status; /* */ if (bodyAllowedForStatus(code)) { $s = 11; continue; } /* */ $s = 12; continue; /* if (bodyAllowedForStatus(code)) { */ case 11: _tuple$3 = (_entry$1 = header[0]["Content-Type"], _entry$1 !== undefined ? [_entry$1.v, true] : [sliceType.nil, false]); haveType = _tuple$3[1]; /* */ if (!haveType) { $s = 14; continue; } /* */ $s = 15; continue; /* if (!haveType) { */ case 14: _r$2 = DetectContentType(p); /* */ $s = 16; case 16: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } setHeader.contentType = _r$2; /* } */ case 15: $s = 13; continue; /* } else { */ case 12: _ref = suppressedHeaders(code); _i = 0; /* while (true) { */ case 17: /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 18; continue; } k = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]); $r = delHeader(k); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } _i++; /* } */ $s = 17; continue; case 18: /* } */ case 13: _tuple$4 = (_entry$2 = header[0]["Date"], _entry$2 !== undefined ? [_entry$2.v, true] : [sliceType.nil, false]); ok = _tuple$4[1]; /* */ if (!ok) { $s = 20; continue; } /* */ $s = 21; continue; /* if (!ok) { */ case 20: _r$3 = appendTime($subslice(new sliceType$2(cw.res.dateBuf), 0, 0), time.Now()); /* */ $s = 22; case 22: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } setHeader.date = _r$3; /* } */ case 21: te = new Header(header[0]).get("Transfer-Encoding"); hasTE = !(te === ""); /* */ if (hasCL && hasTE && !(te === "identity")) { $s = 23; continue; } /* */ $s = 24; continue; /* if (hasCL && hasTE && !(te === "identity")) { */ case 23: $r = w.conn.server.logf("http: WriteHeader called with both Transfer-Encoding of %q and a Content-Length of %d", new sliceType$1([new $String(te), w.contentLength])); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = delHeader("Content-Length"); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } hasCL = false; /* } */ case 24: /* */ if (w.req.Method === "HEAD" || !bodyAllowedForStatus(code)) { $s = 27; continue; } /* */ if (code === 204) { $s = 28; continue; } /* */ if (hasCL) { $s = 29; continue; } /* */ if (w.req.ProtoAtLeast(1, 1)) { $s = 30; continue; } /* */ $s = 31; continue; /* if (w.req.Method === "HEAD" || !bodyAllowedForStatus(code)) { */ case 27: $s = 32; continue; /* } else if (code === 204) { */ case 28: $r = delHeader("Transfer-Encoding"); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $s = 32; continue; /* } else if (hasCL) { */ case 29: $r = delHeader("Transfer-Encoding"); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $s = 32; continue; /* } else if (w.req.ProtoAtLeast(1, 1)) { */ case 30: if (hasTE && te === "identity") { cw.chunking = false; w.closeAfterReply = true; } else { cw.chunking = true; setHeader.transferEncoding = "chunked"; } $s = 32; continue; /* } else { */ case 31: w.closeAfterReply = true; $r = delHeader("Transfer-Encoding"); /* */ $s = 35; case 35: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 32: /* */ if (cw.chunking) { $s = 36; continue; } /* */ $s = 37; continue; /* if (cw.chunking) { */ case 36: $r = delHeader("Content-Length"); /* */ $s = 38; case 38: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 37: if (!w.req.ProtoAtLeast(1, 0)) { return; } /* */ if (w.closeAfterReply && (!keepAlivesEnabled || !hasToken(new Header(cw.header).get("Connection"), "close"))) { $s = 39; continue; } /* */ $s = 40; continue; /* if (w.closeAfterReply && (!keepAlivesEnabled || !hasToken(new Header(cw.header).get("Connection"), "close"))) { */ case 39: $r = delHeader("Connection"); /* */ $s = 41; case 41: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } if (w.req.ProtoAtLeast(1, 1)) { setHeader.connection = "close"; } /* } */ case 40: _r$4 = statusLine(w.req, code); /* */ $s = 42; case 42: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } _r$5 = w.conn.buf.Writer.WriteString(_r$4); /* */ $s = 43; case 43: 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.buf, excludeHeader[0]); /* */ $s = 44; case 44: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } _r$6; $r = setHeader.Write(w.conn.buf.Writer); /* */ $s = 45; case 45: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } _r$7 = w.conn.buf.Writer.Write(crlf); /* */ $s = 46; case 46: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } _r$7; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: chunkWriter.ptr.prototype.writeHeader }; } $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._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f.code = code; $f.connectionHeaderSet = connectionHeaderSet; $f.cw = cw; $f.delHeader = delHeader; $f.ecr = ecr; $f.excludeHeader = excludeHeader; $f.hasCL = hasCL; $f.hasTE = hasTE; $f.haveType = haveType; $f.header = header; $f.isExpecter = isExpecter; $f.isHEAD = isHEAD; $f.k = k; $f.keepAlivesEnabled = keepAlivesEnabled; $f.n = n; $f.ok = ok; $f.owned = owned; $f.p = p; $f.sentLength = sentLength; $f.setHeader = setHeader; $f.te = te; $f.w = w; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f; }; chunkWriter.prototype.writeHeader = function(p) { return this.$val.writeHeader(p); }; statusLine = function(req, code) { var $ptr, _entry, _entry$1, _key$5, _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$5 = $f._key$5; _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[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) { return line; } proto = "HTTP/1.0"; if (proto11) { proto = "HTTP/1.1"; } codestring = strconv.Itoa(code); _tuple$1 = (_entry$1 = statusText[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 = 3; continue; } /* */ $s = 4; continue; /* if (ok) { */ case 3: $r = statusMu.Lock(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $deferred.push([$methodVal(statusMu, "Unlock"), []]); _key$5 = key; (statusLines || $throwRuntimeError("assignment to entry in nil map"))[_key$5] = { k: _key$5, v: line }; /* } */ case 4: return line; /* */ $s = -1; case -1: } 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$5 = _key$5; $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]; return [n, err]; /* */ $s = -1; case -1: } 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]; return [n, err]; /* */ $s = -1; case -1: } 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, 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; _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 = $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; 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.Write on hijacked connection", new sliceType$1([])); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } _tmp = 0; _tmp$1 = $pkg.ErrHijacked; n = _tmp; err = _tmp$1; return [n, err]; /* } */ case 2: /* */ if (!w.wroteHeader) { $s = 5; continue; } /* */ $s = 6; continue; /* if (!w.wroteHeader) { */ case 5: $r = w.WriteHeader(200); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 6: if (lenData === 0) { _tmp$2 = 0; _tmp$3 = $ifaceNil; n = _tmp$2; err = _tmp$3; return [n, err]; } if (!w.bodyAllowed()) { _tmp$4 = 0; _tmp$5 = $pkg.ErrBodyNotAllowed; n = _tmp$4; err = _tmp$5; return [n, err]; } w.written = (x = w.written, x$1 = new $Int64(0, lenData), new $Int64(x.$high + x$1.$high, x.$low + x$1.$low)); if (!((x$2 = w.contentLength, (x$2.$high === -1 && x$2.$low === 4294967295))) && (x$3 = w.written, x$4 = w.contentLength, (x$3.$high > x$4.$high || (x$3.$high === x$4.$high && x$3.$low > x$4.$low)))) { _tmp$6 = 0; _tmp$7 = $pkg.ErrContentLength; n = _tmp$6; err = _tmp$7; return [n, err]; } /* */ if (!(dataB === sliceType$2.nil)) { $s = 8; continue; } /* */ $s = 9; continue; /* if (!(dataB === sliceType$2.nil)) { */ case 8: _r$1 = w.w.Write(dataB); /* */ $s = 11; case 11: 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]; return [n, err]; $s = 10; continue; /* } else { */ case 9: _r$2 = w.w.WriteString(dataS); /* */ $s = 12; case 12: 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]; return [n, err]; /* } */ case 10: /* */ $s = -1; case -1: } 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 = 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; }; 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, 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; w = $f.w; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: w = this; w.handlerDone = true; /* */ 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.buf.Writer.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$2 = w.req.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; if (!(w.req.MultipartForm === ptrType$13.nil)) { w.req.MultipartForm.RemoveAll(); } if (!(w.req.Method === "HEAD") && !((x = w.contentLength, (x.$high === -1 && x.$low === 4294967295))) && w.bodyAllowed() && !((x$1 = w.contentLength, x$2 = w.written, (x$1.$high === x$2.$high && x$1.$low === x$2.$low)))) { w.closeAfterReply = true; } if (!($interfaceIsEqual(w.conn.werr, $ifaceNil))) { w.closeAfterReply = true; } /* */ $s = -1; case -1: } 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.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f; }; response.prototype.finishRequest = function() { return this.$val.finishRequest(); }; 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; case -1: } 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.buf === ptrType$23.nil)) { $s = 1; continue; } /* */ $s = 2; continue; /* if (!(c.buf === ptrType$23.nil)) { */ case 1: _r = c.buf.Writer.Flush(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _r; putBufioReader(c.buf.Reader); putBufioWriter(c.buf.Writer); c.buf = ptrType$23.nil; /* } */ case 2: /* */ $s = -1; case -1: } 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; } /* */ if (!($interfaceIsEqual(c.rwc, $ifaceNil))) { $s = 2; continue; } /* */ $s = 3; continue; /* if (!($interfaceIsEqual(c.rwc, $ifaceNil))) { */ case 2: _r = c.rwc.Close(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _r; c.rwc = $ifaceNil; /* } */ case 3: /* */ $s = -1; case -1: } 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; case -1: } 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, _ref, proto; _ref = proto; if (_ref === "" || _ref === "http/1.1" || _ref === "http/1.0") { return false; } return true; }; conn.ptr.prototype.setState = function(nc, state) { var $ptr, c, hook, nc, state, $s, $r; /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; c = $f.c; hook = $f.hook; nc = $f.nc; state = $f.state; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: c = this; hook = c.server.ConnState; /* */ if (!(hook === $throwNilPointerError)) { $s = 1; continue; } /* */ $s = 2; continue; /* if (!(hook === $throwNilPointerError)) { */ case 1: $r = hook(nc, state); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 2: /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: conn.ptr.prototype.setState }; } $f.$ptr = $ptr; $f.c = c; $f.hook = hook; $f.nc = nc; $f.state = state; $f.$s = $s; $f.$r = $r; return $f; }; conn.prototype.setState = function(nc, state) { return this.$val.setState(nc, state); }; conn.ptr.prototype.serve = function() { var $ptr, _arg, _arg$1, _entry, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, _tuple$2, _v, c, d, d$1, err, err$1, fn, h, neterr, ok, ok$1, origConn, proto, req, tlsConn, w, 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; _arg = $f._arg; _arg$1 = $f._arg$1; _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; _r$8 = $f._r$8; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _v = $f._v; c = $f.c; d = $f.d; d$1 = $f.d$1; err = $f.err; err$1 = $f.err$1; fn = $f.fn; h = $f.h; neterr = $f.neterr; ok = $f.ok; ok$1 = $f.ok$1; origConn = $f.origConn; proto = $f.proto; req = $f.req; tlsConn = $f.tlsConn; w = $f.w; 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); c = [c]; origConn = [origConn]; c[0] = this; origConn[0] = c[0].rwc; $deferred.push([(function(c, origConn) { return function $b() { var $ptr, _r, 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; 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))) { $s = 1; continue; } /* */ $s = 2; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ 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$1([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 = c[0].hijacked(); /* */ $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 = 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(origConn[0], 4); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 5: /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r = _r; $f.buf = buf; $f.err = err; $f.$s = $s; $f.$r = $r; return $f; }; })(c, origConn), []]); _tuple = $assertType(c[0].rwc, ptrType$30, true); tlsConn = _tuple[0]; ok = _tuple[1]; /* */ if (ok) { $s = 1; continue; } /* */ $s = 2; continue; /* if (ok) { */ case 1: d = c[0].server.ReadTimeout; /* */ if (!((d.$high === 0 && d.$low === 0))) { $s = 3; continue; } /* */ $s = 4; continue; /* if (!((d.$high === 0 && d.$low === 0))) { */ case 3: _r = c[0].rwc.SetReadDeadline(time.Now().Add(d)); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _r; /* } */ case 4: d$1 = c[0].server.WriteTimeout; /* */ if (!((d$1.$high === 0 && d$1.$low === 0))) { $s = 6; continue; } /* */ $s = 7; continue; /* if (!((d$1.$high === 0 && d$1.$low === 0))) { */ case 6: _r$1 = c[0].rwc.SetWriteDeadline(time.Now().Add(d$1)); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } _r$1; /* } */ case 7: _r$2 = tlsConn.Handshake(); /* */ $s = 9; case 9: 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 = 10; continue; } /* */ $s = 11; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 10: _r$3 = c[0].rwc.RemoteAddr(); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } _arg = _r$3; _arg$1 = err; $r = c[0].server.logf("http: TLS handshake error from %s: %v", new sliceType$1([_arg, _arg$1])); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } return; /* } */ case 11: c[0].tlsState = new tls.ConnectionState.ptr(); _r$4 = tlsConn.ConnectionState(); /* */ $s = 14; case 14: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } $copy(c[0].tlsState, _r$4, tls.ConnectionState); proto = c[0].tlsState.NegotiatedProtocol; /* */ if (validNPN(proto)) { $s = 15; continue; } /* */ $s = 16; continue; /* if (validNPN(proto)) { */ case 15: fn = (_entry = c[0].server.TLSNextProto[proto], _entry !== undefined ? _entry.v : $throwNilPointerError); /* */ if (!(fn === $throwNilPointerError)) { $s = 17; continue; } /* */ $s = 18; continue; /* if (!(fn === $throwNilPointerError)) { */ case 17: h = new initNPNRequest.ptr(tlsConn, new serverHandler.ptr(c[0].server)); $r = fn(c[0].server, tlsConn, new h.constructor.elem(h)); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 18: return; /* } */ case 16: /* } */ case 2: /* while (true) { */ case 20: _r$5 = c[0].readRequest(); /* */ $s = 22; case 22: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } _tuple$1 = _r$5; w = _tuple$1[0]; err$1 = _tuple$1[1]; /* */ if (!((x = c[0].lr.N, x$1 = c[0].server.initialLimitedReaderSize(), (x.$high === x$1.$high && x.$low === x$1.$low)))) { $s = 23; continue; } /* */ $s = 24; continue; /* if (!((x = c[0].lr.N, x$1 = c[0].server.initialLimitedReaderSize(), (x.$high === x$1.$high && x.$low === x$1.$low)))) { */ case 23: $r = c[0].setState(c[0].rwc, 1); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 24: /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 26; continue; } /* */ $s = 27; continue; /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 26: /* */ if ($interfaceIsEqual(err$1, errTooLarge)) { $s = 28; continue; } /* */ if ($interfaceIsEqual(err$1, io.EOF)) { $s = 29; continue; } /* */ $s = 30; continue; /* if ($interfaceIsEqual(err$1, errTooLarge)) { */ case 28: _r$6 = io.WriteString(c[0].rwc, "HTTP/1.1 413 Request Entity Too Large\r\n\r\n"); /* */ $s = 32; case 32: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } _r$6; $r = c[0].closeWriteAndWait(); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* break; */ $s = 21; continue; $s = 31; continue; /* } else if ($interfaceIsEqual(err$1, io.EOF)) { */ case 29: /* break; */ $s = 21; continue; $s = 31; continue; /* } else { */ case 30: _tuple$2 = $assertType(err$1, net.Error, true); neterr = _tuple$2[0]; ok$1 = _tuple$2[1]; if (!(ok$1)) { _v = false; $s = 36; continue s; } _r$7 = neterr.Timeout(); /* */ $s = 37; case 37: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } _v = _r$7; case 36: /* */ if (_v) { $s = 34; continue; } /* */ $s = 35; continue; /* if (_v) { */ case 34: /* break; */ $s = 21; continue; /* } */ case 35: /* } */ case 31: _r$8 = io.WriteString(c[0].rwc, "HTTP/1.1 400 Bad Request\r\n\r\n"); /* */ $s = 38; case 38: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } _r$8; /* break; */ $s = 21; continue; /* } */ case 27: req = w.req; /* */ if (req.expectsContinue()) { $s = 39; continue; } /* */ if (!(new Header(req.Header).get("Expect") === "")) { $s = 40; continue; } /* */ $s = 41; continue; /* if (req.expectsContinue()) { */ case 39: if (req.ProtoAtLeast(1, 1) && !((x$2 = req.ContentLength, (x$2.$high === 0 && x$2.$low === 0)))) { req.Body = new expectContinueReader.ptr(w, req.Body, false); } new Header(req.Header).Del("Expect"); $s = 41; continue; /* } else if (!(new Header(req.Header).get("Expect") === "")) { */ case 40: $r = w.sendExpectationFailed(); /* */ $s = 42; case 42: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* break; */ $s = 21; continue; /* } */ case 41: $r = new serverHandler.ptr(c[0].server).ServeHTTP(w, w.req); /* */ $s = 43; case 43: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } _r$9 = c[0].hijacked(); /* */ $s = 46; case 46: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } /* */ if (_r$9) { $s = 44; continue; } /* */ $s = 45; continue; /* if (_r$9) { */ case 44: return; /* } */ case 45: $r = w.finishRequest(); /* */ $s = 47; case 47: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* */ if (w.closeAfterReply) { $s = 48; continue; } /* */ $s = 49; continue; /* if (w.closeAfterReply) { */ case 48: /* */ if (w.requestBodyLimitHit) { $s = 50; continue; } /* */ $s = 51; continue; /* if (w.requestBodyLimitHit) { */ case 50: $r = c[0].closeWriteAndWait(); /* */ $s = 52; case 52: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ case 51: /* break; */ $s = 21; continue; /* } */ case 49: $r = c[0].setState(c[0].rwc, 2); /* */ $s = 53; case 53: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* } */ $s = 20; continue; case 21: /* */ $s = -1; case -1: } 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$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._v = _v; $f.c = c; $f.d = d; $f.d$1 = d$1; $f.err = err; $f.err$1 = err$1; $f.fn = fn; $f.h = h; $f.neterr = neterr; $f.ok = ok; $f.ok$1 = ok$1; $f.origConn = origConn; $f.proto = proto; $f.req = req; $f.tlsConn = tlsConn; $f.w = w; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } }; conn.prototype.serve = function() { return this.$val.serve(); }; 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; case -1: } 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, err, rwc, 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; _tuple = $f._tuple; buf = $f.buf; err = $f.err; rwc = $f.rwc; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: rwc = $ifaceNil; buf = ptrType$23.nil; err = $ifaceNil; w = this; /* */ 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: _r = w.conn.hijack(); /* */ $s = 4; case 4: 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$14.nil; } _tmp = rwc; _tmp$1 = buf; _tmp$2 = err; rwc = _tmp; buf = _tmp$1; err = _tmp$2; return [rwc, buf, err]; /* */ $s = -1; case -1: } return; } 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.err = err; $f.rwc = rwc; $f.w = w; $f.$s = $s; $f.$r = $r; return $f; }; response.prototype.Hijack = function() { return this.$val.Hijack(); }; response.ptr.prototype.CloseNotify = 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 = w.conn.closeNotify(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: response.ptr.prototype.CloseNotify }; } $f.$ptr = $ptr; $f._r = _r; $f.w = w; $f.$s = $s; $f.$r = $r; return $f; }; response.prototype.CloseNotify = function() { return this.$val.CloseNotify(); }; 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; case -1: } 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, 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; 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 = w.WriteHeader(code); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } _r$1 = fmt.Fprintln(w, new sliceType$1([new $String(error)])); /* */ $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; case -1: } return; } if ($f === undefined) { $f = { $blk: Error }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $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; case -1: } 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)) { $s = 2; continue; } /* */ $s = 3; continue; /* if ($interfaceIsEqual(err, $ifaceNil)) { */ case 2: oldpath = r.URL.Path; if (oldpath === "") { oldpath = "/"; } if (u.Scheme === "") { 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 = urlStr.substring(0, i); _tmp$1 = urlStr.substring(i); urlStr = _tmp; query = _tmp$1; } trailing = strings.HasSuffix(urlStr, "/"); urlStr = path.Clean(urlStr); if (trailing && !strings.HasSuffix(urlStr, "/")) { urlStr = urlStr + ("/"); } urlStr = urlStr + (query); } /* } */ case 3: _r$1 = w.Header(); /* */ $s = 4; case 4: 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", urlStr); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = w.WriteHeader(code); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* */ if (r.Method === "GET") { $s = 7; continue; } /* */ $s = 8; continue; /* if (r.Method === "GET") { */ case 7: _r$2 = htmlEscape(urlStr); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } note = "" + (_entry = statusText[code], _entry !== undefined ? _entry.v : "") + ".\n"; _r$3 = fmt.Fprintln(w, new sliceType$1([new $String(note)])); /* */ $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: /* */ $s = -1; case -1: } 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; } return _r; /* */ $s = -1; case -1: } 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; case -1: } 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; NewServeMux = function() { var $ptr; return new ServeMux.ptr(new sync.RWMutex.ptr(), new $Map(), false); }; $pkg.NewServeMux = NewServeMux; 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 && path$1.substring(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; 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]; return [h, pattern]; /* */ $s = -1; case -1: } 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; } return [h, pattern]; /* */ $s = -1; case -1: } 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; } 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; case -1: } 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$5, _key$6, handler, mux, n, 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; _entry = $f._entry; _entry$1 = $f._entry$1; _key$5 = $f._key$5; _key$6 = $f._key$6; handler = $f.handler; mux = $f.mux; n = $f.n; 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); 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[pattern], _entry !== undefined ? _entry.v : new muxEntry.ptr()).explicit) { $panic(new $String("http: multiple registrations for " + pattern)); } _key$5 = pattern; (mux.m || $throwRuntimeError("assignment to entry in nil map"))[_key$5] = { k: _key$5, 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[pattern.substring(0, (n - 1 >> 0))], _entry$1 !== undefined ? _entry$1.v : new muxEntry.ptr()).explicit) { path$1 = pattern; if (!((pattern.charCodeAt(0) === 47))) { path$1 = pattern.substring(strings.Index(pattern, "/")); } _key$6 = pattern.substring(0, (n - 1 >> 0)); (mux.m || $throwRuntimeError("assignment to entry in nil map"))[_key$6] = { k: _key$6, v: new muxEntry.ptr(false, RedirectHandler(path$1, 301), pattern) }; } /* */ $s = -1; case -1: } 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$5 = _key$5; $f._key$6 = _key$6; $f.handler = handler; $f.mux = mux; $f.n = n; $f.path$1 = path$1; $f.pattern = pattern; $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; case -1: } 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); }; ConnState.prototype.String = function() { var $ptr, _entry, c; c = this.$val; return (_entry = stateName[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, $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 = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: sh = $clone(this, serverHandler); handler = sh.srv.Handler; if ($interfaceIsEqual(handler, $ifaceNil)) { handler = $pkg.DefaultServeMux; } if (req.RequestURI === "*" && req.Method === "OPTIONS") { handler = (x = new globalOptionsHandler.ptr(), new x.constructor.elem(x)); } $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; case -1: } 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 = x; $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, $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 = $f.x; $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))) { return err; } _r = srv.Serve((x = new tcpKeepAliveListener.ptr($assertType(ln, ptrType$33)), new x.constructor.elem(x))); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } return _r; /* */ $s = -1; case -1: } 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 = x; $f.$s = $s; $f.$r = $r; return $f; }; Server.prototype.ListenAndServe = function() { return this.$val.ListenAndServe(); }; Server.ptr.prototype.Serve = function(l) { var $ptr, _r, _r$1, _r$2, _tuple, _tuple$1, _tuple$2, _v, c, e, err, 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; _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; _v = $f._v; c = $f.c; e = $f.e; err = $f.err; 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"), []]); tempDelay = new time.Duration(0, 0); /* while (true) { */ case 1: _r = l.Accept(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _tuple = _r; rw = _tuple[0]; e = _tuple[1]; /* */ if (!($interfaceIsEqual(e, $ifaceNil))) { $s = 4; continue; } /* */ $s = 5; continue; /* if (!($interfaceIsEqual(e, $ifaceNil))) { */ case 4: _tuple$1 = $assertType(e, net.Error, true); ne = _tuple$1[0]; ok = _tuple$1[1]; if (!(ok)) { _v = false; $s = 8; continue s; } _r$1 = ne.Temporary(); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } _v = _r$1; case 8: /* */ if (_v) { $s = 6; continue; } /* */ $s = 7; continue; /* if (_v) { */ case 6: 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$1([e, tempDelay])); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = time.Sleep(tempDelay); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* continue; */ $s = 1; continue; /* } */ case 7: return e; /* } */ case 5: tempDelay = new time.Duration(0, 0); _r$2 = srv.newConn(rw); /* */ $s = 12; case 12: 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 = _tuple$2[1]; /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 13; continue; } /* */ $s = 14; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 13: /* continue; */ $s = 1; continue; /* } */ case 14: $r = c.setState(c.rwc, 0); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $go($methodVal(c, "serve"), []); /* } */ $s = 1; continue; case 2: /* */ $s = -1; case -1: } 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._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._v = _v; $f.c = c; $f.e = e; $f.err = err; $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.doKeepAlives = function() { var $ptr, s; s = this; return atomic.LoadInt32((s.$ptr_disableKeepAlives || (s.$ptr_disableKeepAlives = new ptrType$34(function() { return this.$target.disableKeepAlives; }, function($v) { this.$target.disableKeepAlives = $v; }, s)))) === 0; }; Server.prototype.doKeepAlives = function() { return this.$val.doKeepAlives(); }; Server.ptr.prototype.SetKeepAlivesEnabled = function(v) { var $ptr, s, v; s = this; if (v) { atomic.StoreInt32((s.$ptr_disableKeepAlives || (s.$ptr_disableKeepAlives = new ptrType$34(function() { return this.$target.disableKeepAlives; }, function($v) { this.$target.disableKeepAlives = $v; }, s))), 0); } else { atomic.StoreInt32((s.$ptr_disableKeepAlives || (s.$ptr_disableKeepAlives = new ptrType$34(function() { return this.$target.disableKeepAlives; }, function($v) { this.$target.disableKeepAlives = $v; }, s))), 1); } }; 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$32.nil)) { $s = 1; continue; } /* */ $s = 2; continue; /* if (!(s.ErrorLog === ptrType$32.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; case -1: } 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, _tuple, _tuple$1, addr, certFile, config, err, keyFile, ln, srv, tlsListener, 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; addr = $f.addr; certFile = $f.certFile; config = $f.config; err = $f.err; keyFile = $f.keyFile; ln = $f.ln; srv = $f.srv; tlsListener = $f.tlsListener; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: srv = this; addr = srv.Addr; if (addr === "") { addr = ":https"; } config = new tls.Config.ptr($ifaceNil, $throwNilPointerError, sliceType$11.nil, false, $throwNilPointerError, ptrType$35.nil, sliceType.nil, "", 0, ptrType$35.nil, false, sliceType$12.nil, false, false, arrayType$4.zero(), $ifaceNil, 0, 0, sliceType$13.nil, new sync.Once.ptr()); if (!(srv.TLSConfig === ptrType$31.nil)) { $copy(config, srv.TLSConfig, tls.Config); } if (config.NextProtos === sliceType.nil) { config.NextProtos = new sliceType(["http/1.1"]); } err = $ifaceNil; config.Certificates = $makeSlice(sliceType$11, 1); _r = tls.LoadX509KeyPair(certFile, keyFile); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _tuple = _r; $copy((x = config.Certificates, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0])), _tuple[0], tls.Certificate); err = _tuple[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } _tuple$1 = net.Listen("tcp", addr); ln = _tuple$1[0]; err = _tuple$1[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } tlsListener = tls.NewListener((x$1 = new tcpKeepAliveListener.ptr($assertType(ln, ptrType$33)), new x$1.constructor.elem(x$1)), config); _r$1 = srv.Serve(tlsListener); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } return _r$1; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Server.ptr.prototype.ListenAndServeTLS }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.addr = addr; $f.certFile = certFile; $f.config = config; $f.err = err; $f.keyFile = keyFile; $f.ln = ln; $f.srv = srv; $f.tlsListener = tlsListener; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f; }; Server.prototype.ListenAndServeTLS = function(certFile, keyFile) { return this.$val.ListenAndServeTLS(certFile, keyFile); }; tcpKeepAliveListener.ptr.prototype.Accept = function() { var $ptr, _r, _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; _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 = $clone(this, tcpKeepAliveListener); _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))) { return [c, err]; } tc.SetKeepAlive(true); tc.SetKeepAlivePeriod(new time.Duration(41, 3906340864)); _tmp = tc; _tmp$1 = $ifaceNil; c = _tmp; err = _tmp$1; return [c, err]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: tcpKeepAliveListener.ptr.prototype.Accept }; } $f.$ptr = $ptr; $f._r = _r; $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, $s, $r; /* */ $s = 0; var $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 = $f.x; $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 = r.ContentLength, (x.$high === 0 && x.$low === 0)))) { $s = 3; continue; } /* */ $s = 4; continue; /* if (!((x = r.ContentLength, (x.$high === 0 && x.$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; case -1: } 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 = x; $f.$s = $s; $f.$r = $r; return $f; }; globalOptionsHandler.prototype.ServeHTTP = function(w, r) { return this.$val.ServeHTTP(w, r); }; eofReaderWithWriteTo.ptr.prototype.WriteTo = function(param) { var $ptr, param; return [new $Int64(0, 0), $ifaceNil]; }; eofReaderWithWriteTo.prototype.WriteTo = function(param) { return this.$val.WriteTo(param); }; eofReaderWithWriteTo.ptr.prototype.Read = function(param) { var $ptr, param; return [0, io.EOF]; }; eofReaderWithWriteTo.prototype.Read = function(param) { return this.$val.Read(param); }; 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 = $clone(this, initNPNRequest); /* */ if (req.TLS === ptrType$2.nil) { $s = 1; continue; } /* */ $s = 2; continue; /* if (req.TLS === ptrType$2.nil) { */ case 1: req.TLS = new tls.ConnectionState.ptr(0, false, false, 0, "", false, "", sliceType$14.nil, sliceType$15.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; } $copy(req.TLS, _r, tls.ConnectionState); /* } */ case 2: if ($interfaceIsEqual(req.Body, $ifaceNil)) { req.Body = eofReader; } /* */ 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 = h.h.ServeHTTP(rw, req); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } /* */ $s = -1; case -1: } 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); }; 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 = $clone(this, checkConnErrorWriter); _r = w.c.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]; if (!($interfaceIsEqual(err, $ifaceNil)) && $interfaceIsEqual(w.c.werr, $ifaceNil)) { w.c.werr = err; } return [n, err]; /* */ $s = -1; case -1: } 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); }; 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") : 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") : _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 = 4; continue; } /* */ $s = 5; continue; /* if (!(ct === "")) { */ case 4: return ct; /* } */ case 5: _i++; /* } */ $s = 1; continue; case 2: return "application/octet-stream"; /* */ $s = -1; case -1: } 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, b; return !((bytes.IndexByte(new sliceType$2($stringToBytes("\t\n\f\r ")), b) === -1)); }; 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; m = this; if (m.skipWS) { data = $subslice(data, firstNonWS); } 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") : _ref.$array[_ref.$offset + _i]); db = (((i < 0 || i >= data.$length) ? $throwRuntimeError("index out of range") : data.$array[data.$offset + i]) & mask) >>> 0; if (!((db === (x = m.pat, ((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$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; 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") : _ref.$array[_ref.$offset + _i]); db = ((i < 0 || i >= data.$length) ? $throwRuntimeError("index out of range") : data.$array[data.$offset + i]); if (65 <= b && b <= 90) { db = (db & (223)) >>> 0; } if (!((b === db))) { return ""; } _i++; } db$1 = (x = h.$length, ((x < 0 || x >= data.$length) ? $throwRuntimeError("index out of range") : data.$array[data.$offset + x])); 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); }; textSig.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") : _ref.$array[_ref.$offset + _i]); if (0 <= b && b <= 8 || b === 11 || 14 <= b && b <= 26 || 28 <= b && b <= 31) { return ""; } _i++; } return "text/plain; charset=utf-8"; }; $ptrType(textSig).prototype.match = function(data, firstNonWS) { return new textSig(this.$get()).match(data, firstNonWS); }; 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); }; newTransferWriter = function(r) { var $ptr, _r, _r$1, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, atLeastHTTP11, buf, err, n, r, rerr, rr, rr$1, t, 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; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; atLeastHTTP11 = $f.atLeastHTTP11; buf = $f.buf; err = $f.err; n = $f.n; r = $f.r; rerr = $f.rerr; rr = $f.rr; rr$1 = $f.rr$1; t = $f.t; 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: t = ptrType$37.nil; err = $ifaceNil; t = new transferWriter.ptr("", $ifaceNil, $ifaceNil, false, new $Int64(0, 0), false, sliceType.nil, false); atLeastHTTP11 = false; _ref = r; /* */ if ($assertType(_ref, ptrType$1, true)[1]) { $s = 1; continue; } /* */ if ($assertType(_ref, ptrType, true)[1]) { $s = 2; continue; } /* */ $s = 3; continue; /* if ($assertType(_ref, ptrType$1, true)[1]) { */ case 1: rr = _ref.$val; /* */ if (!((x = rr.ContentLength, (x.$high === 0 && x.$low === 0))) && $interfaceIsEqual(rr.Body, $ifaceNil)) { $s = 4; continue; } /* */ $s = 5; continue; /* if (!((x = rr.ContentLength, (x.$high === 0 && x.$low === 0))) && $interfaceIsEqual(rr.Body, $ifaceNil)) { */ case 4: _r = fmt.Errorf("http: Request.ContentLength=%d with nil Body", new sliceType$1([rr.ContentLength])); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _tmp = ptrType$37.nil; _tmp$1 = _r; t = _tmp; err = _tmp$1; return [t, err]; /* } */ case 5: t.Method = rr.Method; t.Body = rr.Body; t.BodyCloser = rr.Body; t.ContentLength = rr.ContentLength; t.Close = rr.Close; t.TransferEncoding = rr.TransferEncoding; t.Trailer = rr.Trailer; atLeastHTTP11 = rr.ProtoAtLeast(1, 1); /* */ if (!($interfaceIsEqual(t.Body, $ifaceNil)) && (t.TransferEncoding.$length === 0) && atLeastHTTP11) { $s = 7; continue; } /* */ $s = 8; continue; /* if (!($interfaceIsEqual(t.Body, $ifaceNil)) && (t.TransferEncoding.$length === 0) && atLeastHTTP11) { */ case 7: /* */ if ((x$1 = t.ContentLength, (x$1.$high === 0 && x$1.$low === 0))) { $s = 9; continue; } /* */ $s = 10; continue; /* if ((x$1 = t.ContentLength, (x$1.$high === 0 && x$1.$low === 0))) { */ case 9: buf = $clone(arrayType$1.zero(), arrayType$1); _r$1 = io.ReadFull(t.Body, new sliceType$2(buf)); /* */ $s = 11; case 11: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } _tuple = _r$1; n = _tuple[0]; rerr = _tuple[1]; if (!($interfaceIsEqual(rerr, $ifaceNil)) && !($interfaceIsEqual(rerr, io.EOF))) { t.ContentLength = new $Int64(-1, 4294967295); t.Body = new errorReader.ptr(rerr); } else if (n === 1) { t.ContentLength = new $Int64(-1, 4294967295); t.Body = io.MultiReader(new sliceType$10([bytes.NewReader(new sliceType$2(buf)), t.Body])); } else { t.Body = $ifaceNil; t.BodyCloser = $ifaceNil; } /* } */ case 10: if ((x$2 = t.ContentLength, (x$2.$high < 0 || (x$2.$high === 0 && x$2.$low < 0)))) { t.TransferEncoding = new sliceType(["chunked"]); } /* } */ case 8: $s = 3; continue; /* } else if ($assertType(_ref, ptrType, true)[1]) { */ case 2: rr$1 = _ref.$val; if (!(rr$1.Request === ptrType$1.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 = noBodyExpected(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.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; return [t, err]; /* */ $s = -1; case -1: } 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._tuple = _tuple; $f.atLeastHTTP11 = atLeastHTTP11; $f.buf = buf; $f.err = err; $f.n = n; $f.r = r; $f.rerr = rerr; $f.rr = rr; $f.rr$1 = rr$1; $f.t = t; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f; }; noBodyExpected = function(requestMethod) { var $ptr, requestMethod; return requestMethod === "HEAD"; }; transferWriter.ptr.prototype.shouldSendContentLength = function() { var $ptr, t, x, x$1; t = this; if (chunked(t.TransferEncoding)) { return false; } if ((x = t.ContentLength, (x.$high > 0 || (x.$high === 0 && x.$low > 0)))) { return true; } if (t.Method === "POST" || t.Method === "PUT") { return true; } if ((x$1 = t.ContentLength, (x$1.$high === 0 && x$1.$low === 0)) && isIdentity(t.TransferEncoding)) { return true; } return false; }; transferWriter.prototype.shouldSendContentLength = function() { return this.$val.shouldSendContentLength(); }; transferWriter.ptr.prototype.WriteHeader = function(w) { var $ptr, _entry, _i, _keys, _r, _r$1, _r$2, _r$3, _r$4, _ref, _ref$1, _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; _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; _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; 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 = 4; continue; } /* */ $s = 5; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 4: return err; /* } */ case 5: /* } */ case 2: /* */ if (t.shouldSendContentLength()) { $s = 6; continue; } /* */ if (chunked(t.TransferEncoding)) { $s = 7; continue; } /* */ $s = 8; continue; /* if (t.shouldSendContentLength()) { */ case 6: _r$1 = io.WriteString(w, "Content-Length: "); /* */ $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; err$1 = _tuple$1[1]; /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 10; continue; } /* */ $s = 11; continue; /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 10: return err$1; /* } */ case 11: _r$2 = io.WriteString(w, strconv.FormatInt(t.ContentLength, 10) + "\r\n"); /* */ $s = 12; case 12: 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 = 13; continue; } /* */ $s = 14; continue; /* if (!($interfaceIsEqual(err$2, $ifaceNil))) { */ case 13: return err$2; /* } */ case 14: $s = 8; continue; /* } else if (chunked(t.TransferEncoding)) { */ case 7: _r$3 = io.WriteString(w, "Transfer-Encoding: chunked\r\n"); /* */ $s = 15; case 15: 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 = 16; continue; } /* */ $s = 17; continue; /* if (!($interfaceIsEqual(err$3, $ifaceNil))) { */ case 16: return err$3; /* } */ case 17: /* } */ case 8: /* */ if (!(t.Trailer === false)) { $s = 18; continue; } /* */ $s = 19; continue; /* if (!(t.Trailer === false)) { */ case 18: keys = $makeSlice(sliceType, 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); _ref$1 = k; if (_ref$1 === "Transfer-Encoding" || _ref$1 === "Trailer" || _ref$1 === "Content-Length") { return new badStringError.ptr("invalid Trailer key", k); } keys = $append(keys, k); _i++; } /* */ if (keys.$length > 0) { $s = 20; continue; } /* */ $s = 21; continue; /* if (keys.$length > 0) { */ case 20: $r = sort.Strings(keys); /* */ $s = 22; case 22: 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 = 23; case 23: 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 = 24; continue; } /* */ $s = 25; continue; /* if (!($interfaceIsEqual(err$4, $ifaceNil))) { */ case 24: return err$4; /* } */ case 25: /* } */ case 21: /* } */ case 19: return $ifaceNil; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: transferWriter.ptr.prototype.WriteHeader }; } $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._r$4 = _r$4; $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.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, cw, err, err$1, ncopy, nextra, t, 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; _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; cw = $f.cw; err = $f.err; err$1 = $f.err$1; ncopy = $f.ncopy; nextra = $f.nextra; t = $f.t; 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: 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 = t.ContentLength, (x.$high === -1 && x.$low === 4294967295))) { $s = 4; continue; } /* */ $s = 5; continue; /* if (chunked(t.TransferEncoding)) { */ case 3: 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 = _r; err = _tuple[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 = t.ContentLength, (x.$high === -1 && x.$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$1 = _r$2; ncopy = _tuple$1[0]; err = _tuple$1[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$2 = _r$3; ncopy = _tuple$2[0]; err = _tuple$2[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { 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$3 = _r$4; nextra = _tuple$3[0]; err = _tuple$3[1]; ncopy = (x$1 = nextra, new $Int64(ncopy.$high + x$1.$high, ncopy.$low + x$1.$low)); /* } */ case 6: if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } _r$5 = t.BodyCloser.Close(); /* */ $s = 14; case 14: 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))) { $s = 15; continue; } /* */ $s = 16; continue; /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 15: return err; /* } */ case 16: /* } */ case 2: /* */ if (!t.ResponseToHEAD && !((x$2 = t.ContentLength, (x$2.$high === -1 && x$2.$low === 4294967295))) && !((x$3 = t.ContentLength, (x$3.$high === ncopy.$high && x$3.$low === ncopy.$low)))) { $s = 17; continue; } /* */ $s = 18; continue; /* if (!t.ResponseToHEAD && !((x$2 = t.ContentLength, (x$2.$high === -1 && x$2.$low === 4294967295))) && !((x$3 = t.ContentLength, (x$3.$high === ncopy.$high && x$3.$low === ncopy.$low)))) { */ case 17: _r$6 = fmt.Errorf("http: ContentLength=%d with Body length %d", new sliceType$1([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; } 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$1 = _r$7; /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 25; continue; } /* */ $s = 26; continue; /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 25: return err$1; /* } */ case 26: /* } */ case 23: _r$8 = io.WriteString(w, "\r\n"); /* */ $s = 27; case 27: 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]; /* } */ case 21: return err; /* */ $s = -1; case -1: } 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.cw = cw; $f.err = err; $f.err$1 = err$1; $f.ncopy = ncopy; $f.nextra = nextra; $f.t = t; $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; }; transferWriter.prototype.WriteBody = function(w) { return this.$val.WriteBody(w); }; 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.nil; }; readTransfer = function(msg, r) { var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _ref, _ref$1, _ref$2, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, _tuple$3, 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; _r$4 = $f._r$4; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; 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.nil, false, false); isResponse = false; _ref = msg; /* */ if ($assertType(_ref, ptrType, true)[1]) { $s = 1; continue; } /* */ if ($assertType(_ref, ptrType$1, true)[1]) { $s = 2; continue; } /* */ $s = 3; continue; /* if ($assertType(_ref, ptrType, true)[1]) { */ case 1: rr = _ref.$val; t.Header = rr.Header; t.StatusCode = rr.StatusCode; t.ProtoMajor = rr.ProtoMajor; t.ProtoMinor = rr.ProtoMinor; _r = shouldClose(t.ProtoMajor, t.ProtoMinor, t.Header, true); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } t.Close = _r; isResponse = true; if (!(rr.Request === ptrType$1.nil)) { t.RequestMethod = rr.Request.Method; } $s = 4; continue; /* } else if ($assertType(_ref, ptrType$1, true)[1]) { */ case 2: rr$1 = _ref.$val; t.Header = rr$1.Header; t.ProtoMajor = rr$1.ProtoMajor; t.ProtoMinor = rr$1.ProtoMinor; t.StatusCode = 200; $s = 4; continue; /* } else { */ case 3: rr$2 = _ref; $panic(new $String("unexpected type")); /* } */ case 4: if ((t.ProtoMajor === 0) && (t.ProtoMinor === 0)) { _tmp = 1; _tmp$1 = 1; t.ProtoMajor = _tmp; t.ProtoMinor = _tmp$1; } _r$1 = fixTransferEncoding(t.RequestMethod, t.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; t.TransferEncoding = _tuple[0]; err = _tuple[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { err = err; return err; } _r$2 = fixLength(isResponse, t.StatusCode, t.RequestMethod, t.Header, t.TransferEncoding); /* */ $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; realLength = _tuple$1[0]; err = _tuple$1[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { err = err; return err; } /* */ if (isResponse && t.RequestMethod === "HEAD") { $s = 8; continue; } /* */ $s = 9; continue; /* if (isResponse && t.RequestMethod === "HEAD") { */ case 8: _r$3 = parseContentLength(new Header(t.Header).get("Content-Length")); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } _tuple$2 = _r$3; n = _tuple$2[0]; err$1 = _tuple$2[1]; /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 12; continue; } /* */ $s = 13; continue; /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 12: err = err$1; return err; $s = 14; continue; /* } else { */ case 13: t.ContentLength = n; /* } */ case 14: $s = 10; continue; /* } else { */ case 9: t.ContentLength = realLength; /* } */ case 10: _r$4 = fixTrailer(t.Header, t.TransferEncoding); /* */ $s = 15; case 15: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } _tuple$3 = _r$4; t.Trailer = _tuple$3[0]; err = _tuple$3[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { err = err; return err; } _ref$1 = msg; if ($assertType(_ref$1, ptrType, true)[1]) { if ((realLength.$high === -1 && realLength.$low === 4294967295) && !chunked(t.TransferEncoding) && bodyAllowedForStatus(t.StatusCode)) { t.Close = true; } } if (chunked(t.TransferEncoding)) { if (noBodyExpected(t.RequestMethod)) { t.Body = eofReader; } else { t.Body = new body.ptr(internal.NewChunkedReader(r), msg, r, t.Close, new sync.Mutex.ptr(), false); } } else if ((realLength.$high === 0 && realLength.$low === 0)) { t.Body = eofReader; } else if ((realLength.$high > 0 || (realLength.$high === 0 && realLength.$low > 0))) { t.Body = new body.ptr(io.LimitReader(r, realLength), $ifaceNil, ptrType$19.nil, t.Close, new sync.Mutex.ptr(), false); } else { if (t.Close) { t.Body = new body.ptr(r, $ifaceNil, ptrType$19.nil, t.Close, new sync.Mutex.ptr(), false); } else { t.Body = eofReader; } } _ref$2 = msg; if ($assertType(_ref$2, ptrType$1, 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, 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; return err; /* */ $s = -1; case -1: } 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._r$4 = _r$4; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $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") : te.$array[te.$offset + 0]) === "chunked"; }; isIdentity = function(te) { var $ptr, te; return (te.$length === 1) && (0 >= te.$length ? $throwRuntimeError("index out of range") : te.$array[te.$offset + 0]) === "identity"; }; fixTransferEncoding = function(requestMethod, header) { var $ptr, _entry, _i, _r, _r$1, _ref, _tuple, encoding, encodings, header, present, raw, requestMethod, te, 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; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _ref = $f._ref; _tuple = $f._tuple; encoding = $f.encoding; encodings = $f.encodings; header = $f.header; present = $f.present; raw = $f.raw; requestMethod = $f.requestMethod; te = $f.te; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: _tuple = (_entry = header["Transfer-Encoding"], _entry !== undefined ? [_entry.v, true] : [sliceType.nil, false]); raw = _tuple[0]; present = _tuple[1]; if (!present) { return [sliceType.nil, $ifaceNil]; } delete header["Transfer-Encoding"]; encodings = strings.Split((0 >= raw.$length ? $throwRuntimeError("index out of range") : raw.$array[raw.$offset + 0]), ","); te = $makeSlice(sliceType, 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") : _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")) { return [sliceType.nil, new badStringError.ptr("unsupported transfer encoding", encoding)]; } te = $subslice(te, 0, (te.$length + 1 >> 0)); (x = te.$length - 1 >> 0, ((x < 0 || x >= te.$length) ? $throwRuntimeError("index out of range") : te.$array[te.$offset + x] = encoding)); _i++; /* } */ $s = 1; continue; case 2: if (te.$length > 1) { return [sliceType.nil, new badStringError.ptr("too many transfer encodings", strings.Join(te, ","))]; } if (te.$length > 0) { delete header["Content-Length"]; return [te, $ifaceNil]; } return [sliceType.nil, $ifaceNil]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: 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.header = header; $f.present = present; $f.raw = raw; $f.requestMethod = requestMethod; $f.te = te; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; }; fixLength = function(isResponse, status, requestMethod, header, te) { var $ptr, _q, _r, _r$1, _ref, _tuple, cl, err, header, 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; _q = $f._q; _r = $f._r; _r$1 = $f._r$1; _ref = $f._ref; _tuple = $f._tuple; cl = $f.cl; err = $f.err; header = $f.header; 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: if (noBodyExpected(requestMethod)) { return [new $Int64(0, 0), $ifaceNil]; } if ((_q = status / 100, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) === 1) { return [new $Int64(0, 0), $ifaceNil]; } _ref = status; if (_ref === 204 || _ref === 304) { return [new $Int64(0, 0), $ifaceNil]; } if (chunked(te)) { return [new $Int64(-1, 4294967295), $ifaceNil]; } _r = strings.TrimSpace(new Header(header).get("Content-Length")); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } cl = _r; /* */ if (!(cl === "")) { $s = 2; continue; } /* */ $s = 3; continue; /* if (!(cl === "")) { */ case 2: _r$1 = parseContentLength(cl); /* */ $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; n = _tuple[0]; err = _tuple[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { return [new $Int64(-1, 4294967295), err]; } return [n, $ifaceNil]; $s = 4; continue; /* } else { */ case 3: new Header(header).Del("Content-Length"); /* } */ case 4: if (!isResponse && requestMethod === "GET") { return [new $Int64(0, 0), $ifaceNil]; } return [new $Int64(-1, 4294967295), $ifaceNil]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: fixLength }; } $f.$ptr = $ptr; $f._q = _q; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f._tuple = _tuple; $f.cl = cl; $f.err = err; $f.header = header; $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, _r, _r$1, _r$2, header, major, minor, removeCloseHeader, $s, $r; /* */ $s = 0; var $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; header = $f.header; major = $f.major; minor = $f.minor; removeCloseHeader = $f.removeCloseHeader; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: /* */ if (major < 1) { $s = 1; continue; } /* */ if ((major === 1) && (minor === 0)) { $s = 2; continue; } /* */ $s = 3; continue; /* if (major < 1) { */ case 1: return true; $s = 4; continue; /* } else if ((major === 1) && (minor === 0)) { */ case 2: _r = strings.ToLower(new Header(header).get("Connection")); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _r$1 = strings.Contains(_r, "keep-alive"); /* */ $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; } /* */ $s = 6; continue; /* if (!_r$1) { */ case 5: return true; /* } */ case 6: return false; $s = 4; continue; /* } else { */ case 3: _r$2 = strings.ToLower(new Header(header).get("Connection")); /* */ $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 === "close") { $s = 9; continue; } /* */ $s = 10; continue; /* if (_r$2 === "close") { */ case 9: if (removeCloseHeader) { new Header(header).Del("Connection"); } return true; /* } */ case 10: /* } */ case 4: return false; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: shouldClose }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.header = header; $f.major = major; $f.minor = minor; $f.removeCloseHeader = removeCloseHeader; $f.$s = $s; $f.$r = $r; return $f; }; fixTrailer = function(header, te) { var $ptr, _i, _key$5, _r, _r$1, _ref, _ref$1, header, key, keys, raw, te, trailer, $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$5 = $f._key$5; _r = $f._r; _r$1 = $f._r$1; _ref = $f._ref; _ref$1 = $f._ref$1; header = $f.header; key = $f.key; keys = $f.keys; raw = $f.raw; te = $f.te; trailer = $f.trailer; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: raw = new Header(header).get("Trailer"); if (raw === "") { return [false, $ifaceNil]; } new Header(header).Del("Trailer"); trailer = new $Map(); keys = strings.Split(raw, ","); _ref = keys; _i = 0; /* while (true) { */ case 1: /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } key = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]); _r = strings.TrimSpace(key); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _r$1 = CanonicalHeaderKey(_r); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } key = _r$1; _ref$1 = key; if (_ref$1 === "Transfer-Encoding" || _ref$1 === "Trailer" || _ref$1 === "Content-Length") { return [false, new badStringError.ptr("bad trailer key", key)]; } _key$5 = key; (trailer || $throwRuntimeError("assignment to entry in nil map"))[_key$5] = { k: _key$5, v: sliceType.nil }; _i++; /* } */ $s = 1; continue; case 2: if ($keys(trailer).length === 0) { return [false, $ifaceNil]; } if (!chunked(te)) { return [false, $pkg.ErrUnexpectedTrailer]; } return [trailer, $ifaceNil]; /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: fixTrailer }; } $f.$ptr = $ptr; $f._i = _i; $f._key$5 = _key$5; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f._ref$1 = _ref$1; $f.header = header; $f.key = key; $f.keys = keys; $f.raw = raw; $f.te = te; $f.trailer = trailer; $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; 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]; return [n, err]; /* */ $s = -1; case -1: } 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, _tuple, _tuple$1, _tuple$2, b, e, err, lr, lr$1, n, ok, ok$1, 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; _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; 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 = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: n = 0; err = $ifaceNil; b = this; _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: /* */ 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))) { $s = 8; continue; } /* */ $s = 9; continue; /* if (!($interfaceIsEqual(e, $ifaceNil))) { */ case 8: err = e; /* } */ case 9: b.hdr = $ifaceNil; $s = 6; continue; /* } else { */ case 5: _tuple$1 = $assertType(b.src, ptrType$25, true); lr = _tuple$1[0]; ok = _tuple$1[1]; if (ok && (x = lr.N, (x.$high > 0 || (x.$high === 0 && x.$low > 0)))) { err = io.ErrUnexpectedEOF; } /* } */ case 6: /* } */ case 3: if ($interfaceIsEqual(err, $ifaceNil) && n > 0) { _tuple$2 = $assertType(b.src, ptrType$25, true); lr$1 = _tuple$2[0]; ok$1 = _tuple$2[1]; if (ok$1 && (x$1 = lr$1.N, (x$1.$high === 0 && x$1.$low === 0))) { err = io.EOF; } } _tmp = n; _tmp$1 = err; n = _tmp; err = _tmp$1; return [n, err]; /* */ $s = -1; case -1: } 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._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 = x; $f.x$1 = x$1; $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)) { return true; } if (!($interfaceIsEqual(err, $ifaceNil))) { /* break; */ $s = 2; continue; } peekSize = peekSize + (1) >> 0; /* } */ $s = 1; continue; case 2: return false; /* */ $s = -1; case -1: } 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, _r$4, _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; _r$4 = $f._r$4; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; b = $f.b; buf = $f.buf; err = $f.err; hdr = $f.hdr; rr = $f.rr; rr$1 = $f.rr$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: 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.ReadByte(); /* */ $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.r.ReadByte(); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } _r$2; return $ifaceNil; /* } */ case 3: if (buf.$length < 2) { return errTrailerEOF; } if (!($interfaceIsEqual(err, $ifaceNil))) { return err; } _r$3 = seeUpcomingDoubleCRLF(b.r); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } /* */ if (!_r$3) { $s = 6; continue; } /* */ $s = 7; continue; /* if (!_r$3) { */ case 6: return errors.New("http: suspiciously long trailer after chunked body"); /* } */ case 7: _r$4 = textproto.NewReader(b.r).ReadMIMEHeader(); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } _tuple$1 = _r$4; hdr = _tuple$1[0]; err = _tuple$1[1]; if (!($interfaceIsEqual(err, $ifaceNil))) { if ($interfaceIsEqual(err, io.EOF)) { return errTrailerEOF; } return err; } _ref = b.hdr; if ($assertType(_ref, ptrType$1, true)[1]) { rr = _ref.$val; mergeSetHeader((rr.$ptr_Trailer || (rr.$ptr_Trailer = new ptrType$38(function() { return this.$target.Trailer; }, function($v) { this.$target.Trailer = $v; }, rr))), hdr); } else if ($assertType(_ref, ptrType, true)[1]) { rr$1 = _ref.$val; mergeSetHeader((rr$1.$ptr_Trailer || (rr$1.$ptr_Trailer = new ptrType$38(function() { return this.$target.Trailer; }, function($v) { this.$target.Trailer = $v; }, rr$1))), hdr); } return $ifaceNil; /* */ $s = -1; case -1: } 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._r$4 = _r$4; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.b = b; $f.buf = buf; $f.err = err; $f.hdr = hdr; $f.rr = rr; $f.rr$1 = rr$1; $f.$s = $s; $f.$r = $r; return $f; }; body.prototype.readTrailer = function() { return this.$val.readTrailer(); }; mergeSetHeader = function(dst, src) { var $ptr, _entry, _i, _key$5, _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$5 = k; (dst.$get() || $throwRuntimeError("assignment to entry in nil map"))[_key$5] = { k: _key$5, v: vv }; _i++; } }; body.ptr.prototype.Close = function() { var $ptr, _r, _tuple, b, 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; _tuple = $f._tuple; b = $f.b; 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); 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) { return $ifaceNil; } err = $ifaceNil; /* */ if ($interfaceIsEqual(b.hdr, $ifaceNil) && b.closing) { $s = 2; continue; } /* */ $s = 3; continue; /* if ($interfaceIsEqual(b.hdr, $ifaceNil) && b.closing) { */ case 2: $s = 4; continue; /* } else { */ case 3: _r = io.Copy(ioutil.Discard, (x = new bodyLocked.ptr(b), new x.constructor.elem(x))); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } _tuple = _r; err = _tuple[1]; /* } */ case 4: b.closed = true; return err; /* */ $s = -1; case -1: } 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._tuple = _tuple; $f.b = b; $f.err = err; $f.x = x; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } }; body.prototype.Close = function() { return this.$val.Close(); }; 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 = $clone(this, bodyLocked); if (bl.b.closed) { _tmp = 0; _tmp$1 = $pkg.ErrBodyReadAfterClose; n = _tmp; err = _tmp$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]; return [n, err]; /* */ $s = -1; case -1: } 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 === "") { 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))) { return [new $Int64(0, 0), new badStringError.ptr("bad Content-Length", cl)]; } return [n, $ifaceNil]; /* */ $s = -1; case -1: } 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; }; ptrType$43.methods = [{prop: "RoundTrip", name: "RoundTrip", pkg: "", typ: $funcType([ptrType$1], [ptrType, $error], false)}, {prop: "CancelRequest", name: "CancelRequest", pkg: "", typ: $funcType([ptrType$1], [], false)}]; ptrType$44.methods = [{prop: "send", name: "send", pkg: "net/http", typ: $funcType([ptrType$1], [ptrType, $error], false)}, {prop: "Do", name: "Do", pkg: "", typ: $funcType([ptrType$1], [ptrType, $error], false)}, {prop: "transport", name: "transport", pkg: "net/http", typ: $funcType([], [RoundTripper], false)}, {prop: "Get", name: "Get", pkg: "", typ: $funcType([$String], [ptrType, $error], false)}, {prop: "doFollowingRedirects", name: "doFollowingRedirects", pkg: "net/http", typ: $funcType([ptrType$1, funcType$2], [ptrType, $error], false)}, {prop: "Post", name: "Post", pkg: "", typ: $funcType([$String, $String, io.Reader], [ptrType, $error], false)}, {prop: "PostForm", name: "PostForm", pkg: "", typ: $funcType([$String, url.Values], [ptrType, $error], false)}, {prop: "Head", name: "Head", pkg: "", typ: $funcType([$String], [ptrType, $error], false)}]; ptrType$45.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}]; ptrType$7.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], 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$1], [sliceType$8, ptrType$11], false)}, {prop: "WriteSubset", name: "WriteSubset", pkg: "", typ: $funcType([io.Writer, mapType$1], [$error], false)}]; stringWriter.methods = [{prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([$String], [$Int, $error], false)}]; ptrType$11.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$48.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; ptrType$49.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; ptrType$1.methods = [{prop: "ProtoAtLeast", name: "ProtoAtLeast", pkg: "", typ: $funcType([$Int, $Int], [$Bool], false)}, {prop: "UserAgent", name: "UserAgent", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Cookies", name: "Cookies", pkg: "", typ: $funcType([], [sliceType$6], false)}, {prop: "Cookie", name: "Cookie", pkg: "", typ: $funcType([$String], [ptrType$7, $error], false)}, {prop: "AddCookie", name: "AddCookie", pkg: "", typ: $funcType([ptrType$7], [], false)}, {prop: "Referer", name: "Referer", pkg: "", typ: $funcType([], [$String], false)}, {prop: "MultipartReader", name: "MultipartReader", pkg: "", typ: $funcType([], [ptrType$12, $error], false)}, {prop: "multipartReader", name: "multipartReader", pkg: "net/http", typ: $funcType([], [ptrType$12, $error], 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], [$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$22, $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)}]; ptrType$21.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}]; ptrType.methods = [{prop: "Cookies", name: "Cookies", pkg: "", typ: $funcType([], [sliceType$6], false)}, {prop: "Location", name: "Location", pkg: "", typ: $funcType([], [ptrType$5, $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$26.methods = [{prop: "hijacked", name: "hijacked", pkg: "net/http", typ: $funcType([], [$Bool], false)}, {prop: "hijack", name: "hijack", pkg: "net/http", typ: $funcType([], [net.Conn, ptrType$23, $error], false)}, {prop: "closeNotify", name: "closeNotify", pkg: "net/http", typ: $funcType([], [chanType$3], false)}, {prop: "noteClientGone", name: "noteClientGone", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "readRequest", name: "readRequest", pkg: "net/http", typ: $funcType([], [ptrType$20, $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([], [], false)}]; ptrType$51.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}]; ptrType$52.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$20.methods = [{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: "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$23, $error], false)}, {prop: "CloseNotify", name: "CloseNotify", pkg: "", typ: $funcType([], [chanType$3], false)}]; ptrType$29.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$14], [], false)}]; HandlerFunc.methods = [{prop: "ServeHTTP", name: "ServeHTTP", pkg: "", typ: $funcType([ResponseWriter, ptrType$1], [], false)}]; ptrType$53.methods = [{prop: "ServeHTTP", name: "ServeHTTP", pkg: "", typ: $funcType([ResponseWriter, ptrType$1], [], false)}]; ptrType$54.methods = [{prop: "match", name: "match", pkg: "net/http", typ: $funcType([$String], [Handler, $String], false)}, {prop: "Handler", name: "Handler", pkg: "", typ: $funcType([ptrType$1], [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$1], [], false)}, {prop: "Handle", name: "Handle", pkg: "", typ: $funcType([$String, Handler], [], false)}, {prop: "HandleFunc", name: "HandleFunc", pkg: "", typ: $funcType([$String, funcType$4], [], false)}]; ptrType$50.methods = [{prop: "newConn", name: "newConn", pkg: "net/http", typ: $funcType([net.Conn], [ptrType$26, $error], false)}, {prop: "maxHeaderBytes", name: "maxHeaderBytes", pkg: "net/http", typ: $funcType([], [$Int], false)}, {prop: "initialLimitedReaderSize", name: "initialLimitedReaderSize", pkg: "net/http", typ: $funcType([], [$Int64], false)}, {prop: "ListenAndServe", name: "ListenAndServe", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Serve", name: "Serve", pkg: "", typ: $funcType([net.Listener], [$error], false)}, {prop: "doKeepAlives", name: "doKeepAlives", 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$1], [], true)}, {prop: "ListenAndServeTLS", name: "ListenAndServeTLS", pkg: "", typ: $funcType([$String, $String], [$error], false)}]; ConnState.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; serverHandler.methods = [{prop: "ServeHTTP", name: "ServeHTTP", pkg: "", typ: $funcType([ResponseWriter, ptrType$1], [], 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$1], [], false)}]; eofReaderWithWriteTo.methods = [{prop: "WriteTo", name: "WriteTo", pkg: "", typ: $funcType([io.Writer], [$Int64, $error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}]; initNPNRequest.methods = [{prop: "ServeHTTP", name: "ServeHTTP", pkg: "", typ: $funcType([ResponseWriter, ptrType$1], [], false)}]; checkConnErrorWriter.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}]; ptrType$58.methods = [{prop: "match", name: "match", pkg: "net/http", typ: $funcType([sliceType$2, $Int], [$String], false)}]; ptrType$59.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)}]; textSig.methods = [{prop: "match", name: "match", pkg: "net/http", typ: $funcType([sliceType$2, $Int], [$String], false)}]; ptrType$60.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}]; ptrType$37.methods = [{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$61.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: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}]; bodyLocked.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}]; XHRTransport.init([{prop: "inflight", name: "inflight", pkg: "net/http", typ: mapType, tag: ""}]); Client.init([{prop: "Transport", name: "Transport", pkg: "", typ: RoundTripper, tag: ""}, {prop: "CheckRedirect", name: "CheckRedirect", pkg: "", typ: funcType$3, tag: ""}, {prop: "Jar", name: "Jar", pkg: "", typ: CookieJar, tag: ""}, {prop: "Timeout", name: "Timeout", pkg: "", typ: time.Duration, tag: ""}]); RoundTripper.init([{prop: "RoundTrip", name: "RoundTrip", pkg: "", typ: $funcType([ptrType$1], [ptrType, $error], false)}]); cancelTimerBody.init([{prop: "t", name: "t", pkg: "net/http", typ: ptrType$6, tag: ""}, {prop: "rc", name: "rc", pkg: "net/http", typ: io.ReadCloser, tag: ""}]); Cookie.init([{prop: "Name", name: "Name", pkg: "", typ: $String, tag: ""}, {prop: "Value", name: "Value", pkg: "", typ: $String, tag: ""}, {prop: "Path", name: "Path", pkg: "", typ: $String, tag: ""}, {prop: "Domain", name: "Domain", pkg: "", typ: $String, tag: ""}, {prop: "Expires", name: "Expires", pkg: "", typ: time.Time, tag: ""}, {prop: "RawExpires", name: "RawExpires", pkg: "", typ: $String, tag: ""}, {prop: "MaxAge", name: "MaxAge", pkg: "", typ: $Int, tag: ""}, {prop: "Secure", name: "Secure", pkg: "", typ: $Bool, tag: ""}, {prop: "HttpOnly", name: "HttpOnly", pkg: "", typ: $Bool, tag: ""}, {prop: "Raw", name: "Raw", pkg: "", typ: $String, tag: ""}, {prop: "Unparsed", name: "Unparsed", pkg: "", typ: sliceType, tag: ""}]); Header.init($String, sliceType); writeStringer.init([{prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([$String], [$Int, $error], false)}]); stringWriter.init([{prop: "w", name: "w", pkg: "net/http", typ: io.Writer, tag: ""}]); keyValues.init([{prop: "key", name: "key", pkg: "net/http", typ: $String, tag: ""}, {prop: "values", name: "values", pkg: "net/http", typ: sliceType, tag: ""}]); headerSorter.init([{prop: "kvs", name: "kvs", pkg: "net/http", typ: sliceType$8, tag: ""}]); CookieJar.init([{prop: "Cookies", name: "Cookies", pkg: "", typ: $funcType([ptrType$5], [sliceType$6], false)}, {prop: "SetCookies", name: "SetCookies", pkg: "", typ: $funcType([ptrType$5, sliceType$6], [], false)}]); ProtocolError.init([{prop: "ErrorString", name: "ErrorString", pkg: "", typ: $String, tag: ""}]); badStringError.init([{prop: "what", name: "what", pkg: "net/http", typ: $String, tag: ""}, {prop: "str", name: "str", pkg: "net/http", typ: $String, tag: ""}]); Request.init([{prop: "Method", name: "Method", pkg: "", typ: $String, tag: ""}, {prop: "URL", name: "URL", pkg: "", typ: ptrType$5, tag: ""}, {prop: "Proto", name: "Proto", pkg: "", typ: $String, tag: ""}, {prop: "ProtoMajor", name: "ProtoMajor", pkg: "", typ: $Int, tag: ""}, {prop: "ProtoMinor", name: "ProtoMinor", pkg: "", typ: $Int, tag: ""}, {prop: "Header", name: "Header", pkg: "", typ: Header, tag: ""}, {prop: "Body", name: "Body", pkg: "", typ: io.ReadCloser, tag: ""}, {prop: "ContentLength", name: "ContentLength", pkg: "", typ: $Int64, tag: ""}, {prop: "TransferEncoding", name: "TransferEncoding", pkg: "", typ: sliceType, tag: ""}, {prop: "Close", name: "Close", pkg: "", typ: $Bool, tag: ""}, {prop: "Host", name: "Host", pkg: "", typ: $String, tag: ""}, {prop: "Form", name: "Form", pkg: "", typ: url.Values, tag: ""}, {prop: "PostForm", name: "PostForm", pkg: "", typ: url.Values, tag: ""}, {prop: "MultipartForm", name: "MultipartForm", pkg: "", typ: ptrType$13, tag: ""}, {prop: "Trailer", name: "Trailer", pkg: "", typ: Header, tag: ""}, {prop: "RemoteAddr", name: "RemoteAddr", pkg: "", typ: $String, tag: ""}, {prop: "RequestURI", name: "RequestURI", pkg: "", typ: $String, tag: ""}, {prop: "TLS", name: "TLS", pkg: "", typ: ptrType$2, tag: ""}]); maxBytesReader.init([{prop: "w", name: "w", pkg: "net/http", typ: ResponseWriter, tag: ""}, {prop: "r", name: "r", pkg: "net/http", typ: io.ReadCloser, tag: ""}, {prop: "n", name: "n", pkg: "net/http", typ: $Int64, tag: ""}, {prop: "stopped", name: "stopped", pkg: "net/http", typ: $Bool, tag: ""}]); Response.init([{prop: "Status", name: "Status", pkg: "", typ: $String, tag: ""}, {prop: "StatusCode", name: "StatusCode", pkg: "", typ: $Int, tag: ""}, {prop: "Proto", name: "Proto", pkg: "", typ: $String, tag: ""}, {prop: "ProtoMajor", name: "ProtoMajor", pkg: "", typ: $Int, tag: ""}, {prop: "ProtoMinor", name: "ProtoMinor", pkg: "", typ: $Int, tag: ""}, {prop: "Header", name: "Header", pkg: "", typ: Header, tag: ""}, {prop: "Body", name: "Body", pkg: "", typ: io.ReadCloser, tag: ""}, {prop: "ContentLength", name: "ContentLength", pkg: "", typ: $Int64, tag: ""}, {prop: "TransferEncoding", name: "TransferEncoding", pkg: "", typ: sliceType, tag: ""}, {prop: "Close", name: "Close", pkg: "", typ: $Bool, tag: ""}, {prop: "Trailer", name: "Trailer", pkg: "", typ: Header, tag: ""}, {prop: "Request", name: "Request", pkg: "", typ: ptrType$1, tag: ""}, {prop: "TLS", name: "TLS", pkg: "", typ: ptrType$2, tag: ""}]); Handler.init([{prop: "ServeHTTP", name: "ServeHTTP", pkg: "", typ: $funcType([ResponseWriter, ptrType$1], [], 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([{prop: "remoteAddr", name: "remoteAddr", pkg: "net/http", typ: $String, tag: ""}, {prop: "server", name: "server", pkg: "net/http", typ: ptrType$50, tag: ""}, {prop: "rwc", name: "rwc", pkg: "net/http", typ: net.Conn, tag: ""}, {prop: "w", name: "w", pkg: "net/http", typ: io.Writer, tag: ""}, {prop: "werr", name: "werr", pkg: "net/http", typ: $error, tag: ""}, {prop: "sr", name: "sr", pkg: "net/http", typ: liveSwitchReader, tag: ""}, {prop: "lr", name: "lr", pkg: "net/http", typ: ptrType$25, tag: ""}, {prop: "buf", name: "buf", pkg: "net/http", typ: ptrType$23, tag: ""}, {prop: "tlsState", name: "tlsState", pkg: "net/http", typ: ptrType$2, tag: ""}, {prop: "mu", name: "mu", pkg: "net/http", typ: sync.Mutex, tag: ""}, {prop: "clientGone", name: "clientGone", pkg: "net/http", typ: $Bool, tag: ""}, {prop: "closeNotifyc", name: "closeNotifyc", pkg: "net/http", typ: chanType$2, tag: ""}, {prop: "hijackedv", name: "hijackedv", pkg: "net/http", typ: $Bool, tag: ""}]); switchWriter.init([{prop: "Writer", name: "", pkg: "", typ: io.Writer, tag: ""}]); liveSwitchReader.init([{prop: "Mutex", name: "", pkg: "", typ: sync.Mutex, tag: ""}, {prop: "r", name: "r", pkg: "net/http", typ: io.Reader, tag: ""}]); chunkWriter.init([{prop: "res", name: "res", pkg: "net/http", typ: ptrType$20, tag: ""}, {prop: "header", name: "header", pkg: "net/http", typ: Header, tag: ""}, {prop: "wroteHeader", name: "wroteHeader", pkg: "net/http", typ: $Bool, tag: ""}, {prop: "chunking", name: "chunking", pkg: "net/http", typ: $Bool, tag: ""}]); response.init([{prop: "conn", name: "conn", pkg: "net/http", typ: ptrType$26, tag: ""}, {prop: "req", name: "req", pkg: "net/http", typ: ptrType$1, tag: ""}, {prop: "wroteHeader", name: "wroteHeader", pkg: "net/http", typ: $Bool, tag: ""}, {prop: "wroteContinue", name: "wroteContinue", pkg: "net/http", typ: $Bool, tag: ""}, {prop: "w", name: "w", pkg: "net/http", typ: ptrType$14, tag: ""}, {prop: "cw", name: "cw", pkg: "net/http", typ: chunkWriter, tag: ""}, {prop: "sw", name: "sw", pkg: "net/http", typ: ptrType$28, tag: ""}, {prop: "handlerHeader", name: "handlerHeader", pkg: "net/http", typ: Header, tag: ""}, {prop: "calledHeader", name: "calledHeader", pkg: "net/http", typ: $Bool, tag: ""}, {prop: "written", name: "written", pkg: "net/http", typ: $Int64, tag: ""}, {prop: "contentLength", name: "contentLength", pkg: "net/http", typ: $Int64, tag: ""}, {prop: "status", name: "status", pkg: "net/http", typ: $Int, tag: ""}, {prop: "closeAfterReply", name: "closeAfterReply", pkg: "net/http", typ: $Bool, tag: ""}, {prop: "requestBodyLimitHit", name: "requestBodyLimitHit", pkg: "net/http", typ: $Bool, tag: ""}, {prop: "handlerDone", name: "handlerDone", pkg: "net/http", typ: $Bool, tag: ""}, {prop: "dateBuf", name: "dateBuf", pkg: "net/http", typ: arrayType$2, tag: ""}, {prop: "clenBuf", name: "clenBuf", pkg: "net/http", typ: arrayType$3, tag: ""}]); writerOnly.init([{prop: "Writer", name: "", pkg: "", typ: io.Writer, tag: ""}]); expectContinueReader.init([{prop: "resp", name: "resp", pkg: "net/http", typ: ptrType$20, tag: ""}, {prop: "readCloser", name: "readCloser", pkg: "net/http", typ: io.ReadCloser, tag: ""}, {prop: "closed", name: "closed", pkg: "net/http", typ: $Bool, tag: ""}]); extraHeader.init([{prop: "contentType", name: "contentType", pkg: "net/http", typ: $String, tag: ""}, {prop: "connection", name: "connection", pkg: "net/http", typ: $String, tag: ""}, {prop: "transferEncoding", name: "transferEncoding", pkg: "net/http", typ: $String, tag: ""}, {prop: "date", name: "date", pkg: "net/http", typ: sliceType$2, tag: ""}, {prop: "contentLength", name: "contentLength", pkg: "net/http", typ: sliceType$2, tag: ""}]); closeWriter.init([{prop: "CloseWrite", name: "CloseWrite", pkg: "", typ: $funcType([], [$error], false)}]); HandlerFunc.init([ResponseWriter, ptrType$1], [], false); redirectHandler.init([{prop: "url", name: "url", pkg: "net/http", typ: $String, tag: ""}, {prop: "code", name: "code", pkg: "net/http", typ: $Int, tag: ""}]); ServeMux.init([{prop: "mu", name: "mu", pkg: "net/http", typ: sync.RWMutex, tag: ""}, {prop: "m", name: "m", pkg: "net/http", typ: mapType$2, tag: ""}, {prop: "hosts", name: "hosts", pkg: "net/http", typ: $Bool, tag: ""}]); muxEntry.init([{prop: "explicit", name: "explicit", pkg: "net/http", typ: $Bool, tag: ""}, {prop: "h", name: "h", pkg: "net/http", typ: Handler, tag: ""}, {prop: "pattern", name: "pattern", pkg: "net/http", typ: $String, tag: ""}]); Server.init([{prop: "Addr", name: "Addr", pkg: "", typ: $String, tag: ""}, {prop: "Handler", name: "Handler", pkg: "", typ: Handler, tag: ""}, {prop: "ReadTimeout", name: "ReadTimeout", pkg: "", typ: time.Duration, tag: ""}, {prop: "WriteTimeout", name: "WriteTimeout", pkg: "", typ: time.Duration, tag: ""}, {prop: "MaxHeaderBytes", name: "MaxHeaderBytes", pkg: "", typ: $Int, tag: ""}, {prop: "TLSConfig", name: "TLSConfig", pkg: "", typ: ptrType$31, tag: ""}, {prop: "TLSNextProto", name: "TLSNextProto", pkg: "", typ: mapType$3, tag: ""}, {prop: "ConnState", name: "ConnState", pkg: "", typ: funcType$6, tag: ""}, {prop: "ErrorLog", name: "ErrorLog", pkg: "", typ: ptrType$32, tag: ""}, {prop: "disableKeepAlives", name: "disableKeepAlives", pkg: "net/http", typ: $Int32, tag: ""}]); serverHandler.init([{prop: "srv", name: "srv", pkg: "net/http", typ: ptrType$50, tag: ""}]); tcpKeepAliveListener.init([{prop: "TCPListener", name: "", pkg: "", typ: ptrType$33, tag: ""}]); globalOptionsHandler.init([]); eofReaderWithWriteTo.init([]); initNPNRequest.init([{prop: "c", name: "c", pkg: "net/http", typ: ptrType$30, tag: ""}, {prop: "h", name: "h", pkg: "net/http", typ: serverHandler, tag: ""}]); checkConnErrorWriter.init([{prop: "c", name: "c", pkg: "net/http", typ: ptrType$26, tag: ""}]); sniffSig.init([{prop: "match", name: "match", pkg: "net/http", typ: $funcType([sliceType$2, $Int], [$String], false)}]); exactSig.init([{prop: "sig", name: "sig", pkg: "net/http", typ: sliceType$2, tag: ""}, {prop: "ct", name: "ct", pkg: "net/http", typ: $String, tag: ""}]); maskedSig.init([{prop: "mask", name: "mask", pkg: "net/http", typ: sliceType$2, tag: ""}, {prop: "pat", name: "pat", pkg: "net/http", typ: sliceType$2, tag: ""}, {prop: "skipWS", name: "skipWS", pkg: "net/http", typ: $Bool, tag: ""}, {prop: "ct", name: "ct", pkg: "net/http", typ: $String, tag: ""}]); htmlSig.init($Uint8); errorReader.init([{prop: "err", name: "err", pkg: "net/http", typ: $error, tag: ""}]); transferWriter.init([{prop: "Method", name: "Method", pkg: "", typ: $String, tag: ""}, {prop: "Body", name: "Body", pkg: "", typ: io.Reader, tag: ""}, {prop: "BodyCloser", name: "BodyCloser", pkg: "", typ: io.Closer, tag: ""}, {prop: "ResponseToHEAD", name: "ResponseToHEAD", pkg: "", typ: $Bool, tag: ""}, {prop: "ContentLength", name: "ContentLength", pkg: "", typ: $Int64, tag: ""}, {prop: "Close", name: "Close", pkg: "", typ: $Bool, tag: ""}, {prop: "TransferEncoding", name: "TransferEncoding", pkg: "", typ: sliceType, tag: ""}, {prop: "Trailer", name: "Trailer", pkg: "", typ: Header, tag: ""}]); transferReader.init([{prop: "Header", name: "Header", pkg: "", typ: Header, tag: ""}, {prop: "StatusCode", name: "StatusCode", pkg: "", typ: $Int, tag: ""}, {prop: "RequestMethod", name: "RequestMethod", pkg: "", typ: $String, tag: ""}, {prop: "ProtoMajor", name: "ProtoMajor", pkg: "", typ: $Int, tag: ""}, {prop: "ProtoMinor", name: "ProtoMinor", pkg: "", typ: $Int, tag: ""}, {prop: "Body", name: "Body", pkg: "", typ: io.ReadCloser, tag: ""}, {prop: "ContentLength", name: "ContentLength", pkg: "", typ: $Int64, tag: ""}, {prop: "TransferEncoding", name: "TransferEncoding", pkg: "", typ: sliceType, tag: ""}, {prop: "Close", name: "Close", pkg: "", typ: $Bool, tag: ""}, {prop: "Trailer", name: "Trailer", pkg: "", typ: Header, tag: ""}]); body.init([{prop: "src", name: "src", pkg: "net/http", typ: io.Reader, tag: ""}, {prop: "hdr", name: "hdr", pkg: "net/http", typ: $emptyInterface, tag: ""}, {prop: "r", name: "r", pkg: "net/http", typ: ptrType$19, tag: ""}, {prop: "closing", name: "closing", pkg: "net/http", typ: $Bool, tag: ""}, {prop: "mu", name: "mu", pkg: "net/http", typ: sync.Mutex, tag: ""}, {prop: "closed", name: "closed", pkg: "net/http", typ: $Bool, tag: ""}]); bodyLocked.init([{prop: "b", name: "b", pkg: "net/http", typ: ptrType$61, tag: ""}]); canceler.init([{prop: "CancelRequest", name: "CancelRequest", pkg: "", typ: $funcType([ptrType$1], [], 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 = 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 = tls.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = base64.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = binary.$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 = fmt.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = js.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = io.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = ioutil.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = log.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = mime.$init(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = multipart.$init(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = net.$init(); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = internal.$init(); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = textproto.$init(); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = url.$init(); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = os.$init(); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = path.$init(); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = filepath.$init(); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = runtime.$init(); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = sort.$init(); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = strconv.$init(); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = strings.$init(); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = sync.$init(); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = atomic.$init(); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } $r = time.$init(); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } textprotoReaderPool = new sync.Pool.ptr(); bufioReaderPool = new sync.Pool.ptr(); bufioWriter2kPool = new sync.Pool.ptr(); bufioWriter4kPool = new sync.Pool.ptr(); statusMu = new sync.RWMutex.ptr(); $pkg.DefaultTransport = new XHRTransport.ptr(false); $pkg.DefaultClient = new Client.ptr($ifaceNil, $throwNilPointerError, $ifaceNil, new time.Duration(0, 0)); cookieNameSanitizer = strings.NewReplacer(new sliceType(["\n", "-", "\r", "-"])); errSeeker = errors.New("seeker can't seek"); headerNewlineToSpace = strings.NewReplacer(new sliceType(["\n", " ", "\r", " "])); headerSorterPool = new sync.Pool.ptr(0, 0, sliceType$1.nil, (function() { var $ptr; return new headerSorter.ptr(); })); 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]); $pkg.ErrMissingFile = errors.New("http: no such file"); $pkg.ErrUnexpectedTrailer = new ProtocolError.ptr("trailer header without chunked transfer encoding"); $pkg.ErrNotMultipart = new ProtocolError.ptr("request Content-Type isn't multipart/form-data"); $pkg.ErrMissingBoundary = new ProtocolError.ptr("no multipart boundary param in Content-Type"); reqWriteExcludeHeader = (_map = new $Map(), _key = "Host", _map[_key] = { k: _key, v: true }, _key = "User-Agent", _map[_key] = { k: _key, v: true }, _key = "Content-Length", _map[_key] = { k: _key, v: true }, _key = "Transfer-Encoding", _map[_key] = { k: _key, v: true }, _key = "Trailer", _map[_key] = { k: _key, v: true }, _map); $pkg.ErrNoCookie = errors.New("http: named cookie not present"); multipartByReader = new multipart.Form.ptr(new $Map(), new $Map()); respExcludeHeader = (_map$1 = new $Map(), _key$1 = "Content-Length", _map$1[_key$1] = { k: _key$1, v: true }, _key$1 = "Transfer-Encoding", _map$1[_key$1] = { k: _key$1, v: true }, _key$1 = "Trailer", _map$1[_key$1] = { k: _key$1, v: true }, _map$1); $pkg.ErrNoLocation = errors.New("http: no Location header in response"); $pkg.ErrWriteAfterFlush = errors.New("Conn.Write called after Flush"); $pkg.ErrBodyNotAllowed = errors.New("http: request method or response status code does not allow body"); $pkg.ErrHijacked = errors.New("Conn has been hijacked"); $pkg.ErrContentLength = errors.New("Conn.Write wrote more than the declared Content-Length"); crlf = new sliceType$2($stringToBytes("\r\n")); colonSpace = new sliceType$2($stringToBytes(": ")); errTooLarge = errors.New("http: request too large"); extraHeaderKeys = new sliceType$3([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 = new $Map(); htmlReplacer = strings.NewReplacer(new sliceType(["&", "&", "<", "<", ">", ">", "\"", """, "'", "'"])); $pkg.DefaultServeMux = NewServeMux(); stateName = (_map$2 = new $Map(), _key$2 = 0, _map$2[_key$2] = { k: _key$2, v: "new" }, _key$2 = 1, _map$2[_key$2] = { k: _key$2, v: "active" }, _key$2 = 2, _map$2[_key$2] = { k: _key$2, v: "idle" }, _key$2 = 3, _map$2[_key$2] = { k: _key$2, v: "hijacked" }, _key$2 = 4, _map$2[_key$2] = { k: _key$2, v: "closed" }, _map$2); $pkg.ErrHandlerTimeout = errors.New("http: Handler timeout"); eofReader = new structType.ptr(new eofReaderWithWriteTo.ptr(), ioutil.NopCloser($ifaceNil)); uniqNameNext = new $Map(); sniffSignatures = new sliceType$4([new htmlSig($stringToBytes("