1 2<html><head> 3<title>Tennis Abstract: Daniil Medvedev Match Results, Splits, and Analysis</title> 4<link rel="stylesheet" href="https://www.tennisabstract.com/blue/style.css" type="text/css">
5<script type="text/javascript" src="https://www.tennisabstract.com/jquery-1.7.1-min.js"></script>
vendor: 1 bytes, line 5
5
6<script type="text/javascript" src="https://www.tennisabstract.com/jquery.tablesorter.js"></script>
vendor: 1 bytes, line 6
6
7<script type="text/javascript" src="https://www.tennisabstract.com/navbar.js"></script>
7 8
9<script type="text/javascript" src="https://www.tennisabstract.com/jsfrags/DaniilMedvedev.js"></script>
vendor: 1 bytes, line 9
9
10<script language="JavaScript"> 11var currentTime = new Date(); 12var month = currentTime.getMonth() + 1; 13var day = currentTime.getDate(); 14var year = currentTime.getFullYear().toString(); 15var mm, dd; 16if (month < 10) {mm = '0' + month.toString();} 17else {mm = month.toString();} 18if (day < 10) {dd = '0' + day.toString();} 19else {dd = day.toString();} 20var today = year + mm + dd; 21var one_day=1000*60*60*24; 22var nameparam = 'DaniilMedvedev'; 23 24 25 26 27 28var fullname = 'Daniil Medvedev'; 29var lastname = 'Medvedev'; 30var currentrank = 6; 31var peakrank = 1; 32var peakfirst = 20220228; 33var peaklast = 20220829; 34var dob = 19960211; 35var ht = 198; 36var hand = 'R'; 37var backhand = '2'; 38var country = 'RUS'; 39var shortlist = 0; 40var careerjs = 0; 41var active = 1; 42var lastdate = 0; 43var twitter = 'DaniilMedwed'; 44var current_dubs = '"UNR"'; 45var peak_dubs = '"UNR"'; 46var peakfirst_dubs = '""'; 47var liverank = ''; 48var chartagg = 0; 49var photog = 'sirobi'; 50var photog_credit = 'si.robi'; 51var photog_link = 'https://www.flickr.com/photos/sirobi'; 52var itf_id = '100157702'; 53var atp_id = 'MM58'; 54var dc_id = ''; 55var wiki_id = 'Daniil_Medvedev'; 56var elo_rating = '1956'; 57var elo_rank = '11'; 58 59 60var fourspaces = "Â Â Â Â "; 61 62function make(tag, attr, cont) { 63 if (arguments.length == 2 && (attr instanceof Array || typeof attr == "string")) { 64 cont = attr; 65 attributes = null; 66 } 67 var open = "<" + tag; 68 var close = "</" + tag + ">"; 69 if (attr) { 70 for(var name in attr) { 71 attx = " " + name + '="' + attr[name] + '"'; 72 open = open.concat(attx); 73 } 74 } 75 open = open.concat(">"); 76 if (cont instanceof Array) { 77 var content = cont.join(""); 78 } 79 else { 80 var content = cont; 81 } 82 var elem = open + content + close; 83 return elem; 84 } 85 86function sortRev(a,b) {return b - a;} 87 88var rmonths = {'Jan': '01', 89 'Feb': '02', 90 'Mar': '03', 91 'Apr': '04', 92 'May': '05', 93 'Jun': '06', 94 'Jul': '07', 95 'Aug': '08', 96 'Sep': '09', 97 'Oct': '10', 98 'Nov': '11', 99 'Dec': '12' 100 }; 101 102var months = {'01': 'Jan', 103 '02': 'Feb', 104 '03': 'Mar', 105 '04': 'Apr', 106 '05': 'May', 107 '06': 'Jun', 108 '07': 'Jul', 109 '08': 'Aug', 110 '09': 'Sep', 111 '10': 'Oct', 112 '11': 'Nov', 113 '12': 'Dec' 114 }; 115 116function calculateAge(dobString) { 117 // Extract the year, month, and day from the dobString (yyyymmdd) 118 let year = parseInt(dobString.substring(0, 4), 10); 119 let month = parseInt(dobString.substring(4, 6), 10) - 1; // Months are 0-indexed in JS Date 120 let day = parseInt(dobString.substring(6, 8), 10); 121 let birthDate = new Date(year, month, day); 122 let today = new Date(); 123 let age = today.getFullYear() - birthDate.getFullYear(); 124 let hasHadBirthdayThisYear = ( 125 today.getMonth() > birthDate.getMonth() || 126 (today.getMonth() === birthDate.getMonth() && today.getDate() >= birthDate.getDate()) 127 ); 128 if (!hasHadBirthdayThisYear) { 129 age--; 130 } 131 return age; 132} 133 134var bhdict = {'1': 'one', '2': 'two'}; 135 136function insertPictureBio() { 137 var plname = '<span style="font-size:18px"><b>' + fullname + ' [' + country + ']</b></span>'; 138 if (typeof dob === 'undefined') {var birthdate = '';} 139 else { 140 var bd = dob.toString(); 141 //var birthdate = 'Date of birth: ' + bd.slice(6) + '-' + months[bd.slice(4, 6)] + '-' + bd.slice(0, 4); 142 var birthdate = 'Age: ' + calculateAge(bd).toString(); 143 birthdate = birthdate + ' (' + bd.slice(6) + '-' + months[bd.slice(4, 6)] + '-' + bd.slice(0, 4) + ')'; 144 } 145 146 var pic_src = 'https://www.tennisabstract.com/photos/' + fullname.toLowerCase().replace(/ /g, "_") + '-' + photog + '.jpg' 147 // background-color:d3d3d3; 148 var biotable = '<p id="biog"><table style="border-spacing:0"><tr><td><img src="' + pic_src + '" height="225" width="150"></td>' 149 biotable = biotable + '<td> </td><td style="vertical-align:top">' 150 biotable = biotable + '<table cellpadding=2 cellspacing=1><tr><td>' + plname + fourspaces + fourspaces + '</td></tr>'; 151 152 if (typeof twitter != 'undefined' && twitter != "") { 153 var tline = '<a href="https://twitter.com/' + twitter + '" target="_blank">@' + twitter + '</a>'; 154 biotable = biotable + '<tr><td>' + tline + '</td></tr>'; 155 } 156 else { 157 biotable = biotable + '<tr><td> </td></tr>'; 158 } 159 160 biotable = biotable + '<tr><td>' + birthdate + '</td></tr>'; 161 var handed; 162 if (hand == 'R') {handed = 'Plays: Right-handed';} 163 else if (hand == 'L') {handed = 'Plays: Left-handed';} 164 else {handed = '';} 165 if (typeof backhand != 'undefined' && backhand != '') {handed = handed.slice(0,-7) + '
165(' + bhdict[backhand] + '-handed backhand)';} 166 if (handed != '') { 167 biotable = biotable + '<tr><td>' + handed + '</td></tr>'; 168 } 169 170 if (currentrank == '') {var crank = '';} 171 else {var crank = 'Current rank: <b>'+currentrank.toString()+'</b>'}; 172 //if (typeof liverank != 'undefined' && liverank != '') {var lrank = ' <a target="_blank" href="https://live-tennis.eu/"><i>Live: ' + liverank.toString() + '</i></a>';} 173 //else {var lrank = '';} 174 var lrank = ''; 175 if (crank != '') { 176 biotable = biotable + '<tr><td>' + crank + lrank + '</td></tr>'; 177 } 178 179 if (peakrank != 'UNR') {var prank = 'Peak rank: <b>' + peakrank.toString()+'</b>';} 180 else {var prank = '';} 181 if (peakfirst != '') { 182 var pf = peakfirst.toString(); 183 prank = prank + ' (' + pf.slice(6) + '-' + months[pf.slice(4, 6)] + '-' + pf.slice(0, 4) + ')'; 184 } 185 if (prank != '') { 186 biotable = biotable + '<tr><td>' + prank + '</td></tr>'; 187 } 188 189 // if (peak_dubs == "" || peakfirst_dubs == "") { 190 // var drank = ' '; 191 // } 192 // else if (typeof current_dubs === 'undefined' || current_dubs == "" || current_dubs == "UNR") { 193 // if (!(typeof peak_dubs === 'undefined' || peak_dubs == "")) { 194 // var drank = "Doubles peak: <b>" + peak_dubs.toString() + '</b>' 195 // var pfd = peakfirst_dubs.toString(); 196 // drank = drank + ' (' + pfd.slice(6) + '-' + months[pfd.slice(4, 6)] + '-' + pfd.slice(0, 4) + ')'; 197 // } 198 // else {drank = " ";} 199 // } 200 // else { 201 // var drank = "Doubles rank: <b>" + current_dubs.toString() + '</b> | '; 202 // drank = drank + 'Peak: <b>' + peak_dubs.toString() + '</b>' 203 // } 204 // 205 //var drank = " "; 206 //biotable = biotable + '<tr><td>' + drank + '</td></tr>'; 207 208 if (typeof elo_rating != 'undefined' && elo_rating != "") { 209 if (window.location.pathname.includes("wplayer")) { 210 var elo_url = "https://tennisabstract.com/reports/wta_elo_ratings.html"; 211 } 212 else {var elo_url = "https://tennisabstract.com/reports/atp_elo_ratings.html";} 213 var elo_row = "Elo rank: <b>" + elo_rank + '</b> (<a href="' + elo_url + '">rating: ' + elo_rating + ')</a>'; 214 } 215 else {var elo_row = " ";} 216 217 biotable = biotable + '<tr><td>' + elo_row + '</td></tr>'; 218 219 var profiles = ''; 220 // if (typeof atp_id != 'undefined' && atp_id != "") { 221 // var atp_stem = "https://www.atpworldtour.com/en/players/"; 222 // profiles = profiles + '<a href="' + atp_stem + atp_id + '/overview" target="_blank" title="Profile at atpworldtour.com">ATP</a> | '; 223 // } 224 // if (typeof itf_id != 'undefined' && itf_id != "") { 225 // var itf_stem = "https://www.itftennis.com/procircuit/players/player/profile.aspx?playerid="; 226 // profiles = profiles + '<a href="' + itf_stem + itf_id + '" target="_blank" title="Profile at the ITF website">ITF</a> | '; 227 // } 228 // if (typeof dc_id != 'undefined' && dc_id != "") { 229 // var dc_stem = "https://www.daviscup.com/en/players/player.aspx?id="; 230 // profiles = profiles + '<a href="' + dc_stem + dc_id + '" target="_blank" title="Profile at Davis Cup website">DC</a> | '; 231 // } 232 if (typeof wiki_id != 'undefined' && wiki_id != "") { 233 var wiki_stem = "https://en.wikipedia.org/wiki/"; 234 profiles = profiles + '<a href="' + wiki_stem + wiki_id + '" target="_blank" title="Profile at Wikipedia">Wikipedia</a> | ' ; 235 } 236 237 if (profiles != '') { 238 biotable = biotable + '<tr><td>Profile: ' + profiles.slice(0,-3) + '</td><td> </td></tr>'; 239 } 240 else { 241 biotable = biotable + '<tr><td> </td></tr>'; 242 } 243 244 biotable = biotable + '<tr><td> </td></tr>'; 245 biotable = biotable + '<tr><td>' + '<i>Photo: <a target="_blank" href="' + photog_link + '">' + photog_credit + '</a></i></td></tr>'; 246 247 $("#bio").html(biotable + '</table></td><td> </td></tr></table></p>'); 248 } 249 250function insertBio() { 251 var plname = '<span style="font-size:18px"><b>' + fullname + ' [' + country + ']</b></span>'; 252 if (typeof dob === 'undefined') {var birthdate = '';} 253 else { 254 var bd = dob.toString(); 255 //var birthdate = 'Date of birth: ' + bd.slice(6) + '-' + months[bd.slice(4, 6)] + '-' + bd.slice(0, 4); 256 var birthdate = 'Age: ' + calculateAge(bd).toString(); 257 birthdate = birthdate + ' (' + bd.slice(6) + '-' + months[bd.slice(4, 6)] + '-' + bd.slice(0, 4) + ')'; 258 } 259 var handed; 260 if (hand == 'R') {handed = 'Plays: Right-handed';} 261 else if (hand == 'L') {handed = 'Plays: Left-handed';} 262 else {handed = '';} 263 if (typeof backhand != 'undefined' && backhand != '') {handed = handed.slice(0,-7) + '
263(' + bhdict[backhand] + '-handed backhand)';} 264 if (currentrank == '') {var crank = '';} 265 else {var crank = 'Current rank: <b>'+currentrank.toString()+'</b>'}; 266 // if (typeof liverank != 'undefined' && liverank != '') {var lrank = ' <a target="_blank" href="https://live-tennis.eu/"><i>Live: ' + liverank.toString() + '</i></a>';} 267 // else {var lrank = '';} 268 var lrank = ''; 269 if (peakrank != 'UNR') {var prank = 'Peak rank: <b>' + peakrank.toString()+'</b>';} 270 else {var prank = '';} 271 if (peakfirst != '') { 272 var pf = peakfirst.toString(); 273 prank = prank + ' (' + pf.slice(6) + '-' + months[pf.slice(4, 6)] + '-' + pf.slice(0, 4) + ')'; 274 } 275 //if (typeof twitter != 'undefined' && twitter != "") {var tline = 'Twitter: <a href="https://twitter.com/' + twitter + '" target="_blank">@' + twitter + '</a>';} 276 if (typeof twitter != 'undefined' && twitter != "") {var tline = '<a href="https://twitter.com/' + twitter + '" target="_blank">@' + twitter + '</a>';} 277 else {var tline = '';} 278 var biotable = '<p id="biog"><table cellpadding=1 cellspacing=1><tr><td>' + plname + fourspaces + fourspaces + '</td><td>' + tline + '</td></tr>'; 279 if (birthdate != '') {var rowtwo = '<tr><td>' + birthdate + fourspaces + fourspaces + '</td><td>' + handed + '</td></tr>';} 280 else {var rowtwo = '<tr><td>' + handed + '</td><td> </td></tr>';} 281 if (crank != '') {var rowthree = '<tr><td>' + crank + lrank + '</td><td>' + prank + '</td></tr>';} 282 else {var rowthree = '<tr><td>' + prank + '</td><td> </td></tr>';} 283 284 var profiles = ''; 285 // if (typeof atp_id != 'undefined' && atp_id != "") { 286 // var atp_stem = "https://www.atpworldtour.com/en/players/"; 287 // profiles = profiles + '<a href="' + atp_stem + atp_id + '/overview" target="_blank" title="Profile at atpworldtour.com">ATP</a> | '; 288 // } 289 // if (typeof itf_id != 'undefined' && itf_id != "") { 290 // var itf_stem = "https://www.itftennis.com/procircuit/players/player/profile.aspx?playerid="; 291 // profiles = profiles + '<a href="' + itf_stem + itf_id + '" target="_blank" title="Profile at the ITF website">ITF</a> | '; 292 // } 293 // if (typeof dc_id != 'undefined' && dc_id != "") { 294 // var dc_stem = "https://www.daviscup.com/en/players/player.aspx?id="; 295 // profiles = profiles + '<a href="' + dc_stem + dc_id + '" target="_blank" title="Profile at Davis Cup website">DC</a> | '; 296 // } 297 if (typeof wiki_id != 'undefined' && wiki_id != "") { 298 var wiki_stem = "https://en.wikipedia.org/wiki/"; 299 profiles = profiles + '<a href="' + wiki_stem + wiki_id + '" target="_blank" title="Profile at Wikipedia">Wikipedia</a> | ' ; 300 } 301 302 if (profiles != '') { 303 var profile_row = '<tr><td>Profile: ' + profiles.slice(0,-3) + '</td><td> </td></tr>'; 304 } 305 else {var profile_row = '<tr><td> </td><td> </td></tr>';} 306 307 if (typeof elo_rating != 'undefined' && elo_rating != "") { 308 if (window.location.pathname.includes("wplayer")) { 309 var elo_url = "https://tennisabstract.com/reports/wta_elo_ratings.html"; 310 } 311 else {var elo_url = "https://tennisabstract.com/reports/atp_elo_ratings.html";} 312 var elo_row = "Elo rank: <b>" + elo_rank + '</b> (<a href="' + elo_url + '">rating: ' + elo_rating + ')</a>'; 313 rowfour = '<tr><td>' + elo_row + '</td><td> </td></tr>'; 314 } 315 else {var rowfour = "";} 316 317 $("#bio").html(biotable + rowtwo + rowthree + rowfour + profile_row + '</table></p>'); 318 } 319 320$(document).ready(function() { 321 322 //$("#navbar").html(navbar); 323 324 if (typeof navbar !== 'undefined') { 325 $("#navbar").html(navbar); 326 } 327 328 if (typeof photog == 'undefined' || photog == '') { 329 insertBio(); 330 } 331 else { 332 insertPictureBio(); 333 } 334 335 $("#main").html(player_frag) 336 $("#menu").html(frag_menu) 337 338 $("#recent-results").attr('border', 0).attr('cellspacing', 0).attr('cellpadding', 4); 339 $("#recent-results").tablesorter( {headers: {0: {sorter:false}, 1: {sorter:false}, 2: {sorter:false}, 3: {sorter:false}, 340 4: {sorter:false}, 5: {sorter:false}, 6: {sorter:false}, 7: {sorter:false}, 341 8: {sorter:false}, 9: {sorter:false}, 10: {sorter:false}, 11: {sorter:false}, 342 12: {sorter:false}, 13: {sorter:false}, 14: {sorter:false}, 15: {sorter:false}, 343 16: {sorter:false}, 17: {sorter:false}, 18: {sorter:false}, 19: {sorter:false}, 344 20: {sorter:false}, 21: {sorter:false}, 22: {sorter:false}, 23: {sorter:false}, 345 24: {sorter:false}, 25: {sorter:false}, 26: {sorter:false}, 27: {sorter:false} 346 }} 347 ); 348
349 $("#recent-events").attr('border', 0).attr('cellspacing', 0).attr('cellpadding', 4); 350 $("#recent-events").tablesorter( {headers: {0: {sorter:false}, 1: {sorter:false}, 2: {sorter:false}, 3: {sorter:false}, 351 4: {sorter:false}, 5: {sorter:false}, 6: {sorter:false}, 7: {sorter:false}, 352 8: {sorter:false}, 9: {sorter:false}, 10: {sorter:false}, 11: {sorter:false}, 353 12: {sorter:false}, 13: {sorter:false}, 14: {sorter:false}, 15: {sorter:false}, 354 16: {sorter:false}, 17: {sorter:false}, 18: {sorter:false}, 19: {sorter:false}, 355 20: {sorter:false}, 21: {sorter:false}, 22: {sorter:false}, 23: {sorter:false}, 356 24: {sorter:false}, 25: {sorter:false}, 26: {sorter:false}, 27: {sorter:false} 357 }} 358 ); 359 360 $("#recent-finals").attr('border', 0).attr('cellspacing', 0).attr('cellpadding', 4); 361 $("#recent-finals").tablesorter( {headers: {0: {sorter:false}, 1: {sorter:false}, 2: {sorter:false}, 3: {sorter:false}, 362 4: {sorter:false}, 5: {sorter:false}, 6: {sorter:false}, 7: {sorter:false}, 363 8: {sorter:false}, 9: {sorter:false}, 10: {sorter:false}, 11: {sorter:false}, 364 12: {sorter:false}, 13: {sorter:false}, 14: {sorter:false}, 15: {sorter:false}, 365 16: {sorter:false}, 17: {sorter:false}, 18: {sorter:false}, 19: {sorter:false}, 366 20: {sorter:false}, 21: {sorter:false}, 22: {sorter:false}, 23: {sorter:false}, 367 24: {sorter:false}, 25: {sorter:false}, 26: {sorter:false}, 27: {sorter:false} 368 }} 369 ); 370 371 $("#tour-years").attr('border', 0).attr('cellspacing', 0).attr('cellpadding', 4); 372 $("#tour-years").tablesorter( {headers: {0: {sorter:false}, 1: {sorter:false}, 2: {sorter:false}, 3: {sorter:false}, 373 4: {sorter:false}, 5: {sorter:false}, 6: {sorter:false}, 7: {sorter:false}, 374 8: {sorter:false}, 9: {sorter:false}, 10: {sorter:false}, 11: {sorter:false}, 375 12: {sorter:false}, 13: {sorter:false}, 14: {sorter:false}, 15: {sorter:false}, 376 16: {sorter:false}, 17: {sorter:false}, 18: {sorter:false}, 19: {sorter:false}, 377 20: {sorter:false}, 21: {sorter:false}, 22: {sorter:false}, 23: {sorter:false}, 378 24: {sorter:false}, 25: {sorter:false}, 26: {sorter:false}, 27: {sorter:false} 379 }} 380 ); 381 382 $("#chall-years").attr('border', 0).attr('cellspacing', 0).attr('cellpadding', 4); 383 $("#chall-years").tablesorter( {headers: {0: {sorter:false}, 1: {sorter:false}, 2: {sorter:false}, 3: {sorter:false}, 384 4: {sorter:false}, 5: {sorter:false}, 6: {sorter:false}, 7: {sorter:false}, 385 8: {sorter:false}, 9: {sorter:false}, 10: {sorter:false}, 11: {sorter:false}, 386 12: {sorter:false}, 13: {sorter:false}, 14: {sorter:false}, 15: {sorter:false}, 387 16: {sorter:false}, 17: {sorter:false}, 18: {sorter:false}, 19: {sorter:false}, 388 20: {sorter:false}, 21: {sorter:false}, 22: {sorter:false}, 23: {sorter:false}, 389 24: {sorter:false}, 25: {sorter:false}, 26: {sorter:false}, 27: {sorter:false} 390 }} 391 ); 392
393 $("#career-splits").attr('border', 0).attr('cellspacing', 0).attr('cellpadding', 4); 394 $("#career-splits").tablesorter( {headers: {0: {sorter:false}, 1: {sorter:false}, 2: {sorter:false}, 3: {sorter:false}, 395 4: {sorter:false}, 5: {sorter:false}, 6: {sorter:false}, 7: {sorter:false}, 396 8: {sorter:false}, 9: {sorter:false}, 10: {sorter:false}, 11: {sorter:false}, 397 12: {sorter:false}, 13: {sorter:false}, 14: {sorter:false}, 15: {sorter:false}, 398 16: {sorter:false}, 17: {sorter:false}, 18: {sorter:false}, 19: {sorter:false}, 399 20: {sorter:false}, 21: {sorter:false}, 22: {sorter:false}, 23: {sorter:false}, 400 24: {sorter:false}, 25: {sorter:false}, 26: {sorter:false}, 27: {sorter:false} 401 }} 402 ); 403 404 $("#last52-splits").attr('border', 0).attr('cellspacing', 0).attr('cellpadding', 4); 405 $("#last52-splits").tablesorter( {headers: {0: {sorter:false}, 1: {sorter:false}, 2: {sorter:false}, 3: {sorter:false}, 406 4: {sorter:false}, 5: {sorter:false}, 6: {sorter:false}, 7: {sorter:false}, 407 8: {sorter:false}, 9: {sorter:false}, 10: {sorter:false}, 11: {sorter:false}, 408 12: {sorter:false}, 13: {sorter:false}, 14: {sorter:false}, 15: {sorter:false}, 409 16: {sorter:false}, 17: {sorter:false}, 18: {sorter:false}, 19: {sorter:false}, 410 20: {sorter:false}, 21: {sorter:false}, 22: {sorter:false}, 23: {sorter:false}, 411 24: {sorter:false}, 25: {sorter:false}, 26: {sorter:false}, 27: {sorter:false} 412 }} 413 ); 414 415 $("#news-analysis").attr('border', 0).attr('cellspacing', 0).attr('cellpadding', 4); 416 $("#news-analysis").tablesorter( {headers: {0: {sorter:false}, 1: {sorter:false}, 2: {sorter:false}, 3: {sorter:false}, 417 4: {sorter:false}, 5: {sorter:false}, 6: {sorter:false}, 7: {sorter:false}, 418 8: {sorter:false}, 9: {sorter:false}, 10: {sorter:false}, 11: {sorter:false}, 419 12: {sorter:false}, 13: {sorter:false}, 14: {sorter:false}, 15: {sorter:false}, 420 16: {sorter:false}, 17: {sorter:false}, 18: {sorter:false}, 19: {sorter:false}, 421 20: {sorter:false}, 21: {sorter:false}, 22: {sorter:false}, 23: {sorter:false}, 422 24: {sorter:false}, 25: {sorter:false}, 26: {sorter:false}, 27: {sorter:false} 423 }} 424 ); 425 426 $("#mcp-serve").attr('border', 0).attr('cellspacing', 0).attr('cellpadding', 4); 427 $("#mcp-serve").tablesorter( {headers: {0: {sorter:false}, 1: {sorter:false}, 2: {sorter:false}, 3: {sorter:false}, 428 4: {sorter:false}, 5: {sorter:false}, 6: {sorter:false}, 7: {sorter:false}, 429 8: {sorter:false}, 9: {sorter:false}, 10: {sorter:false}, 11: {sorter:false}, 430 12: {sorter:false}, 13: {sorter:false}, 14: {sorter:false}, 15: {sorter:false}, 431 16: {sorter:false}, 17: {sorter:false}, 18: {sorter:false}, 19: {sorter:false}, 432 20: {sorter:false}, 21: {sorter:false}, 22: {sorter:false}, 23: {sorter:false}, 433 24: {sorter:false}, 25: {sorter:false}, 26: {sorter:false}, 27: {sorter:false} 434 }} 435 ); 436
437 $("#mcp-return").attr('border', 0).attr('cellspacing', 0).attr('cellpadding', 4); 438 $("#mcp-return").tablesorter( {headers: {0: {sorter:false}, 1: {sorter:false}, 2: {sorter:false}, 3: {sorter:false}, 439 4: {sorter:false}, 5: {sorter:false}, 6: {sorter:false}, 7: {sorter:false}, 440 8: {sorter:false}, 9: {sorter:false}, 10: {sorter:false}, 11: {sorter:false}, 441 12: {sorter:false}, 13: {sorter:false}, 14: {sorter:false}, 15: {sorter:false}, 442 16: {sorter:false}, 17: {sorter:false}, 18: {sorter:false}, 19: {sorter:false}, 443 20: {sorter:false}, 21: {sorter:false}, 22: {sorter:false}, 23: {sorter:false}, 444 24: {sorter:false}, 25: {sorter:false}, 26: {sorter:false}, 27: {sorter:false} 445 }} 446 ); 447 448 $("#mcp-rally").attr('border', 0).attr('cellspacing', 0).attr('cellpadding', 4); 449 $("#mcp-rally").tablesorter( {headers: {0: {sorter:false}, 1: {sorter:false}, 2: {sorter:false}, 3: {sorter:false}, 450 4: {sorter:false}, 5: {sorter:false}, 6: {sorter:false}, 7: {sorter:false}, 451 8: {sorter:false}, 9: {sorter:false}, 10: {sorter:false}, 11: {sorter:false}, 452 12: {sorter:false}, 13: {sorter:false}, 14: {sorter:false}, 15: {sorter:false}, 453 16: {sorter:false}, 17: {sorter:false}, 18: {sorter:false}, 19: {sorter:false}, 454 20: {sorter:false}, 21: {sorter:false}, 22: {sorter:false}, 23: {sorter:false}, 455 24: {sorter:false}, 25: {sorter:false}, 26: {sorter:false}, 27: {sorter:false} 456 }} 457 ); 458 459 $("#mcp-tactics").attr('border', 0).attr('cellspacing', 0).attr('cellpadding', 4); 460 $("#mcp-tactics").tablesorter( {headers: {0: {sorter:false}, 1: {sorter:false}, 2: {sorter:false}, 3: {sorter:false}, 461 4: {sorter:false}, 5: {sorter:false}, 6: {sorter:false}, 7: {sorter:false}, 462 8: {sorter:false}, 9: {sorter:false}, 10: {sorter:false}, 11: {sorter:false}, 463 12: {sorter:false}, 13: {sorter:false}, 14: {sorter:false}, 15: {sorter:false}, 464 16: {sorter:false}, 17: {sorter:false}, 18: {sorter:false}, 19: {sorter:false}, 465 20: {sorter:false}, 21: {sorter:false}, 22: {sorter:false}, 23: {sorter:false}, 466 24: {sorter:false}, 25: {sorter:false}, 26: {sorter:false}, 27: {sorter:false} 467 }} 468 ); 469 470 $("#head-to-heads").attr('border', 0).attr('cellspacing', 0).attr('cellpadding', 4); 471 $("#head-to-heads").tablesorter( {headers: {0: {sorter:false}, 1: {sorter:false}, 2: {sorter:false}, 3: {sorter:false}, 472 4: {sorter:false}, 5: {sorter:false}, 6: {sorter:false}, 7: {sorter:false}, 473 8: {sorter:false}, 9: {sorter:false}, 10: {sorter:false}, 11: {sorter:false}, 474 12: {sorter:false}, 13: {sorter:false}, 14: {sorter:false}, 15: {sorter:false}, 475 16: {sorter:false}, 17: {sorter:false}, 18: {sorter:false}, 19: {sorter:false}, 476 20: {sorter:false}, 21: {sorter:false}, 22: {sorter:false}, 23: {sorter:false}, 477 24: {sorter:false}, 25: {sorter:false}, 26: {sorter:false}, 27: {sorter:false} 478 }} 479 ); 480
481 $("#tour-results").attr('border', 0).attr('cellspacing', 0).attr('cellpadding', 4); 482 $("#tour-results").tablesorter( {headers: {0: {sorter:false}, 1: {sorter:false}, 2: {sorter:false}, 3: {sorter:false}, 483 4: {sorter:false}, 5: {sorter:false}, 6: {sorter:false}, 7: {sorter:false}, 484 8: {sorter:false}, 9: {sorter:false}, 10: {sorter:false}, 11: {sorter:false}, 485 12: {sorter:false}, 13: {sorter:false}, 14: {sorter:false}, 15: {sorter:false}, 486 16: {sorter:false}, 17: {sorter:false}, 18: {sorter:false}, 19: {sorter:false}, 487 20: {sorter:false}, 21: {sorter:false}, 22: {sorter:false}, 23: {sorter:false}, 488 24: {sorter:false}, 25: {sorter:false}, 26: {sorter:false}, 27: {sorter:false} 489 }} 490 ); 491 492 $("#match-results").attr('border', 0).attr('cellspacing', 0).attr('cellpadding', 4); 493 $("#match-results").tablesorter( {headers: {0: {sorter:false}, 1: {sorter:false}, 2: {sorter:false}, 3: {sorter:false}, 494 4: {sorter:false}, 5: {sorter:false}, 6: {sorter:false}, 7: {sorter:false}, 495 8: {sorter:false}, 9: {sorter:false}, 10: {sorter:false}, 11: {sorter:false}, 496 12: {sorter:false}, 13: {sorter:false}, 14: {sorter:false}, 15: {sorter:false}, 497 16: {sorter:false}, 17: {sorter:false}, 18: {sorter:false}, 19: {sorter:false}, 498 20: {sorter:false}, 21: {sorter:false}, 22: {sorter:false}, 23: {sorter:false}, 499 24: {sorter:false}, 25: {sorter:false}, 26: {sorter:false}, 27: {sorter:false} 500 }} 501 ); 502 503 $("#career-splits-chall").attr('border', 0).attr('cellspacing', 0).attr('cellpadding', 4); 504 $("#career-splits-chall").tablesorter( {headers: {0: {sorter:false}, 1: {sorter:false}, 2: {sorter:false}, 3: {sorter:false}, 505 4: {sorter:false}, 5: {sorter:false}, 6: {sorter:false}, 7: {sorter:false}, 506 8: {sorter:false}, 9: {sorter:false}, 10: {sorter:false}, 11: {sorter:false}, 507 12: {sorter:false}, 13: {sorter:false}, 14: {sorter:false}, 15: {sorter:false}, 508 16: {sorter:false}, 17: {sorter:false}, 18: {sorter:false}, 19: {sorter:false}, 509 20: {sorter:false}, 21: {sorter:false}, 22: {sorter:false}, 23: {sorter:false}, 510 24: {sorter:false}, 25: {sorter:false}, 26: {sorter:false}, 27: {sorter:false} 511 }} 512 ); 513 514 $("#last52-splits-chall").attr('border', 0).attr('cellspacing', 0).attr('cellpadding', 4); 515 $("#last52-splits-chall").tablesorter( {headers: {0: {sorter:false}, 1: {sorter:false}, 2: {sorter:false}, 3: {sorter:false}, 516 4: {sorter:false}, 5: {sorter:false}, 6: {sorter:false}, 7: {sorter:false}, 517 8: {sorter:false}, 9: {sorter:false}, 10: {sorter:false}, 11: {sorter:false}, 518 12: {sorter:false}, 13: {sorter:false}, 14: {sorter:false}, 15: {sorter:false}, 519 16: {sorter:false}, 17: {sorter:false}, 18: {sorter:false}, 19: {sorter:false}, 520 20: {sorter:false}, 21: {sorter:false}, 22: {sorter:false}, 23: {sorter:false}, 521 24: {sorter:false}, 25: {sorter:false}, 26: {sorter:false}, 27: {sorter:false} 522 }} 523 ); 524 525 $("#year-end-rankings").attr('border', 0).attr('cellspacing',
5250).attr('cellpadding', 4); 526 $("#year-end-rankings").tablesorter( {headers: {0: {sorter:false}, 1: {sorter:false}, 2: {sorter:false}, 3: {sorter:false}, 527 4: {sorter:false}, 5: {sorter:false}, 6: {sorter:false}, 7: {sorter:false}, 528 8: {sorter:false}, 9: {sorter:false}, 10: {sorter:false}, 11: {sorter:false}, 529 12: {sorter:false}, 13: {sorter:false}, 14: {sorter:false}, 15: {sorter:false}, 530 16: {sorter:false}, 17: {sorter:false}, 18: {sorter:false}, 19: {sorter:false}, 531 20: {sorter:false}, 21: {sorter:false}, 22: {sorter:false}, 23: {sorter:false}, 532 24: {sorter:false}, 25: {sorter:false}, 26: {sorter:false}, 27: {sorter:false} 533 }} 534 ); 535 536 $("#titles-finals").attr('border', 0).attr('cellspacing', 0).attr('cellpadding', 4); 537 $("#titles-finals").tablesorter( {headers: {0: {sorter:false}, 1: {sorter:false}, 2: {sorter:false}, 3: {sorter:false}, 538 4: {sorter:false}, 5: {sorter:false}, 6: {sorter:false}, 7: {sorter:false}, 539 8: {sorter:false}, 9: {sorter:false}, 10: {sorter:false}, 11: {sorter:false}, 540 12: {sorter:false}, 13: {sorter:false}, 14: {sorter:false}, 15: {sorter:false}, 541 16: {sorter:false}, 17: {sorter:false}, 18: {sorter:false}, 19: {sorter:false}, 542 20: {sorter:false}, 21: {sorter:false}, 22: {sorter:false}, 23: {sorter:false}, 543 24: {sorter:false}, 25: {sorter:false}, 26: {sorter:false}, 27: {sorter:false} 544 }} 545 ); 546 547 $("#doubles").attr('border', 0).attr('cellspacing', 0).attr('cellpadding', 4); 548 $("#doubles").tablesorter( {headers: {0: {sorter:false}, 1: {sorter:false}, 2: {sorter:false}, 3: {sorter:false}, 549 4: {sorter:false}, 5: {sorter:false}, 6: {sorter:false}, 7: {sorter:false} 550 }} 551 ); 552 $("#mixed-doubles").attr('border', 0).attr('cellspacing', 0).attr('cellpadding', 4); 553 $("#mixed-doubles").tablesorter( {headers: {0: {sorter:false}, 1: {sorter:false}, 2: {sorter:false}, 3: {sorter:false}, 554 4: {sorter:false}, 5: {sorter:false}, 6: {sorter:false}, 7: {sorter:false} 555 }} 556 ); 557 558 $("#pbp-points").attr('border', 0).attr('cellspacing', 0).attr('cellpadding', 4); 559 $("#pbp-points").tablesorter( {headers: {0: {sorter:false}, 1: {sorter:false}, 2: {sorter:false}, 3: {sorter:false}, 560 4: {sorter:false}, 5: {sorter:false}, 6: {sorter:false}, 7: {sorter:false}, 561 8: {sorter:false}, 9: {sorter:false}, 10: {sorter:false}, 11: {sorter:false}, 562 12: {sorter:false}, 13: {sorter:false}, 14: {sorter:false}, 15: {sorter:false}, 563 16: {sorter:false}, 17: {sorter:false}, 18: {sorter:false}, 19: {sorter:false}, 564 20: {sorter:false}, 21: {sorter:false}, 22: {sorter:false}, 23: {sorter:false}, 565 24: {sorter:false}, 25: {sorter:false}, 26: {sorter:false}, 27: {sorter:false} 566 }} 567 ); 568
569 $("#pbp-games").attr('border', 0).attr('cellspacing', 0).attr('cellpadding', 4); 570 $("#pbp-games").tablesorter( {headers: {0: {sorter:false}, 1: {sorter:false}, 2: {sorter:false}, 3: {sorter:false}, 571 4: {sorter:false}, 5: {sorter:false}, 6: {sorter:false}, 7: {sorter:false}, 572 8: {sorter:false}, 9: {sorter:false}, 10: {sorter:false}, 11: {sorter:false}, 573 12: {sorter:false}, 13: {sorter:false}, 14: {sorter:false}, 15: {sorter:false}, 574 16: {sorter:false}, 17: {sorter:false}, 18: {sorter:false}, 19: {sorter:false}, 575 20: {sorter:false}, 21: {sorter:false}, 22: {sorter:false}, 23: {sorter:false}, 576 24: {sorter:false}, 25: {sorter:false}, 26: {sorter:false}, 27: {sorter:false} 577 }} 578 ); 579 580 $("#pbp-stats").attr('border', 0).attr('cellspacing', 0).attr('cellpadding', 4); 581 $("#pbp-stats").tablesorter( {headers: {0: {sorter:false}, 1: {sorter:false}, 2: {sorter:false}, 3: {sorter:false}, 582 4: {sorter:false}, 5: {sorter:false}, 6: {sorter:false}, 7: {sorter:false}, 583 8: {sorter:false}, 9: {sorter:false}, 10: {sorter:false}, 11: {sorter:false}, 584 12: {sorter:false}, 13: {sorter:false}, 14: {sorter:false}, 15: {sorter:false}, 585 16: {sorter:false}, 17: {sorter:false}, 18: {sorter:false}, 19: {sorter:false}, 586 20: {sorter:false}, 21: {sorter:false}, 22: {sorter:false}, 23: {sorter:false}, 587 24: {sorter:false}, 25: {sorter:false}, 26: {sorter:false}, 27: {sorter:false} 588 }} 589 ); 590 591 $("#serve-speed").attr('border', 0).attr('cellspacing', 0).attr('cellpadding', 4); 592 $("#serve-speed").tablesorter( {headers: {0: {sorter:false}, 1: {sorter:false}, 2: {sorter:false}, 3: {sorter:false}, 593 4: {sorter:false}, 5: {sorter:false}, 6: {sorter:false}, 7: {sorter:false}, 594 8: {sorter:false}, 9: {sorter:false}, 10: {sorter:false}, 11: {sorter:false}, 595 12: {sorter:false}, 13: {sorter:false}, 14: {sorter:false}, 15: {sorter:false}, 596 16: {sorter:false}, 17: {sorter:false}, 18: {sorter:false}, 19: {sorter:false}, 597 20: {sorter:false}, 21: {sorter:false}, 22: {sorter:false}, 23: {sorter:false}, 598 24: {sorter:false}, 25: {sorter:false}, 26: {sorter:false}, 27: {sorter:false} 599 }} 600 ); 601 602 $("#winners-errors").attr('border', 0).attr('cellspacing', 0).attr('cellpadding', 4); 603 $("#winners-errors").tablesorter( {headers: {0: {sorter:false}, 1: {sorter:false}, 2: {sorter:false}, 3: {sorter:false}, 604 4: {sorter:false}, 5: {sorter:false}, 6: {sorter:false}, 7: {sorter:false}, 605 8: {sorter:false}, 9: {sorter:false}, 10: {sorter:false}, 11: {sorter:false}, 606 12: {sorter:false}, 13: {sorter:false}, 14: {sorter:false}, 15: {sorter:false}, 607 16: {sorter:false}, 17: {sorter:false}, 18: {sorter:false}, 19: {sorter:false}, 608 20: {sorter:false}, 21: {sorter:false}, 22: {sorter:false}, 23: {sorter:false}, 609 24: {sorter:false}, 25: {sorter:false}, 26: {sorter:false}, 27: {sorter:false} 610 }} 611 ); 612 613 $.getScript("https://www.tennisabstract.com/jquery.ui.core.js", function() {}); 614 $.getScript("https://www.tennisabstract.com/jquery.ui.position.js", function() {}); 615 $.getScript("https://www.tennisabstract.com/jquery.ui.widget.js", function() {}); 616 $.getScript("https://www.tennisabstract.com/mwplayerlist.js", function() {}); 617 $.getScript("https://www.tennisabstract.com/jquery.ui.autocomplete.js", function() {}); 618 $('#playersearch').append($('<input>').attr('id', 'tags')); 619 620 var searchbox = "Player Search"; 621 $("#tags").val(searchbox); 622 $("#tags").focus(function() { 623 if ($(this).val() == searchbox) {$(this).val("");} 624 $( "#tags" ).autocomplete({ 625 source: playerlist, 626 minLength: 2, 627 select: function(e, ui) { 628 var playerselect = ui.item.value; 629 var player = playerselect.slice(4); 630 var mw = playerselect.slice(1,2); 631 if (mw == 'M') { 632 var playerurl = 'https://www.tennisabstract.com/cgi-bin/player.cgi?p=' + player.replace(/ /g, ''); 633 } 634 else { 635 var playerurl = 'https://www.tennisabstract.com/cgi-bin/wplayer.cgi?p=' + player.replace(/ /g, ''); 636 } 637 window.open(playerurl, "_self"); 638 } 639 }); 640 }); 641 }) 642 643 644</script>
644 645<style type="text/css"> 646u { 647 border-bottom: 1px dotted #000; 648 text-decoration: none; 649} 650 651</style> 652</head> 653<body> 654 655<div id="header"> 656 657<div id="navbar"> 658</div> 659 660<table width=1240px> 661<tr><td> </td><td> </td> 662</tr> 663<tr> 664<td align="left" style="vertical-align:top"><span id="bio"> </span> 665</td> 666<td id="menu" align="right" style="vertical-align:top"> </td> 667</tr> 668</tr></table> 669</div> 670 671<div id="main"> 672 673</div> 674</div> 675
676<script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a441801d3cdfe1d7',t:'MTc5MDkyMDk2OQ=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script>
676<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"592714df19074b3b85668cfe8f554b86","r":1,"spa":2}' crossorigin="anonymous"></script>
676 677</body> 678
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.