{"id":17531,"date":"2026-10-03T19:02:09","date_gmt":"2026-10-03T10:02:09","guid":{"rendered":"https:\/\/f1-lap-time.com\/?p=17531"},"modified":"2026-10-03T19:02:10","modified_gmt":"2026-10-03T10:02:10","slug":"%e3%83%9e%e3%83%ac%e3%83%bc%e3%82%b7%e3%82%a2gp-fp2%e3%83%ad%e3%83%b3%e3%82%b0%e3%83%a9%e3%83%b3%e5%88%86%e6%9e%90","status":"publish","type":"post","link":"https:\/\/f1-lap-time.com\/?p=17531","title":{"rendered":"\u30de\u30ec\u30fc\u30b7\u30a2GP FP2\u30ed\u30f3\u30b0\u30e9\u30f3\u5206\u6790"},"content":{"rendered":"\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1006\" height=\"520\" src=\"https:\/\/f1-lap-time.com\/wp-content\/uploads\/2026\/10\/newplot-1.png\" alt=\"\" class=\"wp-image-17537\" srcset=\"https:\/\/f1-lap-time.com\/wp-content\/uploads\/2026\/10\/newplot-1.png 1006w, https:\/\/f1-lap-time.com\/wp-content\/uploads\/2026\/10\/newplot-1-300x155.png 300w, https:\/\/f1-lap-time.com\/wp-content\/uploads\/2026\/10\/newplot-1-766x396.png 766w\" sizes=\"auto, (max-width: 1006px) 100vw, 1006px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u30bb\u30d1\u30f3\u306eFP2\u3067\u6c7a\u52dd\u306b\u5411\u3051\u3066\u6709\u529b\u306a\u6750\u6599\u3092\u793a\u3057\u305f\u306e\u306f\u30d5\u30a7\u30eb\u30b9\u30bf\u30c3\u30da\u30f3\u3060\u30025\u5468\u4f7f\u7528\u6e08\u307f\u306e\u30df\u30c7\u30a3\u30a2\u30e0\u3067\u30ed\u30f3\u30b0\u30e9\u30f3\u306b\u5165\u308a\u3001\u9577\u3044\u9023\u7d9a\u8d70\u884c\u3092\u901a\u3058\u3066\u7af6\u4e89\u529b\u3092\u793a\u3057\u305f\u3002\u512a\u52dd\u4e89\u3044\u306e\u4e2d\u5fc3\u5019\u88dc\u3068\u898b\u308b\u6839\u62e0\u306f\u5341\u5206\u306b\u3042\u308b\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8ffd\u3046\u30e1\u30eb\u30bb\u30c7\u30b9\u3068\u30d5\u30a7\u30e9\u30fc\u30ea\u306f\u3001\u4e3b\u306a\u6bd4\u8f03\u533a\u9593\u3092\u4f7f\u7528\u6e08\u307f\u30bd\u30d5\u30c8\u3067\u8d70\u3063\u305f\u3002\u30a2\u30f3\u30c8\u30cd\u30c3\u30ea\u306f\u77ed\u3081\u306e\u8d70\u884c\u3060\u304c\u3001\u30d5\u30a7\u30eb\u30b9\u30bf\u30c3\u30da\u30f3\u306b\u52dd\u308b\u3068\u3082\u52a3\u3089\u306a\u3044\u30da\u30fc\u30b9\u3092\u793a\u3057\u305f\u3002\u30e9\u30c3\u30bb\u30eb\u306f15\u5468\u306e\u9577\u3044\u30e9\u30f3\u3092\u3053\u306a\u3057\u3001\u30d5\u30a7\u30eb\u30b9\u30bf\u30c3\u30da\u30f3\u3068\u306f\u5e8f\u76e4\u3067\u5927\u5dee\u304c\u3064\u3044\u305f\u304c\u3001\u5f8c\u534a\u306f\u50c5\u5dee\u3067\u3042\u3063\u305f\u3002\u30eb\u30af\u30ec\u30fc\u30eb\u3082\u30d5\u30a7\u30eb\u30b9\u30bf\u30c3\u30da\u30f3\u306b\u5339\u6575\u3059\u308b\u30da\u30fc\u30b9\u3002\u30de\u30af\u30e9\u30fc\u30ec\u30f3\u306f\u30ce\u30ea\u30b9\u306f3\u5468\u4f7f\u7528\u6e08\u307f\u3001\u30d4\u30a2\u30b9\u30c8\u30ea\u306f6\u5468\u4f7f\u7528\u6e08\u307f\u306e\u30bd\u30d5\u30c8\u3092\u4f7f\u3044\u3001\u3068\u3082\u306b\u30e9\u30f3\u7d42\u76e4\u307e\u306744\u301c45\u79d2\u53f0\u3092\u7dad\u6301\u3057\u305f\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e2d\u56e3\u3067\u306f\u30016\u5468\u4f7f\u7528\u6e08\u307f\u30df\u30c7\u30a3\u30a2\u30e0\u306710\u5468\u3092\u307e\u3068\u3081\u305f\u30ac\u30b9\u30ea\u30fc\u306b\u6ce8\u76ee\u3057\u305f\u3044\u3002\u30b3\u30e9\u30d4\u30f3\u30c8\u306e\u4e3b\u8868\u306e\u533a\u9593\u306f\u65b0\u54c1\u30bd\u30d5\u30c8\u3067\u3042\u308a\u3001\u4e21\u8005\u306e\u63a5\u8fd1\u3057\u305f\u30bf\u30a4\u30e0\u306b\u306f\u30bf\u30a4\u30e4\u6761\u4ef6\u306e\u5dee\u304c\u3042\u308b\u3002\u30ec\u30fc\u30b7\u30f3\u30b0\u30d6\u30eb\u30ba\u3068\u30a2\u30a6\u30c7\u30a3\u3082\u4f7f\u7528\u6e08\u307f\u30df\u30c7\u30a3\u30a2\u30e0\u3067\u30c7\u30fc\u30bf\u3092\u7a4d\u3093\u3060\u3002\u3068\u304f\u306b\u30d2\u30e5\u30eb\u30b1\u30f3\u30d9\u30eb\u30b0\u3068\u30dc\u30eb\u30c8\u30ec\u30fc\u30c8\u306f\u4f7f\u7528\u5c65\u6b74\u304c\u9577\u304f\u3001\u6bd4\u8f03\u306b\u306f\u305d\u306e\u6d88\u8017\u5206\u3082\u8003\u616e\u3057\u305f\u3044\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6c7a\u52dd\u306e\u5927\u304d\u306a\u5909\u6570\u306f\u30cf\u30fc\u30c9\u306e\u6027\u80fd\u3060\u3002\u91d1\u66dc\u306f\u5168\u8eca\u304c\u4f7f\u7528\u3092\u898b\u9001\u308a\u3001\u30df\u30c7\u30a3\u30a2\u30e0\u3068\u30bd\u30d5\u30c8\u3067\u306f\u71b1\u306b\u3088\u308b\u6027\u80fd\u4f4e\u4e0b\u304c\u76ee\u7acb\u3063\u305f\u3002\u30d4\u30ec\u30ea\u306b\u3088\u308c\u3070\u3001\u30bd\u30d5\u30c8\u306e\u9ad8\u3044\u30b0\u30ea\u30c3\u30d7\u304c\u6ed1\u308a\u3092\u6291\u3048\u3001\u5b89\u5b9a\u3057\u305f\u8d70\u884c\u306b\u3064\u306a\u304c\u308b\u5834\u9762\u3082\u3042\u3063\u305f\u3002\u30c9\u30e9\u30a4\u306a\u30892\u30b9\u30c8\u30c3\u30d7\u3092\u8ef8\u306b\u3001\u30cf\u30fc\u30c9\u3067\u3069\u3053\u307e\u3067\u30da\u30fc\u30b9\u3068\u5bff\u547d\u3092\u78ba\u4fdd\u3067\u304d\u308b\u304b\u304c\u91cd\u8981\u306b\u306a\u308b\u3002\u30d5\u30a7\u30eb\u30b9\u30bf\u30c3\u30da\u30f3\u3092\u6709\u529b\u5019\u88dc\u3068\u3057\u3064\u3064\u3001\u30b9\u30c6\u30a3\u30f3\u30c8\u5f8c\u534a\u306e\u843d\u3061\u8fbc\u307f\u3092\u6291\u3048\u305f\u9663\u55b6\u304c\u6226\u7565\u306e\u81ea\u7531\u5ea6\u3092\u5f97\u308b\u4e00\u6226\u306b\u306a\u308a\u305d\u3046\u3060\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u305d\u306e\u4ed6\u3001\u8a73\u7d30\u306a\u60c5\u5831\u306e\u30c1\u30a7\u30c3\u30af\u306b\u306f\u3001\u4ee5\u4e0b\u306f\u30a4\u30f3\u30bf\u30e9\u30af\u30c6\u30a3\u30d6\u30b0\u30e9\u30d5\u3092\u305c\u3072\u3054\u6d3b\u7528\u3044\u305f\u3060\u304d\u305f\u3044\u3002<\/p>\n\n\n\n<!--\nWordPress\u300c\u30ab\u30b9\u30bf\u30e0HTML\u300d\u30d6\u30ed\u30c3\u30af\u3078\u5168\u6587\u3092\u8cbc\u308a\u4ed8\u3051\u3066\u304f\u3060\u3055\u3044\u3002\n2026\u5e74\u30bb\u30d1\u30f3FP2\u306e\u4e3b\u30ed\u30f3\u30b0\u30e9\u30f3\uff0822\u53f0\uff09\u3092\u57cb\u3081\u8fbc\u307f\u6e08\u307f\u3067\u3059\u3002\n\u5225\u306eTSV\u3092\u4f7f\u3046\u5834\u5408\u306f DATA_FILE \u306b\u516c\u958bURL\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n-->\n<style>\n.fp2-long-run-widget{width:100%;max-width:1200px;background:#fff;color:#000;font-family:\"Times New Roman\",Times,serif;line-height:1.5}\n.fp2-long-run-widget .race-controls{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:12px 0}\n.fp2-long-run-widget .race-drivers{display:flex;flex-wrap:wrap;gap:6px}\n.fp2-long-run-widget button,.fp2-long-run-widget input,.fp2-long-run-widget select{font:inherit;box-sizing:border-box;border:1px solid #aaa;border-radius:4px;box-shadow:none;text-transform:none;letter-spacing:normal;line-height:1.4}\n.fp2-long-run-widget button{padding:6px 10px;background:#f5f5f5;color:#000;cursor:pointer;min-height:36px}\n.fp2-long-run-widget button:disabled{cursor:wait;opacity:.5}\n.fp2-long-run-widget button:focus-visible,.fp2-long-run-widget input:focus-visible,.fp2-long-run-widget select:focus-visible{outline:3px solid #2865c7;outline-offset:2px}\n.fp2-long-run-widget .race-driver{font-weight:bold;border:2px solid transparent;min-width:62px}\n.fp2-long-run-widget .race-driver[aria-pressed=\"true\"]{border-color:#000}\n.fp2-long-run-widget .race-driver .race-check{display:inline-block;width:1em}\n.fp2-long-run-widget label{display:inline-flex;align-items:center;gap:5px;color:#000;font-weight:normal;max-width:100%}\n.fp2-long-run-widget label>span{white-space:nowrap;flex-shrink:0}\n.fp2-long-run-widget .race-language{justify-content:flex-end}\n.fp2-long-run-widget [data-lang][aria-pressed=\"true\"]{background:#222;color:#fff;border-color:#222}\n.fp2-long-run-widget input{width:105px;padding:6px;background:#fff;color:#000}\n.fp2-long-run-widget select{padding:6px;background:#fff;color:#000;max-width:100%}\n.fp2-long-run-widget .race-chart{width:100%;height:520px}\n.fp2-long-run-widget .race-note{font-size:14px;margin:8px 0;color:#444}\n.fp2-long-run-widget .race-error{color:#a40000;min-height:1.5em;margin:4px 0}\n.fp2-long-run-widget h2{color:#000;margin:24px 0 10px;font-family:inherit}\n@media(max-width:600px){.fp2-long-run-widget .race-chart{height:440px}}\n<\/style>\n\n<div id=\"fp2LongRunWidget\" class=\"fp2-long-run-widget\" lang=\"ja\">\n  <div class=\"race-controls race-language\" role=\"group\" aria-label=\"Language\"><button type=\"button\" data-lang=\"ja\" aria-pressed=\"true\">\u65e5\u672c\u8a9e<\/button><button type=\"button\" data-lang=\"en\" aria-pressed=\"false\">English<\/button><\/div>\n  <p class=\"race-status\" role=\"status\">\u30c7\u30fc\u30bf\u3092\u8aad\u307f\u8fbc\u3093\u3067\u3044\u307e\u3059\u2026<\/p>\n  <div class=\"race-interactive\" hidden=\"\">\n    <div class=\"race-controls\"><strong>Drivers:<\/strong><button type=\"button\" data-action=\"select\">Select All<\/button><button type=\"button\" data-action=\"clear\">Clear All<\/button><\/div>\n    <div class=\"race-drivers\" data-i18n-aria=\"driversAria\" aria-label=\"\u8868\u793a\u3059\u308b\u30c9\u30e9\u30a4\u30d0\u30fc\"><\/div>\n    <p class=\"race-note\"><span data-i18n=\"driversNote\">\u5404\u8eca\u306e\u30ed\u30f3\u30b0\u30e9\u30f3\u958b\u59cb\u30921\u5468\u76ee\u306b\u305d\u308d\u3048\u3066\u3044\u307e\u3059\u3002\u30c9\u30e9\u30a4\u30d0\u30fc\u3092\u9078\u629e\u3059\u308b\u3068\u8868\u793a\u3057\u307e\u3059\u3002\u51e1\u4f8b\u306f\u9078\u629e\u9806\u3067\u3059\u3002<\/span><\/p>\n    <form class=\"race-controls\" data-form=\"laps\" novalidate=\"\">\n      <strong><span data-i18n=\"laps\">\u30ed\u30f3\u30b0\u30e9\u30f3\u306e\u8868\u793a\u5468\u56de:<\/span><\/strong>\n      <label><span data-i18n=\"start\">\u958b\u59cb<\/span><input name=\"min\" type=\"number\" min=\"1\" step=\"1\" required=\"\"><\/label>\n      <label><span data-i18n=\"end\">\u7d42\u4e86<\/span><input name=\"max\" type=\"number\" min=\"1\" step=\"1\" required=\"\"><\/label>\n      <button type=\"submit\"><span data-i18n=\"apply\">\u9069\u7528<\/span><\/button><button type=\"button\" data-action=\"reset-laps\"><span data-i18n=\"allLaps\">\u5168\u5468\u56de\u306b\u623b\u3059<\/span><\/button>\n    <\/form>\n    <p class=\"race-error\" data-error=\"laps\" role=\"alert\"><\/p>\n\n    <h2>FP2 Long Runs<\/h2>\n\n    <form class=\"race-controls\" data-form=\"time\" novalidate=\"\">\n      <label><span>Fastest<\/span><input name=\"min\" type=\"text\" placeholder=\"1:43.000\" required=\"\" aria-label=\"Fastest\"><\/label>\n      <label><span>Slowest<\/span><input name=\"max\" type=\"text\" placeholder=\"1:54.000\" required=\"\" aria-label=\"Slowest\"><\/label>\n      <button type=\"submit\"><span data-i18n=\"apply\">\u9069\u7528<\/span><\/button><button type=\"button\" data-action=\"reset-time\"><span data-i18n=\"reset\">\u521d\u671f\u7bc4\u56f2\u306b\u623b\u3059<\/span><\/button>\n    <\/form>\n    <p class=\"race-note\"><span data-i18n=\"format\">\u30bf\u30a4\u30e0\u306f\u300c1:43.000\u300d\u307e\u305f\u306f\u300c103.000\u300d\u3067\u5165\u529b\u3067\u304d\u307e\u3059\u3002\u901f\u3044\u30bf\u30a4\u30e0\u3092\u4e0a\u306b\u8868\u793a\u3057\u307e\u3059\u3002<\/span><\/p>\n    <p class=\"race-error\" data-error=\"time\" role=\"alert\"><\/p>\n\n    <div class=\"race-chart race-time-chart\" data-i18n-aria=\"timeAria\" aria-label=\"FP2\u30ed\u30f3\u30b0\u30e9\u30f3\u30fb\u30e9\u30c3\u30d7\u30bf\u30a4\u30e0\u30b0\u30e9\u30d5\"><\/div>\n  <\/div>\n<\/div>\n\n<script src=\"https:\/\/cdn.plot.ly\/plotly-2.26.0.min.js\"><\/script>\n\n<script>\n(() => {\n  \"use strict\";\n\n  const root = document.getElementById(\"fp2LongRunWidget\");\n  if (!root) return;\n  const DATA_FILE = \"\"; \/\/ \u7a7a\u6b04\u306a\u3089\u57cb\u3081\u8fbc\u307f\u30c7\u30fc\u30bf\u3092\u4f7f\u7528\n  const EMBEDDED_TSV = \"Lap\\tLando NORRIS\\tOscar PIASTRI\\tGeorge RUSSELL\\tKimi ANTONELLI\\tMax VERSTAPPEN\\tIsack HADJAR\\tCharles LECLERC\\tLewis HAMILTON\\tAlexander ALBON\\tCarlos SAINZ\\tLiam LAWSON\\tArvid LINDBLAD\\tFernando ALONSO\\tLance STROLL\\tEsteban OCON\\tOliver BEARMAN\\tNico HULKENBERG\\tGabriel BORTOLETO\\tPierre GASLY\\tFranco COLAPINTO\\tSergio PEREZ\\tValtteri BOTTAS\\n1\\t1:44.283\\t1:45.463\\t1:44.726\\t1:44.034\\t1:43.559\\t1:44.994\\t1:43.055\\t1:44.466\\t1:45.098\\t1:45.016\\t1:44.785\\t1:46.032\\t1:45.648\\t1:46.348\\t1:44.848\\t1:47.288\\t1:44.654\\t1:44.620\\t1:44.099\\t1:44.146\\t1:46.117\\t1:45.237\\n2\\t1:45.512\\t1:45.002\\t1:44.826\\t1:43.964\\t1:43.513\\t1:45.351\\t1:44.535\\t1:44.180\\t1:45.698\\t1:45.750\\t1:45.009\\t1:45.521\\t1:45.911\\t1:46.314\\t1:45.631\\t1:45.851\\t1:46.175\\t1:47.355\\t1:44.571\\t1:44.152\\t1:47.192\\t1:46.775\\n3\\t1:44.989\\t1:44.765\\t1:44.542\\t1:44.297\\t1:44.285\\t1:44.929\\t1:44.223\\t1:44.762\\t1:46.382\\t1:45.573\\t1:44.999\\t1:45.228\\t1:46.818\\t1:47.305\\t1:46.867\\t1:46.134\\t1:45.078\\t1:48.221\\t1:45.283\\t1:44.451\\t1:48.559\\t1:47.237\\n4\\t1:45.083\\t1:45.203\\t1:44.617\\t1:44.340\\t1:44.598\\t1:46.039\\t1:44.545\\t1:45.196\\t1:47.337\\t1:46.498\\t1:45.126\\t1:45.178\\t1:45.533\\t1:47.010\\t1:46.424\\t1:46.920\\t1:45.603\\t1:47.134\\t1:45.874\\t1:44.761\\t1:47.797\\t1:47.133\\n5\\t1:45.032\\t1:45.393\\t1:44.315\\t1:48.455\\t1:44.054\\t1:46.387\\t1:44.752\\t1:49.036\\t1:52.142\\t1:46.866\\t1:46.124\\t1:45.981\\t1:46.038\\t1:47.790\\t1:46.650\\t1:46.743\\t1:45.890\\t1:46.454\\t1:48.044\\t1:45.218\\t1:48.702\\t1:47.343\\n6\\t1:45.343\\t1:45.034\\t1:44.960\\t1:45.703\\t1:45.288\\t1:45.289\\t1:44.785\\t1:45.485\\t1:47.683\\t1:48.071\\t1:47.011\\t1:45.566\\t1:46.611\\t\\t1:47.269\\t1:47.695\\t1:45.834\\t1:47.171\\t1:46.074\\t1:44.821\\t1:50.343\\t1:47.879\\n7\\t1:45.252\\t1:44.774\\t1:53.067\\t1:45.239\\t1:45.589\\t1:45.566\\t1:45.449\\t1:45.489\\t1:47.578\\t1:47.776\\t1:46.633\\t1:46.069\\t1:46.763\\t\\t1:47.850\\t1:49.747\\t1:46.438\\t1:47.489\\t1:46.056\\t1:46.304\\t1:49.131\\t1:47.676\\n8\\t1:44.783\\t1:45.246\\t1:45.334\\t\\t1:44.817\\t1:45.655\\t1:48.296\\t1:46.225\\t1:47.760\\t1:47.815\\t1:47.015\\t1:46.415\\t1:49.964\\t\\t1:47.826\\t1:47.286\\t1:50.197\\t1:47.862\\t1:45.986\\t\\t1:48.915\\t1:49.003\\n9\\t1:44.881\\t\\t1:45.269\\t\\t1:45.062\\t1:45.732\\t1:45.311\\t\\t1:47.371\\t\\t1:47.039\\t1:46.920\\t\\t\\t1:47.310\\t\\t\\t\\t1:46.572\\t\\t1:49.205\\t1:48.022\\n10\\t1:44.727\\t\\t1:45.471\\t\\t1:45.019\\t\\t\\t\\t1:48.346\\t\\t1:47.401\\t1:47.618\\t\\t\\t1:47.503\\t\\t\\t\\t1:46.565\\t\\t1:49.971\\t1:51.547\\n11\\t\\t\\t1:45.729\\t\\t1:45.527\\t\\t\\t\\t\\t\\t1:48.140\\t1:47.998\\t\\t\\t1:47.269\\t\\t\\t\\t\\t\\t1:49.600\\t\\n12\\t\\t\\t1:45.743\\t\\t1:45.531\\t\\t\\t\\t\\t\\t\\t1:47.290\\t\\t\\t1:47.275\\t\\t\\t\\t\\t\\t1:49.849\\t\\n13\\t\\t\\t1:45.779\\t\\t1:45.662\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t1:47.634\\t\\t\\t\\t\\t\\t\\t\\n14\\t\\t\\t1:45.827\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n15\\t\\t\\t1:45.770\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n\";\n\n  \/\/ [\u7565\u79f0, TSV\u306e\u5217\u540d, \u8272]\n  const driverConfig = [\n    [\"NOR\",\"Lando NORRIS\",\"rgb(255,128,0)\"],\n    [\"PIA\",\"Oscar PIASTRI\",\"rgb(255,192,128)\"],\n\n    [\"RUS\",\"George RUSSELL\",\"rgb(166,166,166)\"],\n    [\"ANT\",\"Kimi ANTONELLI\",\"rgb(0,176,80)\"],\n\n    [\"VER\",\"Max VERSTAPPEN\",\"rgb(0,32,96)\"],\n    [\"HAD\",\"Isack HADJAR\",\"rgb(102,255,0)\"],\n\n    [\"LEC\",\"Charles LECLERC\",\"rgb(255,0,0)\"],\n    [\"HAM\",\"Lewis HAMILTON\",\"rgb(255,192,192)\"],\n\n    [\"ALB\",\"Alexander ALBON\",\"rgb(192,176,224)\"],\n    [\"SAI\",\"Carlos SAINZ\",\"rgb(0,112,192)\"],\n\n    [\"LAW\",\"Liam LAWSON\",\"rgb(180,198,231)\"],\n    [\"LIN\",\"Arvid LINDBLAD\",\"rgb(112,48,160)\"],\n\n    [\"ALO\",\"Fernando ALONSO\",\"rgb(0,176,240)\"],\n    [\"STR\",\"Lance STROLL\",\"rgb(0,112,112)\"],\n\n    [\"OCO\",\"Esteban OCON\",\"rgb(0,0,0)\"],\n    [\"BEA\",\"Oliver BEARMAN\",\"rgb(128,128,128)\"],\n\n    [\"HUL\",\"Nico HULKENBERG\",\"rgb(255,193,37)\"],\n    [\"BOR\",\"Gabriel BORTOLETO\",\"rgb(192,0,0)\"],\n\n    [\"GAS\",\"Pierre GASLY\",\"rgb(0,128,255)\"],\n    [\"COL\",\"Franco COLAPINTO\",\"rgb(255,0,255)\"],\n\n    [\"PER\",\"Sergio PEREZ\",\"rgb(255,140,0)\"],\n    [\"BOT\",\"Valtteri BOTTAS\",\"rgb(0,150,136)\"]\n  ];\n\n  const WHITE_TEXT = new Set([\n    \"VER\",\"LIN\",\"STR\",\"OCO\",\"BEA\",\"SAI\",\"GAS\",\"BOR\",\"BOT\"\n  ]);\n\n  const $ = selector => root.querySelector(selector);\n  const form = name => $(`[data-form=\"${name}\"]`);\n  const field = (name, key) => form(name).elements.namedItem(key);\n\n  const error = (name, key = \"\", params = {}) => {\n    errors[name] = {key, params};\n    $(`[data-error=\"${name}\"]`).textContent = key ? t(key, params) : \"\";\n  };\n\n  const timeChart = $(\".race-time-chart\");\n  const status = $(\".race-status\");\n\n  const messages = {\n    ja: {\n      driversNote: \"\u5404\u8eca\u306e\u30ed\u30f3\u30b0\u30e9\u30f3\u958b\u59cb\u30921\u5468\u76ee\u306b\u305d\u308d\u3048\u3066\u3044\u307e\u3059\u3002\u30c9\u30e9\u30a4\u30d0\u30fc\u3092\u9078\u629e\u3059\u308b\u3068\u8868\u793a\u3057\u307e\u3059\u3002\u51e1\u4f8b\u306f\u9078\u629e\u9806\u3067\u3059\u3002\",\n      laps: \"\u30ed\u30f3\u30b0\u30e9\u30f3\u306e\u8868\u793a\u5468\u56de:\",\n      start: \"\u958b\u59cb\",\n      end: \"\u7d42\u4e86\",\n      apply: \"\u9069\u7528\",\n      allLaps: \"\u5168\u5468\u56de\u306b\u623b\u3059\",\n      reset: \"\u521d\u671f\u7bc4\u56f2\u306b\u623b\u3059\",\n      format: \"\u30bf\u30a4\u30e0\u306f\u300c1:43.000\u300d\u307e\u305f\u306f\u300c103.000\u300d\u3067\u5165\u529b\u3067\u304d\u307e\u3059\u3002\u901f\u3044\u30bf\u30a4\u30e0\u3092\u4e0a\u306b\u8868\u793a\u3057\u307e\u3059\u3002\",\n      loading: \"\u30c7\u30fc\u30bf\u3092\u8aad\u307f\u8fbc\u3093\u3067\u3044\u307e\u3059\u2026\",\n      loadError: \"\u30b0\u30e9\u30d5\u3092\u8aad\u307f\u8fbc\u3081\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u30da\u30fc\u30b8\u3092\u518d\u8aad\u307f\u8fbc\u307f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\",\n      updateError: \"\u30b0\u30e9\u30d5\u3092\u66f4\u65b0\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u30da\u30fc\u30b8\u3092\u518d\u8aad\u307f\u8fbc\u307f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\",\n      invalid: \"\u6709\u52b9\u306a\u6700\u5c0f\u5024\u30fb\u6700\u5927\u5024\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\",\n      invalidTime: \"Fastest\u30fbSlowest\u306b\u6709\u52b9\u306a\u30bf\u30a4\u30e0\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\",\n      lapError: \"\u958b\u59cb\u30fb\u7d42\u4e86\u306f{min}\u301c{max}\u306e\u6574\u6570\u3067\u3001\u958b\u59cb\u2266\u7d42\u4e86\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\",\n      timeError: \"Slowest\u306fFastest\u3088\u308a0.001\u79d2\u4ee5\u4e0a\u5927\u304d\u304f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\",\n      driversAria: \"\u8868\u793a\u3059\u308b\u30c9\u30e9\u30a4\u30d0\u30fc\",\n      timeAria: \"FP2\u30ed\u30f3\u30b0\u30e9\u30f3\u30fb\u30e9\u30c3\u30d7\u30bf\u30a4\u30e0\u30b0\u30e9\u30d5\"\n    },\n\n    en: {\n      driversNote: \"Each driver starts at long-run lap 1. Select drivers to display; the legend follows selection order.\",\n      laps: \"Long-run lap range:\",\n      start: \"From\",\n      end: \"To\",\n      apply: \"Apply\",\n      allLaps: \"All Laps\",\n      reset: \"Reset Range\",\n      format: \"Enter a time as 1:43.000 or 103.000 seconds. Faster times appear higher.\",\n      loading: \"Loading data\u2026\",\n      loadError: \"Unable to load the chart. Please reload the page.\",\n      updateError: \"Unable to update the chart. Please reload the page.\",\n      invalid: \"Enter valid minimum and maximum values.\",\n      invalidTime: \"Enter valid times for Fastest and Slowest.\",\n      lapError: \"Enter whole laps from {min} to {max}, with From no greater than To.\",\n      timeError: \"Slowest must be at least 0.001 seconds greater than Fastest.\",\n      driversAria: \"Drivers to display\",\n      timeAria: \"FP2 long-run lap time chart\"\n    }\n  };\n\n  let language = \"ja\";\n\n  const t = (key, params = {}) => {\n    let text = messages[language][key] || key;\n\n    Object.entries(params).forEach(([name,value]) => {\n      text = text.replace(\"{\" + name + \"}\", String(value));\n    });\n\n    return text;\n  };\n\n  let statusKey = \"loading\";\n  const errors = {};\n\n  function setLanguage(next) {\n    language = next === \"en\" ? \"en\" : \"ja\";\n\n    root.setAttribute(\"lang\", language);\n\n    root.querySelectorAll(\"[data-i18n]\").forEach(el => {\n      el.textContent = t(el.getAttribute(\"data-i18n\"));\n    });\n\n    root.querySelectorAll(\"[data-i18n-aria]\").forEach(el => {\n      el.setAttribute(\n        \"aria-label\",\n        t(el.getAttribute(\"data-i18n-aria\"))\n      );\n    });\n\n    root.querySelectorAll(\"[data-lang]\").forEach(el => {\n      el.setAttribute(\n        \"aria-pressed\",\n        String(el.getAttribute(\"data-lang\") === language)\n      );\n    });\n\n    status.textContent = t(statusKey);\n\n    Object.entries(errors).forEach(([name,entry]) => {\n      $(`[data-error=\"${name}\"]`).textContent =\n        entry.key ? t(entry.key,entry.params) : \"\";\n    });\n  }\n\n  root.querySelectorAll(\"[data-lang]\").forEach(el => {\n    el.onclick = () => setLanguage(el.getAttribute(\"data-lang\"));\n  });\n\n  setLanguage(\"ja\");\n\n  const parseTime = value => {\n    const s = String(value ?? \"\").trim();\n\n    if (\/^\\d+(?:\\.\\d+)?$\/.test(s)) {\n      const n = Number(s);\n      return Number.isFinite(n) ? n : null;\n    }\n\n    const match = \/^(\\d+):(\\d{1,2}(?:\\.\\d+)?)$\/.exec(s);\n\n    if (!match || Number(match[2]) >= 60) {\n      return null;\n    }\n\n    const n = Number(match[1]) * 60 + Number(match[2]);\n\n    return Number.isFinite(n) ? n : null;\n  };\n\n  const formatTime = seconds => {\n    const ms = Math.round(seconds * 1000);\n\n    return (\n      Math.floor(ms \/ 60000) +\n      \":\" +\n      (Math.floor(ms \/ 1000) % 60).toString().padStart(2,\"0\") +\n      \".\" +\n      (ms % 1000).toString().padStart(3,\"0\")\n    );\n  };\n\n  function timeAxis(min, max) {\n    const target = (max - min) \/ 8;\n    const power = 10 ** Math.floor(Math.log10(target));\n    const step = [1,2,5,10]\n      .map(n => n * power)\n      .find(n => n >= target);\n\n    const ticks = [];\n    const start = Math.ceil(min \/ step) * step;\n\n    for (let i = 0; i < 20; i++) {\n      const v = Number((start + i * step).toPrecision(12));\n\n      if (v > max + step * 1e-8) {\n        break;\n      }\n\n      ticks.push(v);\n    }\n\n    return {\n      \"yaxis.range\": [max,min],\n      \"yaxis.autorange\": false,\n      \"yaxis.tickmode\": \"array\",\n      \"yaxis.tickvals\": ticks,\n      \"yaxis.ticktext\": ticks.map(formatTime)\n    };\n  }\n\n  async function init() {\n    if (!root) {\n      throw new Error(\"\u30b0\u30e9\u30d5\u306e\u8868\u793a\u9818\u57df\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002\");\n    }\n\n    if (!window.Plotly) {\n      throw new Error(\n        \"Plotly\u3092\u8aad\u307f\u8fbc\u3081\u307e\u305b\u3093\u3067\u3057\u305f\u3002WordPress\u304cscript\u30bf\u30b0\u3092\u524a\u9664\u3057\u3066\u3044\u306a\u3044\u304b\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002\"\n      );\n    }\n\n    const Plotly = window.Plotly;\n\n    const tsv = DATA_FILE ? await fetch(DATA_FILE).then(response => {\n      if (!response.ok) {\n        throw new Error(\n          `TSV\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\uff08HTTP ${response.status}\uff09\u3002DATA_FILE\u306eURL\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002`\n        );\n      }\n\n      return response.text();\n    }) : EMBEDDED_TSV;\n\n    const lines = tsv\n      .replace(\/^\\uFEFF\/, \"\")\n      .split(\/\\r?\\n\/)\n      .filter(line => line.trim() !== \"\");\n\n    if (lines.length < 2) {\n      throw new Error(\"TSV\u306b\u30e9\u30c3\u30d7\u30c7\u30fc\u30bf\u304c\u3042\u308a\u307e\u305b\u3093\u3002\");\n    }\n\n    const headers = lines[0]\n      .split(\"\\t\")\n      .map(s => s.trim());\n\n    const columns = driverConfig.map(([,full]) =>\n      headers.indexOf(full)\n    );\n\n    if (columns.every(index => index < 0)) {\n      throw new Error(\n        \"TSV\u306e\u30c9\u30e9\u30a4\u30d0\u30fc\u5217\u540d\u304c\u8a2d\u5b9a\u3068\u4e00\u81f4\u3057\u307e\u305b\u3093\u3002\"\n      );\n    }\n\n    const rows = lines\n      .slice(1)\n      .map(line => line.split(\"\\t\"));\n\n    const laps = rows.map(row => Number(row[0]));\n\n    if (\n      laps.some(\n        (lap,i) =>\n          !Number.isInteger(lap) ||\n          lap < 1 ||\n          (i > 0 ? lap <= laps[i-1] : false)\n      )\n    ) {\n      throw new Error(\n        \"TSV\u306e\u5468\u56de\u756a\u53f7\u306f\u3001\u91cd\u8907\u306e\u306a\u3044\u6607\u9806\u306e\u6b63\u306e\u6574\u6570\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\"\n      );\n    }\n\n    const times = columns.map(column =>\n      rows.map(row => {\n        const raw =\n          column < 0\n            ? \"\"\n            : (row[column] ?? \"\").trim();\n\n        const value = parseTime(raw);\n\n        return value === null\n          ? null\n          : (value > 0 ? value : null);\n      })\n    );\n\n    let fastest = Infinity;\n\n    times.forEach(values => {\n      values.forEach(v => {\n        if (v !== null) {\n          fastest = Math.min(fastest,v);\n        }\n      });\n    });\n\n    if (!Number.isFinite(fastest)) {\n      throw new Error(\"\u6709\u52b9\u306a\u30e9\u30c3\u30d7\u30bf\u30a4\u30e0\u304c\u3042\u308a\u307e\u305b\u3093\u3002\");\n    }\n\n    const initialTime = [\n      Math.floor(fastest * 2) \/ 2 - .5,\n      Math.ceil(Math.max(...times.flat().filter(v => v !== null)) * 2) \/ 2 + .5\n    ];\n\n    const wholeLaps = [\n      laps[0],\n      laps[laps.length - 1]\n    ];\n\n    const xRange = (min,max) =>\n      min === max\n        ? [min - .5,max + .5]\n        : [min,max];\n\n    const lapTraces = [];\n\n    driverConfig.forEach(([d,,color],idx) => {\n      lapTraces.push({\n        name: d,\n        x: laps,\n        y: times[idx],\n        customdata: times[idx].map(t =>\n          t === null ? \"\" : formatTime(t)\n        ),\n        mode: \"lines\",\n        connectgaps: false,\n        line: {\n          color,\n          width: 2\n        },\n        visible: false,\n        showlegend: false,\n        hovertemplate:\n          \"%{fullData.name}<br>\" +\n          \"Long-run Lap %{x}<br>\" +\n          \"Time: %{customdata}\" +\n          \"<extra><\/extra>\"\n      });\n\n      lapTraces.push({\n        name: d,\n        x: laps,\n        y: times[idx],\n        mode: \"markers\",\n        marker: {\n          size: 6,\n          color,\n          symbol: \"circle\",\n          line: {\n            color,\n            width: 2\n          }\n        },\n        hoverinfo: \"skip\",\n        visible: false,\n        showlegend: false\n      });\n\n    });\n\n    const font = {\n      family: \"Times New Roman, Times, serif\"\n    };\n\n    const layout = title => ({\n      font,\n      legend: {\n        itemclick: false,\n        itemdoubleclick: false,\n        orientation: \"h\",\n        y: -.2,\n        x: 0\n      },\n      xaxis: {\n        title: {\n          text: \"Long-run Lap\"\n        },\n        range: xRange(...wholeLaps),\n        autorange: false,\n        tickformat: \"d\"\n      },\n      yaxis: {\n        title: {\n          text: title\n        },\n        autorange: false,\n        automargin: true\n      },\n      margin: {\n        t: 25,\n        r: 15,\n        b: 85,\n        l: 75\n      },\n      hovermode: \"closest\",\n      paper_bgcolor: \"#fff\",\n      plot_bgcolor: \"#fff\"\n    });\n\n    const lapLayout = layout(\"Lap time (m:ss.sss)\");\n    const axis = timeAxis(...initialTime);\n\n    Object.entries(axis).forEach(([key,value]) => {\n      lapLayout.yaxis[key.slice(6)] = value;\n    });\n\n\n    $(\".race-interactive\").hidden = false;\n\n    root\n      .querySelectorAll(\"button,input,select\")\n      .forEach(el => {\n        el.disabled = true;\n      });\n\n    const config = {\n      responsive: true,\n      displaylogo: false,\n      scrollZoom: false,\n      doubleClick: false\n    };\n\n    await Plotly.newPlot(timeChart, lapTraces, lapLayout, config);\n\n    let busy = false;\n\n    async function run(action) {\n      if (busy) {\n        return;\n      }\n\n      busy = true;\n\n      root\n        .querySelectorAll(\"button,input,select\")\n        .forEach(el => {\n          el.disabled = true;\n        });\n\n      try {\n        await action();\n      }\n      catch (e) {\n        console.error(e);\n\n        status.hidden = false;\n        statusKey = \"updateError\";\n        status.textContent = t(statusKey);\n      }\n      finally {\n        busy = false;\n\n        root\n          .querySelectorAll(\"button,input,select\")\n          .forEach(el => {\n            el.disabled = false;\n          });\n      }\n    }\n\n    let legendCounter = 0;\n\n    const ranks = driverConfig.map(() => 0);\n    const selected = driverConfig.map(() => false);\n\n    const buttons = driverConfig.map(\n      ([d,,color],idx) => {\n        const button =\n          document.createElement(\"button\");\n\n        button.type = \"button\";\n        button.className = \"race-driver\";\n        button.style.backgroundColor = color;\n        button.style.color =\n          WHITE_TEXT.has(d)\n            ? \"#fff\"\n            : \"#000\";\n\n        button.setAttribute(\n          \"aria-pressed\",\n          \"false\"\n        );\n\n        button.setAttribute(\n          \"aria-label\",\n          d\n        );\n\n        const check =\n          document.createElement(\"span\");\n\n        check.className = \"race-check\";\n        check.setAttribute(\n          \"aria-hidden\",\n          \"true\"\n        );\n\n        button.append(\n          check,\n          document.createTextNode(d)\n        );\n\n        button.onclick = () =>\n          run(async () => {\n            selected[idx] = !selected[idx];\n\n            if (selected[idx]) {\n              ranks[idx] = ++legendCounter;\n            }\n\n            await applySelection();\n          });\n\n        $(\".race-drivers\")\n          .appendChild(button);\n\n        return button;\n      }\n    );\n\n    function applySelection() {\n      buttons.forEach((button,i) => {\n        button.setAttribute(\n          \"aria-pressed\",\n          String(selected[i])\n        );\n\n        button.firstChild.textContent =\n          selected[i] ? \"\u2713\" : \"\";\n      });\n\n      return Plotly.restyle(timeChart, {\n        visible: selected.flatMap(v => [v,v]),\n        showlegend: selected.flatMap(v => [v,false]),\n        legendrank: ranks.flatMap(v => [v,v])\n      });\n    }\n\n    $('[data-action=\"select\"]').onclick =\n      () =>\n        run(async () => {\n          legendCounter =\n            driverConfig.length;\n\n          selected.fill(true);\n\n          ranks.forEach((_,i) => {\n            ranks[i] = i + 1;\n          });\n\n          await applySelection();\n        });\n\n    $('[data-action=\"clear\"]').onclick =\n      () =>\n        run(async () => {\n          legendCounter = 0;\n          selected.fill(false);\n          ranks.fill(0);\n\n          await applySelection();\n        });\n\n    function setFields(\n      name,\n      range,\n      format = String\n    ) {\n      field(name,\"min\").value =\n        format(range[0]);\n\n      field(name,\"max\").value =\n        format(range[1]);\n    }\n\n    setFields(\n      \"laps\",\n      wholeLaps\n    );\n\n    setFields(\n      \"time\",\n      initialTime,\n      formatTime\n    );\n\n\n    async function applyLaps(min,max) {\n      await Plotly.relayout(timeChart, {\n        \"xaxis.range\": xRange(min,max),\n        \"xaxis.autorange\": false\n      });\n\n      setFields(\n        \"laps\",\n        [min,max]\n      );\n\n      error(\"laps\");\n    }\n\n    async function applyTime(min,max) {\n      await Plotly.relayout(\n        timeChart,\n        timeAxis(min,max)\n      );\n\n      setFields(\n        \"time\",\n        [min,max],\n        formatTime\n      );\n\n      error(\"time\");\n    }\n\n    [\"laps\",\"time\"].forEach(name => {\n      form(name).onsubmit = event => {\n        event.preventDefault();\n\n        const rawMin =\n          field(name,\"min\")\n            .value\n            .trim();\n\n        const rawMax =\n          field(name,\"max\")\n            .value\n            .trim();\n\n        const min =\n          name === \"time\"\n            ? parseTime(rawMin)\n            : Number(rawMin);\n\n        const max =\n          name === \"time\"\n            ? parseTime(rawMax)\n            : Number(rawMax);\n\n        if (\n          !rawMin ||\n          !rawMax ||\n          !Number.isFinite(min) ||\n          !Number.isFinite(max)\n        ) {\n          error(\n            name,\n            name === \"time\"\n              ? \"invalidTime\"\n              : \"invalid\"\n          );\n\n          return;\n        }\n\n        if (name === \"laps\") {\n          if (\n            !Number.isInteger(min) ||\n            !Number.isInteger(max) ||\n            min > max ||\n            min < wholeLaps[0] ||\n            max > wholeLaps[1]\n          ) {\n            error(\n              name,\n              \"lapError\",\n              {\n                min: wholeLaps[0],\n                max: wholeLaps[1]\n              }\n            );\n\n            return;\n          }\n\n          run(() =>\n            applyLaps(min,max)\n          );\n        }\n        else {\n          if (\n            min >= max ||\n            (\n              name === \"time\"\n                ? max - min < .001\n                : false\n            )\n          ) {\n            error(\n              name,\n              \"timeError\"\n            );\n\n            return;\n          }\n\n          run(() =>\n            applyTime(min,max)\n          );\n        }\n      };\n    });\n\n    $('[data-action=\"reset-laps\"]').onclick =\n      () =>\n        run(() =>\n          applyLaps(...wholeLaps)\n        );\n\n    $('[data-action=\"reset-time\"]').onclick =\n      () =>\n        run(() =>\n          applyTime(...initialTime)\n        );\n\n    root\n      .querySelectorAll(\"button,input,select\")\n      .forEach(el => {\n        el.disabled = false;\n      });\n\n    \/\/ \u6700\u521d\u306f\u4e0a\u4f4d4\u30c1\u30fc\u30e0\u306e8\u53f0\u3092\u8868\u793a\u3002\u9078\u629e\u9806\u306e\u51e1\u4f8b\u3092\u7dad\u6301\u3002\n    selected.forEach((_,i) => { selected[i] = i < 8; ranks[i] = i + 1; });\n    legendCounter = driverConfig.length;\n    await applySelection();\n    status.hidden = true;\n  }\n\n  init().catch(e => {\n    console.error(e);\n\n    $(\".race-interactive\").hidden = true;\n\n    status.hidden = false;\n    statusKey = \"loadError\";\n    status.textContent = t(statusKey);\n\n    root\n      .querySelectorAll(\"[data-lang]\")\n      .forEach(el => {\n        el.disabled = false;\n      });\n  });\n})();\n<\/script>\n\n\n\n<p class=\"has-text-align-right wp-block-paragraph\">ChatGPT 6 Astra, Takumi<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>\u30bb\u30d1\u30f3\u306eFP2\u3067\u6c7a\u52dd\u306b\u5411\u3051\u3066\u6709\u529b\u306a\u6750\u6599\u3092\u793a\u3057\u305f\u306e\u306f\u30d5\u30a7\u30eb\u30b9\u30bf\u30c3\u30da\u30f3\u3060\u30025\u5468\u4f7f\u7528\u6e08\u307f\u306e\u30df\u30c7\u30a3\u30a2\u30e0\u3067\u30ed\u30f3\u30b0\u30e9\u30f3\u306b\u5165\u308a\u3001\u9577\u3044\u9023\u7d9a\u8d70\u884c\u3092\u901a\u3058\u3066\u7af6\u4e89\u529b\u3092\u793a\u3057\u305f\u3002\u512a\u52dd\u4e89\u3044\u306e\u4e2d\u5fc3\u5019\u88dc\u3068\u898b\u308b\u6839\u62e0\u306f\u5341\u5206\u306b\u3042\u308b\u3002 \u8ffd\u3046\u30e1\u30eb\u30bb\u30c7\u30b9\u3068\u30d5\u30a7\u30e9\u30fc\u30ea [&hellip;]<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":17537,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-17531","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/f1-lap-time.com\/index.php?rest_route=\/wp\/v2\/posts\/17531","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/f1-lap-time.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/f1-lap-time.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/f1-lap-time.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/f1-lap-time.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=17531"}],"version-history":[{"count":2,"href":"https:\/\/f1-lap-time.com\/index.php?rest_route=\/wp\/v2\/posts\/17531\/revisions"}],"predecessor-version":[{"id":17538,"href":"https:\/\/f1-lap-time.com\/index.php?rest_route=\/wp\/v2\/posts\/17531\/revisions\/17538"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/f1-lap-time.com\/index.php?rest_route=\/wp\/v2\/media\/17537"}],"wp:attachment":[{"href":"https:\/\/f1-lap-time.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=17531"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/f1-lap-time.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=17531"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/f1-lap-time.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=17531"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}