Browse Source

Tweaks to sed expr in code comments

Russ Magee 4 years ago
parent
commit
2da0d8b198

+ 15 - 15
hkexpasswd/hkexpasswd-vis.gv

@@ -14,23 +14,23 @@ digraph gocallvis {
     edge [minlen="2"]
 
     subgraph "cluster_focus" {
-        fontsize="18";
-bgcolor="#e6ecfa";
+        bgcolor="#e6ecfa";
 label="main";
 labelloc="t";
 labeljust="c";
+fontsize="18";
         
         "blitter.com/go/hkexsh/hkexpasswd.main" [ fillcolor="lightblue" label="main" penwidth="0.5" ]
         
         subgraph "cluster_blitter.com/go/hkexsh" {
-        penwidth="0.8";
+        style="filled";
+fillcolor="lightyellow";
+label="[hkexsh]";
+penwidth="0.8";
+fontsize="16";
 fontname="bold";
 rank="sink";
 URL="/?f=blitter.com/go/hkexsh";
-fontsize="16";
-style="filled";
-fillcolor="lightyellow";
-label="[hkexsh]";
 tooltip="package: blitter.com/go/hkexsh";
         
         "blitter.com/go/hkexsh.ReadPassword" [ fillcolor="moccasin" label="ReadPassword" penwidth="1.5" ]
@@ -38,19 +38,19 @@ tooltip="package: blitter.com/go/hkexsh";
     }
 
         subgraph "cluster_github.com/jameskeane/bcrypt" {
-        penwidth="0.8";
-fontsize="16";
-fillcolor="lightyellow";
-tooltip="package: github.com/jameskeane/bcrypt";
-style="filled";
-fontname="bold";
+        fontname="bold";
 rank="sink";
 label="[bcrypt]";
 URL="/?f=github.com/jameskeane/bcrypt";
+penwidth="0.8";
+fontsize="16";
+style="filled";
+fillcolor="lightyellow";
+tooltip="package: github.com/jameskeane/bcrypt";
         
         "github.com/jameskeane/bcrypt.Salt" [ fillcolor="moccasin" label="Salt" penwidth="1.5" ]
-        "github.com/jameskeane/bcrypt.Hash" [ fillcolor="moccasin" label="Hash" penwidth="1.5" ]
-        "github.com/jameskeane/bcrypt.Match" [ fillcolor="moccasin" label="Match" penwidth="1.5" ]
+        "github.com/jameskeane/bcrypt.Hash" [ penwidth="1.5" fillcolor="moccasin" label="Hash" ]
+        "github.com/jameskeane/bcrypt.Match" [ penwidth="1.5" fillcolor="moccasin" label="Match" ]
         
     }
 

+ 80 - 80
hkexsh/hkexsh-vis.gv

@@ -20,102 +20,102 @@ labelloc="t";
 labeljust="c";
 fontsize="18";
         
-        "blitter.com/go/hkexsh/hkexsh.reqTunnel" [ fillcolor="lightblue" label="reqTunnel" penwidth="0.5" ]
+        "blitter.com/go/hkexsh/hkexsh.rejectUserMsg" [ penwidth="0.5" fillcolor="lightblue" label="rejectUserMsg" ]
+        "blitter.com/go/hkexsh/hkexsh.reqTunnel" [ label="reqTunnel" penwidth="0.5" fillcolor="lightblue" ]
+        "blitter.com/go/hkexsh/hkexsh.main" [ fillcolor="lightblue" label="main" penwidth="0.5" ]
+        "blitter.com/go/hkexsh/hkexsh.parseNonSwitchArgs" [ label="parseNonSwitchArgs" penwidth="0.5" fillcolor="lightblue" ]
+        "blitter.com/go/hkexsh/hkexsh.main$1" [ style="dotted,filled" fillcolor="lightblue" label="deferRestore" ]
+        "blitter.com/go/hkexsh/hkexsh.sendSessionParams" [ fillcolor="lightblue" label="sendSessionParams" penwidth="0.5" ]
+        "blitter.com/go/hkexsh/hkexsh.main$2" [ label="deferCloseChaff" style="dotted,filled" fillcolor="lightblue" ]
         "blitter.com/go/hkexsh/hkexsh.launchTuns" [ fillcolor="lightblue" label="launchTuns" penwidth="0.5" ]
-        "blitter.com/go/hkexsh/hkexsh.doShellMode$1" [ style="dotted,filled" fillcolor="lightblue" label="shellRemoteToStdin" ]
-        "blitter.com/go/hkexsh/hkexsh.doShellMode" [ label="doShellMode" penwidth="0.5" fillcolor="lightblue" ]
+        "blitter.com/go/hkexsh/hkexsh.doShellMode$1" [ fillcolor="lightblue" label="shellRemoteToStdin" style="dotted,filled" ]
+        "blitter.com/go/hkexsh/hkexsh.doShellMode" [ fillcolor="lightblue" label="doShellMode" penwidth="0.5" ]
         "blitter.com/go/hkexsh/hkexsh.handleTermResizes$1" [ fillcolor="lightblue" label="handleTermResizes$1" style="dotted,filled" ]
         "blitter.com/go/hkexsh/hkexsh.GetSize" [ fillcolor="lightblue" label="GetSize" penwidth="1.5" ]
         "blitter.com/go/hkexsh/hkexsh.handleTermResizes" [ fillcolor="lightblue" label="handleTermResizes" penwidth="0.5" ]
-        "blitter.com/go/hkexsh/hkexsh.doShellMode$2" [ style="dotted,filled" fillcolor="lightblue" label="shellStdinToRemote" ]
+        "blitter.com/go/hkexsh/hkexsh.doShellMode$2" [ label="shellStdinToRemote" style="dotted,filled" fillcolor="lightblue" ]
         "blitter.com/go/hkexsh/hkexsh.doShellMode$2$1" [ fillcolor="lightblue" label="doShellMode$2$1" style="dotted,filled" ]
-        "blitter.com/go/hkexsh/hkexsh.main$1" [ fillcolor="lightblue" label="deferRestore" style="dotted,filled" ]
-        "blitter.com/go/hkexsh/hkexsh.main" [ fillcolor="lightblue" label="main" penwidth="0.5" ]
-        "blitter.com/go/hkexsh/hkexsh.parseNonSwitchArgs" [ fillcolor="lightblue" label="parseNonSwitchArgs" penwidth="0.5" ]
-        "blitter.com/go/hkexsh/hkexsh.sendSessionParams" [ fillcolor="lightblue" label="sendSessionParams" penwidth="0.5" ]
-        "blitter.com/go/hkexsh/hkexsh.rejectUserMsg" [ label="rejectUserMsg" penwidth="0.5" fillcolor="lightblue" ]
-        "blitter.com/go/hkexsh/hkexsh.main$2" [ fillcolor="lightblue" label="deferCloseChaff" style="dotted,filled" ]
-        "blitter.com/go/hkexsh/hkexsh.doCopyMode" [ fillcolor="lightblue" label="doCopyMode" penwidth="0.5" ]
-        "blitter.com/go/hkexsh/hkexsh.usageShell" [ fillcolor="lightblue" label="usageShell" penwidth="0.5" ]
+        "blitter.com/go/hkexsh/hkexsh.doCopyMode" [ label="doCopyMode" penwidth="0.5" fillcolor="lightblue" ]
+        "blitter.com/go/hkexsh/hkexsh.usageShell" [ label="usageShell" penwidth="0.5" fillcolor="lightblue" ]
         "blitter.com/go/hkexsh/hkexsh.usageCp" [ fillcolor="lightblue" label="usageCp" penwidth="0.5" ]
         
         subgraph "cluster_blitter.com/go/hkexsh" {
-        tooltip="package: blitter.com/go/hkexsh";
-penwidth="0.8";
+        style="filled";
 fillcolor="lightyellow";
+fontname="bold";
+penwidth="0.8";
+fontsize="16";
+URL="/?f=blitter.com/go/hkexsh";
+tooltip="package: blitter.com/go/hkexsh";
 rank="sink";
 label="[hkexsh]";
-URL="/?f=blitter.com/go/hkexsh";
-fontsize="16";
-style="filled";
-fontname="bold";
         
-        "blitter.com/go/hkexsh.Restore" [ label="Restore" penwidth="1.5" fillcolor="moccasin" ]
         "blitter.com/go/hkexsh.MakeRaw" [ fillcolor="moccasin" label="MakeRaw" penwidth="1.5" ]
-        "blitter.com/go/hkexsh.ReadPassword" [ penwidth="1.5" fillcolor="moccasin" label="ReadPassword" ]
+        "blitter.com/go/hkexsh.Restore" [ penwidth="1.5" fillcolor="moccasin" label="Restore" ]
+        "blitter.com/go/hkexsh.ReadPassword" [ fillcolor="moccasin" label="ReadPassword" penwidth="1.5" ]
         "blitter.com/go/hkexsh.NewSession" [ fillcolor="moccasin" label="NewSession" penwidth="1.5" ]
         
         subgraph "cluster_*blitter.com/go/hkexsh.Session" {
-        tooltip="type: *blitter.com/go/hkexsh.Session";
-penwidth="0.5";
+        penwidth="0.5";
 fontsize="15";
 fontcolor="#222222";
 labelloc="b";
 style="rounded,filled";
 fillcolor="wheat2";
 label="(*Session)";
+tooltip="type: *blitter.com/go/hkexsh.Session";
         
         "(*blitter.com/go/hkexsh.Session).SetStatus" [ fillcolor="moccasin" label="SetStatus" penwidth="1.5" ]
         
     }
 
         subgraph "cluster_blitter.com/go/hkexsh.Session" {
-        fillcolor="wheat2";
-label="(Session)";
-tooltip="type: blitter.com/go/hkexsh.Session";
-penwidth="0.5";
-fontsize="15";
+        fontsize="15";
 fontcolor="#222222";
 labelloc="b";
 style="rounded,filled";
+fillcolor="wheat2";
+label="(Session)";
+tooltip="type: blitter.com/go/hkexsh.Session";
+penwidth="0.5";
         
-        "(blitter.com/go/hkexsh.Session).Status" [ fillcolor="moccasin" label="Status" penwidth="1.5" ]
-        "(blitter.com/go/hkexsh.Session).Op" [ label="Op" penwidth="1.5" fillcolor="moccasin" ]
-        "(blitter.com/go/hkexsh.Session).Who" [ label="Who" penwidth="1.5" fillcolor="moccasin" ]
+        "(blitter.com/go/hkexsh.Session).Op" [ fillcolor="moccasin" label="Op" penwidth="1.5" ]
+        "(blitter.com/go/hkexsh.Session).Who" [ fillcolor="moccasin" label="Who" penwidth="1.5" ]
         "(blitter.com/go/hkexsh.Session).ConnHost" [ fillcolor="moccasin" label="ConnHost" penwidth="1.5" ]
-        "(blitter.com/go/hkexsh.Session).TermType" [ fillcolor="moccasin" label="TermType" penwidth="1.5" ]
-        "(blitter.com/go/hkexsh.Session).Cmd" [ penwidth="1.5" fillcolor="moccasin" label="Cmd" ]
+        "(blitter.com/go/hkexsh.Session).TermType" [ penwidth="1.5" fillcolor="moccasin" label="TermType" ]
+        "(blitter.com/go/hkexsh.Session).Cmd" [ fillcolor="moccasin" label="Cmd" penwidth="1.5" ]
         "(blitter.com/go/hkexsh.Session).AuthCookie" [ fillcolor="moccasin" label="AuthCookie" penwidth="1.5" ]
+        "(blitter.com/go/hkexsh.Session).Status" [ penwidth="1.5" fillcolor="moccasin" label="Status" ]
         
     }
 
     }
 
         subgraph "cluster_blitter.com/go/hkexsh/hkexnet" {
-        penwidth="0.8";
+        fontname="bold";
+URL="/?f=blitter.com/go/hkexsh/hkexnet";
+fillcolor="lightyellow";
 fontsize="16";
 style="filled";
-fillcolor="lightyellow";
-fontname="bold";
 rank="sink";
 label="[hkexnet]";
-URL="/?f=blitter.com/go/hkexsh/hkexnet";
 tooltip="package: blitter.com/go/hkexsh/hkexnet";
+penwidth="0.8";
         
-        "blitter.com/go/hkexsh/hkexnet.Init" [ fillcolor="moccasin" label="Init" penwidth="1.5" ]
+        "blitter.com/go/hkexsh/hkexnet.Init" [ penwidth="1.5" fillcolor="moccasin" label="Init" ]
         "blitter.com/go/hkexsh/hkexnet.Dial" [ fillcolor="moccasin" label="Dial" penwidth="1.5" ]
         
         subgraph "cluster_*blitter.com/go/hkexsh/hkexnet.Conn" {
-        tooltip="type: *blitter.com/go/hkexsh/hkexnet.Conn";
-penwidth="0.5";
-fontsize="15";
+        fontsize="15";
 fontcolor="#222222";
 labelloc="b";
 style="rounded,filled";
 fillcolor="wheat2";
 label="(*Conn)";
+tooltip="type: *blitter.com/go/hkexsh/hkexnet.Conn";
+penwidth="0.5";
         
-        "(*blitter.com/go/hkexsh/hkexnet.Conn).WritePacket" [ fillcolor="moccasin" label="WritePacket" penwidth="1.5" ]
+        "(*blitter.com/go/hkexsh/hkexnet.Conn).WritePacket" [ label="WritePacket" penwidth="1.5" fillcolor="moccasin" ]
         "(*blitter.com/go/hkexsh/hkexnet.Conn).Close" [ fillcolor="moccasin" label="Close" penwidth="1.5" ]
         "(*blitter.com/go/hkexsh/hkexnet.Conn).SetupChaff" [ fillcolor="moccasin" label="SetupChaff" penwidth="1.5" ]
         "(*blitter.com/go/hkexsh/hkexnet.Conn).EnableChaff" [ fillcolor="moccasin" label="EnableChaff" penwidth="1.5" ]
@@ -126,94 +126,82 @@ label="(*Conn)";
     }
 
         subgraph "cluster_blitter.com/go/hkexsh/hkexnet.Conn" {
-        fontcolor="#222222";
+        penwidth="0.5";
+fontsize="15";
+fontcolor="#222222";
 labelloc="b";
 style="rounded,filled";
 fillcolor="wheat2";
 label="(Conn)";
 tooltip="type: blitter.com/go/hkexsh/hkexnet.Conn";
-penwidth="0.5";
-fontsize="15";
         
-        "(blitter.com/go/hkexsh/hkexnet.Conn).GetStatus" [ fillcolor="moccasin" label="GetStatus" penwidth="1.5" ]
         "(blitter.com/go/hkexsh/hkexnet.Conn).Write" [ fillcolor="moccasin" label="Write" penwidth="1.5" ]
         "(blitter.com/go/hkexsh/hkexnet.Conn).Read" [ fillcolor="moccasin" label="Read" penwidth="1.5" ]
+        "(blitter.com/go/hkexsh/hkexnet.Conn).GetStatus" [ fillcolor="moccasin" label="GetStatus" penwidth="1.5" ]
         
     }
 
     }
 
         subgraph "cluster_blitter.com/go/hkexsh/logger" {
-        style="filled";
-fillcolor="lightyellow";
-URL="/?f=blitter.com/go/hkexsh/logger";
-penwidth="0.8";
-fontsize="16";
+        fontsize="16";
+style="filled";
 fontname="bold";
+tooltip="package: blitter.com/go/hkexsh/logger";
+penwidth="0.8";
 rank="sink";
 label="[logger]";
-tooltip="package: blitter.com/go/hkexsh/logger";
+URL="/?f=blitter.com/go/hkexsh/logger";
+fillcolor="lightyellow";
         
-        "blitter.com/go/hkexsh/logger.LogDebug" [ label="LogDebug" penwidth="1.5" fillcolor="moccasin" ]
-        "blitter.com/go/hkexsh/logger.New" [ label="New" penwidth="1.5" fillcolor="moccasin" ]
+        "blitter.com/go/hkexsh/logger.LogDebug" [ fillcolor="moccasin" label="LogDebug" penwidth="1.5" ]
+        "blitter.com/go/hkexsh/logger.New" [ fillcolor="moccasin" label="New" penwidth="1.5" ]
         
     }
 
         subgraph "cluster_blitter.com/go/hkexsh/spinsult" {
-        rank="sink";
+        label="[spinsult]";
+tooltip="package: blitter.com/go/hkexsh/spinsult";
 penwidth="0.8";
 fontsize="16";
-style="filled";
 fontname="bold";
-fillcolor="lightyellow";
-label="[spinsult]";
 URL="/?f=blitter.com/go/hkexsh/spinsult";
-tooltip="package: blitter.com/go/hkexsh/spinsult";
+style="filled";
+fillcolor="lightyellow";
+rank="sink";
         
         "blitter.com/go/hkexsh/spinsult.GetSentence" [ fillcolor="moccasin" label="GetSentence" penwidth="1.5" ]
         
     }
 
         subgraph "cluster_github.com/mattn/go-isatty" {
-        fillcolor="lightyellow";
-fontname="bold";
+        URL="/?f=github.com/mattn/go-isatty";
 tooltip="package: github.com/mattn/go-isatty";
-penwidth="0.8";
 fontsize="16";
-style="filled";
+fontname="bold";
 rank="sink";
 label="[isatty]";
-URL="/?f=github.com/mattn/go-isatty";
+penwidth="0.8";
+style="filled";
+fillcolor="lightyellow";
         
-        "github.com/mattn/go-isatty.IsTerminal" [ fillcolor="moccasin" label="IsTerminal" penwidth="1.5" ]
+        "github.com/mattn/go-isatty.IsTerminal" [ label="IsTerminal" penwidth="1.5" fillcolor="moccasin" ]
         
     }
 
     }
 
+    "blitter.com/go/hkexsh/hkexsh.rejectUserMsg" -> "blitter.com/go/hkexsh/spinsult.GetSentence" [ color="saddlebrown" ]
     "blitter.com/go/hkexsh/hkexsh.reqTunnel" -> "blitter.com/go/hkexsh/logger.LogDebug" [ color="saddlebrown" ]
     "blitter.com/go/hkexsh/hkexsh.reqTunnel" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).WritePacket" [ color="saddlebrown" ]
-    "blitter.com/go/hkexsh/hkexsh.launchTuns" -> "blitter.com/go/hkexsh/hkexsh.reqTunnel" [  ]
-    "blitter.com/go/hkexsh/hkexsh.doShellMode$1" -> "blitter.com/go/hkexsh.Restore" [ color="saddlebrown" ]
-    "blitter.com/go/hkexsh/hkexsh.doShellMode$1" -> "(blitter.com/go/hkexsh/hkexnet.Conn).GetStatus" [ color="saddlebrown" ]
-    "blitter.com/go/hkexsh/hkexsh.doShellMode$1" -> "(*blitter.com/go/hkexsh.Session).SetStatus" [ color="saddlebrown" ]
-    "blitter.com/go/hkexsh/hkexsh.doShellMode$1" -> "(blitter.com/go/hkexsh.Session).Status" [ color="saddlebrown" ]
-    "blitter.com/go/hkexsh/hkexsh.doShellMode" -> "blitter.com/go/hkexsh/hkexsh.doShellMode$1" [ arrowhead="normalnoneodot" ]
-    "blitter.com/go/hkexsh/hkexsh.handleTermResizes$1" -> "blitter.com/go/hkexsh/hkexsh.GetSize" [  ]
-    "blitter.com/go/hkexsh/hkexsh.handleTermResizes$1" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).WritePacket" [ color="saddlebrown" ]
-    "blitter.com/go/hkexsh/hkexsh.handleTermResizes" -> "blitter.com/go/hkexsh/hkexsh.handleTermResizes$1" [ arrowhead="normalnoneodot" ]
-    "blitter.com/go/hkexsh/hkexsh.doShellMode" -> "blitter.com/go/hkexsh/hkexsh.handleTermResizes" [  ]
-    "blitter.com/go/hkexsh/hkexsh.doShellMode$2" -> "blitter.com/go/hkexsh/hkexsh.doShellMode$2$1" [  ]
-    "blitter.com/go/hkexsh/hkexsh.doShellMode$2" -> "blitter.com/go/hkexsh.Restore" [ color="saddlebrown" ]
-    "blitter.com/go/hkexsh/hkexsh.doShellMode" -> "blitter.com/go/hkexsh/hkexsh.doShellMode$2" [ arrowhead="normalnoneodot" ]
-    "blitter.com/go/hkexsh/hkexsh.main$1" -> "blitter.com/go/hkexsh.Restore" [ color="saddlebrown" ]
     "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh/hkexsh.parseNonSwitchArgs" [  ]
     "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh/logger.New" [ color="saddlebrown" ]
     "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh/hkexnet.Init" [ color="saddlebrown" ]
     "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh/hkexnet.Dial" [ color="saddlebrown" ]
-    "blitter.com/go/hkexsh/hkexsh.main" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).Close" [ color="saddlebrown" arrowhead="normalnoneodiamond" ]
+    "blitter.com/go/hkexsh/hkexsh.main" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).Close" [ arrowhead="normalnoneodiamond" color="saddlebrown" ]
     "blitter.com/go/hkexsh/hkexsh.main" -> "github.com/mattn/go-isatty.IsTerminal" [ color="saddlebrown" ]
     "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh.MakeRaw" [ color="saddlebrown" ]
+    "blitter.com/go/hkexsh/hkexsh.main$1" -> "blitter.com/go/hkexsh.Restore" [ color="saddlebrown" ]
     "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh/hkexsh.main$1" [ arrowhead="normalnoneodiamond" ]
     "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh.ReadPassword" [ color="saddlebrown" ]
     "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh.NewSession" [ color="saddlebrown" ]
@@ -227,7 +215,6 @@ URL="/?f=github.com/mattn/go-isatty";
     "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh/hkexsh.sendSessionParams" [  ]
     "blitter.com/go/hkexsh/hkexsh.main" -> "(blitter.com/go/hkexsh/hkexnet.Conn).Read" [ color="saddlebrown" ]
     "blitter.com/go/hkexsh/hkexsh.main" -> "(*blitter.com/go/hkexsh.Session).SetStatus" [ color="saddlebrown" ]
-    "blitter.com/go/hkexsh/hkexsh.rejectUserMsg" -> "blitter.com/go/hkexsh/spinsult.GetSentence" [ color="saddlebrown" ]
     "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh/hkexsh.rejectUserMsg" [  ]
     "blitter.com/go/hkexsh/hkexsh.main" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).SetupChaff" [ color="saddlebrown" ]
     "blitter.com/go/hkexsh/hkexsh.main" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).EnableChaff" [ color="saddlebrown" ]
@@ -235,7 +222,20 @@ URL="/?f=github.com/mattn/go-isatty";
     "blitter.com/go/hkexsh/hkexsh.main" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).ShutdownChaff" [ arrowhead="normalnoneodiamond" color="saddlebrown" ]
     "blitter.com/go/hkexsh/hkexsh.main$2" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).WritePacket" [ color="saddlebrown" ]
     "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh/hkexsh.main$2" [ arrowhead="normalnoneodot" ]
+    "blitter.com/go/hkexsh/hkexsh.launchTuns" -> "blitter.com/go/hkexsh/hkexsh.reqTunnel" [  ]
     "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh/hkexsh.launchTuns" [  ]
+    "blitter.com/go/hkexsh/hkexsh.doShellMode$1" -> "blitter.com/go/hkexsh.Restore" [ color="saddlebrown" ]
+    "blitter.com/go/hkexsh/hkexsh.doShellMode$1" -> "(blitter.com/go/hkexsh/hkexnet.Conn).GetStatus" [ color="saddlebrown" ]
+    "blitter.com/go/hkexsh/hkexsh.doShellMode$1" -> "(*blitter.com/go/hkexsh.Session).SetStatus" [ color="saddlebrown" ]
+    "blitter.com/go/hkexsh/hkexsh.doShellMode$1" -> "(blitter.com/go/hkexsh.Session).Status" [ color="saddlebrown" ]
+    "blitter.com/go/hkexsh/hkexsh.doShellMode" -> "blitter.com/go/hkexsh/hkexsh.doShellMode$1" [ arrowhead="normalnoneodot" ]
+    "blitter.com/go/hkexsh/hkexsh.handleTermResizes$1" -> "blitter.com/go/hkexsh/hkexsh.GetSize" [  ]
+    "blitter.com/go/hkexsh/hkexsh.handleTermResizes$1" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).WritePacket" [ color="saddlebrown" ]
+    "blitter.com/go/hkexsh/hkexsh.handleTermResizes" -> "blitter.com/go/hkexsh/hkexsh.handleTermResizes$1" [ arrowhead="normalnoneodot" ]
+    "blitter.com/go/hkexsh/hkexsh.doShellMode" -> "blitter.com/go/hkexsh/hkexsh.handleTermResizes" [  ]
+    "blitter.com/go/hkexsh/hkexsh.doShellMode$2" -> "blitter.com/go/hkexsh/hkexsh.doShellMode$2$1" [  ]
+    "blitter.com/go/hkexsh/hkexsh.doShellMode$2" -> "blitter.com/go/hkexsh.Restore" [ color="saddlebrown" ]
+    "blitter.com/go/hkexsh/hkexsh.doShellMode" -> "blitter.com/go/hkexsh/hkexsh.doShellMode$2" [ arrowhead="normalnoneodot" ]
     "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh/hkexsh.doShellMode" [  ]
     "blitter.com/go/hkexsh/hkexsh.main" -> "(blitter.com/go/hkexsh.Session).Status" [ color="saddlebrown" ]
     "blitter.com/go/hkexsh/hkexsh.doCopyMode" -> "(blitter.com/go/hkexsh.Session).Cmd" [ color="saddlebrown" ]

BIN
hkexsh/hkexsh-vis.gv.png


+ 424 - 424
hkexsh/hkexsh-vis.gv.svg

@@ -4,716 +4,716 @@
 <!-- Generated by graphviz version 2.40.1 (20161225.0304)
  -->
 <!-- Title: gocallvis Pages: 1 -->
-<svg width="967pt" height="1947pt"
- viewBox="0.00 0.00 966.52 1947.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(0 1947)">
+<svg width="967pt" height="1938pt"
+ viewBox="0.00 0.00 966.52 1938.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(0 1938)">
 <title>gocallvis</title>
-<polygon fill="#d3d3d3" stroke="transparent" points="0,0 0,-1947 966.5204,-1947 966.5204,0 0,0"/>
+<polygon fill="#d3d3d3" stroke="transparent" points="0,0 0,-1938 966.5204,-1938 966.5204,0 0,0"/>
 <text text-anchor="middle" x="102" y="-7.8" font-family="Arial" font-size="14.00" fill="#000000">blitter.com/go/hkexsh/hkexsh</text>
 <g id="clust1" class="cluster">
 <title>cluster_focus</title>
-<polygon fill="#e6ecfa" stroke="#000000" stroke-width=".5" points="8,-31 8,-1939 958.5204,-1939 958.5204,-31 8,-31"/>
-<text text-anchor="middle" x="483.2602" y="-1920.6" font-family="Arial" font-size="18.00" fill="#000000">main</text>
+<polygon fill="#e6ecfa" stroke="#000000" stroke-width=".5" points="8,-31 8,-1930 958.5204,-1930 958.5204,-31 8,-31"/>
+<text text-anchor="middle" x="483.2602" y="-1911.6" font-family="Arial" font-size="18.00" fill="#000000">main</text>
 </g>
 <g id="clust2" class="cluster">
 <title>cluster_blitter.com/go/hkexsh</title>
 <g id="a_clust2"><a xlink:href="/?f=blitter.com/go/hkexsh" xlink:title="package: blitter.com/go/hkexsh">
-<polygon fill="#ffffe0" stroke="#000000" stroke-width=".8" points="647.8627,-153 647.8627,-942 787.067,-942 787.067,-153 647.8627,-153"/>
-<text text-anchor="middle" x="717.4649" y="-925.2" font-family="bold" font-size="16.00" fill="#000000">[hkexsh]</text>
+<polygon fill="#ffffe0" stroke="#000000" stroke-width=".8" points="647.8627,-39 647.8627,-828 787.067,-828 787.067,-39 647.8627,-39"/>
+<text text-anchor="middle" x="717.4649" y="-811.2" font-family="bold" font-size="16.00" fill="#000000">[hkexsh]</text>
 </a>
 </g>
 </g>
 <g id="clust3" class="cluster">
 <title>cluster_*blitter.com/go/hkexsh.Session</title>
 <g id="a_clust3"><a xlink:href="/?f=blitter.com/go/hkexsh" xlink:title="type: *blitter.com/go/hkexsh.Session">
-<path fill="#eed8ae" stroke="#000000" stroke-width=".5" d="M679.1134,-327C679.1134,-327 755.8163,-327 755.8163,-327 761.8163,-327 767.8163,-333 767.8163,-339 767.8163,-339 767.8163,-392 767.8163,-392 767.8163,-398 761.8163,-404 755.8163,-404 755.8163,-404 679.1134,-404 679.1134,-404 673.1134,-404 667.1134,-398 667.1134,-392 667.1134,-392 667.1134,-339 667.1134,-339 667.1134,-333 673.1134,-327 679.1134,-327"/>
-<text text-anchor="middle" x="717.4649" y="-336" font-family="bold" font-size="15.00" fill="#222222">(*Session)</text>
+<path fill="#eed8ae" stroke="#000000" stroke-width=".5" d="M679.1134,-213C679.1134,-213 755.8163,-213 755.8163,-213 761.8163,-213 767.8163,-219 767.8163,-225 767.8163,-225 767.8163,-278 767.8163,-278 767.8163,-284 761.8163,-290 755.8163,-290 755.8163,-290 679.1134,-290 679.1134,-290 673.1134,-290 667.1134,-284 667.1134,-278 667.1134,-278 667.1134,-225 667.1134,-225 667.1134,-219 673.1134,-213 679.1134,-213"/>
+<text text-anchor="middle" x="717.4649" y="-222" font-family="bold" font-size="15.00" fill="#222222">(*Session)</text>
 </a>
 </g>
 </g>
 <g id="clust4" class="cluster">
 <title>cluster_blitter.com/go/hkexsh.Session</title>
 <g id="a_clust4"><a xlink:href="/?f=blitter.com/go/hkexsh" xlink:title="type: blitter.com/go/hkexsh.Session">
-<path fill="#eed8ae" stroke="#000000" stroke-width=".5" d="M671.9632,-465C671.9632,-465 762.9666,-465 762.9666,-465 768.9666,-465 774.9666,-471 774.9666,-477 774.9666,-477 774.9666,-896 774.9666,-896 774.9666,-902 768.9666,-908 762.9666,-908 762.9666,-908 671.9632,-908 671.9632,-908 665.9632,-908 659.9632,-902 659.9632,-896 659.9632,-896 659.9632,-477 659.9632,-477 659.9632,-471 665.9632,-465 671.9632,-465"/>
-<text text-anchor="middle" x="717.4649" y="-474" font-family="bold" font-size="15.00" fill="#222222">(Session)</text>
+<path fill="#eed8ae" stroke="#000000" stroke-width=".5" d="M671.9632,-298C671.9632,-298 762.9666,-298 762.9666,-298 768.9666,-298 774.9666,-304 774.9666,-310 774.9666,-310 774.9666,-729 774.9666,-729 774.9666,-735 768.9666,-741 762.9666,-741 762.9666,-741 671.9632,-741 671.9632,-741 665.9632,-741 659.9632,-735 659.9632,-729 659.9632,-729 659.9632,-310 659.9632,-310 659.9632,-304 665.9632,-298 671.9632,-298"/>
+<text text-anchor="middle" x="717.4649" y="-307" font-family="bold" font-size="15.00" fill="#222222">(Session)</text>
 </a>
 </g>
 </g>
 <g id="clust5" class="cluster">
 <title>cluster_blitter.com/go/hkexsh/hkexnet</title>
 <g id="a_clust5"><a xlink:href="/?f=blitter.com/go/hkexsh/hkexnet" xlink:title="package: blitter.com/go/hkexsh/hkexnet">
-<polygon fill="#ffffe0" stroke="#000000" stroke-width=".8" points="637.1126,-1097 637.1126,-1903 797.8171,-1903 797.8171,-1097 637.1126,-1097"/>
-<text text-anchor="middle" x="717.4649" y="-1886.2" font-family="bold" font-size="16.00" fill="#000000">[hkexnet]</text>
+<polygon fill="#ffffe0" stroke="#000000" stroke-width=".8" points="637.1126,-941 637.1126,-1747 797.8171,-1747 797.8171,-941 637.1126,-941"/>
+<text text-anchor="middle" x="717.4649" y="-1730.2" font-family="bold" font-size="16.00" fill="#000000">[hkexnet]</text>
 </a>
 </g>
 </g>
 <g id="clust6" class="cluster">
 <title>cluster_*blitter.com/go/hkexsh/hkexnet.Conn</title>
 <g id="a_clust6"><a xlink:href="/?f=blitter.com/go/hkexsh/hkexnet" xlink:title="type: *blitter.com/go/hkexsh/hkexnet.Conn">
-<path fill="#eed8ae" stroke="#000000" stroke-width=".5" d="M657.1126,-1426C657.1126,-1426 777.8171,-1426 777.8171,-1426 783.8171,-1426 789.8171,-1432 789.8171,-1438 789.8171,-1438 789.8171,-1857 789.8171,-1857 789.8171,-1863 783.8171,-1869 777.8171,-1869 777.8171,-1869 657.1126,-1869 657.1126,-1869 651.1126,-1869 645.1126,-1863 645.1126,-1857 645.1126,-1857 645.1126,-1438 645.1126,-1438 645.1126,-1432 651.1126,-1426 657.1126,-1426"/>
-<text text-anchor="middle" x="717.4649" y="-1435" font-family="bold" font-size="15.00" fill="#222222">(*Conn)</text>
+<path fill="#eed8ae" stroke="#000000" stroke-width=".5" d="M657.1126,-1270C657.1126,-1270 777.8171,-1270 777.8171,-1270 783.8171,-1270 789.8171,-1276 789.8171,-1282 789.8171,-1282 789.8171,-1701 789.8171,-1701 789.8171,-1707 783.8171,-1713 777.8171,-1713 777.8171,-1713 657.1126,-1713 657.1126,-1713 651.1126,-1713 645.1126,-1707 645.1126,-1701 645.1126,-1701 645.1126,-1282 645.1126,-1282 645.1126,-1276 651.1126,-1270 657.1126,-1270"/>
+<text text-anchor="middle" x="717.4649" y="-1279" font-family="bold" font-size="15.00" fill="#222222">(*Conn)</text>
 </a>
 </g>
 </g>
 <g id="clust7" class="cluster">
 <title>cluster_blitter.com/go/hkexsh/hkexnet.Conn</title>
 <g id="a_clust7"><a xlink:href="/?f=blitter.com/go/hkexsh/hkexnet" xlink:title="type: blitter.com/go/hkexsh/hkexnet.Conn">
-<path fill="#eed8ae" stroke="#000000" stroke-width=".5" d="M678.0134,-1105C678.0134,-1105 756.9164,-1105 756.9164,-1105 762.9164,-1105 768.9164,-1111 768.9164,-1117 768.9164,-1117 768.9164,-1292 768.9164,-1292 768.9164,-1298 762.9164,-1304 756.9164,-1304 756.9164,-1304 678.0134,-1304 678.0134,-1304 672.0134,-1304 666.0134,-1298 666.0134,-1292 666.0134,-1292 666.0134,-1117 666.0134,-1117 666.0134,-1111 672.0134,-1105 678.0134,-1105"/>
-<text text-anchor="middle" x="717.4649" y="-1114" font-family="bold" font-size="15.00" fill="#222222">(Conn)</text>
+<path fill="#eed8ae" stroke="#000000" stroke-width=".5" d="M678.0134,-949C678.0134,-949 756.9164,-949 756.9164,-949 762.9164,-949 768.9164,-955 768.9164,-961 768.9164,-961 768.9164,-1136 768.9164,-1136 768.9164,-1142 762.9164,-1148 756.9164,-1148 756.9164,-1148 678.0134,-1148 678.0134,-1148 672.0134,-1148 666.0134,-1142 666.0134,-1136 666.0134,-1136 666.0134,-961 666.0134,-961 666.0134,-955 672.0134,-949 678.0134,-949"/>
+<text text-anchor="middle" x="717.4649" y="-958" font-family="bold" font-size="15.00" fill="#222222">(Conn)</text>
 </a>
 </g>
 </g>
 <g id="clust8" class="cluster">
 <title>cluster_blitter.com/go/hkexsh/logger</title>
 <g id="a_clust8"><a xlink:href="/?f=blitter.com/go/hkexsh/logger" xlink:title="package: blitter.com/go/hkexsh/logger">
-<polygon fill="#ffffe0" stroke="#000000" stroke-width=".8" points="664.3633,-950 664.3633,-1089 770.5664,-1089 770.5664,-950 664.3633,-950"/>
-<text text-anchor="middle" x="717.4649" y="-1072.2" font-family="bold" font-size="16.00" fill="#000000">[logger]</text>
+<polygon fill="#ffffe0" stroke="#000000" stroke-width=".8" points="664.3633,-1755 664.3633,-1894 770.5664,-1894 770.5664,-1755 664.3633,-1755"/>
+<text text-anchor="middle" x="717.4649" y="-1877.2" font-family="bold" font-size="16.00" fill="#000000">[logger]</text>
 </a>
 </g>
 </g>
 <g id="clust9" class="cluster">
 <title>cluster_blitter.com/go/hkexsh/spinsult</title>
 <g id="a_clust9"><a xlink:href="/?f=blitter.com/go/hkexsh/spinsult" xlink:title="package: blitter.com/go/hkexsh/spinsult">
-<polygon fill="#ffffe0" stroke="#000000" stroke-width=".8" points="407.1069,-441 407.1069,-519 534.2108,-519 534.2108,-441 407.1069,-441"/>
-<text text-anchor="middle" x="470.6588" y="-502.2" font-family="bold" font-size="16.00" fill="#000000">[spinsult]</text>
+<polygon fill="#ffffe0" stroke="#000000" stroke-width=".8" points="407.1069,-263 407.1069,-341 534.2108,-341 534.2108,-263 407.1069,-263"/>
+<text text-anchor="middle" x="470.6588" y="-324.2" font-family="bold" font-size="16.00" fill="#000000">[spinsult]</text>
 </a>
 </g>
 </g>
 <g id="clust10" class="cluster">
 <title>cluster_github.com/mattn/go&#45;isatty</title>
 <g id="a_clust10"><a xlink:href="/?f=github.com/mattn/go-isatty" xlink:title="package: github.com/mattn/go&#45;isatty">
-<polygon fill="#ffffe0" stroke="#000000" stroke-width=".8" points="175.7014,-1477 175.7014,-1555 281.9045,-1555 281.9045,-1477 175.7014,-1477"/>
-<text text-anchor="middle" x="228.803" y="-1538.2" font-family="bold" font-size="16.00" fill="#000000">[isatty]</text>
+<polygon fill="#ffffe0" stroke="#000000" stroke-width=".8" points="175.7014,-1758 175.7014,-1836 281.9045,-1836 281.9045,-1758 175.7014,-1758"/>
+<text text-anchor="middle" x="228.803" y="-1819.2" font-family="bold" font-size="16.00" fill="#000000">[isatty]</text>
 </a>
 </g>
 </g>
-<!-- blitter.com/go/hkexsh/hkexsh.reqTunnel -->
+<!-- blitter.com/go/hkexsh/hkexsh.rejectUserMsg -->
 <g id="node1" class="node">
+<title>blitter.com/go/hkexsh/hkexsh.rejectUserMsg</title>
+<ellipse fill="#add8e6" stroke="#000000" stroke-width=".5" cx="228.803" cy="-289" rx="61.1043" ry="18"/>
+<text text-anchor="middle" x="228.803" y="-285.3" font-family="Verdana" font-size="14.00" fill="#000000">rejectUserMsg</text>
+</g>
+<!-- blitter.com/go/hkexsh/spinsult.GetSentence -->
+<g id="node45" class="node">
+<title>blitter.com/go/hkexsh/spinsult.GetSentence</title>
+<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="470.6588" cy="-289" rx="55.6039" ry="18"/>
+<text text-anchor="middle" x="470.6588" y="-285.3" font-family="Verdana" font-size="14.00" fill="#000000">GetSentence</text>
+</g>
+<!-- blitter.com/go/hkexsh/hkexsh.rejectUserMsg&#45;&gt;blitter.com/go/hkexsh/spinsult.GetSentence -->
+<g id="edge1" class="edge">
+<title>blitter.com/go/hkexsh/hkexsh.rejectUserMsg&#45;&gt;blitter.com/go/hkexsh/spinsult.GetSentence</title>
+<path fill="none" stroke="#8b4513" d="M290.1461,-289C325.0462,-289 368.7737,-289 404.4495,-289"/>
+<polygon fill="#8b4513" stroke="#8b4513" points="404.7629,-292.5001 414.7628,-289 404.7628,-285.5001 404.7629,-292.5001"/>
+</g>
+<!-- blitter.com/go/hkexsh/hkexsh.reqTunnel -->
+<g id="node2" class="node">
 <title>blitter.com/go/hkexsh/hkexsh.reqTunnel</title>
-<ellipse fill="#add8e6" stroke="#000000" stroke-width=".5" cx="470.6588" cy="-1084" rx="43.4031" ry="18"/>
-<text text-anchor="middle" x="470.6588" y="-1080.3" font-family="Verdana" font-size="14.00" fill="#000000">reqTunnel</text>
+<ellipse fill="#add8e6" stroke="#000000" stroke-width=".5" cx="470.6588" cy="-1686" rx="43.4031" ry="18"/>
+<text text-anchor="middle" x="470.6588" y="-1682.3" font-family="Verdana" font-size="14.00" fill="#000000">reqTunnel</text>
 </g>
 <!-- (*blitter.com/go/hkexsh/hkexnet.Conn).WritePacket -->
 <g id="node33" class="node">
 <title>(*blitter.com/go/hkexsh/hkexnet.Conn).WritePacket</title>
-<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="717.4649" cy="-1538" rx="50.7037" ry="18"/>
-<text text-anchor="middle" x="717.4649" y="-1534.3" font-family="Verdana" font-size="14.00" fill="#000000">WritePacket</text>
+<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="717.4649" cy="-1687" rx="50.7037" ry="18"/>
+<text text-anchor="middle" x="717.4649" y="-1683.3" font-family="Verdana" font-size="14.00" fill="#000000">WritePacket</text>
 </g>
 <!-- blitter.com/go/hkexsh/hkexsh.reqTunnel&#45;&gt;(*blitter.com/go/hkexsh/hkexnet.Conn).WritePacket -->
-<g id="edge2" class="edge">
+<g id="edge3" class="edge">
 <title>blitter.com/go/hkexsh/hkexsh.reqTunnel&#45;&gt;(*blitter.com/go/hkexsh/hkexnet.Conn).WritePacket</title>
-<path fill="none" stroke="#8b4513" d="M482.4705,-1101.4959C506.7004,-1138.2359 562.1452,-1226.8229 590.7117,-1309 620.2237,-1393.8968 567.7676,-1440.1471 626.7117,-1508 635.3839,-1517.9828 647.4506,-1524.6576 659.9583,-1529.1165"/>
-<polygon fill="#8b4513" stroke="#8b4513" points="658.9714,-1532.4749 669.5601,-1532.1124 661.0565,-1525.7927 658.9714,-1532.4749"/>
+<path fill="none" stroke="#8b4513" d="M514.2147,-1686.1765C553.7571,-1686.3367 612.4683,-1686.5746 656.6364,-1686.7535"/>
+<polygon fill="#8b4513" stroke="#8b4513" points="656.663,-1690.2536 666.6771,-1686.7942 656.6914,-1683.2536 656.663,-1690.2536"/>
 </g>
 <!-- blitter.com/go/hkexsh/logger.LogDebug -->
 <g id="node43" class="node">
 <title>blitter.com/go/hkexsh/logger.LogDebug</title>
-<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="717.4649" cy="-1037" rx="45.2034" ry="18"/>
-<text text-anchor="middle" x="717.4649" y="-1033.3" font-family="Verdana" font-size="14.00" fill="#000000">LogDebug</text>
+<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="717.4649" cy="-1781" rx="45.2034" ry="18"/>
+<text text-anchor="middle" x="717.4649" y="-1777.3" font-family="Verdana" font-size="14.00" fill="#000000">LogDebug</text>
 </g>
 <!-- blitter.com/go/hkexsh/hkexsh.reqTunnel&#45;&gt;blitter.com/go/hkexsh/logger.LogDebug -->
-<g id="edge1" class="edge">
+<g id="edge2" class="edge">
 <title>blitter.com/go/hkexsh/hkexsh.reqTunnel&#45;&gt;blitter.com/go/hkexsh/logger.LogDebug</title>
-<path fill="none" stroke="#8b4513" d="M510.3125,-1076.4486C552.8399,-1068.35 620.4932,-1055.4666 666.8382,-1046.641"/>
-<polygon fill="#8b4513" stroke="#8b4513" points="667.5088,-1050.0763 676.6774,-1044.7673 666.1992,-1043.1998 667.5088,-1050.0763"/>
+<path fill="none" stroke="#8b4513" d="M502.6714,-1698.3222C546.8135,-1715.3133 626.4496,-1745.9666 675.3687,-1764.7964"/>
+<polygon fill="#8b4513" stroke="#8b4513" points="674.1335,-1768.0713 684.7233,-1768.3972 676.6481,-1761.5385 674.1335,-1768.0713"/>
 </g>
-<!-- blitter.com/go/hkexsh/hkexsh.launchTuns -->
-<g id="node2" class="node">
-<title>blitter.com/go/hkexsh/hkexsh.launchTuns</title>
-<ellipse fill="#add8e6" stroke="#000000" stroke-width=".5" cx="228.803" cy="-1064" rx="48.3036" ry="18"/>
-<text text-anchor="middle" x="228.803" y="-1060.3" font-family="Verdana" font-size="14.00" fill="#000000">launchTuns</text>
-</g>
-<!-- blitter.com/go/hkexsh/hkexsh.launchTuns&#45;&gt;blitter.com/go/hkexsh/hkexsh.reqTunnel -->
-<g id="edge3" class="edge">
-<title>blitter.com/go/hkexsh/hkexsh.launchTuns&#45;&gt;blitter.com/go/hkexsh/hkexsh.reqTunnel</title>
-<path fill="none" stroke="#000000" d="M276.2973,-1067.9275C316.9659,-1071.2905 375.4677,-1076.1283 417.651,-1079.6166"/>
-<polygon fill="#000000" stroke="#000000" points="417.4789,-1083.1142 427.7333,-1080.4503 418.0558,-1076.138 417.4789,-1083.1142"/>
-</g>
-<!-- blitter.com/go/hkexsh/hkexsh.doShellMode$1 -->
+<!-- blitter.com/go/hkexsh/hkexsh.main -->
 <g id="node3" class="node">
-<title>blitter.com/go/hkexsh/hkexsh.doShellMode$1</title>
-<ellipse fill="#add8e6" stroke="#000000" stroke-dasharray="1,5" cx="470.6588" cy="-406" rx="64.8047" ry="18"/>
-<text text-anchor="middle" x="470.6588" y="-402.3" font-family="Verdana" font-size="14.00" fill="#000000">doShellMode$1</text>
-</g>
-<!-- blitter.com/go/hkexsh.Restore -->
-<g id="node19" class="node">
-<title>blitter.com/go/hkexsh.Restore</title>
-<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="717.4649" cy="-301" rx="34.8031" ry="18"/>
-<text text-anchor="middle" x="717.4649" y="-297.3" font-family="Verdana" font-size="14.00" fill="#000000">Restore</text>
-</g>
-<!-- blitter.com/go/hkexsh/hkexsh.doShellMode$1&#45;&gt;blitter.com/go/hkexsh.Restore -->
-<g id="edge4" class="edge">
-<title>blitter.com/go/hkexsh/hkexsh.doShellMode$1&#45;&gt;blitter.com/go/hkexsh.Restore</title>
-<path fill="none" stroke="#8b4513" d="M514.7556,-392.6662C527.6358,-388.0866 541.5201,-382.4607 553.7117,-376 589.1384,-357.2262 590.3166,-339.8197 626.7117,-323 641.5605,-316.1378 658.8022,-311.2673 674.244,-307.8845"/>
-<polygon fill="#8b4513" stroke="#8b4513" points="674.9928,-311.3039 684.0882,-305.8704 673.5896,-304.446 674.9928,-311.3039"/>
-</g>
-<!-- (*blitter.com/go/hkexsh.Session).SetStatus -->
-<g id="node23" class="node">
-<title>(*blitter.com/go/hkexsh.Session).SetStatus</title>
-<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="717.4649" cy="-378" rx="42.2035" ry="18"/>
-<text text-anchor="middle" x="717.4649" y="-374.3" font-family="Verdana" font-size="14.00" fill="#000000">SetStatus</text>
-</g>
-<!-- blitter.com/go/hkexsh/hkexsh.doShellMode$1&#45;&gt;(*blitter.com/go/hkexsh.Session).SetStatus -->
-<g id="edge6" class="edge">
-<title>blitter.com/go/hkexsh/hkexsh.doShellMode$1&#45;&gt;(*blitter.com/go/hkexsh.Session).SetStatus</title>
-<path fill="none" stroke="#8b4513" d="M531.0344,-399.1504C572.4309,-394.454 626.7624,-388.2901 666.0842,-383.8291"/>
-<polygon fill="#8b4513" stroke="#8b4513" points="666.7046,-387.2813 676.2463,-382.6762 665.9155,-380.3259 666.7046,-387.2813"/>
-</g>
-<!-- (blitter.com/go/hkexsh.Session).Status -->
-<g id="node24" class="node">
-<title>(blitter.com/go/hkexsh.Session).Status</title>
-<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="717.4649" cy="-516" rx="29.9034" ry="18"/>
-<text text-anchor="middle" x="717.4649" y="-512.3" font-family="Verdana" font-size="14.00" fill="#000000">Status</text>
-</g>
-<!-- blitter.com/go/hkexsh/hkexsh.doShellMode$1&#45;&gt;(blitter.com/go/hkexsh.Session).Status -->
-<g id="edge7" class="edge">
-<title>blitter.com/go/hkexsh/hkexsh.doShellMode$1&#45;&gt;(blitter.com/go/hkexsh.Session).Status</title>
-<path fill="none" stroke="#8b4513" d="M516.7074,-418.9308C529.0961,-423.2443 542.2348,-428.6129 553.7117,-435 590.1633,-455.2861 589.3092,-475.5257 626.7117,-494 642.7214,-501.9077 661.7539,-507.0833 678.2447,-510.4139"/>
-<polygon fill="#8b4513" stroke="#8b4513" points="677.6624,-513.8656 688.1344,-512.2573 678.9451,-506.9841 677.6624,-513.8656"/>
-</g>
-<!-- (blitter.com/go/hkexsh/hkexnet.Conn).GetStatus -->
-<g id="node40" class="node">
-<title>(blitter.com/go/hkexsh/hkexnet.Conn).GetStatus</title>
-<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="717.4649" cy="-1217" rx="43.4031" ry="18"/>
-<text text-anchor="middle" x="717.4649" y="-1213.3" font-family="Verdana" font-size="14.00" fill="#000000">GetStatus</text>
+<title>blitter.com/go/hkexsh/hkexsh.main</title>
+<ellipse fill="#add8e6" stroke="#000000" stroke-width=".5" cx="43" cy="-1038" rx="27" ry="18"/>
+<text text-anchor="middle" x="43" y="-1034.3" font-family="Verdana" font-size="14.00" fill="#000000">main</text>
 </g>
-<!-- blitter.com/go/hkexsh/hkexsh.doShellMode$1&#45;&gt;(blitter.com/go/hkexsh/hkexnet.Conn).GetStatus -->
-<g id="edge5" class="edge">
-<title>blitter.com/go/hkexsh/hkexsh.doShellMode$1&#45;&gt;(blitter.com/go/hkexsh/hkexnet.Conn).GetStatus</title>
-<path fill="none" stroke="#8b4513" d="M525.8923,-415.4821C536.5782,-419.7731 546.6363,-425.992 553.7117,-435 605.5666,-501.0182 574.3081,-1121.4166 626.7117,-1187 636.1382,-1198.7973 650.3304,-1205.9982 664.7092,-1210.3797"/>
-<polygon fill="#8b4513" stroke="#8b4513" points="664.0763,-1213.8321 674.6372,-1212.9845 665.8528,-1207.0613 664.0763,-1213.8321"/>
+<!-- blitter.com/go/hkexsh/hkexsh.main&#45;&gt;blitter.com/go/hkexsh/hkexsh.rejectUserMsg -->
+<g id="edge25" class="edge">
+<title>blitter.com/go/hkexsh/hkexsh.main&#45;&gt;blitter.com/go/hkexsh/hkexsh.rejectUserMsg</title>
+<path fill="none" stroke="#000000" d="M43.6422,-1019.9843C47.106,-927.4019 64.948,-504.7076 106,-381 115.9869,-350.9052 118.4671,-340.089 143,-320 151.1722,-313.3081 160.9092,-307.9991 170.8413,-303.8065"/>
+<polygon fill="#000000" stroke="#000000" points="172.3131,-306.99 180.3788,-300.1202 169.7894,-300.4607 172.3131,-306.99"/>
 </g>
-<!-- blitter.com/go/hkexsh/hkexsh.doShellMode -->
+<!-- blitter.com/go/hkexsh/hkexsh.parseNonSwitchArgs -->
 <g id="node4" class="node">
-<title>blitter.com/go/hkexsh/hkexsh.doShellMode</title>
-<ellipse fill="#add8e6" stroke="#000000" stroke-width=".5" cx="228.803" cy="-406" rx="55.0038" ry="18"/>
-<text text-anchor="middle" x="228.803" y="-402.3" font-family="Verdana" font-size="14.00" fill="#000000">doShellMode</text>
-</g>
-<!-- blitter.com/go/hkexsh/hkexsh.doShellMode&#45;&gt;blitter.com/go/hkexsh/hkexsh.doShellMode$1 -->
-<g id="edge8" class="edge">
-<title>blitter.com/go/hkexsh/hkexsh.doShellMode&#45;&gt;blitter.com/go/hkexsh/hkexsh.doShellMode$1</title>
-<path fill="none" stroke="#000000" d="M283.9864,-406C313.0429,-406 349.3749,-406 382.2449,-406"/>
-<polygon fill="#000000" stroke="#000000" points="395.4139,-409.5 405.4139,-406 395.4139,-402.5 395.4139,-409.5"/>
-<polyline fill="none" stroke="#000000" points="395.4139,-406 390.4139,-406.0001 "/>
-<ellipse fill="none" stroke="#000000" cx="386.4139" cy="-406.0001" rx="4" ry="4"/>
-</g>
-<!-- blitter.com/go/hkexsh/hkexsh.handleTermResizes -->
-<g id="node7" class="node">
-<title>blitter.com/go/hkexsh/hkexsh.handleTermResizes</title>
-<ellipse fill="#add8e6" stroke="#000000" stroke-width=".5" cx="470.6588" cy="-203" rx="80.7059" ry="18"/>
-<text text-anchor="middle" x="470.6588" y="-199.3" font-family="Verdana" font-size="14.00" fill="#000000">handleTermResizes</text>
-</g>
-<!-- blitter.com/go/hkexsh/hkexsh.doShellMode&#45;&gt;blitter.com/go/hkexsh/hkexsh.handleTermResizes -->
-<g id="edge12" class="edge">
-<title>blitter.com/go/hkexsh/hkexsh.doShellMode&#45;&gt;blitter.com/go/hkexsh/hkexsh.handleTermResizes</title>
-<path fill="none" stroke="#000000" d="M273.1129,-395.1743C287.0857,-390.5691 302.1206,-384.2984 314.606,-376 375.1076,-335.7877 427.5262,-266.8484 453.4245,-229.2825"/>
-<polygon fill="#000000" stroke="#000000" points="456.4063,-231.1217 459.1323,-220.8835 450.6167,-227.1871 456.4063,-231.1217"/>
-</g>
-<!-- blitter.com/go/hkexsh/hkexsh.doShellMode$2 -->
-<g id="node8" class="node">
-<title>blitter.com/go/hkexsh/hkexsh.doShellMode$2</title>
-<ellipse fill="#add8e6" stroke="#000000" stroke-dasharray="1,5" cx="470.6588" cy="-345" rx="64.8047" ry="18"/>
-<text text-anchor="middle" x="470.6588" y="-341.3" font-family="Verdana" font-size="14.00" fill="#000000">doShellMode$2</text>
-</g>
-<!-- blitter.com/go/hkexsh/hkexsh.doShellMode&#45;&gt;blitter.com/go/hkexsh/hkexsh.doShellMode$2 -->
-<g id="edge15" class="edge">
-<title>blitter.com/go/hkexsh/hkexsh.doShellMode&#45;&gt;blitter.com/go/hkexsh/hkexsh.doShellMode$2</title>
-<path fill="none" stroke="#000000" d="M272.6013,-394.9534C308.156,-385.9859 358.978,-373.1677 400.2375,-362.7614"/>
-<polygon fill="#000000" stroke="#000000" points="413.7859,-362.9539 422.6263,-357.1146 412.074,-356.1665 413.7859,-362.9539"/>
-<polyline fill="none" stroke="#000000" points="412.93,-359.5602 408.0818,-360.783 "/>
-<ellipse fill="none" stroke="#000000" cx="404.2032" cy="-361.7612" rx="4" ry="4"/>
-</g>
-<!-- blitter.com/go/hkexsh/hkexsh.handleTermResizes$1 -->
-<g id="node5" class="node">
-<title>blitter.com/go/hkexsh/hkexsh.handleTermResizes$1</title>
-<ellipse fill="#add8e6" stroke="#000000" stroke-dasharray="1,5" cx="717.4649" cy="-57" rx="90.507" ry="18"/>
-<text text-anchor="middle" x="717.4649" y="-53.3" font-family="Verdana" font-size="14.00" fill="#000000">handleTermResizes$1</text>
-</g>
-<!-- blitter.com/go/hkexsh/hkexsh.GetSize -->
-<g id="node6" class="node">
-<title>blitter.com/go/hkexsh/hkexsh.GetSize</title>
-<ellipse fill="#add8e6" stroke="#000000" stroke-width="1.5" cx="915.8692" cy="-57" rx="34.8031" ry="18"/>
-<text text-anchor="middle" x="915.8692" y="-53.3" font-family="Verdana" font-size="14.00" fill="#000000">GetSize</text>
-</g>
-<!-- blitter.com/go/hkexsh/hkexsh.handleTermResizes$1&#45;&gt;blitter.com/go/hkexsh/hkexsh.GetSize -->
-<g id="edge9" class="edge">
-<title>blitter.com/go/hkexsh/hkexsh.handleTermResizes$1&#45;&gt;blitter.com/go/hkexsh/hkexsh.GetSize</title>
-<path fill="none" stroke="#000000" d="M808.2478,-57C830.0141,-57 852.3249,-57 870.9481,-57"/>
-<polygon fill="#000000" stroke="#000000" points="871.1707,-60.5001 881.1707,-57 871.1706,-53.5001 871.1707,-60.5001"/>
-</g>
-<!-- blitter.com/go/hkexsh/hkexsh.handleTermResizes$1&#45;&gt;(*blitter.com/go/hkexsh/hkexnet.Conn).WritePacket -->
-<g id="edge10" class="edge">
-<title>blitter.com/go/hkexsh/hkexsh.handleTermResizes$1&#45;&gt;(*blitter.com/go/hkexsh/hkexnet.Conn).WritePacket</title>
-<path fill="none" stroke="#8b4513" d="M647.7246,-68.6826C631.5763,-75.1259 616.7698,-85.0936 608.7117,-100.5 590.7524,-134.8369 590.7524,-1461.1631 608.7117,-1495.5 618.5215,-1514.2555 638.4208,-1524.7817 658.5474,-1530.6713"/>
-<polygon fill="#8b4513" stroke="#8b4513" points="657.8461,-1534.1048 668.4027,-1533.2058 659.5897,-1527.3254 657.8461,-1534.1048"/>
-</g>
-<!-- blitter.com/go/hkexsh/hkexsh.handleTermResizes&#45;&gt;blitter.com/go/hkexsh/hkexsh.handleTermResizes$1 -->
-<g id="edge11" class="edge">
-<title>blitter.com/go/hkexsh/hkexsh.handleTermResizes&#45;&gt;blitter.com/go/hkexsh/hkexsh.handleTermResizes$1</title>
-<path fill="none" stroke="#000000" d="M490.5101,-185.2133C518.923,-160.5235 573.6353,-115.7754 626.7117,-88 632.0327,-85.2155 637.656,-82.6002 643.3907,-80.1617"/>
-<polygon fill="#000000" stroke="#000000" points="656.8861,-78.7356 664.9702,-71.8873 654.38,-72.1996 656.8861,-78.7356"/>
-<polyline fill="none" stroke="#000000" points="655.633,-75.4676 650.9645,-77.2577 "/>
-<ellipse fill="none" stroke="#000000" cx="647.2296" cy="-78.6898" rx="4" ry="4"/>
-</g>
-<!-- blitter.com/go/hkexsh/hkexsh.doShellMode$2$1 -->
-<g id="node9" class="node">
-<title>blitter.com/go/hkexsh/hkexsh.doShellMode$2$1</title>
-<ellipse fill="#add8e6" stroke="#000000" stroke-dasharray="1,5" cx="717.4649" cy="-118" rx="74.6057" ry="18"/>
-<text text-anchor="middle" x="717.4649" y="-114.3" font-family="Verdana" font-size="14.00" fill="#000000">doShellMode$2$1</text>
-</g>
-<!-- blitter.com/go/hkexsh/hkexsh.doShellMode$2&#45;&gt;blitter.com/go/hkexsh/hkexsh.doShellMode$2$1 -->
-<g id="edge13" class="edge">
-<title>blitter.com/go/hkexsh/hkexsh.doShellMode$2&#45;&gt;blitter.com/go/hkexsh/hkexsh.doShellMode$2$1</title>
-<path fill="none" stroke="#000000" d="M483.8234,-327.0986C517.9924,-280.8117 608.1439,-159.8757 626.7117,-147 634.4796,-141.6135 643.3019,-137.1867 652.3208,-133.5596"/>
-<polygon fill="#000000" stroke="#000000" points="653.5947,-136.8202 661.7547,-130.0625 651.1616,-130.2566 653.5947,-136.8202"/>
+<title>blitter.com/go/hkexsh/hkexsh.parseNonSwitchArgs</title>
+<ellipse fill="#add8e6" stroke="#000000" stroke-width=".5" cx="228.803" cy="-350" rx="85.6064" ry="18"/>
+<text text-anchor="middle" x="228.803" y="-346.3" font-family="Verdana" font-size="14.00" fill="#000000">parseNonSwitchArgs</text>
 </g>
-<!-- blitter.com/go/hkexsh/hkexsh.doShellMode$2&#45;&gt;blitter.com/go/hkexsh.Restore -->
-<g id="edge14" class="edge">
-<title>blitter.com/go/hkexsh/hkexsh.doShellMode$2&#45;&gt;blitter.com/go/hkexsh.Restore</title>
-<path fill="none" stroke="#8b4513" d="M525.4331,-335.235C570.3383,-327.2294 633.0209,-316.0545 674.3955,-308.6783"/>
-<polygon fill="#8b4513" stroke="#8b4513" points="675.2012,-312.0899 684.4316,-306.8891 673.9725,-305.1986 675.2012,-312.0899"/>
+<!-- blitter.com/go/hkexsh/hkexsh.main&#45;&gt;blitter.com/go/hkexsh/hkexsh.parseNonSwitchArgs -->
+<g id="edge4" class="edge">
+<title>blitter.com/go/hkexsh/hkexsh.main&#45;&gt;blitter.com/go/hkexsh/hkexsh.parseNonSwitchArgs</title>
+<path fill="none" stroke="#000000" d="M43.5674,-1019.8091C46.8493,-919.5715 64.7107,-437.302 106,-387 115.5271,-375.3933 128.5566,-367.334 142.5822,-361.7587"/>
+<polygon fill="#000000" stroke="#000000" points="144.1577,-364.9141 152.4205,-358.2826 141.8257,-358.314 144.1577,-364.9141"/>
 </g>
 <!-- blitter.com/go/hkexsh/hkexsh.main$1 -->
-<g id="node10" class="node">
+<g id="node5" class="node">
 <title>blitter.com/go/hkexsh/hkexsh.main$1</title>
-<ellipse fill="#add8e6" stroke="#000000" stroke-dasharray="1,5" cx="228.803" cy="-768" rx="34.8031" ry="18"/>
-<text text-anchor="middle" x="228.803" y="-764.3" font-family="Verdana" font-size="14.00" fill="#000000">main$1</text>
-</g>
-<!-- blitter.com/go/hkexsh/hkexsh.main$1&#45;&gt;blitter.com/go/hkexsh.Restore -->
-<g id="edge16" class="edge">
-<title>blitter.com/go/hkexsh/hkexsh.main$1&#45;&gt;blitter.com/go/hkexsh.Restore</title>
-<path fill="none" stroke="#8b4513" d="M260.2646,-760.2146C277.0848,-755.2754 297.7428,-747.9266 314.606,-738 437.2538,-665.8027 473.9485,-642.8676 553.7117,-525 607.2125,-445.9408 555.6357,-386.7251 626.7117,-323 639.1881,-311.814 656.3837,-306.0743 672.454,-303.2066"/>
-<polygon fill="#8b4513" stroke="#8b4513" points="673.3965,-306.6067 682.7911,-301.7085 672.3925,-299.679 673.3965,-306.6067"/>
-</g>
-<!-- blitter.com/go/hkexsh/hkexsh.main -->
-<g id="node11" class="node">
-<title>blitter.com/go/hkexsh/hkexsh.main</title>
-<ellipse fill="#add8e6" stroke="#000000" stroke-width=".5" cx="43" cy="-910" rx="27" ry="18"/>
-<text text-anchor="middle" x="43" y="-906.3" font-family="Verdana" font-size="14.00" fill="#000000">main</text>
-</g>
-<!-- blitter.com/go/hkexsh/hkexsh.main&#45;&gt;blitter.com/go/hkexsh/hkexsh.launchTuns -->
-<g id="edge45" class="edge">
-<title>blitter.com/go/hkexsh/hkexsh.main&#45;&gt;blitter.com/go/hkexsh/hkexsh.launchTuns</title>
-<path fill="none" stroke="#000000" d="M49.3503,-927.8412C58.4825,-951.1286 77.4329,-991.7629 106,-1016 126.2368,-1033.1694 153.3309,-1044.6323 176.9206,-1052.0359"/>
-<polygon fill="#000000" stroke="#000000" points="176.2031,-1055.4738 186.7857,-1054.9652 178.1957,-1048.7634 176.2031,-1055.4738"/>
-</g>
-<!-- blitter.com/go/hkexsh/hkexsh.main&#45;&gt;blitter.com/go/hkexsh/hkexsh.doShellMode -->
-<g id="edge46" class="edge">
-<title>blitter.com/go/hkexsh/hkexsh.main&#45;&gt;blitter.com/go/hkexsh/hkexsh.doShellMode</title>
-<path fill="none" stroke="#000000" d="M43.7551,-891.7733C46.5691,-834.6881 58.8546,-654.8329 106,-515 117.1173,-482.0262 117.7155,-469.9073 143,-446 153.3787,-436.1867 166.599,-428.4263 179.5357,-422.4561"/>
-<polygon fill="#000000" stroke="#000000" points="181.0728,-425.6046 188.8607,-418.4214 178.293,-419.1802 181.0728,-425.6046"/>
+<ellipse fill="#add8e6" stroke="#000000" stroke-dasharray="1,5" cx="228.803" cy="-944" rx="34.8031" ry="18"/>
+<text text-anchor="middle" x="228.803" y="-940.3" font-family="Verdana" font-size="14.00" fill="#000000">main$1</text>
 </g>
 <!-- blitter.com/go/hkexsh/hkexsh.main&#45;&gt;blitter.com/go/hkexsh/hkexsh.main$1 -->
-<g id="edge24" class="edge">
+<g id="edge12" class="edge">
 <title>blitter.com/go/hkexsh/hkexsh.main&#45;&gt;blitter.com/go/hkexsh/hkexsh.main$1</title>
-<path fill="none" stroke="#000000" d="M48.9625,-892.3807C57.7707,-868.9943 76.4769,-827.9846 106,-805 123.7967,-791.1448 146.7354,-782.4612 167.9609,-777.0259"/>
-<polygon fill="#000000" stroke="#000000" points="185.658,-776.9605 194.7483,-771.5183 184.2483,-770.104 185.658,-776.9605"/>
-<polyline fill="none" stroke="#000000" points="184.9532,-773.5322 180.0556,-774.5392 "/>
-<polygon fill="none" stroke="#000000" points="168.3015,-776.956 173.373,-771.8295 180.0556,-774.5392 174.9841,-779.6656 168.3015,-776.956"/>
-</g>
-<!-- blitter.com/go/hkexsh/hkexsh.parseNonSwitchArgs -->
-<g id="node12" class="node">
-<title>blitter.com/go/hkexsh/hkexsh.parseNonSwitchArgs</title>
-<ellipse fill="#add8e6" stroke="#000000" stroke-width=".5" cx="228.803" cy="-345" rx="85.6064" ry="18"/>
-<text text-anchor="middle" x="228.803" y="-341.3" font-family="Verdana" font-size="14.00" fill="#000000">parseNonSwitchArgs</text>
-</g>
-<!-- blitter.com/go/hkexsh/hkexsh.main&#45;&gt;blitter.com/go/hkexsh/hkexsh.parseNonSwitchArgs -->
-<g id="edge17" class="edge">
-<title>blitter.com/go/hkexsh/hkexsh.main&#45;&gt;blitter.com/go/hkexsh/hkexsh.parseNonSwitchArgs</title>
-<path fill="none" stroke="#000000" d="M43.8632,-891.8216C48.2412,-807.3111 70.6959,-453.6622 143,-376 147.9714,-370.6602 153.9316,-366.2384 160.364,-362.5771"/>
-<polygon fill="#000000" stroke="#000000" points="162.0196,-365.6622 169.3794,-358.0409 158.8733,-359.4091 162.0196,-365.6622"/>
+<path fill="none" stroke="#000000" d="M61.4659,-1024.6576C81.021,-1010.9441 113.1327,-989.5916 143,-975 152.526,-970.3461 162.9367,-966.0065 173.1181,-962.135"/>
+<polygon fill="#000000" stroke="#000000" points="190.5022,-959.7136 198.7681,-953.0861 188.1733,-953.1124 190.5022,-959.7136"/>
+<polyline fill="none" stroke="#000000" points="189.3378,-956.413 184.6226,-958.0765 "/>
+<polygon fill="none" stroke="#000000" points="173.3061,-962.0688 177.6336,-956.3005 184.6226,-958.0765 180.2951,-963.8448 173.3061,-962.0688"/>
 </g>
 <!-- blitter.com/go/hkexsh/hkexsh.sendSessionParams -->
-<g id="node13" class="node">
+<g id="node6" class="node">
 <title>blitter.com/go/hkexsh/hkexsh.sendSessionParams</title>
-<ellipse fill="#add8e6" stroke="#000000" stroke-width=".5" cx="470.6588" cy="-841" rx="83.1058" ry="18"/>
-<text text-anchor="middle" x="470.6588" y="-837.3" font-family="Verdana" font-size="14.00" fill="#000000">sendSessionParams</text>
+<ellipse fill="#add8e6" stroke="#000000" stroke-width=".5" cx="470.6588" cy="-664" rx="83.1058" ry="18"/>
+<text text-anchor="middle" x="470.6588" y="-660.3" font-family="Verdana" font-size="14.00" fill="#000000">sendSessionParams</text>
 </g>
 <!-- blitter.com/go/hkexsh/hkexsh.main&#45;&gt;blitter.com/go/hkexsh/hkexsh.sendSessionParams -->
-<g id="edge34" class="edge">
+<g id="edge22" class="edge">
 <title>blitter.com/go/hkexsh/hkexsh.main&#45;&gt;blitter.com/go/hkexsh/hkexsh.sendSessionParams</title>
-<path fill="none" stroke="#000000" d="M69.4292,-905.7358C132.9232,-895.4915 296.0041,-869.1794 393.5946,-853.4338"/>
-<polygon fill="#000000" stroke="#000000" points="394.3874,-856.8513 403.7022,-851.803 393.2724,-849.9406 394.3874,-856.8513"/>
-</g>
-<!-- blitter.com/go/hkexsh/hkexsh.rejectUserMsg -->
-<g id="node14" class="node">
-<title>blitter.com/go/hkexsh/hkexsh.rejectUserMsg</title>
-<ellipse fill="#add8e6" stroke="#000000" stroke-width=".5" cx="228.803" cy="-476" rx="61.1043" ry="18"/>
-<text text-anchor="middle" x="228.803" y="-472.3" font-family="Verdana" font-size="14.00" fill="#000000">rejectUserMsg</text>
-</g>
-<!-- blitter.com/go/hkexsh/hkexsh.main&#45;&gt;blitter.com/go/hkexsh/hkexsh.rejectUserMsg -->
-<g id="edge38" class="edge">
-<title>blitter.com/go/hkexsh/hkexsh.main&#45;&gt;blitter.com/go/hkexsh/hkexsh.rejectUserMsg</title>
-<path fill="none" stroke="#000000" d="M43.5791,-891.5917C46.1099,-822.3811 58.3112,-578.7745 106,-521 120.4148,-503.5365 142.2348,-492.8501 163.5029,-486.3109"/>
-<polygon fill="#000000" stroke="#000000" points="164.5243,-489.6595 173.2073,-483.5887 162.6337,-482.9197 164.5243,-489.6595"/>
+<path fill="none" stroke="#000000" d="M51.5875,-1020.5848C66.2062,-992.9589 98.7038,-939.6038 143,-914 209.8445,-875.363 250.6933,-930.3149 314.606,-887 327.7617,-878.0841 378.4451,-776.9864 387.606,-764 406.357,-737.4185 430.3223,-709.068 447.6856,-689.3675"/>
+<polygon fill="#000000" stroke="#000000" points="450.4322,-691.5456 454.4555,-681.7444 445.1982,-686.8974 450.4322,-691.5456"/>
 </g>
 <!-- blitter.com/go/hkexsh/hkexsh.main$2 -->
-<g id="node15" class="node">
+<g id="node7" class="node">
 <title>blitter.com/go/hkexsh/hkexsh.main$2</title>
-<ellipse fill="#add8e6" stroke="#000000" stroke-dasharray="1,5" cx="228.803" cy="-1307" rx="34.8031" ry="18"/>
-<text text-anchor="middle" x="228.803" y="-1303.3" font-family="Verdana" font-size="14.00" fill="#000000">main$2</text>
+<ellipse fill="#add8e6" stroke="#000000" stroke-dasharray="1,5" cx="228.803" cy="-1599" rx="34.8031" ry="18"/>
+<text text-anchor="middle" x="228.803" y="-1595.3" font-family="Verdana" font-size="14.00" fill="#000000">main$2</text>
 </g>
 <!-- blitter.com/go/hkexsh/hkexsh.main&#45;&gt;blitter.com/go/hkexsh/hkexsh.main$2 -->
-<g id="edge44" class="edge">
+<g id="edge31" class="edge">
 <title>blitter.com/go/hkexsh/hkexsh.main&#45;&gt;blitter.com/go/hkexsh/hkexsh.main$2</title>
-<path fill="none" stroke="#000000" d="M43.7183,-928.0218C46.6888,-993.5842 60.1012,-1218.2656 106,-1270 122.4829,-1288.5786 147.9154,-1297.9916 171.3695,-1302.6991"/>
-<polygon fill="#000000" stroke="#000000" points="183.7948,-1308.0583 194.1968,-1306.0461 184.8103,-1301.1324 183.7948,-1308.0583"/>
-<polyline fill="none" stroke="#000000" points="184.3025,-1304.5954 179.3554,-1303.87 "/>
-<ellipse fill="none" stroke="#000000" cx="175.3978" cy="-1303.2897" rx="4" ry="4"/>
+<path fill="none" stroke="#000000" d="M43.2249,-1056.093C44.5159,-1134.9593 52.9544,-1448.2981 106,-1528 122.6425,-1553.0056 151.303,-1570.3007 176.7518,-1581.5562"/>
+<polygon fill="#000000" stroke="#000000" points="187.757,-1589.6686 198.3435,-1590.0887 190.3297,-1583.1584 187.757,-1589.6686"/>
+<polyline fill="none" stroke="#000000" points="189.0434,-1586.4135 184.3933,-1584.5759 "/>
+<ellipse fill="none" stroke="#000000" cx="180.6732" cy="-1583.1058" rx="4" ry="4"/>
+</g>
+<!-- blitter.com/go/hkexsh/hkexsh.launchTuns -->
+<g id="node8" class="node">
+<title>blitter.com/go/hkexsh/hkexsh.launchTuns</title>
+<ellipse fill="#add8e6" stroke="#000000" stroke-width=".5" cx="228.803" cy="-1677" rx="48.3036" ry="18"/>
+<text text-anchor="middle" x="228.803" y="-1673.3" font-family="Verdana" font-size="14.00" fill="#000000">launchTuns</text>
+</g>
+<!-- blitter.com/go/hkexsh/hkexsh.main&#45;&gt;blitter.com/go/hkexsh/hkexsh.launchTuns -->
+<g id="edge33" class="edge">
+<title>blitter.com/go/hkexsh/hkexsh.main&#45;&gt;blitter.com/go/hkexsh/hkexsh.launchTuns</title>
+<path fill="none" stroke="#000000" d="M43.7058,-1056.3531C46.5761,-1122.1593 59.5357,-1352.0727 106,-1535 117.1551,-1578.917 113.1041,-1595.9505 143,-1630 154.2291,-1642.7892 169.8134,-1652.7673 184.623,-1660.1756"/>
+<polygon fill="#000000" stroke="#000000" points="183.1609,-1663.3557 193.6982,-1664.4583 186.1484,-1657.0252 183.1609,-1663.3557"/>
+</g>
+<!-- blitter.com/go/hkexsh/hkexsh.doShellMode -->
+<g id="node10" class="node">
+<title>blitter.com/go/hkexsh/hkexsh.doShellMode</title>
+<ellipse fill="#add8e6" stroke="#000000" stroke-width=".5" cx="228.803" cy="-1005" rx="55.0038" ry="18"/>
+<text text-anchor="middle" x="228.803" y="-1001.3" font-family="Verdana" font-size="14.00" fill="#000000">doShellMode</text>
+</g>
+<!-- blitter.com/go/hkexsh/hkexsh.main&#45;&gt;blitter.com/go/hkexsh/hkexsh.doShellMode -->
+<g id="edge46" class="edge">
+<title>blitter.com/go/hkexsh/hkexsh.main&#45;&gt;blitter.com/go/hkexsh/hkexsh.doShellMode</title>
+<path fill="none" stroke="#000000" d="M69.227,-1033.3419C95.3355,-1028.7048 136.2931,-1021.4304 170.1762,-1015.4126"/>
+<polygon fill="#000000" stroke="#000000" points="171.2064,-1018.7844 180.4402,-1013.5896 169.9822,-1011.8923 171.2064,-1018.7844"/>
 </g>
 <!-- blitter.com/go/hkexsh/hkexsh.doCopyMode -->
 <g id="node16" class="node">
 <title>blitter.com/go/hkexsh/hkexsh.doCopyMode</title>
-<ellipse fill="#add8e6" stroke="#000000" stroke-width=".5" cx="470.6588" cy="-1023" rx="56.2041" ry="18"/>
-<text text-anchor="middle" x="470.6588" y="-1019.3" font-family="Verdana" font-size="14.00" fill="#000000">doCopyMode</text>
+<ellipse fill="#add8e6" stroke="#000000" stroke-width=".5" cx="470.6588" cy="-1066" rx="56.2041" ry="18"/>
+<text text-anchor="middle" x="470.6588" y="-1062.3" font-family="Verdana" font-size="14.00" fill="#000000">doCopyMode</text>
 </g>
 <!-- blitter.com/go/hkexsh/hkexsh.main&#45;&gt;blitter.com/go/hkexsh/hkexsh.doCopyMode -->
 <g id="edge53" class="edge">
 <title>blitter.com/go/hkexsh/hkexsh.main&#45;&gt;blitter.com/go/hkexsh/hkexsh.doCopyMode</title>
-<path fill="none" stroke="#000000" d="M52.865,-927.0155C63.6144,-943.8273 82.4646,-968.7517 106,-981 201.6987,-1030.8035 330.2922,-1033.1051 406.4269,-1028.9503"/>
-<polygon fill="#000000" stroke="#000000" points="407.0411,-1032.4198 416.8128,-1028.3255 406.6207,-1025.4324 407.0411,-1032.4198"/>
+<path fill="none" stroke="#000000" d="M70.0764,-1039.7728C136.6865,-1044.1339 310.0162,-1055.4823 405.3898,-1061.7267"/>
+<polygon fill="#000000" stroke="#000000" points="405.2885,-1065.2274 415.4958,-1062.3883 405.7459,-1058.2424 405.2885,-1065.2274"/>
 </g>
 <!-- blitter.com/go/hkexsh/hkexsh.usageShell -->
 <g id="node17" class="node">
 <title>blitter.com/go/hkexsh/hkexsh.usageShell</title>
-<ellipse fill="#add8e6" stroke="#000000" stroke-width=".5" cx="228.803" cy="-646" rx="47.7038" ry="18"/>
-<text text-anchor="middle" x="228.803" y="-642.3" font-family="Verdana" font-size="14.00" fill="#000000">usageShell</text>
+<ellipse fill="#add8e6" stroke="#000000" stroke-width=".5" cx="228.803" cy="-795" rx="47.7038" ry="18"/>
+<text text-anchor="middle" x="228.803" y="-791.3" font-family="Verdana" font-size="14.00" fill="#000000">usageShell</text>
 </g>
 <!-- blitter.com/go/hkexsh/hkexsh.main&#45;&gt;blitter.com/go/hkexsh/hkexsh.usageShell -->
 <g id="edge55" class="edge">
 <title>blitter.com/go/hkexsh/hkexsh.main&#45;&gt;blitter.com/go/hkexsh/hkexsh.usageShell</title>
-<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M45.7239,-892.0576C53.2001,-848.8944 77.9858,-738.3051 143,-677 152.2747,-668.2544 164.1986,-661.9438 176.1892,-657.4016"/>
-<polygon fill="#000000" stroke="#000000" points="177.4408,-660.6726 185.7703,-654.1251 175.1757,-654.0492 177.4408,-660.6726"/>
+<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M46.1006,-1020.0243C54.1598,-978.959 79.7141,-877.8221 143,-826 152.9596,-817.8445 165.2435,-811.7428 177.372,-807.2129"/>
+<polygon fill="#000000" stroke="#000000" points="178.6925,-810.4602 187.0181,-803.9077 176.4235,-803.8382 178.6925,-810.4602"/>
 </g>
 <!-- blitter.com/go/hkexsh/hkexsh.usageCp -->
 <g id="node18" class="node">
 <title>blitter.com/go/hkexsh/hkexsh.usageCp</title>
-<ellipse fill="#add8e6" stroke="#000000" stroke-width=".5" cx="228.803" cy="-707" rx="39.1028" ry="18"/>
-<text text-anchor="middle" x="228.803" y="-703.3" font-family="Verdana" font-size="14.00" fill="#000000">usageCp</text>
+<ellipse fill="#add8e6" stroke="#000000" stroke-width=".5" cx="228.803" cy="-856" rx="39.1028" ry="18"/>
+<text text-anchor="middle" x="228.803" y="-852.3" font-family="Verdana" font-size="14.00" fill="#000000">usageCp</text>
 </g>
 <!-- blitter.com/go/hkexsh/hkexsh.main&#45;&gt;blitter.com/go/hkexsh/hkexsh.usageCp -->
 <g id="edge56" class="edge">
 <title>blitter.com/go/hkexsh/hkexsh.main&#45;&gt;blitter.com/go/hkexsh/hkexsh.usageCp</title>
-<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M48.5413,-892.3591C60.3012,-857.7364 91.0207,-780.5636 143,-738 154.4388,-728.6333 168.9434,-721.9757 182.7573,-717.297"/>
-<polygon fill="#000000" stroke="#000000" points="184.1273,-720.5366 192.6402,-714.2295 182.0522,-713.8513 184.1273,-720.5366"/>
-</g>
-<!-- blitter.com/go/hkexsh/hkexsh.main&#45;&gt;blitter.com/go/hkexsh.Restore -->
-<g id="edge54" class="edge">
-<title>blitter.com/go/hkexsh/hkexsh.main&#45;&gt;blitter.com/go/hkexsh.Restore</title>
-<path fill="none" stroke="#8b4513" d="M44.6926,-891.938C53.8013,-796.5857 98.2421,-354.6152 143,-315 171.9335,-289.391 190.164,-301 228.803,-301 228.803,-301 228.803,-301 470.6588,-301 541.2639,-301 623.2306,-301 672.6802,-301"/>
-<polygon fill="#8b4513" stroke="#8b4513" points="672.7229,-304.5001 682.7229,-301 672.7229,-297.5001 672.7229,-304.5001"/>
+<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M45.8114,-1020.0004C51.5377,-989.4144 67.4382,-927.2869 106,-893 126.4021,-874.8596 155.4301,-865.6084 180.1416,-860.8926"/>
+<polygon fill="#000000" stroke="#000000" points="180.8109,-864.329 190.0761,-859.1903 179.6286,-857.4296 180.8109,-864.329"/>
 </g>
 <!-- blitter.com/go/hkexsh.MakeRaw -->
-<g id="node20" class="node">
+<g id="node19" class="node">
 <title>blitter.com/go/hkexsh.MakeRaw</title>
-<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="717.4649" cy="-179" rx="42.2035" ry="18"/>
-<text text-anchor="middle" x="717.4649" y="-175.3" font-family="Verdana" font-size="14.00" fill="#000000">MakeRaw</text>
+<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="717.4649" cy="-65" rx="42.2035" ry="18"/>
+<text text-anchor="middle" x="717.4649" y="-61.3" font-family="Verdana" font-size="14.00" fill="#000000">MakeRaw</text>
 </g>
 <!-- blitter.com/go/hkexsh/hkexsh.main&#45;&gt;blitter.com/go/hkexsh.MakeRaw -->
-<g id="edge23" class="edge">
+<g id="edge10" class="edge">
 <title>blitter.com/go/hkexsh/hkexsh.main&#45;&gt;blitter.com/go/hkexsh.MakeRaw</title>
-<path fill="none" stroke="#8b4513" d="M43.4736,-891.808C46.936,-777.1181 72.832,-159 228.803,-159 228.803,-159 228.803,-159 470.6588,-159 538.686,-159 616.9166,-166.642 666.7432,-172.4783"/>
-<polygon fill="#8b4513" stroke="#8b4513" points="666.5866,-175.9843 676.9307,-173.6929 667.4154,-169.0335 666.5866,-175.9843"/>
+<path fill="none" stroke="#8b4513" d="M43.7961,-1019.8634C47.0381,-952.74 61.2778,-712.363 106,-520 117.2995,-471.3976 105.8828,-447.3496 143,-414 172.1269,-387.8296 189.6461,-394 228.803,-394 228.803,-394 228.803,-394 470.6588,-394 513.0719,-394 527.3929,-380.2594 553.7117,-347 625.8043,-255.896 546.4781,-180.0229 626.7117,-96 637.3621,-84.8466 652.1861,-77.7059 666.7693,-73.1344"/>
+<polygon fill="#8b4513" stroke="#8b4513" points="668.0707,-76.4057 676.7727,-70.3621 666.2011,-69.66 668.0707,-76.4057"/>
+</g>
+<!-- blitter.com/go/hkexsh.Restore -->
+<g id="node20" class="node">
+<title>blitter.com/go/hkexsh.Restore</title>
+<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="717.4649" cy="-776" rx="34.8031" ry="18"/>
+<text text-anchor="middle" x="717.4649" y="-772.3" font-family="Verdana" font-size="14.00" fill="#000000">Restore</text>
+</g>
+<!-- blitter.com/go/hkexsh/hkexsh.main&#45;&gt;blitter.com/go/hkexsh.Restore -->
+<g id="edge54" class="edge">
+<title>blitter.com/go/hkexsh/hkexsh.main&#45;&gt;blitter.com/go/hkexsh.Restore</title>
+<path fill="none" stroke="#8b4513" d="M47.065,-1019.948C59.911,-964.548 101.2572,-798.6711 143,-765 173.0744,-740.741 190.164,-751 228.803,-751 228.803,-751 228.803,-751 470.6588,-751 542.4294,-751 625.3447,-761.5938 674.4822,-768.9891"/>
+<polygon fill="#8b4513" stroke="#8b4513" points="674.0242,-772.4597 684.4387,-770.5136 675.0837,-765.5403 674.0242,-772.4597"/>
 </g>
 <!-- blitter.com/go/hkexsh.ReadPassword -->
 <g id="node21" class="node">
 <title>blitter.com/go/hkexsh.ReadPassword</title>
-<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="717.4649" cy="-240" rx="61.7044" ry="18"/>
-<text text-anchor="middle" x="717.4649" y="-236.3" font-family="Verdana" font-size="14.00" fill="#000000">ReadPassword</text>
+<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="717.4649" cy="-126" rx="61.7044" ry="18"/>
+<text text-anchor="middle" x="717.4649" y="-122.3" font-family="Verdana" font-size="14.00" fill="#000000">ReadPassword</text>
 </g>
 <!-- blitter.com/go/hkexsh/hkexsh.main&#45;&gt;blitter.com/go/hkexsh.ReadPassword -->
-<g id="edge25" class="edge">
+<g id="edge13" class="edge">
 <title>blitter.com/go/hkexsh/hkexsh.main&#45;&gt;blitter.com/go/hkexsh.ReadPassword</title>
-<path fill="none" stroke="#8b4513" d="M43.5456,-891.9873C46.6594,-800.4742 64.9073,-387.6701 143,-292 170.2297,-258.6414 185.742,-247 228.803,-247 228.803,-247 228.803,-247 470.6588,-247 529.7869,-247 596.8509,-244.9677 646.1322,-243.0932"/>
-<polygon fill="#8b4513" stroke="#8b4513" points="646.5123,-246.5812 656.3691,-242.6964 646.241,-239.5864 646.5123,-246.5812"/>
+<path fill="none" stroke="#8b4513" d="M43.4605,-1019.6231C45.5164,-952.6995 56.1034,-716.1291 106,-529 116.9311,-488.0048 110.574,-468.3615 143,-441 172.9263,-415.7477 189.6461,-421 228.803,-421 228.803,-421 228.803,-421 470.6588,-421 524.751,-421 552.82,-439.6029 590.7117,-401 667.4997,-322.7708 556.5928,-241.2587 626.7117,-157 633.7242,-148.5735 643.133,-142.4308 653.2416,-137.9547"/>
+<polygon fill="#8b4513" stroke="#8b4513" points="654.6166,-141.1755 662.673,-134.2947 652.0841,-134.6496 654.6166,-141.1755"/>
 </g>
 <!-- blitter.com/go/hkexsh.NewSession -->
 <g id="node22" class="node">
 <title>blitter.com/go/hkexsh.NewSession</title>
-<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="717.4649" cy="-439" rx="52.0048" ry="18"/>
-<text text-anchor="middle" x="717.4649" y="-435.3" font-family="Verdana" font-size="14.00" fill="#000000">NewSession</text>
+<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="717.4649" cy="-187" rx="52.0048" ry="18"/>
+<text text-anchor="middle" x="717.4649" y="-183.3" font-family="Verdana" font-size="14.00" fill="#000000">NewSession</text>
 </g>
 <!-- blitter.com/go/hkexsh/hkexsh.main&#45;&gt;blitter.com/go/hkexsh.NewSession -->
-<g id="edge26" class="edge">
+<g id="edge14" class="edge">
 <title>blitter.com/go/hkexsh/hkexsh.main&#45;&gt;blitter.com/go/hkexsh.NewSession</title>
-<path fill="none" stroke="#8b4513" d="M46.5964,-891.8181C58.5111,-833.48 98.475,-652.6791 143,-616 172.8228,-591.4324 190.164,-602 228.803,-602 228.803,-602 228.803,-602 470.6588,-602 533.3376,-602 547.7254,-573.6158 590.7117,-528 613.8952,-503.3984 599.961,-481.6667 626.7117,-461 635.4538,-454.2462 645.9717,-449.5291 656.7009,-446.243"/>
-<polygon fill="#8b4513" stroke="#8b4513" points="657.809,-449.5699 666.5686,-443.61 656.0043,-442.8065 657.809,-449.5699"/>
+<path fill="none" stroke="#8b4513" d="M43.4487,-1019.9447C46.0243,-931.8608 61.8225,-548.272 143,-469 171.0889,-441.5705 189.5428,-448 228.803,-448 228.803,-448 228.803,-448 470.6588,-448 524.751,-448 552.5039,-466.2901 590.7117,-428 660.3854,-358.1763 559.6234,-281.3114 626.7117,-209 634.4724,-200.6351 644.8256,-195.2068 655.7592,-191.7327"/>
+<polygon fill="#8b4513" stroke="#8b4513" points="656.6979,-195.1049 665.4663,-189.1581 654.9032,-188.3388 656.6979,-195.1049"/>
+</g>
+<!-- (*blitter.com/go/hkexsh.Session).SetStatus -->
+<g id="node23" class="node">
+<title>(*blitter.com/go/hkexsh.Session).SetStatus</title>
+<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="717.4649" cy="-264" rx="42.2035" ry="18"/>
+<text text-anchor="middle" x="717.4649" y="-260.3" font-family="Verdana" font-size="14.00" fill="#000000">SetStatus</text>
 </g>
 <!-- blitter.com/go/hkexsh/hkexsh.main&#45;&gt;(*blitter.com/go/hkexsh.Session).SetStatus -->
-<g id="edge36" class="edge">
+<g id="edge24" class="edge">
 <title>blitter.com/go/hkexsh/hkexsh.main&#45;&gt;(*blitter.com/go/hkexsh.Session).SetStatus</title>
-<path fill="none" stroke="#8b4513" d="M44.1265,-891.6884C48.2345,-839.3055 66.4909,-686.6099 143,-593 173.2759,-555.9569 180.9614,-528 228.803,-528 228.803,-528 228.803,-528 351.106,-528 441.1804,-528 475.9914,-568.5297 553.7117,-523 608.5624,-490.8677 575.5903,-437.7848 626.7117,-400 638.0421,-391.6255 652.1385,-386.4015 665.8171,-383.1541"/>
-<polygon fill="#8b4513" stroke="#8b4513" points="666.5724,-386.5721 675.658,-381.1221 665.1568,-379.7167 666.5724,-386.5721"/>
+<path fill="none" stroke="#8b4513" d="M44.4709,-1020.0182C51.4192,-938.7014 83.1431,-605.7422 143,-523 168.6115,-487.5964 185.1067,-475 228.803,-475 228.803,-475 228.803,-475 470.6588,-475 524.751,-475 551.4759,-492.2359 590.7117,-455 644.5257,-403.929 576.4427,-346.564 626.7117,-292 636.9692,-280.8662 651.5422,-274.117 666.0159,-270.0395"/>
+<polygon fill="#8b4513" stroke="#8b4513" points="667.0749,-273.3841 675.9661,-267.6224 665.4224,-266.5819 667.0749,-273.3841"/>
+</g>
+<!-- (blitter.com/go/hkexsh.Session).Status -->
+<g id="node30" class="node">
+<title>(blitter.com/go/hkexsh.Session).Status</title>
+<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="717.4649" cy="-532" rx="29.9034" ry="18"/>
+<text text-anchor="middle" x="717.4649" y="-528.3" font-family="Verdana" font-size="14.00" fill="#000000">Status</text>
 </g>
 <!-- blitter.com/go/hkexsh/hkexsh.main&#45;&gt;(blitter.com/go/hkexsh.Session).Status -->
 <g id="edge47" class="edge">
 <title>blitter.com/go/hkexsh/hkexsh.main&#45;&gt;(blitter.com/go/hkexsh.Session).Status</title>
-<path fill="none" stroke="#8b4513" d="M64.1025,-898.5031C84.1012,-887.8355 115.1408,-871.8639 143,-860 217.4729,-828.2856 242.5166,-835.8123 314.606,-799 447.2713,-731.2548 489.4936,-718.2905 590.7117,-609 612.363,-585.622 602.075,-567.2074 626.7117,-547 641.4546,-534.9077 661.1691,-527.4306 678.4566,-522.8594"/>
-<polygon fill="#8b4513" stroke="#8b4513" points="679.3953,-526.2335 688.2988,-520.4908 677.7574,-519.4278 679.3953,-526.2335"/>
+<path fill="none" stroke="#8b4513" d="M45.5024,-1019.8844C58.5213,-929.2115 122.0318,-529 228.803,-529 228.803,-529 228.803,-529 470.6588,-529 543.5167,-529 628.4639,-530.3233 677.3039,-531.2122"/>
+<polygon fill="#8b4513" stroke="#8b4513" points="677.3895,-534.7143 687.4526,-531.4001 677.5192,-527.7155 677.3895,-534.7143"/>
 </g>
 <!-- blitter.com/go/hkexsh/hkexnet.Init -->
 <g id="node31" class="node">
 <title>blitter.com/go/hkexsh/hkexnet.Init</title>
-<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="717.4649" cy="-1339" rx="27" ry="18"/>
-<text text-anchor="middle" x="717.4649" y="-1335.3" font-family="Verdana" font-size="14.00" fill="#000000">Init</text>
+<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="717.4649" cy="-1183" rx="27" ry="18"/>
+<text text-anchor="middle" x="717.4649" y="-1179.3" font-family="Verdana" font-size="14.00" fill="#000000">Init</text>
 </g>
 <!-- blitter.com/go/hkexsh/hkexsh.main&#45;&gt;blitter.com/go/hkexsh/hkexnet.Init -->
-<g id="edge19" class="edge">
+<g id="edge6" class="edge">
 <title>blitter.com/go/hkexsh/hkexsh.main&#45;&gt;blitter.com/go/hkexsh/hkexnet.Init</title>
-<path fill="none" stroke="#8b4513" d="M44.5338,-927.9915C51.4307,-996.3338 85.8111,-1236 228.803,-1236 228.803,-1236 228.803,-1236 470.6588,-1236 524.751,-1236 545.2867,-1226.6311 590.7117,-1256 614.9344,-1271.6608 603.6803,-1292.6347 626.7117,-1310 642.3891,-1321.8204 663.04,-1328.9141 680.6814,-1333.1229"/>
-<polygon fill="#8b4513" stroke="#8b4513" points="680.1463,-1336.5881 690.6603,-1335.2816 681.6264,-1329.7463 680.1463,-1336.5881"/>
+<path fill="none" stroke="#8b4513" d="M69.0266,-1043.5953C173.3536,-1066.0241 561.4304,-1149.4549 681.6963,-1175.3103"/>
+<polygon fill="#8b4513" stroke="#8b4513" points="681.0036,-1178.7413 691.5159,-1177.4213 682.4749,-1171.8976 681.0036,-1178.7413"/>
 </g>
 <!-- blitter.com/go/hkexsh/hkexnet.Dial -->
 <g id="node32" class="node">
 <title>blitter.com/go/hkexsh/hkexnet.Dial</title>
-<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="717.4649" cy="-1400" rx="27" ry="18"/>
-<text text-anchor="middle" x="717.4649" y="-1396.3" font-family="Verdana" font-size="14.00" fill="#000000">Dial</text>
+<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="717.4649" cy="-1244" rx="27" ry="18"/>
+<text text-anchor="middle" x="717.4649" y="-1240.3" font-family="Verdana" font-size="14.00" fill="#000000">Dial</text>
 </g>
 <!-- blitter.com/go/hkexsh/hkexsh.main&#45;&gt;blitter.com/go/hkexsh/hkexnet.Dial -->
-<g id="edge20" class="edge">
+<g id="edge7" class="edge">
 <title>blitter.com/go/hkexsh/hkexsh.main&#45;&gt;blitter.com/go/hkexsh/hkexnet.Dial</title>
-<path fill="none" stroke="#8b4513" d="M43.8867,-927.9906C48.4814,-999.9252 75.7477,-1263 228.803,-1263 228.803,-1263 228.803,-1263 470.6588,-1263 508.1684,-1263 521.5272,-1258.7355 553.7117,-1278 598.4988,-1304.8079 583.918,-1340.1128 626.7117,-1370 642.861,-1381.2787 663.5462,-1388.548 681.0886,-1393.1011"/>
-<polygon fill="#8b4513" stroke="#8b4513" points="680.4556,-1396.5484 690.9962,-1395.4778 682.0885,-1389.7416 680.4556,-1396.5484"/>
+<path fill="none" stroke="#8b4513" d="M53.7436,-1054.8469C79.1965,-1092.4612 147.1984,-1180 228.803,-1180 228.803,-1180 228.803,-1180 470.6588,-1180 524.751,-1180 538.5503,-1185.677 590.7117,-1200 607.2663,-1204.5457 610.5564,-1208.1929 626.7117,-1214 645.2485,-1220.6632 666.107,-1227.5972 683.1488,-1233.1183"/>
+<polygon fill="#8b4513" stroke="#8b4513" points="682.1037,-1236.4587 692.6952,-1236.1931 684.2498,-1229.7958 682.1037,-1236.4587"/>
 </g>
 <!-- (*blitter.com/go/hkexsh/hkexnet.Conn).Close -->
 <g id="node34" class="node">
 <title>(*blitter.com/go/hkexsh/hkexnet.Conn).Close</title>
-<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="717.4649" cy="-1599" rx="27" ry="18"/>
-<text text-anchor="middle" x="717.4649" y="-1595.3" font-family="Verdana" font-size="14.00" fill="#000000">Close</text>
+<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="717.4649" cy="-1382" rx="27" ry="18"/>
+<text text-anchor="middle" x="717.4649" y="-1378.3" font-family="Verdana" font-size="14.00" fill="#000000">Close</text>
 </g>
 <!-- blitter.com/go/hkexsh/hkexsh.main&#45;&gt;(*blitter.com/go/hkexsh/hkexnet.Conn).Close -->
-<g id="edge21" class="edge">
+<g id="edge8" class="edge">
 <title>blitter.com/go/hkexsh/hkexsh.main&#45;&gt;(*blitter.com/go/hkexsh/hkexnet.Conn).Close</title>
-<path fill="none" stroke="#8b4513" d="M43.7295,-928.1887C46.4155,-982.7623 58.2523,-1149.2242 106,-1277 117.0993,-1306.7025 116.6163,-1320.4122 143,-1338 175.0928,-1359.3936 190.2331,-1351 228.803,-1351 228.803,-1351 228.803,-1351 470.6588,-1351 524.751,-1351 552.1812,-1333.0347 590.7117,-1371 654.4228,-1433.7766 568.0246,-1501.5032 626.7117,-1569 636.2746,-1579.9984 649.9578,-1586.9813 663.8085,-1591.4094"/>
-<polygon fill="#8b4513" stroke="#8b4513" points="679.883,-1598.5359 690.402,-1597.2701 681.3896,-1591.6999 679.883,-1598.5359"/>
-<polyline fill="none" stroke="#8b4513" points="680.6363,-1595.1179 675.7535,-1594.0418 "/>
-<polygon fill="none" stroke="#8b4513" points="664.0347,-1591.4591 670.755,-1588.8442 675.7535,-1594.0418 669.0332,-1596.6567 664.0347,-1591.4591"/>
+<path fill="none" stroke="#8b4513" d="M51.3773,-1055.1347C73.7215,-1098.0994 139.1947,-1207 228.803,-1207 228.803,-1207 228.803,-1207 470.6588,-1207 565.3344,-1207 545.2161,-1303.8137 626.7117,-1352 638.5966,-1359.0272 652.3425,-1364.6556 665.4844,-1369.0521"/>
+<polygon fill="#8b4513" stroke="#8b4513" points="680.9916,-1377.1738 691.5701,-1376.586 682.9339,-1370.4486 680.9916,-1377.1738"/>
+<polyline fill="none" stroke="#8b4513" points="681.9627,-1373.8112 677.1591,-1372.4238 "/>
+<polygon fill="none" stroke="#8b4513" points="665.6303,-1369.0941 672.5046,-1366.916 677.1591,-1372.4238 670.2848,-1374.6019 665.6303,-1369.0941"/>
 </g>
 <!-- (*blitter.com/go/hkexsh/hkexnet.Conn).SetupChaff -->
 <g id="node35" class="node">
 <title>(*blitter.com/go/hkexsh/hkexnet.Conn).SetupChaff</title>
-<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="717.4649" cy="-1660" rx="47.7038" ry="18"/>
-<text text-anchor="middle" x="717.4649" y="-1656.3" font-family="Verdana" font-size="14.00" fill="#000000">SetupChaff</text>
+<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="717.4649" cy="-1443" rx="47.7038" ry="18"/>
+<text text-anchor="middle" x="717.4649" y="-1439.3" font-family="Verdana" font-size="14.00" fill="#000000">SetupChaff</text>
 </g>
 <!-- blitter.com/go/hkexsh/hkexsh.main&#45;&gt;(*blitter.com/go/hkexsh/hkexnet.Conn).SetupChaff -->
-<g id="edge39" class="edge">
+<g id="edge26" class="edge">
 <title>blitter.com/go/hkexsh/hkexsh.main&#45;&gt;(*blitter.com/go/hkexsh/hkexnet.Conn).SetupChaff</title>
-<path fill="none" stroke="#8b4513" d="M43.9273,-928.0416C47.191,-982.9603 60.5306,-1152.3692 106,-1284 117.2337,-1316.5209 116.3192,-1330.2759 143,-1352 173.8998,-1377.1593 188.956,-1378 228.803,-1378 228.803,-1378 228.803,-1378 470.6588,-1378 524.751,-1378 552.6763,-1359.5387 590.7117,-1398 664.083,-1472.1927 559.2723,-1550.377 626.7117,-1630 635.6873,-1640.5971 648.493,-1647.4717 661.6655,-1651.9251"/>
-<polygon fill="#8b4513" stroke="#8b4513" points="660.6908,-1655.2866 671.2725,-1654.7586 662.6711,-1648.5726 660.6908,-1655.2866"/>
+<path fill="none" stroke="#8b4513" d="M45.1957,-1055.9871C54.2261,-1121.0021 94.6044,-1340 228.803,-1340 228.803,-1340 228.803,-1340 470.6588,-1340 528.4583,-1340 539.4861,-1363.2285 590.7117,-1390 607.5389,-1398.7942 609.5651,-1404.846 626.7117,-1413 639.8562,-1419.2508 654.6469,-1424.7399 668.4128,-1429.2556"/>
+<polygon fill="#8b4513" stroke="#8b4513" points="667.6269,-1432.6782 678.2173,-1432.3686 669.7454,-1426.0064 667.6269,-1432.6782"/>
 </g>
 <!-- (*blitter.com/go/hkexsh/hkexnet.Conn).EnableChaff -->
 <g id="node36" class="node">
 <title>(*blitter.com/go/hkexsh/hkexnet.Conn).EnableChaff</title>
-<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="717.4649" cy="-1721" rx="52.0048" ry="18"/>
-<text text-anchor="middle" x="717.4649" y="-1717.3" font-family="Verdana" font-size="14.00" fill="#000000">EnableChaff</text>
+<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="717.4649" cy="-1504" rx="52.0048" ry="18"/>
+<text text-anchor="middle" x="717.4649" y="-1500.3" font-family="Verdana" font-size="14.00" fill="#000000">EnableChaff</text>
 </g>
 <!-- blitter.com/go/hkexsh/hkexsh.main&#45;&gt;(*blitter.com/go/hkexsh/hkexnet.Conn).EnableChaff -->
-<g id="edge40" class="edge">
+<g id="edge27" class="edge">
 <title>blitter.com/go/hkexsh/hkexsh.main&#45;&gt;(*blitter.com/go/hkexsh/hkexnet.Conn).EnableChaff</title>
-<path fill="none" stroke="#8b4513" d="M44.2531,-928.1876C49.9941,-1005.9519 76.4189,-1309.3817 143,-1372 172.763,-1399.9916 187.9451,-1405 228.803,-1405 228.803,-1405 228.803,-1405 470.6588,-1405 524.751,-1405 553.0516,-1386.1712 590.7117,-1425 673.771,-1510.6368 550.4945,-1599.2208 626.7117,-1691 634.8261,-1700.7711 646.2008,-1707.3812 658.1609,-1711.847"/>
-<polygon fill="#8b4513" stroke="#8b4513" points="657.2349,-1715.2262 667.827,-1714.9881 659.3983,-1708.5688 657.2349,-1715.2262"/>
+<path fill="none" stroke="#8b4513" d="M43.7723,-1056.2964C47.9234,-1129.4536 73.7069,-1397 228.803,-1397 228.803,-1397 228.803,-1397 470.6588,-1397 524.8258,-1397 545.5914,-1388.0297 590.7117,-1418 615.3582,-1434.371 603.3257,-1455.874 626.7117,-1474 636.9575,-1481.9413 649.4007,-1487.8295 661.7463,-1492.1781"/>
+<polygon fill="#8b4513" stroke="#8b4513" points="660.9909,-1495.6118 671.5824,-1495.3454 663.1365,-1488.9487 660.9909,-1495.6118"/>
 </g>
 <!-- (*blitter.com/go/hkexsh/hkexnet.Conn).DisableChaff -->
 <g id="node37" class="node">
 <title>(*blitter.com/go/hkexsh/hkexnet.Conn).DisableChaff</title>
-<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="717.4649" cy="-1782" rx="54.4038" ry="18"/>
-<text text-anchor="middle" x="717.4649" y="-1778.3" font-family="Verdana" font-size="14.00" fill="#000000">DisableChaff</text>
+<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="717.4649" cy="-1565" rx="54.4038" ry="18"/>
+<text text-anchor="middle" x="717.4649" y="-1561.3" font-family="Verdana" font-size="14.00" fill="#000000">DisableChaff</text>
 </g>
 <!-- blitter.com/go/hkexsh/hkexsh.main&#45;&gt;(*blitter.com/go/hkexsh/hkexnet.Conn).DisableChaff -->
-<g id="edge41" class="edge">
+<g id="edge28" class="edge">
 <title>blitter.com/go/hkexsh/hkexsh.main&#45;&gt;(*blitter.com/go/hkexsh/hkexnet.Conn).DisableChaff</title>
-<path fill="none" stroke="#8b4513" d="M44.091,-928.0548C47.9227,-985.4495 62.9447,-1168.4395 106,-1313 127.694,-1385.8388 152.8022,-1432 228.803,-1432 228.803,-1432 228.803,-1432 470.6588,-1432 524.751,-1432 553.3457,-1412.8881 590.7117,-1452 683.4772,-1549.0997 541.6999,-1648.0444 626.7117,-1752 630.8776,-1757.0942 635.9306,-1761.33 641.4958,-1764.8512"/>
-<polygon fill="#8b4513" stroke="#8b4513" points="655.7315,-1774.88 666.2968,-1775.6705 658.5305,-1768.4639 655.7315,-1774.88"/>
-<polyline fill="none" stroke="#8b4513" points="657.131,-1771.6719 652.5481,-1769.6726 "/>
-<polygon fill="none" stroke="#8b4513" points="641.5491,-1764.8744 648.648,-1763.6072 652.5481,-1769.6726 645.4492,-1770.9398 641.5491,-1764.8744"/>
+<path fill="none" stroke="#8b4513" d="M45.1622,-1056.077C51.0151,-1101.7235 69.258,-1224.8464 106,-1321 118.0035,-1352.4131 118.1298,-1364.3651 143,-1387 173.8449,-1415.0727 187.0958,-1425 228.803,-1425 228.803,-1425 228.803,-1425 470.6588,-1425 555.5146,-1425 550.9279,-1496.8252 626.7117,-1535 633.7976,-1538.5694 641.4024,-1541.852 649.085,-1544.8303"/>
+<polygon fill="#8b4513" stroke="#8b4513" points="664.2691,-1553.7936 674.8638,-1553.7593 666.5601,-1547.1792 664.2691,-1553.7936"/>
+<polyline fill="none" stroke="#8b4513" points="665.4146,-1550.4864 660.69,-1548.8499 "/>
+<polygon fill="none" stroke="#8b4513" points="649.3509,-1544.9224 656.3296,-1543.1065 660.69,-1548.8499 653.7113,-1550.6659 649.3509,-1544.9224"/>
 </g>
 <!-- (*blitter.com/go/hkexsh/hkexnet.Conn).ShutdownChaff -->
 <g id="node38" class="node">
 <title>(*blitter.com/go/hkexsh/hkexnet.Conn).ShutdownChaff</title>
-<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="717.4649" cy="-1843" rx="64.2048" ry="18"/>
-<text text-anchor="middle" x="717.4649" y="-1839.3" font-family="Verdana" font-size="14.00" fill="#000000">ShutdownChaff</text>
+<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="717.4649" cy="-1626" rx="64.2048" ry="18"/>
+<text text-anchor="middle" x="717.4649" y="-1622.3" font-family="Verdana" font-size="14.00" fill="#000000">ShutdownChaff</text>
 </g>
 <!-- blitter.com/go/hkexsh/hkexsh.main&#45;&gt;(*blitter.com/go/hkexsh/hkexnet.Conn).ShutdownChaff -->
-<g id="edge42" class="edge">
+<g id="edge29" class="edge">
 <title>blitter.com/go/hkexsh/hkexsh.main&#45;&gt;(*blitter.com/go/hkexsh/hkexnet.Conn).ShutdownChaff</title>
-<path fill="none" stroke="#8b4513" d="M44.0362,-928.2164C49.0826,-1010.5391 73.7233,-1347.0111 143,-1421 171.506,-1451.445 187.0958,-1459 228.803,-1459 228.803,-1459 228.803,-1459 470.6588,-1459 642.6011,-1459 499.4399,-1697.3884 626.7117,-1813 630.2959,-1816.2558 634.2421,-1819.1592 638.4212,-1821.7481"/>
-<polygon fill="#8b4513" stroke="#8b4513" points="652.565,-1832.1052 663.1126,-1833.1036 655.4898,-1825.7455 652.565,-1832.1052"/>
-<polyline fill="none" stroke="#8b4513" points="654.0274,-1828.9253 649.4847,-1826.8362 "/>
-<polygon fill="none" stroke="#8b4513" points="638.5824,-1821.8222 645.7049,-1820.6951 649.4847,-1826.8362 642.3623,-1827.9633 638.5824,-1821.8222"/>
+<path fill="none" stroke="#8b4513" d="M44.2941,-1056.1714C49.0396,-1112.9025 69.2678,-1290.2632 143,-1413 174.5693,-1465.5512 167.4984,-1521 228.803,-1521 228.803,-1521 228.803,-1521 470.6588,-1521 547.61,-1521 555.3541,-1567.1976 626.7117,-1596 633.545,-1598.7581 640.7383,-1601.4621 647.9611,-1604.0476"/>
+<polygon fill="#8b4513" stroke="#8b4513" points="663.0665,-1612.8761 673.6609,-1612.779 665.3183,-1606.2482 663.0665,-1612.8761"/>
+<polyline fill="none" stroke="#8b4513" points="664.1924,-1609.5621 659.4582,-1607.9537 "/>
+<polygon fill="none" stroke="#8b4513" points="648.096,-1604.0934 655.0639,-1602.2362 659.4582,-1607.9537 652.4903,-1609.8109 648.096,-1604.0934"/>
 </g>
 <!-- (blitter.com/go/hkexsh/hkexnet.Conn).Read -->
-<g id="node42" class="node">
+<g id="node41" class="node">
 <title>(blitter.com/go/hkexsh/hkexnet.Conn).Read</title>
-<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="717.4649" cy="-1278" rx="27" ry="18"/>
-<text text-anchor="middle" x="717.4649" y="-1274.3" font-family="Verdana" font-size="14.00" fill="#000000">Read</text>
+<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="717.4649" cy="-1122" rx="27" ry="18"/>
+<text text-anchor="middle" x="717.4649" y="-1118.3" font-family="Verdana" font-size="14.00" fill="#000000">Read</text>
 </g>
 <!-- blitter.com/go/hkexsh/hkexsh.main&#45;&gt;(blitter.com/go/hkexsh/hkexnet.Conn).Read -->
-<g id="edge35" class="edge">
+<g id="edge23" class="edge">
 <title>blitter.com/go/hkexsh/hkexsh.main&#45;&gt;(blitter.com/go/hkexsh/hkexnet.Conn).Read</title>
-<path fill="none" stroke="#8b4513" d="M48.0482,-927.9369C59.1903,-964.408 89.258,-1047.75 143,-1095 173.6847,-1121.978 187.9451,-1128 228.803,-1128 228.803,-1128 228.803,-1128 470.6588,-1128 558.1506,-1128 549.4078,-1207.0253 626.7117,-1248 644.116,-1257.2251 664.8923,-1264.3452 682.1715,-1269.329"/>
-<polygon fill="#8b4513" stroke="#8b4513" points="681.3181,-1272.7243 691.8892,-1272.0163 683.1839,-1265.9775 681.3181,-1272.7243"/>
+<path fill="none" stroke="#8b4513" d="M54.4397,-1054.5522C65.7281,-1069.5043 84.3967,-1090.8255 106,-1102 155.1165,-1127.4059 173.5048,-1122 228.803,-1122 228.803,-1122 228.803,-1122 470.6588,-1122 544.9521,-1122 631.8248,-1122 680.157,-1122"/>
+<polygon fill="#8b4513" stroke="#8b4513" points="680.4397,-1125.5001 690.4396,-1122 680.4396,-1118.5001 680.4397,-1125.5001"/>
 </g>
 <!-- blitter.com/go/hkexsh/logger.New -->
 <g id="node44" class="node">
 <title>blitter.com/go/hkexsh/logger.New</title>
-<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="717.4649" cy="-976" rx="27" ry="18"/>
-<text text-anchor="middle" x="717.4649" y="-972.3" font-family="Verdana" font-size="14.00" fill="#000000">New</text>
+<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="717.4649" cy="-1842" rx="27" ry="18"/>
+<text text-anchor="middle" x="717.4649" y="-1838.3" font-family="Verdana" font-size="14.00" fill="#000000">New</text>
 </g>
 <!-- blitter.com/go/hkexsh/hkexsh.main&#45;&gt;blitter.com/go/hkexsh/logger.New -->
-<g id="edge18" class="edge">
+<g id="edge5" class="edge">
 <title>blitter.com/go/hkexsh/hkexsh.main&#45;&gt;blitter.com/go/hkexsh/logger.New</title>
-<path fill="none" stroke="#8b4513" d="M63.3833,-922.0379C96.7603,-940.5771 165.6857,-974 228.803,-974 228.803,-974 228.803,-974 470.6588,-974 544.9545,-974 631.8264,-974.9174 680.1577,-975.5096"/>
-<polygon fill="#8b4513" stroke="#8b4513" points="680.3973,-979.0127 690.4402,-975.6378 680.4847,-972.0133 680.3973,-979.0127"/>
+<path fill="none" stroke="#8b4513" d="M43.1565,-1056.0276C44.356,-1152.4578 54.6826,-1606.7353 143,-1708 169.7517,-1738.6736 188.1026,-1740 228.803,-1740 228.803,-1740 228.803,-1740 470.6588,-1740 547.0419,-1740 555.6582,-1783.9683 626.7117,-1812 645.0353,-1819.2289 665.8783,-1826.204 682.9648,-1831.6065"/>
+<polygon fill="#8b4513" stroke="#8b4513" points="681.9548,-1834.9577 692.5435,-1834.5957 684.0402,-1828.2756 681.9548,-1834.9577"/>
 </g>
 <!-- github.com/mattn/go&#45;isatty.IsTerminal -->
 <g id="node46" class="node">
 <title>github.com/mattn/go&#45;isatty.IsTerminal</title>
-<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="228.803" cy="-1503" rx="45.2034" ry="18"/>
-<text text-anchor="middle" x="228.803" y="-1499.3" font-family="Verdana" font-size="14.00" fill="#000000">IsTerminal</text>
+<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="228.803" cy="-1784" rx="45.2034" ry="18"/>
+<text text-anchor="middle" x="228.803" y="-1780.3" font-family="Verdana" font-size="14.00" fill="#000000">IsTerminal</text>
 </g>
 <!-- blitter.com/go/hkexsh/hkexsh.main&#45;&gt;github.com/mattn/go&#45;isatty.IsTerminal -->
-<g id="edge22" class="edge">
+<g id="edge9" class="edge">
 <title>blitter.com/go/hkexsh/hkexsh.main&#45;&gt;github.com/mattn/go&#45;isatty.IsTerminal</title>
-<path fill="none" stroke="#8b4513" d="M43.9591,-928.0977C48.9136,-1018.8846 72.6697,-1422.0863 106,-1466 121.7954,-1486.8109 148.909,-1496.3177 173.6476,-1500.5107"/>
-<polygon fill="#8b4513" stroke="#8b4513" points="173.3054,-1503.9974 183.7018,-1501.9569 174.302,-1497.0687 173.3054,-1503.9974"/>
+<path fill="none" stroke="#8b4513" d="M43.4898,-1055.9989C46.4863,-1160.8083 63.6376,-1689.7608 106,-1747 121.5424,-1768.0005 148.6349,-1777.5231 173.4249,-1781.6776"/>
+<polygon fill="#8b4513" stroke="#8b4513" points="173.1121,-1785.1682 183.5041,-1783.1051 174.0937,-1778.2373 173.1121,-1785.1682"/>
+</g>
+<!-- blitter.com/go/hkexsh/hkexsh.main$1&#45;&gt;blitter.com/go/hkexsh.Restore -->
+<g id="edge11" class="edge">
+<title>blitter.com/go/hkexsh/hkexsh.main$1&#45;&gt;blitter.com/go/hkexsh.Restore</title>
+<path fill="none" stroke="#8b4513" d="M259.8553,-935.6059C277.3563,-929.7245 298.807,-920.4745 314.606,-907 360.6677,-867.7151 335.2756,-822.4388 387.606,-792 434.7995,-764.5491 594.3349,-769.0868 672.9413,-773.2104"/>
+<polygon fill="#8b4513" stroke="#8b4513" points="672.8463,-776.7103 683.0221,-773.7604 673.2277,-769.7207 672.8463,-776.7103"/>
 </g>
 <!-- (blitter.com/go/hkexsh.Session).Op -->
-<g id="node25" class="node">
+<g id="node24" class="node">
 <title>(blitter.com/go/hkexsh.Session).Op</title>
-<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="717.4649" cy="-699" rx="27" ry="18"/>
-<text text-anchor="middle" x="717.4649" y="-695.3" font-family="Verdana" font-size="14.00" fill="#000000">Op</text>
+<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="717.4649" cy="-349" rx="27" ry="18"/>
+<text text-anchor="middle" x="717.4649" y="-345.3" font-family="Verdana" font-size="14.00" fill="#000000">Op</text>
 </g>
 <!-- blitter.com/go/hkexsh/hkexsh.sendSessionParams&#45;&gt;(blitter.com/go/hkexsh.Session).Op -->
-<g id="edge27" class="edge">
+<g id="edge15" class="edge">
 <title>blitter.com/go/hkexsh/hkexsh.sendSessionParams&#45;&gt;(blitter.com/go/hkexsh.Session).Op</title>
-<path fill="none" stroke="#8b4513" d="M513.7189,-825.5772C538.0767,-815.4363 568.0899,-800.4363 590.7117,-781 611.756,-762.9191 604.5016,-746.6279 626.7117,-730 642.6441,-718.0719 663.4853,-710.5242 681.1769,-705.8668"/>
-<polygon fill="#8b4513" stroke="#8b4513" points="682.2733,-709.2026 691.1687,-703.4473 680.6258,-702.3992 682.2733,-709.2026"/>
+<path fill="none" stroke="#8b4513" d="M484.8671,-645.7871C509.1422,-614.0088 559.0426,-545.727 590.7117,-482 612.106,-438.9489 592.5465,-413.8208 626.7117,-380 641.1881,-365.6696 662.5552,-357.9561 680.9205,-353.8081"/>
+<polygon fill="#8b4513" stroke="#8b4513" points="681.6276,-357.2361 690.7519,-351.851 680.2609,-350.3708 681.6276,-357.2361"/>
 </g>
 <!-- (blitter.com/go/hkexsh.Session).Who -->
-<g id="node26" class="node">
+<g id="node25" class="node">
 <title>(blitter.com/go/hkexsh.Session).Who</title>
-<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="717.4649" cy="-760" rx="27" ry="18"/>
-<text text-anchor="middle" x="717.4649" y="-756.3" font-family="Verdana" font-size="14.00" fill="#000000">Who</text>
+<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="717.4649" cy="-654" rx="27" ry="18"/>
+<text text-anchor="middle" x="717.4649" y="-650.3" font-family="Verdana" font-size="14.00" fill="#000000">Who</text>
 </g>
 <!-- blitter.com/go/hkexsh/hkexsh.sendSessionParams&#45;&gt;(blitter.com/go/hkexsh.Session).Who -->
-<g id="edge28" class="edge">
+<g id="edge16" class="edge">
 <title>blitter.com/go/hkexsh/hkexsh.sendSessionParams&#45;&gt;(blitter.com/go/hkexsh.Session).Who</title>
-<path fill="none" stroke="#8b4513" d="M526.881,-827.696C547.2339,-822.3188 570.2391,-815.5827 590.7117,-808 607.3044,-801.8544 610.3139,-797.648 626.7117,-791 645.1563,-783.5222 666.1635,-776.2686 683.3184,-770.6603"/>
-<polygon fill="#8b4513" stroke="#8b4513" points="684.4841,-773.962 692.9253,-767.5591 682.3336,-767.3004 684.4841,-773.962"/>
+<path fill="none" stroke="#8b4513" d="M552.4989,-660.684C595.5481,-658.9398 646.238,-656.8859 679.9548,-655.5198"/>
+<polygon fill="#8b4513" stroke="#8b4513" points="680.4241,-659.0038 690.2742,-655.1017 680.1407,-652.0095 680.4241,-659.0038"/>
 </g>
 <!-- (blitter.com/go/hkexsh.Session).ConnHost -->
-<g id="node27" class="node">
+<g id="node26" class="node">
 <title>(blitter.com/go/hkexsh.Session).ConnHost</title>
-<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="717.4649" cy="-821" rx="42.8032" ry="18"/>
-<text text-anchor="middle" x="717.4649" y="-817.3" font-family="Verdana" font-size="14.00" fill="#000000">ConnHost</text>
+<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="717.4649" cy="-410" rx="42.8032" ry="18"/>
+<text text-anchor="middle" x="717.4649" y="-406.3" font-family="Verdana" font-size="14.00" fill="#000000">ConnHost</text>
 </g>
 <!-- blitter.com/go/hkexsh/hkexsh.sendSessionParams&#45;&gt;(blitter.com/go/hkexsh.Session).ConnHost -->
-<g id="edge29" class="edge">
+<g id="edge17" class="edge">
 <title>blitter.com/go/hkexsh/hkexsh.sendSessionParams&#45;&gt;(blitter.com/go/hkexsh.Session).ConnHost</title>
-<path fill="none" stroke="#8b4513" d="M552.3937,-837.5749C565.2257,-836.8469 578.3346,-835.9919 590.7117,-835 615.4952,-833.0138 642.9267,-830.0761 665.9138,-827.4039"/>
-<polygon fill="#8b4513" stroke="#8b4513" points="666.6156,-830.8455 676.1372,-826.1992 665.7963,-823.8936 666.6156,-830.8455"/>
+<path fill="none" stroke="#8b4513" d="M486.14,-646.1452C510.1063,-618.056 556.9439,-561.341 590.7117,-509 609.2502,-480.2649 600.7014,-463.2001 626.7117,-441 638.3389,-431.0761 653.2991,-424.2831 667.7062,-419.6517"/>
+<polygon fill="#8b4513" stroke="#8b4513" points="668.9262,-422.9417 677.5441,-416.7788 666.9639,-416.2224 668.9262,-422.9417"/>
 </g>
 <!-- (blitter.com/go/hkexsh.Session).TermType -->
-<g id="node28" class="node">
+<g id="node27" class="node">
 <title>(blitter.com/go/hkexsh.Session).TermType</title>
-<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="717.4649" cy="-577" rx="42.8032" ry="18"/>
-<text text-anchor="middle" x="717.4649" y="-573.3" font-family="Verdana" font-size="14.00" fill="#000000">TermType</text>
+<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="717.4649" cy="-471" rx="42.8032" ry="18"/>
+<text text-anchor="middle" x="717.4649" y="-467.3" font-family="Verdana" font-size="14.00" fill="#000000">TermType</text>
 </g>
 <!-- blitter.com/go/hkexsh/hkexsh.sendSessionParams&#45;&gt;(blitter.com/go/hkexsh.Session).TermType -->
-<g id="edge30" class="edge">
+<g id="edge18" class="edge">
 <title>blitter.com/go/hkexsh/hkexsh.sendSessionParams&#45;&gt;(blitter.com/go/hkexsh.Session).TermType</title>
-<path fill="none" stroke="#8b4513" d="M496.3503,-823.57C523.8987,-803.5091 566.8832,-768.0038 590.7117,-727 618.4751,-679.2252 588.3373,-647.7572 626.7117,-608 637.3279,-597.0013 652.0023,-589.9044 666.4586,-585.3254"/>
-<polygon fill="#8b4513" stroke="#8b4513" points="667.6974,-588.613 676.3793,-582.5405 665.8055,-581.8735 667.6974,-588.613"/>
+<path fill="none" stroke="#8b4513" d="M509.1732,-648.0225C535.1981,-635.5414 568.6999,-615.9557 590.7117,-590 618.0432,-557.7716 595.9607,-530.9836 626.7117,-502 637.8358,-491.5153 652.6538,-484.5637 667.0854,-479.9597"/>
+<polygon fill="#8b4513" stroke="#8b4513" points="668.3133,-483.2488 676.9645,-477.1327 666.3875,-476.519 668.3133,-483.2488"/>
 </g>
 <!-- (blitter.com/go/hkexsh.Session).Cmd -->
-<g id="node29" class="node">
+<g id="node28" class="node">
 <title>(blitter.com/go/hkexsh.Session).Cmd</title>
-<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="717.4649" cy="-882" rx="27" ry="18"/>
-<text text-anchor="middle" x="717.4649" y="-878.3" font-family="Verdana" font-size="14.00" fill="#000000">Cmd</text>
+<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="717.4649" cy="-715" rx="27" ry="18"/>
+<text text-anchor="middle" x="717.4649" y="-711.3" font-family="Verdana" font-size="14.00" fill="#000000">Cmd</text>
 </g>
 <!-- blitter.com/go/hkexsh/hkexsh.sendSessionParams&#45;&gt;(blitter.com/go/hkexsh.Session).Cmd -->
-<g id="edge31" class="edge">
+<g id="edge19" class="edge">
 <title>blitter.com/go/hkexsh/hkexsh.sendSessionParams&#45;&gt;(blitter.com/go/hkexsh.Session).Cmd</title>
-<path fill="none" stroke="#8b4513" d="M536.7983,-851.9872C583.1316,-859.6842 643.3034,-869.6801 681.1621,-875.9693"/>
-<polygon fill="#8b4513" stroke="#8b4513" points="680.7801,-879.4537 691.2185,-877.6399 681.9273,-872.5484 680.7801,-879.4537"/>
+<path fill="none" stroke="#8b4513" d="M531.0344,-676.476C578.195,-686.2213 642.1435,-699.4356 681.5613,-707.5809"/>
+<polygon fill="#8b4513" stroke="#8b4513" points="681.0101,-711.0409 691.5115,-709.637 682.4267,-704.1857 681.0101,-711.0409"/>
 </g>
 <!-- (blitter.com/go/hkexsh.Session).AuthCookie -->
-<g id="node30" class="node">
+<g id="node29" class="node">
 <title>(blitter.com/go/hkexsh.Session).AuthCookie</title>
-<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="717.4649" cy="-638" rx="49.5034" ry="18"/>
-<text text-anchor="middle" x="717.4649" y="-634.3" font-family="Verdana" font-size="14.00" fill="#000000">AuthCookie</text>
+<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="717.4649" cy="-593" rx="49.5034" ry="18"/>
+<text text-anchor="middle" x="717.4649" y="-589.3" font-family="Verdana" font-size="14.00" fill="#000000">AuthCookie</text>
 </g>
 <!-- blitter.com/go/hkexsh/hkexsh.sendSessionParams&#45;&gt;(blitter.com/go/hkexsh.Session).AuthCookie -->
-<g id="edge32" class="edge">
+<g id="edge20" class="edge">
 <title>blitter.com/go/hkexsh/hkexsh.sendSessionParams&#45;&gt;(blitter.com/go/hkexsh.Session).AuthCookie</title>
-<path fill="none" stroke="#8b4513" d="M502.7309,-824.2957C529.338,-809.0524 566.59,-784.3121 590.7117,-754 616.2579,-721.8978 596.6839,-696.9551 626.7117,-669 636.7139,-659.6883 649.6313,-653.1609 662.5665,-648.5897"/>
-<polygon fill="#8b4513" stroke="#8b4513" points="663.9426,-651.8249 672.4136,-645.4616 661.8232,-645.1535 663.9426,-651.8249"/>
+<path fill="none" stroke="#8b4513" d="M520.9012,-649.5465C564.1818,-637.0958 626.2536,-619.2392 669.0072,-606.9401"/>
+<polygon fill="#8b4513" stroke="#8b4513" points="669.9857,-610.3006 678.6283,-604.1723 668.0504,-603.5734 669.9857,-610.3006"/>
 </g>
 <!-- (blitter.com/go/hkexsh/hkexnet.Conn).Write -->
-<g id="node41" class="node">
+<g id="node40" class="node">
 <title>(blitter.com/go/hkexsh/hkexnet.Conn).Write</title>
-<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="717.4649" cy="-1156" rx="27" ry="18"/>
-<text text-anchor="middle" x="717.4649" y="-1152.3" font-family="Verdana" font-size="14.00" fill="#000000">Write</text>
+<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="717.4649" cy="-1000" rx="27" ry="18"/>
+<text text-anchor="middle" x="717.4649" y="-996.3" font-family="Verdana" font-size="14.00" fill="#000000">Write</text>
 </g>
 <!-- blitter.com/go/hkexsh/hkexsh.sendSessionParams&#45;&gt;(blitter.com/go/hkexsh/hkexnet.Conn).Write -->
-<g id="edge33" class="edge">
+<g id="edge21" class="edge">
 <title>blitter.com/go/hkexsh/hkexsh.sendSessionParams&#45;&gt;(blitter.com/go/hkexsh/hkexnet.Conn).Write</title>
-<path fill="none" stroke="#8b4513" stroke-dasharray="5,2" d="M480.5185,-859.2254C508.5624,-910.6853 589.1684,-1055.8902 626.7117,-1095 644.2236,-1113.2425 668.0821,-1129.016 686.9414,-1139.9509"/>
-<polygon fill="#8b4513" stroke="#8b4513" points="685.3191,-1143.0541 695.7484,-1144.9198 688.7589,-1136.9576 685.3191,-1143.0541"/>
+<path fill="none" stroke="#8b4513" stroke-dasharray="5,2" d="M483.9763,-681.9512C501.4903,-706.0945 532.5194,-750.7697 553.7117,-792 594.3088,-870.9829 559.7901,-919.6227 626.7117,-978 641.3159,-990.7395 662.0692,-996.3785 680.0447,-998.7705"/>
+<polygon fill="#8b4513" stroke="#8b4513" points="679.931,-1002.2775 690.2399,-999.8327 680.6565,-995.3152 679.931,-1002.2775"/>
 </g>
-<!-- blitter.com/go/hkexsh/spinsult.GetSentence -->
-<g id="node45" class="node">
-<title>blitter.com/go/hkexsh/spinsult.GetSentence</title>
-<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="470.6588" cy="-467" rx="55.6039" ry="18"/>
-<text text-anchor="middle" x="470.6588" y="-463.3" font-family="Verdana" font-size="14.00" fill="#000000">GetSentence</text>
+<!-- blitter.com/go/hkexsh/hkexsh.main$2&#45;&gt;(*blitter.com/go/hkexsh/hkexnet.Conn).WritePacket -->
+<g id="edge30" class="edge">
+<title>blitter.com/go/hkexsh/hkexsh.main$2&#45;&gt;(*blitter.com/go/hkexsh/hkexnet.Conn).WritePacket</title>
+<path fill="none" stroke="#8b4513" d="M262.0382,-1604.679C320.8802,-1614.7672 447.229,-1636.5815 553.7117,-1656 590.0561,-1662.6279 630.8814,-1670.3559 662.6769,-1676.4378"/>
+<polygon fill="#8b4513" stroke="#8b4513" points="662.1858,-1679.9073 672.6657,-1678.3512 663.5027,-1673.0323 662.1858,-1679.9073"/>
 </g>
-<!-- blitter.com/go/hkexsh/hkexsh.rejectUserMsg&#45;&gt;blitter.com/go/hkexsh/spinsult.GetSentence -->
+<!-- blitter.com/go/hkexsh/hkexsh.launchTuns&#45;&gt;blitter.com/go/hkexsh/hkexsh.reqTunnel -->
+<g id="edge32" class="edge">
+<title>blitter.com/go/hkexsh/hkexsh.launchTuns&#45;&gt;blitter.com/go/hkexsh/hkexsh.reqTunnel</title>
+<path fill="none" stroke="#000000" d="M277.1648,-1678.7997C317.6623,-1680.3067 375.3898,-1682.4548 417.2418,-1684.0122"/>
+<polygon fill="#000000" stroke="#000000" points="417.1286,-1687.5103 427.2519,-1684.3847 417.389,-1680.5152 417.1286,-1687.5103"/>
+</g>
+<!-- blitter.com/go/hkexsh/hkexsh.doShellMode$1 -->
+<g id="node9" class="node">
+<title>blitter.com/go/hkexsh/hkexsh.doShellMode$1</title>
+<ellipse fill="#add8e6" stroke="#000000" stroke-dasharray="1,5" cx="470.6588" cy="-822" rx="64.8047" ry="18"/>
+<text text-anchor="middle" x="470.6588" y="-818.3" font-family="Verdana" font-size="14.00" fill="#000000">doShellMode$1</text>
+</g>
+<!-- blitter.com/go/hkexsh/hkexsh.doShellMode$1&#45;&gt;blitter.com/go/hkexsh.Restore -->
+<g id="edge34" class="edge">
+<title>blitter.com/go/hkexsh/hkexsh.doShellMode$1&#45;&gt;blitter.com/go/hkexsh.Restore</title>
+<path fill="none" stroke="#8b4513" d="M524.8215,-811.9051C569.8206,-803.5181 632.9814,-791.7461 674.5424,-783.9999"/>
+<polygon fill="#8b4513" stroke="#8b4513" points="675.4298,-787.3949 684.6192,-782.1218 674.1472,-780.5134 675.4298,-787.3949"/>
+</g>
+<!-- blitter.com/go/hkexsh/hkexsh.doShellMode$1&#45;&gt;(*blitter.com/go/hkexsh.Session).SetStatus -->
+<g id="edge36" class="edge">
+<title>blitter.com/go/hkexsh/hkexsh.doShellMode$1&#45;&gt;(*blitter.com/go/hkexsh.Session).SetStatus</title>
+<path fill="none" stroke="#8b4513" d="M485.5409,-804.3642C504.4733,-780.9511 536.7439,-737.5839 553.7117,-695 557.9228,-684.4315 619.1644,-300.5126 626.7117,-292 636.7548,-280.6724 651.2672,-273.8685 665.7514,-269.8004"/>
+<polygon fill="#8b4513" stroke="#8b4513" points="666.8169,-273.1439 675.7191,-267.3992 665.1775,-266.3386 666.8169,-273.1439"/>
+</g>
+<!-- blitter.com/go/hkexsh/hkexsh.doShellMode$1&#45;&gt;(blitter.com/go/hkexsh.Session).Status -->
 <g id="edge37" class="edge">
-<title>blitter.com/go/hkexsh/hkexsh.rejectUserMsg&#45;&gt;blitter.com/go/hkexsh/spinsult.GetSentence</title>
-<path fill="none" stroke="#8b4513" d="M289.5212,-473.7405C324.6712,-472.4325 368.9331,-470.7854 404.9044,-469.4469"/>
-<polygon fill="#8b4513" stroke="#8b4513" points="405.4349,-472.9296 415.2978,-469.0601 405.1745,-465.9345 405.4349,-472.9296"/>
+<title>blitter.com/go/hkexsh/hkexsh.doShellMode$1&#45;&gt;(blitter.com/go/hkexsh.Session).Status</title>
+<path fill="none" stroke="#8b4513" d="M482.9124,-804.1804C499.5033,-779.8508 529.787,-734.7176 553.7117,-695 588.3038,-637.5734 575.324,-606.0549 626.7117,-563 641.3275,-550.7543 661.0286,-543.261 678.3401,-538.7188"/>
+<polygon fill="#8b4513" stroke="#8b4513" points="679.2825,-542.0924 688.2002,-536.3718 677.6615,-535.2826 679.2825,-542.0924"/>
 </g>
-<!-- blitter.com/go/hkexsh/hkexsh.main$2&#45;&gt;(*blitter.com/go/hkexsh/hkexnet.Conn).WritePacket -->
+<!-- (blitter.com/go/hkexsh/hkexnet.Conn).GetStatus -->
+<g id="node42" class="node">
+<title>(blitter.com/go/hkexsh/hkexnet.Conn).GetStatus</title>
+<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="717.4649" cy="-1061" rx="43.4031" ry="18"/>
+<text text-anchor="middle" x="717.4649" y="-1057.3" font-family="Verdana" font-size="14.00" fill="#000000">GetStatus</text>
+</g>
+<!-- blitter.com/go/hkexsh/hkexsh.doShellMode$1&#45;&gt;(blitter.com/go/hkexsh/hkexnet.Conn).GetStatus -->
+<g id="edge35" class="edge">
+<title>blitter.com/go/hkexsh/hkexsh.doShellMode$1&#45;&gt;(blitter.com/go/hkexsh/hkexnet.Conn).GetStatus</title>
+<path fill="none" stroke="#8b4513" d="M489.363,-839.5198C507.0433,-856.5892 533.7604,-883.7371 553.7117,-910 591.7048,-960.0122 577.6233,-991.8207 626.7117,-1031 638.4088,-1040.3359 653.1278,-1046.8171 667.2877,-1051.2964"/>
+<polygon fill="#8b4513" stroke="#8b4513" points="666.3789,-1054.677 676.9574,-1054.0881 668.3206,-1047.9516 666.3789,-1054.677"/>
+</g>
+<!-- blitter.com/go/hkexsh/hkexsh.doShellMode&#45;&gt;blitter.com/go/hkexsh/hkexsh.doShellMode$1 -->
+<g id="edge38" class="edge">
+<title>blitter.com/go/hkexsh/hkexsh.doShellMode&#45;&gt;blitter.com/go/hkexsh/hkexsh.doShellMode$1</title>
+<path fill="none" stroke="#000000" d="M272.3777,-993.8612C286.4549,-989.2124 301.738,-982.9949 314.606,-975 342.0104,-957.9735 401.8739,-896.0467 438.9757,-856.3902"/>
+<polygon fill="#000000" stroke="#000000" points="450.4303,-849.2005 454.6713,-839.4915 445.3014,-844.4367 450.4303,-849.2005"/>
+<polyline fill="none" stroke="#000000" points="447.8658,-846.8186 444.4631,-850.4821 "/>
+<ellipse fill="none" stroke="#000000" cx="441.741" cy="-853.413" rx="4" ry="4"/>
+</g>
+<!-- blitter.com/go/hkexsh/hkexsh.handleTermResizes -->
+<g id="node13" class="node">
+<title>blitter.com/go/hkexsh/hkexsh.handleTermResizes</title>
+<ellipse fill="#add8e6" stroke="#000000" stroke-width=".5" cx="470.6588" cy="-1002" rx="80.7059" ry="18"/>
+<text text-anchor="middle" x="470.6588" y="-998.3" font-family="Verdana" font-size="14.00" fill="#000000">handleTermResizes</text>
+</g>
+<!-- blitter.com/go/hkexsh/hkexsh.doShellMode&#45;&gt;blitter.com/go/hkexsh/hkexsh.handleTermResizes -->
+<g id="edge42" class="edge">
+<title>blitter.com/go/hkexsh/hkexsh.doShellMode&#45;&gt;blitter.com/go/hkexsh/hkexsh.handleTermResizes</title>
+<path fill="none" stroke="#000000" d="M283.9864,-1004.3155C312.1661,-1003.966 347.1889,-1003.5315 379.2601,-1003.1337"/>
+<polygon fill="#000000" stroke="#000000" points="379.601,-1006.6299 389.5567,-1003.006 379.5141,-999.6304 379.601,-1006.6299"/>
+</g>
+<!-- blitter.com/go/hkexsh/hkexsh.doShellMode$2 -->
+<g id="node14" class="node">
+<title>blitter.com/go/hkexsh/hkexsh.doShellMode$2</title>
+<ellipse fill="#add8e6" stroke="#000000" stroke-dasharray="1,5" cx="470.6588" cy="-940" rx="64.8047" ry="18"/>
+<text text-anchor="middle" x="470.6588" y="-936.3" font-family="Verdana" font-size="14.00" fill="#000000">doShellMode$2</text>
+</g>
+<!-- blitter.com/go/hkexsh/hkexsh.doShellMode&#45;&gt;blitter.com/go/hkexsh/hkexsh.doShellMode$2 -->
+<g id="edge45" class="edge">
+<title>blitter.com/go/hkexsh/hkexsh.doShellMode&#45;&gt;blitter.com/go/hkexsh/hkexsh.doShellMode$2</title>
+<path fill="none" stroke="#000000" d="M271.4852,-993.5289C307.4442,-983.8648 359.5796,-969.8531 401.4908,-958.5893"/>
+<polygon fill="#000000" stroke="#000000" points="415.1131,-958.5524 423.862,-952.5769 413.2963,-951.7923 415.1131,-958.5524"/>
+<polyline fill="none" stroke="#000000" points="414.2047,-955.1724 409.376,-956.4701 "/>
+<ellipse fill="none" stroke="#000000" cx="405.5131" cy="-957.5083" rx="4" ry="4"/>
+</g>
+<!-- blitter.com/go/hkexsh/hkexsh.handleTermResizes$1 -->
+<g id="node11" class="node">
+<title>blitter.com/go/hkexsh/hkexsh.handleTermResizes$1</title>
+<ellipse fill="#add8e6" stroke="#000000" stroke-dasharray="1,5" cx="717.4649" cy="-915" rx="90.507" ry="18"/>
+<text text-anchor="middle" x="717.4649" y="-911.3" font-family="Verdana" font-size="14.00" fill="#000000">handleTermResizes$1</text>
+</g>
+<!-- blitter.com/go/hkexsh/hkexsh.GetSize -->
+<g id="node12" class="node">
+<title>blitter.com/go/hkexsh/hkexsh.GetSize</title>
+<ellipse fill="#add8e6" stroke="#000000" stroke-width="1.5" cx="915.8692" cy="-915" rx="34.8031" ry="18"/>
+<text text-anchor="middle" x="915.8692" y="-911.3" font-family="Verdana" font-size="14.00" fill="#000000">GetSize</text>
+</g>
+<!-- blitter.com/go/hkexsh/hkexsh.handleTermResizes$1&#45;&gt;blitter.com/go/hkexsh/hkexsh.GetSize -->
+<g id="edge39" class="edge">
+<title>blitter.com/go/hkexsh/hkexsh.handleTermResizes$1&#45;&gt;blitter.com/go/hkexsh/hkexsh.GetSize</title>
+<path fill="none" stroke="#000000" d="M808.2478,-915C830.0141,-915 852.3249,-915 870.9481,-915"/>
+<polygon fill="#000000" stroke="#000000" points="871.1707,-918.5001 881.1707,-915 871.1706,-911.5001 871.1707,-918.5001"/>
+</g>
+<!-- blitter.com/go/hkexsh/hkexsh.handleTermResizes$1&#45;&gt;(*blitter.com/go/hkexsh/hkexnet.Conn).WritePacket -->
+<g id="edge40" class="edge">
+<title>blitter.com/go/hkexsh/hkexsh.handleTermResizes$1&#45;&gt;(*blitter.com/go/hkexsh/hkexnet.Conn).WritePacket</title>
+<path fill="none" stroke="#8b4513" d="M644.5277,-925.8547C629.6036,-931.9067 616.1819,-941.2176 608.7117,-955.5 590.9712,-989.4185 590.9712,-1610.5815 608.7117,-1644.5 618.5215,-1663.2555 638.4208,-1673.7817 658.5474,-1679.6713"/>
+<polygon fill="#8b4513" stroke="#8b4513" points="657.8461,-1683.1048 668.4027,-1682.2058 659.5897,-1676.3254 657.8461,-1683.1048"/>
+</g>
+<!-- blitter.com/go/hkexsh/hkexsh.handleTermResizes&#45;&gt;blitter.com/go/hkexsh/hkexsh.handleTermResizes$1 -->
+<g id="edge41" class="edge">
+<title>blitter.com/go/hkexsh/hkexsh.handleTermResizes&#45;&gt;blitter.com/go/hkexsh/hkexsh.handleTermResizes$1</title>
+<path fill="none" stroke="#000000" d="M512.5116,-986.462C525.7036,-981.5419 540.3248,-976.0656 553.7117,-971 586.2119,-958.7019 593.8687,-954.3509 626.7117,-943 632.5728,-940.9743 638.6705,-938.9395 644.8088,-936.942"/>
+<polygon fill="#000000" stroke="#000000" points="658.3904,-936.3107 666.8663,-929.954 656.2762,-929.6376 658.3904,-936.3107"/>
+<polyline fill="none" stroke="#000000" points="657.3333,-932.9742 652.5668,-934.4843 "/>
+<ellipse fill="none" stroke="#000000" cx="648.7536" cy="-935.6923" rx="4" ry="4"/>
+</g>
+<!-- blitter.com/go/hkexsh/hkexsh.doShellMode$2$1 -->
+<g id="node15" class="node">
+<title>blitter.com/go/hkexsh/hkexsh.doShellMode$2$1</title>
+<ellipse fill="#add8e6" stroke="#000000" stroke-dasharray="1,5" cx="717.4649" cy="-854" rx="74.6057" ry="18"/>
+<text text-anchor="middle" x="717.4649" y="-850.3" font-family="Verdana" font-size="14.00" fill="#000000">doShellMode$2$1</text>
+</g>
+<!-- blitter.com/go/hkexsh/hkexsh.doShellMode$2&#45;&gt;blitter.com/go/hkexsh/hkexsh.doShellMode$2$1 -->
 <g id="edge43" class="edge">
-<title>blitter.com/go/hkexsh/hkexsh.main$2&#45;&gt;(*blitter.com/go/hkexsh/hkexnet.Conn).WritePacket</title>
-<path fill="none" stroke="#8b4513" d="M260.4265,-1299.3C329.834,-1284.4495 496.7931,-1260.2383 590.7117,-1344 646.4046,-1393.6699 576.7355,-1452.5819 626.7117,-1508 635.5676,-1517.8202 647.7037,-1524.4336 660.2198,-1528.8851"/>
-<polygon fill="#8b4513" stroke="#8b4513" points="659.2281,-1532.242 669.8169,-1531.885 661.3166,-1525.5608 659.2281,-1532.242"/>
+<title>blitter.com/go/hkexsh/hkexsh.doShellMode$2&#45;&gt;blitter.com/go/hkexsh/hkexsh.doShellMode$2$1</title>
+<path fill="none" stroke="#000000" d="M510.7129,-925.7631C542.2137,-914.5955 587.2253,-898.702 626.7117,-885 638.875,-880.7793 651.9707,-876.2799 664.3256,-872.0553"/>
+<polygon fill="#000000" stroke="#000000" points="665.711,-875.2807 674.0433,-868.7367 663.4487,-868.6563 665.711,-875.2807"/>
+</g>
+<!-- blitter.com/go/hkexsh/hkexsh.doShellMode$2&#45;&gt;blitter.com/go/hkexsh.Restore -->
+<g id="edge44" class="edge">
+<title>blitter.com/go/hkexsh/hkexsh.doShellMode$2&#45;&gt;blitter.com/go/hkexsh.Restore</title>
+<path fill="none" stroke="#8b4513" d="M487.6443,-922.5074C521.1345,-888.3715 595.1672,-814.7468 626.7117,-798 641.1596,-790.3297 658.3165,-785.2881 673.8025,-781.9947"/>
+<polygon fill="#8b4513" stroke="#8b4513" points="674.5439,-785.4162 683.6925,-780.0728 673.2085,-778.5447 674.5439,-785.4162"/>
 </g>
 <!-- blitter.com/go/hkexsh/hkexsh.doCopyMode&#45;&gt;(blitter.com/go/hkexsh.Session).Cmd -->
 <g id="edge48" class="edge">
 <title>blitter.com/go/hkexsh/hkexsh.doCopyMode&#45;&gt;(blitter.com/go/hkexsh.Session).Cmd</title>
-<path fill="none" stroke="#8b4513" d="M498.4909,-1007.0996C545.4113,-980.294 639.8275,-926.3541 687.8935,-898.8941"/>
-<polygon fill="#8b4513" stroke="#8b4513" points="689.9141,-901.7707 696.8609,-893.771 686.4417,-895.6926 689.9141,-901.7707"/>
+<path fill="none" stroke="#8b4513" d="M517.6912,-1055.9676C530.9647,-1051.0454 544.3297,-1043.7578 553.7117,-1033 642.7701,-930.8819 530.7108,-832.6207 626.7117,-737 640.6996,-723.0676 661.9155,-717.412 680.3177,-715.3115"/>
+<polygon fill="#8b4513" stroke="#8b4513" points="680.7943,-718.784 690.4688,-714.4649 680.2125,-711.8082 680.7943,-718.784"/>
 </g>
 <!-- blitter.com/go/hkexsh/hkexsh.doCopyMode&#45;&gt;(*blitter.com/go/hkexsh/hkexnet.Conn).WritePacket -->
 <g id="edge49" class="edge">
 <title>blitter.com/go/hkexsh/hkexsh.doCopyMode&#45;&gt;(*blitter.com/go/hkexsh/hkexnet.Conn).WritePacket</title>
-<path fill="none" stroke="#8b4513" d="M519.9262,-1031.9946C532.6309,-1036.5875 545.1273,-1043.5243 553.7117,-1054 586.0955,-1093.5187 593.5833,-1469.1034 626.7117,-1508 635.2859,-1518.0671 647.3157,-1524.7737 659.8189,-1529.2364"/>
-<polygon fill="#8b4513" stroke="#8b4513" points="658.8346,-1532.5956 669.4231,-1532.2302 660.9178,-1525.9128 658.8346,-1532.5956"/>
+<path fill="none" stroke="#8b4513" d="M473.1175,-1084.2477C485.5738,-1174.1845 544.3659,-1569.4624 626.7117,-1657 635.7722,-1666.6317 647.9855,-1673.174 660.5109,-1677.6169"/>
+<polygon fill="#8b4513" stroke="#8b4513" points="659.5139,-1680.9722 670.103,-1680.6216 661.6065,-1674.2923 659.5139,-1680.9722"/>
 </g>
 <!-- (*blitter.com/go/hkexsh/hkexnet.Conn).SetStatus -->
 <g id="node39" class="node">
 <title>(*blitter.com/go/hkexsh/hkexnet.Conn).SetStatus</title>
-<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="717.4649" cy="-1477" rx="42.2035" ry="18"/>
-<text text-anchor="middle" x="717.4649" y="-1473.3" font-family="Verdana" font-size="14.00" fill="#000000">SetStatus</text>
+<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="717.4649" cy="-1321" rx="42.2035" ry="18"/>
+<text text-anchor="middle" x="717.4649" y="-1317.3" font-family="Verdana" font-size="14.00" fill="#000000">SetStatus</text>
 </g>
 <!-- blitter.com/go/hkexsh/hkexsh.doCopyMode&#45;&gt;(*blitter.com/go/hkexsh/hkexnet.Conn).SetStatus -->
 <g id="edge51" class="edge">
 <title>blitter.com/go/hkexsh/hkexsh.doCopyMode&#45;&gt;(*blitter.com/go/hkexsh/hkexnet.Conn).SetStatus</title>
-<path fill="none" stroke="#8b4513" d="M518.5911,-1032.6312C531.4247,-1037.2401 544.3234,-1044.0259 553.7117,-1054 592.2559,-1094.949 578.8616,-1120.0269 590.7117,-1175 603.9312,-1236.3258 584.8565,-1408.2695 626.7117,-1455 636.373,-1465.7866 650.3404,-1471.7243 664.433,-1474.8837"/>
-<polygon fill="#8b4513" stroke="#8b4513" points="664.1953,-1478.397 674.657,-1476.7228 665.4346,-1471.5076 664.1953,-1478.397"/>
-</g>
-<!-- blitter.com/go/hkexsh/hkexsh.doCopyMode&#45;&gt;(blitter.com/go/hkexsh/hkexnet.Conn).GetStatus -->
-<g id="edge52" class="edge">
-<title>blitter.com/go/hkexsh/hkexsh.doCopyMode&#45;&gt;(blitter.com/go/hkexsh/hkexnet.Conn).GetStatus</title>
-<path fill="none" stroke="#8b4513" d="M513.3577,-1034.883C526.8712,-1039.6835 541.4656,-1046.012 553.7117,-1054 573.4551,-1066.8785 578.048,-1072.1182 590.7117,-1092 614.9687,-1130.083 594.1058,-1155.7659 626.7117,-1187 637.5192,-1197.3528 651.9753,-1204.1344 666.168,-1208.5763"/>
-<polygon fill="#8b4513" stroke="#8b4513" points="665.3308,-1211.9763 675.9036,-1211.2927 667.2121,-1205.2338 665.3308,-1211.9763"/>
+<path fill="none" stroke="#8b4513" d="M490.2274,-1083.2625C516.313,-1107.1886 562.4638,-1152.8393 590.7117,-1200 614.7694,-1240.165 591.8213,-1267.7805 626.7117,-1299 637.3086,-1308.482 651.2975,-1314.049 665.1101,-1317.2708"/>
+<polygon fill="#8b4513" stroke="#8b4513" points="664.5993,-1320.7372 675.0856,-1319.2247 665.9449,-1313.8677 664.5993,-1320.7372"/>
 </g>
 <!-- blitter.com/go/hkexsh/hkexsh.doCopyMode&#45;&gt;(blitter.com/go/hkexsh/hkexnet.Conn).Read -->
 <g id="edge50" class="edge">
 <title>blitter.com/go/hkexsh/hkexsh.doCopyMode&#45;&gt;(blitter.com/go/hkexsh/hkexnet.Conn).Read</title>
-<path fill="none" stroke="#8b4513" d="M516.4724,-1033.6331C529.5464,-1038.291 543.1064,-1044.8523 553.7117,-1054 579.4701,-1076.218 577.7667,-1089.5427 590.7117,-1121 613.0379,-1175.2542 586.1292,-1205.6321 626.7117,-1248 640.7552,-1262.6613 662.1032,-1270.161 680.5666,-1273.9957"/>
-<polygon fill="#8b4513" stroke="#8b4513" points="680.0015,-1277.4501 690.4625,-1275.7712 681.2378,-1270.5601 680.0015,-1277.4501"/>
+<path fill="none" stroke="#8b4513" d="M520.7829,-1074.2533C542.3797,-1078.0498 567.8701,-1082.8524 590.7117,-1088 621.9674,-1095.0437 657.1322,-1104.6084 682.48,-1111.7991"/>
+<polygon fill="#8b4513" stroke="#8b4513" points="681.7853,-1115.2406 692.3621,-1114.6232 683.7088,-1108.51 681.7853,-1115.2406"/>
+</g>
+<!-- blitter.com/go/hkexsh/hkexsh.doCopyMode&#45;&gt;(blitter.com/go/hkexsh/hkexnet.Conn).GetStatus -->
+<g id="edge52" class="edge">
+<title>blitter.com/go/hkexsh/hkexsh.doCopyMode&#45;&gt;(blitter.com/go/hkexsh/hkexnet.Conn).GetStatus</title>
+<path fill="none" stroke="#8b4513" d="M526.3652,-1063.1764C546.3388,-1062.292 569.0292,-1061.4341 589.7117,-1061 614.037,-1060.4894 640.9733,-1060.4164 663.8162,-1060.4997"/>
+<polygon fill="#8b4513" stroke="#8b4513" points="663.983,-1064.0005 673.9995,-1060.548 664.0163,-1057.0005 663.983,-1064.0005"/>
 </g>
 </g>
 </svg>

+ 1 - 0
hkexsh/termsize_linux.go

@@ -17,6 +17,7 @@ func handleTermResizes(conn *hkexnet.Conn) {
 	ch := make(chan os.Signal, 1)
 	signal.Notify(ch, syscall.SIGWINCH)
 	wg.Add(1)
+	// #gv:s/label=\"handleTermResizes\$1\"/label=\"resizeHandler\"/
 	go func() {
 		defer wg.Done()
 

+ 81 - 81
hkexshd/hkexshd-vis.gv

@@ -20,29 +20,29 @@ labelloc="t";
 labeljust="c";
 fontsize="18";
         
-        "blitter.com/go/hkexsh/hkexshd.runServerToClientCopyAs" [ fillcolor="lightblue" label="runServerToClientCopyAs" penwidth="0.5" ]
         "blitter.com/go/hkexsh/hkexshd.main$1" [ label="main$1" style="dotted,filled" fillcolor="lightblue" ]
+        "blitter.com/go/hkexsh/hkexshd.main" [ fillcolor="lightblue" label="main" penwidth="0.5" ]
+        "blitter.com/go/hkexsh/hkexshd.main$2" [ style="dotted,filled" fillcolor="lightblue" label="main$2" ]
+        "blitter.com/go/hkexsh/hkexshd.GenAuthToken" [ label="GenAuthToken" penwidth="1.5" fillcolor="lightblue" ]
         "blitter.com/go/hkexsh/hkexshd.runShellAs" [ fillcolor="lightblue" label="runShellAs" penwidth="0.5" ]
-        "blitter.com/go/hkexsh/hkexshd.runShellAs$1" [ fillcolor="lightblue" label="runShellAs$1" style="dotted,filled" ]
+        "blitter.com/go/hkexsh/hkexshd.runShellAs$1" [ style="dotted,filled" fillcolor="lightblue" label="runShellAs$1" ]
         "blitter.com/go/hkexsh/hkexshd.runShellAs$2" [ fillcolor="lightblue" label="runShellAs$2" style="dotted,filled" ]
         "blitter.com/go/hkexsh/hkexshd.runShellAs$3" [ fillcolor="lightblue" label="runShellAs$3" style="dotted,filled" ]
-        "blitter.com/go/hkexsh/hkexshd.runShellAs$4" [ style="dotted,filled" fillcolor="lightblue" label="runShellAs$4" ]
-        "blitter.com/go/hkexsh/hkexshd.main" [ label="main" penwidth="0.5" fillcolor="lightblue" ]
-        "blitter.com/go/hkexsh/hkexshd.main$2" [ fillcolor="lightblue" label="main$2" style="dotted,filled" ]
-        "blitter.com/go/hkexsh/hkexshd.GenAuthToken" [ penwidth="1.5" fillcolor="lightblue" label="GenAuthToken" ]
+        "blitter.com/go/hkexsh/hkexshd.runShellAs$4" [ label="runShellAs$4" style="dotted,filled" fillcolor="lightblue" ]
         "blitter.com/go/hkexsh/hkexshd.main$2$1" [ fillcolor="lightblue" label="main$2$1" style="dotted,filled" ]
         "blitter.com/go/hkexsh/hkexshd.runClientToServerCopyAs" [ fillcolor="lightblue" label="runClientToServerCopyAs" penwidth="0.5" ]
+        "blitter.com/go/hkexsh/hkexshd.runServerToClientCopyAs" [ fillcolor="lightblue" label="runServerToClientCopyAs" penwidth="0.5" ]
         
         subgraph "cluster_blitter.com/go/goutmp" {
-        fontsize="16";
+        penwidth="0.8";
 fillcolor="lightyellow";
-rank="sink";
 URL="/?f=blitter.com/go/goutmp";
-tooltip="package: blitter.com/go/goutmp";
-penwidth="0.8";
+fontsize="16";
 style="filled";
 fontname="bold";
+rank="sink";
 label="[goutmp]";
+tooltip="package: blitter.com/go/goutmp";
         
         "blitter.com/go/goutmp.GetHost" [ fillcolor="moccasin" label="GetHost" penwidth="1.5" ]
         "blitter.com/go/goutmp.Put_utmp" [ fillcolor="moccasin" label="Put_utmp" penwidth="1.5" ]
@@ -52,106 +52,106 @@ label="[goutmp]";
     }
 
         subgraph "cluster_blitter.com/go/hkexsh" {
-        rank="sink";
-label="[hkexsh]";
-tooltip="package: blitter.com/go/hkexsh";
+        style="filled";
 fontname="bold";
+label="[hkexsh]";
 fontsize="16";
-style="filled";
 fillcolor="lightyellow";
+rank="sink";
 URL="/?f=blitter.com/go/hkexsh";
+tooltip="package: blitter.com/go/hkexsh";
 penwidth="0.8";
         
         "blitter.com/go/hkexsh.AuthUserByToken" [ fillcolor="moccasin" label="AuthUserByToken" penwidth="1.5" ]
         "blitter.com/go/hkexsh.AuthUserByPasswd" [ fillcolor="moccasin" label="AuthUserByPasswd" penwidth="1.5" ]
         
         subgraph "cluster_*blitter.com/go/hkexsh.Session" {
-        label="(*Session)";
-tooltip="type: *blitter.com/go/hkexsh.Session";
-penwidth="0.5";
-fontsize="15";
+        fontsize="15";
 fontcolor="#222222";
 labelloc="b";
 style="rounded,filled";
 fillcolor="wheat2";
+label="(*Session)";
+tooltip="type: *blitter.com/go/hkexsh.Session";
+penwidth="0.5";
         
         "(*blitter.com/go/hkexsh.Session).SetOp" [ fillcolor="moccasin" label="SetOp" penwidth="1.5" ]
         "(*blitter.com/go/hkexsh.Session).SetWho" [ fillcolor="moccasin" label="SetWho" penwidth="1.5" ]
-        "(*blitter.com/go/hkexsh.Session).SetConnHost" [ penwidth="1.5" fillcolor="moccasin" label="SetConnHost" ]
-        "(*blitter.com/go/hkexsh.Session).SetTermType" [ label="SetTermType" penwidth="1.5" fillcolor="moccasin" ]
-        "(*blitter.com/go/hkexsh.Session).SetCmd" [ fillcolor="moccasin" label="SetCmd" penwidth="1.5" ]
-        "(*blitter.com/go/hkexsh.Session).SetAuthCookie" [ penwidth="1.5" fillcolor="moccasin" label="SetAuthCookie" ]
+        "(*blitter.com/go/hkexsh.Session).SetConnHost" [ fillcolor="moccasin" label="SetConnHost" penwidth="1.5" ]
+        "(*blitter.com/go/hkexsh.Session).SetTermType" [ fillcolor="moccasin" label="SetTermType" penwidth="1.5" ]
+        "(*blitter.com/go/hkexsh.Session).SetCmd" [ penwidth="1.5" fillcolor="moccasin" label="SetCmd" ]
+        "(*blitter.com/go/hkexsh.Session).SetAuthCookie" [ fillcolor="moccasin" label="SetAuthCookie" penwidth="1.5" ]
         "(*blitter.com/go/hkexsh.Session).ClearAuthCookie" [ fillcolor="moccasin" label="ClearAuthCookie" penwidth="1.5" ]
         
     }
 
         subgraph "cluster_blitter.com/go/hkexsh.Session" {
-        tooltip="type: blitter.com/go/hkexsh.Session";
-penwidth="0.5";
-fontsize="15";
-fontcolor="#222222";
+        fontcolor="#222222";
 labelloc="b";
 style="rounded,filled";
 fillcolor="wheat2";
 label="(Session)";
+tooltip="type: blitter.com/go/hkexsh.Session";
+penwidth="0.5";
+fontsize="15";
         
         "(blitter.com/go/hkexsh.Session).Op" [ fillcolor="moccasin" label="Op" penwidth="1.5" ]
-        "(blitter.com/go/hkexsh.Session).Who" [ label="Who" penwidth="1.5" fillcolor="moccasin" ]
-        "(blitter.com/go/hkexsh.Session).ConnHost" [ fillcolor="moccasin" label="ConnHost" penwidth="1.5" ]
-        "(blitter.com/go/hkexsh.Session).Cmd" [ fillcolor="moccasin" label="Cmd" penwidth="1.5" ]
-        "(blitter.com/go/hkexsh.Session).AuthCookie" [ penwidth="1.5" fillcolor="moccasin" label="AuthCookie" ]
-        "(blitter.com/go/hkexsh.Session).TermType" [ penwidth="1.5" fillcolor="moccasin" label="TermType" ]
+        "(blitter.com/go/hkexsh.Session).Who" [ fillcolor="moccasin" label="Who" penwidth="1.5" ]
+        "(blitter.com/go/hkexsh.Session).ConnHost" [ label="ConnHost" penwidth="1.5" fillcolor="moccasin" ]
+        "(blitter.com/go/hkexsh.Session).Cmd" [ label="Cmd" penwidth="1.5" fillcolor="moccasin" ]
+        "(blitter.com/go/hkexsh.Session).AuthCookie" [ fillcolor="moccasin" label="AuthCookie" penwidth="1.5" ]
+        "(blitter.com/go/hkexsh.Session).TermType" [ fillcolor="moccasin" label="TermType" penwidth="1.5" ]
         
     }
 
     }
 
         subgraph "cluster_blitter.com/go/hkexsh/hkexnet" {
-        URL="/?f=blitter.com/go/hkexsh/hkexnet";
+        fillcolor="lightyellow";
+fontname="bold";
+tooltip="package: blitter.com/go/hkexsh/hkexnet";
+URL="/?f=blitter.com/go/hkexsh/hkexnet";
+penwidth="0.8";
 fontsize="16";
 style="filled";
-fillcolor="lightyellow";
 rank="sink";
 label="[hkexnet]";
-penwidth="0.8";
-fontname="bold";
-tooltip="package: blitter.com/go/hkexsh/hkexnet";
         
-        "blitter.com/go/hkexsh/hkexnet.Init" [ penwidth="1.5" fillcolor="moccasin" label="Init" ]
+        "blitter.com/go/hkexsh/hkexnet.Init" [ fillcolor="moccasin" label="Init" penwidth="1.5" ]
         "blitter.com/go/hkexsh/hkexnet.Listen" [ fillcolor="moccasin" label="Listen" penwidth="1.5" ]
         
         subgraph "cluster_*blitter.com/go/hkexsh/hkexnet.Conn" {
-        fontsize="15";
-fontcolor="#222222";
-labelloc="b";
-style="rounded,filled";
-fillcolor="wheat2";
+        fillcolor="wheat2";
 label="(*Conn)";
 tooltip="type: *blitter.com/go/hkexsh/hkexnet.Conn";
 penwidth="0.5";
+fontsize="15";
+fontcolor="#222222";
+labelloc="b";
+style="rounded,filled";
         
-        "(*blitter.com/go/hkexsh/hkexnet.Conn).EnableChaff" [ label="EnableChaff" penwidth="1.5" fillcolor="moccasin" ]
-        "(*blitter.com/go/hkexsh/hkexnet.Conn).DisableChaff" [ fillcolor="moccasin" label="DisableChaff" penwidth="1.5" ]
-        "(*blitter.com/go/hkexsh/hkexnet.Conn).ShutdownChaff" [ fillcolor="moccasin" label="ShutdownChaff" penwidth="1.5" ]
-        "(*blitter.com/go/hkexsh/hkexnet.Conn).SetStatus" [ fillcolor="moccasin" label="SetStatus" penwidth="1.5" ]
-        "(*blitter.com/go/hkexsh/hkexnet.Conn).SetupChaff" [ fillcolor="moccasin" label="SetupChaff" penwidth="1.5" ]
+        "(*blitter.com/go/hkexsh/hkexnet.Conn).SetupChaff" [ label="SetupChaff" penwidth="1.5" fillcolor="moccasin" ]
         "(*blitter.com/go/hkexsh/hkexnet.Conn).Close" [ fillcolor="moccasin" label="Close" penwidth="1.5" ]
         "(*blitter.com/go/hkexsh/hkexnet.Conn).RemoteAddr" [ fillcolor="moccasin" label="RemoteAddr" penwidth="1.5" ]
-        "(*blitter.com/go/hkexsh/hkexnet.Conn).WritePacket" [ penwidth="1.5" fillcolor="moccasin" label="WritePacket" ]
+        "(*blitter.com/go/hkexsh/hkexnet.Conn).EnableChaff" [ fillcolor="moccasin" label="EnableChaff" penwidth="1.5" ]
+        "(*blitter.com/go/hkexsh/hkexnet.Conn).DisableChaff" [ penwidth="1.5" fillcolor="moccasin" label="DisableChaff" ]
+        "(*blitter.com/go/hkexsh/hkexnet.Conn).ShutdownChaff" [ fillcolor="moccasin" label="ShutdownChaff" penwidth="1.5" ]
+        "(*blitter.com/go/hkexsh/hkexnet.Conn).SetStatus" [ fillcolor="moccasin" label="SetStatus" penwidth="1.5" ]
+        "(*blitter.com/go/hkexsh/hkexnet.Conn).WritePacket" [ fillcolor="moccasin" label="WritePacket" penwidth="1.5" ]
         
     }
 
         subgraph "cluster_*blitter.com/go/hkexsh/hkexnet.HKExListener" {
-        tooltip="type: *blitter.com/go/hkexsh/hkexnet.HKExListener";
-penwidth="0.5";
-fontsize="15";
-fontcolor="#222222";
+        fontcolor="#222222";
 labelloc="b";
 style="rounded,filled";
 fillcolor="wheat2";
 label="(*HKExListener)";
+tooltip="type: *blitter.com/go/hkexsh/hkexnet.HKExListener";
+penwidth="0.5";
+fontsize="15";
         
-        "(*blitter.com/go/hkexsh/hkexnet.HKExListener).Accept" [ label="Accept" penwidth="1.5" fillcolor="moccasin" ]
+        "(*blitter.com/go/hkexsh/hkexnet.HKExListener).Accept" [ fillcolor="moccasin" label="Accept" penwidth="1.5" ]
         
     }
 
@@ -165,7 +165,7 @@ tooltip="type: blitter.com/go/hkexsh/hkexnet.Conn";
 penwidth="0.5";
 fontsize="15";
         
-        "(blitter.com/go/hkexsh/hkexnet.Conn).Write" [ fillcolor="moccasin" label="Write" penwidth="1.5" ]
+        "(blitter.com/go/hkexsh/hkexnet.Conn).Write" [ penwidth="1.5" fillcolor="moccasin" label="Write" ]
         
     }
 
@@ -179,22 +179,22 @@ fontcolor="#222222";
 labelloc="b";
 style="rounded,filled";
         
-        "(blitter.com/go/hkexsh/hkexnet.HKExListener).Close" [ label="Close" penwidth="1.5" fillcolor="moccasin" ]
+        "(blitter.com/go/hkexsh/hkexnet.HKExListener).Close" [ fillcolor="moccasin" label="Close" penwidth="1.5" ]
         
     }
 
     }
 
         subgraph "cluster_blitter.com/go/hkexsh/logger" {
-        tooltip="package: blitter.com/go/hkexsh/logger";
-penwidth="0.8";
-fontsize="16";
-fontname="bold";
+        fillcolor="lightyellow";
 label="[logger]";
-URL="/?f=blitter.com/go/hkexsh/logger";
+penwidth="0.8";
 style="filled";
-fillcolor="lightyellow";
 rank="sink";
+URL="/?f=blitter.com/go/hkexsh/logger";
+tooltip="package: blitter.com/go/hkexsh/logger";
+fontsize="16";
+fontname="bold";
         
         "blitter.com/go/hkexsh/logger.LogNotice" [ fillcolor="moccasin" label="LogNotice" penwidth="1.5" ]
         "blitter.com/go/hkexsh/logger.New" [ fillcolor="moccasin" label="New" penwidth="1.5" ]
@@ -203,42 +203,29 @@ rank="sink";
     }
 
         subgraph "cluster_github.com/kr/pty" {
-        rank="sink";
+        fillcolor="lightyellow";
+fontname="bold";
+rank="sink";
 label="[pty]";
-tooltip="package: github.com/kr/pty";
+URL="/?f=github.com/kr/pty";
 penwidth="0.8";
-fillcolor="lightyellow";
-fontname="bold";
 fontsize="16";
 style="filled";
-URL="/?f=github.com/kr/pty";
+tooltip="package: github.com/kr/pty";
         
         "github.com/kr/pty.Start" [ fillcolor="moccasin" label="Start" penwidth="1.5" ]
-        "github.com/kr/pty.Setsize" [ penwidth="1.5" fillcolor="moccasin" label="Setsize" ]
+        "github.com/kr/pty.Setsize" [ fillcolor="moccasin" label="Setsize" penwidth="1.5" ]
         
     }
 
     }
 
-    "blitter.com/go/hkexsh/hkexshd.runServerToClientCopyAs" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).EnableChaff" [ color="saddlebrown" ]
-    "blitter.com/go/hkexsh/hkexshd.runServerToClientCopyAs" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).DisableChaff" [ color="saddlebrown" arrowhead="normalnoneodiamond" ]
-    "blitter.com/go/hkexsh/hkexshd.runServerToClientCopyAs" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).ShutdownChaff" [ arrowhead="normalnoneodiamond" color="saddlebrown" ]
     "blitter.com/go/hkexsh/hkexshd.main$1" -> "blitter.com/go/hkexsh/logger.LogNotice" [ color="saddlebrown" ]
-    "blitter.com/go/hkexsh/hkexshd.runShellAs" -> "github.com/kr/pty.Start" [ color="saddlebrown" ]
-    "blitter.com/go/hkexsh/hkexshd.runShellAs" -> "blitter.com/go/hkexsh/hkexshd.runShellAs$1" [ arrowhead="normalnoneodiamond" ]
-    "blitter.com/go/hkexsh/hkexshd.runShellAs$2" -> "github.com/kr/pty.Setsize" [ color="saddlebrown" ]
-    "blitter.com/go/hkexsh/hkexshd.runShellAs" -> "blitter.com/go/hkexsh/hkexshd.runShellAs$2" [ arrowhead="normalnoneodot" ]
-    "blitter.com/go/hkexsh/hkexshd.runShellAs" -> "blitter.com/go/hkexsh/hkexshd.runShellAs$3" [ arrowhead="normalnoneodot" ]
-    "blitter.com/go/hkexsh/hkexshd.runShellAs" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).EnableChaff" [ color="saddlebrown" ]
-    "blitter.com/go/hkexsh/hkexshd.runShellAs" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).DisableChaff" [ arrowhead="normalnoneodiamond" color="saddlebrown" ]
-    "blitter.com/go/hkexsh/hkexshd.runShellAs" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).ShutdownChaff" [ arrowhead="normalnoneodiamond" color="saddlebrown" ]
-    "blitter.com/go/hkexsh/hkexshd.runShellAs" -> "blitter.com/go/hkexsh/hkexshd.runShellAs$4" [ arrowhead="normalnoneodot" ]
-    "blitter.com/go/hkexsh/hkexshd.runShellAs" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).SetStatus" [ color="saddlebrown" ]
     "blitter.com/go/hkexsh/hkexshd.main" -> "blitter.com/go/hkexsh/logger.New" [ color="saddlebrown" ]
     "blitter.com/go/hkexsh/hkexshd.main" -> "blitter.com/go/hkexsh/hkexnet.Init" [ color="saddlebrown" ]
     "blitter.com/go/hkexsh/hkexshd.main" -> "blitter.com/go/hkexsh/hkexshd.main$1" [ arrowhead="normalnoneodot" ]
     "blitter.com/go/hkexsh/hkexshd.main" -> "blitter.com/go/hkexsh/hkexnet.Listen" [ color="saddlebrown" ]
-    "blitter.com/go/hkexsh/hkexshd.main" -> "(blitter.com/go/hkexsh/hkexnet.HKExListener).Close" [ color="saddlebrown" arrowhead="normalnoneodiamond" ]
+    "blitter.com/go/hkexsh/hkexshd.main" -> "(blitter.com/go/hkexsh/hkexnet.HKExListener).Close" [ arrowhead="normalnoneodiamond" color="saddlebrown" ]
     "blitter.com/go/hkexsh/hkexshd.main" -> "(*blitter.com/go/hkexsh/hkexnet.HKExListener).Accept" [ color="saddlebrown" ]
     "blitter.com/go/hkexsh/hkexshd.main" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).SetupChaff" [ color="saddlebrown" ]
     "blitter.com/go/hkexsh/hkexshd.main$2" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).Close" [ arrowhead="normalnoneodiamond" color="saddlebrown" ]
@@ -262,6 +249,16 @@ URL="/?f=github.com/kr/pty";
     "blitter.com/go/hkexsh/hkexshd.main$2" -> "blitter.com/go/goutmp.GetHost" [ color="saddlebrown" ]
     "blitter.com/go/hkexsh/hkexshd.main$2" -> "blitter.com/go/hkexsh/hkexshd.GenAuthToken" [  ]
     "blitter.com/go/hkexsh/hkexshd.main$2" -> "(blitter.com/go/hkexsh.Session).TermType" [ color="saddlebrown" ]
+    "blitter.com/go/hkexsh/hkexshd.runShellAs" -> "github.com/kr/pty.Start" [ color="saddlebrown" ]
+    "blitter.com/go/hkexsh/hkexshd.runShellAs" -> "blitter.com/go/hkexsh/hkexshd.runShellAs$1" [ arrowhead="normalnoneodiamond" ]
+    "blitter.com/go/hkexsh/hkexshd.runShellAs$2" -> "github.com/kr/pty.Setsize" [ color="saddlebrown" ]
+    "blitter.com/go/hkexsh/hkexshd.runShellAs" -> "blitter.com/go/hkexsh/hkexshd.runShellAs$2" [ arrowhead="normalnoneodot" ]
+    "blitter.com/go/hkexsh/hkexshd.runShellAs" -> "blitter.com/go/hkexsh/hkexshd.runShellAs$3" [ arrowhead="normalnoneodot" ]
+    "blitter.com/go/hkexsh/hkexshd.runShellAs" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).EnableChaff" [ color="saddlebrown" ]
+    "blitter.com/go/hkexsh/hkexshd.runShellAs" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).DisableChaff" [ color="saddlebrown" arrowhead="normalnoneodiamond" ]
+    "blitter.com/go/hkexsh/hkexshd.runShellAs" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).ShutdownChaff" [ arrowhead="normalnoneodiamond" color="saddlebrown" ]
+    "blitter.com/go/hkexsh/hkexshd.runShellAs" -> "blitter.com/go/hkexsh/hkexshd.runShellAs$4" [ arrowhead="normalnoneodot" ]
+    "blitter.com/go/hkexsh/hkexshd.runShellAs" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).SetStatus" [ color="saddlebrown" ]
     "blitter.com/go/hkexsh/hkexshd.main$2" -> "blitter.com/go/hkexsh/hkexshd.runShellAs" [  ]
     "blitter.com/go/hkexsh/hkexshd.main$2" -> "blitter.com/go/hkexsh/logger.LogErr" [ color="saddlebrown" ]
     "blitter.com/go/hkexsh/hkexshd.main$2" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).SetStatus" [ color="saddlebrown" ]
@@ -274,6 +271,9 @@ URL="/?f=github.com/kr/pty";
     "blitter.com/go/hkexsh/hkexshd.runClientToServerCopyAs" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).ShutdownChaff" [ arrowhead="normalnoneodiamond" color="saddlebrown" ]
     "blitter.com/go/hkexsh/hkexshd.main$2" -> "blitter.com/go/hkexsh/hkexshd.runClientToServerCopyAs" [  ]
     "blitter.com/go/hkexsh/hkexshd.main$2" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).WritePacket" [ color="saddlebrown" ]
+    "blitter.com/go/hkexsh/hkexshd.runServerToClientCopyAs" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).EnableChaff" [ color="saddlebrown" ]
+    "blitter.com/go/hkexsh/hkexshd.runServerToClientCopyAs" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).DisableChaff" [ arrowhead="normalnoneodiamond" color="saddlebrown" ]
+    "blitter.com/go/hkexsh/hkexshd.runServerToClientCopyAs" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).ShutdownChaff" [ arrowhead="normalnoneodiamond" color="saddlebrown" ]
     "blitter.com/go/hkexsh/hkexshd.main$2" -> "blitter.com/go/hkexsh/hkexshd.runServerToClientCopyAs" [  ]
     "blitter.com/go/hkexsh/hkexshd.main" -> "blitter.com/go/hkexsh/hkexshd.main$2" [ arrowhead="normalnoneodot" ]
 }

BIN
hkexshd/hkexshd-vis.gv.png


+ 428 - 428
hkexshd/hkexshd-vis.gv.svg

@@ -4,764 +4,764 @@
 <!-- Generated by graphviz version 2.40.1 (20161225.0304)
  -->
 <!-- Title: gocallvis Pages: 1 -->
-<svg width="915pt" height="1894pt"
- viewBox="0.00 0.00 915.32 1894.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(0 1894)">
+<svg width="915pt" height="1911pt"
+ viewBox="0.00 0.00 915.32 1911.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(0 1911)">
 <title>gocallvis</title>
-<polygon fill="#d3d3d3" stroke="transparent" points="0,0 0,-1894 915.3169,-1894 915.3169,0 0,0"/>
+<polygon fill="#d3d3d3" stroke="transparent" points="0,0 0,-1911 915.3169,-1911 915.3169,0 0,0"/>
 <text text-anchor="middle" x="106" y="-7.8" font-family="Arial" font-size="14.00" fill="#000000">blitter.com/go/hkexsh/hkexshd</text>
 <g id="clust1" class="cluster">
 <title>cluster_focus</title>
-<polygon fill="#e6ecfa" stroke="#000000" stroke-width=".5" points="8,-31 8,-1886 907.3169,-1886 907.3169,-31 8,-31"/>
-<text text-anchor="middle" x="457.6585" y="-1867.6" font-family="Arial" font-size="18.00" fill="#000000">main</text>
+<polygon fill="#e6ecfa" stroke="#000000" stroke-width=".5" points="8,-31 8,-1903 907.3169,-1903 907.3169,-31 8,-31"/>
+<text text-anchor="middle" x="457.6585" y="-1884.6" font-family="Arial" font-size="18.00" fill="#000000">main</text>
 </g>
 <g id="clust2" class="cluster">
 <title>cluster_blitter.com/go/goutmp</title>
 <g id="a_clust2"><a xlink:href="/?f=blitter.com/go/goutmp" xlink:title="package: blitter.com/go/goutmp">
-<polygon fill="#ffffe0" stroke="#000000" stroke-width=".8" points="579.2096,-1589 579.2096,-1850 739.3146,-1850 739.3146,-1589 579.2096,-1589"/>
-<text text-anchor="middle" x="659.2621" y="-1833.2" font-family="bold" font-size="16.00" fill="#000000">[goutmp]</text>
+<polygon fill="#ffffe0" stroke="#000000" stroke-width=".8" points="579.2096,-429 579.2096,-690 739.3146,-690 739.3146,-429 579.2096,-429"/>
+<text text-anchor="middle" x="659.2621" y="-673.2" font-family="bold" font-size="16.00" fill="#000000">[goutmp]</text>
 </a>
 </g>
 </g>
 <g id="clust3" class="cluster">
 <title>cluster_blitter.com/go/hkexsh</title>
 <g id="a_clust3"><a xlink:href="/?f=blitter.com/go/hkexsh" xlink:title="package: blitter.com/go/hkexsh">
-<polygon fill="#ffffe0" stroke="#000000" stroke-width=".8" points="301.5032,-83 301.5032,-1072 477.0088,-1072 477.0088,-83 301.5032,-83"/>
-<text text-anchor="middle" x="389.256" y="-1055.2" font-family="bold" font-size="16.00" fill="#000000">[hkexsh]</text>
+<polygon fill="#ffffe0" stroke="#000000" stroke-width=".8" points="301.5032,-39 301.5032,-1028 477.0088,-1028 477.0088,-39 301.5032,-39"/>
+<text text-anchor="middle" x="389.256" y="-1011.2" font-family="bold" font-size="16.00" fill="#000000">[hkexsh]</text>
 </a>
 </g>
 </g>
 <g id="clust4" class="cluster">
 <title>cluster_*blitter.com/go/hkexsh.Session</title>
 <g id="a_clust4"><a xlink:href="/?f=blitter.com/go/hkexsh" xlink:title="type: *blitter.com/go/hkexsh.Session">
-<path fill="#eed8ae" stroke="#000000" stroke-width=".5" d="M322.8536,-91C322.8536,-91 455.6585,-91 455.6585,-91 461.6585,-91 467.6585,-97 467.6585,-103 467.6585,-103 467.6585,-522 467.6585,-522 467.6585,-528 461.6585,-534 455.6585,-534 455.6585,-534 322.8536,-534 322.8536,-534 316.8536,-534 310.8536,-528 310.8536,-522 310.8536,-522 310.8536,-103 310.8536,-103 310.8536,-97 316.8536,-91 322.8536,-91"/>
-<text text-anchor="middle" x="389.256" y="-100" font-family="bold" font-size="15.00" fill="#222222">(*Session)</text>
+<path fill="#eed8ae" stroke="#000000" stroke-width=".5" d="M322.8536,-47C322.8536,-47 455.6585,-47 455.6585,-47 461.6585,-47 467.6585,-53 467.6585,-59 467.6585,-59 467.6585,-478 467.6585,-478 467.6585,-484 461.6585,-490 455.6585,-490 455.6585,-490 322.8536,-490 322.8536,-490 316.8536,-490 310.8536,-484 310.8536,-478 310.8536,-478 310.8536,-59 310.8536,-59 310.8536,-53 316.8536,-47 322.8536,-47"/>
+<text text-anchor="middle" x="389.256" y="-56" font-family="bold" font-size="15.00" fill="#222222">(*Session)</text>
 </a>
 </g>
 </g>
 <g id="clust5" class="cluster">
 <title>cluster_blitter.com/go/hkexsh.Session</title>
 <g id="a_clust5"><a xlink:href="/?f=blitter.com/go/hkexsh" xlink:title="type: blitter.com/go/hkexsh.Session">
-<path fill="#eed8ae" stroke="#000000" stroke-width=".5" d="M343.7543,-542C343.7543,-542 434.7577,-542 434.7577,-542 440.7577,-542 446.7577,-548 446.7577,-554 446.7577,-554 446.7577,-912 446.7577,-912 446.7577,-918 440.7577,-924 434.7577,-924 434.7577,-924 343.7543,-924 343.7543,-924 337.7543,-924 331.7543,-918 331.7543,-912 331.7543,-912 331.7543,-554 331.7543,-554 331.7543,-548 337.7543,-542 343.7543,-542"/>
-<text text-anchor="middle" x="389.256" y="-551" font-family="bold" font-size="15.00" fill="#222222">(Session)</text>
+<path fill="#eed8ae" stroke="#000000" stroke-width=".5" d="M343.7543,-498C343.7543,-498 434.7577,-498 434.7577,-498 440.7577,-498 446.7577,-504 446.7577,-510 446.7577,-510 446.7577,-868 446.7577,-868 446.7577,-874 440.7577,-880 434.7577,-880 434.7577,-880 343.7543,-880 343.7543,-880 337.7543,-880 331.7543,-874 331.7543,-868 331.7543,-868 331.7543,-510 331.7543,-510 331.7543,-504 337.7543,-498 343.7543,-498"/>
+<text text-anchor="middle" x="389.256" y="-507" font-family="bold" font-size="15.00" fill="#222222">(Session)</text>
 </a>
 </g>
 </g>
 <g id="clust6" class="cluster">
 <title>cluster_blitter.com/go/hkexsh/hkexnet</title>
 <g id="a_clust6"><a xlink:href="/?f=blitter.com/go/hkexsh/hkexnet" xlink:title="package: blitter.com/go/hkexsh/hkexnet">
-<polygon fill="#ffffe0" stroke="#000000" stroke-width=".8" points="573.911,-666 573.911,-1581 744.6132,-1581 744.6132,-666 573.911,-666"/>
-<text text-anchor="middle" x="659.2621" y="-1564.2" font-family="bold" font-size="16.00" fill="#000000">[hkexnet]</text>
+<polygon fill="#ffffe0" stroke="#000000" stroke-width=".8" points="573.911,-698 573.911,-1613 744.6132,-1613 744.6132,-698 573.911,-698"/>
+<text text-anchor="middle" x="659.2621" y="-1596.2" font-family="bold" font-size="16.00" fill="#000000">[hkexnet]</text>
 </a>
 </g>
 </g>
 <g id="clust7" class="cluster">
 <title>cluster_*blitter.com/go/hkexsh/hkexnet.Conn</title>
 <g id="a_clust7"><a xlink:href="/?f=blitter.com/go/hkexsh/hkexnet" xlink:title="type: *blitter.com/go/hkexsh/hkexnet.Conn">
-<path fill="#eed8ae" stroke="#000000" stroke-width=".5" d="M598.9099,-674C598.9099,-674 719.6144,-674 719.6144,-674 725.6144,-674 731.6144,-680 731.6144,-686 731.6144,-686 731.6144,-1166 731.6144,-1166 731.6144,-1172 725.6144,-1178 719.6144,-1178 719.6144,-1178 598.9099,-1178 598.9099,-1178 592.9099,-1178 586.9099,-1172 586.9099,-1166 586.9099,-1166 586.9099,-686 586.9099,-686 586.9099,-680 592.9099,-674 598.9099,-674"/>
-<text text-anchor="middle" x="659.2621" y="-683" font-family="bold" font-size="15.00" fill="#222222">(*Conn)</text>
+<path fill="#eed8ae" stroke="#000000" stroke-width=".5" d="M598.9099,-791C598.9099,-791 719.6144,-791 719.6144,-791 725.6144,-791 731.6144,-797 731.6144,-803 731.6144,-803 731.6144,-1283 731.6144,-1283 731.6144,-1289 725.6144,-1295 719.6144,-1295 719.6144,-1295 598.9099,-1295 598.9099,-1295 592.9099,-1295 586.9099,-1289 586.9099,-1283 586.9099,-1283 586.9099,-803 586.9099,-803 586.9099,-797 592.9099,-791 598.9099,-791"/>
+<text text-anchor="middle" x="659.2621" y="-800" font-family="bold" font-size="15.00" fill="#222222">(*Conn)</text>
 </a>
 </g>
 </g>
 <g id="clust8" class="cluster">
 <title>cluster_*blitter.com/go/hkexsh/hkexnet.HKExListener</title>
 <g id="a_clust8"><a xlink:href="/?f=blitter.com/go/hkexsh/hkexnet" xlink:title="type: *blitter.com/go/hkexsh/hkexnet.HKExListener">
-<path fill="#eed8ae" stroke="#000000" stroke-width=".5" d="M593.911,-1385C593.911,-1385 724.6132,-1385 724.6132,-1385 730.6132,-1385 736.6132,-1391 736.6132,-1397 736.6132,-1397 736.6132,-1450 736.6132,-1450 736.6132,-1456 730.6132,-1462 724.6132,-1462 724.6132,-1462 593.911,-1462 593.911,-1462 587.911,-1462 581.911,-1456 581.911,-1450 581.911,-1450 581.911,-1397 581.911,-1397 581.911,-1391 587.911,-1385 593.911,-1385"/>
-<text text-anchor="middle" x="659.2621" y="-1394" font-family="bold" font-size="15.00" fill="#222222">(*HKExListener)</text>
+<path fill="#eed8ae" stroke="#000000" stroke-width=".5" d="M593.911,-1417C593.911,-1417 724.6132,-1417 724.6132,-1417 730.6132,-1417 736.6132,-1423 736.6132,-1429 736.6132,-1429 736.6132,-1482 736.6132,-1482 736.6132,-1488 730.6132,-1494 724.6132,-1494 724.6132,-1494 593.911,-1494 593.911,-1494 587.911,-1494 581.911,-1488 581.911,-1482 581.911,-1482 581.911,-1429 581.911,-1429 581.911,-1423 587.911,-1417 593.911,-1417"/>
+<text text-anchor="middle" x="659.2621" y="-1426" font-family="bold" font-size="15.00" fill="#222222">(*HKExListener)</text>
 </a>
 </g>
 </g>
 <g id="clust9" class="cluster">
 <title>cluster_blitter.com/go/hkexsh/hkexnet.Conn</title>
 <g id="a_clust9"><a xlink:href="/?f=blitter.com/go/hkexsh/hkexnet" xlink:title="type: blitter.com/go/hkexsh/hkexnet.Conn">
-<path fill="#eed8ae" stroke="#000000" stroke-width=".5" d="M634.2621,-1186C634.2621,-1186 684.2621,-1186 684.2621,-1186 690.2621,-1186 696.2621,-1192 696.2621,-1198 696.2621,-1198 696.2621,-1251 696.2621,-1251 696.2621,-1257 690.2621,-1263 684.2621,-1263 684.2621,-1263 634.2621,-1263 634.2621,-1263 628.2621,-1263 622.2621,-1257 622.2621,-1251 622.2621,-1251 622.2621,-1198 622.2621,-1198 622.2621,-1192 628.2621,-1186 634.2621,-1186"/>
-<text text-anchor="middle" x="659.2621" y="-1195" font-family="bold" font-size="15.00" fill="#222222">(Conn)</text>
+<path fill="#eed8ae" stroke="#000000" stroke-width=".5" d="M634.2621,-706C634.2621,-706 684.2621,-706 684.2621,-706 690.2621,-706 696.2621,-712 696.2621,-718 696.2621,-718 696.2621,-771 696.2621,-771 696.2621,-777 690.2621,-783 684.2621,-783 684.2621,-783 634.2621,-783 634.2621,-783 628.2621,-783 622.2621,-777 622.2621,-771 622.2621,-771 622.2621,-718 622.2621,-718 622.2621,-712 628.2621,-706 634.2621,-706"/>
+<text text-anchor="middle" x="659.2621" y="-715" font-family="bold" font-size="15.00" fill="#222222">(Conn)</text>
 </a>
 </g>
 </g>
 <g id="clust10" class="cluster">
 <title>cluster_blitter.com/go/hkexsh/hkexnet.HKExListener</title>
 <g id="a_clust10"><a xlink:href="/?f=blitter.com/go/hkexsh/hkexnet" xlink:title="type: blitter.com/go/hkexsh/hkexnet.HKExListener">
-<path fill="#eed8ae" stroke="#000000" stroke-width=".5" d="M597.2621,-1470C597.2621,-1470 721.2621,-1470 721.2621,-1470 727.2621,-1470 733.2621,-1476 733.2621,-1482 733.2621,-1482 733.2621,-1535 733.2621,-1535 733.2621,-1541 727.2621,-1547 721.2621,-1547 721.2621,-1547 597.2621,-1547 597.2621,-1547 591.2621,-1547 585.2621,-1541 585.2621,-1535 585.2621,-1535 585.2621,-1482 585.2621,-1482 585.2621,-1476 591.2621,-1470 597.2621,-1470"/>
-<text text-anchor="middle" x="659.2621" y="-1479" font-family="bold" font-size="15.00" fill="#222222">(HKExListener)</text>
+<path fill="#eed8ae" stroke="#000000" stroke-width=".5" d="M597.2621,-1502C597.2621,-1502 721.2621,-1502 721.2621,-1502 727.2621,-1502 733.2621,-1508 733.2621,-1514 733.2621,-1514 733.2621,-1567 733.2621,-1567 733.2621,-1573 727.2621,-1579 721.2621,-1579 721.2621,-1579 597.2621,-1579 597.2621,-1579 591.2621,-1579 585.2621,-1573 585.2621,-1567 585.2621,-1567 585.2621,-1514 585.2621,-1514 585.2621,-1508 591.2621,-1502 597.2621,-1502"/>
+<text text-anchor="middle" x="659.2621" y="-1511" font-family="bold" font-size="15.00" fill="#222222">(HKExListener)</text>
 </a>
 </g>
 </g>
 <g id="clust11" class="cluster">
 <title>cluster_blitter.com/go/hkexsh/logger</title>
 <g id="a_clust11"><a xlink:href="/?f=blitter.com/go/hkexsh/logger" xlink:title="package: blitter.com/go/hkexsh/logger">
-<polygon fill="#ffffe0" stroke="#000000" stroke-width=".8" points="337.2545,-1505 337.2545,-1705 441.2575,-1705 441.2575,-1505 337.2545,-1505"/>
-<text text-anchor="middle" x="389.256" y="-1688.2" font-family="bold" font-size="16.00" fill="#000000">[logger]</text>
+<polygon fill="#ffffe0" stroke="#000000" stroke-width=".8" points="337.2545,-1488 337.2545,-1688 441.2575,-1688 441.2575,-1488 337.2545,-1488"/>
+<text text-anchor="middle" x="389.256" y="-1671.2" font-family="bold" font-size="16.00" fill="#000000">[logger]</text>
 </a>
 </g>
 </g>
 <g id="clust12" class="cluster">
 <title>cluster_github.com/kr/pty</title>
 <g id="a_clust12"><a xlink:href="/?f=github.com/kr/pty" xlink:title="package: github.com/kr/pty">
-<polygon fill="#ffffe0" stroke="#000000" stroke-width=".8" points="817.3146,-158 817.3146,-297 899.3169,-297 899.3169,-158 817.3146,-158"/>
-<text text-anchor="middle" x="858.3158" y="-280.2" font-family="bold" font-size="16.00" fill="#000000">[pty]</text>
+<polygon fill="#ffffe0" stroke="#000000" stroke-width=".8" points="817.3146,-1701 817.3146,-1840 899.3169,-1840 899.3169,-1701 817.3146,-1701"/>
+<text text-anchor="middle" x="858.3158" y="-1823.2" font-family="bold" font-size="16.00" fill="#000000">[pty]</text>
 </a>
 </g>
 </g>
-<!-- blitter.com/go/hkexsh/hkexshd.runServerToClientCopyAs -->
-<g id="node1" class="node">
-<title>blitter.com/go/hkexsh/hkexshd.runServerToClientCopyAs</title>
-<ellipse fill="#add8e6" stroke="#000000" stroke-width=".5" cx="389.256" cy="-1355" rx="103.9072" ry="18"/>
-<text text-anchor="middle" x="389.256" y="-1351.3" font-family="Verdana" font-size="14.00" fill="#000000">runServerToClientCopyAs</text>
-</g>
-<!-- (*blitter.com/go/hkexsh/hkexnet.Conn).EnableChaff -->
-<g id="node34" class="node">
-<title>(*blitter.com/go/hkexsh/hkexnet.Conn).EnableChaff</title>
-<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="659.2621" cy="-1091" rx="52.0048" ry="18"/>
-<text text-anchor="middle" x="659.2621" y="-1087.3" font-family="Verdana" font-size="14.00" fill="#000000">EnableChaff</text>
-</g>
-<!-- blitter.com/go/hkexsh/hkexshd.runServerToClientCopyAs&#45;&gt;(*blitter.com/go/hkexsh/hkexnet.Conn).EnableChaff -->
-<g id="edge1" class="edge">
-<title>blitter.com/go/hkexsh/hkexshd.runServerToClientCopyAs&#45;&gt;(*blitter.com/go/hkexsh/hkexnet.Conn).EnableChaff</title>
-<path fill="none" stroke="#8b4513" d="M493.1087,-1353.6495C506.8785,-1349.4491 519.8042,-1342.9037 530.2096,-1333 599.5796,-1266.9748 511.2456,-1194.4194 573.911,-1122 581.4907,-1113.2405 591.7505,-1106.9556 602.5276,-1102.4462"/>
-<polygon fill="#8b4513" stroke="#8b4513" points="603.9068,-1105.6681 612.0771,-1098.923 601.4838,-1099.1008 603.9068,-1105.6681"/>
-</g>
-<!-- (*blitter.com/go/hkexsh/hkexnet.Conn).DisableChaff -->
-<g id="node35" class="node">
-<title>(*blitter.com/go/hkexsh/hkexnet.Conn).DisableChaff</title>
-<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="659.2621" cy="-969" rx="54.4038" ry="18"/>
-<text text-anchor="middle" x="659.2621" y="-965.3" font-family="Verdana" font-size="14.00" fill="#000000">DisableChaff</text>
-</g>
-<!-- blitter.com/go/hkexsh/hkexshd.runServerToClientCopyAs&#45;&gt;(*blitter.com/go/hkexsh/hkexnet.Conn).DisableChaff -->
-<g id="edge2" class="edge">
-<title>blitter.com/go/hkexsh/hkexshd.runServerToClientCopyAs&#45;&gt;(*blitter.com/go/hkexsh/hkexnet.Conn).DisableChaff</title>
-<path fill="none" stroke="#8b4513" d="M466.318,-1342.8922C476.3459,-1338.5776 485.7171,-1332.7794 493.2096,-1325 596.4543,-1217.803 474.3397,-1110.6174 573.911,-1000 577.6256,-995.8733 581.9335,-992.2954 586.6012,-989.1933"/>
-<polygon fill="#8b4513" stroke="#8b4513" points="603.4751,-985.0484 611.0044,-977.5945 600.4701,-978.7262 603.4751,-985.0484"/>
-<polyline fill="none" stroke="#8b4513" points="601.9726,-981.8873 597.4568,-984.0337 "/>
-<polygon fill="none" stroke="#8b4513" points="586.6187,-989.1851 590.3206,-982.9967 597.4568,-984.0337 593.7548,-990.2221 586.6187,-989.1851"/>
-</g>
-<!-- (*blitter.com/go/hkexsh/hkexnet.Conn).ShutdownChaff -->
-<g id="node36" class="node">
-<title>(*blitter.com/go/hkexsh/hkexnet.Conn).ShutdownChaff</title>
-<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="659.2621" cy="-1030" rx="64.2048" ry="18"/>
-<text text-anchor="middle" x="659.2621" y="-1026.3" font-family="Verdana" font-size="14.00" fill="#000000">ShutdownChaff</text>
-</g>
-<!-- blitter.com/go/hkexsh/hkexshd.runServerToClientCopyAs&#45;&gt;(*blitter.com/go/hkexsh/hkexnet.Conn).ShutdownChaff -->
-<g id="edge3" class="edge">
-<title>blitter.com/go/hkexsh/hkexshd.runServerToClientCopyAs&#45;&gt;(*blitter.com/go/hkexsh/hkexnet.Conn).ShutdownChaff</title>
-<path fill="none" stroke="#8b4513" d="M470.7057,-1343.7976C493.5848,-1336.5139 516.0568,-1324.5653 530.2096,-1305 594.7801,-1215.7358 502.9531,-1145.2758 573.911,-1061 576.1957,-1058.2866 578.738,-1055.8107 581.4751,-1053.5515"/>
-<polygon fill="#8b4513" stroke="#8b4513" points="598.2411,-1048.097 605.2251,-1040.1299 594.7971,-1042.0028 598.2411,-1048.097"/>
-<polyline fill="none" stroke="#8b4513" points="596.5191,-1045.0499 592.1661,-1047.5098 "/>
-<polygon fill="none" stroke="#8b4513" points="581.7189,-1053.4137 584.9745,-1046.9794 592.1661,-1047.5098 588.9105,-1053.9442 581.7189,-1053.4137"/>
-</g>
 <!-- blitter.com/go/hkexsh/hkexshd.main$1 -->
-<g id="node2" class="node">
+<g id="node1" class="node">
 <title>blitter.com/go/hkexsh/hkexshd.main$1</title>
-<ellipse fill="#add8e6" stroke="#000000" stroke-dasharray="1,5" cx="177.6512" cy="-1670" rx="34.8031" ry="18"/>
-<text text-anchor="middle" x="177.6512" y="-1666.3" font-family="Verdana" font-size="14.00" fill="#000000">main$1</text>
+<ellipse fill="#add8e6" stroke="#000000" stroke-dasharray="1,5" cx="177.6512" cy="-1609" rx="34.8031" ry="18"/>
+<text text-anchor="middle" x="177.6512" y="-1605.3" font-family="Verdana" font-size="14.00" fill="#000000">main$1</text>
 </g>
 <!-- blitter.com/go/hkexsh/logger.LogNotice -->
 <g id="node45" class="node">
 <title>blitter.com/go/hkexsh/logger.LogNotice</title>
-<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="389.256" cy="-1592" rx="44.0031" ry="18"/>
-<text text-anchor="middle" x="389.256" y="-1588.3" font-family="Verdana" font-size="14.00" fill="#000000">LogNotice</text>
+<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="389.256" cy="-1575" rx="44.0031" ry="18"/>
+<text text-anchor="middle" x="389.256" y="-1571.3" font-family="Verdana" font-size="14.00" fill="#000000">LogNotice</text>
 </g>
 <!-- blitter.com/go/hkexsh/hkexshd.main$1&#45;&gt;blitter.com/go/hkexsh/logger.LogNotice -->
-<g id="edge4" class="edge">
+<g id="edge1" class="edge">
 <title>blitter.com/go/hkexsh/hkexshd.main$1&#45;&gt;blitter.com/go/hkexsh/logger.LogNotice</title>
-<path fill="none" stroke="#8b4513" d="M203.3941,-1657.7029C224.9803,-1647.649 256.7666,-1633.4401 285.3024,-1623 303.8068,-1616.23 324.5492,-1609.8158 342.6096,-1604.5974"/>
-<polygon fill="#8b4513" stroke="#8b4513" points="343.6776,-1607.9325 352.336,-1601.8266 341.7597,-1601.2003 343.6776,-1607.9325"/>
-</g>
-<!-- blitter.com/go/hkexsh/hkexshd.runShellAs -->
-<g id="node3" class="node">
-<title>blitter.com/go/hkexsh/hkexshd.runShellAs</title>
-<ellipse fill="#add8e6" stroke="#000000" stroke-width=".5" cx="389.256" cy="-57" rx="46.4041" ry="18"/>
-<text text-anchor="middle" x="389.256" y="-53.3" font-family="Verdana" font-size="14.00" fill="#000000">runShellAs</text>
-</g>
-<!-- blitter.com/go/hkexsh/hkexshd.runShellAs$1 -->
-<g id="node4" class="node">
-<title>blitter.com/go/hkexsh/hkexshd.runShellAs$1</title>
-<ellipse fill="#add8e6" stroke="#000000" stroke-dasharray="1,5" cx="659.2621" cy="-206" rx="56.2041" ry="18"/>
-<text text-anchor="middle" x="659.2621" y="-202.3" font-family="Verdana" font-size="14.00" fill="#000000">runShellAs$1</text>
-</g>
-<!-- blitter.com/go/hkexsh/hkexshd.runShellAs&#45;&gt;blitter.com/go/hkexsh/hkexshd.runShellAs$1 -->
-<g id="edge6" class="edge">
-<title>blitter.com/go/hkexsh/hkexshd.runShellAs&#45;&gt;blitter.com/go/hkexsh/hkexshd.runShellAs$1</title>
-<path fill="none" stroke="#000000" d="M434.8691,-60.4007C454.7388,-63.9589 477.1136,-71.0384 493.2096,-85 523.8928,-111.6143 498.7145,-142.1705 529.2096,-169 543.02,-181.1503 560.5608,-189.3291 578.2543,-194.8291"/>
-<polygon fill="#000000" stroke="#000000" points="594.2168,-202.3205 604.7611,-201.2871 595.8738,-195.5194 594.2168,-202.3205"/>
-<polyline fill="none" stroke="#000000" points="595.0453,-198.92 590.1874,-197.7364 "/>
-<polygon fill="none" stroke="#000000" points="578.5284,-194.8958 585.3047,-192.4298 590.1874,-197.7364 583.411,-200.2024 578.5284,-194.8958"/>
-</g>
-<!-- blitter.com/go/hkexsh/hkexshd.runShellAs$2 -->
-<g id="node5" class="node">
-<title>blitter.com/go/hkexsh/hkexshd.runShellAs$2</title>
-<ellipse fill="#add8e6" stroke="#000000" stroke-dasharray="1,5" cx="659.2621" cy="-267" rx="56.2041" ry="18"/>
-<text text-anchor="middle" x="659.2621" y="-263.3" font-family="Verdana" font-size="14.00" fill="#000000">runShellAs$2</text>
-</g>
-<!-- blitter.com/go/hkexsh/hkexshd.runShellAs&#45;&gt;blitter.com/go/hkexsh/hkexshd.runShellAs$2 -->
-<g id="edge8" class="edge">
-<title>blitter.com/go/hkexsh/hkexshd.runShellAs&#45;&gt;blitter.com/go/hkexsh/hkexshd.runShellAs$2</title>
-<path fill="none" stroke="#000000" d="M434.7904,-60.1466C454.7626,-63.6467 477.2422,-70.7508 493.2096,-85 525.6612,-113.9595 508.1835,-137.9257 529.2096,-176 545.4581,-205.4229 546.9153,-216.9762 573.911,-237 579.442,-241.1025 585.5819,-244.6798 591.9599,-247.7913"/>
-<polygon fill="#000000" stroke="#000000" points="602.7639,-255.9343 613.3467,-256.4376 605.3876,-249.4446 602.7639,-255.9343"/>
-<polyline fill="none" stroke="#000000" points="604.0757,-252.6895 599.4402,-250.8154 "/>
-<ellipse fill="none" stroke="#000000" cx="595.7318" cy="-249.3161" rx="4" ry="4"/>
-</g>
-<!-- blitter.com/go/hkexsh/hkexshd.runShellAs$3 -->
-<g id="node6" class="node">
-<title>blitter.com/go/hkexsh/hkexshd.runShellAs$3</title>
-<ellipse fill="#add8e6" stroke="#000000" stroke-dasharray="1,5" cx="659.2621" cy="-57" rx="56.2041" ry="18"/>
-<text text-anchor="middle" x="659.2621" y="-53.3" font-family="Verdana" font-size="14.00" fill="#000000">runShellAs$3</text>
-</g>
-<!-- blitter.com/go/hkexsh/hkexshd.runShellAs&#45;&gt;blitter.com/go/hkexsh/hkexshd.runShellAs$3 -->
-<g id="edge9" class="edge">
-<title>blitter.com/go/hkexsh/hkexshd.runShellAs&#45;&gt;blitter.com/go/hkexsh/hkexshd.runShellAs$3</title>
-<path fill="none" stroke="#000000" d="M435.6717,-57C475.1802,-57 532.8113,-57 579.6677,-57"/>
-<polygon fill="#000000" stroke="#000000" points="592.6947,-60.5 602.6947,-57 592.6947,-53.5 592.6947,-60.5"/>
-<polyline fill="none" stroke="#000000" points="592.6947,-57 587.6947,-57.0001 "/>
-<ellipse fill="none" stroke="#000000" cx="583.6947" cy="-57.0001" rx="4" ry="4"/>
-</g>
-<!-- blitter.com/go/hkexsh/hkexshd.runShellAs$4 -->
-<g id="node7" class="node">
-<title>blitter.com/go/hkexsh/hkexshd.runShellAs$4</title>
-<ellipse fill="#add8e6" stroke="#000000" stroke-dasharray="1,5" cx="659.2621" cy="-118" rx="56.2041" ry="18"/>
-<text text-anchor="middle" x="659.2621" y="-114.3" font-family="Verdana" font-size="14.00" fill="#000000">runShellAs$4</text>
-</g>
-<!-- blitter.com/go/hkexsh/hkexshd.runShellAs&#45;&gt;blitter.com/go/hkexsh/hkexshd.runShellAs$4 -->
-<g id="edge13" class="edge">
-<title>blitter.com/go/hkexsh/hkexshd.runShellAs&#45;&gt;blitter.com/go/hkexsh/hkexshd.runShellAs$4</title>
-<path fill="none" stroke="#000000" d="M429.3871,-66.0664C471.8409,-75.6576 539.6042,-90.9668 590.5811,-102.4835"/>
-<polygon fill="#000000" stroke="#000000" points="602.4948,-108.7633 613.0203,-107.553 604.0374,-101.9353 602.4948,-108.7633"/>
-<polyline fill="none" stroke="#000000" points="603.2661,-105.3493 598.389,-104.2474 "/>
-<ellipse fill="none" stroke="#000000" cx="594.4874" cy="-103.366" rx="4" ry="4"/>
-</g>
-<!-- blitter.com/go/hkexsh/hkexshd.runShellAs&#45;&gt;(*blitter.com/go/hkexsh/hkexnet.Conn).EnableChaff -->
-<g id="edge10" class="edge">
-<title>blitter.com/go/hkexsh/hkexshd.runShellAs&#45;&gt;(*blitter.com/go/hkexsh/hkexnet.Conn).EnableChaff</title>
-<path fill="none" stroke="#8b4513" d="M435.5293,-57.9464C456.2868,-60.9136 479.204,-68.2054 493.2096,-85 528.0552,-126.7844 540.6543,-1017.9403 573.911,-1061 580.8911,-1070.0375 590.7904,-1076.3614 601.3879,-1080.7841"/>
-<polygon fill="#8b4513" stroke="#8b4513" points="600.2306,-1084.0873 610.8248,-1084.2017 602.6142,-1077.5056 600.2306,-1084.0873"/>
-</g>
-<!-- blitter.com/go/hkexsh/hkexshd.runShellAs&#45;&gt;(*blitter.com/go/hkexsh/hkexnet.Conn).DisableChaff -->
-<g id="edge11" class="edge">
-<title>blitter.com/go/hkexsh/hkexshd.runShellAs&#45;&gt;(*blitter.com/go/hkexsh/hkexnet.Conn).DisableChaff</title>
-<path fill="none" stroke="#8b4513" d="M435.4424,-58.0192C456.1802,-61.003 479.1058,-68.2878 493.2096,-85 554.6806,-157.8397 515.2102,-863.91 573.911,-939 577.0398,-943.0023 580.7404,-946.4721 584.8183,-949.4802"/>
-<polygon fill="#8b4513" stroke="#8b4513" points="598.6104,-960.2465 609.1229,-961.5647 601.7269,-953.9785 598.6104,-960.2465"/>
-<polyline fill="none" stroke="#8b4513" points="600.1687,-957.1125 595.6915,-954.8864 "/>
-<polygon fill="none" stroke="#8b4513" points="584.9464,-949.5438 592.0999,-948.6334 595.6915,-954.8864 588.5381,-955.7968 584.9464,-949.5438"/>
-</g>
-<!-- blitter.com/go/hkexsh/hkexshd.runShellAs&#45;&gt;(*blitter.com/go/hkexsh/hkexnet.Conn).ShutdownChaff -->
-<g id="edge12" class="edge">
-<title>blitter.com/go/hkexsh/hkexshd.runShellAs&#45;&gt;(*blitter.com/go/hkexsh/hkexnet.Conn).ShutdownChaff</title>
-<path fill="none" stroke="#8b4513" d="M435.4887,-57.9803C456.237,-60.9552 479.1581,-68.2438 493.2096,-85 525.9997,-124.1016 542.6078,-959.6982 573.911,-1000 575.7898,-1002.4189 577.8776,-1004.6433 580.1316,-1006.6889"/>
-<polygon fill="#8b4513" stroke="#8b4513" points="593.366,-1018.6026 603.7529,-1020.691 596.9354,-1012.581 593.366,-1018.6026"/>
-<polyline fill="none" stroke="#8b4513" points="595.1507,-1015.5918 590.8496,-1013.0422 "/>
-<polygon fill="none" stroke="#8b4513" points="580.5269,-1006.9231 587.7279,-1006.5418 590.8496,-1013.0422 583.6486,-1013.4236 580.5269,-1006.9231"/>
-</g>
-<!-- (*blitter.com/go/hkexsh/hkexnet.Conn).SetStatus -->
-<g id="node37" class="node">
-<title>(*blitter.com/go/hkexsh/hkexnet.Conn).SetStatus</title>
-<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="659.2621" cy="-725" rx="42.2035" ry="18"/>
-<text text-anchor="middle" x="659.2621" y="-721.3" font-family="Verdana" font-size="14.00" fill="#000000">SetStatus</text>
-</g>
-<!-- blitter.com/go/hkexsh/hkexshd.runShellAs&#45;&gt;(*blitter.com/go/hkexsh/hkexnet.Conn).SetStatus -->
-<g id="edge14" class="edge">
-<title>blitter.com/go/hkexsh/hkexshd.runShellAs&#45;&gt;(*blitter.com/go/hkexsh/hkexnet.Conn).SetStatus</title>
-<path fill="none" stroke="#8b4513" d="M435.4463,-58.2829C456.0553,-61.341 478.8719,-68.612 493.2096,-85 584.4058,-189.2368 482.1513,-599.2589 573.911,-703 582.3907,-712.5868 594.4403,-718.2576 606.822,-721.548"/>
-<polygon fill="#8b4513" stroke="#8b4513" points="606.2462,-725.0044 616.7611,-723.7057 607.7313,-718.1638 606.2462,-725.0044"/>
-</g>
-<!-- github.com/kr/pty.Start -->
-<g id="node48" class="node">
-<title>github.com/kr/pty.Start</title>
-<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="858.3158" cy="-184" rx="27" ry="18"/>
-<text text-anchor="middle" x="858.3158" y="-180.3" font-family="Verdana" font-size="14.00" fill="#000000">Start</text>
-</g>
-<!-- blitter.com/go/hkexsh/hkexshd.runShellAs&#45;&gt;github.com/kr/pty.Start -->
-<g id="edge5" class="edge">
-<title>blitter.com/go/hkexsh/hkexshd.runShellAs&#45;&gt;github.com/kr/pty.Start</title>
-<path fill="none" stroke="#8b4513" d="M431.6552,-64.3222C451.0878,-68.6942 474.0149,-75.327 493.2096,-85 534.0893,-105.601 531.6848,-131.3226 573.911,-149 596.2722,-158.3612 749.4532,-173.7571 821.2831,-180.5716"/>
-<polygon fill="#8b4513" stroke="#8b4513" points="820.981,-184.0585 831.2654,-181.513 821.6382,-177.0894 820.981,-184.0585"/>
-</g>
-<!-- github.com/kr/pty.Setsize -->
-<g id="node49" class="node">
-<title>github.com/kr/pty.Setsize</title>
-<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="858.3158" cy="-245" rx="33.0023" ry="18"/>
-<text text-anchor="middle" x="858.3158" y="-241.3" font-family="Verdana" font-size="14.00" fill="#000000">Setsize</text>
-</g>
-<!-- blitter.com/go/hkexsh/hkexshd.runShellAs$2&#45;&gt;github.com/kr/pty.Setsize -->
-<g id="edge7" class="edge">
-<title>blitter.com/go/hkexsh/hkexshd.runShellAs$2&#45;&gt;github.com/kr/pty.Setsize</title>
-<path fill="none" stroke="#8b4513" d="M712.3434,-261.1333C744.6925,-257.558 785.4802,-253.05 815.7119,-249.7087"/>
-<polygon fill="#8b4513" stroke="#8b4513" points="816.3789,-253.1564 825.9338,-248.5789 815.6098,-246.1988 816.3789,-253.1564"/>
+<path fill="none" stroke="#8b4513" d="M211.1806,-1603.6126C245.3789,-1598.1177 298.8742,-1589.5223 338.3119,-1583.1855"/>
+<polygon fill="#8b4513" stroke="#8b4513" points="338.9512,-1586.6278 348.2693,-1581.5856 337.8407,-1579.7164 338.9512,-1586.6278"/>
 </g>
 <!-- blitter.com/go/hkexsh/hkexshd.main -->
-<g id="node8" class="node">
+<g id="node2" class="node">
 <title>blitter.com/go/hkexsh/hkexshd.main</title>
-<ellipse fill="#add8e6" stroke="#000000" stroke-width=".5" cx="43" cy="-1754" rx="27" ry="18"/>
-<text text-anchor="middle" x="43" y="-1750.3" font-family="Verdana" font-size="14.00" fill="#000000">main</text>
+<ellipse fill="#add8e6" stroke="#000000" stroke-width=".5" cx="43" cy="-1771" rx="27" ry="18"/>
+<text text-anchor="middle" x="43" y="-1767.3" font-family="Verdana" font-size="14.00" fill="#000000">main</text>
 </g>
 <!-- blitter.com/go/hkexsh/hkexshd.main&#45;&gt;blitter.com/go/hkexsh/hkexshd.main$1 -->
-<g id="edge17" class="edge">
+<g id="edge4" class="edge">
 <title>blitter.com/go/hkexsh/hkexshd.main&#45;&gt;blitter.com/go/hkexsh/hkexshd.main$1</title>
-<path fill="none" stroke="#000000" d="M60.1058,-1740.034C72.4789,-1730.2355 89.8018,-1717.1287 106,-1707 113.8707,-1702.0785 122.4708,-1697.2243 130.8946,-1692.7327"/>
-<polygon fill="#000000" stroke="#000000" points="144.2343,-1689.854 151.5502,-1682.1907 141.0521,-1683.6191 144.2343,-1689.854"/>
-<polyline fill="none" stroke="#000000" points="142.6432,-1686.7366 138.1897,-1689.0095 "/>
-<ellipse fill="none" stroke="#000000" cx="134.6269" cy="-1690.8279" rx="4" ry="4"/>
+<path fill="none" stroke="#000000" d="M52.8763,-1753.9068C64.4769,-1734.4349 84.8393,-1702.0721 106,-1677 116.8157,-1664.185 129.8225,-1651.2389 141.7686,-1640.1315"/>
+<polygon fill="#000000" stroke="#000000" points="154.0999,-1633.7598 159.2006,-1624.4736 149.4223,-1628.5521 154.0999,-1633.7598"/>
+<polyline fill="none" stroke="#000000" points="151.7611,-1631.156 148.0414,-1634.4972 "/>
+<ellipse fill="none" stroke="#000000" cx="145.0656" cy="-1637.1701" rx="4" ry="4"/>
 </g>
 <!-- blitter.com/go/hkexsh/hkexshd.main$2 -->
-<g id="node9" class="node">
+<g id="node3" class="node">
 <title>blitter.com/go/hkexsh/hkexshd.main$2</title>
-<ellipse fill="#add8e6" stroke="#000000" stroke-dasharray="1,5" cx="177.6512" cy="-1020" rx="34.8031" ry="18"/>
-<text text-anchor="middle" x="177.6512" y="-1016.3" font-family="Verdana" font-size="14.00" fill="#000000">main$2</text>
+<ellipse fill="#add8e6" stroke="#000000" stroke-dasharray="1,5" cx="177.6512" cy="-1037" rx="34.8031" ry="18"/>
+<text text-anchor="middle" x="177.6512" y="-1033.3" font-family="Verdana" font-size="14.00" fill="#000000">main$2</text>
 </g>
 <!-- blitter.com/go/hkexsh/hkexshd.main&#45;&gt;blitter.com/go/hkexsh/hkexshd.main$2 -->
 <g id="edge56" class="edge">
 <title>blitter.com/go/hkexsh/hkexshd.main&#45;&gt;blitter.com/go/hkexsh/hkexshd.main$2</title>
-<path fill="none" stroke="#000000" d="M46.3285,-1735.8561C63.7736,-1640.7607 144.8194,-1198.9701 170.0993,-1061.1661"/>
-<polygon fill="#000000" stroke="#000000" points="175.9567,-1048.6342 174.3185,-1038.1668 169.0716,-1047.3711 175.9567,-1048.6342"/>
-<polyline fill="none" stroke="#000000" points="172.5141,-1048.0026 171.6119,-1052.9206 "/>
-<ellipse fill="none" stroke="#000000" cx="170.8902" cy="-1056.8549" rx="4" ry="4"/>
+<path fill="none" stroke="#000000" d="M46.3285,-1752.8561C63.7736,-1657.7607 144.8194,-1215.9701 170.0993,-1078.1661"/>
+<polygon fill="#000000" stroke="#000000" points="175.9567,-1065.6342 174.3185,-1055.1668 169.0716,-1064.3711 175.9567,-1065.6342"/>
+<polyline fill="none" stroke="#000000" points="172.5141,-1065.0026 171.6119,-1069.9206 "/>
+<ellipse fill="none" stroke="#000000" cx="170.8902" cy="-1073.8549" rx="4" ry="4"/>
 </g>
 <!-- blitter.com/go/hkexsh/hkexnet.Init -->
 <g id="node32" class="node">
 <title>blitter.com/go/hkexsh/hkexnet.Init</title>
-<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="659.2621" cy="-1298" rx="27" ry="18"/>
-<text text-anchor="middle" x="659.2621" y="-1294.3" font-family="Verdana" font-size="14.00" fill="#000000">Init</text>
+<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="659.2621" cy="-1330" rx="27" ry="18"/>
+<text text-anchor="middle" x="659.2621" y="-1326.3" font-family="Verdana" font-size="14.00" fill="#000000">Init</text>
 </g>
 <!-- blitter.com/go/hkexsh/hkexshd.main&#45;&gt;blitter.com/go/hkexsh/hkexnet.Init -->
-<g id="edge16" class="edge">
+<g id="edge3" class="edge">
 <title>blitter.com/go/hkexsh/hkexshd.main&#45;&gt;blitter.com/go/hkexsh/hkexnet.Init</title>
-<path fill="none" stroke="#8b4513" d="M69.4979,-1749.9224C96.6002,-1746.1099 139.9567,-1741 177.6512,-1741 177.6512,-1741 177.6512,-1741 389.256,-1741 437.3431,-1741 460.4661,-1746.2169 493.2096,-1711 611.3665,-1583.9177 460.1054,-1459.9932 573.911,-1329 586.0695,-1315.0053 605.0673,-1307.3264 622.0557,-1303.114"/>
-<polygon fill="#8b4513" stroke="#8b4513" points="623.2532,-1306.4366 632.2946,-1300.9136 621.7824,-1299.5929 623.2532,-1306.4366"/>
+<path fill="none" stroke="#8b4513" d="M69.4979,-1766.9224C96.6002,-1763.1099 139.9567,-1758 177.6512,-1758 177.6512,-1758 177.6512,-1758 389.256,-1758 435.8175,-1758 458.1558,-1775.6464 493.2096,-1745 624.5029,-1630.2148 461.5874,-1494.4053 573.911,-1361 586.0489,-1346.584 605.4613,-1338.8718 622.708,-1334.746"/>
+<polygon fill="#8b4513" stroke="#8b4513" points="623.4597,-1338.1647 632.541,-1332.7077 622.0387,-1331.3104 623.4597,-1338.1647"/>
 </g>
 <!-- blitter.com/go/hkexsh/hkexnet.Listen -->
 <g id="node33" class="node">
 <title>blitter.com/go/hkexsh/hkexnet.Listen</title>
-<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="659.2621" cy="-1359" rx="28.102" ry="18"/>
-<text text-anchor="middle" x="659.2621" y="-1355.3" font-family="Verdana" font-size="14.00" fill="#000000">Listen</text>
+<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="659.2621" cy="-1391" rx="28.102" ry="18"/>
+<text text-anchor="middle" x="659.2621" y="-1387.3" font-family="Verdana" font-size="14.00" fill="#000000">Listen</text>
 </g>
 <!-- blitter.com/go/hkexsh/hkexshd.main&#45;&gt;blitter.com/go/hkexsh/hkexnet.Listen -->
-<g id="edge18" class="edge">
+<g id="edge5" class="edge">
 <title>blitter.com/go/hkexsh/hkexshd.main&#45;&gt;blitter.com/go/hkexsh/hkexnet.Listen</title>
-<path fill="none" stroke="#8b4513" d="M69.2336,-1758.3529C96.3093,-1762.4627 139.8114,-1768 177.6512,-1768 177.6512,-1768 177.6512,-1768 389.256,-1768 452.5295,-1768 485.9731,-1793.2401 530.2096,-1748 645.0515,-1630.5529 465.7806,-1504.6539 573.911,-1381 585.5061,-1367.7403 603.9302,-1361.957 620.6978,-1359.6074"/>
-<polygon fill="#8b4513" stroke="#8b4513" points="621.2636,-1363.0676 630.848,-1358.5521 620.5397,-1356.1051 621.2636,-1363.0676"/>
+<path fill="none" stroke="#8b4513" d="M69.2336,-1775.3529C96.3093,-1779.4627 139.8114,-1785 177.6512,-1785 177.6512,-1785 177.6512,-1785 389.256,-1785 452.5295,-1785 485.8601,-1810.1294 530.2096,-1765 640.7061,-1652.5605 469.8407,-1531.4123 573.911,-1413 585.5392,-1399.7694 603.9667,-1393.9889 620.7279,-1391.6338"/>
+<polygon fill="#8b4513" stroke="#8b4513" points="621.2908,-1395.0941 630.8731,-1390.5741 620.5635,-1388.132 621.2908,-1395.0941"/>
 </g>
 <!-- (*blitter.com/go/hkexsh/hkexnet.Conn).SetupChaff -->
-<g id="node38" class="node">
+<g id="node34" class="node">
 <title>(*blitter.com/go/hkexsh/hkexnet.Conn).SetupChaff</title>
-<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="659.2621" cy="-1152" rx="47.7038" ry="18"/>
-<text text-anchor="middle" x="659.2621" y="-1148.3" font-family="Verdana" font-size="14.00" fill="#000000">SetupChaff</text>
+<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="659.2621" cy="-1269" rx="47.7038" ry="18"/>
+<text text-anchor="middle" x="659.2621" y="-1265.3" font-family="Verdana" font-size="14.00" fill="#000000">SetupChaff</text>
 </g>
 <!-- blitter.com/go/hkexsh/hkexshd.main&#45;&gt;(*blitter.com/go/hkexsh/hkexnet.Conn).SetupChaff -->
-<g id="edge21" class="edge">
+<g id="edge8" class="edge">
 <title>blitter.com/go/hkexsh/hkexshd.main&#45;&gt;(*blitter.com/go/hkexsh/hkexnet.Conn).SetupChaff</title>
-<path fill="none" stroke="#8b4513" d="M64.7751,-1764.9872C90.8997,-1777.1319 136.3533,-1795 177.6512,-1795 177.6512,-1795 177.6512,-1795 389.256,-1795 448.6561,-1795 463.6436,-1762.5191 493.2096,-1711 552.6178,-1607.4805 496.8094,-1271.1096 573.911,-1180 581.7027,-1170.7927 592.577,-1164.5931 603.9601,-1160.4242"/>
-<polygon fill="#8b4513" stroke="#8b4513" points="605.1069,-1163.7325 613.585,-1157.3786 602.995,-1157.0586 605.1069,-1163.7325"/>
+<path fill="none" stroke="#8b4513" d="M64.7751,-1781.9872C90.8997,-1794.1319 136.3533,-1812 177.6512,-1812 177.6512,-1812 177.6512,-1812 389.256,-1812 444.2224,-1812 460.9006,-1789.4683 493.2096,-1745 531.0393,-1692.9333 517.5287,-1668.0969 530.2096,-1605 544.0908,-1535.9307 527.0135,-1343.5725 573.911,-1291 581.2421,-1282.7818 591.1968,-1277.4457 601.7205,-1274.0206"/>
+<polygon fill="#8b4513" stroke="#8b4513" points="602.7439,-1277.3697 611.4862,-1271.3845 600.9196,-1270.6116 602.7439,-1277.3697"/>
 </g>
 <!-- (*blitter.com/go/hkexsh/hkexnet.HKExListener).Accept -->
 <g id="node42" class="node">
 <title>(*blitter.com/go/hkexsh/hkexnet.HKExListener).Accept</title>
-<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="659.2621" cy="-1436" rx="31.2029" ry="18"/>
-<text text-anchor="middle" x="659.2621" y="-1432.3" font-family="Verdana" font-size="14.00" fill="#000000">Accept</text>
+<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="659.2621" cy="-1468" rx="31.2029" ry="18"/>
+<text text-anchor="middle" x="659.2621" y="-1464.3" font-family="Verdana" font-size="14.00" fill="#000000">Accept</text>
 </g>
 <!-- blitter.com/go/hkexsh/hkexshd.main&#45;&gt;(*blitter.com/go/hkexsh/hkexnet.HKExListener).Accept -->
-<g id="edge20" class="edge">
+<g id="edge7" class="edge">
 <title>blitter.com/go/hkexsh/hkexshd.main&#45;&gt;(*blitter.com/go/hkexsh/hkexnet.HKExListener).Accept</title>
-<path fill="none" stroke="#8b4513" d="M58.6979,-1768.6812C70.8006,-1779.2908 88.3952,-1793.2417 106,-1802 135.6014,-1816.7265 144.5889,-1822 177.6512,-1822 177.6512,-1822 177.6512,-1822 389.256,-1822 452.5295,-1822 485.746,-1847.017 530.2096,-1802 636.6525,-1694.2323 477.3539,-1580.7077 573.911,-1464 584.6753,-1450.9893 601.6035,-1443.9756 617.5554,-1440.2134"/>
-<polygon fill="#8b4513" stroke="#8b4513" points="618.6929,-1443.5562 627.8225,-1438.1803 617.3331,-1436.6895 618.6929,-1443.5562"/>
+<path fill="none" stroke="#8b4513" d="M58.6979,-1785.6812C70.8006,-1796.2908 88.3952,-1810.2417 106,-1819 135.6014,-1833.7265 144.5889,-1839 177.6512,-1839 177.6512,-1839 177.6512,-1839 389.256,-1839 452.5295,-1839 485.6134,-1863.8856 530.2096,-1819 632.3118,-1716.2353 481.238,-1607.3425 573.911,-1496 584.7137,-1483.0211 601.6477,-1476.0123 617.5937,-1472.2452"/>
+<polygon fill="#8b4513" stroke="#8b4513" points="618.7286,-1475.5883 627.8554,-1470.2076 617.3652,-1468.7223 618.7286,-1475.5883"/>
 </g>
 <!-- (blitter.com/go/hkexsh/hkexnet.HKExListener).Close -->
 <g id="node44" class="node">
 <title>(blitter.com/go/hkexsh/hkexnet.HKExListener).Close</title>
-<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="659.2621" cy="-1521" rx="27" ry="18"/>
-<text text-anchor="middle" x="659.2621" y="-1517.3" font-family="Verdana" font-size="14.00" fill="#000000">Close</text>
+<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="659.2621" cy="-1553" rx="27" ry="18"/>
+<text text-anchor="middle" x="659.2621" y="-1549.3" font-family="Verdana" font-size="14.00" fill="#000000">Close</text>
 </g>
 <!-- blitter.com/go/hkexsh/hkexshd.main&#45;&gt;(blitter.com/go/hkexsh/hkexnet.HKExListener).Close -->
-<g id="edge19" class="edge">
+<g id="edge6" class="edge">
 <title>blitter.com/go/hkexsh/hkexshd.main&#45;&gt;(blitter.com/go/hkexsh/hkexnet.HKExListener).Close</title>
-<path fill="none" stroke="#8b4513" d="M52.8764,-1770.8767C63.763,-1788.0121 82.8395,-1814.0839 106,-1829 133.7964,-1846.9018 144.5889,-1849 177.6512,-1849 177.6512,-1849 177.6512,-1849 389.256,-1849 452.5295,-1849 484.6954,-1872.9545 530.2096,-1829 610.0872,-1751.8599 515.0017,-1677.1314 573.911,-1583 583.4965,-1567.6834 598.3698,-1554.9642 613.0318,-1545.1152"/>
-<polygon fill="#8b4513" stroke="#8b4513" points="629.6894,-1539.3829 636.5365,-1531.2979 626.142,-1533.3484 629.6894,-1539.3829"/>
-<polyline fill="none" stroke="#8b4513" points="627.9157,-1536.3656 623.6053,-1538.8995 "/>
-<polygon fill="none" stroke="#8b4513" points="613.2604,-1544.9809 616.4057,-1538.4919 623.6053,-1538.8995 620.46,-1545.3885 613.2604,-1544.9809"/>
+<path fill="none" stroke="#8b4513" d="M52.8764,-1787.8767C63.763,-1805.0121 82.8395,-1831.0839 106,-1846 133.7964,-1863.9018 144.5889,-1866 177.6512,-1866 177.6512,-1866 177.6512,-1866 389.256,-1866 452.5295,-1866 485.0469,-1890.3156 530.2096,-1846 617.2898,-1760.5532 491.7192,-1665.1588 573.911,-1575 582.0875,-1566.031 593.39,-1560.5078 605.0967,-1557.1562"/>
+<polygon fill="#8b4513" stroke="#8b4513" points="622.5802,-1557.7794 631.8655,-1552.6771 621.425,-1550.8754 622.5802,-1557.7794"/>
+<polyline fill="none" stroke="#8b4513" points="622.0026,-1554.3274 617.0712,-1555.1526 "/>
+<polygon fill="none" stroke="#8b4513" points="605.2357,-1557.133 610.4933,-1552.1976 617.0712,-1555.1526 611.8136,-1560.0879 605.2357,-1557.133"/>
 </g>
 <!-- blitter.com/go/hkexsh/logger.New -->
 <g id="node46" class="node">
 <title>blitter.com/go/hkexsh/logger.New</title>
-<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="389.256" cy="-1653" rx="27" ry="18"/>
-<text text-anchor="middle" x="389.256" y="-1649.3" font-family="Verdana" font-size="14.00" fill="#000000">New</text>
+<ellipse fill="#ffe4b5" stroke="#000000" stroke-width="1.5" cx="389.256" cy="-1636" rx="27" ry="18"/>
+<text text-anchor="middle" x="389.256" y="-1632.3" font-family="Verdana" font-size="14.00" fill="#000000">New</text>
 </g>
 <!-- blitter.com/go/hkexsh/hkexshd.main&#45;&gt;blitter.com/go/hkexsh/logger.New -->
-<g id="edge15" class="edge">
+<g id="edge2" class="edge">
 <title>blitter.com/go/hkexsh/hkexshd.main&#45;&gt;blitter.com/go/hkexsh/logger.New</title>
-<path fill="none" stroke="#8b4513" d="M67.5218,-1746.1752C79.1737,-1742.4674 93.2997,-1737.9872 106,-1734 153.1984,-1719.1823 165.3687,-1716.6356 212.3024,-1701 244.9777,-1690.1144 252.159,-1684.3641 285.3024,-1675 307.5247,-1668.7215 332.8701,-1663.3228 352.9709,-1659.4448"/>
-<polygon fill="#8b4513" stroke="#8b4513" points="353.7829,-1662.8534 362.9599,-1657.5589 352.4842,-1655.9749 353.7829,-1662.8534"/>
-</g>
-<!-- blitter.com/go/hkexsh/hkexshd.main$2&#45;&gt;blitter.com/go/hkexsh/hkexshd.runServerToClientCopyAs -->
-<g id="edge55" class="edge">
-<title>blitter.com/go/hkexsh/hkexshd.main$2&#45;&gt;blitter.com/go/hkexsh/hkexshd.runServerToClientCopyAs</title>
-<path fill="none" stroke="#000000" d="M181.3619,-1038.1407C194.0176,-1098.1203 237.3668,-1288.3117 285.3024,-1325 292.1844,-1330.2672 299.9622,-1334.6103 308.0894,-1338.1913"/>
-<polygon fill="#000000" stroke="#000000" points="306.8004,-1341.4453 317.3846,-1341.9191 309.406,-1334.9483 306.8004,-1341.4453"/>
-</g>
-<!-- blitter.com/go/hkexsh/hkexshd.main$2&#45;&gt;blitter.com/go/hkexsh/hkexshd.runShellAs -->
-<g id="edge43" class="edge">
-<title>blitter.com/go/hkexsh/hkexshd.main$2&#45;&gt;blitter.com/go/hkexsh/hkexshd.runShellAs</title>
-<path fill="none" stroke="#000000" d="M178.8246,-1001.7733C184.2771,-918.9682 208.5703,-569.9979 248.3024,-286 260.8878,-196.0418 223.7283,-151.7794 285.3024,-85 297.5883,-71.6755 315.4818,-64.4279 332.972,-60.5652"/>
-<polygon fill="#000000" stroke="#000000" points="333.9891,-63.9359 343.1779,-58.6617 332.7057,-57.0546 333.9891,-63.9359"/>
+<path fill="none" stroke="#8b4513" d="M63.7242,-1759.3479C104.7846,-1736.716 199.8966,-1686.5364 285.3024,-1658 307.2044,-1650.682 332.5427,-1645.2604 352.7199,-1641.6304"/>
+<polygon fill="#8b4513" stroke="#8b4513" points="353.4981,-1645.0479 362.7553,-1639.8949 352.3051,-1638.1503 353.4981,-1645.0479"/>
 </g>
 <!-- blitter.com/go/hkexsh/hkexshd.GenAuthToken -->
-<g id="node10" class="node">
+<g id="node4" class="node">
 <title>blitter.com/go/hkexsh/hkexshd.GenAuthToken</title>
-<ellipse fill="#add8e6" stroke="#000000" stroke-width="1.5" cx="389.256" cy="-1294" rx="61.7044" ry="18"/>
-<text text-anchor="middle" x="389.256" y="-1290.3" font-family="Verdana" font-size="14.00" fill="#000000">GenAuthToken</text>
+<ellipse fill="#add8e6" stroke="#000000" stroke-width="1.5" cx="389.256" cy="-1223" rx="61.7044" ry="18"/>
+<text text-anchor="middle" x="389.256" y="-1219.3" font-family="Verdana" font-size="14.00" fill="#000000">GenAuthToken</text>
 </g>
 <!-- blitter.com/go/hkexsh/hkexshd.main$2&#45;&gt;blitter.com/go/hkexsh/hkexshd.GenAuthToken -->