<commit_before><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- saved from url=(0014)about:internet -->
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> 
    <!-- 
    Smart developers always View Source. 
    
    This application was built using Adobe Flex, an open source framework
    for building rich Internet applications that get delivered via the
    Flash Player or to desktops via Adobe AIR. 
    
    Learn more about Flex at http://flex.org 
    // -->
    <head>
        <title>${title}</title>
        <meta name="google" value="notranslate" />         
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <!-- Include CSS to eliminate any default margins/padding and set the height of the html element and 
             the body element to 100%, because Firefox, or any Gecko based browser, interprets percentage as 
             the percentage of the height of its parent container, which has to be set explicitly.  Fix for
             Firefox 3.6 focus border issues.  Initially, don't display flashContent div so it won't show 
             if JavaScript disabled.
        -->
        <style type="text/css" media="screen"> 
            html, body  { height:100%; }
            body { margin:0; padding:0; overflow:auto; text-align:center; 
                   background-color: ${bgcolor}; }   
            object:focus { outline:none; }
            #flashContent { display:none; }
        </style>
        
        <!-- Enable Browser History by replacing useBrowserHistory tokens with two hyphens -->
        <!-- BEGIN Browser History required section ${useBrowserHistory}>
        <link rel="stylesheet" type="text/css" href="history/history.css" />
        <script type="text/javascript" src="history/history.js"></script>
        <!${useBrowserHistory} END Browser History required section -->  
            
        <script type="text/javascript" src="swfobject.js"></script>
        <script type="text/javascript">
            // For version detection, set to min. required Flash Player version, or 0 (or 0.0.0), for no version detection. 
            var swfVersionStr = "0";
            // To use express install, set to playerProductInstall.swf, otherwise the empty string. 
            var xiSwfUrlStr = "";
            var flashvars = {};
            var params = {};
            params.quality = "high";
            params.bgcolor = "#000000";
            params.allowscriptaccess = "sameDomain";
            params.allowfullscreen = "true";
            params.wmode = "direct";
            var attributes = {};
            attributes.id = "TestPlayer";
            attributes.name = "TestPlayer";
            attributes.align = "middle";
            swfobject.embedSWF(
                "TestPlayer.swf?" + Math.random(), "flashContent", 
                "1024", "768", 
                swfVersionStr, xiSwfUrlStr, 
                flashvars, params, attributes);
            // JavaScript enabled so display the flashContent div in case it is not replaced with a swf object.
            swfobject.createCSS("#flashContent", "display:block;text-align:left;");
        </script>
        
        <script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.5/d3.min.js" charset="utf-8"></script>
        
        <script>
            var tags=[];
            var bufferDirty = true;

            var isSetup = false;
            var howFarBack = 20;
            var width = 2048, height = 1024;

            // Initiate buffer rendering.
            setInterval(redrawBuffer, 100);

            function tag(time, type)
            {
                // Note tag.
                tags.push({time: time, type: type});
                
                // Mark redraw needed.
                bufferDirty = true;
            }
            
            function adjustZoom(e)
            {
                var delta = -e.detail || e.wheelDelta;
                
                if(delta < 0)
                    howFarBack = Math.max(1, howFarBack - 0.5);
                else
                    howFarBack = Math.min(45, howFarBack + 0.5);
                    
                bufferDirty = true;
                e.preventDefault();
                return false;
            }
            
            function redrawBuffer()
            {
                if(bufferDirty == false)
                    return;

                bufferDirty = false;

                // Set up canvas.
                var canvas = document.getElementById("canvas");
                var ctx = canvas.getContext("2d");
                if(!isSetup)
                {
                    console.log("Initializing tag debug view.");
                    this.window.addEventListener("mousewheel", adjustZoom, false);
                    this.window.addEventListener("DOMMouseScroll", adjustZoom, false);
                    isSetup = true;
                }

                ctx.clearRect(0, 0, width, height)                
                
                if(tags.length == 0)
                    return;
                
                // Get last time.
                var lastItem = tags[tags.length-1];
                
                // Draw up to a certain number of seconds back.
                var secondsToPixels = width / howFarBack;
                var lastTimestamp = lastItem.time;
                
                var currentItemIdx = tags.length - 1;
                
                var highwater = {};
                
                while(currentItemIdx >= 0 && tags[currentItemIdx].time >= (lastTimestamp - howFarBack))
                {
                    var tagType = tags[currentItemIdx].type;
                    var tagTime = tags[currentItemIdx].time;
                    
                    var wasBackwards = false;

                    if(highwater[tagType] > tagTime)
                        wasBackwards = true;
                    
                    if(highwater[tagType] < tagTime)
                        highwater[tagType] = tagTime;
                    
                    ctx.fillStyle = wasBackwards ? "red" : "green";
                    ctx.fillRect(
                        width - (lastTimestamp - tags[currentItemIdx].time) * secondsToPixels,
                        tags[currentItemIdx].type * 10, 1, wasBackwards ? 30 : 10);
                        
                    currentItemIdx--;
                }
            }
        </script>
    </head>
    <body>
        <!-- SWFObject's dynamic embed method replaces this alternative HTML content with Flash content when enough 
             JavaScript and Flash plug-in support is available. The div is initially hidden so that it doesn't show
             when JavaScript is disabled.
        -->
        <div id="flashContent">
            <p>
                To view this page ensure that Adobe Flash Player version 
                ${version_major}.${version_minor}.${version_revision} or greater is installed. 
            </p>
            <script type="text/javascript"> 
                var pageHost = ((document.location.protocol == "https:") ? "https://" : "http://"); 
                document.write("<a href='http://www.adobe.com/go/getflashplayer'><img src='" 
                                + pageHost + "www.adobe.com/images/shared/download_buttons/get_flash_player.gif' alt='Get Adobe Flash player' /></a>" ); 
            </script> 
        </div>
        
        <noscript>
            <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="1024" height="768" id="TestPlayer">
                <param name="movie" value="TestPlayer.swf" />
                <param name="quality" value="high" />
                <param name="bgcolor" value="#00000" /><commit_msg>Interactive debug timeline.<commit_after><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- saved from url=(0014)about:internet -->
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> 
    <!-- 
    Smart developers always View Source. 
    
    This application was built using Adobe Flex, an open source framework
    for building rich Internet applications that get delivered via the
    Flash Player or to desktops via Adobe AIR. 
    
    Learn more about Flex at http://flex.org 
    // -->
    <head>
        <title>${title}</title>
        <meta name="google" value="notranslate" />         
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <!-- Include CSS to eliminate any default margins/padding and set the height of the html element and 
             the body element to 100%, because Firefox, or any Gecko based browser, interprets percentage as 
             the percentage of the height of its parent container, which has to be set explicitly.  Fix for
             Firefox 3.6 focus border issues.  Initially, don't display flashContent div so it won't show 
             if JavaScript disabled.
        -->
        <style type="text/css" media="screen"> 
            html, body  { height:100%; }
            body { margin:0; padding:0; overflow:auto; text-align:center; 
                   background-color: ${bgcolor}; }   
            object:focus { outline:none; }
            #flashContent { display:none; }
        </style>
        
        <!-- Enable Browser History by replacing useBrowserHistory tokens with two hyphens -->
        <!-- BEGIN Browser History required section ${useBrowserHistory}>
        <link rel="stylesheet" type="text/css" href="history/history.css" />
        <script type="text/javascript" src="history/history.js"></script>
        <!${useBrowserHistory} END Browser History required section -->  
            
        <script type="text/javascript" src="swfobject.js"></script>
        <script type="text/javascript">
            // For version detection, set to min. required Flash Player version, or 0 (or 0.0.0), for no version detection. 
            var swfVersionStr = "0";
            // To use express install, set to playerProductInstall.swf, otherwise the empty string. 
            var xiSwfUrlStr = "";
            var flashvars = {};
            var params = {};
            params.quality = "high";
            params.bgcolor = "#000000";
            params.allowscriptaccess = "sameDomain";
            params.allowfullscreen = "true";
            params.wmode = "direct";
            var attributes = {};
            attributes.id = "TestPlayer";
            attributes.name = "TestPlayer";
            attributes.align = "middle";
            swfobject.embedSWF(
                "TestPlayer.swf?" + Math.random(), "flashContent", 
                "1024", "768", 
                swfVersionStr, xiSwfUrlStr, 
                flashvars, params, attributes);
            // JavaScript enabled so display the flashContent div in case it is not replaced with a swf object.
            swfobject.createCSS("#flashContent", "display:block;text-align:left;");
        </script>
        
        <script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.5/d3.min.js" charset="utf-8"></script>
        
        <script>
            /***
             * Debug interface.
             * 
             * Draggable timeline of converted samples.
             */
            var tags=[];
            var bufferDirty = true;

            var isSetup = false;
            var howFarBack = 20;
            var width = 2048, height = 1024;
            var rowHeight = 15;

            // Initiate buffer rendering.
            requestAnimationFrame(redrawBuffer);

            function tag(time, type, debugStr)
            {
                // Note tag.
                tags.push({time: time, type: type});
                
                // Mark redraw needed.
                bufferDirty = true;
            }
            
            function adjustZoom(e)
            {
                var delta = -e.detail || e.wheelDelta;
                
                if(delta < 0)
                    howFarBack = Math.max(1, howFarBack - 0.5);
                else
                    howFarBack = Math.min(45, howFarBack + 0.5);
                    
                bufferDirty = true;
                e.preventDefault();
                return false;
            }
            
            var dragStartX, dragStartY;
            var isDrag = false;
            var dragStartTime;
            
            var timeOffset = 0; // seconds back from live to show
            
            function onMouseDown(e)
            {
                dragStartX = e.clientX;
                dragStartY = e.clientY;
                dragStartTime = timeOffset;
                isDrag = true;                
            }
            
            function onMouseMove(e)
            {
                if(isDrag == false)
                    return false;
                    
                var deltaX = e.clientX - dragStartX;
                var deltaY = e.clientY - dragStartY;
                
                // adjust time offset by deltaX.
                var secondsToPixels = width / howFarBack;
                var localOffset = deltaX / secondsToPixels;
                timeOffset = dragStartTime + localOffset;
                timeOffset = Math.max(0, timeOffset);
                timeOffset = Math.min(45, timeOffset);
                
                bufferDirty = true;
            }

            function onMouseUp(e)
            {
                isDrag = false;
            }
            
            function redrawBuffer()
            {
                // Keep processing.
                requestAnimationFrame(redrawBuffer);
                
                // nop if no dirty.
                if(bufferDirty == false)
                    return;
                bufferDirty = false;

                // Set up canvas.
                var canvas = document.getElementById("canvas");
                var ctx = canvas.getContext("2d");
                if(!isSetup)
                {
                    console.log("Initializing tag debug view.");
                    this.window.addEventListener("mousewheel", adjustZoom, false);
                    this.window.addEventListener("DOMMouseScroll", adjustZoom, false);
                    canvas.addEventListener("mousedown", onMouseDown, false);
                    canvas.addEventListener("mousemove", onMouseMove, false);
                    canvas.addEventListener("mouseup", onMouseUp, false);
                    isSetup = true;
                }
                
                ctx.clearRect(0, 0, width, height)                
                
                if(tags.length == 0)
                    return;
                
                // Get last time.
                var lastItem = tags[tags.length-1];
                
                // Draw up to a certain number of seconds back.
                var secondsToPixels = width / howFarBack;
                var lastTimestamp = lastItem.time;
                
                var currentItemIdx = tags.length - 1;
                
                var highwater = {};
                
                // Skip back by the requested offset.
                while(currentItemIdx >= 1 && tags[currentItemIdx].time > (lastTimestamp - timeOffset))
                    currentItemIdx--;
               
                lastTimestamp = tags[currentItemIdx].time;
                
                while(currentItemIdx >= 0 && tags[currentItemIdx].time >= (lastTimestamp - howFarBack))
                {
                    var tagType = tags[currentItemIdx].type;
                    var tagTime = tags[currentItemIdx].time;
                    
                    var wasBackwards = false;

                    if(highwater[tagType] > tagTime)
                        wasBackwards = true;
                    
                    if(highwater[tagType] < tagTime)
                        highwater[tagType] = tagTime;
                    
                    ctx.fillStyle = wasBackwards ? "red" : "green";
                    ctx.fillRect(
                        width - (lastTimestamp - tags[currentItemIdx].time) * secondsToPixels,
                        tags[currentItemIdx].type * rowHeight, 1, rowHeight);
                    
                    currentItemIdx--;
                }
                
                // Draw row headers.
                ctx.fillStyle = "black";
                ctx.fillText("Audio", 0, 8 * rowHeight);
                ctx.fillText("Video", 0, 9 * rowHeight);
                ctx.fillText("Script", 0, 0x12 * rowHeight);
            }
        </script>
    </head>
    <body>
        <!-- SWFObject's dynamic embed method replaces this alternative HTML content with Flash content when enough 
             JavaScript and Flash plug-in support is available. The div is initially hidden so that it doesn't show
             when JavaScript is disabled.
        -->
        <div id="flashContent">
            <p>
                To view this page ensure that Adobe Flash Player version 
                ${version_major}.${version_minor}.${version_revision} or greater is installed. 
            </p>
            <script type="text/javascript"> 
                var pageHost = ((document.location.protocol == "https:") ? "https://" : "http://"); 
                document.write("<a href='http://www.adobe.com/go/getflashplayer'><img src='" 
                                + pageHost + "www.adobe.com/images/shared/download_buttons/get_flash_player.gif' alt='Get Adobe Flash player' /></a>" ); 
            </script> 
        </div>
        
        <noscript>
            <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="1024" height="768" id="TestPlayer">
                <param name="movie" value="TestPlayer.swf" />
                <param name="quality" value="high" />
                <param name="bgcolor" value="#00000" />
{'fraction_non_alphanumeric': 0.10115478569842327, 'fraction_numerical': 0.013435487452809237, 'mean_word_length': 1.3814119513484928, 'pattern_counts': {'":': 0, '<': 93, '<?xml version=': 0, '>': 97, 'https://': 4, 'lorem ipsum': 0, 'www.': 8, 'xml': 4}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 4, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7468095', 'n_tokens_mistral': 4755, 'n_tokens_neox': 4279, 'n_words': 1172}