2022 Annual Security Report

2022 Annual Security Report

Overview

This report provides a comprehensive analysis of security incidents and attack patterns observed throughout 2022. The data is aggregated from weekly security reports and presents trends in attack vectors, source countries, and target distributions.

    <div markdown="0" class="annual-report">
        
    <div class="summary-statistics">
        <h2>Year 2022 Summary</h2>
        <div class="stat-grid">
            <div class="stat-box">
                <h3>Total Attacks</h3>
                <p>0</p>
            </div>
            <div class="stat-box">
                <h3>Weekly Average</h3>
                <p>0</p>
            </div>
            <div class="stat-box">
                <h3>Weeks Analyzed</h3>
                <p>58</p>
            </div>
            
        </div>
        
        <div class="top-lists">
            <div class="top-list">
                <h3>Top Protocols</h3>
                <ul>
                    <li>ssh: 0</li><li>ftp: 0</li><li>ntp: 0</li><li>sip: 0</li><li>snmp: 0</li>
                </ul>
            </div>
            <div class="top-list">
                <h3>Top Attacker Countries</h3>
                <ul>
                    
                </ul>
            </div>
            <div class="top-list">
                <h3>Top Target Locations</h3>
                <ul>
                    
                </ul>
            </div>
            
        </div>
    </div>
    
        
        <h2>Monthly Attack Distribution</h2>
        
    <div id="monthlyBreakdownChart" style="width: 100%; height: 400px;"></div>
    <script>
    am4core.ready(function() {
        am4core.useTheme(am4themes_dark);
        am4core.useTheme(am4themes_animated);
        
        var chart = am4core.create("monthlyBreakdownChart", am4charts.XYChart);
        chart.data = [{"month": "January", "attacks": 0, "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"month": "February", "attacks": 0, "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"month": "March", "attacks": 0, "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"month": "April", "attacks": 0, "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"month": "May", "attacks": 0, "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"month": "June", "attacks": 0, "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"month": "July", "attacks": 0, "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"month": "August", "attacks": 0, "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"month": "September", "attacks": 0, "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"month": "October", "attacks": 0, "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"month": "November", "attacks": 0, "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"month": "December", "attacks": 0, "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}];
        
        var categoryAxis = chart.xAxes.push(new am4charts.CategoryAxis());
        categoryAxis.dataFields.category = "month";
        categoryAxis.renderer.grid.template.location = 0;
        categoryAxis.renderer.minGridDistance = 30;
        
        var valueAxis = chart.yAxes.push(new am4charts.ValueAxis());
        valueAxis.title.text = "Total Attacks";
        
        var series = chart.series.push(new am4charts.ColumnSeries());
        series.dataFields.valueY = "attacks";
        series.dataFields.categoryX = "month";
        series.name = "Total Attacks";
        series.columns.template.tooltipText = "{categoryX}: [bold]{valueY}[/]";
        series.columns.template.fill = am4core.color("#17b924");
        
        chart.cursor = new am4charts.XYCursor();
        
        // Add legend
        chart.legend = new am4charts.Legend();
    });
    </script>
    
        
        <h2>Attack Trends</h2>
        
    <div id="protocolTrendChart" style="width: 100%; height: 500px;"></div>
    <script>
    am4core.ready(function() {
        am4core.useTheme(am4themes_dark);
        am4core.useTheme(am4themes_animated);
        
        var chart = am4core.create("protocolTrendChart", am4charts.XYChart);
        chart.data = [{"date": "2022-01-07", "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"date": "2022-01-08", "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"date": "2022-01-14", "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"date": "2022-01-15", "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"date": "2022-01-21", "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"date": "2022-01-22", "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"date": "2022-01-28", "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"date": "2022-01-29", "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"date": "2022-02-04", "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"date": "2022-02-05", "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"date": "2022-02-11", "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"date": "2022-02-12", "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"date": "2022-02-18", "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"date": "2022-02-25", "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"date": "2022-03-04", "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"date": "2022-03-11", "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"date": "2022-03-18", "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"date": "2022-03-25", "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"date": "2022-04-01", "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"date": "2022-04-08", "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"date": "2022-04-15", "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"date": "2022-04-22", "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"date": "2022-04-29", "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"date": "2022-05-06", "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"date": "2022-05-13", "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"date": "2022-05-20", "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"date": "2022-05-27", "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"date": "2022-06-03", "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"date": "2022-06-10", "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"date": "2022-06-17", "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"date": "2022-06-24", "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"date": "2022-07-01", "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"date": "2022-07-08", "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"date": "2022-07-15", "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"date": "2022-07-22", "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"date": "2022-07-29", "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"date": "2022-08-05", "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"date": "2022-08-12", "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"date": "2022-08-19", "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"date": "2022-08-26", "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"date": "2022-09-02", "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"date": "2022-09-09", "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"date": "2022-09-16", "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"date": "2022-09-23", "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"date": "2022-09-30", "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"date": "2022-10-07", "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"date": "2022-10-14", "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"date": "2022-10-21", "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"date": "2022-10-28", "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"date": "2022-11-04", "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"date": "2022-11-11", "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"date": "2022-11-18", "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"date": "2022-11-25", "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"date": "2022-12-02", "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"date": "2022-12-09", "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"date": "2022-12-16", "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"date": "2022-12-23", "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}, {"date": "2022-12-30", "ssh": 0, "ftp": 0, "ntp": 0, "sip": 0, "snmp": 0, "telnet": 0, "mssql": 0, "mysql": 0, "redis": 0, "nmap": 0, "git": 0, "dork": 0}];
        
        // Create axes
        var dateAxis = chart.xAxes.push(new am4charts.DateAxis());
        dateAxis.renderer.minGridDistance = 50;
        dateAxis.renderer.grid.template.location = 0.5;
        dateAxis.startLocation = 0.5;
        dateAxis.endLocation = 0.5;
        
        var valueAxis = chart.yAxes.push(new am4charts.ValueAxis());
        valueAxis.title.text = "Attack Attempts by Protocol";
        
        // Create series for each category
        
        var series_0 = chart.series.push(new am4charts.LineSeries());
        series_0.dataFields.dateX = "date";
        series_0.dataFields.valueY = "ssh";
        series_0.name = "ssh";
        series_0.tooltipText = "{name}: [bold]{valueY}[/]";
        
                series.strokeWidth = 2;
                series.tensionX = 0.8;
                series.bullets.push(new am4charts.CircleBullet());
            
        

        var series_1 = chart.series.push(new am4charts.LineSeries());
        series_1.dataFields.dateX = "date";
        series_1.dataFields.valueY = "ftp";
        series_1.name = "ftp";
        series_1.tooltipText = "{name}: [bold]{valueY}[/]";
        
                series.strokeWidth = 2;
                series.tensionX = 0.8;
                series.bullets.push(new am4charts.CircleBullet());
            
        

        var series_2 = chart.series.push(new am4charts.LineSeries());
        series_2.dataFields.dateX = "date";
        series_2.dataFields.valueY = "ntp";
        series_2.name = "ntp";
        series_2.tooltipText = "{name}: [bold]{valueY}[/]";
        
                series.strokeWidth = 2;
                series.tensionX = 0.8;
                series.bullets.push(new am4charts.CircleBullet());
            
        

        var series_3 = chart.series.push(new am4charts.LineSeries());
        series_3.dataFields.dateX = "date";
        series_3.dataFields.valueY = "sip";
        series_3.name = "sip";
        series_3.tooltipText = "{name}: [bold]{valueY}[/]";
        
                series.strokeWidth = 2;
                series.tensionX = 0.8;
                series.bullets.push(new am4charts.CircleBullet());
            
        

        var series_4 = chart.series.push(new am4charts.LineSeries());
        series_4.dataFields.dateX = "date";
        series_4.dataFields.valueY = "snmp";
        series_4.name = "snmp";
        series_4.tooltipText = "{name}: [bold]{valueY}[/]";
        
                series.strokeWidth = 2;
                series.tensionX = 0.8;
                series.bullets.push(new am4charts.CircleBullet());
            
        

        var series_5 = chart.series.push(new am4charts.LineSeries());
        series_5.dataFields.dateX = "date";
        series_5.dataFields.valueY = "telnet";
        series_5.name = "telnet";
        series_5.tooltipText = "{name}: [bold]{valueY}[/]";
        
                series.strokeWidth = 2;
                series.tensionX = 0.8;
                series.bullets.push(new am4charts.CircleBullet());
            
        

        var series_6 = chart.series.push(new am4charts.LineSeries());
        series_6.dataFields.dateX = "date";
        series_6.dataFields.valueY = "mssql";
        series_6.name = "mssql";
        series_6.tooltipText = "{name}: [bold]{valueY}[/]";
        
                series.strokeWidth = 2;
                series.tensionX = 0.8;
                series.bullets.push(new am4charts.CircleBullet());
            
        

        var series_7 = chart.series.push(new am4charts.LineSeries());
        series_7.dataFields.dateX = "date";
        series_7.dataFields.valueY = "mysql";
        series_7.name = "mysql";
        series_7.tooltipText = "{name}: [bold]{valueY}[/]";
        
                series.strokeWidth = 2;
                series.tensionX = 0.8;
                series.bullets.push(new am4charts.CircleBullet());
            
        

        var series_8 = chart.series.push(new am4charts.LineSeries());
        series_8.dataFields.dateX = "date";
        series_8.dataFields.valueY = "redis";
        series_8.name = "redis";
        series_8.tooltipText = "{name}: [bold]{valueY}[/]";
        
                series.strokeWidth = 2;
                series.tensionX = 0.8;
                series.bullets.push(new am4charts.CircleBullet());
            
        

        var series_9 = chart.series.push(new am4charts.LineSeries());
        series_9.dataFields.dateX = "date";
        series_9.dataFields.valueY = "nmap";
        series_9.name = "nmap";
        series_9.tooltipText = "{name}: [bold]{valueY}[/]";
        
                series.strokeWidth = 2;
                series.tensionX = 0.8;
                series.bullets.push(new am4charts.CircleBullet());
            
        

        var series_10 = chart.series.push(new am4charts.LineSeries());
        series_10.dataFields.dateX = "date";
        series_10.dataFields.valueY = "git";
        series_10.name = "git";
        series_10.tooltipText = "{name}: [bold]{valueY}[/]";
        
                series.strokeWidth = 2;
                series.tensionX = 0.8;
                series.bullets.push(new am4charts.CircleBullet());
            
        

        var series_11 = chart.series.push(new am4charts.LineSeries());
        series_11.dataFields.dateX = "date";
        series_11.dataFields.valueY = "dork";
        series_11.name = "dork";
        series_11.tooltipText = "{name}: [bold]{valueY}[/]";
        
                series.strokeWidth = 2;
                series.tensionX = 0.8;
                series.bullets.push(new am4charts.CircleBullet());
            
        
        
        // Add legend
        chart.legend = new am4charts.Legend();
        
        // Add cursor
        chart.cursor = new am4charts.XYCursor();
        chart.cursor.xAxis = dateAxis;
        
        // Add scrollbar
        chart.scrollbarX = new am4core.Scrollbar();
    });
    </script>
    
    </div>
    
    <style>
    .annual-report {
        font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
    }
    .stat-grid {
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
        gap: 20px;
        margin: 20px 0;
    }
    .stat-box {
        background: #1a1a1a;
        padding: 20px;
        border-radius: 8px;
        text-align: center;
    }
    .stat-box h3 {
        margin: 0;
        color: #17b924;
    }
    .stat-box p {
        font-size: 24px;
        margin: 10px 0 0 0;
    }
    .top-lists {
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
        gap: 20px;
        margin: 20px 0;
    }
    .top-list {
        background: #1a1a1a;
        padding: 20px;
        border-radius: 8px;
    }
    .top-list h3 {
        margin: 0 0 15px 0;
        color: #17b924;
    }
    .top-list ul {
        list-style: none;
        padding: 0;
        margin: 0;
    }
    .top-list li {
        padding: 5px 0;
        border-bottom: 1px solid #333;
    }
    </style>
Share on: