Home | History | Annotate | Download | only in internal
      1 !<arch>
      2 __.PKGDEF       0           0     0     644     1848      `
      3 go object linux amd64 go1.8 X:framepointer
      4 build id "0b966bb2df5a96632bf4cb424fb6cd197a185ae4"
      5 ----
      6 
      7 build id "0b966bb2df5a96632bf4cb424fb6cd197a185ae4"
      8 
      9 $$B
     10 version 3
     11 
     12 svg	Q|SGOROOT/src/cmd/pprof/internal/svg/svg.go.
Massage
Buffer	bytes
     16 buf"offbootstrap"lastRead
readOp.	Bytes<b2esc:0x22"Cap<
esc:0x1Grow<b1n2Len<Next<n3"Read<b3
esc:0x9"p4n1&err2ReadByte<."&ReadBytes<.0"delim4"
line1&6ReadFrom<.0
ReaderioD,"pn&errr4
     25 4&6ReadRune<b4|Sr1
size2&err3ReadString<."< >&6	Reset<"String< Truncate<"|SUnreadByte<&UnreadRune<&	Write<."204&6WriteByte<"c3&WriteRune<.|SL4&6WriteString<. s404&6
WriteTo<.0
Writerd"FH&Jw4
     32 4&6grow<*readSlice<."<">&6	in2 	Lpan.goinit><	L.goNewerrors 
text2&
errorStrings 	ErrorDe2 ttBttt(t
     42 >%`m4(8t&*(*`
data5"(ttt*4t**
     47 %(t
     48 >%z
     49 4/
     50  -	<nil>X ttzt
     52 >%8
     53  -ubytes.Buffer: UnreadByte: previous operation was not a read(t
     54 >%t
     55 %4t
     56 4/t
     57 >%8
     58  -ybytes.Buffer: UnreadRune: previous operation was not ReadRunetXt4tXt(t
     59 >%
     60 4/2X&VPD4t
     61 $$
     62 _go_.o          0           0     0     644     11362     `
     63 go object linux amd64 go1.8 X:framepointer
     64 build id "0b966bb2df5a96632bf4cb424fb6cd197a185ae4"
     65 ----
     66 
     67 
     68 !
     69 go17ldbytes.aregexp.astrings.a"".Massage2runtime.slicebytetostringgo.string."&;"$go.string."&amp;;"strings.Replace"".viewBox@regexp.(*Regexp).FindStringIndex^go.string."<svg width=\"100%\" height=\"100%\""*runtime.concatstring3"".graphIdgo.string..gostring.7653.0ffac498c6c7d6b9ce5741b7d365b5b96e946d48b0fa9e969442a1f74a470bd1"".svgClose go.string."</g>"$runtime.panicslice$runtime.panicindex0runtime.morestack_noctxtsvg.lentype.intsvg.ptrtype.*uint8~r1type.stringin"type.bytes.BufferTgclocals1c813cfee512a963fce1af57a94e47e9Tgclocals9fb7f0986f647f17cb53dda1484e0f7aR$GOROOT/src/cmd/pprof/internal/svg/svg.go"".init"".initdone"runtime.throwinitbytes.initregexp.initstrings.initgo.string."<svg\\s*width=\"[^\"]+\"\\s*height=\"[^\"]+\"\\s*viewBox=\"[^\"]+\""$regexp.MustCompile(runtime.writeBarrier<go.string."<g id=\"graph\\d\""$go.string."</svg>".runtime.writebarrierptrTgclocals33cdeccccebe80329f1fdbee7f5874cbX$GOROOT/src/cmd/pprof/internal/svg/svgpan.go$go.info."".Massagego.info.intgo.info.*uint8(go.info.bytes.Buffergo.info.stringgo.info."".init&type.*regexp.Regexptype.uint8.type..importpath.bytes.0type..importpath.regexp.2type..importpath.strings.|dH%H;aNH`Hl$XHl$XH$HL$hHT$pH\$xH9H$H)HsH?HH!HHL$H)HT$H\$HD$ HL$(H$HL$HHD$HD$HHD$ HD$(HD$0HD$8HD$PHL$@HL$HHH$HD$HL$HD$HL$ HJH:HH\$HH9"HH@H9H$HL$PHL$HT$HHT$HD$ H)HSH?HH!HHD$(H\$0HD$8HL$@HD$PHL$HHH$HD$HL$HD$HL$ H]HMHHL$HH95H$HT$PHT$HD$HH\$HD$ H)HYH?HH!HHD$(HL$0HD$8HL$@HL$HHD$PHH$HD$HL$HD$HL$ HHHHL$HH9wtH$HT$PHT$HD$HH\$HD$ H)HYH?HH!HHD$(HL$0HD$8HL$@H$H$Hl$XH`HD$PHL$HHL$HHD$PHD$PHL$H2i
     80 0!^U.-.<7<7<	
     81 
     84 A
     85 py.}.y
     86 dH%H;a,H Hl$Hl$<v
     88 Hl$H uHH$HD$7HD$
HHH$HD$HD$
u^HHH$HD$HD$
uHHl$H H
H$HD$H
H$HD$H
H$HD$I@?@?@H?
     99 U1
    100 U3//
    101 8
    102 &;&amp;;<svg width="100%" height="100%"<script type="text/ecmascript"><![CDATA[
    103 /** 
    104  *  SVGPan library 1.2.1
    105  * ======================
    106  *
    107  * Given an unique existing element with id "viewport" (or when missing, the first g 
    108  * element), including the the library into any SVG adds the following capabilities:
    109  *
    110  *  - Mouse panning
    111  *  - Mouse zooming (using the wheel)
    112  *  - Object dragging
    113  *
    114  * You can configure the behavior of the pan/zoom/drag with the variables
    115  * listed in the CONFIGURATION section of this file.
    116  *
    117  * Known issues:
    118  *
    119  *  - Zooming (while panning) on Safari has still some issues
    120  *
    121  * Releases:
    122  *
    123  * 1.2.1, Mon Jul  4 00:33:18 CEST 2011, Andrea Leofreddi
    124  *	- Fixed a regression with mouse wheel (now working on Firefox 5)
    125  *	- Working with viewBox attribute (#4)
    126  *	- Added "use strict;" and fixed resulting warnings (#5)
    127  *	- Added configuration variables, dragging is disabled by default (#3)
    128  *
    129  * 1.2, Sat Mar 20 08:42:50 GMT 2010, Zeng Xiaohui
    130  *	Fixed a bug with browser mouse handler interaction
    131  *
    132  * 1.1, Wed Feb  3 17:39:33 GMT 2010, Zeng Xiaohui
    133  *	Updated the zoom code to support the mouse wheel on Safari/Chrome
    134  *
    135  * 1.0, Andrea Leofreddi
    136  *	First release
    137  *
    138  * This code is licensed under the following BSD license:
    139  *
    140  * Copyright 2009-2010 Andrea Leofreddi <a.leofreddi (a] itcharm.com>. All rights reserved.
    141  * 
    142  * Redistribution and use in source and binary forms, with or without modification, are
    143  * permitted provided that the following conditions are met:
    144  * 
    145  *    1. Redistributions of source code must retain the above copyright notice, this list of
    146  *       conditions and the following disclaimer.
    147  * 
    148  *    2. Redistributions in binary form must reproduce the above copyright notice, this list
    149  *       of conditions and the following disclaimer in the documentation and/or other materials
    150  *       provided with the distribution.
    151  * 
    152  * THIS SOFTWARE IS PROVIDED BY Andrea Leofreddi ``AS IS'' AND ANY EXPRESS OR IMPLIED
    153  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
    154  * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Andrea Leofreddi OR
    155  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    156  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
    157  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
    158  * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
    159  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
    160  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    161  * 
    162  * The views and conclusions contained in the software and documentation are those of the
    163  * authors and should not be interpreted as representing official policies, either expressed
    164  * or implied, of Andrea Leofreddi.
    165  */
    166 
    167 "use strict";
    168 
    169 /// CONFIGURATION 
    170 /// ====>
    171 
    172 var enablePan = 1; // 1 or 0: enable or disable panning (default enabled)
    173 var enableZoom = 1; // 1 or 0: enable or disable zooming (default enabled)
    174 var enableDrag = 0; // 1 or 0: enable or disable dragging (default disabled)
    175 
    176 /// <====
    177 /// END OF CONFIGURATION 
    178 
    179 var root = document.documentElement;
    180 
    181 var state = 'none', svgRoot, stateTarget, stateOrigin, stateTf;
    182 
    183 setupHandlers(root);
    184 
    185 /**
    186  * Register handlers
    187  */
    188 function setupHandlers(root){
    189 	setAttributes(root, {
    190 		"onmouseup" : "handleMouseUp(evt)",
    191 		"onmousedown" : "handleMouseDown(evt)",
    192 		"onmousemove" : "handleMouseMove(evt)",
    193 		//"onmouseout" : "handleMouseUp(evt)", // Decomment this to stop the pan functionality when dragging out of the SVG element
    194 	});
    195 
    196 	if(navigator.userAgent.toLowerCase().indexOf('webkit') >= 0)
    197 		window.addEventListener('mousewheel', handleMouseWheel, false); // Chrome/Safari
    198 	else
    199 		window.addEventListener('DOMMouseScroll', handleMouseWheel, false); // Others
    200 }
    201 
    202 /**
    203  * Retrieves the root element for SVG manipulation. The element is then cached into the svgRoot global variable.
    204  */
    205 function getRoot(root) {
    206 	if(typeof(svgRoot) == "undefined") {
    207 		var g = null;
    208 
    209 		g = root.getElementById("viewport");
    210 
    211 		if(g == null)
    212 			g = root.getElementsByTagName('g')[0];
    213 
    214 		if(g == null)
    215 			alert('Unable to obtain SVG root element');
    216 
    217 		setCTM(g, g.getCTM());
    218 
    219 		g.removeAttribute("viewBox");
    220 
    221 		svgRoot = g;
    222 	}
    223 
    224 	return svgRoot;
    225 }
    226 
    227 /**
    228  * Instance an SVGPoint object with given event coordinates.
    229  */
    230 function getEventPoint(evt) {
    231 	var p = root.createSVGPoint();
    232 
    233 	p.x = evt.clientX;
    234 	p.y = evt.clientY;
    235 
    236 	return p;
    237 }
    238 
    239 /**
    240  * Sets the current transform matrix of an element.
    241  */
    242 function setCTM(element, matrix) {
    243 	var s = "matrix(" + matrix.a + "," + matrix.b + "," + matrix.c + "," + matrix.d + "," + matrix.e + "," + matrix.f + ")";
    244 
    245 	element.setAttribute("transform", s);
    246 }
    247 
    248 /**
    249  * Dumps a matrix to a string (useful for debug).
    250  */
    251 function dumpMatrix(matrix) {
    252 	var s = "[ " + matrix.a + ", " + matrix.c + ", " + matrix.e + "\n  " + matrix.b + ", " + matrix.d + ", " + matrix.f + "\n  0, 0, 1 ]";
    253 
    254 	return s;
    255 }
    256 
    257 /**
    258  * Sets attributes of an element.
    259  */
    260 function setAttributes(element, attributes){
    261 	for (var i in attributes)
    262 		element.setAttributeNS(null, i, attributes[i]);
    263 }
    264 
    265 /**
    266  * Handle mouse wheel event.
    267  */
    268 function handleMouseWheel(evt) {
    269 	if(!enableZoom)
    270 		return;
    271 
    272 	if(evt.preventDefault)
    273 		evt.preventDefault();
    274 
    275 	evt.returnValue = false;
    276 
    277 	var svgDoc = evt.target.ownerDocument;
    278 
    279 	var delta;
    280 
    281 	if(evt.wheelDelta)
    282 		delta = evt.wheelDelta / 3600; // Chrome/Safari
    283 	else
    284 		delta = evt.detail / -90; // Mozilla
    285 
    286 	var z = 1 + delta; // Zoom factor: 0.9/1.1
    287 
    288 	var g = getRoot(svgDoc);
    289 	
    290 	var p = getEventPoint(evt);
    291 
    292 	p = p.matrixTransform(g.getCTM().inverse());
    293 
    294 	// Compute new scale matrix in current mouse position
    295 	var k = root.createSVGMatrix().translate(p.x, p.y).scale(z).translate(-p.x, -p.y);
    296 
    297         setCTM(g, g.getCTM().multiply(k));
    298 
    299 	if(typeof(stateTf) == "undefined")
    300 		stateTf = g.getCTM().inverse();
    301 
    302 	stateTf = stateTf.multiply(k.inverse());
    303 }
    304 
    305 /**
    306  * Handle mouse move event.
    307  */
    308 function handleMouseMove(evt) {
    309 	if(evt.preventDefault)
    310 		evt.preventDefault();
    311 
    312 	evt.returnValue = false;
    313 
    314 	var svgDoc = evt.target.ownerDocument;
    315 
    316 	var g = getRoot(svgDoc);
    317 
    318 	if(state == 'pan' && enablePan) {
    319 		// Pan mode
    320 		var p = getEventPoint(evt).matrixTransform(stateTf);
    321 
    322 		setCTM(g, stateTf.inverse().translate(p.x - stateOrigin.x, p.y - stateOrigin.y));
    323 	} else if(state == 'drag' && enableDrag) {
    324 		// Drag mode
    325 		var p = getEventPoint(evt).matrixTransform(g.getCTM().inverse());
    326 
    327 		setCTM(stateTarget, root.createSVGMatrix().translate(p.x - stateOrigin.x, p.y - stateOrigin.y).multiply(g.getCTM().inverse()).multiply(stateTarget.getCTM()));
    328 
    329 		stateOrigin = p;
    330 	}
    331 }
    332 
    333 /**
    334  * Handle click event.
    335  */
    336 function handleMouseDown(evt) {
    337 	if(evt.preventDefault)
    338 		evt.preventDefault();
    339 
    340 	evt.returnValue = false;
    341 
    342 	var svgDoc = evt.target.ownerDocument;
    343 
    344 	var g = getRoot(svgDoc);
    345 
    346 	if(
    347 		evt.target.tagName == "svg" 
    348 		|| !enableDrag // Pan anyway when drag is disabled and the user clicked on an element 
    349 	) {
    350 		// Pan mode
    351 		state = 'pan';
    352 
    353 		stateTf = g.getCTM().inverse();
    354 
    355 		stateOrigin = getEventPoint(evt).matrixTransform(stateTf);
    356 	} else {
    357 		// Drag mode
    358 		state = 'drag';
    359 
    360 		stateTarget = evt.target;
    361 
    362 		stateTf = g.getCTM().inverse();
    363 
    364 		stateOrigin = getEventPoint(evt).matrixTransform(stateTf);
    365 	}
    366 }
    367 
    368 /**
    369  * Handle mouse button release event.
    370  */
    371 function handleMouseUp(evt) {
    372 	if(evt.preventDefault)
    373 		evt.preventDefault();
    374 
    375 	evt.returnValue = false;
    376 
    377 	var svgDoc = evt.target.ownerDocument;
    378 
    379 	if(state == 'pan' || state == 'drag') {
    380 		// Quit pan mode
    381 		state = '';
    382 	}
    383 }
    384 
    385 ]]></script><g id="viewport" transform="scale(0.5,0.5) translate(0,0)"></g>"".Massagesvg.len`"svg.ptrh"in~r1"<svg\s*width="[^"]+"\s*height="[^"]+"\s*viewBox="[^"]+"<g id="graph\d"</svg>"".initbytesregexpstrings

6
    388  
    389 		
    391 


 "$&(*,.0 r*24686
    403  H:r<:>@BDFHJFHLFH:NNN @  @PPR6>>ww42ZT(
V8V8X8Z8\DnnJLPZ^668"8>`>`>`@:bdfhgo17ld