Skip to content

Instantly share code, notes, and snippets.

@FZambia
Created March 14, 2017 20:13
Show Gist options
  • Save FZambia/1a9b0be9627453db21c9288c0af02d8a to your computer and use it in GitHub Desktop.
Save FZambia/1a9b0be9627453db21c9288c0af02d8a to your computer and use it in GitHub Desktop.
Centrifugo + Gorilla WebSocket profiles
Display the source blob
Display the rendered blob
Raw
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.38.0 (20140413.2041)
-->
<!-- Title: centrifugo Pages: 1 -->
<svg width="100%" height="100%" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<script type="text/ecmascript"><![CDATA[
/**
* SVGPan library 1.2.1
* ======================
*
* Given an unique existing element with id "viewport" (or when missing, the first g
* element), including the the library into any SVG adds the following capabilities:
*
* - Mouse panning
* - Mouse zooming (using the wheel)
* - Object dragging
*
* You can configure the behaviour of the pan/zoom/drag with the variables
* listed in the CONFIGURATION section of this file.
*
* Known issues:
*
* - Zooming (while panning) on Safari has still some issues
*
* Releases:
*
* 1.2.1, Mon Jul 4 00:33:18 CEST 2011, Andrea Leofreddi
* - Fixed a regression with mouse wheel (now working on Firefox 5)
* - Working with viewBox attribute (#4)
* - Added "use strict;" and fixed resulting warnings (#5)
* - Added configuration variables, dragging is disabled by default (#3)
*
* 1.2, Sat Mar 20 08:42:50 GMT 2010, Zeng Xiaohui
* Fixed a bug with browser mouse handler interaction
*
* 1.1, Wed Feb 3 17:39:33 GMT 2010, Zeng Xiaohui
* Updated the zoom code to support the mouse wheel on Safari/Chrome
*
* 1.0, Andrea Leofreddi
* First release
*
* This code is licensed under the following BSD license:
*
* Copyright 2009-2010 Andrea Leofreddi <a.leofreddi@itcharm.com>. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY Andrea Leofreddi ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Andrea Leofreddi OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of Andrea Leofreddi.
*/
"use strict";
/// CONFIGURATION
/// ====>
var enablePan = 1; // 1 or 0: enable or disable panning (default enabled)
var enableZoom = 1; // 1 or 0: enable or disable zooming (default enabled)
var enableDrag = 0; // 1 or 0: enable or disable dragging (default disabled)
/// <====
/// END OF CONFIGURATION
var root = document.documentElement;
var state = 'none', svgRoot, stateTarget, stateOrigin, stateTf;
setupHandlers(root);
/**
* Register handlers
*/
function setupHandlers(root){
setAttributes(root, {
"onmouseup" : "handleMouseUp(evt)",
"onmousedown" : "handleMouseDown(evt)",
"onmousemove" : "handleMouseMove(evt)",
//"onmouseout" : "handleMouseUp(evt)", // Decomment this to stop the pan functionality when dragging out of the SVG element
});
if(navigator.userAgent.toLowerCase().indexOf('webkit') >= 0)
window.addEventListener('mousewheel', handleMouseWheel, false); // Chrome/Safari
else
window.addEventListener('DOMMouseScroll', handleMouseWheel, false); // Others
}
/**
* Retrieves the root element for SVG manipulation. The element is then cached into the svgRoot global variable.
*/
function getRoot(root) {
if(typeof(svgRoot) == "undefined") {
var g = null;
g = root.getElementById("viewport");
if(g == null)
g = root.getElementsByTagName('g')[0];
if(g == null)
alert('Unable to obtain SVG root element');
setCTM(g, g.getCTM());
g.removeAttribute("viewBox");
svgRoot = g;
}
return svgRoot;
}
/**
* Instance an SVGPoint object with given event coordinates.
*/
function getEventPoint(evt) {
var p = root.createSVGPoint();
p.x = evt.clientX;
p.y = evt.clientY;
return p;
}
/**
* Sets the current transform matrix of an element.
*/
function setCTM(element, matrix) {
var s = "matrix(" + matrix.a + "," + matrix.b + "," + matrix.c + "," + matrix.d + "," + matrix.e + "," + matrix.f + ")";
element.setAttribute("transform", s);
}
/**
* Dumps a matrix to a string (useful for debug).
*/
function dumpMatrix(matrix) {
var s = "[ " + matrix.a + ", " + matrix.c + ", " + matrix.e + "\n " + matrix.b + ", " + matrix.d + ", " + matrix.f + "\n 0, 0, 1 ]";
return s;
}
/**
* Sets attributes of an element.
*/
function setAttributes(element, attributes){
for (var i in attributes)
element.setAttributeNS(null, i, attributes[i]);
}
/**
* Handle mouse wheel event.
*/
function handleMouseWheel(evt) {
if(!enableZoom)
return;
if(evt.preventDefault)
evt.preventDefault();
evt.returnValue = false;
var svgDoc = evt.target.ownerDocument;
var delta;
if(evt.wheelDelta)
delta = evt.wheelDelta / 3600; // Chrome/Safari
else
delta = evt.detail / -90; // Mozilla
var z = 1 + delta; // Zoom factor: 0.9/1.1
var g = getRoot(svgDoc);
var p = getEventPoint(evt);
p = p.matrixTransform(g.getCTM().inverse());
// Compute new scale matrix in current mouse position
var k = root.createSVGMatrix().translate(p.x, p.y).scale(z).translate(-p.x, -p.y);
setCTM(g, g.getCTM().multiply(k));
if(typeof(stateTf) == "undefined")
stateTf = g.getCTM().inverse();
stateTf = stateTf.multiply(k.inverse());
}
/**
* Handle mouse move event.
*/
function handleMouseMove(evt) {
if(evt.preventDefault)
evt.preventDefault();
evt.returnValue = false;
var svgDoc = evt.target.ownerDocument;
var g = getRoot(svgDoc);
if(state == 'pan' && enablePan) {
// Pan mode
var p = getEventPoint(evt).matrixTransform(stateTf);
setCTM(g, stateTf.inverse().translate(p.x - stateOrigin.x, p.y - stateOrigin.y));
} else if(state == 'drag' && enableDrag) {
// Drag mode
var p = getEventPoint(evt).matrixTransform(g.getCTM().inverse());
setCTM(stateTarget, root.createSVGMatrix().translate(p.x - stateOrigin.x, p.y - stateOrigin.y).multiply(g.getCTM().inverse()).multiply(stateTarget.getCTM()));
stateOrigin = p;
}
}
/**
* Handle click event.
*/
function handleMouseDown(evt) {
if(evt.preventDefault)
evt.preventDefault();
evt.returnValue = false;
var svgDoc = evt.target.ownerDocument;
var g = getRoot(svgDoc);
if(
evt.target.tagName == "svg"
|| !enableDrag // Pan anyway when drag is disabled and the user clicked on an element
) {
// Pan mode
state = 'pan';
stateTf = g.getCTM().inverse();
stateOrigin = getEventPoint(evt).matrixTransform(stateTf);
} else {
// Drag mode
state = 'drag';
stateTarget = evt.target;
stateTf = g.getCTM().inverse();
stateOrigin = getEventPoint(evt).matrixTransform(stateTf);
}
}
/**
* Handle mouse button release event.
*/
function handleMouseUp(evt) {
if(evt.preventDefault)
evt.preventDefault();
evt.returnValue = false;
var svgDoc = evt.target.ownerDocument;
if(state == 'pan' || state == 'drag') {
// Quit pan mode
state = '';
}
}
]]></script><g id="viewport" transform="scale(0.5,0.5) translate(0,0)"><g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 1865)">
<title>centrifugo</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-1865 2838.44,-1865 2838.44,4 -4,4"/>
<g id="clust1" class="cluster"><title>cluster_L</title>
<polygon fill="none" stroke="black" points="425,-1637 425,-1853 1087,-1853 1087,-1637 425,-1637"/>
</g>
<!-- L -->
<g id="node1" class="node"><title>L</title>
<polygon fill="#f8f8f8" stroke="black" points="1078.84,-1845 433.156,-1845 433.156,-1645 1078.84,-1645 1078.84,-1845"/>
<text text-anchor="start" x="441.078" y="-1815.4" font-family="Times,serif" font-size="32.00">File: centrifugo</text>
<text text-anchor="start" x="441.078" y="-1783.4" font-family="Times,serif" font-size="32.00">Type: cpu</text>
<text text-anchor="start" x="441.078" y="-1751.4" font-family="Times,serif" font-size="32.00">12.16s of 19.63s total (61.95%)</text>
<text text-anchor="start" x="441.078" y="-1719.4" font-family="Times,serif" font-size="32.00">Dropped 387 nodes (cum &lt;= 0.10s)</text>
<text text-anchor="start" x="441.078" y="-1687.4" font-family="Times,serif" font-size="32.00">Dropped 36 edges (freq &lt;= 0.02s)</text>
<text text-anchor="start" x="441.078" y="-1655.4" font-family="Times,serif" font-size="32.00">Showing top 80 nodes out of 207 (cum &gt;= 0.27s)</text>
</g>
<!-- N1 -->
<g id="node2" class="node"><title>N1</title>
<g id="a_node2"><a xlink:title="runtime.goexit (15.58s)">
<polygon fill="#f8f8f8" stroke="black" points="1178.77,-1763 1097.23,-1763 1097.23,-1727 1178.77,-1727 1178.77,-1763"/>
<text text-anchor="middle" x="1138" y="-1746.6" font-family="Times,serif" font-size="8.00">runtime.goexit</text>
<text text-anchor="middle" x="1138" y="-1738.6" font-family="Times,serif" font-size="8.00">0 of 15.58s(79.37%)</text>
</a>
</g>
</g>
<!-- N3 -->
<g id="node4" class="node"><title>N3</title>
<g id="a_node4"><a xlink:title="github.com/centrifugal/centrifugo/libcentrifugo/conns/clientconn.(*client).sendMessages (6.33s)">
<polygon fill="#f8f8f8" stroke="black" points="833.913,-1595 426.087,-1595 426.087,-1554 833.913,-1554 833.913,-1595"/>
<text text-anchor="middle" x="630" y="-1582.2" font-family="Times,serif" font-size="11.00">github.com/centrifugal/centrifugo/libcentrifugo/conns/clientconn.(*client).sendMessages</text>
<text text-anchor="middle" x="630" y="-1571.2" font-family="Times,serif" font-size="11.00">0.12s(0.61%)</text>
<text text-anchor="middle" x="630" y="-1560.2" font-family="Times,serif" font-size="11.00">of 6.33s(32.25%)</text>
</a>
</g>
</g>
<!-- N1&#45;&gt;N3 -->
<g id="edge1" class="edge"><title>N1&#45;&gt;N3</title>
<g id="a_edge1"><a xlink:title="runtime.goexit &#45;&gt; github.com/centrifugal/centrifugo/libcentrifugo/conns/clientconn.(*client).sendMessages (6.33s)">
<path fill="none" stroke="black" stroke-width="2" d="M1135.68,-1726.71C1131.44,-1702.44 1120.03,-1658.83 1091,-1637 1079.56,-1628.4 939.383,-1610.46 816.578,-1596.17"/>
<polygon fill="black" stroke="black" stroke-width="2" points="816.978,-1592.69 806.642,-1595.01 816.171,-1599.64 816.978,-1592.69"/>
</a>
</g>
<g id="a_edge1&#45;label"><a xlink:title="runtime.goexit &#45;&gt; github.com/centrifugal/centrifugo/libcentrifugo/conns/clientconn.(*client).sendMessages (6.33s)">
<text text-anchor="middle" x="1061.72" y="-1615.8" font-family="Times,serif" font-size="14.00"> 6.33s</text>
</a>
</g>
</g>
<!-- N9 -->
<g id="node10" class="node"><title>N9</title>
<g id="a_node10"><a xlink:title="net/http.(*conn).serve (5.20s)">
<polygon fill="#f8f8f8" stroke="black" points="1537.47,-1592.5 1442.53,-1592.5 1442.53,-1556.5 1537.47,-1556.5 1537.47,-1592.5"/>
<text text-anchor="middle" x="1490" y="-1580.8" font-family="Times,serif" font-size="9.00">net/http.(*conn).serve</text>
<text text-anchor="middle" x="1490" y="-1571.8" font-family="Times,serif" font-size="9.00">0.01s(0.051%)</text>
<text text-anchor="middle" x="1490" y="-1562.8" font-family="Times,serif" font-size="9.00">of 5.20s(26.49%)</text>
</a>
</g>
</g>
<!-- N1&#45;&gt;N9 -->
<g id="edge7" class="edge"><title>N1&#45;&gt;N9</title>
<g id="a_edge7"><a xlink:title="runtime.goexit &#45;&gt; net/http.(*conn).serve (5.20s)">
<path fill="none" stroke="black" stroke-width="2" d="M1173.69,-1726.92C1238.34,-1695.97 1374.67,-1630.71 1445.37,-1596.87"/>
<polygon fill="black" stroke="black" stroke-width="2" points="1446.97,-1599.98 1454.48,-1592.5 1443.95,-1593.66 1446.97,-1599.98"/>
</a>
</g>
<g id="a_edge7&#45;label"><a xlink:title="runtime.goexit &#45;&gt; net/http.(*conn).serve (5.20s)">
<text text-anchor="middle" x="1421.72" y="-1615.8" font-family="Times,serif" font-size="14.00"> 5.20s</text>
</a>
</g>
</g>
<!-- N17 -->
<g id="node18" class="node"><title>N17</title>
<g id="a_node18"><a xlink:title="github.com/centrifugal/centrifugo/libcentrifugo/server/httpserver.(*wsSession).(github.com/centrifugal/centrifugo/libcentrifugo/server/httpserver.ping)&#45;fm (2.51s)">
<polygon fill="#f8f8f8" stroke="black" points="1424.1,-1592.5 851.903,-1592.5 851.903,-1556.5 1424.1,-1556.5 1424.1,-1592.5"/>
<text text-anchor="middle" x="1138" y="-1580.8" font-family="Times,serif" font-size="9.00">github.com/centrifugal/centrifugo/libcentrifugo/server/httpserver.(*wsSession).(github.com/centrifugal/centrifugo/libcentrifugo/server/httpserver.ping)&#45;fm</text>
<text text-anchor="middle" x="1138" y="-1571.8" font-family="Times,serif" font-size="9.00">0.02s(0.1%)</text>
<text text-anchor="middle" x="1138" y="-1562.8" font-family="Times,serif" font-size="9.00">of 2.51s(12.79%)</text>
</a>
</g>
</g>
<!-- N1&#45;&gt;N17 -->
<g id="edge16" class="edge"><title>N1&#45;&gt;N17</title>
<g id="a_edge16"><a xlink:title="runtime.goexit &#45;&gt; github.com/centrifugal/centrifugo/libcentrifugo/server/httpserver.(*wsSession).(github.com/centrifugal/centrifugo/libcentrifugo/server/httpserver.ping)&#45;fm (2.51s)">
<path fill="none" stroke="black" d="M1138,-1726.92C1138,-1697.65 1138,-1637.69 1138,-1602.64"/>
<polygon fill="black" stroke="black" points="1141.5,-1602.63 1138,-1592.63 1134.5,-1602.63 1141.5,-1602.63"/>
</a>
</g>
<g id="a_edge16&#45;label"><a xlink:title="runtime.goexit &#45;&gt; github.com/centrifugal/centrifugo/libcentrifugo/server/httpserver.(*wsSession).(github.com/centrifugal/centrifugo/libcentrifugo/server/httpserver.ping)&#45;fm (2.51s)">
<text text-anchor="middle" x="1154.72" y="-1615.8" font-family="Times,serif" font-size="14.00"> 2.51s</text>
</a>
</g>
</g>
<!-- N45 -->
<g id="node46" class="node"><title>N45</title>
<g id="a_node46"><a xlink:title="github.com/centrifugal/centrifugo/libcentrifugo/conns.(*clientHub).Broadcast (0.58s)">
<polygon fill="#f8f8f8" stroke="black" points="1882.85,-1593.5 1555.15,-1593.5 1555.15,-1555.5 1882.85,-1555.5 1882.85,-1593.5"/>
<text text-anchor="middle" x="1719" y="-1581.5" font-family="Times,serif" font-size="10.00">github.com/centrifugal/centrifugo/libcentrifugo/conns.(*clientHub).Broadcast</text>
<text text-anchor="middle" x="1719" y="-1571.5" font-family="Times,serif" font-size="10.00">0.04s(0.2%)</text>
<text text-anchor="middle" x="1719" y="-1561.5" font-family="Times,serif" font-size="10.00">of 0.58s(2.95%)</text>
</a>
</g>
</g>
<!-- N1&#45;&gt;N45 -->
<g id="edge39" class="edge"><title>N1&#45;&gt;N45</title>
<g id="a_edge39"><a xlink:title="runtime.goexit ... github.com/centrifugal/centrifugo/libcentrifugo/conns.(*clientHub).Broadcast (0.58s)">
<path fill="none" stroke="black" stroke-dasharray="1,5" d="M1178.85,-1732.15C1276.43,-1703.85 1524.07,-1632.03 1647.21,-1596.32"/>
<polygon fill="black" stroke="black" points="1648.31,-1599.65 1656.93,-1593.5 1646.36,-1592.92 1648.31,-1599.65"/>
</a>
</g>
<g id="a_edge39&#45;label"><a xlink:title="runtime.goexit ... github.com/centrifugal/centrifugo/libcentrifugo/conns.(*clientHub).Broadcast (0.58s)">
<text text-anchor="middle" x="1595.72" y="-1615.8" font-family="Times,serif" font-size="14.00"> 0.58s</text>
</a>
</g>
</g>
<!-- N66 -->
<g id="node67" class="node"><title>N66</title>
<g id="a_node67"><a xlink:title="runtime.timerproc (0.31s)">
<polygon fill="#f8f8f8" stroke="black" points="407.98,-1592.5 334.02,-1592.5 334.02,-1556.5 407.98,-1556.5 407.98,-1592.5"/>
<text text-anchor="middle" x="371" y="-1576.1" font-family="Times,serif" font-size="8.00">runtime.timerproc</text>
<text text-anchor="middle" x="371" y="-1568.1" font-family="Times,serif" font-size="8.00">0 of 0.31s(1.58%)</text>
</a>
</g>
</g>
<!-- N1&#45;&gt;N66 -->
<g id="edge59" class="edge"><title>N1&#45;&gt;N66</title>
<g id="a_edge59"><a xlink:title="runtime.goexit &#45;&gt; runtime.timerproc (0.31s)">
<path fill="none" stroke="black" d="M1135.96,-1726.82C1132.04,-1702.28 1120.98,-1657.86 1091,-1637 1075.52,-1626.23 940.377,-1628.15 921.552,-1627 700.561,-1613.47 637.508,-1645.73 417.947,-1594.77"/>
<polygon fill="black" stroke="black" points="418.586,-1591.33 408.05,-1592.44 416.983,-1598.14 418.586,-1591.33"/>
</a>
</g>
<g id="a_edge59&#45;label"><a xlink:title="runtime.goexit &#45;&gt; runtime.timerproc (0.31s)">
<text text-anchor="middle" x="938.724" y="-1615.8" font-family="Times,serif" font-size="14.00"> 0.31s</text>
</a>
</g>
</g>
<!-- N2 -->
<g id="node3" class="node"><title>N2</title>
<g id="a_node3"><a xlink:title="syscall.Syscall (6.72s)">
<polygon fill="#f8f8f8" stroke="black" points="919.809,-688 736.191,-688 736.191,-608 919.809,-608 919.809,-688"/>
<text text-anchor="middle" x="828" y="-664.8" font-family="Times,serif" font-size="24.00">syscall.Syscall</text>
<text text-anchor="middle" x="828" y="-640.8" font-family="Times,serif" font-size="24.00">6.14s(31.28%)</text>
<text text-anchor="middle" x="828" y="-616.8" font-family="Times,serif" font-size="24.00">of 6.72s(34.23%)</text>
</a>
</g>
</g>
<!-- N55 -->
<g id="node56" class="node"><title>N55</title>
<g id="a_node56"><a xlink:title="runtime.entersyscall (0.46s)">
<polygon fill="#f8f8f8" stroke="black" points="872.226,-558 783.774,-558 783.774,-522 872.226,-522 872.226,-558"/>
<text text-anchor="middle" x="828" y="-546.3" font-family="Times,serif" font-size="9.00">runtime.entersyscall</text>
<text text-anchor="middle" x="828" y="-537.3" font-family="Times,serif" font-size="9.00">0.01s(0.051%)</text>
<text text-anchor="middle" x="828" y="-528.3" font-family="Times,serif" font-size="9.00">of 0.46s(2.34%)</text>
</a>
</g>
</g>
<!-- N2&#45;&gt;N55 -->
<g id="edge49" class="edge"><title>N2&#45;&gt;N55</title>
<g id="a_edge49"><a xlink:title="syscall.Syscall &#45;&gt; runtime.entersyscall (0.45s)">
<path fill="none" stroke="black" d="M828,-607.831C828,-594.736 828,-580.431 828,-568.427"/>
<polygon fill="black" stroke="black" points="831.5,-568.151 828,-558.151 824.5,-568.151 831.5,-568.151"/>
</a>
</g>
<g id="a_edge49&#45;label"><a xlink:title="syscall.Syscall &#45;&gt; runtime.entersyscall (0.45s)">
<text text-anchor="middle" x="844.724" y="-578.8" font-family="Times,serif" font-size="14.00"> 0.45s</text>
</a>
</g>
</g>
<!-- N8 -->
<g id="node9" class="node"><title>N8</title>
<g id="a_node9"><a xlink:title="github.com/centrifugal/centrifugo/libcentrifugo/server/httpserver.(*wsSession).Send (5.65s)">
<polygon fill="#f8f8f8" stroke="black" points="645.922,-1504 292.078,-1504 292.078,-1466 645.922,-1466 645.922,-1504"/>
<text text-anchor="middle" x="469" y="-1492" font-family="Times,serif" font-size="10.00">github.com/centrifugal/centrifugo/libcentrifugo/server/httpserver.(*wsSession).Send</text>
<text text-anchor="middle" x="469" y="-1482" font-family="Times,serif" font-size="10.00">0.08s(0.41%)</text>
<text text-anchor="middle" x="469" y="-1472" font-family="Times,serif" font-size="10.00">of 5.65s(28.78%)</text>
</a>
</g>
</g>
<!-- N3&#45;&gt;N8 -->
<g id="edge6" class="edge"><title>N3&#45;&gt;N8</title>
<g id="a_edge6"><a xlink:title="github.com/centrifugal/centrifugo/libcentrifugo/conns/clientconn.(*client).sendMessages &#45;&gt; github.com/centrifugal/centrifugo/libcentrifugo/server/httpserver.(*wsSession).Send (5.65s)">
<path fill="none" stroke="black" stroke-width="2" d="M593.868,-1553.86C569.427,-1540.58 537.051,-1522.98 511.391,-1509.04"/>
<polygon fill="black" stroke="black" stroke-width="2" points="512.725,-1505.78 502.268,-1504.08 509.383,-1511.93 512.725,-1505.78"/>
</a>
</g>
<g id="a_edge6&#45;label"><a xlink:title="github.com/centrifugal/centrifugo/libcentrifugo/conns/clientconn.(*client).sendMessages &#45;&gt; github.com/centrifugal/centrifugo/libcentrifugo/server/httpserver.(*wsSession).Send (5.65s)">
<text text-anchor="middle" x="576.724" y="-1524.8" font-family="Times,serif" font-size="14.00"> 5.65s</text>
</a>
</g>
</g>
<!-- N57 -->
<g id="node58" class="node"><title>N57</title>
<g id="a_node58"><a xlink:title="github.com/centrifugal/centrifugo/libcentrifugo/queue.(*byteQueue).Wait (0.44s)">
<polygon fill="#f8f8f8" stroke="black" points="944.939,-1503 663.061,-1503 663.061,-1467 944.939,-1467 944.939,-1503"/>
<text text-anchor="middle" x="804" y="-1491.3" font-family="Times,serif" font-size="9.00">github.com/centrifugal/centrifugo/libcentrifugo/queue.(*byteQueue).Wait</text>
<text text-anchor="middle" x="804" y="-1482.3" font-family="Times,serif" font-size="9.00">0.01s(0.051%)</text>
<text text-anchor="middle" x="804" y="-1473.3" font-family="Times,serif" font-size="9.00">of 0.44s(2.24%)</text>
</a>
</g>
</g>
<!-- N3&#45;&gt;N57 -->
<g id="edge50" class="edge"><title>N3&#45;&gt;N57</title>
<g id="a_edge50"><a xlink:title="github.com/centrifugal/centrifugo/libcentrifugo/conns/clientconn.(*client).sendMessages &#45;&gt; github.com/centrifugal/centrifugo/libcentrifugo/queue.(*byteQueue).Wait (0.44s)">
<path fill="none" stroke="black" d="M669.049,-1553.86C696.325,-1540.15 732.747,-1521.83 760.877,-1507.69"/>
<polygon fill="black" stroke="black" points="762.713,-1510.68 770.074,-1503.06 759.568,-1504.43 762.713,-1510.68"/>
</a>
</g>
<g id="a_edge50&#45;label"><a xlink:title="github.com/centrifugal/centrifugo/libcentrifugo/conns/clientconn.(*client).sendMessages &#45;&gt; github.com/centrifugal/centrifugo/libcentrifugo/queue.(*byteQueue).Wait (0.44s)">
<text text-anchor="middle" x="744.724" y="-1524.8" font-family="Times,serif" font-size="14.00"> 0.44s</text>
</a>
</g>
</g>
<!-- N4 -->
<g id="node5" class="node"><title>N4</title>
<g id="a_node5"><a xlink:title="net.(*conn).Write (6.06s)">
<polygon fill="#f8f8f8" stroke="black" points="866.77,-1148 789.23,-1148 789.23,-1112 866.77,-1112 866.77,-1148"/>
<text text-anchor="middle" x="828" y="-1131.6" font-family="Times,serif" font-size="8.00">net.(*conn).Write</text>
<text text-anchor="middle" x="828" y="-1123.6" font-family="Times,serif" font-size="8.00">0 of 6.06s(30.87%)</text>
</a>
</g>
</g>
<!-- N5 -->
<g id="node6" class="node"><title>N5</title>
<g id="a_node6"><a xlink:title="net.(*netFD).Write (6.06s)">
<polygon fill="#f8f8f8" stroke="black" points="870.121,-1058.5 785.879,-1058.5 785.879,-1022.5 870.121,-1022.5 870.121,-1058.5"/>
<text text-anchor="middle" x="828" y="-1046.8" font-family="Times,serif" font-size="9.00">net.(*netFD).Write</text>
<text text-anchor="middle" x="828" y="-1037.8" font-family="Times,serif" font-size="9.00">0.02s(0.1%)</text>
<text text-anchor="middle" x="828" y="-1028.8" font-family="Times,serif" font-size="9.00">of 6.06s(30.87%)</text>
</a>
</g>
</g>
<!-- N4&#45;&gt;N5 -->
<g id="edge2" class="edge"><title>N4&#45;&gt;N5</title>
<g id="a_edge2"><a xlink:title="net.(*conn).Write &#45;&gt; net.(*netFD).Write (6.06s)">
<path fill="none" stroke="black" stroke-width="2" d="M828,-1111.71C828,-1099.49 828,-1082.85 828,-1068.84"/>
<polygon fill="black" stroke="black" stroke-width="2" points="831.5,-1068.75 828,-1058.75 824.5,-1068.75 831.5,-1068.75"/>
</a>
</g>
<g id="a_edge2&#45;label"><a xlink:title="net.(*conn).Write &#45;&gt; net.(*netFD).Write (6.06s)">
<text text-anchor="middle" x="844.724" y="-1081.8" font-family="Times,serif" font-size="14.00"> 6.06s</text>
</a>
</g>
</g>
<!-- N6 -->
<g id="node7" class="node"><title>N6</title>
<g id="a_node7"><a xlink:title="syscall.Write (5.77s)">
<polygon fill="#f8f8f8" stroke="black" points="867.241,-967.5 788.759,-967.5 788.759,-931.5 867.241,-931.5 867.241,-967.5"/>
<text text-anchor="middle" x="828" y="-955.8" font-family="Times,serif" font-size="9.00">syscall.Write</text>
<text text-anchor="middle" x="828" y="-946.8" font-family="Times,serif" font-size="9.00">0.02s(0.1%)</text>
<text text-anchor="middle" x="828" y="-937.8" font-family="Times,serif" font-size="9.00">of 5.77s(29.39%)</text>
</a>
</g>
</g>
<!-- N5&#45;&gt;N6 -->
<g id="edge3" class="edge"><title>N5&#45;&gt;N6</title>
<g id="a_edge3"><a xlink:title="net.(*netFD).Write &#45;&gt; syscall.Write (5.77s)">
<path fill="none" stroke="black" stroke-width="2" d="M828,-1022.34C828,-1009.78 828,-992.479 828,-978.002"/>
<polygon fill="black" stroke="black" stroke-width="2" points="831.5,-977.607 828,-967.607 824.5,-977.607 831.5,-977.607"/>
</a>
</g>
<g id="a_edge3&#45;label"><a xlink:title="net.(*netFD).Write &#45;&gt; syscall.Write (5.77s)">
<text text-anchor="middle" x="844.724" y="-990.8" font-family="Times,serif" font-size="14.00"> 5.77s</text>
</a>
</g>
</g>
<!-- N61 -->
<g id="node62" class="node"><title>N61</title>
<g id="a_node62"><a xlink:title="runtime.deferreturn (0.36s)">
<polygon fill="#f8f8f8" stroke="black" points="676.622,-782 567.378,-782 567.378,-738 676.622,-738 676.622,-782"/>
<text text-anchor="middle" x="622" y="-768.4" font-family="Times,serif" font-size="12.00">runtime.deferreturn</text>
<text text-anchor="middle" x="622" y="-756.4" font-family="Times,serif" font-size="12.00">0.26s(1.32%)</text>
<text text-anchor="middle" x="622" y="-744.4" font-family="Times,serif" font-size="12.00">of 0.36s(1.83%)</text>
</a>
</g>
</g>
<!-- N5&#45;&gt;N61 -->
<g id="edge86" class="edge"><title>N5&#45;&gt;N61</title>
<g id="a_edge86"><a xlink:title="net.(*netFD).Write &#45;&gt; runtime.deferreturn (0.08s)">
<path fill="none" stroke="black" d="M816.795,-1022.42C798.201,-994.576 761.132,-941.272 742,-929 712.619,-910.154 691.614,-934.221 665.552,-911 631.936,-881.049 623.605,-826.854 621.901,-792.46"/>
<polygon fill="black" stroke="black" points="625.385,-791.924 621.557,-782.045 618.389,-792.155 625.385,-791.924"/>
</a>
</g>
<g id="a_edge86&#45;label"><a xlink:title="net.(*netFD).Write &#45;&gt; runtime.deferreturn (0.08s)">
<text text-anchor="middle" x="682.724" y="-899.8" font-family="Times,serif" font-size="14.00"> 0.08s</text>
</a>
</g>
</g>
<!-- N7 -->
<g id="node8" class="node"><title>N7</title>
<g id="a_node8"><a xlink:title="syscall.write (5.75s)">
<polygon fill="#f8f8f8" stroke="black" points="867.241,-873.5 788.759,-873.5 788.759,-837.5 867.241,-837.5 867.241,-873.5"/>
<text text-anchor="middle" x="828" y="-861.8" font-family="Times,serif" font-size="9.00">syscall.write</text>
<text text-anchor="middle" x="828" y="-852.8" font-family="Times,serif" font-size="9.00">0.02s(0.1%)</text>
<text text-anchor="middle" x="828" y="-843.8" font-family="Times,serif" font-size="9.00">of 5.75s(29.29%)</text>
</a>
</g>
</g>
<!-- N6&#45;&gt;N7 -->
<g id="edge4" class="edge"><title>N6&#45;&gt;N7</title>
<g id="a_edge4"><a xlink:title="syscall.Write &#45;&gt; syscall.write (5.75s)">
<path fill="none" stroke="black" stroke-width="2" d="M828,-931.196C828,-917.96 828,-899.447 828,-884.163"/>
<polygon fill="black" stroke="black" stroke-width="2" points="831.5,-883.727 828,-873.727 824.5,-883.727 831.5,-883.727"/>
</a>
</g>
<g id="a_edge4&#45;label"><a xlink:title="syscall.Write &#45;&gt; syscall.write (5.75s)">
<text text-anchor="middle" x="844.724" y="-899.8" font-family="Times,serif" font-size="14.00"> 5.75s</text>
</a>
</g>
</g>
<!-- N7&#45;&gt;N2 -->
<g id="edge5" class="edge"><title>N7&#45;&gt;N2</title>
<g id="a_edge5"><a xlink:title="syscall.write &#45;&gt; syscall.Syscall (5.73s)">
<path fill="none" stroke="black" stroke-width="2" d="M828,-837.333C828,-807.084 828,-743.244 828,-698.305"/>
<polygon fill="black" stroke="black" stroke-width="2" points="831.5,-698.173 828,-688.173 824.5,-698.173 831.5,-698.173"/>
</a>
</g>
<g id="a_edge5&#45;label"><a xlink:title="syscall.write &#45;&gt; syscall.Syscall (5.73s)">
<text text-anchor="middle" x="844.724" y="-755.8" font-family="Times,serif" font-size="14.00"> 5.73s</text>
</a>
</g>
</g>
<!-- N16 -->
<g id="node17" class="node"><title>N16</title>
<g id="a_node17"><a xlink:title="github.com/centrifugal/centrifugo/vendor/github.com/gorilla/websocket.(*Conn).WritePreparedMessage (4.44s)">
<polygon fill="#f8f8f8" stroke="black" points="665.533,-1413.5 272.467,-1413.5 272.467,-1377.5 665.533,-1377.5 665.533,-1413.5"/>
<text text-anchor="middle" x="469" y="-1401.8" font-family="Times,serif" font-size="9.00">github.com/centrifugal/centrifugo/vendor/github.com/gorilla/websocket.(*Conn).WritePreparedMessage</text>
<text text-anchor="middle" x="469" y="-1392.8" font-family="Times,serif" font-size="9.00">0.02s(0.1%)</text>
<text text-anchor="middle" x="469" y="-1383.8" font-family="Times,serif" font-size="9.00">of 4.44s(22.62%)</text>
</a>
</g>
</g>
<!-- N8&#45;&gt;N16 -->
<g id="edge13" class="edge"><title>N8&#45;&gt;N16</title>
<g id="a_edge13"><a xlink:title="github.com/centrifugal/centrifugo/libcentrifugo/server/httpserver.(*wsSession).Send &#45;&gt; github.com/centrifugal/centrifugo/vendor/github.com/gorilla/websocket.(*Conn).WritePreparedMessage (4.44s)">
<path fill="none" stroke="black" stroke-width="2" d="M469,-1465.87C469,-1453.78 469,-1437.67 469,-1424.01"/>
<polygon fill="black" stroke="black" stroke-width="2" points="472.5,-1423.71 469,-1413.71 465.5,-1423.71 472.5,-1423.71"/>
</a>
</g>
<g id="a_edge13&#45;label"><a xlink:title="github.com/centrifugal/centrifugo/libcentrifugo/server/httpserver.(*wsSession).Send &#45;&gt; github.com/centrifugal/centrifugo/vendor/github.com/gorilla/websocket.(*Conn).WritePreparedMessage (4.44s)">
<text text-anchor="middle" x="485.724" y="-1436.8" font-family="Times,serif" font-size="14.00"> 4.44s</text>
</a>
</g>
</g>
<!-- N35 -->
<g id="node36" class="node"><title>N35</title>
<g id="a_node36"><a xlink:title="github.com/centrifugal/centrifugo/vendor/github.com/gorilla/websocket.(*messageWriter).flushFrame (0.95s)">
<polygon fill="#f8f8f8" stroke="black" points="1068.04,-1413.5 683.958,-1413.5 683.958,-1377.5 1068.04,-1377.5 1068.04,-1413.5"/>
<text text-anchor="middle" x="876" y="-1401.8" font-family="Times,serif" font-size="9.00">github.com/centrifugal/centrifugo/vendor/github.com/gorilla/websocket.(*messageWriter).flushFrame</text>
<text text-anchor="middle" x="876" y="-1392.8" font-family="Times,serif" font-size="9.00">0.01s(0.051%)</text>
<text text-anchor="middle" x="876" y="-1383.8" font-family="Times,serif" font-size="9.00">of 0.95s(4.84%)</text>
</a>
</g>
</g>
<!-- N8&#45;&gt;N35 -->
<g id="edge32" class="edge"><title>N8&#45;&gt;N35</title>
<g id="a_edge32"><a xlink:title="github.com/centrifugal/centrifugo/libcentrifugo/server/httpserver.(*wsSession).Send ... github.com/centrifugal/centrifugo/vendor/github.com/gorilla/websocket.(*messageWriter).flushFrame (0.88s)">
<path fill="none" stroke="black" stroke-dasharray="1,5" d="M552.837,-1465.98C621.039,-1451.31 717.053,-1430.67 786.689,-1415.7"/>
<polygon fill="black" stroke="black" points="787.725,-1419.06 796.766,-1413.53 786.253,-1412.21 787.725,-1419.06"/>
</a>
</g>
<g id="a_edge32&#45;label"><a xlink:title="github.com/centrifugal/centrifugo/libcentrifugo/server/httpserver.(*wsSession).Send ... github.com/centrifugal/centrifugo/vendor/github.com/gorilla/websocket.(*messageWriter).flushFrame (0.88s)">
<text text-anchor="middle" x="713.724" y="-1436.8" font-family="Times,serif" font-size="14.00"> 0.88s</text>
</a>
</g>
</g>
<!-- N11 -->
<g id="node12" class="node"><title>N11</title>
<g id="a_node12"><a xlink:title="net/http.(*ServeMux).ServeHTTP (4.71s)">
<polygon fill="#f8f8f8" stroke="black" points="2302.48,-1503 2163.52,-1503 2163.52,-1467 2302.48,-1467 2302.48,-1503"/>
<text text-anchor="middle" x="2233" y="-1491.3" font-family="Times,serif" font-size="9.00">net/http.(*ServeMux).ServeHTTP</text>
<text text-anchor="middle" x="2233" y="-1482.3" font-family="Times,serif" font-size="9.00">0.01s(0.051%)</text>
<text text-anchor="middle" x="2233" y="-1473.3" font-family="Times,serif" font-size="9.00">of 4.71s(23.99%)</text>
</a>
</g>
</g>
<!-- N9&#45;&gt;N11 -->
<g id="edge8" class="edge"><title>N9&#45;&gt;N11</title>
<g id="a_edge8"><a xlink:title="net/http.(*conn).serve ... net/http.(*ServeMux).ServeHTTP (4.71s)">
<path fill="none" stroke="black" stroke-width="2" stroke-dasharray="1,5" d="M1535.88,-1556.49C1539.28,-1555.55 1542.68,-1554.7 1546,-1554 1675.65,-1526.56 2004.79,-1524.74 2153.37,-1503.91"/>
<polygon fill="black" stroke="black" stroke-width="2" points="2153.93,-1507.36 2163.32,-1502.44 2152.91,-1500.44 2153.93,-1507.36"/>
</a>
</g>
<g id="a_edge8&#45;label"><a xlink:title="net/http.(*conn).serve ... net/http.(*ServeMux).ServeHTTP (4.71s)">
<text text-anchor="middle" x="1936.72" y="-1524.8" font-family="Times,serif" font-size="14.00"> 4.71s</text>
</a>
</g>
</g>
<!-- N74 -->
<g id="node75" class="node"><title>N74</title>
<g id="a_node75"><a xlink:title="net/http.(*conn).readRequest (0.29s)">
<polygon fill="#f8f8f8" stroke="black" points="1805.36,-1503 1696.64,-1503 1696.64,-1467 1805.36,-1467 1805.36,-1503"/>
<text text-anchor="middle" x="1751" y="-1486.6" font-family="Times,serif" font-size="8.00">net/http.(*conn).readRequest</text>
<text text-anchor="middle" x="1751" y="-1478.6" font-family="Times,serif" font-size="8.00">0 of 0.29s(1.48%)</text>
</a>
</g>
</g>
<!-- N9&#45;&gt;N74 -->
<g id="edge67" class="edge"><title>N9&#45;&gt;N74</title>
<g id="a_edge67"><a xlink:title="net/http.(*conn).serve &#45;&gt; net/http.(*conn).readRequest (0.29s)">
<path fill="none" stroke="black" d="M1537.64,-1556.86C1540.47,-1555.89 1543.27,-1554.93 1546,-1554 1593.99,-1537.69 1648.45,-1519.64 1689.17,-1506.25"/>
<polygon fill="black" stroke="black" points="1690.28,-1509.56 1698.69,-1503.12 1688.1,-1502.91 1690.28,-1509.56"/>
</a>
</g>
<g id="a_edge67&#45;label"><a xlink:title="net/http.(*conn).serve &#45;&gt; net/http.(*conn).readRequest (0.29s)">
<text text-anchor="middle" x="1657.72" y="-1524.8" font-family="Times,serif" font-size="14.00"> 0.29s</text>
</a>
</g>
</g>
<!-- N10 -->
<g id="node11" class="node"><title>N10</title>
<g id="a_node11"><a xlink:title="github.com/centrifugal/centrifugo/vendor/github.com/gorilla/websocket.(*Conn).write (5.18s)">
<polygon fill="#f8f8f8" stroke="black" points="805.077,-1325 442.923,-1325 442.923,-1287 805.077,-1287 805.077,-1325"/>
<text text-anchor="middle" x="624" y="-1313" font-family="Times,serif" font-size="10.00">github.com/centrifugal/centrifugo/vendor/github.com/gorilla/websocket.(*Conn).write</text>
<text text-anchor="middle" x="624" y="-1303" font-family="Times,serif" font-size="10.00">0.04s(0.2%)</text>
<text text-anchor="middle" x="624" y="-1293" font-family="Times,serif" font-size="10.00">of 5.18s(26.39%)</text>
</a>
</g>
</g>
<!-- N10&#45;&gt;N4 -->
<g id="edge15" class="edge"><title>N10&#45;&gt;N4</title>
<g id="a_edge15"><a xlink:title="github.com/centrifugal/centrifugo/vendor/github.com/gorilla/websocket.(*Conn).write &#45;&gt; net.(*conn).Write (4.24s)">
<path fill="none" stroke="black" stroke-width="2" d="M654.509,-1286.91C690.01,-1264.89 749.104,-1225.13 791,-1181 798.174,-1173.44 805.196,-1164.48 811.162,-1156.25"/>
<polygon fill="black" stroke="black" stroke-width="2" points="814.062,-1158.21 816.958,-1148.02 808.338,-1154.18 814.062,-1158.21"/>
</a>
</g>
<g id="a_edge15&#45;label"><a xlink:title="github.com/centrifugal/centrifugo/vendor/github.com/gorilla/websocket.(*Conn).write &#45;&gt; net.(*conn).Write (4.24s)">
<text text-anchor="middle" x="787.724" y="-1213.8" font-family="Times,serif" font-size="14.00"> 4.24s</text>
</a>
</g>
</g>
<!-- N37 -->
<g id="node38" class="node"><title>N37</title>
<g id="a_node38"><a xlink:title="net.(*conn).SetWriteDeadline (0.82s)">
<polygon fill="#f8f8f8" stroke="black" points="713.601,-1236 590.399,-1236 590.399,-1200 713.601,-1200 713.601,-1236"/>
<text text-anchor="middle" x="652" y="-1224.3" font-family="Times,serif" font-size="9.00">net.(*conn).SetWriteDeadline</text>
<text text-anchor="middle" x="652" y="-1215.3" font-family="Times,serif" font-size="9.00">0.01s(0.051%)</text>
<text text-anchor="middle" x="652" y="-1206.3" font-family="Times,serif" font-size="9.00">of 0.82s(4.18%)</text>
</a>
</g>
</g>
<!-- N10&#45;&gt;N37 -->
<g id="edge38" class="edge"><title>N10&#45;&gt;N37</title>
<g id="a_edge38"><a xlink:title="github.com/centrifugal/centrifugo/vendor/github.com/gorilla/websocket.(*Conn).write &#45;&gt; net.(*conn).SetWriteDeadline (0.58s)">
<path fill="none" stroke="black" d="M629.938,-1286.76C633.827,-1274.82 638.975,-1259.01 643.32,-1245.66"/>
<polygon fill="black" stroke="black" points="646.683,-1246.63 646.451,-1236.04 640.027,-1244.47 646.683,-1246.63"/>
</a>
</g>
<g id="a_edge38&#45;label"><a xlink:title="github.com/centrifugal/centrifugo/vendor/github.com/gorilla/websocket.(*Conn).write &#45;&gt; net.(*conn).SetWriteDeadline (0.58s)">
<text text-anchor="middle" x="656.724" y="-1257.8" font-family="Times,serif" font-size="14.00"> 0.58s</text>
</a>
</g>
</g>
<!-- N10&#45;&gt;N61 -->
<g id="edge92" class="edge"><title>N10&#45;&gt;N61</title>
<g id="a_edge92"><a xlink:title="github.com/centrifugal/centrifugo/vendor/github.com/gorilla/websocket.(*Conn).write &#45;&gt; runtime.deferreturn (0.04s)">
<path fill="none" stroke="black" d="M598.671,-1286.87C580.059,-1271.25 558,-1246.85 558,-1219 558,-1219 558,-1219 558,-854.5 558,-829.594 573.654,-806.454 589.479,-789.425"/>
<polygon fill="black" stroke="black" points="592.209,-791.639 596.706,-782.046 587.208,-786.741 592.209,-791.639"/>
</a>
</g>
<g id="a_edge92&#45;label"><a xlink:title="github.com/centrifugal/centrifugo/vendor/github.com/gorilla/websocket.(*Conn).write &#45;&gt; runtime.deferreturn (0.04s)">
<text text-anchor="middle" x="574.724" y="-1036.3" font-family="Times,serif" font-size="14.00"> 0.04s</text>
</a>
</g>
</g>
<!-- N13 -->
<g id="node14" class="node"><title>N13</title>
<g id="a_node14"><a xlink:title="net/http.HandlerFunc.ServeHTTP (4.70s)">
<polygon fill="#f8f8f8" stroke="black" points="2046.42,-1413.5 1921.58,-1413.5 1921.58,-1377.5 2046.42,-1377.5 2046.42,-1413.5"/>
<text text-anchor="middle" x="1984" y="-1397.1" font-family="Times,serif" font-size="8.00">net/http.HandlerFunc.ServeHTTP</text>
<text text-anchor="middle" x="1984" y="-1389.1" font-family="Times,serif" font-size="8.00">0 of 4.70s(23.94%)</text>
</a>
</g>
</g>
<!-- N11&#45;&gt;N13 -->
<g id="edge9" class="edge"><title>N11&#45;&gt;N13</title>
<g id="a_edge9"><a xlink:title="net/http.(*ServeMux).ServeHTTP &#45;&gt; net/http.HandlerFunc.ServeHTTP (4.70s)">
<path fill="none" stroke="black" stroke-width="2" d="M2184.4,-1466.92C2143.61,-1452.59 2085.24,-1432.08 2042.01,-1416.89"/>
<polygon fill="black" stroke="black" stroke-width="2" points="2043.07,-1413.55 2032.48,-1413.54 2040.75,-1420.15 2043.07,-1413.55"/>
</a>
</g>
<g id="a_edge9&#45;label"><a xlink:title="net/http.(*ServeMux).ServeHTTP &#45;&gt; net/http.HandlerFunc.ServeHTTP (4.70s)">
<text text-anchor="middle" x="2139.72" y="-1436.8" font-family="Times,serif" font-size="14.00"> 4.70s</text>
</a>
</g>
</g>
<!-- N12 -->
<g id="node13" class="node"><title>N12</title>
<g id="a_node13"><a xlink:title="github.com/centrifugal/centrifugo/libcentrifugo/server/httpserver.(*HTTPServer).Logged.func1 (4.70s)">
<polygon fill="#f8f8f8" stroke="black" points="2145.13,-1503 1822.87,-1503 1822.87,-1467 2145.13,-1467 2145.13,-1503"/>
<text text-anchor="middle" x="1984" y="-1486.6" font-family="Times,serif" font-size="8.00">github.com/centrifugal/centrifugo/libcentrifugo/server/httpserver.(*HTTPServer).Logged.func1</text>
<text text-anchor="middle" x="1984" y="-1478.6" font-family="Times,serif" font-size="8.00">0 of 4.70s(23.94%)</text>
</a>
</g>
</g>
<!-- N12&#45;&gt;N13 -->
<g id="edge10" class="edge"><title>N12&#45;&gt;N13</title>
<g id="a_edge10"><a xlink:title="github.com/centrifugal/centrifugo/libcentrifugo/server/httpserver.(*HTTPServer).Logged.func1 &#45;&gt; net/http.HandlerFunc.ServeHTTP (4.69s)">
<path fill="none" stroke="black" stroke-width="2" d="M1984,-1466.71C1984,-1454.49 1984,-1437.85 1984,-1423.84"/>
<polygon fill="black" stroke="black" stroke-width="2" points="1987.5,-1423.75 1984,-1413.75 1980.5,-1423.75 1987.5,-1423.75"/>
</a>
</g>
<g id="a_edge10&#45;label"><a xlink:title="github.com/centrifugal/centrifugo/libcentrifugo/server/httpserver.(*HTTPServer).Logged.func1 &#45;&gt; net/http.HandlerFunc.ServeHTTP (4.69s)">
<text text-anchor="middle" x="2000.72" y="-1436.8" font-family="Times,serif" font-size="14.00"> 4.69s</text>
</a>
</g>
</g>
<!-- N15 -->
<g id="node16" class="node"><title>N15</title>
<g id="a_node16"><a xlink:title="github.com/centrifugal/centrifugo/libcentrifugo/server/httpserver.(*HTTPServer).RawWebsocketHandler (4.67s)">
<polygon fill="#f8f8f8" stroke="black" points="2181.41,-1324 1786.59,-1324 1786.59,-1288 2181.41,-1288 2181.41,-1324"/>
<text text-anchor="middle" x="1984" y="-1312.3" font-family="Times,serif" font-size="9.00">github.com/centrifugal/centrifugo/libcentrifugo/server/httpserver.(*HTTPServer).RawWebsocketHandler</text>
<text text-anchor="middle" x="1984" y="-1303.3" font-family="Times,serif" font-size="9.00">0.01s(0.051%)</text>
<text text-anchor="middle" x="1984" y="-1294.3" font-family="Times,serif" font-size="9.00">of 4.67s(23.79%)</text>
</a>
</g>
</g>
<!-- N13&#45;&gt;N15 -->
<g id="edge12" class="edge"><title>N13&#45;&gt;N15</title>
<g id="a_edge12"><a xlink:title="net/http.HandlerFunc.ServeHTTP ... github.com/centrifugal/centrifugo/libcentrifugo/server/httpserver.(*HTTPServer).RawWebsocketHandler (4.67s)">
<path fill="none" stroke="black" stroke-width="2" stroke-dasharray="1,5" d="M1984,-1377.21C1984,-1364.99 1984,-1348.35 1984,-1334.34"/>
<polygon fill="black" stroke="black" stroke-width="2" points="1987.5,-1334.25 1984,-1324.25 1980.5,-1334.25 1987.5,-1334.25"/>
</a>
</g>
<g id="a_edge12&#45;label"><a xlink:title="net/http.HandlerFunc.ServeHTTP ... github.com/centrifugal/centrifugo/libcentrifugo/server/httpserver.(*HTTPServer).RawWebsocketHandler (4.67s)">
<text text-anchor="middle" x="2000.72" y="-1345.8" font-family="Times,serif" font-size="14.00"> 4.67s</text>
</a>
</g>
</g>
<!-- N14 -->
<g id="node15" class="node"><title>N14</title>
<g id="a_node15"><a xlink:title="github.com/centrifugal/centrifugo/libcentrifugo/server/httpserver.(*HTTPServer).WrapShutdown.func1 (4.69s)">
<polygon fill="#f8f8f8" stroke="black" points="1678.59,-1503 1331.41,-1503 1331.41,-1467 1678.59,-1467 1678.59,-1503"/>
<text text-anchor="middle" x="1505" y="-1486.6" font-family="Times,serif" font-size="8.00">github.com/centrifugal/centrifugo/libcentrifugo/server/httpserver.(*HTTPServer).WrapShutdown.func1</text>
<text text-anchor="middle" x="1505" y="-1478.6" font-family="Times,serif" font-size="8.00">0 of 4.69s(23.89%)</text>
</a>
</g>
</g>
<!-- N14&#45;&gt;N13 -->
<g id="edge11" class="edge"><title>N14&#45;&gt;N13</title>
<g id="a_edge11"><a xlink:title="github.com/centrifugal/centrifugo/libcentrifugo/server/httpserver.(*HTTPServer).WrapShutdown.func1 &#45;&gt; net/http.HandlerFunc.ServeHTTP (4.69s)">
<path fill="none" stroke="black" stroke-width="2" d="M1598.21,-1466.97C1689.87,-1450.23 1827.89,-1425.02 1911.6,-1409.73"/>
<polygon fill="black" stroke="black" stroke-width="2" points="1912.33,-1413.15 1921.53,-1407.91 1911.07,-1406.26 1912.33,-1413.15"/>
</a>
</g>
<g id="a_edge11&#45;label"><a xlink:title="github.com/centrifugal/centrifugo/libcentrifugo/server/httpserver.(*HTTPServer).WrapShutdown.func1 &#45;&gt; net/http.HandlerFunc.ServeHTTP (4.69s)">
<text text-anchor="middle" x="1789.72" y="-1436.8" font-family="Times,serif" font-size="14.00"> 4.69s</text>
</a>
</g>
</g>
<!-- N21 -->
<g id="node22" class="node"><title>N21</title>
<g id="a_node22"><a xlink:title="github.com/centrifugal/centrifugo/vendor/github.com/gorilla/websocket.(*Conn).NextReader (2.14s)">
<polygon fill="#f8f8f8" stroke="black" points="2145.78,-1237 1756.22,-1237 1756.22,-1199 2145.78,-1199 2145.78,-1237"/>
<text text-anchor="middle" x="1951" y="-1225" font-family="Times,serif" font-size="10.00">github.com/centrifugal/centrifugo/vendor/github.com/gorilla/websocket.(*Conn).NextReader</text>
<text text-anchor="middle" x="1951" y="-1215" font-family="Times,serif" font-size="10.00">0.04s(0.2%)</text>
<text text-anchor="middle" x="1951" y="-1205" font-family="Times,serif" font-size="10.00">of 2.14s(10.90%)</text>
</a>
</g>
</g>
<!-- N15&#45;&gt;N21 -->
<g id="edge19" class="edge"><title>N15&#45;&gt;N21</title>
<g id="a_edge19"><a xlink:title="github.com/centrifugal/centrifugo/libcentrifugo/server/httpserver.(*HTTPServer).RawWebsocketHandler ... github.com/centrifugal/centrifugo/vendor/github.com/gorilla/websocket.(*Conn).NextReader (2.14s)">
<path fill="none" stroke="black" stroke-dasharray="1,5" d="M1977.32,-1287.6C1972.85,-1275.94 1966.86,-1260.34 1961.73,-1246.96"/>
<polygon fill="black" stroke="black" points="1964.86,-1245.35 1958.01,-1237.27 1958.32,-1247.86 1964.86,-1245.35"/>
</a>
</g>
<g id="a_edge19&#45;label"><a xlink:title="github.com/centrifugal/centrifugo/libcentrifugo/server/httpserver.(*HTTPServer).RawWebsocketHandler ... github.com/centrifugal/centrifugo/vendor/github.com/gorilla/websocket.(*Conn).NextReader (2.14s)">
<text text-anchor="middle" x="1985.72" y="-1257.8" font-family="Times,serif" font-size="14.00"> 2.14s</text>
</a>
</g>
</g>
<!-- N27 -->
<g id="node28" class="node"><title>N27</title>
<g id="a_node28"><a xlink:title="github.com/centrifugal/centrifugo/libcentrifugo/conns/clientconn.(*client).Handle (1.46s)">
<polygon fill="#f8f8f8" stroke="black" points="2474.65,-1236 2163.35,-1236 2163.35,-1200 2474.65,-1200 2474.65,-1236"/>
<text text-anchor="middle" x="2319" y="-1224.3" font-family="Times,serif" font-size="9.00">github.com/centrifugal/centrifugo/libcentrifugo/conns/clientconn.(*client).Handle</text>
<text text-anchor="middle" x="2319" y="-1215.3" font-family="Times,serif" font-size="9.00">0.02s(0.1%)</text>
<text text-anchor="middle" x="2319" y="-1206.3" font-family="Times,serif" font-size="9.00">of 1.46s(7.44%)</text>
</a>
</g>
</g>
<!-- N15&#45;&gt;N27 -->
<g id="edge23" class="edge"><title>N15&#45;&gt;N27</title>
<g id="a_edge23"><a xlink:title="github.com/centrifugal/centrifugo/libcentrifugo/server/httpserver.(*HTTPServer).RawWebsocketHandler &#45;&gt; github.com/centrifugal/centrifugo/libcentrifugo/conns/clientconn.(*client).Handle (1.46s)">
<path fill="none" stroke="black" d="M2050.59,-1287.91C2105.96,-1273.69 2184.8,-1253.45 2242.71,-1238.59"/>
<polygon fill="black" stroke="black" points="2243.72,-1241.94 2252.54,-1236.06 2241.98,-1235.16 2243.72,-1241.94"/>
</a>
</g>
<g id="a_edge23&#45;label"><a xlink:title="github.com/centrifugal/centrifugo/libcentrifugo/server/httpserver.(*HTTPServer).RawWebsocketHandler &#45;&gt; github.com/centrifugal/centrifugo/libcentrifugo/conns/clientconn.(*client).Handle (1.46s)">
<text text-anchor="middle" x="2187.72" y="-1257.8" font-family="Times,serif" font-size="14.00"> 1.46s</text>
</a>
</g>
</g>
<!-- N64 -->
<g id="node65" class="node"><title>N64</title>
<g id="a_node65"><a xlink:title="github.com/centrifugal/centrifugo/vendor/github.com/gorilla/websocket.(*Upgrader).Upgrade (0.32s)">
<polygon fill="#f8f8f8" stroke="black" points="1646.39,-1236 1291.61,-1236 1291.61,-1200 1646.39,-1200 1646.39,-1236"/>
<text text-anchor="middle" x="1469" y="-1224.3" font-family="Times,serif" font-size="9.00">github.com/centrifugal/centrifugo/vendor/github.com/gorilla/websocket.(*Upgrader).Upgrade</text>
<text text-anchor="middle" x="1469" y="-1215.3" font-family="Times,serif" font-size="9.00">0.02s(0.1%)</text>
<text text-anchor="middle" x="1469" y="-1206.3" font-family="Times,serif" font-size="9.00">of 0.32s(1.63%)</text>
</a>
</g>
</g>
<!-- N15&#45;&gt;N64 -->
<g id="edge57" class="edge"><title>N15&#45;&gt;N64</title>
<g id="a_edge57"><a xlink:title="github.com/centrifugal/centrifugo/libcentrifugo/server/httpserver.(*HTTPServer).RawWebsocketHandler &#45;&gt; github.com/centrifugal/centrifugo/vendor/github.com/gorilla/websocket.(*Upgrader).Upgrade (0.32s)">
<path fill="none" stroke="black" d="M1880.85,-1287.97C1844.7,-1281.99 1803.82,-1275.22 1766.55,-1269 1704.77,-1258.7 1635.79,-1247.11 1579.81,-1237.69"/>
<polygon fill="black" stroke="black" points="1580.32,-1234.22 1569.87,-1236.01 1579.15,-1241.12 1580.32,-1234.22"/>
</a>
</g>
<g id="a_edge57&#45;label"><a xlink:title="github.com/centrifugal/centrifugo/libcentrifugo/server/httpserver.(*HTTPServer).RawWebsocketHandler &#45;&gt; github.com/centrifugal/centrifugo/vendor/github.com/gorilla/websocket.(*Upgrader).Upgrade (0.32s)">
<text text-anchor="middle" x="1782.72" y="-1257.8" font-family="Times,serif" font-size="14.00"> 0.32s</text>
</a>
</g>
</g>
<!-- N67 -->
<g id="node68" class="node"><title>N67</title>
<g id="a_node68"><a xlink:title="github.com/centrifugal/centrifugo/libcentrifugo/conns/clientconn.(*client).Close (0.30s)">
<polygon fill="#f8f8f8" stroke="black" points="1273.67,-1236 968.334,-1236 968.334,-1200 1273.67,-1200 1273.67,-1236"/>
<text text-anchor="middle" x="1121" y="-1224.3" font-family="Times,serif" font-size="9.00">github.com/centrifugal/centrifugo/libcentrifugo/conns/clientconn.(*client).Close</text>
<text text-anchor="middle" x="1121" y="-1215.3" font-family="Times,serif" font-size="9.00">0.01s(0.051%)</text>
<text text-anchor="middle" x="1121" y="-1206.3" font-family="Times,serif" font-size="9.00">of 0.30s(1.53%)</text>
</a>
</g>
</g>
<!-- N15&#45;&gt;N67 -->
<g id="edge61" class="edge"><title>N15&#45;&gt;N67</title>
<g id="a_edge61"><a xlink:title="github.com/centrifugal/centrifugo/libcentrifugo/server/httpserver.(*HTTPServer).RawWebsocketHandler &#45;&gt; github.com/centrifugal/centrifugo/libcentrifugo/conns/clientconn.(*client).Close (0.30s)">
<path fill="none" stroke="black" d="M1801.28,-1287.98C1662.33,-1274.87 1466.13,-1256 1283.68,-1237.06"/>
<polygon fill="black" stroke="black" points="1283.93,-1233.57 1273.62,-1236.02 1283.21,-1240.53 1283.93,-1233.57"/>
</a>
</g>
<g id="a_edge61&#45;label"><a xlink:title="github.com/centrifugal/centrifugo/libcentrifugo/server/httpserver.(*HTTPServer).RawWebsocketHandler &#45;&gt; github.com/centrifugal/centrifugo/libcentrifugo/conns/clientconn.(*client).Close (0.30s)">
<text text-anchor="middle" x="1607.72" y="-1257.8" font-family="Times,serif" font-size="14.00"> 0.30s</text>
</a>
</g>
</g>
<!-- N72 -->
<g id="node73" class="node"><title>N72</title>
<g id="a_node73"><a xlink:title="io/ioutil.ReadAll (0.29s)">
<polygon fill="#f8f8f8" stroke="black" points="1737.77,-1236 1664.23,-1236 1664.23,-1200 1737.77,-1200 1737.77,-1236"/>
<text text-anchor="middle" x="1701" y="-1219.6" font-family="Times,serif" font-size="8.00">io/ioutil.ReadAll</text>
<text text-anchor="middle" x="1701" y="-1211.6" font-family="Times,serif" font-size="8.00">0 of 0.29s(1.48%)</text>
</a>
</g>
</g>
<!-- N15&#45;&gt;N72 -->
<g id="edge65" class="edge"><title>N15&#45;&gt;N72</title>
<g id="a_edge65"><a xlink:title="github.com/centrifugal/centrifugo/libcentrifugo/server/httpserver.(*HTTPServer).RawWebsocketHandler ... io/ioutil.ReadAll (0.29s)">
<path fill="none" stroke="black" stroke-dasharray="1,5" d="M1918.36,-1287.94C1872.83,-1275.7 1810.7,-1258.19 1747.53,-1237.03"/>
<polygon fill="black" stroke="black" points="1748.39,-1233.63 1737.8,-1233.75 1746.15,-1240.26 1748.39,-1233.63"/>
</a>
</g>
<g id="a_edge65&#45;label"><a xlink:title="github.com/centrifugal/centrifugo/libcentrifugo/server/httpserver.(*HTTPServer).RawWebsocketHandler ... io/ioutil.ReadAll (0.29s)">
<text text-anchor="middle" x="1859.72" y="-1257.8" font-family="Times,serif" font-size="14.00"> 0.29s</text>
</a>
</g>
</g>
<!-- N16&#45;&gt;N10 -->
<g id="edge14" class="edge"><title>N16&#45;&gt;N10</title>
<g id="a_edge14"><a xlink:title="github.com/centrifugal/centrifugo/vendor/github.com/gorilla/websocket.(*Conn).WritePreparedMessage &#45;&gt; github.com/centrifugal/centrifugo/vendor/github.com/gorilla/websocket.(*Conn).write (4.24s)">
<path fill="none" stroke="black" stroke-width="2" d="M499.254,-1377.42C523.133,-1363.94 556.689,-1345 582.985,-1330.15"/>
<polygon fill="black" stroke="black" stroke-width="2" points="584.967,-1333.05 591.955,-1325.09 581.526,-1326.96 584.967,-1333.05"/>
</a>
</g>
<g id="a_edge14&#45;label"><a xlink:title="github.com/centrifugal/centrifugo/vendor/github.com/gorilla/websocket.(*Conn).WritePreparedMessage &#45;&gt; github.com/centrifugal/centrifugo/vendor/github.com/gorilla/websocket.(*Conn).write (4.24s)">
<text text-anchor="middle" x="572.724" y="-1345.8" font-family="Times,serif" font-size="14.00"> 4.24s</text>
</a>
</g>
</g>
<!-- N18 -->
<g id="node19" class="node"><title>N18</title>
<g id="a_node19"><a xlink:title="github.com/centrifugal/centrifugo/libcentrifugo/server/httpserver.(*wsSession).ping (2.49s)">
<polygon fill="#f8f8f8" stroke="black" points="1313.7,-1504 962.3,-1504 962.3,-1466 1313.7,-1466 1313.7,-1504"/>
<text text-anchor="middle" x="1138" y="-1492" font-family="Times,serif" font-size="10.00">github.com/centrifugal/centrifugo/libcentrifugo/server/httpserver.(*wsSession).ping</text>
<text text-anchor="middle" x="1138" y="-1482" font-family="Times,serif" font-size="10.00">0.03s(0.15%)</text>
<text text-anchor="middle" x="1138" y="-1472" font-family="Times,serif" font-size="10.00">of 2.49s(12.68%)</text>
</a>
</g>
</g>
<!-- N17&#45;&gt;N18 -->
<g id="edge17" class="edge"><title>N17&#45;&gt;N18</title>
<g id="a_edge17"><a xlink:title="github.com/centrifugal/centrifugo/libcentrifugo/server/httpserver.(*wsSession).(github.com/centrifugal/centrifugo/libcentrifugo/server/httpserver.ping)&#45;fm &#45;&gt; github.com/centrifugal/centrifugo/libcentrifugo/server/httpserver.(*wsSession).ping (2.49s)">
<path fill="none" stroke="black" d="M1138,-1556.21C1138,-1544.23 1138,-1528 1138,-1514.16"/>
<polygon fill="black" stroke="black" points="1141.5,-1514.15 1138,-1504.15 1134.5,-1514.15 1141.5,-1514.15"/>
</a>
</g>
<g id="a_edge17&#45;label"><a xlink:title="github.com/centrifugal/centrifugo/libcentrifugo/server/httpserver.(*wsSession).(github.com/centrifugal/centrifugo/libcentrifugo/server/httpserver.ping)&#45;fm &#45;&gt; github.com/centrifugal/centrifugo/libcentrifugo/server/httpserver.(*wsSession).ping (2.49s)">
<text text-anchor="middle" x="1154.72" y="-1524.8" font-family="Times,serif" font-size="14.00"> 2.49s</text>
</a>
</g>
</g>
<!-- N19 -->
<g id="node20" class="node"><title>N19</title>
<g id="a_node20"><a xlink:title="github.com/centrifugal/centrifugo/vendor/github.com/gorilla/websocket.(*Conn).WriteControl (2.39s)">
<polygon fill="#f8f8f8" stroke="black" points="1590.46,-1414.5 1195.54,-1414.5 1195.54,-1376.5 1590.46,-1376.5 1590.46,-1414.5"/>
<text text-anchor="middle" x="1393" y="-1402.5" font-family="Times,serif" font-size="10.00">github.com/centrifugal/centrifugo/vendor/github.com/gorilla/websocket.(*Conn).WriteControl</text>
<text text-anchor="middle" x="1393" y="-1392.5" font-family="Times,serif" font-size="10.00">0.07s(0.36%)</text>
<text text-anchor="middle" x="1393" y="-1382.5" font-family="Times,serif" font-size="10.00">of 2.39s(12.18%)</text>
</a>
</g>
</g>
<!-- N18&#45;&gt;N19 -->
<g id="edge18" class="edge"><title>N18&#45;&gt;N19</title>
<g id="a_edge18"><a xlink:title="github.com/centrifugal/centrifugo/libcentrifugo/server/httpserver.(*wsSession).ping &#45;&gt; github.com/centrifugal/centrifugo/vendor/github.com/gorilla/websocket.(*Conn).WriteControl (2.37s)">
<path fill="none" stroke="black" d="M1190.53,-1465.98C1231.33,-1451.98 1288.01,-1432.53 1331.03,-1417.76"/>
<polygon fill="black" stroke="black" points="1332.22,-1421.06 1340.54,-1414.5 1329.95,-1414.44 1332.22,-1421.06"/>
</a>
</g>
<g id="a_edge18&#45;label"><a xlink:title="github.com/centrifugal/centrifugo/libcentrifugo/server/httpserver.(*wsSession).ping &#45;&gt; github.com/centrifugal/centrifugo/vendor/github.com/gorilla/websocket.(*Conn).WriteControl (2.37s)">
<text text-anchor="middle" x="1297.72" y="-1436.8" font-family="Times,serif" font-size="14.00"> 2.37s</text>
</a>
</g>
</g>
<!-- N19&#45;&gt;N4 -->
<g id="edge22" class="edge"><title>N19&#45;&gt;N4</title>
<g id="a_edge22"><a xlink:title="github.com/centrifugal/centrifugo/vendor/github.com/gorilla/websocket.(*Conn).WriteControl &#45;&gt; net.(*conn).Write (1.67s)">
<path fill="none" stroke="black" d="M1321.48,-1376.45C1232.79,-1352.32 1078.69,-1304.61 959,-1237 918.546,-1214.15 877.869,-1178.85 852.815,-1155.35"/>
<polygon fill="black" stroke="black" points="854.91,-1152.51 845.249,-1148.17 850.089,-1157.59 854.91,-1152.51"/>
</a>
</g>
<g id="a_edge22&#45;label"><a xlink:title="github.com/centrifugal/centrifugo/vendor/github.com/gorilla/websocket.(*Conn).WriteControl &#45;&gt; net.(*conn).Write (1.67s)">
<text text-anchor="middle" x="1035.72" y="-1257.8" font-family="Times,serif" font-size="14.00"> 1.67s</text>
</a>
</g>
</g>
<!-- N19&#45;&gt;N37 -->
<g id="edge74" class="edge"><title>N19&#45;&gt;N37</title>
<g id="a_edge74"><a xlink:title="github.com/centrifugal/centrifugo/vendor/github.com/gorilla/websocket.(*Conn).WriteControl &#45;&gt; net.(*conn).SetWriteDeadline (0.24s)">
<path fill="none" stroke="black" d="M1205.53,-1376.48C1199.28,-1375.97 1193.09,-1375.47 1187,-1375 1120.63,-1369.86 949.078,-1383.46 888,-1357 846.46,-1339 851.93,-1311.72 814,-1287 783.545,-1267.15 746.339,-1251.05 715.266,-1239.5"/>
<polygon fill="black" stroke="black" points="716.428,-1236.2 705.834,-1236.07 714.032,-1242.78 716.428,-1236.2"/>
</a>
</g>
<g id="a_edge74&#45;label"><a xlink:title="github.com/centrifugal/centrifugo/vendor/github.com/gorilla/websocket.(*Conn).WriteControl &#45;&gt; net.(*conn).SetWriteDeadline (0.24s)">
<text text-anchor="middle" x="866.724" y="-1301.8" font-family="Times,serif" font-size="14.00"> 0.24s</text>
</a>
</g>
</g>
<!-- N53 -->
<g id="node54" class="node"><title>N53</title>
<g id="a_node54"><a xlink:title="runtime.makeslice (0.49s)">
<polygon fill="#f8f8f8" stroke="black" points="733.226,-967.5 650.774,-967.5 650.774,-931.5 733.226,-931.5 733.226,-967.5"/>
<text text-anchor="middle" x="692" y="-955.8" font-family="Times,serif" font-size="9.00">runtime.makeslice</text>
<text text-anchor="middle" x="692" y="-946.8" font-family="Times,serif" font-size="9.00">0.01s(0.051%)</text>
<text text-anchor="middle" x="692" y="-937.8" font-family="Times,serif" font-size="9.00">of 0.49s(2.50%)</text>
</a>
</g>
</g>
<!-- N19&#45;&gt;N53 -->
<g id="edge88" class="edge"><title>N19&#45;&gt;N53</title>
<g id="a_edge88"><a xlink:title="github.com/centrifugal/centrifugo/vendor/github.com/gorilla/websocket.(*Conn).WriteControl &#45;&gt; runtime.makeslice (0.07s)">
<path fill="none" stroke="black" d="M1244.68,-1376.48C1102.96,-1351.05 894.476,-1290.66 780,-1149 736.845,-1095.59 710.551,-1017.7 698.971,-977.196"/>
<polygon fill="black" stroke="black" points="702.33,-976.209 696.28,-967.511 695.585,-978.083 702.33,-976.209"/>
</a>
</g>
<g id="a_edge88&#45;label"><a xlink:title="github.com/centrifugal/centrifugo/vendor/github.com/gorilla/websocket.(*Conn).WriteControl &#45;&gt; runtime.makeslice (0.07s)">
<text text-anchor="middle" x="824.724" y="-1169.8" font-family="Times,serif" font-size="14.00"> 0.07s</text>
</a>
</g>
</g>
<!-- N20 -->
<g id="node21" class="node"><title>N20</title>
<g id="a_node21"><a xlink:title="runtime.mcall (2.18s)">
<polygon fill="#f8f8f8" stroke="black" points="209.082,-1236 130.918,-1236 130.918,-1200 209.082,-1200 209.082,-1236"/>
<text text-anchor="middle" x="170" y="-1224.3" font-family="Times,serif" font-size="9.00">runtime.mcall</text>
<text text-anchor="middle" x="170" y="-1215.3" font-family="Times,serif" font-size="9.00">0.01s(0.051%)</text>
<text text-anchor="middle" x="170" y="-1206.3" font-family="Times,serif" font-size="9.00">of 2.18s(11.11%)</text>
</a>
</g>
</g>
<!-- N30 -->
<g id="node31" class="node"><title>N30</title>
<g id="a_node31"><a xlink:title="runtime.park_m (1.39s)">
<polygon fill="#f8f8f8" stroke="black" points="207.241,-1148 132.759,-1148 132.759,-1112 207.241,-1112 207.241,-1148"/>
<text text-anchor="middle" x="170" y="-1136.3" font-family="Times,serif" font-size="9.00">runtime.park_m</text>
<text text-anchor="middle" x="170" y="-1127.3" font-family="Times,serif" font-size="9.00">0.02s(0.1%)</text>
<text text-anchor="middle" x="170" y="-1118.3" font-family="Times,serif" font-size="9.00">of 1.39s(7.08%)</text>
</a>
</g>
</g>
<!-- N20&#45;&gt;N30 -->
<g id="edge26" class="edge"><title>N20&#45;&gt;N30</title>
<g id="a_edge26"><a xlink:title="runtime.mcall &#45;&gt; runtime.park_m (1.39s)">
<path fill="none" stroke="black" d="M170,-1199.6C170,-1187.75 170,-1171.82 170,-1158.29"/>
<polygon fill="black" stroke="black" points="173.5,-1158.08 170,-1148.08 166.5,-1158.08 173.5,-1158.08"/>
</a>
</g>
<g id="a_edge26&#45;label"><a xlink:title="runtime.mcall &#45;&gt; runtime.park_m (1.39s)">
<text text-anchor="middle" x="186.724" y="-1169.8" font-family="Times,serif" font-size="14.00"> 1.39s</text>
</a>
</g>
</g>
<!-- N23 -->
<g id="node24" class="node"><title>N23</title>
<g id="a_node24"><a xlink:title="github.com/centrifugal/centrifugo/vendor/github.com/gorilla/websocket.(*Conn).advanceFrame (1.80s)">
<polygon fill="#f8f8f8" stroke="black" points="2126.33,-1149 1725.67,-1149 1725.67,-1111 2126.33,-1111 2126.33,-1149"/>
<text text-anchor="middle" x="1926" y="-1137" font-family="Times,serif" font-size="10.00">github.com/centrifugal/centrifugo/vendor/github.com/gorilla/websocket.(*Conn).advanceFrame</text>
<text text-anchor="middle" x="1926" y="-1127" font-family="Times,serif" font-size="10.00">0.05s(0.25%)</text>
<text text-anchor="middle" x="1926" y="-1117" font-family="Times,serif" font-size="10.00">of 1.80s(9.17%)</text>
</a>
</g>
</g>
<!-- N21&#45;&gt;N23 -->
<g id="edge20" class="edge"><title>N21&#45;&gt;N23</title>
<g id="a_edge20"><a xlink:title="github.com/centrifugal/centrifugo/vendor/github.com/gorilla/websocket.(*Conn).NextReader &#45;&gt; github.com/centrifugal/centrifugo/vendor/github.com/gorilla/websocket.(*Conn).advanceFrame (1.80s)">
<path fill="none" stroke="black" d="M1945.7,-1198.76C1942.35,-1187.25 1937.96,-1172.14 1934.17,-1159.11"/>
<polygon fill="black" stroke="black" points="1937.45,-1157.84 1931.29,-1149.21 1930.72,-1159.79 1937.45,-1157.84"/>
</a>
</g>
<g id="a_edge20&#45;label"><a xlink:title="github.com/centrifugal/centrifugo/vendor/github.com/gorilla/websocket.(*Conn).NextReader &#45;&gt; github.com/centrifugal/centrifugo/vendor/github.com/gorilla/websocket.(*Conn).advanceFrame (1.80s)">
<text text-anchor="middle" x="1955.72" y="-1169.8" font-family="Times,serif" font-size="14.00"> 1.80s</text>
</a>
</g>
</g>
<!-- N47 -->
<g id="node48" class="node"><title>N47</title>
<g id="a_node48"><a xlink:title="runtime.newobject (0.56s)">
<polygon fill="#f8f8f8" stroke="black" points="976.198,-968.5 885.802,-968.5 885.802,-930.5 976.198,-930.5 976.198,-968.5"/>
<text text-anchor="middle" x="931" y="-956.5" font-family="Times,serif" font-size="10.00">runtime.newobject</text>
<text text-anchor="middle" x="931" y="-946.5" font-family="Times,serif" font-size="10.00">0.07s(0.36%)</text>
<text text-anchor="middle" x="931" y="-936.5" font-family="Times,serif" font-size="10.00">of 0.56s(2.85%)</text>
</a>
</g>
</g>
<!-- N21&#45;&gt;N47 -->
<g id="edge84" class="edge"><title>N21&#45;&gt;N47</title>
<g id="a_edge84"><a xlink:title="github.com/centrifugal/centrifugo/vendor/github.com/gorilla/websocket.(*Conn).NextReader &#45;&gt; runtime.newobject (0.09s)">
<path fill="none" stroke="black" d="M1806.18,-1198.93C1773.42,-1188.78 1741.2,-1173.11 1717,-1149 1674.66,-1106.81 1725.15,-1057.98 1679,-1020 1625.81,-976.24 1151.11,-957.376 986.733,-952.118"/>
<polygon fill="black" stroke="black" points="986.467,-948.608 976.362,-951.791 986.247,-955.604 986.467,-948.608"/>
</a>
</g>
<g id="a_edge84&#45;label"><a xlink:title="github.com/centrifugal/centrifugo/vendor/github.com/gorilla/websocket.(*Conn).NextReader &#45;&gt; runtime.newobject (0.09s)">
<text text-anchor="middle" x="1715.72" y="-1081.8" font-family="Times,serif" font-size="14.00"> 0.09s</text>
</a>
</g>
</g>
<!-- N22 -->
<g id="node23" class="node"><title>N22</title>
<g id="a_node23"><a xlink:title="runtime.schedule (2.12s)">
<polygon fill="#f8f8f8" stroke="black" points="216.184,-1061 123.816,-1061 123.816,-1020 216.184,-1020 216.184,-1061"/>
<text text-anchor="middle" x="170" y="-1048.2" font-family="Times,serif" font-size="11.00">runtime.schedule</text>
<text text-anchor="middle" x="170" y="-1037.2" font-family="Times,serif" font-size="11.00">0.15s(0.76%)</text>
<text text-anchor="middle" x="170" y="-1026.2" font-family="Times,serif" font-size="11.00">of 2.12s(10.80%)</text>
</a>
</g>
</g>
<!-- N24 -->
<g id="node25" class="node"><title>N24</title>
<g id="a_node25"><a xlink:title="runtime.findrunnable (1.78s)">
<polygon fill="#f8f8f8" stroke="black" points="220.151,-968.5 119.849,-968.5 119.849,-930.5 220.151,-930.5 220.151,-968.5"/>
<text text-anchor="middle" x="170" y="-956.5" font-family="Times,serif" font-size="10.00">runtime.findrunnable</text>
<text text-anchor="middle" x="170" y="-946.5" font-family="Times,serif" font-size="10.00">0.07s(0.36%)</text>
<text text-anchor="middle" x="170" y="-936.5" font-family="Times,serif" font-size="10.00">of 1.78s(9.07%)</text>
</a>
</g>
</g>
<!-- N22&#45;&gt;N24 -->
<g id="edge21" class="edge"><title>N22&#45;&gt;N24</title>
<g id="a_edge21"><a xlink:title="runtime.schedule &#45;&gt; runtime.findrunnable (1.78s)">
<path fill="none" stroke="black" d="M170,-1019.75C170,-1007.71 170,-992.119 170,-978.783"/>
<polygon fill="black" stroke="black" points="173.5,-978.682 170,-968.682 166.5,-978.682 173.5,-978.682"/>
</a>
</g>
<g id="a_edge21&#45;label"><a xlink:title="runtime.schedule &#45;&gt; runtime.findrunnable (1.78s)">
<text text-anchor="middle" x="186.724" y="-990.8" font-family="Times,serif" font-size="14.00"> 1.78s</text>
</a>
</g>
</g>
<!-- N59 -->
<g id="node60" class="node"><title>N59</title>
<g id="a_node60"><a xlink:title="runtime.wakep (0.40s)">
<polygon fill="#f8f8f8" stroke="black" points="798.77,-124 725.23,-124 725.23,-88 798.77,-88 798.77,-124"/>
<text text-anchor="middle" x="762" y="-107.6" font-family="Times,serif" font-size="8.00">runtime.wakep</text>
<text text-anchor="middle" x="762" y="-99.6" font-family="Times,serif" font-size="8.00">0 of 0.40s(2.04%)</text>
</a>
</g>
</g>
<!-- N22&#45;&gt;N59 -->
<g id="edge83" class="edge"><title>N22&#45;&gt;N59</title>
<g id="a_edge83"><a xlink:title="runtime.schedule ... runtime.wakep (0.11s)">
<path fill="none" stroke="black" stroke-dasharray="1,5" d="M123.814,-1023.98C95.4803,-1014.4 64.0439,-1003.63 61,-1002 40.3074,-990.931 36.5695,-985.557 19,-970 9.94069,-961.978 0,-962.6 0,-950.5 0,-950.5 0,-950.5 0,-191 0,-118.761 548.059,-108.635 714.583,-107.225"/>
<polygon fill="black" stroke="black" points="715.017,-110.722 724.99,-107.144 714.963,-103.722 715.017,-110.722"/>
</a>
</g>
<g id="a_edge83&#45;label"><a xlink:title="runtime.schedule ... runtime.wakep (0.11s)">
<text text-anchor="middle" x="16.4678" y="-535.8" font-family="Times,serif" font-size="14.00"> 0.11s</text>
</a>
</g>
</g>
<!-- N26 -->
<g id="node27" class="node"><title>N26</title>
<g id="a_node27"><a xlink:title="bufio.(*Reader).Peek (1.46s)">
<polygon fill="#f8f8f8" stroke="black" points="1976.48,-1059.5 1875.52,-1059.5 1875.52,-1021.5 1976.48,-1021.5 1976.48,-1059.5"/>
<text text-anchor="middle" x="1926" y="-1047.5" font-family="Times,serif" font-size="10.00">bufio.(*Reader).Peek</text>
<text text-anchor="middle" x="1926" y="-1037.5" font-family="Times,serif" font-size="10.00">0.03s(0.15%)</text>
<text text-anchor="middle" x="1926" y="-1027.5" font-family="Times,serif" font-size="10.00">of 1.46s(7.44%)</text>
</a>
</g>
</g>
<!-- N23&#45;&gt;N26 -->
<g id="edge24" class="edge"><title>N23&#45;&gt;N26</title>
<g id="a_edge24"><a xlink:title="github.com/centrifugal/centrifugo/vendor/github.com/gorilla/websocket.(*Conn).advanceFrame ... bufio.(*Reader).Peek (1.44s)">
<path fill="none" stroke="black" stroke-dasharray="1,5" d="M1926,-1110.87C1926,-1099.02 1926,-1083.3 1926,-1069.82"/>
<polygon fill="black" stroke="black" points="1929.5,-1069.61 1926,-1059.61 1922.5,-1069.61 1929.5,-1069.61"/>
</a>
</g>
<g id="a_edge24&#45;label"><a xlink:title="github.com/centrifugal/centrifugo/vendor/github.com/gorilla/websocket.(*Conn).advanceFrame ... bufio.(*Reader).Peek (1.44s)">
<text text-anchor="middle" x="1942.72" y="-1081.8" font-family="Times,serif" font-size="14.00"> 1.44s</text>
</a>
</g>
</g>
<!-- N46 -->
<g id="node47" class="node"><title>N46</title>
<g id="a_node47"><a xlink:title="runtime.netpoll (0.57s)">
<polygon fill="#f8f8f8" stroke="black" points="200.212,-874.5 119.788,-874.5 119.788,-836.5 200.212,-836.5 200.212,-874.5"/>
<text text-anchor="middle" x="160" y="-862.5" font-family="Times,serif" font-size="10.00">runtime.netpoll</text>
<text text-anchor="middle" x="160" y="-852.5" font-family="Times,serif" font-size="10.00">0.05s(0.25%)</text>
<text text-anchor="middle" x="160" y="-842.5" font-family="Times,serif" font-size="10.00">of 0.57s(2.90%)</text>
</a>
</g>
</g>
<!-- N24&#45;&gt;N46 -->
<g id="edge40" class="edge"><title>N24&#45;&gt;N46</title>
<g id="a_edge40"><a xlink:title="runtime.findrunnable &#45;&gt; runtime.netpoll (0.57s)">
<path fill="none" stroke="black" d="M168.024,-930.324C166.614,-917.345 164.688,-899.633 163.077,-884.811"/>
<polygon fill="black" stroke="black" points="166.532,-884.202 161.972,-874.638 159.573,-884.958 166.532,-884.202"/>
</a>
</g>
<g id="a_edge40&#45;label"><a xlink:title="runtime.findrunnable &#45;&gt; runtime.netpoll (0.57s)">
<text text-anchor="middle" x="182.724" y="-899.8" font-family="Times,serif" font-size="14.00"> 0.57s</text>
</a>
</g>
</g>
<!-- N50 -->
<g id="node51" class="node"><title>N50</title>
<g id="a_node51"><a xlink:title="runtime.lock (0.52s)">
<polygon fill="#f8f8f8" stroke="black" points="527.655,-877.5 434.345,-877.5 434.345,-833.5 527.655,-833.5 527.655,-877.5"/>
<text text-anchor="middle" x="481" y="-863.9" font-family="Times,serif" font-size="12.00">runtime.lock</text>
<text text-anchor="middle" x="481" y="-851.9" font-family="Times,serif" font-size="12.00">0.26s(1.32%)</text>
<text text-anchor="middle" x="481" y="-839.9" font-family="Times,serif" font-size="12.00">of 0.52s(2.65%)</text>
</a>
</g>
</g>
<!-- N24&#45;&gt;N50 -->
<g id="edge90" class="edge"><title>N24&#45;&gt;N50</title>
<g id="a_edge90"><a xlink:title="runtime.findrunnable &#45;&gt; runtime.lock (0.06s)">
<path fill="none" stroke="black" d="M220.288,-941.836C284.711,-933.099 390.112,-918.058 407,-911 422.578,-904.489 437.922,-894.049 450.563,-884.04"/>
<polygon fill="black" stroke="black" points="452.94,-886.617 458.455,-877.571 448.502,-881.204 452.94,-886.617"/>
</a>
</g>
<g id="a_edge90&#45;label"><a xlink:title="runtime.findrunnable &#45;&gt; runtime.lock (0.06s)">
<text text-anchor="middle" x="448.724" y="-899.8" font-family="Times,serif" font-size="14.00"> 0.06s</text>
</a>
</g>
</g>
<!-- N51 -->
<g id="node52" class="node"><title>N51</title>
<g id="a_node52"><a xlink:title="runtime.notesleep (0.52s)">
<polygon fill="#f8f8f8" stroke="black" points="305.868,-874.5 218.132,-874.5 218.132,-836.5 305.868,-836.5 305.868,-874.5"/>
<text text-anchor="middle" x="262" y="-862.5" font-family="Times,serif" font-size="10.00">runtime.notesleep</text>
<text text-anchor="middle" x="262" y="-852.5" font-family="Times,serif" font-size="10.00">0.04s(0.2%)</text>
<text text-anchor="middle" x="262" y="-842.5" font-family="Times,serif" font-size="10.00">of 0.52s(2.65%)</text>
</a>
</g>
</g>
<!-- N24&#45;&gt;N51 -->
<g id="edge43" class="edge"><title>N24&#45;&gt;N51</title>
<g id="a_edge43"><a xlink:title="runtime.findrunnable ... runtime.notesleep (0.51s)">
<path fill="none" stroke="black" stroke-dasharray="1,5" d="M188.176,-930.324C202.037,-916.463 221.296,-897.204 236.668,-881.832"/>
<polygon fill="black" stroke="black" points="239.265,-884.184 243.862,-874.638 234.316,-879.235 239.265,-884.184"/>
</a>
</g>
<g id="a_edge43&#45;label"><a xlink:title="runtime.findrunnable ... runtime.notesleep (0.51s)">
<text text-anchor="middle" x="235.724" y="-899.8" font-family="Times,serif" font-size="14.00"> 0.51s</text>
</a>
</g>
</g>
<!-- N25 -->
<g id="node26" class="node"><title>N25</title>
<g id="a_node26"><a xlink:title="bufio.(*Reader).fill (1.54s)">
<polygon fill="#f8f8f8" stroke="black" points="1972.16,-968.5 1879.84,-968.5 1879.84,-930.5 1972.16,-930.5 1972.16,-968.5"/>
<text text-anchor="middle" x="1926" y="-956.5" font-family="Times,serif" font-size="10.00">bufio.(*Reader).fill</text>
<text text-anchor="middle" x="1926" y="-946.5" font-family="Times,serif" font-size="10.00">0.05s(0.25%)</text>
<text text-anchor="middle" x="1926" y="-936.5" font-family="Times,serif" font-size="10.00">of 1.54s(7.85%)</text>
</a>
</g>
</g>
<!-- N29 -->
<g id="node30" class="node"><title>N29</title>
<g id="a_node30"><a xlink:title="net.(*netFD).Read (1.44s)">
<polygon fill="#f8f8f8" stroke="black" points="1974.87,-876 1877.13,-876 1877.13,-835 1974.87,-835 1974.87,-876"/>
<text text-anchor="middle" x="1926" y="-863.2" font-family="Times,serif" font-size="11.00">net.(*netFD).Read</text>
<text text-anchor="middle" x="1926" y="-852.2" font-family="Times,serif" font-size="11.00">0.13s(0.66%)</text>
<text text-anchor="middle" x="1926" y="-841.2" font-family="Times,serif" font-size="11.00">of 1.44s(7.34%)</text>
</a>
</g>
</g>
<!-- N25&#45;&gt;N29 -->
<g id="edge27" class="edge"><title>N25&#45;&gt;N29</title>
<g id="a_edge27"><a xlink:title="bufio.(*Reader).fill ... net.(*netFD).Read (1.38s)">
<path fill="none" stroke="black" stroke-dasharray="1,5" d="M1926,-930.324C1926,-917.766 1926,-900.778 1926,-886.264"/>
<polygon fill="black" stroke="black" points="1929.5,-886.231 1926,-876.231 1922.5,-886.231 1929.5,-886.231"/>
</a>
</g>
<g id="a_edge27&#45;label"><a xlink:title="bufio.(*Reader).fill ... net.(*netFD).Read (1.38s)">
<text text-anchor="middle" x="1942.72" y="-899.8" font-family="Times,serif" font-size="14.00"> 1.38s</text>
</a>
</g>
</g>
<!-- N26&#45;&gt;N25 -->
<g id="edge25" class="edge"><title>N26&#45;&gt;N25</title>
<g id="a_edge25"><a xlink:title="bufio.(*Reader).Peek &#45;&gt; bufio.(*Reader).fill (1.43s)">
<path fill="none" stroke="black" d="M1926,-1021.49C1926,-1009.27 1926,-992.849 1926,-978.882"/>
<polygon fill="black" stroke="black" points="1929.5,-978.789 1926,-968.789 1922.5,-978.789 1929.5,-978.789"/>
</a>
</g>
<g id="a_edge25&#45;label"><a xlink:title="bufio.(*Reader).Peek &#45;&gt; bufio.(*Reader).fill (1.43s)">
<text text-anchor="middle" x="1942.72" y="-990.8" font-family="Times,serif" font-size="14.00"> 1.43s</text>
</a>
</g>
</g>
<!-- N39 -->
<g id="node40" class="node"><title>N39</title>
<g id="a_node40"><a xlink:title="github.com/centrifugal/centrifugo/libcentrifugo/conns/clientconn.(*client).handleCommands (0.80s)">
<polygon fill="#f8f8f8" stroke="black" points="2494.16,-1148 2143.84,-1148 2143.84,-1112 2494.16,-1112 2494.16,-1148"/>
<text text-anchor="middle" x="2319" y="-1136.3" font-family="Times,serif" font-size="9.00">github.com/centrifugal/centrifugo/libcentrifugo/conns/clientconn.(*client).handleCommands</text>
<text text-anchor="middle" x="2319" y="-1127.3" font-family="Times,serif" font-size="9.00">0.02s(0.1%)</text>
<text text-anchor="middle" x="2319" y="-1118.3" font-family="Times,serif" font-size="9.00">of 0.80s(4.08%)</text>
</a>
</g>
</g>
<!-- N27&#45;&gt;N39 -->
<g id="edge35" class="edge"><title>N27&#45;&gt;N39</title>
<g id="a_edge35"><a xlink:title="github.com/centrifugal/centrifugo/libcentrifugo/conns/clientconn.(*client).Handle &#45;&gt; github.com/centrifugal/centrifugo/libcentrifugo/conns/clientconn.(*client).handleCommands (0.80s)">
<path fill="none" stroke="black" d="M2319,-1199.6C2319,-1187.75 2319,-1171.82 2319,-1158.29"/>
<polygon fill="black" stroke="black" points="2322.5,-1158.08 2319,-1148.08 2315.5,-1158.08 2322.5,-1158.08"/>
</a>
</g>
<g id="a_edge35&#45;label"><a xlink:title="github.com/centrifugal/centrifugo/libcentrifugo/conns/clientconn.(*client).Handle &#45;&gt; github.com/centrifugal/centrifugo/libcentrifugo/conns/clientconn.(*client).handleCommands (0.80s)">
<text text-anchor="middle" x="2335.72" y="-1169.8" font-family="Times,serif" font-size="14.00"> 0.80s</text>
</a>
</g>
</g>
<!-- N71 -->
<g id="node72" class="node"><title>N71</title>
<g id="a_node72"><a xlink:title="encoding/json.(*decodeState).unmarshal (0.29s)">
<polygon fill="#f8f8f8" stroke="black" points="2674.46,-1148 2511.54,-1148 2511.54,-1112 2674.46,-1112 2674.46,-1148"/>
<text text-anchor="middle" x="2593" y="-1136.3" font-family="Times,serif" font-size="9.00">encoding/json.(*decodeState).unmarshal</text>
<text text-anchor="middle" x="2593" y="-1127.3" font-family="Times,serif" font-size="9.00">0.01s(0.051%)</text>
<text text-anchor="middle" x="2593" y="-1118.3" font-family="Times,serif" font-size="9.00">of 0.29s(1.48%)</text>
</a>
</g>
</g>
<!-- N27&#45;&gt;N71 -->
<g id="edge72" class="edge"><title>N27&#45;&gt;N71</title>
<g id="a_edge72"><a xlink:title="github.com/centrifugal/centrifugo/libcentrifugo/conns/clientconn.(*client).Handle ... encoding/json.(*decodeState).unmarshal (0.27s)">
<path fill="none" stroke="black" stroke-dasharray="1,5" d="M2373.46,-1199.91C2418.19,-1185.87 2481.64,-1165.95 2528.83,-1151.14"/>
<polygon fill="black" stroke="black" points="2530.15,-1154.4 2538.64,-1148.06 2528.05,-1147.72 2530.15,-1154.4"/>
</a>
</g>
<g id="a_edge72&#45;label"><a xlink:title="github.com/centrifugal/centrifugo/libcentrifugo/conns/clientconn.(*client).Handle ... encoding/json.(*decodeState).unmarshal (0.27s)">
<text text-anchor="middle" x="2488.72" y="-1169.8" font-family="Times,serif" font-size="14.00"> 0.27s</text>
</a>
</g>
</g>
<!-- N28 -->
<g id="node29" class="node"><title>N28</title>
<g id="a_node29"><a xlink:title="runtime.futex (1.45s)">
<polygon fill="#f8f8f8" stroke="black" points="421.141,-780 318.859,-780 318.859,-740 421.141,-740 421.141,-780"/>
<text text-anchor="middle" x="370" y="-763.2" font-family="Times,serif" font-size="16.00">runtime.futex</text>
<text text-anchor="middle" x="370" y="-747.2" font-family="Times,serif" font-size="16.00">1.45s(7.39%)</text>
</a>
</g>
</g>
<!-- N36 -->
<g id="node37" class="node"><title>N36</title>
<g id="a_node37"><a xlink:title="syscall.read (0.88s)">
<polygon fill="#f8f8f8" stroke="black" points="1224.21,-779 1143.79,-779 1143.79,-741 1224.21,-741 1224.21,-779"/>
<text text-anchor="middle" x="1184" y="-767" font-family="Times,serif" font-size="10.00">syscall.read</text>
<text text-anchor="middle" x="1184" y="-757" font-family="Times,serif" font-size="10.00">0.03s(0.15%)</text>
<text text-anchor="middle" x="1184" y="-747" font-family="Times,serif" font-size="10.00">of 0.88s(4.48%)</text>
</a>
</g>
</g>
<!-- N29&#45;&gt;N36 -->
<g id="edge31" class="edge"><title>N29&#45;&gt;N36</title>
<g id="a_edge31"><a xlink:title="net.(*netFD).Read ... syscall.read (0.88s)">
<path fill="none" stroke="black" stroke-dasharray="1,5" d="M1877.03,-848.329C1742.91,-831.428 1370.59,-784.513 1234.58,-767.374"/>
<polygon fill="black" stroke="black" points="1234.8,-763.874 1224.44,-766.096 1233.93,-770.819 1234.8,-763.874"/>
</a>
</g>
<g id="a_edge31&#45;label"><a xlink:title="net.(*netFD).Read ... syscall.read (0.88s)">
<text text-anchor="middle" x="1616.72" y="-802.8" font-family="Times,serif" font-size="14.00"> 0.88s</text>
</a>
</g>
</g>
<!-- N29&#45;&gt;N61 -->
<g id="edge80" class="edge"><title>N29&#45;&gt;N61</title>
<g id="a_edge80"><a xlink:title="net.(*netFD).Read &#45;&gt; runtime.deferreturn (0.14s)">
<path fill="none" stroke="black" d="M1877.06,-853.738C1654.61,-850.165 747.217,-834.393 690.552,-814 675.601,-808.619 661.317,-798.656 649.696,-788.808"/>
<polygon fill="black" stroke="black" points="651.902,-786.087 642.1,-782.066 647.255,-791.322 651.902,-786.087"/>
</a>
</g>
<g id="a_edge80&#45;label"><a xlink:title="net.(*netFD).Read &#45;&gt; runtime.deferreturn (0.14s)">
<text text-anchor="middle" x="707.724" y="-802.8" font-family="Times,serif" font-size="14.00"> 0.14s</text>
</a>
</g>
</g>
<!-- N30&#45;&gt;N22 -->
<g id="edge28" class="edge"><title>N30&#45;&gt;N22</title>
<g id="a_edge28"><a xlink:title="runtime.park_m &#45;&gt; runtime.schedule (1.35s)">
<path fill="none" stroke="black" d="M170,-1111.71C170,-1100.24 170,-1084.87 170,-1071.44"/>
<polygon fill="black" stroke="black" points="173.5,-1071.19 170,-1061.19 166.5,-1071.19 173.5,-1071.19"/>
</a>
</g>
<g id="a_edge28&#45;label"><a xlink:title="runtime.park_m &#45;&gt; runtime.schedule (1.35s)">
<text text-anchor="middle" x="186.724" y="-1081.8" font-family="Times,serif" font-size="14.00"> 1.35s</text>
</a>
</g>
</g>
<!-- N31 -->
<g id="node32" class="node"><title>N31</title>
<g id="a_node32"><a xlink:title="runtime.mallocgc (1.13s)">
<polygon fill="#f8f8f8" stroke="black" points="770.831,-879 663.169,-879 663.169,-832 770.831,-832 770.831,-879"/>
<text text-anchor="middle" x="717" y="-864.6" font-family="Times,serif" font-size="13.00">runtime.mallocgc</text>
<text text-anchor="middle" x="717" y="-851.6" font-family="Times,serif" font-size="13.00">0.46s(2.34%)</text>
<text text-anchor="middle" x="717" y="-838.6" font-family="Times,serif" font-size="13.00">of 1.13s(5.76%)</text>
</a>
</g>
</g>
<!-- N60 -->
<g id="node61" class="node"><title>N60</title>
<g id="a_node61"><a xlink:title="runtime.memclr (0.38s)">
<polygon fill="#f8f8f8" stroke="black" points="787.475,-778 694.525,-778 694.525,-742 787.475,-742 787.475,-778"/>
<text text-anchor="middle" x="741" y="-762.4" font-family="Times,serif" font-size="12.00">runtime.memclr</text>
<text text-anchor="middle" x="741" y="-750.4" font-family="Times,serif" font-size="12.00">0.38s(1.94%)</text>
</a>
</g>
</g>
<!-- N31&#45;&gt;N60 -->
<g id="edge60" class="edge"><title>N31&#45;&gt;N60</title>
<g id="a_edge60"><a xlink:title="runtime.mallocgc &#45;&gt; runtime.memclr (0.31s)">
<path fill="none" stroke="black" d="M722.81,-831.866C726.193,-818.687 730.479,-801.988 734.041,-788.11"/>
<polygon fill="black" stroke="black" points="737.501,-788.709 736.597,-778.153 730.721,-786.969 737.501,-788.709"/>
</a>
</g>
<g id="a_edge60&#45;label"><a xlink:title="runtime.mallocgc &#45;&gt; runtime.memclr (0.31s)">
<text text-anchor="middle" x="747.724" y="-802.8" font-family="Times,serif" font-size="14.00"> 0.31s</text>
</a>
</g>
</g>
<!-- N32 -->
<g id="node33" class="node"><title>N32</title>
<g id="a_node33"><a xlink:title="runtime.systemstack (1.06s)">
<polygon fill="#f8f8f8" stroke="black" points="810.929,-384 713.071,-384 713.071,-346 810.929,-346 810.929,-384"/>
<text text-anchor="middle" x="762" y="-372" font-family="Times,serif" font-size="10.00">runtime.systemstack</text>
<text text-anchor="middle" x="762" y="-362" font-family="Times,serif" font-size="10.00">0.08s(0.41%)</text>
<text text-anchor="middle" x="762" y="-352" font-family="Times,serif" font-size="10.00">of 1.06s(5.40%)</text>
</a>
</g>
</g>
<!-- N69 -->
<g id="node70" class="node"><title>N69</title>
<g id="a_node70"><a xlink:title="runtime.goready.func1 (0.30s)">
<polygon fill="#f8f8f8" stroke="black" points="806.344,-296 717.656,-296 717.656,-260 806.344,-260 806.344,-296"/>
<text text-anchor="middle" x="762" y="-279.6" font-family="Times,serif" font-size="8.00">runtime.goready.func1</text>
<text text-anchor="middle" x="762" y="-271.6" font-family="Times,serif" font-size="8.00">0 of 0.30s(1.53%)</text>
</a>
</g>
</g>
<!-- N32&#45;&gt;N69 -->
<g id="edge64" class="edge"><title>N32&#45;&gt;N69</title>
<g id="a_edge64"><a xlink:title="runtime.systemstack &#45;&gt; runtime.goready.func1 (0.30s)">
<path fill="none" stroke="black" d="M762,-345.974C762,-334.476 762,-319.353 762,-306.387"/>
<polygon fill="black" stroke="black" points="765.5,-306.131 762,-296.131 758.5,-306.131 765.5,-306.131"/>
</a>
</g>
<g id="a_edge64&#45;label"><a xlink:title="runtime.systemstack &#45;&gt; runtime.goready.func1 (0.30s)">
<text text-anchor="middle" x="778.724" y="-316.8" font-family="Times,serif" font-size="14.00"> 0.30s</text>
</a>
</g>
</g>
<!-- N33 -->
<g id="node34" class="node"><title>N33</title>
<g id="a_node34"><a xlink:title="runtime.copystack (0.96s)">
<polygon fill="#f8f8f8" stroke="black" points="2823.23,-1592.5 2740.77,-1592.5 2740.77,-1556.5 2823.23,-1556.5 2823.23,-1592.5"/>
<text text-anchor="middle" x="2782" y="-1580.8" font-family="Times,serif" font-size="9.00">runtime.copystack</text>
<text text-anchor="middle" x="2782" y="-1571.8" font-family="Times,serif" font-size="9.00">0.01s(0.051%)</text>
<text text-anchor="middle" x="2782" y="-1562.8" font-family="Times,serif" font-size="9.00">of 0.96s(4.89%)</text>
</a>
</g>
</g>
<!-- N42 -->
<g id="node43" class="node"><title>N42</title>
<g id="a_node43"><a xlink:title="runtime.gentraceback (0.61s)">
<polygon fill="#f8f8f8" stroke="black" points="2833.34,-1504 2730.66,-1504 2730.66,-1466 2833.34,-1466 2833.34,-1504"/>
<text text-anchor="middle" x="2782" y="-1492" font-family="Times,serif" font-size="10.00">runtime.gentraceback</text>
<text text-anchor="middle" x="2782" y="-1482" font-family="Times,serif" font-size="10.00">0.06s(0.31%)</text>
<text text-anchor="middle" x="2782" y="-1472" font-family="Times,serif" font-size="10.00">of 0.61s(3.11%)</text>
</a>
</g>
</g>
<!-- N33&#45;&gt;N42 -->
<g id="edge37" class="edge"><title>N33&#45;&gt;N42</title>
<g id="a_edge37"><a xlink:title="runtime.copystack &#45;&gt; runtime.gentraceback (0.60s)">
<path fill="none" stroke="black" d="M2782,-1556.21C2782,-1544.23 2782,-1528 2782,-1514.16"/>
<polygon fill="black" stroke="black" points="2785.5,-1514.15 2782,-1504.15 2778.5,-1514.15 2785.5,-1514.15"/>
</a>
</g>
<g id="a_edge37&#45;label"><a xlink:title="runtime.copystack &#45;&gt; runtime.gentraceback (0.60s)">
<text text-anchor="middle" x="2798.72" y="-1524.8" font-family="Times,serif" font-size="14.00"> 0.60s</text>
</a>
</g>
</g>
<!-- N34 -->
<g id="node35" class="node"><title>N34</title>
<g id="a_node35"><a xlink:title="runtime.morestack (0.96s)">
<polygon fill="#f8f8f8" stroke="black" points="2819.76,-1763 2744.24,-1763 2744.24,-1727 2819.76,-1727 2819.76,-1763"/>
<text text-anchor="middle" x="2782" y="-1746.6" font-family="Times,serif" font-size="8.00">runtime.morestack</text>
<text text-anchor="middle" x="2782" y="-1738.6" font-family="Times,serif" font-size="8.00">0 of 0.96s(4.89%)</text>
</a>
</g>
</g>
<!-- N34&#45;&gt;N33 -->
<g id="edge29" class="edge"><title>N34&#45;&gt;N33</title>
<g id="a_edge29"><a xlink:title="runtime.morestack ... runtime.copystack (0.96s)">
<path fill="none" stroke="black" stroke-dasharray="1,5" d="M2782,-1726.92C2782,-1697.65 2782,-1637.69 2782,-1602.64"/>
<polygon fill="black" stroke="black" points="2785.5,-1602.63 2782,-1592.63 2778.5,-1602.63 2785.5,-1602.63"/>
</a>
</g>
<g id="a_edge29&#45;label"><a xlink:title="runtime.morestack ... runtime.copystack (0.96s)">
<text text-anchor="middle" x="2798.72" y="-1615.8" font-family="Times,serif" font-size="14.00"> 0.96s</text>
</a>
</g>
</g>
<!-- N35&#45;&gt;N10 -->
<g id="edge30" class="edge"><title>N35&#45;&gt;N10</title>
<g id="a_edge30"><a xlink:title="github.com/centrifugal/centrifugo/vendor/github.com/gorilla/websocket.(*messageWriter).flushFrame &#45;&gt; github.com/centrifugal/centrifugo/vendor/github.com/gorilla/websocket.(*Conn).write (0.94s)">
<path fill="none" stroke="black" d="M826.814,-1377.42C786.465,-1363.41 729.122,-1343.5 685.699,-1328.42"/>
<polygon fill="black" stroke="black" points="686.694,-1325.06 676.099,-1325.09 684.397,-1331.68 686.694,-1325.06"/>
</a>
</g>
<g id="a_edge30&#45;label"><a xlink:title="github.com/centrifugal/centrifugo/vendor/github.com/gorilla/websocket.(*messageWriter).flushFrame &#45;&gt; github.com/centrifugal/centrifugo/vendor/github.com/gorilla/websocket.(*Conn).write (0.94s)">
<text text-anchor="middle" x="782.724" y="-1345.8" font-family="Times,serif" font-size="14.00"> 0.94s</text>
</a>
</g>
</g>
<!-- N36&#45;&gt;N2 -->
<g id="edge33" class="edge"><title>N36&#45;&gt;N2</title>
<g id="a_edge33"><a xlink:title="syscall.read &#45;&gt; syscall.Syscall (0.85s)">
<path fill="none" stroke="black" d="M1143.51,-746.489C1091.9,-730.543 1000.87,-702.413 929.802,-680.456"/>
<polygon fill="black" stroke="black" points="930.501,-677.008 919.913,-677.4 928.434,-683.696 930.501,-677.008"/>
</a>
</g>
<g id="a_edge33&#45;label"><a xlink:title="syscall.read &#45;&gt; syscall.Syscall (0.85s)">
<text text-anchor="middle" x="1065.72" y="-708.8" font-family="Times,serif" font-size="14.00"> 0.85s</text>
</a>
</g>
</g>
<!-- N40 -->
<g id="node41" class="node"><title>N40</title>
<g id="a_node41"><a xlink:title="net.runtime_pollSetDeadline (0.80s)">
<polygon fill="#f8f8f8" stroke="black" points="717.749,-1149 586.251,-1149 586.251,-1111 717.749,-1111 717.749,-1149"/>
<text text-anchor="middle" x="652" y="-1137" font-family="Times,serif" font-size="10.00">net.runtime_pollSetDeadline</text>
<text text-anchor="middle" x="652" y="-1127" font-family="Times,serif" font-size="10.00">0.09s(0.46%)</text>
<text text-anchor="middle" x="652" y="-1117" font-family="Times,serif" font-size="10.00">of 0.80s(4.08%)</text>
</a>
</g>
</g>
<!-- N37&#45;&gt;N40 -->
<g id="edge36" class="edge"><title>N37&#45;&gt;N40</title>
<g id="a_edge36"><a xlink:title="net.(*conn).SetWriteDeadline ... net.runtime_pollSetDeadline (0.68s)">
<path fill="none" stroke="black" stroke-dasharray="1,5" d="M652,-1199.6C652,-1188.06 652,-1172.65 652,-1159.36"/>
<polygon fill="black" stroke="black" points="655.5,-1159.27 652,-1149.27 648.5,-1159.27 655.5,-1159.27"/>
</a>
</g>
<g id="a_edge36&#45;label"><a xlink:title="net.(*conn).SetWriteDeadline ... net.runtime_pollSetDeadline (0.68s)">
<text text-anchor="middle" x="668.724" y="-1169.8" font-family="Times,serif" font-size="14.00"> 0.68s</text>
</a>
</g>
</g>
<!-- N38 -->
<g id="node39" class="node"><title>N38</title>
<g id="a_node39"><a xlink:title="runtime.futexwakeup (0.82s)">
<polygon fill="#f8f8f8" stroke="black" points="416.225,-873.5 323.775,-873.5 323.775,-837.5 416.225,-837.5 416.225,-873.5"/>
<text text-anchor="middle" x="370" y="-861.8" font-family="Times,serif" font-size="9.00">runtime.futexwakeup</text>
<text text-anchor="middle" x="370" y="-852.8" font-family="Times,serif" font-size="9.00">0.01s(0.051%)</text>
<text text-anchor="middle" x="370" y="-843.8" font-family="Times,serif" font-size="9.00">of 0.82s(4.18%)</text>
</a>
</g>
</g>
<!-- N38&#45;&gt;N28 -->
<g id="edge34" class="edge"><title>N38&#45;&gt;N28</title>
<g id="a_edge34"><a xlink:title="runtime.futexwakeup &#45;&gt; runtime.futex (0.81s)">
<path fill="none" stroke="black" d="M370,-837.351C370,-824.243 370,-805.862 370,-790.419"/>
<polygon fill="black" stroke="black" points="373.5,-790.299 370,-780.299 366.5,-790.299 373.5,-790.299"/>
</a>
</g>
<g id="a_edge34&#45;label"><a xlink:title="runtime.futexwakeup &#45;&gt; runtime.futex (0.81s)">
<text text-anchor="middle" x="386.724" y="-802.8" font-family="Times,serif" font-size="14.00"> 0.81s</text>
</a>
</g>
</g>
<!-- N44 -->
<g id="node45" class="node"><title>N44</title>
<g id="a_node45"><a xlink:title="github.com/centrifugal/centrifugo/libcentrifugo/conns/clientconn.(*client).Send (0.59s)">
<polygon fill="#f8f8f8" stroke="black" points="2486.57,-1059.5 2151.43,-1059.5 2151.43,-1021.5 2486.57,-1021.5 2486.57,-1059.5"/>
<text text-anchor="middle" x="2319" y="-1047.5" font-family="Times,serif" font-size="10.00">github.com/centrifugal/centrifugo/libcentrifugo/conns/clientconn.(*client).Send</text>
<text text-anchor="middle" x="2319" y="-1037.5" font-family="Times,serif" font-size="10.00">0.07s(0.36%)</text>
<text text-anchor="middle" x="2319" y="-1027.5" font-family="Times,serif" font-size="10.00">of 0.59s(3.01%)</text>
</a>
</g>
</g>
<!-- N39&#45;&gt;N44 -->
<g id="edge75" class="edge"><title>N39&#45;&gt;N44</title>
<g id="a_edge75"><a xlink:title="github.com/centrifugal/centrifugo/libcentrifugo/conns/clientconn.(*client).handleCommands &#45;&gt; github.com/centrifugal/centrifugo/libcentrifugo/conns/clientconn.(*client).Send (0.22s)">
<path fill="none" stroke="black" d="M2319,-1111.71C2319,-1099.73 2319,-1083.5 2319,-1069.66"/>
<polygon fill="black" stroke="black" points="2322.5,-1069.65 2319,-1059.65 2315.5,-1069.65 2322.5,-1069.65"/>
</a>
</g>
<g id="a_edge75&#45;label"><a xlink:title="github.com/centrifugal/centrifugo/libcentrifugo/conns/clientconn.(*client).handleCommands &#45;&gt; github.com/centrifugal/centrifugo/libcentrifugo/conns/clientconn.(*client).Send (0.22s)">
<text text-anchor="middle" x="2335.72" y="-1081.8" font-family="Times,serif" font-size="14.00"> 0.22s</text>
</a>
</g>
</g>
<!-- N75 -->
<g id="node76" class="node"><title>N75</title>
<g id="a_node76"><a xlink:title="encoding/json.Marshal (0.28s)">
<polygon fill="#f8f8f8" stroke="black" points="2133.6,-1058.5 2044.4,-1058.5 2044.4,-1022.5 2133.6,-1022.5 2133.6,-1058.5"/>
<text text-anchor="middle" x="2089" y="-1042.1" font-family="Times,serif" font-size="8.00">encoding/json.Marshal</text>
<text text-anchor="middle" x="2089" y="-1034.1" font-family="Times,serif" font-size="8.00">0 of 0.28s(1.43%)</text>
</a>
</g>
</g>
<!-- N39&#45;&gt;N75 -->
<g id="edge70" class="edge"><title>N39&#45;&gt;N75</title>
<g id="a_edge70"><a xlink:title="github.com/centrifugal/centrifugo/libcentrifugo/conns/clientconn.(*client).handleCommands &#45;&gt; encoding/json.Marshal (0.27s)">
<path fill="none" stroke="black" d="M2274.11,-1111.92C2236.67,-1097.68 2183.2,-1077.34 2143.34,-1062.17"/>
<polygon fill="black" stroke="black" points="2144.37,-1058.82 2133.78,-1058.54 2141.88,-1065.36 2144.37,-1058.82"/>
</a>
</g>
<g id="a_edge70&#45;label"><a xlink:title="github.com/centrifugal/centrifugo/libcentrifugo/conns/clientconn.(*client).handleCommands &#45;&gt; encoding/json.Marshal (0.27s)">
<text text-anchor="middle" x="2233.72" y="-1081.8" font-family="Times,serif" font-size="14.00"> 0.27s</text>
</a>
</g>
</g>
<!-- N43 -->
<g id="node44" class="node"><title>N43</title>
<g id="a_node44"><a xlink:title="runtime.deltimer (0.60s)">
<polygon fill="#f8f8f8" stroke="black" points="522.424,-1059.5 439.576,-1059.5 439.576,-1021.5 522.424,-1021.5 522.424,-1059.5"/>
<text text-anchor="middle" x="481" y="-1047.5" font-family="Times,serif" font-size="10.00">runtime.deltimer</text>
<text text-anchor="middle" x="481" y="-1037.5" font-family="Times,serif" font-size="10.00">0.09s(0.46%)</text>
<text text-anchor="middle" x="481" y="-1027.5" font-family="Times,serif" font-size="10.00">of 0.60s(3.06%)</text>
</a>
</g>
</g>
<!-- N40&#45;&gt;N43 -->
<g id="edge41" class="edge"><title>N40&#45;&gt;N43</title>
<g id="a_edge41"><a xlink:title="net.runtime_pollSetDeadline &#45;&gt; runtime.deltimer (0.53s)">
<path fill="none" stroke="black" d="M616.569,-1110.87C590.087,-1097.32 553.711,-1078.71 525.306,-1064.17"/>
<polygon fill="black" stroke="black" points="526.883,-1061.05 516.386,-1059.61 523.694,-1067.28 526.883,-1061.05"/>
</a>
</g>
<g id="a_edge41&#45;label"><a xlink:title="net.runtime_pollSetDeadline &#45;&gt; runtime.deltimer (0.53s)">
<text text-anchor="middle" x="593.724" y="-1081.8" font-family="Times,serif" font-size="14.00"> 0.53s</text>
</a>
</g>
</g>
<!-- N41 -->
<g id="node42" class="node"><title>N41</title>
<g id="a_node42"><a xlink:title="runtime._System (0.64s)">
<polygon fill="#f8f8f8" stroke="black" points="640.77,-471 567.23,-471 567.23,-435 640.77,-435 640.77,-471"/>
<text text-anchor="middle" x="604" y="-454.6" font-family="Times,serif" font-size="8.00">runtime._System</text>
<text text-anchor="middle" x="604" y="-446.6" font-family="Times,serif" font-size="8.00">0 of 0.64s(3.26%)</text>
</a>
</g>
</g>
<!-- N41&#45;&gt;N32 -->
<g id="edge87" class="edge"><title>N41&#45;&gt;N32</title>
<g id="a_edge87"><a xlink:title="runtime._System &#45;&gt; runtime.systemstack (0.08s)">
<path fill="none" stroke="black" d="M619.981,-434.831C630.637,-424.197 645.422,-410.915 660.552,-402 673.634,-394.291 688.631,-387.849 703.01,-382.647"/>
<polygon fill="black" stroke="black" points="704.531,-385.824 712.834,-379.242 702.24,-379.209 704.531,-385.824"/>
</a>
</g>
<g id="a_edge87&#45;label"><a xlink:title="runtime._System &#45;&gt; runtime.systemstack (0.08s)">
<text text-anchor="middle" x="677.724" y="-404.8" font-family="Times,serif" font-size="14.00"> 0.08s</text>
</a>
</g>
</g>
<!-- N49 -->
<g id="node50" class="node"><title>N49</title>
<g id="a_node50"><a xlink:title="runtime._ExternalCode (0.52s)">
<polygon fill="#f8f8f8" stroke="black" points="672.66,-383 535.34,-383 535.34,-347 672.66,-347 672.66,-383"/>
<text text-anchor="middle" x="604" y="-367.6" font-family="Times,serif" font-size="13.00">runtime._ExternalCode</text>
<text text-anchor="middle" x="604" y="-354.6" font-family="Times,serif" font-size="13.00">0.52s(2.65%)</text>
</a>
</g>
</g>
<!-- N41&#45;&gt;N49 -->
<g id="edge42" class="edge"><title>N41&#45;&gt;N49</title>
<g id="a_edge42"><a xlink:title="runtime._System &#45;&gt; runtime._ExternalCode (0.52s)">
<path fill="none" stroke="black" d="M604,-434.597C604,-422.746 604,-406.817 604,-393.292"/>
<polygon fill="black" stroke="black" points="607.5,-393.084 604,-383.084 600.5,-393.084 607.5,-393.084"/>
</a>
</g>
<g id="a_edge42&#45;label"><a xlink:title="runtime._System &#45;&gt; runtime._ExternalCode (0.52s)">
<text text-anchor="middle" x="620.724" y="-404.8" font-family="Times,serif" font-size="14.00"> 0.52s</text>
</a>
</g>
</g>
<!-- N56 -->
<g id="node57" class="node"><title>N56</title>
<g id="a_node57"><a xlink:title="runtime.adjustframe (0.45s)">
<polygon fill="#f8f8f8" stroke="black" points="2834.39,-1416 2729.61,-1416 2729.61,-1375 2834.39,-1375 2834.39,-1416"/>
<text text-anchor="middle" x="2782" y="-1403.2" font-family="Times,serif" font-size="11.00">runtime.adjustframe</text>
<text text-anchor="middle" x="2782" y="-1392.2" font-family="Times,serif" font-size="11.00">0.10s(0.51%)</text>
<text text-anchor="middle" x="2782" y="-1381.2" font-family="Times,serif" font-size="11.00">of 0.45s(2.29%)</text>
</a>
</g>
</g>
<!-- N42&#45;&gt;N56 -->
<g id="edge54" class="edge"><title>N42&#45;&gt;N56</title>
<g id="a_edge54"><a xlink:title="runtime.gentraceback &#45;&gt; runtime.adjustframe (0.37s)">
<path fill="none" stroke="black" d="M2782,-1465.87C2782,-1454.42 2782,-1439.34 2782,-1426.18"/>
<polygon fill="black" stroke="black" points="2785.5,-1426.13 2782,-1416.13 2778.5,-1426.13 2785.5,-1426.13"/>
</a>
</g>
<g id="a_edge54&#45;label"><a xlink:title="runtime.gentraceback &#45;&gt; runtime.adjustframe (0.37s)">
<text text-anchor="middle" x="2798.72" y="-1436.8" font-family="Times,serif" font-size="14.00"> 0.37s</text>
</a>
</g>
</g>
<!-- N43&#45;&gt;N50 -->
<g id="edge79" class="edge"><title>N43&#45;&gt;N50</title>
<g id="a_edge79"><a xlink:title="runtime.deltimer &#45;&gt; runtime.lock (0.16s)">
<path fill="none" stroke="black" d="M481,-1021.28C481,-990.13 481,-926.266 481,-887.835"/>
<polygon fill="black" stroke="black" points="484.5,-887.719 481,-877.719 477.5,-887.719 484.5,-887.719"/>
</a>
</g>
<g id="a_edge79&#45;label"><a xlink:title="runtime.deltimer &#45;&gt; runtime.lock (0.16s)">
<text text-anchor="middle" x="497.724" y="-945.3" font-family="Times,serif" font-size="14.00"> 0.16s</text>
</a>
</g>
</g>
<!-- N79 -->
<g id="node80" class="node"><title>N79</title>
<g id="a_node80"><a xlink:title="runtime.unlock (0.28s)">
<polygon fill="#f8f8f8" stroke="black" points="410.212,-968.5 329.788,-968.5 329.788,-930.5 410.212,-930.5 410.212,-968.5"/>
<text text-anchor="middle" x="370" y="-956.5" font-family="Times,serif" font-size="10.00">runtime.unlock</text>
<text text-anchor="middle" x="370" y="-946.5" font-family="Times,serif" font-size="10.00">0.04s(0.2%)</text>
<text text-anchor="middle" x="370" y="-936.5" font-family="Times,serif" font-size="10.00">of 0.28s(1.43%)</text>
</a>
</g>
</g>
<!-- N43&#45;&gt;N79 -->
<g id="edge81" class="edge"><title>N43&#45;&gt;N79</title>
<g id="a_edge81"><a xlink:title="runtime.deltimer &#45;&gt; runtime.unlock (0.12s)">
<path fill="none" stroke="black" d="M457.787,-1021.25C450.061,-1015.15 441.422,-1008.3 433.552,-1002 422.596,-993.232 410.629,-983.56 400.065,-974.988"/>
<polygon fill="black" stroke="black" points="402.268,-972.268 392.299,-968.68 397.854,-977.702 402.268,-972.268"/>
</a>
</g>
<g id="a_edge81&#45;label"><a xlink:title="runtime.deltimer &#45;&gt; runtime.unlock (0.12s)">
<text text-anchor="middle" x="450.724" y="-990.8" font-family="Times,serif" font-size="14.00"> 0.12s</text>
</a>
</g>
</g>
<!-- N52 -->
<g id="node53" class="node"><title>N52</title>
<g id="a_node53"><a xlink:title="github.com/centrifugal/centrifugo/libcentrifugo/queue.(*byteQueue).Add (0.50s)">
<polygon fill="#f8f8f8" stroke="black" points="2488.37,-970 2149.63,-970 2149.63,-929 2488.37,-929 2488.37,-970"/>
<text text-anchor="middle" x="2319" y="-957.2" font-family="Times,serif" font-size="11.00">github.com/centrifugal/centrifugo/libcentrifugo/queue.(*byteQueue).Add</text>
<text text-anchor="middle" x="2319" y="-946.2" font-family="Times,serif" font-size="11.00">0.10s(0.51%)</text>
<text text-anchor="middle" x="2319" y="-935.2" font-family="Times,serif" font-size="11.00">of 0.50s(2.55%)</text>
</a>
</g>
</g>
<!-- N44&#45;&gt;N52 -->
<g id="edge44" class="edge"><title>N44&#45;&gt;N52</title>
<g id="a_edge44"><a xlink:title="github.com/centrifugal/centrifugo/libcentrifugo/conns/clientconn.(*client).Send &#45;&gt; github.com/centrifugal/centrifugo/libcentrifugo/queue.(*byteQueue).Add (0.50s)">
<path fill="none" stroke="black" d="M2319,-1021.49C2319,-1009.71 2319,-994.027 2319,-980.402"/>
<polygon fill="black" stroke="black" points="2322.5,-980.028 2319,-970.028 2315.5,-980.028 2322.5,-980.028"/>
</a>
</g>
<g id="a_edge44&#45;label"><a xlink:title="github.com/centrifugal/centrifugo/libcentrifugo/conns/clientconn.(*client).Send &#45;&gt; github.com/centrifugal/centrifugo/libcentrifugo/queue.(*byteQueue).Add (0.50s)">
<text text-anchor="middle" x="2335.72" y="-990.8" font-family="Times,serif" font-size="14.00"> 0.50s</text>
</a>
</g>
</g>
<!-- N45&#45;&gt;N44 -->
<g id="edge53" class="edge"><title>N45&#45;&gt;N44</title>
<g id="a_edge53"><a xlink:title="github.com/centrifugal/centrifugo/libcentrifugo/conns.(*clientHub).Broadcast &#45;&gt; github.com/centrifugal/centrifugo/libcentrifugo/conns/clientconn.(*client).Send (0.37s)">
<path fill="none" stroke="black" d="M1882.98,-1567.09C2162.66,-1555.07 2702,-1526.61 2702,-1486 2702,-1486 2702,-1486 2702,-1129 2702,-1083.25 2596.82,-1061.42 2496.69,-1051"/>
<polygon fill="black" stroke="black" points="2497.01,-1047.52 2486.71,-1050 2496.31,-1054.48 2497.01,-1047.52"/>
</a>
</g>
<g id="a_edge53&#45;label"><a xlink:title="github.com/centrifugal/centrifugo/libcentrifugo/conns.(*clientHub).Broadcast &#45;&gt; github.com/centrifugal/centrifugo/libcentrifugo/conns/clientconn.(*client).Send (0.37s)">
<text text-anchor="middle" x="2718.72" y="-1301.8" font-family="Times,serif" font-size="14.00"> 0.37s</text>
</a>
</g>
</g>
<!-- N54 -->
<g id="node55" class="node"><title>N54</title>
<g id="a_node55"><a xlink:title="runtime.epollwait (0.48s)">
<polygon fill="#f8f8f8" stroke="black" points="214.06,-778 105.94,-778 105.94,-742 214.06,-742 214.06,-778"/>
<text text-anchor="middle" x="160" y="-762.6" font-family="Times,serif" font-size="13.00">runtime.epollwait</text>
<text text-anchor="middle" x="160" y="-749.6" font-family="Times,serif" font-size="13.00">0.48s(2.45%)</text>
</a>
</g>
</g>
<!-- N46&#45;&gt;N54 -->
<g id="edge47" class="edge"><title>N46&#45;&gt;N54</title>
<g id="a_edge47"><a xlink:title="runtime.netpoll &#45;&gt; runtime.epollwait (0.48s)">
<path fill="none" stroke="black" d="M160,-836.472C160,-822.761 160,-803.669 160,-788.118"/>
<polygon fill="black" stroke="black" points="163.5,-788.027 160,-778.027 156.5,-788.027 163.5,-788.027"/>
</a>
</g>
<g id="a_edge47&#45;label"><a xlink:title="runtime.netpoll &#45;&gt; runtime.epollwait (0.48s)">
<text text-anchor="middle" x="176.724" y="-802.8" font-family="Times,serif" font-size="14.00"> 0.48s</text>
</a>
</g>
</g>
<!-- N47&#45;&gt;N31 -->
<g id="edge45" class="edge"><title>N47&#45;&gt;N31</title>
<g id="a_edge45"><a xlink:title="runtime.newobject &#45;&gt; runtime.mallocgc (0.49s)">
<path fill="none" stroke="black" d="M885.531,-931.854C882.321,-930.841 879.121,-929.878 876,-929 838.639,-918.492 825.947,-926.92 790.552,-911 776.184,-904.538 761.916,-894.909 749.823,-885.535"/>
<polygon fill="black" stroke="black" points="751.818,-882.648 741.825,-879.127 747.441,-888.111 751.818,-882.648"/>
</a>
</g>
<g id="a_edge45&#45;label"><a xlink:title="runtime.newobject &#45;&gt; runtime.mallocgc (0.49s)">
<text text-anchor="middle" x="807.724" y="-899.8" font-family="Times,serif" font-size="14.00"> 0.49s</text>
</a>
</g>
</g>
<!-- N48 -->
<g id="node49" class="node"><title>N48</title>
<g id="a_node49"><a xlink:title="runtime.startm (0.55s)">
<polygon fill="#f8f8f8" stroke="black" points="802.212,-38 721.788,-38 721.788,-0 802.212,-0 802.212,-38"/>
<text text-anchor="middle" x="762" y="-26" font-family="Times,serif" font-size="10.00">runtime.startm</text>
<text text-anchor="middle" x="762" y="-16" font-family="Times,serif" font-size="10.00">0.03s(0.15%)</text>
<text text-anchor="middle" x="762" y="-6" font-family="Times,serif" font-size="10.00">of 0.55s(2.80%)</text>
</a>
</g>
</g>
<!-- N51&#45;&gt;N28 -->
<g id="edge48" class="edge"><title>N51&#45;&gt;N28</title>
<g id="a_edge48"><a xlink:title="runtime.notesleep ... runtime.futex (0.47s)">
<path fill="none" stroke="black" stroke-dasharray="1,5" d="M282.823,-836.472C298.983,-822.483 321.613,-802.891 339.767,-787.174"/>
<polygon fill="black" stroke="black" points="342.484,-789.451 347.753,-780.26 337.902,-784.159 342.484,-789.451"/>
</a>
</g>
<g id="a_edge48&#45;label"><a xlink:title="runtime.notesleep ... runtime.futex (0.47s)">
<text text-anchor="middle" x="339.724" y="-802.8" font-family="Times,serif" font-size="14.00"> 0.47s</text>
</a>
</g>
</g>
<!-- N62 -->
<g id="node63" class="node"><title>N62</title>
<g id="a_node63"><a xlink:title="sync.(*Cond).Signal (0.35s)">
<polygon fill="#f8f8f8" stroke="black" points="2160.22,-874.5 2061.78,-874.5 2061.78,-836.5 2160.22,-836.5 2160.22,-874.5"/>
<text text-anchor="middle" x="2111" y="-862.5" font-family="Times,serif" font-size="10.00">sync.(*Cond).Signal</text>
<text text-anchor="middle" x="2111" y="-852.5" font-family="Times,serif" font-size="10.00">0.03s(0.15%)</text>
<text text-anchor="middle" x="2111" y="-842.5" font-family="Times,serif" font-size="10.00">of 0.35s(1.78%)</text>
</a>
</g>
</g>
<!-- N52&#45;&gt;N62 -->
<g id="edge55" class="edge"><title>N52&#45;&gt;N62</title>
<g id="a_edge55"><a xlink:title="github.com/centrifugal/centrifugo/libcentrifugo/queue.(*byteQueue).Add &#45;&gt; sync.(*Cond).Signal (0.35s)">
<path fill="none" stroke="black" d="M2274.89,-928.989C2241.64,-914.284 2196.01,-894.101 2161.34,-878.765"/>
<polygon fill="black" stroke="black" points="2162.43,-875.421 2151.87,-874.577 2159.6,-881.823 2162.43,-875.421"/>
</a>
</g>
<g id="a_edge55&#45;label"><a xlink:title="github.com/centrifugal/centrifugo/libcentrifugo/queue.(*byteQueue).Add &#45;&gt; sync.(*Cond).Signal (0.35s)">
<text text-anchor="middle" x="2249.72" y="-899.8" font-family="Times,serif" font-size="14.00"> 0.35s</text>
</a>
</g>
</g>
<!-- N53&#45;&gt;N31 -->
<g id="edge46" class="edge"><title>N53&#45;&gt;N31</title>
<g id="a_edge46"><a xlink:title="runtime.makeslice &#45;&gt; runtime.mallocgc (0.48s)">
<path fill="none" stroke="black" d="M696.702,-931.196C699.912,-919.384 704.264,-903.37 708.115,-889.198"/>
<polygon fill="black" stroke="black" points="711.562,-889.859 710.807,-879.291 704.807,-888.024 711.562,-889.859"/>
</a>
</g>
<g id="a_edge46&#45;label"><a xlink:title="runtime.makeslice &#45;&gt; runtime.mallocgc (0.48s)">
<text text-anchor="middle" x="722.724" y="-899.8" font-family="Times,serif" font-size="14.00"> 0.48s</text>
</a>
</g>
</g>
<!-- N58 -->
<g id="node59" class="node"><title>N58</title>
<g id="a_node59"><a xlink:title="runtime.reentersyscall (0.42s)">
<polygon fill="#f8f8f8" stroke="black" points="880.075,-472 775.925,-472 775.925,-434 880.075,-434 880.075,-472"/>
<text text-anchor="middle" x="828" y="-460" font-family="Times,serif" font-size="10.00">runtime.reentersyscall</text>
<text text-anchor="middle" x="828" y="-450" font-family="Times,serif" font-size="10.00">0.04s(0.2%)</text>
<text text-anchor="middle" x="828" y="-440" font-family="Times,serif" font-size="10.00">of 0.42s(2.14%)</text>
</a>
</g>
</g>
<!-- N55&#45;&gt;N58 -->
<g id="edge51" class="edge"><title>N55&#45;&gt;N58</title>
<g id="a_edge51"><a xlink:title="runtime.entersyscall &#45;&gt; runtime.reentersyscall (0.42s)">
<path fill="none" stroke="black" d="M828,-521.799C828,-510.505 828,-495.464 828,-482.418"/>
<polygon fill="black" stroke="black" points="831.5,-482.056 828,-472.056 824.5,-482.056 831.5,-482.056"/>
</a>
</g>
<g id="a_edge51&#45;label"><a xlink:title="runtime.entersyscall &#45;&gt; runtime.reentersyscall (0.42s)">
<text text-anchor="middle" x="844.724" y="-492.8" font-family="Times,serif" font-size="14.00"> 0.42s</text>
</a>
</g>
</g>
<!-- N63 -->
<g id="node64" class="node"><title>N63</title>
<g id="a_node64"><a xlink:title="sync.(*Cond).Wait (0.35s)">
<polygon fill="#f8f8f8" stroke="black" points="1177.8,-1414.5 1086.2,-1414.5 1086.2,-1376.5 1177.8,-1376.5 1177.8,-1414.5"/>
<text text-anchor="middle" x="1132" y="-1402.5" font-family="Times,serif" font-size="10.00">sync.(*Cond).Wait</text>
<text text-anchor="middle" x="1132" y="-1392.5" font-family="Times,serif" font-size="10.00">0.03s(0.15%)</text>
<text text-anchor="middle" x="1132" y="-1382.5" font-family="Times,serif" font-size="10.00">of 0.35s(1.78%)</text>
</a>
</g>
</g>
<!-- N57&#45;&gt;N63 -->
<g id="edge56" class="edge"><title>N57&#45;&gt;N63</title>
<g id="a_edge56"><a xlink:title="github.com/centrifugal/centrifugo/libcentrifugo/queue.(*byteQueue).Wait &#45;&gt; sync.(*Cond).Wait (0.35s)">
<path fill="none" stroke="black" d="M880.734,-1466.98C933.38,-1454.81 1004.94,-1437.33 1076.55,-1416.01"/>
<polygon fill="black" stroke="black" points="1077.62,-1419.34 1086.19,-1413.11 1075.61,-1412.64 1077.62,-1419.34"/>
</a>
</g>
<g id="a_edge56&#45;label"><a xlink:title="github.com/centrifugal/centrifugo/libcentrifugo/queue.(*byteQueue).Wait &#45;&gt; sync.(*Cond).Wait (0.35s)">
<text text-anchor="middle" x="1027.72" y="-1436.8" font-family="Times,serif" font-size="14.00"> 0.35s</text>
</a>
</g>
</g>
<!-- N58&#45;&gt;N32 -->
<g id="edge78" class="edge"><title>N58&#45;&gt;N32</title>
<g id="a_edge78"><a xlink:title="runtime.reentersyscall &#45;&gt; runtime.systemstack (0.17s)">
<path fill="none" stroke="black" d="M814.003,-433.762C804.728,-421.676 792.414,-405.63 782.097,-392.187"/>
<polygon fill="black" stroke="black" points="784.842,-390.014 775.977,-384.212 779.288,-394.276 784.842,-390.014"/>
</a>
</g>
<g id="a_edge78&#45;label"><a xlink:title="runtime.reentersyscall &#45;&gt; runtime.systemstack (0.17s)">
<text text-anchor="middle" x="815.724" y="-404.8" font-family="Times,serif" font-size="14.00"> 0.17s</text>
</a>
</g>
</g>
<!-- N59&#45;&gt;N48 -->
<g id="edge52" class="edge"><title>N59&#45;&gt;N48</title>
<g id="a_edge52"><a xlink:title="runtime.wakep &#45;&gt; runtime.startm (0.40s)">
<path fill="none" stroke="black" d="M762,-87.799C762,-76.5052 762,-61.4639 762,-48.4184"/>
<polygon fill="black" stroke="black" points="765.5,-48.0555 762,-38.0556 758.5,-48.0556 765.5,-48.0555"/>
</a>
</g>
<g id="a_edge52&#45;label"><a xlink:title="runtime.wakep &#45;&gt; runtime.startm (0.40s)">
<text text-anchor="middle" x="778.724" y="-58.8" font-family="Times,serif" font-size="14.00"> 0.40s</text>
</a>
</g>
</g>
<!-- N61&#45;&gt;N32 -->
<g id="edge89" class="edge"><title>N61&#45;&gt;N32</title>
<g id="a_edge89"><a xlink:title="runtime.deferreturn &#45;&gt; runtime.systemstack (0.07s)">
<path fill="none" stroke="black" d="M652.563,-737.92C677.281,-718.136 708,-686.089 708,-649 708,-649 708,-649 708,-452 708,-429.33 721.624,-407.737 735.185,-391.858"/>
<polygon fill="black" stroke="black" points="738.089,-393.865 742.199,-384.1 732.897,-389.171 738.089,-393.865"/>
</a>
</g>
<g id="a_edge89&#45;label"><a xlink:title="runtime.deferreturn &#45;&gt; runtime.systemstack (0.07s)">
<text text-anchor="middle" x="724.724" y="-535.8" font-family="Times,serif" font-size="14.00"> 0.07s</text>
</a>
</g>
</g>
<!-- N65 -->
<g id="node66" class="node"><title>N65</title>
<g id="a_node66"><a xlink:title="sync.runtime_notifyListNotifyOne (0.32s)">
<polygon fill="#f8f8f8" stroke="black" points="1529.65,-779 1374.35,-779 1374.35,-741 1529.65,-741 1529.65,-779"/>
<text text-anchor="middle" x="1452" y="-767" font-family="Times,serif" font-size="10.00">sync.runtime_notifyListNotifyOne</text>
<text text-anchor="middle" x="1452" y="-757" font-family="Times,serif" font-size="10.00">0.04s(0.2%)</text>
<text text-anchor="middle" x="1452" y="-747" font-family="Times,serif" font-size="10.00">of 0.32s(1.63%)</text>
</a>
</g>
</g>
<!-- N62&#45;&gt;N65 -->
<g id="edge58" class="edge"><title>N62&#45;&gt;N65</title>
<g id="a_edge58"><a xlink:title="sync.(*Cond).Signal &#45;&gt; sync.runtime_notifyListNotifyOne (0.32s)">
<path fill="none" stroke="black" d="M2061.63,-845.248C2038.15,-840.978 2009.67,-835.985 1984,-832 1827.9,-807.767 1645.24,-784.493 1539.66,-771.535"/>
<polygon fill="black" stroke="black" points="1540.03,-768.055 1529.68,-770.313 1539.18,-775.003 1540.03,-768.055"/>
</a>
</g>
<g id="a_edge58&#45;label"><a xlink:title="sync.(*Cond).Signal &#45;&gt; sync.runtime_notifyListNotifyOne (0.32s)">
<text text-anchor="middle" x="1868.72" y="-802.8" font-family="Times,serif" font-size="14.00"> 0.32s</text>
</a>
</g>
</g>
<!-- N64&#45;&gt;N4 -->
<g id="edge82" class="edge"><title>N64&#45;&gt;N4</title>
<g id="a_edge82"><a xlink:title="github.com/centrifugal/centrifugo/vendor/github.com/gorilla/websocket.(*Upgrader).Upgrade &#45;&gt; net.(*conn).Write (0.11s)">
<path fill="none" stroke="black" d="M1341.98,-1199.96C1199.39,-1180.83 975.15,-1150.74 876.884,-1137.56"/>
<polygon fill="black" stroke="black" points="877.311,-1134.08 866.934,-1136.22 876.38,-1141.02 877.311,-1134.08"/>
</a>
</g>
<g id="a_edge82&#45;label"><a xlink:title="github.com/centrifugal/centrifugo/vendor/github.com/gorilla/websocket.(*Upgrader).Upgrade &#45;&gt; net.(*conn).Write (0.11s)">
<text text-anchor="middle" x="1203.47" y="-1169.8" font-family="Times,serif" font-size="14.00"> 0.11s</text>
</a>
</g>
</g>
<!-- N68 -->
<g id="node69" class="node"><title>N68</title>
<g id="a_node69"><a xlink:title="runtime.goready (0.30s)">
<polygon fill="#f8f8f8" stroke="black" points="1084.77,-666 1011.23,-666 1011.23,-630 1084.77,-630 1084.77,-666"/>
<text text-anchor="middle" x="1048" y="-649.6" font-family="Times,serif" font-size="8.00">runtime.goready</text>
<text text-anchor="middle" x="1048" y="-641.6" font-family="Times,serif" font-size="8.00">0 of 0.30s(1.53%)</text>
</a>
</g>
</g>
<!-- N65&#45;&gt;N68 -->
<g id="edge73" class="edge"><title>N65&#45;&gt;N68</title>
<g id="a_edge73"><a xlink:title="sync.runtime_notifyListNotifyOne ... runtime.goready (0.26s)">
<path fill="none" stroke="black" stroke-dasharray="1,5" d="M1385.74,-740.959C1303.75,-718.634 1166.22,-681.19 1094.58,-661.683"/>
<polygon fill="black" stroke="black" points="1095.49,-658.303 1084.92,-659.053 1093.65,-665.057 1095.49,-658.303"/>
</a>
</g>
<g id="a_edge73&#45;label"><a xlink:title="sync.runtime_notifyListNotifyOne ... runtime.goready (0.26s)">
<text text-anchor="middle" x="1315.72" y="-708.8" font-family="Times,serif" font-size="14.00"> 0.26s</text>
</a>
</g>
</g>
<!-- N66&#45;&gt;N79 -->
<g id="edge93" class="edge"><title>N66&#45;&gt;N79</title>
<g id="a_edge93"><a xlink:title="runtime.timerproc &#45;&gt; runtime.unlock (0.02s)">
<path fill="none" stroke="black" d="M333.925,-1564.84C296.439,-1553.61 244,-1530.05 244,-1486 244,-1486 244,-1486 244,-1039.5 244,-1000.45 284.866,-977.016 320.052,-964.072"/>
<polygon fill="black" stroke="black" points="321.486,-967.279 329.786,-960.695 319.192,-960.666 321.486,-967.279"/>
</a>
</g>
<g id="a_edge93&#45;label"><a xlink:title="runtime.timerproc &#45;&gt; runtime.unlock (0.02s)">
<text text-anchor="middle" x="260.724" y="-1257.8" font-family="Times,serif" font-size="14.00"> 0.02s</text>
</a>
</g>
</g>
<!-- N68&#45;&gt;N32 -->
<g id="edge62" class="edge"><title>N68&#45;&gt;N32</title>
<g id="a_edge62"><a xlink:title="runtime.goready &#45;&gt; runtime.systemstack (0.30s)">
<path fill="none" stroke="black" d="M1038.32,-629.78C1015.96,-591.123 957.38,-495.984 889,-434 868.142,-415.094 841.075,-399.667 817.29,-388.315"/>
<polygon fill="black" stroke="black" points="818.558,-385.045 808.014,-384.011 815.612,-391.395 818.558,-385.045"/>
</a>
</g>
<g id="a_edge62&#45;label"><a xlink:title="runtime.goready &#45;&gt; runtime.systemstack (0.30s)">
<text text-anchor="middle" x="968.724" y="-492.8" font-family="Times,serif" font-size="14.00"> 0.30s</text>
</a>
</g>
</g>
<!-- N70 -->
<g id="node71" class="node"><title>N70</title>
<g id="a_node71"><a xlink:title="runtime.ready (0.30s)">
<polygon fill="#f8f8f8" stroke="black" points="798.77,-210 725.23,-210 725.23,-174 798.77,-174 798.77,-210"/>
<text text-anchor="middle" x="762" y="-193.6" font-family="Times,serif" font-size="8.00">runtime.ready</text>
<text text-anchor="middle" x="762" y="-185.6" font-family="Times,serif" font-size="8.00">0 of 0.30s(1.53%)</text>
</a>
</g>
</g>
<!-- N69&#45;&gt;N70 -->
<g id="edge63" class="edge"><title>N69&#45;&gt;N70</title>
<g id="a_edge63"><a xlink:title="runtime.goready.func1 &#45;&gt; runtime.ready (0.30s)">
<path fill="none" stroke="black" d="M762,-259.595C762,-248.257 762,-233.227 762,-220.315"/>
<polygon fill="black" stroke="black" points="765.5,-220.095 762,-210.095 758.5,-220.095 765.5,-220.095"/>
</a>
</g>
<g id="a_edge63&#45;label"><a xlink:title="runtime.goready.func1 &#45;&gt; runtime.ready (0.30s)">
<text text-anchor="middle" x="778.724" y="-230.8" font-family="Times,serif" font-size="14.00"> 0.30s</text>
</a>
</g>
</g>
<!-- N70&#45;&gt;N59 -->
<g id="edge76" class="edge"><title>N70&#45;&gt;N59</title>
<g id="a_edge76"><a xlink:title="runtime.ready &#45;&gt; runtime.wakep (0.21s)">
<path fill="none" stroke="black" d="M762,-173.595C762,-162.257 762,-147.227 762,-134.315"/>
<polygon fill="black" stroke="black" points="765.5,-134.095 762,-124.095 758.5,-134.095 765.5,-134.095"/>
</a>
</g>
<g id="a_edge76&#45;label"><a xlink:title="runtime.ready &#45;&gt; runtime.wakep (0.21s)">
<text text-anchor="middle" x="778.724" y="-144.8" font-family="Times,serif" font-size="14.00"> 0.21s</text>
</a>
</g>
</g>
<!-- N73 -->
<g id="node74" class="node"><title>N73</title>
<g id="a_node74"><a xlink:title="io/ioutil.readAll (0.29s)">
<polygon fill="#f8f8f8" stroke="black" points="1663.24,-1148 1588.76,-1148 1588.76,-1112 1663.24,-1112 1663.24,-1148"/>
<text text-anchor="middle" x="1626" y="-1136.3" font-family="Times,serif" font-size="9.00">io/ioutil.readAll</text>
<text text-anchor="middle" x="1626" y="-1127.3" font-family="Times,serif" font-size="9.00">0.01s(0.051%)</text>
<text text-anchor="middle" x="1626" y="-1118.3" font-family="Times,serif" font-size="9.00">of 0.29s(1.48%)</text>
</a>
</g>
</g>
<!-- N72&#45;&gt;N73 -->
<g id="edge66" class="edge"><title>N72&#45;&gt;N73</title>
<g id="a_edge66"><a xlink:title="io/ioutil.ReadAll &#45;&gt; io/ioutil.readAll (0.29s)">
<path fill="none" stroke="black" d="M1671.99,-1199.98C1664.38,-1194.58 1656.61,-1188.14 1650.55,-1181 1644.77,-1174.19 1639.96,-1165.77 1636.18,-1157.81"/>
<polygon fill="black" stroke="black" points="1639.3,-1156.2 1632.08,-1148.45 1632.88,-1159.01 1639.3,-1156.2"/>
</a>
</g>
<g id="a_edge66&#45;label"><a xlink:title="io/ioutil.ReadAll &#45;&gt; io/ioutil.readAll (0.29s)">
<text text-anchor="middle" x="1666.72" y="-1169.8" font-family="Times,serif" font-size="14.00"> 0.29s</text>
</a>
</g>
</g>
<!-- N80 -->
<g id="node81" class="node"><title>N80</title>
<g id="a_node81"><a xlink:title="bytes.(*Buffer).ReadFrom (0.27s)">
<polygon fill="#f8f8f8" stroke="black" points="1670.23,-1058.5 1569.77,-1058.5 1569.77,-1022.5 1670.23,-1022.5 1670.23,-1058.5"/>
<text text-anchor="middle" x="1620" y="-1042.1" font-family="Times,serif" font-size="8.00">bytes.(*Buffer).ReadFrom</text>
<text text-anchor="middle" x="1620" y="-1034.1" font-family="Times,serif" font-size="8.00">0 of 0.27s(1.38%)</text>
</a>
</g>
</g>
<!-- N73&#45;&gt;N80 -->
<g id="edge71" class="edge"><title>N73&#45;&gt;N80</title>
<g id="a_edge71"><a xlink:title="io/ioutil.readAll &#45;&gt; bytes.(*Buffer).ReadFrom (0.27s)">
<path fill="none" stroke="black" d="M1624.81,-1111.71C1623.98,-1099.49 1622.84,-1082.85 1621.87,-1068.84"/>
<polygon fill="black" stroke="black" points="1625.36,-1068.49 1621.18,-1058.75 1618.38,-1068.97 1625.36,-1068.49"/>
</a>
</g>
<g id="a_edge71&#45;label"><a xlink:title="io/ioutil.readAll &#45;&gt; bytes.(*Buffer).ReadFrom (0.27s)">
<text text-anchor="middle" x="1639.72" y="-1081.8" font-family="Times,serif" font-size="14.00"> 0.27s</text>
</a>
</g>
</g>
<!-- N75&#45;&gt;N47 -->
<g id="edge91" class="edge"><title>N75&#45;&gt;N47</title>
<g id="a_edge91"><a xlink:title="encoding/json.Marshal &#45;&gt; runtime.newobject (0.04s)">
<path fill="none" stroke="black" d="M2044.32,-1030.43C2025.99,-1026.89 2004.52,-1022.97 1985,-1020 1864.23,-1001.62 1833.75,-998.047 1712,-988 1440.6,-965.605 1114.96,-955.281 986.748,-951.862"/>
<polygon fill="black" stroke="black" points="986.498,-948.354 976.409,-951.59 986.313,-955.352 986.498,-948.354"/>
</a>
</g>
<g id="a_edge91&#45;label"><a xlink:title="encoding/json.Marshal &#45;&gt; runtime.newobject (0.04s)">
<text text-anchor="middle" x="1873.72" y="-990.8" font-family="Times,serif" font-size="14.00"> 0.04s</text>
</a>
</g>
</g>
<!-- N76 -->
<g id="node77" class="node"><title>N76</title>
<g id="a_node77"><a xlink:title="runtime.mstart (0.28s)">
<polygon fill="#f8f8f8" stroke="black" points="101.77,-1058.5 28.2301,-1058.5 28.2301,-1022.5 101.77,-1022.5 101.77,-1058.5"/>
<text text-anchor="middle" x="65" y="-1042.1" font-family="Times,serif" font-size="8.00">runtime.mstart</text>
<text text-anchor="middle" x="65" y="-1034.1" font-family="Times,serif" font-size="8.00">0 of 0.28s(1.43%)</text>
</a>
</g>
</g>
<!-- N77 -->
<g id="node78" class="node"><title>N77</title>
<g id="a_node78"><a xlink:title="runtime.mstart1 (0.28s)">
<polygon fill="#f8f8f8" stroke="black" points="101.77,-967.5 28.2301,-967.5 28.2301,-931.5 101.77,-931.5 101.77,-967.5"/>
<text text-anchor="middle" x="65" y="-951.1" font-family="Times,serif" font-size="8.00">runtime.mstart1</text>
<text text-anchor="middle" x="65" y="-943.1" font-family="Times,serif" font-size="8.00">0 of 0.28s(1.43%)</text>
</a>
</g>
</g>
<!-- N76&#45;&gt;N77 -->
<g id="edge68" class="edge"><title>N76&#45;&gt;N77</title>
<g id="a_edge68"><a xlink:title="runtime.mstart &#45;&gt; runtime.mstart1 (0.28s)">
<path fill="none" stroke="black" d="M65,-1022.34C65,-1009.78 65,-992.479 65,-978.002"/>
<polygon fill="black" stroke="black" points="68.5001,-977.607 65,-967.607 61.5001,-977.607 68.5001,-977.607"/>
</a>
</g>
<g id="a_edge68&#45;label"><a xlink:title="runtime.mstart &#45;&gt; runtime.mstart1 (0.28s)">
<text text-anchor="middle" x="81.7241" y="-990.8" font-family="Times,serif" font-size="14.00"> 0.28s</text>
</a>
</g>
</g>
<!-- N78 -->
<g id="node79" class="node"><title>N78</title>
<g id="a_node79"><a xlink:title="runtime.sysmon (0.28s)">
<polygon fill="#f8f8f8" stroke="black" points="101.77,-873.5 28.2301,-873.5 28.2301,-837.5 101.77,-837.5 101.77,-873.5"/>
<text text-anchor="middle" x="65" y="-857.1" font-family="Times,serif" font-size="8.00">runtime.sysmon</text>
<text text-anchor="middle" x="65" y="-849.1" font-family="Times,serif" font-size="8.00">0 of 0.28s(1.43%)</text>
</a>
</g>
</g>
<!-- N77&#45;&gt;N78 -->
<g id="edge69" class="edge"><title>N77&#45;&gt;N78</title>
<g id="a_edge69"><a xlink:title="runtime.mstart1 &#45;&gt; runtime.sysmon (0.28s)">
<path fill="none" stroke="black" d="M65,-931.196C65,-917.96 65,-899.447 65,-884.163"/>
<polygon fill="black" stroke="black" points="68.5001,-883.727 65,-873.727 61.5001,-883.727 68.5001,-883.727"/>
</a>
</g>
<g id="a_edge69&#45;label"><a xlink:title="runtime.mstart1 &#45;&gt; runtime.sysmon (0.28s)">
<text text-anchor="middle" x="81.7241" y="-899.8" font-family="Times,serif" font-size="14.00"> 0.28s</text>
</a>
</g>
</g>
<!-- N78&#45;&gt;N28 -->
<g id="edge85" class="edge"><title>N78&#45;&gt;N28</title>
<g id="a_edge85"><a xlink:title="runtime.sysmon ... runtime.futex (0.09s)">
<path fill="none" stroke="black" stroke-dasharray="1,5" d="M97.2418,-837.492C101.787,-835.461 106.459,-833.558 111,-832 147.936,-819.323 159.181,-823.729 197,-814 234.357,-804.389 275.681,-791.804 308.571,-781.309"/>
<polygon fill="black" stroke="black" points="310.041,-784.513 318.493,-778.125 307.902,-777.848 310.041,-784.513"/>
</a>
</g>
<g id="a_edge85&#45;label"><a xlink:title="runtime.sysmon ... runtime.futex (0.09s)">
<text text-anchor="middle" x="261.724" y="-802.8" font-family="Times,serif" font-size="14.00"> 0.09s</text>
</a>
</g>
</g>
<!-- N79&#45;&gt;N38 -->
<g id="edge77" class="edge"><title>N79&#45;&gt;N38</title>
<g id="a_edge77"><a xlink:title="runtime.unlock &#45;&gt; runtime.futexwakeup (0.18s)">
<path fill="none" stroke="black" d="M370,-930.324C370,-917.092 370,-898.941 370,-883.948"/>
<polygon fill="black" stroke="black" points="373.5,-883.705 370,-873.705 366.5,-883.705 373.5,-883.705"/>
</a>
</g>
<g id="a_edge77&#45;label"><a xlink:title="runtime.unlock &#45;&gt; runtime.futexwakeup (0.18s)">
<text text-anchor="middle" x="386.724" y="-899.8" font-family="Times,serif" font-size="14.00"> 0.18s</text>
</a>
</g>
</g>
</g>
</g></svg>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment