{"id":641,"date":"2026-07-04T11:18:24","date_gmt":"2026-07-04T03:18:24","guid":{"rendered":"https:\/\/www.aitouzi.tech\/?p=641"},"modified":"2026-07-04T13:04:00","modified_gmt":"2026-07-04T05:04:00","slug":"641","status":"publish","type":"post","link":"https:\/\/www.aitouzi.tech\/index.php\/2026\/07\/04\/641\/","title":{"rendered":"\u6839\u636e\u4e3b\u961f\u5bf9\u51b2\u4e0b\u6ce8\uff0c6000\u6b21\u8499\u7279\u5361\u6d1b\u6a21\u62df\u544a\u8bc9\u6211\u5e94\u8be5\u4e70\u2026"},"content":{"rendered":"\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>2026 \u4e16\u754c\u676f\u56db\u5f3a \u00b7 \u6295\u6ce8\u5bf9\u51b2\u5206\u6790<\/title>\n<style>\n  :root {\n    --bg: #fafaf9; --surface: #ffffff; --ink: #1c1c1e; --muted: #6b6b70;\n    --line: #e5e5e7; --accent: #c8553d; --accent-soft: #f4d9d2;\n    --pos: #2f7d52; --neg: #b3412f; --gold: #b8862a;\n    --shadow: 0 1px 2px rgba(0,0,0,.04), 0 0 0 1px var(--line);\n  }\n  * { box-sizing: border-box; }\n  img, svg, canvas { max-width: 100%; }\n  body {\n    margin: 0; font-family: -apple-system, \"Helvetica Neue\", \"PingFang SC\", sans-serif;\n    background: var(--bg); color: var(--ink); line-height: 1.5; font-size: 14px;\n  }\n  .wrap { max-width: 1180px; margin: 0 auto; padding: 32px 24px 64px; }\n  h1 { font-size: 24px; font-weight: 650; margin: 0 0 4px; letter-spacing: -.02em; }\n  .sub { color: var(--muted); font-size: 13px; margin-bottom: 28px; }\n  .grid { display: grid; grid-template-columns: 340px 1fr; gap: 24px; align-items: start; }\n  .grid > * { min-width: 0; }\n  @media (max-width: 900px) { .grid { grid-template-columns: 1fr; } }\n  .panel { background: var(--surface); border-radius: 14px; padding: 20px; box-shadow: var(--shadow); }\n  .panel h2 { font-size: 14px; font-weight: 650; margin: 0 0 14px; color: var(--ink); }\n  .ctrl { margin-bottom: 16px; }\n  .ctrl label { display: flex; justify-content: space-between; font-size: 12px; color: var(--muted); margin-bottom: 6px; }\n  .ctrl label .val { color: var(--ink); font-variant-numeric: tabular-nums; font-weight: 600; }\n  input[type=range] { width: 100%; accent-color: var(--accent); height: 4px; }\n  .team-row { display: flex; align-items: center; gap: 10px; margin-bottom: 10px; }\n  .team-row .name { width: 56px; font-size: 13px; }\n  .team-row input { flex: 1; }\n  .team-row .tnum { width: 34px; text-align: right; font-size: 12px; font-variant-numeric: tabular-nums; color: var(--ink); }\n  .section-title { font-size: 12px; color: var(--muted); text-transform: uppercase; letter-spacing: .06em; margin: 18px 0 10px; font-weight: 600; }\n  .stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin-bottom: 20px; }\n  .stat { background: var(--surface); border-radius: 12px; padding: 16px; box-shadow: var(--shadow); }\n  .stat .k { font-size: 11px; color: var(--muted); margin-bottom: 6px; }\n  .stat .v { font-size: 22px; font-weight: 700; font-variant-numeric: tabular-nums; letter-spacing: -.01em; }\n  .stat .v.pos { color: var(--pos); } .stat .v.neg { color: var(--neg); }\n  .stat .sub { font-size: 11px; color: var(--muted); margin-top: 2px; }\n  .chart-block { background: var(--surface); border-radius: 14px; padding: 20px; box-shadow: var(--shadow); margin-bottom: 20px; }\n  .chart-block h2 { font-size: 14px; font-weight: 650; margin: 0 0 4px; }\n  .chart-block .desc { font-size: 12px; color: var(--muted); margin-bottom: 14px; }\n  canvas { display: block; width: 100%; }\n  table { width: 100%; border-collapse: collapse; font-size: 13px; font-variant-numeric: tabular-nums; }\n  th, td { text-align: right; padding: 8px 10px; border-bottom: 1px solid var(--line); }\n  th:first-child, td:first-child { text-align: left; }\n  th { font-size: 11px; color: var(--muted); font-weight: 600; text-transform: uppercase; letter-spacing: .04em; }\n  td.bar-cell { position: relative; width: 40%; }\n  .bar { height: 14px; border-radius: 3px; background: var(--accent-soft); position: relative; }\n  .bar > span { display: block; height: 100%; border-radius: 3px; background: var(--accent); }\n  .tag { display: inline-block; padding: 1px 7px; border-radius: 4px; font-size: 11px; font-weight: 600; background: var(--accent-soft); color: var(--accent); }\n  .note { font-size: 12px; color: var(--muted); margin-top: 16px; padding: 12px 14px; background: #f6f5f4; border-radius: 8px; border-left: 3px solid var(--accent); }\n  .toggle { display: flex; gap: 6px; margin-bottom: 12px; }\n  .toggle button { flex: 1; padding: 7px; border: 1px solid var(--line); background: var(--surface); border-radius: 8px; font-size: 12px; color: var(--muted); cursor: pointer; }\n  .toggle button.on { background: var(--ink); color: #fff; border-color: var(--ink); }\n  \/* \u65d7\u5e1c\u7f29\u7565\u56fe *\/\n  .flag { width: 22px; height: 15px; object-fit: cover; border-radius: 2px; vertical-align: middle; box-shadow: 0 0 0 1px rgba(0,0,0,.12); }\n  .flag.sm { width: 18px; height: 12px; }\n  .flag.lg { width: 44px; height: 30px; }\n  .flag.xl { width: 72px; height: 48px; }\n  \/* \u9876\u90e8\u4e3b\u961f\u663e\u793a\u680f *\/\n  .fav-banner { display: flex; flex-direction: column; align-items: center; gap: 8px; text-align: center; background: linear-gradient(135deg, var(--accent-soft), #fff); border: 1px solid var(--accent-soft); border-radius: 14px; padding: 18px 20px; margin-bottom: 24px; box-shadow: var(--shadow); }\n  .fav-banner .fb-flag { line-height: 0; }\n  .fav-banner .fb-flag .flag { box-shadow: 0 1px 3px rgba(0,0,0,.2); }\n  .fav-banner .fb-name { font-size: 24px; font-weight: 700; letter-spacing: .02em; }\n  .fav-banner .fb-meta { display: flex; align-items: center; gap: 10px; color: var(--muted); font-size: 13px; font-variant-numeric: tabular-nums; flex-wrap: wrap; justify-content: center; }\n  .fav-banner .fb-meta b { color: var(--ink); font-weight: 650; }\n  .fav-banner .fb-meta .sep { opacity: .5; }\n  \/* \u664b\u7ea7\u4e4b\u8def *\/\n  .bracket { width: 100%; height: 220px; }\n  .bracket .node { fill: var(--surface); stroke: var(--line); stroke-width: 1.5; }\n  .bracket .node.fav { fill: var(--accent-soft); stroke: var(--accent); stroke-width: 2.5; }\n  .bracket .label-t { font-size: 12px; font-weight: 600; fill: var(--ink); }\n  .bracket .path { stroke: var(--accent); stroke-width: 2.5; fill: none; stroke-dasharray: 6 5; animation: flow 1.2s linear infinite; }\n  .bracket .path.dim { stroke: #d0d0d4; stroke-width: 1.5; stroke-dasharray: 4 4; animation: none; }\n  @keyframes flow { to { stroke-dashoffset: -22; } }\n  .bracket .pulse { animation: pulse 1.6s ease-in-out infinite; transform-origin: center; transform-box: fill-box; }\n  @keyframes pulse { 0%,100% { opacity: .55; } 50% { opacity: 1; } }\n  .fav-toggle-grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: 6px; margin-bottom: 14px; }\n  .fav-toggle-grid button { display: flex; flex-direction: column; align-items: center; gap: 4px; padding: 8px 4px; border: 1px solid var(--line); background: var(--surface); border-radius: 8px; font-size: 12px; color: var(--muted); cursor: pointer; }\n  .fav-toggle-grid button.on { border-color: var(--accent); background: var(--accent-soft); color: var(--accent); }\n  .recompute { font-size: 11px; color: var(--muted); text-align: right; margin-top: 6px; font-variant-numeric: tabular-nums; }\n  .ctrl-hint { font-size: 11px; color: var(--muted); margin-top: 5px; line-height: 1.5; }\n  .ctrl-hint b { color: var(--ink); font-weight: 600; }\n  \/* \u8d54\u7387\u53ea\u8bfb\u5217\u8868 *\/\n  .odds-list { display: flex; flex-direction: column; gap: 6px; margin-bottom: 14px; }\n  .odds-list .row { display: flex; align-items: center; gap: 10px; font-size: 13px; font-variant-numeric: tabular-nums; }\n  .odds-list .row .lbl { flex: 1; display: flex; align-items: center; gap: 8px; }\n  .odds-list .row .lbl .nm { color: var(--ink); font-weight: 600; }\n  .odds-list .row .lbl .ipm { color: var(--muted); font-size: 11px; }\n  .odds-list .row .od { width: 50px; text-align: right; font-weight: 650; color: var(--accent); }\n  details.logic { background: var(--surface); border-radius: 14px; padding: 4px 22px 16px; box-shadow: var(--shadow); margin-top: 20px; margin-bottom: 28px; }\n  .grid { margin-top: 0; }\n  details.glossary { background: var(--surface); border-radius: 14px; padding: 4px 22px 16px; box-shadow: var(--shadow); margin-top: 20px; margin-bottom: 28px; }\n  details.glossary summary { cursor: pointer; padding: 16px 0; font-size: 14px; font-weight: 650; list-style: none; display: flex; align-items: center; gap: 8px; }\n  details.glossary summary::-webkit-details-marker { display: none; }\n  details.glossary summary::before { content: \"\u25b8\"; color: var(--accent); transition: transform .15s; font-size: 12px; }\n  details.glossary[open] summary::before { transform: rotate(90deg); }\n  details.glossary dl { margin: 14px 0 0; }\n  details.glossary dt { font-size: 13px; font-weight: 650; color: var(--ink); margin-top: 12px; }\n  details.glossary dt:first-child { margin-top: 0; }\n  details.glossary dt .en { font-weight: 400; color: var(--muted); font-size: 12px; margin-left: 6px; }\n  details.glossary dd { font-size: 13px; line-height: 1.6; color: #3a3a3e; margin: 4px 0 0; padding-left: 0; }\n  details.glossary dd .eg { color: var(--muted); font-size: 12px; display: block; margin-top: 3px; }\n  details.logic summary { cursor: pointer; padding: 16px 0; font-size: 14px; font-weight: 650; list-style: none; display: flex; align-items: center; gap: 8px; }\n  details.logic summary::-webkit-details-marker { display: none; }\n  details.logic summary::before { content: \"\u25b8\"; color: var(--accent); transition: transform .15s; font-size: 12px; }\n  details.logic[open] summary::before { transform: rotate(90deg); }\n  details.logic h3 { font-size: 13px; font-weight: 650; margin: 22px 0 8px; color: var(--ink); border-left: 3px solid var(--accent); padding-left: 10px; }\n  details.logic h4 { font-size: 12px; font-weight: 600; margin: 14px 0 6px; color: var(--muted); }\n  details.logic p, details.logic li { font-size: 13px; line-height: 1.65; color: #3a3a3e; }\n  details.logic ul { margin: 6px 0 6px 4px; padding-left: 20px; }\n  details.logic li { margin: 3px 0; }\n  details.logic pre { background: #f6f5f4; border-radius: 8px; padding: 12px 14px; font-size: 12px; overflow-x: auto; margin: 8px 0; line-height: 1.5; }\n  details.logic code { background: #f0efed; padding: 1px 5px; border-radius: 3px; font-size: 12px; }\n  details.logic table { font-size: 12px; margin: 8px 0; }\n  details.logic .formula { font-family: \"SF Mono\", Menlo, monospace; }\n  details.logic .chain { background: #f6f5f4; border-radius: 8px; padding: 12px 14px; font-size: 11.5px; line-height: 1.7; margin: 10px 0; font-family: \"SF Mono\", Menlo, monospace; white-space: pre; overflow-x: auto; }\n\n  @media (max-width: 760px) {\n    body { font-size: 13px; overflow-x: hidden; }\n    html, body { width: 100%; max-width: 100%; }\n    .wrap { width: 100%; padding: 18px 12px 40px; }\n    h1 { font-size: 21px; line-height: 1.25; margin-bottom: 8px; letter-spacing: 0; }\n    .sub { font-size: 12px; line-height: 1.65; margin-bottom: 18px; }\n    .grid { gap: 16px; }\n\n    .panel,\n    .chart-block,\n    details.logic,\n    details.glossary {\n      border-radius: 10px;\n      padding: 14px;\n      min-width: 0;\n      max-width: 100%;\n    }\n\n    details.logic,\n    details.glossary {\n      margin-top: 14px;\n      margin-bottom: 16px;\n    }\n\n    details.logic summary,\n    details.glossary summary {\n      padding: 8px 0 12px;\n      line-height: 1.4;\n    }\n\n    details.logic p,\n    details.logic li,\n    details.glossary dd {\n      font-size: 12px;\n      line-height: 1.75;\n    }\n\n    details.logic h3 { margin-top: 18px; }\n    details.logic pre,\n    details.logic .chain {\n      white-space: pre-wrap;\n      word-break: break-word;\n      overflow-x: auto;\n      font-size: 11px;\n      line-height: 1.65;\n    }\n\n    .fav-banner {\n      margin-bottom: 16px;\n      padding: 14px 12px;\n      border-radius: 10px;\n    }\n    .fav-banner .fb-name { font-size: 21px; }\n    .fav-banner .fb-meta { gap: 6px 8px; font-size: 12px; }\n    .flag.xl { width: 58px; height: 38px; }\n\n    .fav-toggle-grid {\n      grid-template-columns: repeat(3, minmax(0, 1fr));\n      gap: 8px;\n    }\n    .fav-toggle-grid button {\n      min-height: 54px;\n      padding: 8px 4px;\n      touch-action: manipulation;\n    }\n\n    .section-title {\n      margin: 16px 0 8px;\n      font-size: 11px;\n      letter-spacing: .04em;\n    }\n    .ctrl { margin-bottom: 14px; }\n    .ctrl label {\n      align-items: flex-start;\n      gap: 10px;\n      line-height: 1.45;\n    }\n    input[type=range] {\n      height: 28px;\n      min-height: 28px;\n      touch-action: pan-y;\n    }\n\n    .team-row {\n      display: grid;\n      grid-template-columns: 52px minmax(0, 1fr) 38px;\n      gap: 8px;\n      margin-bottom: 8px;\n    }\n    .team-row .name,\n    .team-row .tnum {\n      width: auto;\n      line-height: 28px;\n    }\n\n    .toggle {\n      gap: 8px;\n      flex-wrap: wrap;\n    }\n    .toggle button {\n      min-height: 40px;\n      padding: 9px 8px;\n      line-height: 1.35;\n      touch-action: manipulation;\n      min-width: 0;\n      white-space: normal;\n      overflow-wrap: anywhere;\n    }\n\n    .odds-list .row { gap: 8px; }\n    .odds-list .row .lbl { min-width: 0; }\n    .odds-list .row .lbl .nm,\n    .odds-list .row .lbl .ipm {\n      white-space: nowrap;\n    }\n    .ctrl label,\n    .ctrl-hint,\n    .recompute,\n    .note,\n    .desc {\n      overflow-wrap: anywhere;\n    }\n\n    .stats {\n      grid-template-columns: repeat(2, minmax(0, 1fr));\n      gap: 10px;\n      margin-bottom: 14px;\n    }\n    .stat {\n      min-width: 0;\n      padding: 12px;\n      border-radius: 10px;\n    }\n    .stat .v {\n      font-size: 19px;\n      line-height: 1.2;\n      overflow-wrap: anywhere;\n    }\n    .stat .sub { line-height: 1.45; }\n\n    .chart-block {\n      margin-bottom: 14px;\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n    .chart-block h2 { line-height: 1.35; }\n    .chart-block .desc {\n      font-size: 12px;\n      line-height: 1.6;\n      margin-bottom: 10px;\n    }\n    canvas {\n      min-width: 0;\n      max-width: 100%;\n    }\n    #probChart { height: 210px; }\n    #distChart { height: 230px; }\n\n    .bracket {\n      min-width: 560px;\n      max-width: none;\n      height: 180px;\n    }\n\n    table {\n      display: block;\n      width: 100%;\n      overflow-x: auto;\n      white-space: nowrap;\n      -webkit-overflow-scrolling: touch;\n      font-size: 12px;\n      max-width: 100%;\n    }\n    th, td { padding: 8px 9px; }\n    #betTable { min-width: 640px; }\n    td.bar-cell { min-width: 120px; }\n\n    .note {\n      font-size: 12px;\n      line-height: 1.7;\n      margin-top: 12px;\n      padding: 11px 12px;\n      border-radius: 8px;\n    }\n    .recompute {\n      font-size: 11px;\n      line-height: 1.5;\n    }\n  }\n\n  @media (max-width: 430px) {\n    .wrap { padding-left: 10px; padding-right: 10px; }\n    h1 { font-size: 19px; }\n    .stats { grid-template-columns: 1fr; }\n    .fav-toggle-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }\n    .panel,\n    .chart-block,\n    details.logic,\n    details.glossary {\n      padding: 12px;\n    }\n    .toggle { flex-direction: column; }\n    .toggle button { width: 100%; }\n    .fav-banner .fb-meta { flex-direction: column; }\n    .fav-banner .fb-meta .sep { display: none; }\n    .bracket { min-width: 520px; }\n  }\n<\/style>\n\n\n<div class=\"wrap\">\n  <h1>2026 \u4e16\u754c\u676f\u56db\u5f3a \u00b7 \u6295\u6ce8\u4e0e\u5bf9\u51b2\u5206\u6790<\/h1>\n  <div class=\"sub\">\u878d\u5408\u5e02\u573a\u8d54\u7387\u4e0e\u7eb8\u9762\u5b9e\u529b\uff08\u8499\u7279\u5361\u6d1b + \u7ebf\u6027\u610f\u89c1\u6c60\uff09\u3002\u4e3b\u961f\u593a\u51a0\u89c6\u4e3a +2000 \u5143\u771f\u5b9e\u91d1\u94b1\u5934\u5bf8\uff08\u672a\u593a\u51a0\u65e0\u635f\u5931\u538c\u6076\uff09\u3002\u53ef\u7528\u4e0b\u65b9\u300c\u4e3b\u961f\u9009\u62e9\u300d\u5207\u6362\u652f\u6301\u961f\u4f0d\uff0c\u9ed8\u8ba4\u963f\u6839\u5ef7\uff1b\u7b56\u7565\u53ef\u5207\u300c\u5bf9\u51b2\/\u671f\u671b\u6700\u4f18\u300d\u3002\u62d6\u52a8\u5de6\u4fa7\u65cb\u94ae\u5b9e\u65f6\u91cd\u7b97\u3002<\/div>\n\n  <div class=\"fav-banner\" id=\"favBanner\"><\/div>\n\n  <details class=\"glossary\">\n    <summary>\u535a\u5f69\u672f\u8bed\u8868\uff08\u70b9\u51fb\u6298\u53e0\/\u5c55\u5f00\uff09<\/summary>\n    <dl>\n      <dt>\u8d54\u7387 <span class=\"en\">Odds<\/span><\/dt>\n      <dd>\u5e84\u5bb6\u5bf9\u67d0\u7ed3\u679c\u7ed9\u51fa\u7684\u8d54\u4ed8\u500d\u6570\u3002\u8d54\u7387 2.35 \u610f\u5473\u7740\u62bc 1 \u5143\u82e5\u731c\u4e2d\u53ef\u62ff\u56de 2.35 \u5143\uff08\u542b\u672c\u91d1 1 \u5143 + \u51c0\u8d5a 1.35 \u5143\uff09\u3002\u672c\u62a5\u544a\u8d54\u7387\u4e3a&#8221;\u593a\u51a0\u8d54\u7387&#8221;\u3002<span class=\"eg\">\u4f8b\uff1a\u6cd5\u56fd\u8d54\u7387 2.35\uff0c\u62bc 2 \u5143\u4e2d\u5219\u51c0\u8d5a (2.35\u22121)\u00d72 = 2.7 \u5143\u3002<\/span><\/dd>\n\n      <dt>\u9690\u542b\u6982\u7387 <span class=\"en\">Implied Probability<\/span><\/dt>\n      <dd>\u8d54\u7387\u7684\u5012\u6570 <code>1\/odds<\/code>\uff0c\u5373&#8221;\u6309\u8be5\u8d54\u7387\u53cd\u63a8\u3001\u5e84\u5bb6\u9690\u542b\u8ba4\u4e3a\u8be5\u7ed3\u679c\u53d1\u751f\u7684\u6982\u7387&#8221;\u3002\u5b83<b>\u542b\u5e73\u53f0\u62bd\u6c34<\/b>\uff0c\u6240\u4ee5\u6240\u6709\u961f\u9690\u542b\u6982\u7387\u76f8\u52a0\u4f1a &gt;100%\u3002<span class=\"eg\">\u4f8b\uff1a1\/2.35 \u2248 42.6% \u662f\u6cd5\u56fd\u7684\u9690\u542b\u6982\u7387\uff08\u542b\u6c34\uff09\u3002<\/span><\/dd>\n\n      <dt>\u53bb\u6c34 \/ \u62bd\u6c34 \/ \u5229\u6da6\u8fb9\u9645 <span class=\"en\">Overround \/ Vigorish \/ Margin<\/span><\/dt>\n      <dd>\u6240\u6709\u961f\u9690\u542b\u6982\u7387\u4e4b\u548c\u5927\u4e8e 100% \u7684\u90e8\u5206\uff0c\u662f\u535a\u5f69\u5e73\u53f0\u585e\u8fdb\u53bb\u7684\u5229\u6da6\u3002\u6309\u6bd4\u4f8b\u6324\u6389\u8fd9\u90e8\u5206\u4f7f\u6982\u7387\u5408\u8ba1\u56de\u5230 100%\uff0c\u5373&#8221;\u53bb\u6c34&#8221;\uff0c\u5f97\u5230\u5e02\u573a\u771f\u5b9e\u6982\u7387 P_market\u3002<span class=\"eg\">\u4f8b\uff1a\u4e94\u961f\u9690\u542b\u6982\u7387\u5408\u8ba1 100.4%\uff0c\u53bb\u6c34\u540e\u5404\u81ea\u7565\u7f29\uff0c\u5408\u8ba1=100%\u3002<\/span><\/dd>\n\n      <dt>EV \/ \u671f\u671b\u503c <span class=\"en\">Expected Value<\/span><\/dt>\n      <dd>\u91cd\u590d\u4e0b\u6ce8\u957f\u671f\u5e73\u5747\u6bcf\u6ce8\u7684\u51c0\u6536\u76ca\u3002\u672c\u62a5\u544a\u5355\u6ce8 EV = <code>2 \u00d7 (\u8d54\u7387 \u00d7 \u593a\u51a0\u6982\u7387 \u2212 1)<\/code> \u5143\u3002EV&gt;0 \u957f\u671f\u8d5a\u94b1\uff0c&lt;0 \u957f\u671f\u4e8f\u3002<span class=\"eg\">\u4f8b\uff1a\u897f\u73ed\u7259 EV = 2\u00d7(7.25\u00d70.187\u22121) = +0.71 \u5143\/\u6ce8\uff0c\u662f\u4e94\u961f\u91cc\u552f\u4e00\u6b63\u7684\u3002<\/span><\/dd>\n\n      <dt>\u7eb8\u9762\u5b9e\u529b <span class=\"en\">Paper Strength (x)<\/span><\/dt>\n      <dd>\u5bf9\u5404\u961f\u7efc\u5408\u6218\u529b\u7684\u4e3b\u89c2\u6253\u5206\uff08\u6ee1\u5206 100\uff09\uff0c\u662f\u6a21\u578b\u7684\u8f93\u5165\u4e4b\u4e00\uff0c\u533a\u522b\u4e8e\u5e02\u573a\u53e3\u5f84\u3002<span class=\"eg\">\u4f8b\uff1a\u6cd5 95 \/ \u897f 90 \/ \u5df4 85 \/ \u963f 88 \/ \u82f1 85\u3002<\/span><\/dd>\n\n      <dt>\u03b1 \u6ce2\u52a8 <span class=\"en\">Random Fluctuation (\u03b1)<\/span><\/dt>\n      <dd>\u8db3\u7403\u5076\u7136\u6027\uff0c\u771f\u5b9e\u5b9e\u529b = \u7eb8\u9762\u5b9e\u529b \u00d7 (1 + \u03b1)\uff0c\u03b1 \u5728 \u00b120% \u5747\u5300\u968f\u673a\u3002\u8499\u7279\u5361\u6d1b\u6bcf\u6b21\u6a21\u62df\u7ed9\u6bcf\u961f\u72ec\u7acb\u62bd\u4e00\u4e2a \u03b1\u3002<span class=\"eg\">\u4f8b\uff1a\u6cd5\u56fd\u7eb8\u9762 95\uff0c\u62bd\u5230 \u03b1=+0.1 \u2192 \u771f\u5b9e\u5b9e\u529b 104.5\u3002<\/span><\/dd>\n\n      <dt>scale\uff08Logistic \u654f\u611f\u5ea6\u53c2\u6570\uff09<\/dt>\n      <dd>\u80dc\u7387\u516c\u5f0f <code>P(A\u80dc)=1\/(1+10^((S_B\u2212S_A)\/scale))<\/code> \u91cc\u7684\u9664\u6570\u3002scale \u8d8a\u5c0f\uff0c\u540c\u6837\u5b9e\u529b\u5dee\u5bf9\u5e94\u7684\u80dc\u7387\u8d8a\u6781\u7aef\uff08\u5f3a\u961f\u66f4\u7a33\uff09\uff1b\u8d8a\u5927\u8d8a\u5e73\u3002\u6587\u6863\u672a\u7ed9\u6570\u503c\uff0c\u9ed8\u8ba4 20\uff0c\u5217\u4e3a\u53ef\u8c03\u65cb\u94ae\u3002<span class=\"eg\">\u4f8b\uff1a\u5dee 10 \u5206\u65f6 scale=20\u219276%\uff0cscale=15\u219282%\u3002<\/span><\/dd>\n\n      <dt>\u8499\u7279\u5361\u6d1b\u6a21\u62df <span class=\"en\">Monte Carlo Simulation<\/span><\/dt>\n      <dd>\u7528\u5927\u91cf\u968f\u673a\u62bd\u6837\u903c\u8fd1\u6982\u7387\u7684\u901a\u7528\u65b9\u6cd5\u3002\u672c\u62a5\u544a\u8dd1 2 \u4e07\u6b21\u5b8c\u6574\u8d5b\u4e8b\u6a21\u62df\uff0c\u7edf\u8ba1\u6bcf\u961f\u593a\u51a0\u9891\u7387\u4f5c P_model\u3002\u628a&#8221;\u6982\u7387&#8221;\u7ffb\u8bd1\u6210&#8221;\u968f\u673a\u6570\u843d\u5728\u6570\u8f74\u67d0\u6bb5&#8221;\uff0c\u5982 70% \u6982\u7387 = \u968f\u673a\u6570\u843d\u5728 0~0.7\u3002<\/dd>\n\n      <dt>\u7ebf\u6027\u610f\u89c1\u6c60 <span class=\"en\">Linear Opinion Pool<\/span><\/dt>\n      <dd>\u878d\u5408\u4e24\u5957\u6982\u7387\u7684\u52a0\u6743\u5e73\u5747\uff1a<code>P_fused = w1\u00b7P_market + (1\u2212w1)\u00b7P_model<\/code>\u3002\u5728&#8221;\u6982\u7387\u5c42&#8221;\u800c\u975e&#8221;\u5b9e\u529b\u5c42&#8221;\u52a0\u6743\uff0c\u907f\u5f00\u4e86\u4e24\u6765\u6e90\u91cf\u7eb2\u4e0d\u540c\u7684\u5f52\u4e00\u5316\u6b67\u4e49\u3002<\/dd>\n\n      <dt>\u4e16\u754c\u7ebf \/ \u593a\u51a0\u573a\u666f <span class=\"en\">Outcome \/ Scenario<\/span><\/dt>\n      <dd>\u6700\u7ec8\u51a0\u519b\u662f\u8c01\uff0c\u51b3\u5b9a\u4e86\u4e00\u6761\u786e\u5b9a\u7684\u6536\u76ca\u3002\u4e94\u961f\u5404\u6709 0~1 \u4e2a&#8221;\u593a\u51a0\u4e16\u754c\u7ebf&#8221;\uff0c\u542b\u5bf9\u5e94\u5956\u91d1\u7684\u603b\u91d1\u94b1\u968f\u4e4b\u786e\u5b9a\u3002<\/dd>\n\n      <dt>\u5bf9\u51b2 <span class=\"en\">Hedging<\/span><\/dt>\n      <dd>\u7528\u53cd\u5411\u6216\u5206\u6563\u5934\u5bf8\u964d\u4f4e\u98ce\u9669\u3002\u672c\u573a\u666f\u4e0b\u5f69\u7968<b>\u4e0d\u80fd\u505a\u7a7a\u4e3b\u961f<\/b>\uff0c\u6545\u5bf9\u51b2 = \u4e0d\u62bc\u4e3b\u961f\uff08\u907f\u514d\u4e0e\u5929\u7136 +2000 \u5934\u5bf8\u540c\u5411\u52a0\u6760\u6746\uff09\uff0c\u628a\u6ce8\u5206\u6563\u5230\u5176\u4ed6\u6b63 EV \u961f\uff0c\u8ba9\u4e3b\u961f\u843d\u8d25\u65f6\u4ecd\u6709\u5f69\u7968\u8865\u507f\u3002<\/dd>\n\n      <dt>\u5934\u5bf8 \/ \u591a\u5934 <span class=\"en\">Position \/ Long<\/span><\/dt>\n      <dd>\u6301\u6709\u67d0\u6807\u7684\u3001&#8221;\u505a\u591a&#8221;\u5b83\u3002\u4e3b\u961f\u593a\u51a0\u4f60\u5929\u7136 +2000 \u5143\uff0c\u76f8\u5f53\u4e8e\u5929\u7136\u6301\u6709&#8221;\u4e3b\u961f\u591a\u5934\u5934\u5bf8&#8221;\u3002\u62bc\u4e3b\u961f\u5f69\u7968\u662f\u5728\u8be5\u5934\u5bf8\u4e0a\u540c\u5411\u52a0\u4ed3\u3002<\/dd>\n\n      <dt>\u4e8f\u635f\u6982\u7387 <span class=\"en\">Loss Probability<\/span><\/dt>\n      <dd>\u6a21\u62df\u7ed3\u679c\u4e2d\u603b\u91d1\u94b1 &lt; 0 \u7684\u9891\u7387\u3002\u672c\u62a5\u544a\u533a\u5206&#8221;\u7eaf\u5f69\u7968\u53e3\u5f84&#8221;\u4e0e&#8221;\u542b\u51a0\u519b\u5956\u91d1\u7684\u603b\u91d1\u94b1\u53e3\u5f84&#8221;\u4e24\u79cd\u4e8f\u635f\u6982\u7387\u3002<\/dd>\n\n      <dt>\u4e2d\u4f4d\u6570\u6536\u76ca <span class=\"en\">Median<\/span><\/dt>\n      <dd>\u6a21\u62df\u7ed3\u679c\u6392\u5e8f\u540e\u4f4d\u4e8e\u6b63\u4e2d\u95f4\u7684\u503c\uff0c\u5373&#8221;50% \u6982\u7387\u4e0d\u8d85\u8fc7\u6b64\u503c&#8221;\u3002\u6bd4\u671f\u671b\u503c\u66f4\u80fd\u53cd\u6620&#8221;\u591a\u6570\u60c5\u51b5\u4f1a\u53d1\u751f\u4ec0\u4e48&#8221;\u2014\u2014\u5f69\u7968\u573a\u666f\u91cc\u671f\u671b\u5e38\u88ab\u5c0f\u6982\u7387\u9ad8\u6536\u76ca\u62c9\u9ad8\uff0c\u4e2d\u4f4d\u6570\u66f4\u8bda\u5b9e\u3002<\/dd>\n    <\/dl>\n  <\/details>\n\n  <details class=\"logic\">\n    <summary>\u8ba1\u7b97\u903b\u8f91\u8bf4\u660e\uff08\u70b9\u51fb\u5c55\u5f00\/\u6298\u53e0\uff09<\/summary>\n    <p style=\"color:var(--muted);margin-top:14px\">\u4ece\u8f93\u5165\u5230\u8f93\u51fa\u5171\u4e94\u5c42\uff1a<b>\u6982\u7387 \u2192 \u878d\u5408 \u2192 \u6ce8\u6570\u51b3\u7b56 \u2192 \u671f\u671b\u7edf\u8ba1 \u2192 \u53cc\u7b56\u7565<\/b>\u3002\u5b8c\u6574\u6587\u6863\u89c1 [\u8ba1\u7b97\u903b\u8f91.md]\u3002<\/p>\n\n    <div class=\"chain\">\u7b2c1\u5c42 P_market(\u8d54\u7387\u53bb\u6c34) \u2510\n                     \u251c\u7b2c2\u5c42 \u7ebf\u6027\u610f\u89c1\u6c60\u878d\u5408 \u2192 P_fused\n\u7b2c1\u5c42 P_model(\u8499\u7279\u5361\u6d1b)  \u2518\n                                    \u2193\n        \u7b2c3\u5c42 \u6ce8\u6570\u51b3\u7b56(\u8d2a\u5fc3\u6309EV\u5206\u914d + \u7b56\u7565\u5f00\u5173: hedge\u5254\u9664\u4e3b\u961f)\n                                    \u2193\n              \u7b2c4\u5c42 \u603b\u91d1\u94b1 = \u5f69\u7968\u635f\u76ca + (\u963f\u593a\u51a0?+2000:0) \u2192 \u5206\u5e03\u4e0e\u7edf\u8ba1\n                                    \u2193\n                    \u7b2c5\u5c42 hedge vs ev \u53cc\u7b56\u7565\u5bf9\u7167<\/div>\n\n    <h3>\u7b2c 0 \u5c42\uff1a\u8f93\u5165<\/h3>\n    <p>5 \u652f\u961f\u3001\u5404\u81ea\u7eb8\u9762\u5b9e\u529b x\u3001\u593a\u51a0\u8d54\u7387 \u03b2\u3001\u56db\u5f3a\u5bf9\u9635\u7ed3\u6784 z\u3002\u4e24\u4e2a case\uff1a<\/p>\n    <pre>case1(\u6982\u7387 70%): \u4e0a\u534a\u533a \u6cd5 vs \u897f,  \u4e0b\u534a\u533a \u82f1 vs \u963f\ncase2(\u6982\u7387 30%): \u4e0a\u534a\u533a \u6cd5 vs \u897f,  \u4e0b\u534a\u533a \u5df4 vs \u963f<\/pre>\n    <p>\u5173\u952e\u7ea6\u675f\uff1a\u593a\u51a0 = <b>\u8fde\u80dc\u4e24\u573a<\/b>\uff08\u534a\u51b3\u8d5b + \u603b\u51b3\u8d5b\uff09\uff0c\u6838\u5fc3\u662f&#8221;\u5355\u573a\u80dc\u7387 \u2192 \u593a\u51a0\u6982\u7387&#8221;\u7684\u7ea7\u8054\u3002<\/p>\n\n    <h3>\u7b2c 1 \u5c42\uff1a\u4e24\u5957\u72ec\u7acb\u7684\u593a\u51a0\u6982\u7387<\/h3>\n    <p>\u6a21\u578b\u540c\u65f6\u8dd1\u4e24\u6761\u8def\u5f84\uff0c<b>\u5404\u81ea\u5f97\u5230\u4e00\u961f\u593a\u51a0\u6982\u7387<\/b>\u3002<\/p>\n\n    <h4>\u8def\u5f84 A \u2014 \u5e02\u573a\u53e3\u5f84 P_market\uff08\u8d54\u7387\u53bb\u6c34\uff09<\/h4>\n    <pre class=\"formula\">q_i = 1 \/ odds_i        # \u6bcf\u961f\u9690\u542b\u6982\u7387(\u542b\u6c34)\nm   = sum(q_i)          # \u5408\u8ba1(&gt;1\uff0c\u5e73\u53f0\u62bd\u6c34\u7684\u5229\u6da6\u8fb9\u9645)\nP_market_i = q_i \/ m    # \u53bb\u8fb9\u9645\u5f52\u4e00\u5316\uff0c\u4f7f sum=1<\/pre>\n    <p>\u628a\u5e84\u5bb6\u8d54\u7387\u53cd\u63a8\u7684\u9690\u542b\u6982\u7387\u5408\u8ba1\u4f1a &gt;100%\uff08\u591a\u51fa\u6765\u7684\u662f\u5e73\u53f0\u62bd\u7684\u6c34\u94b1\/overround\uff09\uff0c\u6309\u6bd4\u4f8b\u6324\u6389\u8ba9\u6982\u7387\u5408\u8ba1\u56de\u5230 100%\u3002\u9ed8\u8ba4\u7ed3\u679c\uff1a\u6cd5 0.424 \/ \u897f 0.137 \/ \u5df4 0.111 \/ \u963f 0.181 \/ \u82f1 0.147\u3002<\/p>\n\n    <h4>\u8def\u5f84 B \u2014 \u6a21\u578b\u53e3\u5f84 P_model\uff08\u8499\u7279\u5361\u6d1b\uff09<\/h4>\n    <p>\u8dd1 20000 \u6b21\u6a21\u62df\uff0c\u6bcf\u6b21\u72ec\u7acb\uff1a<\/p>\n    <ul>\n      <li><b>\u62bd case<\/b>\uff1a<code>rng.random() &lt; 0.7<\/code> \u9009 case1,\u5426\u5219 case2\uff08\u968f\u673a\u6570\u843d\u5728\u6570\u8f74 0~0.7 \u8fd9\u6bb5\u5360 70% \u957f\u5ea6\uff0c\u81ea\u7136\u903c\u8fd1\u4f60\u7684 70%\/30% \u9884\u5224\uff09<\/li>\n      <li><b>\u91c7\u6837\u5b9e\u529b<\/b>\uff1a\u6bcf\u961f\u72ec\u7acb\u62bd <code>\u03b1 ~ Uniform(\u00b120%)<\/code>\uff0c\u771f\u5b9e\u5b9e\u529b <code>S_i = x_i\u00b7(1+\u03b1)<\/code>\u3002\u6bcf\u961f<b>\u6574\u4e2a\u8d5b\u4e8b\u5185\u56fa\u5b9a\u4e00\u6b21<\/b>\u5b9e\u529b\u91c7\u6837\uff08\u6a21\u62df&#8221;\u67d0\u961f\u672c\u6b21\u8d5b\u4e8b\u72b6\u6001\u7a33\u5b9a&#8221;\uff09<\/li>\n      <li><b>\u4e24\u573a\u534a\u51b3\u8d5b + \u603b\u51b3\u8d5b<\/b>\uff1a\u6bcf\u573a\u7528 Bradley-Terry \/ Logistic \u516c\u5f0f\u5b9a\u80dc\u8d1f\uff0c<code>rng.random() &lt; \u80dc\u7387<\/code> \u51b3\u51fa\u664b\u7ea7\u8005<\/li>\n      <li><b>\u7edf\u8ba1\u593a\u51a0\u9891\u7387 = P_model_i<\/b><\/li>\n    <\/ul>\n    <p>\u9ed8\u8ba4\u7ed3\u679c\uff1a\u6cd5 0.39 \/ \u897f 0.236 \/ \u5df4 0.049 \/ \u963f 0.218 \/ \u82f1 0.107\u3002\u6a21\u578b\u8ba4\u4e3a\u897f\u73ed\u7259\u88ab\u4f4e\u4f30\u3002<\/p>\n    <p style=\"color:var(--muted);font-size:12px\">\u7b2c(6)\u6761&#8221;\u6bcf\u5c40\u4e00\u5c40\u5b9a\u80dc\u8d1f\u3001\u4e0d\u8003\u8651\u5e73\u5c40&#8221;\u2192 Logistic \u76f4\u63a5\u5b9a\u80dc\u8d1f\uff0c\u4e0d\u5355\u5efa\u70b9\u7403\u73af\u8282\u3002<\/p>\n\n    <h4>\u80dc\u7387\u516c\u5f0f\u8be6\u89e3\uff08\u5b9e\u529b\u5dee \u2192 \u80dc\u7387\uff09<\/h4>\n    <pre class=\"formula\">P(A\u80dcB) = 1 \/ (1 + 10^((S_B \u2212 S_A)\/scale))<\/pre>\n    <p>\u4f8b\uff1a\u6cd5\u56fd\u771f\u5b9e\u5b9e\u529b 104.5 vs \u897f\u73ed\u7259 94.5\uff08\u5dee 10 \u5206\uff09\uff0cscale=20\uff1a<\/p>\n    <pre>P(\u6cd5\u80dc) = 1\/(1+10^((94.5\u2212104.5)\/20))\n    = 1\/(1+10^(\u22120.5))\n    = 1\/(1+0.316) \u2248 76%<\/pre>\n    <p>scale \u63a7\u5236&#8221;\u5b9e\u529b\u5dee\u5bf9\u80dc\u7387\u7684\u654f\u611f\u5ea6&#8221;\u3002\u4e0b\u8868\u4e3a\u540c\u4e00 10 \u5206\u5dee\u8ddd\u5728\u4e0d\u540c scale \u4e0b\u7684\u80dc\u7387\uff1a<\/p>\n    <table>\n      <thead><tr><th>\u9886\u5148\u51e0\u5206<\/th><th>(S\u5dee)\/20<\/th><th>10^\u2026<\/th><th>\u5f3a\u961f\u80dc\u7387<\/th><\/tr><\/thead>\n      <tbody>\n        <tr><td>0 \u5206(\u5e73)<\/td><td>0<\/td><td>1<\/td><td>50%<\/td><\/tr>\n        <tr><td>5 \u5206<\/td><td>\u22120.25<\/td><td>0.562<\/td><td>64%<\/td><\/tr>\n        <tr><td><b>10 \u5206<\/b><\/td><td><b>\u22120.5<\/b><\/td><td><b>0.316<\/b><\/td><td><b>76%<\/b><\/td><\/tr>\n        <tr><td>20 \u5206<\/td><td>\u22121.0<\/td><td>0.1<\/td><td>91%<\/td><\/tr>\n        <tr><td>40 \u5206<\/td><td>\u22122.0<\/td><td>0.01<\/td><td>99%<\/td><\/tr>\n      <\/tbody>\n    <\/table>\n    <p style=\"color:var(--muted);font-size:12px\">\u5dee\u8ddd\u8d8a\u5927\u5f3a\u961f\u80dc\u7387\u8d8a\u9ad8\uff0c\u4f46\u6c38\u8fdc\u5230\u4e0d\u4e86 100%\u2014\u2014Logistic \u7559\u4e86\u7206\u51b7\u4f59\u5730\uff08\u5bf9\u5e94\u8db3\u7403\u5076\u7136\u6027\uff09\u3002scale \u8d8a\u5c0f\u8d8a\u654f\u611f\u3002\u5e95\u6570\u7528 10 \u662f Elo \u7b49\u7ea7\u5206\u4f20\u7edf\u3002<\/p>\n\n    <h3>\u7b2c 2 \u5c42\uff1a\u7ebf\u6027\u610f\u89c1\u6c60\u878d\u5408<\/h3>\n    <pre class=\"formula\">P_fused_i = w1 \u00b7 P_market_i + (1\u2212w1) \u00b7 P_model_i<\/pre>\n    <p>w1=0.5 \u9ed8\u8ba4 \u2192 \u4e24\u5957\u53e3\u5f84\u7b49\u6743\u5e73\u5747\u3002<b>\u4e3a\u4ec0\u4e48\u662f\u6982\u7387\u5c42\u878d\u5408\u800c\u975e\u5b9e\u529b\u5c42\u52a0\u6743<\/b>\uff1a\u8d54\u7387\u5b9e\u529b\u548c\u7eb8\u9762\u5b9e\u529b\u91cf\u7eb2\u4e0d\u540c\uff0c\u5b9e\u529b\u5c42\u52a0\u6743\u8981\u5148\u9009\u5f52\u4e00\u5316\u6620\u5c04\uff08\u4e0d\u552f\u4e00\u3001\u5f15\u5165\u8bef\u5dee\uff09\uff1b\u6982\u7387\u5c42\u878d\u5408\u8ba9\u4e24\u6765\u6e90\u5404\u81ea\u843d\u5230&#8221;\u593a\u51a0\u6982\u7387&#8221;\u518d\u5408\uff0c\u5e72\u51c0\u4e14 w1\/w2 \u65cb\u94ae\u8bed\u4e49\u76f4\u767d\u3002<\/p>\n    <p>\u9ed8\u8ba4 w1=0.5 \u7ed3\u679c\uff1a\u6cd5 0.407 \/ \u897f 0.187 \/ \u5df4 0.080 \/ \u963f 0.200 \/ \u82f1 0.127\u3002<\/p>\n\n    <h3>\u7b2c 3 \u5c42\uff1a\u6ce8\u6570\u51b3\u7b56\uff08optimize_bets\uff09<\/h3>\n    <h4>\u7ea6\u675f<\/h4>\n    <pre>0 \u2264 n_t \u2264 50            (\u6bcf\u961f\u4e0a\u9650, \u9700\u6c42.md:59)\nsum(n_t) \u00d7 2\u5143 \u2264 500    (\u603b\u9884\u7b97\u4e0a\u9650)<\/pre>\n    <h4>\u76ee\u6807\u51fd\u6570\u4e0e\u4e00\u4e2a\u5173\u952e\u4e8b\u5b9e<\/h4>\n    <p>\u603b\u91d1\u94b1 = <code>\u5f69\u7968\u635f\u76ca + (\u4e3b\u961f\u593a\u51a0 ? +2000 : 0)<\/code><\/p>\n    <p><b>\u6700\u91cd\u8981\u7684\u8ba4\u77e5<\/b>\uff1a\u90a3 +2000 \u662f<b>\u6309\u4e8b\u4ef6\u7ed9\u3001\u4e0e\u4e0b\u6ce8\u65e0\u5173<\/b>\u7684\u5e38\u6570\u9879\uff08\u4f60\u5929\u7136\u6301\u6709\uff09\u3002\u6240\u4ee5\u4ece&#8221;\u6700\u5927\u5316\u671f\u671b&#8221;\u7684\u6570\u5b66\u770b\uff0c\u5b83\u4e0d\u6539\u53d8\u6ce8\u6570\u51b3\u7b56\u2014\u2014<\/p>\n    <p><b>\u6700\u5927\u5316\u671f\u671b \u27fa \u6700\u5927\u5316\u5f69\u7968\u671f\u671b\u635f\u76ca<\/b><\/p>\n    <h4>\u5355\u6ce8 EV\uff08\u6bcf\u6ce8\u671f\u671b\u51c0\u6536\u76ca\uff09<\/h4>\n    <pre class=\"formula\">EV_t = 2 \u00d7 (odds_t \u00d7 P_t \u2212 1)      # \u5143\/\u6ce8<\/pre>\n    <p>\u9ed8\u8ba4\uff1a\u897f\u73ed\u7259 +0.71\uff08\u552f\u4e00\u6b63\uff09\u3001\u963f\u6839\u5ef7 +0.196\u3001\u6cd5\u56fd \u22120.089\u3001\u5df4\u897f \u22120.567\u3001\u82f1\u683c\u5170 \u22120.282\u3002<\/p>\n    <h4>\u8d2a\u5fc3\u5206\u914d + \u7b56\u7565\u5f00\u5173<\/h4>\n    <pre class=\"formula\">eligible = TEAMS \u53bb\u6389 (hedge \u6a21\u5f0f\u4e0b\u7684\u963f\u6839\u5ef7)\norder    = eligible \u6309 EV \u964d\u5e8f\nfor t in order:\n    if \u5269\u4f59\u989d\u5ea6 \u2264 0 or EV_t \u2264 0: break\n    n_t = min(50, \u5269\u4f59\u989d\u5ea6)\n    \u5269\u4f59 -= n_t<\/pre>\n    <p>\u4e24\u5957\u7b56\u7565\u533a\u522b\u53ea\u5728 <code>eligible<\/code> \u4e00\u884c\uff1a<\/p>\n    <ul>\n      <li><b>ev<\/b>\uff1a\u542b\u4e3b\u961f \u2192 \u897f\u73ed\u7259 50 + \u963f\u6839\u5ef7 50\uff08\u6295\u5165 200 \u5143\uff09<\/li>\n      <li><b>hedge<\/b>\uff1a\u5254\u9664\u4e3b\u961f \u2192 \u897f\u73ed\u7259 50\uff08\u6295\u5165 100 \u5143\uff09\uff0c\u4e0d\u62bc\u4e3b\u961f<\/li>\n    <\/ul>\n    <p>\u4e3a\u4ec0\u4e48 hedge \u5254\u9664\u4e3b\u961f\uff1a\u5f69\u7968<b>\u4e0d\u80fd\u505a\u7a7a\u4e3b\u961f<\/b>\uff0c\u771f\u6b63\u7684\u5bf9\u51b2\u9760&#8221;\u4e0d\u52a0\u6760\u6746&#8221;\u2014\u2014\u4e0d\u62bc\u4e3b\u961f\uff08\u907f\u514d\u540c\u5411\u52a0\u6760\u6746\uff09\uff0c\u628a\u6ce8\u5206\u6563\u5230\u5176\u4ed6\u6b63 EV \u7684\u975e\u963f\u961f\u3002<\/p>\n\n    <h3>\u7b2c 4 \u5c42\uff1a\u671f\u671b\u7edf\u8ba1\u4e0e\u5206\u5e03\u6a21\u62df<\/h3>\n    <h4>\u6bcf\u4e2a\u4e16\u754c\u7ebf\uff08\u8c01\u593a\u51a0\uff09\u7684\u786e\u5b9a\u6536\u5165<\/h4>\n    <pre class=\"formula\">payoff_by_champ[t] = n_t \u00d7 2 \u00d7 (odds_t \u2212 1)       # \u8d62\u961f\u51c0\u6536\u76ca(\u8d54\u4ed8\u51cf\u672c\u91d1)\n               \u2212 sum_{s\u2260t}( n_s \u00d7 2 )         # \u5176\u4ed6\u961f\u672c\u91d1\u5168\u4e8f<\/pre>\n    <p>\u8fd9\u662f\u786e\u5b9a\u6027\u7684\u2014\u2014\u51a0\u519b\u5b9a\u4e86\uff0c\u5f69\u7968\u6536\u5165\u5c31\u5b9a\u4e86\u3002<\/p>\n    <h4>\u603b\u91d1\u94b1 = \u5f69\u7968 + \u4e8b\u4ef6\u5956\u91d1<\/h4>\n    <pre class=\"formula\">total_money[t] = payoff_by_champ[t] + (t==\"\u963f\u6839\u5ef7\" ? +2000 : 0)<\/pre>\n    <h4>\u8499\u7279\u5361\u6d1b\u62bd\u6837\u51a0\u519b\u6a21\u62df\u5206\u5e03<\/h4>\n    <p>\u7528\u878d\u5408\u6982\u7387 P \u62bd\u6837 20000 \u6b21\u51a0\u519b\uff0c\u6c47\u603b\u6210\u5206\u5e03\u76f4\u65b9\u56fe\uff0c\u7b97\u7edf\u8ba1\u91cf\uff08\u671f\u671b\u3001\u4e2d\u4f4d\u6570\u30015%\/95% \u5206\u4f4d\u3001\u4e8f\u635f\u6982\u7387\uff09\u3002<\/p>\n\n    <h3>\u7b2c 5 \u5c42\uff1a\u53cc\u7b56\u7565\u5bf9\u7167\uff08\u6838\u5fc3\u4ea4\u4ed8\uff09<\/h3>\n    <table>\n      <thead><tr><th>\u8c01\u593a\u51a0<\/th><th>\u6982\u7387<\/th><th>hedge \u603b\u94b1<\/th><th>ev \u603b\u94b1<\/th><\/tr><\/thead>\n      <tbody>\n        <tr><td>\u6cd5\u56fd<\/td><td>40.7%<\/td><td>\u2212100<\/td><td>\u2212200<\/td><\/tr>\n        <tr><td>\u897f\u73ed\u7259<\/td><td>18.7%<\/td><td><b>+625<\/b><\/td><td>+525<\/td><\/tr>\n        <tr><td>\u5df4\u897f<\/td><td>8.0%<\/td><td>\u2212100<\/td><td>\u2212200<\/td><\/tr>\n        <tr><td>\u963f\u6839\u5ef7<\/td><td>20.0%<\/td><td>+1900<\/td><td>+2350<\/td><\/tr>\n        <tr><td>\u82f1\u683c\u5170<\/td><td>12.7%<\/td><td>\u2212100<\/td><td>\u2212200<\/td><\/tr>\n        <tr><td><b>\u671f\u671b<\/b><\/td><td><\/td><td><b>+435<\/b><\/td><td><b>+445<\/b><\/td><\/tr>\n      <\/tbody>\n    <\/table>\n    <p><b>\u5bf9\u51b2\u80dc\u8d1f\u5173\u7cfb<\/b>\uff1a80% \u7684\u4e16\u754c\u7ebf\uff08\u975e\u4e3b\u961f\u593a\u51a0\uff09\u91cc hedge \u2265 ev\uff1b\u4ec5\u4e3b\u961f\u593a\u51a0\u90a3 20%\uff0cev \u591a\u8d5a 350\u3002\u4ee3\u4ef7\u4ec5\u727a\u7272 10 \u5143\u671f\u671b\u603b\u91d1\u94b1\uff08445\u2192435\uff09\u3002\u8fd9\u662f\u673a\u5236\u5141\u8bb8\u4e0b&#8221;\u7528\u6781\u5c0f\u671f\u671b\u4ee3\u4ef7\u6362\u7edd\u5927\u591a\u6570\u843d\u8d25\u573a\u666f\u5c11\u4e8f&#8221;\u7684\u6700\u4f18\u5bf9\u51b2\u3002<\/p>\n\n    <h3>\u6d4f\u89c8\u5668\u7aef\u5b9e\u65f6\u91cd\u7b97<\/h3>\n    <p>\u672c\u9875\u5185\u5d4c\u4e00\u4efd\u7b49\u4ef7 JS \u5f15\u64ce\uff08LCG \u4f2a\u968f\u673a\u66ff\u4ee3 numpy\uff09\uff0c\u62d6\u65cb\u94ae\u65f6\u6d4f\u89c8\u5668\u7aef\u4e0d\u8fde\u670d\u52a1\u5668\u5373\u53ef\u91cd\u7b97\u3002\u4e0e Python \u5f15\u64ce\u4e00\u81f4\u6027\u6821\u9a8c\uff1a\u6982\u7387\u5dee &lt; 0.007\uff08\u7eaf\u968f\u673a\u566a\u58f0\uff09\u3002JS \u7aef\u7528\u8f83\u5c0f N\uff08\u8499\u7279\u5361\u6d1b 3k\u3001\u5206\u5e03\u6a21\u62df 6k\uff09\u4fdd\u6d41\u7545\uff1b\u9996\u5c4f\u5feb\u7167\u7528 Python \u9ad8 N\uff0820k\uff09\u6ce8\u5165\u4fdd\u51c6\u786e\u3002<\/p>\n\n    <h3>\u4e24\u4e2a\u53ef\u8d28\u7591\u7684\u5efa\u6a21\u5047\u8bbe<\/h3>\n    <ul>\n      <li><b>Logistic scale=20<\/b>\uff08\u654f\u611f\u5ea6\u53c2\u6570\uff0c\u9700\u6c42.md \u672a\u7ed9\u6570\u503c\uff09\u2014\u2014\u51b3\u5b9a\u5b9e\u529b\u5dee\u5bf9\u80dc\u7387\u7684\u654f\u611f\u5ea6\u3002scale \u8d8a\u5c0f\u8d8a\u654f\u611f\u3002\u53ef\u5728\u53f3\u4fa7\/\u4e0a\u65b9\u65cb\u94ae\u62d6\u52a8\u89c2\u5bdf\u3002<\/li>\n      <li><b>\u6bcf\u961f\u8d5b\u4e8b\u5185\u56fa\u5b9a\u4e00\u6b21\u5b9e\u529b\u91c7\u6837<\/b>\uff08\u800c\u975e\u6bcf\u573a\u72ec\u7acb\u91c7\u6837\uff09\u2014\u2014\u6a21\u62df&#8221;\u67d0\u961f\u72b6\u6001\u7a33\u5b9a&#8221;\uff0c\u8ba9\u5f3a\u961f\u4e24\u573a\u8868\u73b0\u76f8\u5173\u3001\u964d\u4f4e\u7206\u51b7\u6982\u7387\u3002<\/li>\n    <\/ul>\n      <\/details>\n\n  <div class=\"grid\">\n    <!-- \u63a7\u5236\u9762\u677f -->\n    <div class=\"panel\" id=\"controls\">\n      <h2>\u8c03\u6574\u9762\u677f<\/h2>\n      <div class=\"section-title\">\u4e3b\u961f\uff08\u593a\u51a0\u5f97\u5feb\u4e50\u503c y\uff09<\/div>\n      <div class=\"fav-toggle-grid\" id=\"favToggle\"><\/div>\n      <div class=\"section-title\">\u57fa\u672c\u53d8\u91cf<\/div>\n      <div id=\"basicCtrls\"><\/div>\n      <div class=\"section-title\">\u5404\u961f\u7eb8\u9762\u5b9e\u529b\uff08\u6ee1\u5206100\uff09<\/div>\n      <div id=\"teamCtrls\"><\/div>\n      <div class=\"section-title\">\u878d\u5408\u6743\u91cd w1\uff08\u8d54\u7387\uff09\/ w2\uff08\u7eb8\u9762+\u6ce2\u52a8\uff09<\/div>\n      <div class=\"ctrl\"><label>w1 <span class=\"val\" id=\"w1v\">0.50<\/span><\/label><input type=\"range\" id=\"w1\" min=\"0\" max=\"1\" step=\"0.05\"><\/div>\n      <div class=\"section-title\">\u56db\u5f3a\u5bf9\u9635\u7ed3\u6784\u6982\u7387<\/div>\n      <div class=\"ctrl\">\n        <label>\u82f1\u963f\u534a\u533a\uff08\u6cd5\u897f\u00b7\u82f1\u963f\u56db\u5f3a\uff09<span class=\"val\" id=\"cv\">0.70<\/span><\/label>\n        <input type=\"range\" id=\"case1\" min=\"0\" max=\"1\" step=\"0.05\">\n        <div class=\"ctrl-hint\" id=\"caseHint\"><\/div>\n      <\/div>\n      <div class=\"section-title\">\u6295\u6ce8\u7b56\u7565<\/div>\n      <div class=\"toggle\" style=\"margin-bottom:6px\">\n        <button id=\"stratHedge\" class=\"on\">\u5bf9\u51b2\uff08\u4e0d\u62bc\u4e3b\u961f\uff09<\/button>\n        <button id=\"stratEv\">\u671f\u671b\u6700\u4f18<\/button>\n      <\/div>\n      <div class=\"recompute\" id=\"stratDesc\" style=\"text-align:left;margin-top:0;margin-bottom:12px\"><\/div>\n      <div class=\"section-title\">\u5404\u961f\u593a\u51a0\u8d54\u7387\uff08\u53ea\u8bfb\uff09<\/div>\n      <div class=\"odds-list\" id=\"oddsList\"><\/div>\n      <div class=\"recompute\" id=\"rc\">\u6d4f\u89c8\u5668\u7aef\u5b9e\u65f6\u91cd\u7b97 \u00b7 \u8499\u7279\u5361\u6d1b 3k \u6b21<\/div>\n    <\/div>\n\n    <!-- \u7ed3\u679c\u533a -->\n    <div>\n      <div class=\"stats\" id=\"statsRow\"><\/div>\n      <div class=\"note\" id=\"moneyHint\" style=\"margin-bottom:20px\"><\/div>\n\n      <div class=\"chart-block\">\n        <h2>\u593a\u51a0\u6982\u7387\uff1a\u5e02\u573a vs \u6a21\u578b vs \u878d\u5408<\/h2>\n        <div class=\"desc\">\u4e09\u5957\u53e3\u5f84\u7684\u593a\u51a0\u6982\u7387\u5206\u5e03\uff0c\u878d\u5408\u503c\u7528\u4e8e\u9a71\u52a8\u6295\u6ce8\u4f18\u5316\u3002<\/div>\n        <canvas id=\"probChart\" height=\"180\"><\/canvas>\n      <\/div>\n\n      <div class=\"chart-block\">\n        <h2>\u4e3b\u961f\u664b\u7ea7\u4e4b\u8def<\/h2>\n        <div class=\"desc\" id=\"bracketDesc\">\u9ad8\u4eae\u8def\u5f84\u4e3a\u4e3b\u961f\u5728\u56db\u5f3a\u8d5b\u4e2d\u7684\u664b\u7ea7\u8f68\u8ff9\uff08\u534a\u51b3\u8d5b \u2192 \u603b\u51b3\u8d5b \u2192 \u593a\u51a0\uff09\uff0c\u865a\u7ebf\u6d41\u52a8\u8868\u793a\u8fdb\u884c\u4e2d\u3002<\/div>\n        <svg class=\"bracket\" id=\"bracketSvg\" viewBox=\"0 0 760 220\" preserveAspectRatio=\"xMidYMid meet\"><\/svg>\n      <\/div>\n\n      <div class=\"chart-block\">\n        <h2>\u6700\u4f18\u6295\u6ce8\u5206\u914d<\/h2>\n        <div class=\"desc\">\u5728\u300c\u603b\u6295\u5165 \u2264 \u9884\u7b97\u3001\u6bcf\u961f \u2264 50 \u6ce8\u300d\u7ea6\u675f\u4e0b\uff0c\u6309\u671f\u671b\u8fb9\u9645\u8d2a\u5fc3\u5206\u914d\u6ce8\u6570\u3002<\/div>\n        <table id=\"betTable\"><\/table>\n      <\/div>\n\n      <div class=\"chart-block\">\n        <h2>\u6536\u76ca \/ \u6548\u7528\u5206\u5e03<\/h2>\n        <div class=\"desc\">\u8499\u7279\u5361\u6d1b\u6a21\u62df\u7684\u6700\u7ec8\u6548\u7528\u5206\u5e03\u3002\u4e3b\u961f\u593a\u51a0\u4e16\u754c\u7ebf\uff08+\u5feb\u4e50 y\uff09\u4e0e\u672a\u593a\u51a0\u4e16\u754c\u7ebf\uff08+\u75db\u82e6 pain_y\uff09\u4f1a\u5206\u88c2\u6210\u4e24\u4e2a\u6e05\u6670\u7684\u5cf0\/\u5e26\u2014\u2014\u62d6\u52a8\u75db\u82e6\u503c\u53ef\u770b\u5bf9\u51b2\u7f3a\u53e3\u3002<\/div>\n        <div class=\"toggle\">\n          <button id=\"tMoney\" class=\"on\">\u603b\u91d1\u94b1\uff08\u5f69\u7968+\u593a\u51a0\u60c5\u7eea\u4ef7\u503c\u5bf9\u7b49\u5feb\u4e50\u503c\uff09<\/button>\n          <button id=\"tLot\">\u7eaf\u5f69\u7968\u635f\u76ca<\/button>\n        <\/div>\n        <canvas id=\"distChart\" height=\"200\"><\/canvas>\n        <div class=\"recompute\" id=\"distStats\"><\/div>\n      <\/div>\n\n      <div class=\"note\">\n        <b>\u5982\u4f55\u8bfb\u300c\u5355\u6ce8 EV\u300d(\u907f\u514d\u8bef\u8bfb)\uff1a<\/b>EV = \u5355\u6ce8\u91d1\u989d \u00d7 (\u8d54\u7387 \u00d7 \u878d\u5408\u6982\u7387 \u2212 1)\u3002<br>\n        <b>\u6cd5\u56fd EV \u4e3a\u8d1f\uff0c\u4e0d\u662f\u56e0\u4e3a\u6a21\u578b\u770b\u7a7a\u6cd5\u56fd<\/b>\u2014\u2014\u6070\u6070\u76f8\u53cd\uff0c\u6a21\u578b\u4ecd\u8ba4\u4e3a\u6cd5\u56fd\u662f\u7b2c\u4e00\u70ed\u95e8\n        (model 0.39 = \u4e94\u961f\u6700\u9ad8\uff0c\u4e0e\u7eb8\u9762 95 \u5206\u7b2c\u4e00\u4e00\u81f4)\uff0c\u4e0e\u5e02\u573a(0.42)\u7684\u76f8\u5bf9\u5206\u6b67\u4ec5 \u22128%\uff0c\n        \u662f\u4e94\u961f\u91cc<b>\u6700\u5c0f<\/b>\u7684\u5206\u6b67\u3002\u8d1f EV \u7684\u771f\u6b63\u539f\u56e0\u662f\uff1a<b>\u6700\u5927\u70ed\u95e8\u7684\u8d54\u7387\u88ab\u5e02\u573a\u538b\u5230\u65e0\u5229\u53ef\u56fe<\/b>\n        (\u5e73\u53f0\u62bd\u6c34 + \u5df2\u5145\u5206\u5b9a\u4ef7,\u7eaf\u5e02\u573a\u53e3\u5f84\u4e0b\u6cd5\u56fd EV \u5df2 \u2248 0)\u3002<br>\n        \u771f\u6b63\u6709 alpha \u7684\u662f<b>\u897f\u73ed\u7259 +0.71<\/b>\uff1a\u6a21\u578b\u8ba4\u4e3a\u5b83\u88ab\u5e02\u573a\u4f4e\u4f30\u7ea6 72% (model 0.24 vs market 0.14)\u3002\n        \u6a21\u578b\u5bf9\u4e94\u961f\u7684\u76f8\u5bf9\u504f\u79bb\u4e3a\uff1a\u897f\u73ed\u7259 +72% &gt; \u963f\u6839\u5ef7 +21% &gt; \u6cd5\u56fd \u22128% &gt; \u82f1\u683c\u5170 \u221227% &gt; \u5df4\u897f \u221256%\u3002\n        <span style=\"color:var(--muted)\">\u6ce8\uff1a\u6982\u7387\u603b\u548c\u987b\u5f52\u4e00\uff0c\u6a21\u578b\u62ac\u9ad8\u897f\/\u963f\u5fc5\u7136\u4ece\u6cd5\/\u5df4\/\u82f1\u6263\u51cf,\u6cd5\u56fd 8% \u5fae\u8c03\u4e3b\u8981\u6e90\u4e8e\u6b64\u3002<\/span>\n      <\/div>\n      <div class=\"note\" style=\"margin-top:14px\">\n        <b>\u5173\u4e8e\u300c\u5bf9\u51b2\u300d\u4e0e total \u91d1\u94b1\u53e3\u5f84\uff1a<\/b>\u4e3b\u961f\u593a\u51a0\u5956\u91d1 joy_y \u89c6\u4e3a<b>\u771f\u5b9e\u91d1\u94b1<\/b>(\u593a\u51a0\u5373\u5f97,+2000),\n        \u672a\u593a\u51a0\u65e0\u635f\u5931\u538c\u6076(pain_y=0)\u3002\u603b\u91d1\u94b1 = \u5f69\u7968\u635f\u76ca + (\u4e3b\u961f\u593a\u51a0 ? +2000 : 0)\u3002<br>\n        \u7531\u4e8e\u5f69\u7968<b>\u4e0d\u80fd\u505a\u7a7a\u4e3b\u961f<\/b>(\u53ea\u80fd\u62bc\u67d0\u961f\u8d62),joy_y \u9879\u5728\u671f\u671b\u91cc\u662f\u5e38\u6570(\u6309\u4e8b\u4ef6\u7ed9,\u4e0e\u4e0b\u6ce8\u65e0\u5173),\n        \u4e0d\u6539\u53d8&#8221;\u6700\u5927\u5316\u671f\u671b&#8221;\u6307\u5411\u7684\u961f\u2014\u2014\u4f46<b>\u62bc\u4e3b\u961f\u7b49\u4e8e\u5728\u5929\u7136+2000\u591a\u5934\u5934\u5bf8\u4e0a\u540c\u5411\u52a0\u6760\u6746<\/b>\u3002\n        \u6545\u300c\u5bf9\u51b2\u7b56\u7565\u300d= \u4e0d\u62bc\u4e3b\u961f,\u907f\u514d\u540c\u5411\u53e0\u52a0,\u8ba9\u6ce8\u6570\u5206\u6563\u5230\u5176\u4ed6\u6b63 EV \u961f,\u5728\u4e3b\u961f\u843d\u8d25\u65f6\n        \u4ecd\u6709\u5f69\u7968\u6536\u76ca\u8865\u507f(\u5206\u5e03\u56fe\u5de6\u4fa7\u7ea2\u5e26\u4f1a\u53d8\u6d45)\u3002\u4ee3\u4ef7\u662f\u727a\u7272\u5c11\u91cf\u671f\u671b\u603b\u91d1\u94b1\u3002\n        \u7528\u300c\u6295\u6ce8\u7b56\u7565\u300d\u5f00\u5173\u5bf9\u7167\u4e24\u79cd\u65b9\u6848\u7684\u603b\u91d1\u94b1\u5206\u5e03\u4e0e\u4e8f\u635f\u6982\u7387\u3002\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\n<script>\nconst DATA = {\"teams\": [\"\u6cd5\u56fd\", \"\u897f\u73ed\u7259\", \"\u5df4\u897f\", \"\u963f\u6839\u5ef7\", \"\u82f1\u683c\u5170\"], \"odds\": {\"\u6cd5\u56fd\": 2.35, \"\u897f\u73ed\u7259\": 7.25, \"\u5df4\u897f\": 9.0, \"\u963f\u6839\u5ef7\": 5.5, \"\u82f1\u683c\u5170\": 6.75}, \"semis\": {\"1\": {\"upper\": [\"\u6cd5\u56fd\", \"\u897f\u73ed\u7259\"], \"lower\": [\"\u82f1\u683c\u5170\", \"\u963f\u6839\u5ef7\"]}, \"2\": {\"upper\": [\"\u6cd5\u56fd\", \"\u897f\u73ed\u7259\"], \"lower\": [\"\u5df4\u897f\", \"\u963f\u6839\u5ef7\"]}}, \"flags\": {\"\u6cd5\u56fd\": \"data:image\/webp;base64,UklGRpAAAABXRUJQVlA4TIMAAAAv+YApEE+gppEUyMM9tFhAAP61UGPgbKiKbIO63p+6iCGkGmKIxEwDJBn4+UA97Z\/IFA4jAZAwhA2sYSaPqCYPGI18HjcIkqr1tG6n2kFJMb\/Py1soiiSpOQt3BAFJARbwhAAsoDp+J6L\/E9D2nbJv1H3xH\/7Df\/gP\/\/1K33eNfWvaFwA=\", \"\u897f\u73ed\u7259\": \"data:image\/webp;base64,UklGRqYVAABXRUJQVlA4TJoVAAAv+YApEOpQ27YNI\/1\/uVPXiBCbJNjeH5zHOvzGqjx5mMJutm2rJDmnmbGmmWkYepqrsZqmeaq6upixubu6aph5moaZmbl7GKzNTHVOVwvrWKuJRBiBZMukCDATViDjiaUMFMfxxWAvxjCuIlAMm4MYgiBPrgJQInIxB87i8yRbMW0KsnQpBApgNwcpA\/QUh3xdCuFXGPKYLFlMyUgBrC9mmCTWWhNDUBwUgfy1JoqFJMSSRZ6uyxsAAGSbbdu20+dl2\/Yv+zptDRdOHHYxb1XShm3TqAzKFGlTa7a9HrZt+x+Fa9vOSLL+J\/mSfEmqgqo4lQoqValqG+O21ra9Y9u2jeoaW\/135EaSIjmWsY6DH3ATAACapFiU7XJ3dx\/u7m6fJyLjPvr371+A\/v37F6AcbZ0IAEA4Z9\/N7Gq2bdtOdvK62tK+sG\/sUUtsI0lScynIVEQKg1nWo8VMSX\/1P73yHol31H9H\/XdqRMpvWODvP\/yAsHAO4+JouwzSNiGJsRKWLYO0LZiQR3DykUcgazvO0AE\/2qhYN2jonCJl7Zdyuy+Lhx4w88eUal1co0uq2tpQ+yWp\/WLuyGOQq8MPsWV1cuXIzJaVsVXjKzcujW5ZXTEW+1Tyxk\/L+2eWD01vmJ1eNT6+dmrl1tqy9nM+Sdp\/h9l5Mth5NGs7FbafLS3pnZ+kyLUkRkcxKYN6BqOCUjWW06HRSKGoYzE8gKkFGLwY4pOWDi\/buNqz+2yp7VS867S\/75p64C5DcnZd5LfXpleNzC3sG5xT7lzY1z87t1zSLcwexwmE0MxRVGNkODE0KoL9t4EQ2n4OOhdGe\/oXVsbm9tTn99cXDNa3LE\/vPjy2\/zZLZjbuqS8fnB7C8cNETO\/Hd5qKsg4aau0FYYrV+1BrFce7xsbEQRhgz3XIuoUJ\/MicCcwawZQC\/jQhIW5d+HDvJY+8tB8eHRdMq+3YcAwIoY1746FMtnQFRntvY8ZhQV+hBoc3N\/aTiiCth4RNF1mEENKiaJFWIYTOaa5CquO31ab3XpPIyr5ryqrpIYkOf0RG65Y7BtlrM0ew\/Qqjr+WTBxznQgXrrQcL7ljnyOGpFtMigFWp1rNaEs\/oS05yB+6hHMUUYYow2AQFlbi0Y98wWWk7HTTni49HaMlJXjGv5Y1ZiUWnzjqf18m7B8sAAN3d5lCiu9H5iwAgWLUOAMfokCLQG+rgQvqgzZstTtwrHnwAtHQZWgQbFkfIyq5j7Y05WQ1h1lEhutezqGQAkJL4oKgrcUrEOKxQy1blq9BcEGkBAECsRRXhHwMAeBei2iXlQ+UY1s6NkJW9pztbS4YcI6FuBwAArOW0xCz4ki4AHMN66mUkHRNCFO9g5QwArFNpLKLGkrpFMQMA+FxhN\/+4DXOTZGXvNWHtxDyzm\/OIhAQhXndUAOlONYi0PwcBjCvA+X6AGgIZhQ4pG5Ickgk4+kMfr1\/vYmUkZ5mvEeZhmMTBnNS+fxqRVe37J+SkFG3T7ZQUK2UAvoRTQkk0xPnNO+Mtil98KI1URojohei29kDvZZUuroc79AhmUpwM42FvL\/UGtHRQtspV4dYQ6HaLrOLi3rG91yhp2XYOjSU0cGwMrhXjYn9Kx\/K1VKtSw7JBsBkOGzF04dnl0v+WcurD+05iWMTKdomEJgbF8pc909N+Lq+31wwwGnQ4r3Jyz\/MMlbOIXBqtch10kMjOGQUisWqzQiRQ0LuZHmZdm97glOp0jMSBosdmpQtfVOKQ+jBFNyFg2PMlKI3w2B5CwKKkCKcNPmJJYBeOPZGT\/iNMWlpi4KtINk0ntl8FIjNtNxhOOJcBye+LdqZJpB7MuQU2KYwwGXoxq1vsjeipaH4gThNxpZezmItJhZj05jQol94mJiP5\/jY9gdZDOJcJW5a5rEugXAZyw2ZEREIO3GMmyQoy0dQqI4RJAUijIa0AlvKNQlEnx0N5vpUT4pwUIwqMlOm5Uj3hAURmJWKME2AcD+dZIJ\/fJeSDNBuVo0GVA\/EVJLvpOJAJ88ZBFvbdxqS9YlmvWbKpXbNL33gKqGMrd0MKsgorUVgEPeEPsgmq3za4P01HisxYZrLBy0Z67EjeSaPU8UI6Uews36CLf9LQvFkaGUClOZSjrNxKqgk8AHVw5CG792pu52mj5L369hPW\/pvSN8lA8ynJK1bOxWQPKSyBxMigG4+pudM26lhVgcbo86MFqSnSbWCgMXANLAxuvOJPOgZ1FF5RT0HvwjU1dqYcJCMETAkMVNAk0qS3Xwfq4MBNefasaShG4nFdamLFE\/obFsw7h+4KJEAxqrjHkpQumQ3LmR0Sp4uGMV5i2DDh8CNUWlFtQ+kOhmdgCzo4+g4a3Z4L3pAPgkwf1HajvDDJC5e8uKiZHdM5iXy5JIhhVgkyehZjk0AdbTsth7qcXlDBnwv6AXl\/V6mHzcjhC\/uuiyTgMQWEwt0uSo02w5CTt1hsQBoyIJqw\/y5GRcBUM5lbuci3BZd\/ytgrGrbJwj4xMTLEvDEWruDLTTaZNCrq5sd1sVvQoMycCSATKSNU1ipVAlZBJ600WJIOcXBRIIUtXmtOscVtNMam9fSZmajSEOAP3IXRA3I7+TyQEso10WQ1TdxK+6+l3RppVD0Ne5eGv09D3xdj33Qy6+PM+ii7McptjIo+DMs2hbztobQt1IIhsUFu0+jIYzxZZORzdGI6qZaAUjnB778DMjB9EIOc+JSBxaWf+lQdCaNDD+DWZUFnjRf+aa+87yydecxo0RwuJVTnwPazIAHfGRsBoaEcrkOzvXtWxi+ZsHgRFxN6+NazIAG7LkEJonQbjJVux4whIITOIbJ3lwu3MCw1E7de6My24ushzEcVhr754iFqW+HVcvkBwd4bqKXxeWOsbRgWwjlk8PRP5QiMlcNYuRs4t04LABwikYO37GrzsjaRoo3orsm50L6DPyRakW6uyrZy7J9tyT2vj+2cLF6UTt0rKp2p8M7VgqNLIpcksZPTsosEaEIKOgZ4N0FkYOlk26LUv7\/61RjHV9Olz1FHcS2STA+lCakbiKgDRSpWbcbA7QxRY\/TUwPjmoX1NakhyfzH3ozR8QHTo5ZWL5GZr\/r5gbnFhvEm0brdpnLNV\/OXyTccEUrB6cgVFUVPwo8sTx0xwd\/v565jsHVyCSuRqENWu8JoRqcoRVQc2soPb5QsPWjNNaoZ0S7Tz8ZX8yTtLk\/cnVVqG6h2KaN3OkKKoZcE75687IJOMB+B6GVTWDmSuJ6lrCEeD2LWCGkTsGsGD8Igvb8o8EypnhXue8ORT4qGbV17Jn1+ck2yOlK\/tLL4hP6UasNUoU+MFPC0Gu8BRoYFGty6lw0dmpZrVI03OUos5fqNs7h5v50N1+NTW\/MuR8Stt5Xfkh9eGegeqrbhlJQKDCxUwdDS6tStEKs\/qddmn45Vb\/NpDzuIic+w6q+\/S7Nhdalr+\/uxMi9ScwPm3FLhqPEPQDvZ2iNvB2oqMNayVkhLVBw8Kdj7iz9xTJs\/V5a9feWVLtkktUx6O7GuRkumhi3r\/rjzkS5brc82EopuVRy1JSw6TE24dJgB4W2xVlyZsWlJrwwu1Jsp\/byxfxQJRJbeJLWxYlXr46K2FV7W9t0UHXyhmWutyz+alWsP6W0YH72PYsiSc0AuGjAQlSpE+ypa+UEZWT\/WcIAeNq0JypC0s0OdZSDwqlb55L7IYuFUrPQq+fU\/NopQFJgOnNhMAvBFbqSmz\/v61nsFXNTqd9fu\/iltY6PDyZOkERU3M36uq3CwbvCo88EK0+KC8emNZ\/ilFMbVTVrFKn7xn3ZMFlcLkrOVQrTLShk85DlMC73C1j+IvPMGbfStPkX4ZJzZj56aLXuUkPWPCQEXrXih9mJnSHKtVAIdWCwC8EEsLQdaNSgwPfpPCiAIVC4D11C29cS46NlU8QeHJC5dFe55yei8L9j2rH2xSxgo0M9Cz4Bcqul21lq8UoCBdAF4yn6cUwDqd9sk4F5p32y6zXpkI\/h+Tc+G8LqXEW4oDxHpIzI9I+jY9NSJv1P53PYHnVyC49Pb3BkshtmRDrJQBplS96I5G6TTVFDzFFP5vcB6tGF+cVL5\/ZdXo4vbiawLol3Ut4mnvsO0VDrsnPedqel58zvEtxyWKRisn4Ypv3q07y9rmq\/CuXolStvhVjX\/rzOCl8dCB16IdFzF3L2mYlbN6TMdWC6D3ZrFkG3OjG8nVrqBpoAqDxoy392jJW8ipdbQ9\/J8\/9frVOv\/3PsYqma2\/2hI9l2f\/UjbVFMw0RRN3VuSfSEPHJLXHYyqLRkz1dO+SVz6jzNrPP\/lH1Br5\/uDQ7nhhJjDc8M2ExSndoadKS4XIvJdase2TlYCony+1mfgaugtAupavd2CQC0\/gvDaf+Znzeidur7axVv7YkR1MfO54Tt2rk9l1L\/t+bRNWaHgxnRSL\/GlX6e165cnq\/ANldJdsrrU884jq5GuRfjfC71hU62VjBTNv9KJoH47BL5Hh9Pzf3qlQPKYRxW8QOGoIWiHuQuG\/xumf36a1gN+KYKAI\/b67lf\/2dPaTT08W\/eBA6e\/\/DXn5OyxXGyTsoihqiXxHK+7nDV47l+ihiVXHXygTWErJD9z4UvtNmHlvoYWDH\/jLNVwF9wt4IM4JnImsfJEt2z3gezvVLeHA363OefKJ8P0J+ZrBpC\/t+EGcd4oy1iydMwi7zyYyjEnWXGQfrxD9K7vXROa+I48welVUZ3pwSuaHLj7\/fauOsQi5tJqmWHoinzVzRb\/cWAVorBc+yH76gXhDQ6mKMr941CpQD+YGOtkWpJ1WnDMJDfMJSjPFBcd5klh2bCu\/YwHf+4T6AKbv5REKfJH22ZGjgRX\/FpfeLYdrDZol7abRP+LVWqK1la3cUdA7X2c\/vSjbHub9aDPrD7+xXljgfTCcWffQlu50YlOGecZEcR9mCPFGC3AsXlholS6Qx7LjcZ2wo2tg1Q8Auub8HdcYhOj1pJJisWIW4bIvTqVUKHJIF9O8JSeu\/EbPHavekVP3MvcbBzWaNPdzN39Gf\/L8i71Yn+43XJWkyJNzVirJ\/iLfLfvIYUjEz3fnsZ5GlLaK0NQ91KmQAljnGgzhi+H0HnKw5xYEUldQaBQAfpBWNLdeZlEnAl0OVmwkPn\/8pKh+zECo7D\/+cbLPDzdBGFjkdpNyB5tI6xqClOm4QlgSmImWJBluLUj0jdC0\/YK\/nACAZbHR2zOhr6oksJVfO6b4pssAAJ5ij8L5A0KdYVMilq35\/e\/js\/J+\/resVc169k7qU1cdiQFLPkqzyD2dprOSaOzEPpP2ZI0sXO7BmCILUbP8FTi0aLY8UPjZLtMOABaVLDrnNO4WzD3WUAEAfhASWCoX1oyB972WgN7A4u6Mc\/aVL\/bEHfBv+DT2UwcSP7U75ot73PUrsWKth0W3SaeQ4tY53STJUzjmmozlVkIjXCFNsb4GwY+oObFrheIPztFO47jWpVrzfsHMKxkqgkU56xOqDxX2tZXfUX+9djBxakWUsVIGPwCLZBqGGnFsgd\/NZtNKgSfHBrgBnnwCXxRBJJx3+RZO7uCCeL8DiprlvVhG\/eKXCAEmrVIzr2om3yVaVvblP0hRnUijFCKOnf7AH7J8GceWiRypEr1dFJI0UnRFOMfVE+tUygW5D7BM3AA276IkTECQYZxvoGTC+eevqMnREdM5Hm84zZp5oyepRTwNzgUmJdezuHRKwblwwbVANFu82NeanSYkeKyQndabt0pRGuMtCjAu1aUVk5KXHIJDIBJ56GkmrdojW8qpK+kjc19urxGQLV9nrAvVCoqN8Hve8TLfJz5LbBLVL8Q8nUz3Fm7XJRZ+q8JJLCoNk5atyjaBuPkQNftO\/LZz6bSCc\/EFRJG8+5BykhVauFJK5ANE1eTo6mZU9e6tLuCbObWDMLyav1gy6eZjF0Qy2P7XuQxKMQnraSgIzi0SuilJDq\/24w0pzMsabAnER4vGgIDqmk78PJ6C5U8zDZEdr2hZBLDZjjzkUIoEJVGiw0P57oJ1bqZThVxIEiO8qxyTmcRGvhP92OLFgVgjVPBKbVRKcEGcl4QpOQZqWazxUd46V2V0UCFCvPzBFwS00MUf9NBWyUZr0ZkSHLnoopFs\/3iha9dF4GIbRFwGqRA+QtDN3H9Pnp3G4FqyU2fAueCwHxT2WTouOOKH+12OhYv1FOk2lW2nlsUsVpPgFkzmjHOO54bev6JGSMEwAQY38F6O69+gmuDqC3BSkEjwP0\/rxVkamjBI5QfQK2jHolqfgAUfldm5SpZEcA5WbRS2m4TzBglztlRBBmZv+FUdCTy1Bbji5hxfx+JPOurLFnObvfXKY49wb7pPT2K0Xn4LwKZQTTbn3grAcktJrB7nM9za0w3HGaPJWTRQuBfe6+ZMggQsP\/BiQgYWCCF0IvKfkhGDUjqKMhg68x\/zhNMc2w+3SHFqxXYpCVG8pQAScBV8Q6VUWFbYSZJLt8jV6Vt8wv3FxP5n\/s02U8UwL\/n3ROlLM5IPh+QbO\/lvT7y++B8zqtf\/WTERIIT0gkTrqpqCVbJSy3dzlDU6+cNZ0Y1xzOxpaYTSEy3km8XAoH9BUMBjA0IRICY4tNOCPyofuAujKcwo+\/d\/Ml+YYr0wI25cKt\/YIXx\/5bcfx\/nT3zPjXWZf9br\/x4E7WnV2Mic3a3kyME8XvtVkJzP61ygMI4RQvaBFfGhezCAVnJs3uJgFUTb1y8Lw6T0nNrp4qqdc2TGTPxFHz1qWGzkeJZbQhbTA8KhiWkjAtD9gpUbwh9HiGo8Pplf9MhHa02yRvTF+OqjDrn65ie023hvix4M8VPep2Vfy8+0ZX9kXuW1RJZNsK0p7VKCGLlvWqiRXTyCXEeZorAo9X1ej\/qfg3BxBjkaXt3++mLu+InJr9fjqvmT3+ukNG5SHx5XM6gDP8LErgjnvCqxUp6mryRt84hHW0pdWZ3zukG\/1TZ2N0aks7xHG9iyubXBROqxe843ZNwb6o7xhu6\/3U6+83vPXu9oo857OTT3qcs\/PyvYgYq39NGtjEvt+UqDtkeG\/zPRfpNaGWqrffqz63IT+7T9Eb32se+OXim8uSH80u8x98+xxviNK1xqm\/YfkdQNFO\/zNxxlEbCL1Vc2arYHRjmz2eMK+Xn63S\/5Di\/1t5GfNvuQvrSv+7uFaYRk6UBhPIUSWlHE9t42dKELk+s4VqGO7LqOeMsp1\/RUtn4xH9xxvK79rMR6Z2rKP\/ee5JuOhJt2hDYlHm9PPhhjWVrTOVxjbR4bzpg7AKvjlXwO+dKqaPubBP8m0IKIy\/LaSPJciX5It+S9+j8iqpStsHVmos1ZqoEY12KPq6K0x99TA9TprNNinbDoJdMM38sp7JN5R\/x3136kRAd9RcV8F\", \"\u5df4\u897f\": \"data:image\/webp;base64,UklGRkYRAABXRUJQVlA4TDoRAAAv+YArAFXZtf\/v2C7nbCbb1ti2bdu27a3X77ttm6\/f93n32La5bQweXNd13891x+psJ5XbnEAqo5supY3Szq6usDb3mmrKrLS7i\/tMv+cI4lR2OieVnZOw1dvoUlmVWTnnYCftTpd9BOM6tis7+cc2KpaDLratytpdnFQ2KyeVbadyUv6DU8iaA4irdKycdtacQVzbSaV9ALOmDup0tlOZnc3a6dJP6lQpRxJt2zIkKSIy8F5k2TZbxc\/qHtu2bdu2bdu27ZEAAADRSNvZtm1zttm6WnVv27Zt27ZtnG3bNofrvyRGkhRJcl\/G465OvLf31ucK7pD8Z\/AD8NH2NNihzefqX6ExGX85BgKx6vHC0iYxm3xeifHR4WmIk+tVJaLoQqdKYujrK3x0fqK4WMw+be0RCA1tgjw\/C08oK756PAh7b4lTLUFoMVYtPuLr2b5731NQ\/K08YhdjCR3aJxmBtu1WSgz634n8abogMMpPzHDwLSXEe9vz9zjkaIJIxwIl2OHN\/SsexiOuRaOwIDaGVJiMvax0l1CnZoKg0KmcOF6fHR8rGBu0tEoFpdZOofnMs0qFzy6PxhurkiCo3WX4Jwt8dX+gSPhbdsQ2yhFMtEuw\/K89qDwY9LvzM8HMbxgMuq0wBFy33yFDEwx1KFCD7Nk+kIJgNPx6tH+wYGx0AZqMvqIU+Gj\/dO6OTWTBXFUzMdSF1T47PFYETCddtDSlQhKtHGLzaWf5j8\/Oj8e7NCGRmz+gr64POY\/FvFM2Pr6QUNsQx9\/iozzHd8\/7B9ylkNZIn2YY9LnL70uofYYuJNchT0U+YzjsZrTfSkGnQ41iWRGGb5keomlJgMZNi\/rnrLvrSdAZnSUZj7zG4Ug2qookQYyqTgjWtLzW9Muyo9UF+YyzdMQ702hmepqGZ1vvmsZWa+blp1R1giBW1USanPf2zziL6fhLMVEuSI1YRmtOvS0yoPFg5QKR2yjKr6ol9TpSCRGkWtnEZlPP85S+b6kqEwUZdjWG99ylQv16zjQCFJ4tL49j7elnNhWOIHM2V\/XV5SE38TP7lLVXIMiM0DKt9HCTa1MO1KYrI9wYsQUTZNoGuX4XHucjvnvcv+rmBRHhSjNLC7c4MxFg4tmKDkyEalmgLWDA24j4se1jTEGkZVVQTriqe2Dm2UoI9sesiAWR9inGe3iHwYA7kT9PF0Q61RPryd71bGUCU93b+ONOI4iM+hM1GnyDa5FsdCxSBBFRy2D+Xktgbv5ei2hlQBD5X45dWIcTnSYJMs2Le7zYaCCBnqwsk8IhQWZMCZiMu8ytpCzheamSWI4zjYIknq3SeGYafkbEzWedsXYLSQ\/HxQZGQDKLDww61siCTJsAz8\/8k7xh3aSXUGFbZa0JJPRmCxekF1bfve5xBX8rjthFWYLQ5+budgdJ3ZlVlS8ItU8wAqw7wJGkLHkk+zD5eOxAYvN0O9vWmOQRccNBt3iRlHXI0gQpqjrxxyC5hfl1VDWiEIJfKV\/j4dei\/4cEuaWEOkAGlh5uFuTGEAqTMVd4FsmuI\/0EZGHdmfuC3IfreUTcbNIFS4tUUBiyaVE6eeDaIgvVvEBQaOUUmU8\/y6mk7Oezd4SCTMzBGbxDuoi4z+6P9BR\/S4\/aRjiCyn5BNpYXLaNM+QZYdVAfWfYBBZ3\/dGYi8mFywZuW0UbEDfre4U0ke2wbBxmZt8chDXVEfCC9wmjYjWh\/lYLWOjOPQFZuWtAag4HGo67q0yXUsZEsaOkzC0eivMjKEXdMBinfP+sJphMuWmqpoLfu7D1Qxy0i2SKQI8pzB0n+IBxPUYozo\/GM58VHeJUbRCR8qD9zQ9BrZRebTTuvF0nZW55M0KOqk8qzelYiiQ2IiODc19ZwboZZt0NNE1K9VASHGPf9WAeP+jp9PYyY9Jfm\/LHfjMR5O5L87xT+bZs7sTGcF33SmxWpuK9yjhhzdj42Qe9srjoL2WMx95SNly9YGCn0Djt5OdTM8fqEXyYw\/sfxgMO\/BRv7y\/+Qr61fa8dwM1OjLs6KODc9xtJsbPdeT5DRP6MvzY40N72du914sWZO1Mf\/MBZ+VmrK\/1OIiH9rktkE5b41ybhigONZw0wfDPIn2aR8\/S4+JvNINqukbEMKP5Xg4341eaQ26OgfyX5pEn2djDAnLcGn8SYOVtusK8QIs9PSY7gZKStt82ZnsHG\/7DcWNXagGnHOY2xoZ7lJz3eIiNjUkdqWLrR0+mo45b8pxDaoWSjuXbVMyBPEg9LJrCgioGWV8vXd557MI9lMsG6ekYzgJ9HsyQZ02Fzc1q3OFH+1Rt3ehp+RMue2b3dhpHnp8T6MDS\/E+N\/Jf2tavdLmtL2so6cDHb8YQgwz7X+4mamhp\/4bBBFxeLtegdWqvDMiIsZ9N9pVR9QotOFdoSR5RUiTyhSRBhcmFKMiEWy0TzNkGxE3HHArypdkwcpInhJs72FfhFmp8d6Phpz0N+7bEQw+\/je2\/6jPcUsJRlmQEXDYt8AjvzdxqAZbudRq0e\/jvkJP\/tv69Y7hhZ2RkqHhXeVhpv5DRJyK\/8FfQk\/51\/TRWkREjLoo61RfPBqmIPjGme1JxwUArhANzH2TE3wM5uoZIYqHWlOvBCuj\/kKNhtyQZyR7\/IIZzXKDVASHzZ9ujDg3veVLrYht3+3GFP+mEn1ToYap\/k8l\/jaZ\/I92eJPq8OlAVy2eb0ZEbPliyyvavtOt9uP5WIAhXzp+Ppg+0PBveMiL\/SXJd1ULzKp+EZEbSKFMSYtP9RsU4UDB0IRO9Snl+8ptCXbalcDkFI\/YKTVsitlE4h4mIrh2EV2ZJJSm6IUCP1eUZo+AJw0\/za1GAH77tKelm+qkS1OMyiVhVKY8+P+pYxMDTPRlYiWxdpY3urcSEXGo++o28KgfF0TbdQUPbPxAdT+vQ9yJdxE2q1xQSnV0tq5yBTtvukH5RbIZ4j917V\/j8YBKoLKf8fzrfXaG0yoQsaXzzUdDxI\/5G\/Q5xIQ\/CzxyN8NrbH+V5cq82K+HE1G92xcBXKDQsHBcMHQ24+1bZm0+LCknWglqugIEKM0aFeUpioUISj1bRGzvQe\/tfnXFdu504yFU20rbvd8TYsJvRJxe5YrgSqPElB8pFUx9yVrk1ObDlpxdfmq40Jg5DwIG\/rYkxfQjAluj5kl+qBN8HMOYy3NejfvaEgYd+wvv3tTRup9MqkNqVI+IJD1f5OryFuTKOeV77AEFY9O6NMEuSdcKs0hJcD5EOLAxJ5DVIONUzCHpby2iamuJ3YaixdwOG9lTce3dThgxIdFbgjdMImKmaQW1upuR5NHmw5qwpVmgZlDDZwwFAR+Y6QWhm609+X\/cd1s813x3DDXpz5Z+0NrVto9tKeTEP82eqI\/\/T3eoWSAIBC5VMPcb05C+zYc9BoUT6rhEFHoDlmaHgHcR3i41QVyMw6bibs36fMArNbavMtb20i92E4\/q3\/a3ujEuHBEUyjIivp51CCmsLvUVJHL+pShGNMMt2X\/8dqxW5bdxo3OlGws25mdzZ5oGOOPd27je0R41qViSMuqixuRHIYWn3auUbT6SUF60DKQznSEPiU30P\/aXpo\/Xpx9lC2eb8C8fHaTDJ\/2pCweeDiqIFgtq5ZTy3eAkhUSWGm6TCFeIVqYIuaIMADxpuC4R1QE1vvvHzoNJf6rN+348RAdP+sPPTEmfkuCDGb5P08qzhETea3HStPlIRXGBYYlwrrF2mYm94QRd6lJjLxhJX+i4ubiFM43bCTcj5e6Y7Lem1w6p8c20JrMFqfJrRjrF+oV0jh4k0gtAnhHWPFyc4L0PDDLqxyReh5ghQ+R56d\/7Y1YIakntCTJl2IwUaMseIaX5ey1ocKMRYKRHhI1FSMLfUw3tLP8SnvFLL3xUE4dqcNFlK5pmFl9I6XX1\/okLjRUNnKiGe34gAlbmDLKIhgfixDt43P\/vJ38Pz7jS27vTiAyecODN\/rl\/MqKTG0qBncUr1lY7fTm0r7DT\/1utzserzLLnVi+3tsbMCwJBlxQXGpLyzTz4tAJBkBPKskQQGOoa0dsm\/osbwagTf1d18mJwgNhvRvwN\/oKzrVNGS\/tp+nWOkI15g\/jy2N6D3q4X9MU4b0YQMYzhtXgJzxF6dXasPvkF5OP86xORs\/1JlIWZpr3eJ\/2hunuj+6q6buNGR9PMJgeU15R8L9HZUc\/uFxbBkhkdCGgtRPHboGa99oUN765Y4Ju3eJJOqGHg9EVp7hf07h5RJ8ulIBtUxCH6sanBk6gf3GtlCO6D+L8H45oSfVOhZWGNFPeI+hgX0MEcnz1dILd6EfckYGCfiahek4drMkRdmDlsTEJ0nGpk9nEB\/YwFaTs5lARMgIwZgVpnGgNKCwBh28y0o2cDc0JsgRuyjwXpdfwPIH8QNs7s4lL9qmQikFsiMDXJS4krUmSg9UJ9IGJMaw\/r+J++xnxvAJq2wCwTUV2KqMjellOepKjjVUMjSUD0\/kP\/bQNwf8RIkeeMY756G+e3qvK1tE0UDPwcQD5HclwjkqcSZwcAqFu+pFQkicDAmmRcUqJjVwaYxvn1ObezcQDIAyQ67xXI\/vYASyt2WAudULXV6XU+r6b0O4AiFbdTajTF6Wpjm7mDOKDwzxYAElZbtqRSU7OM00at6ZcM83l6nsOdtwsTgowHDcJ9QRsZbZjTxMZDgmuNXo02RmLGg1IQXEOGQ1YaBNhCAzziMkxzuPqftx8m9OYCUTcaBa2WoFjFAMcDwiCBhSC\/E2L4TQBwh8rYzLA+GcUyb8+BWg1f+TMgD7MGBYwJAMATQB41zK5Wgwv1Oao6YRw6f+22SUr2AGQPcqC1NElnW5\/DiZqsTevAlcZaNSycDMfvklG6ojfPrJtj1sugpAER8eUqRYIa9eVuMqnJ4kYdXtps7NGg3ddXJEmkJ6P4RD8+1Z8\/JcuIYriPp0uytscwqcPjSO1lXZkHhAFAnfRWsmI+rDcqtFyO68vcYlB7yZV6W6d6Yp4eZyIMRCiwdY92zKlySXCtUWb1ttyrsfYE8Nr3HYp5u0KUBJLyhnxApI4nhJMQ3SiGG6saa\/7U1ZcdrQbd3jZ1JYpIkbxfbQnA0nKjvIt4RL8+EQEAJUsmZMoFZHmDSI3yoyW0dfVc6qXI3hmqm0yQieKc2Co1Lwq5XXLnGNzl0gBQpqTuEcCYB8elBlkgyKqXgk\/9MyGbF0nSP9MSszTlgaBuziibF6P+GW71TNWVfigFj3scAGxsNdpr6ul6pjjWJ\/cRxjjXybloGai5sU6oUWpvOkkLZUQaqPrk+NYbWVRAxZQ1N2zYd0CN9gZqNkFtIhgeoEnhflxamkg25\/phHWqUArzmTB+sDJcWmZXmwao3TfL12NjXaBT9sPzrge6PaQ90pkyg0zzcrhQ90Hzsey\/YZwjsPX41MkEj7fEUir53Ts46OGbJ4U72rGYV4bmnGsWHBshnHfBzvkWayuIZ3VNQiSBVosgU9SrdV5FIIZ9vwdWZJn6KO73aqFT\/pBDr2co0KR4knmnC2zk20cpAQV4TYG5BPuNoFTnxHBv+zi4SN\/BmJ7PFs42xaeLZRXyeV9Vf2eGa7tnhzETG9g7SeVX8nlG21H5dmiAbnJvwfsI0zyW9hP6V63PpIpawMiP1z6HnOT1FLKPEc+mUYBbh5KSaRagI8ycjl+CRfNCTlUU4mqvo4Ph9o5QgivmTyjFzNE3w5qW1pZ9PaoUv716T7l9eiM9gUgP+Mw3VzFHFmTN7zO6W+s9FLSpk06KFdpeWes6scs8WVvB50so9Q1zB58Yr964ABd8Podw7QRR8D4xy7\/5R7n1PCr7jS7n3uin4Lj\/l3t+o4Ds7lXtPq3Lv5lXwfczKvYNbwfeuK\/eufSX\/\/xUouEPyn8ELYI0=\", \"\u963f\u6839\u5ef7\": \"data:image\/webp;base64,UklGRu4LAABXRUJQVlA4TOELAAAv+QAnEDWH2rZtGPn\/y0vKGhETwK+VidOmkXkvk1rbnvRPwVR7OVpAAmLgcNiH\/Tk8\/cPOlkgkBehDEyLQSE0AIA0FuCDCBrV\/BDzt46E0AJCGdQ0V\/u9LozyhzQMO9D8BdLX\/P2U7V3ps22e2z3jWrJm1hnvWcM\/23se2bRuxbWdP0v5j2\/sG4gtIa1TOtDHaqWLbVseOHUv26VGydJ0n5SnD3p2Tyr4MXcL3edKpSkqnctKlOumcf9AltXUB6qxSDwRJkk3bquLZ+M\/2e9e2j8\/Fp3ABAKFo+n4nzrbv1rZy7WY3TbZ3sreLk+16tcia+j8Bzljxv\/hf\/N8mL74EXwLsyA7dQfoeT4BGh+aEAAbtIWQ1QmsNwK2Eo8UMECNG\/gJKfTJBYQDA8K01OQlauPyjCNgtKP6bBqLkp6MAEVC1Xg2AvQU9TEj9D5dA423PPzcBEfL\/fCQbofUOEarvVQzRRfwJvf1yAgRmhka7Hhn5skIfMGLrXVCuqXVqo8dszGBUlWsVbs11OdaSEXy9fRe1Tu2zvOh7PJWGzgq3Gvn8WADoa56bgFuJGHwDYAoUgm2By7D9h87zmZoeN972MX+4EkUvSaoJl2EQbvu\/fh\/TMVDumWUgtswriz4mk2BEbb16gcuwGyM+HNbjBYgTYD066Wc0n+rIW1D2WVJA2pBdBFj8d5JpeGjmBcaOyzcgUoZ5fFH+WYLJ11ocG9yag8vYsDkGq2MAH8uMoQqLr4QfdYHC4liBjstBXmB6kWRQ+V7yg7Lm2x5gdJw8wA0wXJZ857Totvfp5AB5wUWopzX62pabV5YeF\/tmZ3zkHoQrCQM+arrto9W6HwDkle9lkGvjXR9AyU+mCOTUO7awjAmehishH1OQbabfrbrFmDRIb6ULVVyocqs+CcYPMFjZDR8DyL5YARbwhlUPoNGuJYbcot8UCDZ3Ya93aAGIFhMMJFa9VWBxzIqc4xMsuxjRnXKaY1sl33k2lqsSpdlX+yNgkN5yXcG2xwtJDT3mPVditWuFAcQoKQGsyYTG9NDTYTmA0njfFiERH0vcSuRb2LUwj6\/KvHKNdz05vzTavtrHjoyea6yoPyOZPbM8lUlTuTwTS3NRhByRsTOrXFQQFBvph2uvy7zyHL5+DfiOASSnEv0RVPsbzcPUEJ89cIBQ7lX0miw\/S89jBZgLIBk\/jxYSRYAkCAjfLkS4wUASABT5KcDEimAgDAYyTWAUM1Sr9cv+V5tMr3eYzjpGTOnBtdn0gkwH766KfjMD9ZcABu4vOd8q4O14AU7Ueg4xv9aZEVkBBlG8NLblrkhJK0vqGkjXgGlrMGUDpuXGPBUpK\/AFMpTRh8KUiIJeaHxHt\/nkGT5lmPG2VQ8mAlP\/H4+eNj2UlZgMrqXSrTZse43h2mvedWjJkWD4+hsumMDsz1F5M18ezk5ZK\/LWpAjyXSn0nlL6V+7qPtm\/piCnKAO3f4lShOYl5QivQdehrrnJroeZ1tj1O+WsBw9g8C4SLSZkuVBe8Jyap8X6eTvOdWrIngQwbFpEnOqzVoykjSIGf0VHMxp\/naKRZWvootwkCyBJea6K1B2XI3RYvjr1gDQHJIDvVCOD9FclQKgzlXrndaFES07UiTxSijmlrCQXBpVXhRCYqpYUx5\/Q0bl28kaahyh25Hx7j9ms6C+ljdT\/6WJ+tJAdpo2ARHP8rWrM90Xvk3m\/w8V23uqXJh\/oVPTcn5BZ35QWB5L+y2Pxl3R0x5CvUjTiwNhh8I3B5J4hZ1yg39sLPFzuUbFq9XU+NGaD5c2B1QGULGHXWnymS6l2w3Gzt\/mmH+pAhSklW00VlWhKqZ38amD\/xqEvKI3Hn5npX1b6O6VUVGJyVOR8lKn3rDapHCskYsVovBCPlkMOw65NmSpIMXc01p7yTePGIH2kw2LWejWpdGvYDTefEzm6H1Lw2Vhi8ZSawJKa616nJdBHJT9U0YO9D9GwHR3dUPBDM\/uL4fsLFUOf0nj0WZJKHxJDgVCgZEcc2VEhLIfQbPFgCMWTPntj9cUJqVDfIM3FBSiQs6KnbfiUrq3me3mr++NU5YGG7mj5tpZt56zIBUq8gh8Vw59Smu6fl68kyzNpmBZsun0ZuL\/ygUwzeku8i3G\/fJwAx4qxCCUULfvDNI9bt9stm8PWG3yDX2HOVPMopW78Q+EKfdwGDvKzE\/+kpxv5KsJWDvwLpTRLxZNlCsE1OGzDfR9fv\/Gjx+6\/vBeNSGe46rzPaZlnt3oqc6AwhiCbiEMKUQAA82NRHirMVHOo579N9G\/qOWPDzUnBvERSGEnFBcikYnMAnGb1lLP3PKdYThoVZ6p2adlNRyAUpvvne3LRH134Rzf53kl+8pSu5gcBiTFQuQwoSgq3Xw5AsPX3nZ8ET2nxpNpIFIw4ar4fzO78oThprbvbA8t357j\/EA8l0YdUpToQgPkJEMDIn7PkzOhpyj5LQ3QRIultNqpz6FS+1fWBRk2u9JHA7ugERx\/qGk9yKBGxlxBn0owNW8UOEpTEHwT6xwZaum0lvx+TYPNMDUuSy+J\/yb6Hi7Z\/wwg5pouFJrLFw1tdSlcXLG2orPAsEkcf0zET2OWx3qV52qxeAQwwXLqVsKTgSvlpYQRKUlOKRvpYAgv9U8pPJOXpnQkeS17LcxYufyiQ8RNJzrnsW7RcvxT7FIp9smWf1Uq3RuHU3XkxJg3PvU0nTs3PQpKKoPWBttQrHy7DgYyQtRRkbZiUUnqmmu3ddSallGarWblKmogTND5kVnMGz6jEGC3C20xv99kYxNp6\/WK2nQGEbgqBMCXSx2S6rNnyy9iFpBDmzrzz5Kqoj1F6N6V3U\/pY9oo+jzhxaiOjhN5IManEJ9XvaBEtxnWRNARTLA7UYt0nk1rHtiqwFoQyu+FttX6FL1ZIKHOQ4YdsYNY4UVGJLZJpclJweh3boB4\/TNWA2bC0UGHyKzEuJVx\/31JHSjU53R+4ymH4CgGlIjLXODcJZMDBkvHcF24HVLoX+YxsQVt8pK14L8UIcC9laAk1\/H4VKjX2pf\/npqpUmWpWtpqRvWIslbxWpm+4AdmjqMRIokdFaJbSq1gBnulQAW\/ECAkA21W+1ec+gzw8lnqn9ejU6FrvRelXVk3O2MDR22RcBJPlmVQRawoTljxV56YCPyD3R5K8nBmSGQpRNhOrec8uLi+sWoT17Sw5Lf3ODt9ah5o+E97R+\/qap5YXxFrrXFcjdKQEA5XvFR26MFreXibbxbCjULUQyPBWyyPLxNIclGQyeSrhIrWIMDjXG8RxLdcDVaxRYlTb1eA1Hl1WuVdQ89wyeVoZJjKRtu\/JjFA6LgeBia0AVJf8pIG6xyaD8HYt5N1fTU\/1jsepB2UE3XkxCoCAMVQqE7k6lkdJ8SUsSkFGsGFaoMdspEI4u+HxXvdw3VML6G+0cKjRgMROKImdZ9MhuwjQfNOVQOZlKPvKWcgO7zmXVaaAybP8H4IfXLpVGyl1gbLHdCKnN5Hyk9F7ZGJ+omA7eUAcrIcgUo5POxUAt5gjlIQfiaA0Vkij9+mEh7e8Z9+uxrnF46PGu36Va\/2T8o+yIdCaAg0kgBOueR84+585zeggXI4Bxb9pfyDpuHwFyfaYjfIB\/fKAQ\/dwCdsHwbYaAg0Ex6RN2TMJrt7qGsClDLfmxF7XwK4\/6eFV\/UMLqPgo5gOG3mYjkql2Ldc5NYBENudGSzBOkiB61Wv9Cx6in4HDMu8GfcIN0x3YWwzpg\/aQRJPtVUN8800XqH1uVL9WSSZhtUstCAKD9VYo9s2oY+mPTbcvGrbXZjWEy7B+DLOvmR0\/PjkPvC4lKkl0IN9Kt1pOCDXatwE21Jb45LCyAuPWwsknI\/6X1BSkkzDPLYA3E3L7yGe77YBu80luZByms0ar9TCIkP9HhOq5HEezOavoN4WeubDxfKDOsQ0ydqnhKDEGdJ5PCiCZF1FycAcgQo46DQh4\/hUQc7f5cFnAaIYWBKKl8B5AiXfOqXmAoTpI9\/mQnBLWPna2A8o98+WeBaDxvr04xvEyeRq8M1b8L\/4X\/zfP9nXgAQA=\", \"\u82f1\u683c\u5170\": \"data:image\/webp;base64,UklGRvgCAABXRUJQVlA4TOsCAAAv+QAfAFfBtpEkRfkHd95Z7DPT\/89vGmwi22pFTYUQ\/HvIBrBAm36477CKJKmVAPybQQMq+Mwvxw3zH4Sf\/YEM\/gfogwCRs6HTA3QdAL2A\/4elm\/s6QHDyAcdex17TLoR9UNHmBT5AxGCn5EcefixEkNzzu\/e31ud9gffsfcmOIs\/DvUCYApYk2aYt27b95j9CnrNXV+335RfRf0hsJCmSYsknLVwv0\/T+j1YmGlZXD8eg1cWbsWycjV5t\/L5e\/ZPG+nTzZiyzWyfDwzxaOftrhTGLJn7P\/trhy6KXKmDLodfVwJVBb6uCKb7eqw6e6Brb39\/hchssQTS3\/awx5+lwlXtwRN7HUOMukzYYMuyj7XJpAz\/uPgi4fuxRj9c15yFjD+yY+2CBnEdPNzn0ouz5loS\/\/HmWBTOP8iBmEQO8HOKAlkEssOKLB1JkccfDiX2+cMdEiSw2GHHFByGqHMjHlAfpiHIhG08+JKPJiVwseZGKJDcyceRHIor6gPoY6geqI6gvqC2v\/qCytHqEybqmsuoUysrKj1w+3YdWd5dvBju9urs\/uNpczJUay\/lt6rybQK5i6Vaf1Tr7wFff\/vcJt4\/887zPauW+e9nSwvr+4Gpvbaao8rHEv3uZ+77t+JYOhs\/K0535wq3y8US\/ZyxR4R9ZdEmB79Xn0B2FlqXIoSuKLT+TRDcUXGYqiy4oupxcGnqFl43MQ6348rAEaAVYBpoBpRDLvVOgE2SuAw5UwsxvQYJGoDlNWFAINY8NDXjB5i7iAS3cfFVEYAWco4wJpIDz0nHPF9x4oHMRcs8b1HUYO\/8kGZj7LfCco2wg7q\/R88zSEX+Mhs8tzEf0uQl+PmkDYs9HBXOIOxB5Hq6YN96C8tdekt8KwCP+GRI7AerVud8EKUfs\/RVD1j0sH54Nrk625\/r62z9l52X9e4mWHHuofv\/YkgW175t7sqDysxJTFtR9RuTKgirZsqBGviyokDEL2p8vOXNg+RAA\"}, \"defaults\": {\"strength\": {\"\u6cd5\u56fd\": 95, \"\u897f\u73ed\u7259\": 90, \"\u5df4\u897f\": 85, \"\u963f\u6839\u5ef7\": 88, \"\u82f1\u683c\u5170\": 85}, \"odds\": {\"\u6cd5\u56fd\": 2.35, \"\u897f\u73ed\u7259\": 7.25, \"\u5df4\u897f\": 9.0, \"\u963f\u6839\u5ef7\": 5.5, \"\u82f1\u683c\u5170\": 6.75}, \"alpha\": 0.2, \"scale\": 20.0, \"w1\": 0.5, \"case1_prob\": 0.7, \"budget\": 500, \"bet_unit\": 2, \"max_bet_per_team\": 50, \"joy_y\": 2000, \"pain_y\": 0, \"strategy\": \"hedge\", \"favorite\": \"\u963f\u6839\u5ef7\", \"mc_n_fast\": 3000}, \"snapshot\": {\"strategy\": \"hedge\", \"favorite\": \"\u963f\u6839\u5ef7\", \"p_favorite\": 0.19964819377399182, \"p_market\": {\"\u6cd5\u56fd\": 0.4236085666016638, \"\u897f\u73ed\u7259\": 0.1373076043467462, \"\u5df4\u897f\": 0.11060890350154554, \"\u963f\u6839\u5ef7\": 0.18099638754798364, \"\u82f1\u683c\u5170\": 0.14747853800206073}, \"p_model\": {\"\u6cd5\u56fd\": 0.3895, \"\u897f\u73ed\u7259\": 0.2365, \"\u5df4\u897f\": 0.0486, \"\u963f\u6839\u5ef7\": 0.2183, \"\u82f1\u683c\u5170\": 0.1071}, \"p_fused\": {\"\u6cd5\u56fd\": 0.4065542833008319, \"\u897f\u73ed\u7259\": 0.1869038021733731, \"\u5df4\u897f\": 0.07960445175077277, \"\u963f\u6839\u5ef7\": 0.19964819377399182, \"\u82f1\u683c\u5170\": 0.12728926900103038}, \"bets\": {\"\u6cd5\u56fd\": 0, \"\u897f\u73ed\u7259\": 50, \"\u5df4\u897f\": 0, \"\u963f\u6839\u5ef7\": 0, \"\u82f1\u683c\u5170\": 0}, \"total_cost\": 100, \"ev_lottery\": 35.5052565756955, \"joy_expected\": 399.2963875479836, \"pain_expected\": 0.0, \"ev_total_money\": 434.8016441236791, \"ev_per_unit\": {\"\u6cd5\u56fd\": -0.08919486848609015, \"\u897f\u73ed\u7259\": 0.71010513151391, \"\u5df4\u897f\": -0.5671198684860901, \"\u963f\u6839\u5ef7\": 0.19613013151391012, \"\u82f1\u683c\u5170\": -0.28159486848608983}, \"payoff_by_champ\": {\"\u6cd5\u56fd\": -100.0, \"\u897f\u73ed\u7259\": 625.0, \"\u5df4\u897f\": -100.0, \"\u963f\u6839\u5ef7\": -100.0, \"\u82f1\u683c\u5170\": -100.0}, \"money_hist\": {\"counts\": [12154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3760, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4086], \"edges\": [-100.0, -66.66666666666666, -33.33333333333333, 0.0, 33.33333333333334, 66.66666666666669, 100.0, 133.33333333333334, 166.66666666666669, 200.0, 233.33333333333337, 266.6666666666667, 300.0, 333.33333333333337, 366.6666666666667, 400.00000000000006, 433.33333333333337, 466.66666666666674, 500.0, 533.3333333333334, 566.6666666666667, 600.0, 633.3333333333334, 666.6666666666667, 700.0, 733.3333333333334, 766.6666666666667, 800.0000000000001, 833.3333333333334, 866.6666666666667, 900.0000000000001, 933.3333333333335, 966.6666666666667, 1000.0, 1033.3333333333335, 1066.6666666666667, 1100.0, 1133.3333333333335, 1166.6666666666667, 1200.0, 1233.3333333333335, 1266.6666666666667, 1300.0, 1333.3333333333335, 1366.6666666666667, 1400.0, 1433.3333333333335, 1466.6666666666667, 1500.0, 1533.3333333333335, 1566.6666666666667, 1600.0000000000002, 1633.3333333333335, 1666.6666666666667, 1700.0000000000002, 1733.3333333333335, 1766.6666666666667, 1800.0000000000002, 1833.3333333333335, 1866.6666666666667, 1900.0], \"min\": -100.0, \"max\": 1900.0}, \"lottery_hist\": {\"counts\": [16240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3760], \"edges\": [-100.0, -87.91666666666667, -75.83333333333333, -63.75, -51.666666666666664, -39.58333333333333, -27.5, -15.416666666666657, -3.3333333333333286, 8.75, 20.833333333333343, 32.916666666666686, 45.0, 57.08333333333334, 69.16666666666669, 81.25, 93.33333333333334, 105.41666666666669, 117.5, 129.58333333333334, 141.66666666666669, 153.75, 165.83333333333337, 177.91666666666669, 190.0, 202.08333333333337, 214.16666666666669, 226.25, 238.33333333333337, 250.41666666666669, 262.5, 274.58333333333337, 286.6666666666667, 298.75, 310.83333333333337, 322.9166666666667, 335.0, 347.08333333333337, 359.1666666666667, 371.25, 383.33333333333337, 395.4166666666667, 407.5, 419.58333333333337, 431.66666666666674, 443.75, 455.83333333333337, 467.91666666666674, 480.0, 492.08333333333337, 504.16666666666674, 516.25, 528.3333333333334, 540.4166666666667, 552.5, 564.5833333333334, 576.6666666666667, 588.75, 600.8333333333334, 612.9166666666667, 625.0], \"min\": -100.0, \"max\": 625.0}, \"money_stats\": {\"mean\": 444.9, \"p05\": -100.0, \"p50\": -100.0, \"p95\": 1900.0, \"loss_prob\": 0.6077}, \"lottery_stats\": {\"mean\": 36.3, \"p05\": -100.0, \"p50\": -100.0, \"p95\": 625.0, \"loss_prob\": 0.812}}};\nconst TEAMS = DATA.teams;\nconst SEMIS = DATA.semis;\nconst FLAGS = DATA.flags || {};\nlet state = JSON.parse(JSON.stringify(DATA.defaults));\nstate.mc_n = state.mc_n_fast;\nlet live = JSON.parse(JSON.stringify(DATA.snapshot)); \/\/ \u5f53\u524d\u663e\u793a\u7684\u7ed3\u679c\n\n\/\/ \u65d7\u5e1c helper\uff08HTML \u7528\uff09+ \u9884\u52a0\u8f7d\u5230 Canvas\uff08\u6982\u7387\u56fe\u7528\uff09\nfunction flagImg(t, cls) { const f = FLAGS[t]; return f ? `<img decoding=\"async\" class=\"flag ${cls || \"\"}\" src=\"${f}\" alt=\"${t}\">` : \"\"; }\nconst flagImgs = {};\nTEAMS.forEach(t => { if (FLAGS[t]) { const im = new Image(); im.src = FLAGS[t]; im.onload = () => { flagImgs[t] = im; try { drawProb(); } catch(e){} }; } });\n\n\/\/ ---------- JS \u5f15\u64ce\uff08\u4e0e Python \u7b49\u4ef7\uff09 ----------\nfunction mkRng(seed) {\n  let s = seed >>> 0;\n  return {\n    next: () => { s = (s * 1664525 + 1013904223) >>> 0; return s \/ 4294967296; },\n    uniform: (lo, hi) => lo + (hi - lo) * (s = (s * 1664525 + 1013904223) >>> 0, s \/ 4294967296),\n    set: (v) => { s = v >>> 0; }\n  };\n}\nfunction logistic(a, b, scale) { return 1 \/ (1 + Math.pow(10, (b - a) \/ scale)); }\n\nfunction pMarket(odds) {\n  let m = 0; const q = {};\n  TEAMS.forEach(t => { q[t] = 1 \/ odds[t]; m += q[t]; });\n  const p = {}; TEAMS.forEach(t => p[t] = q[t] \/ m); return p;\n}\nfunction pModel(strength, alpha, scale, case1p, n, rng) {\n  const cnt = {}; TEAMS.forEach(t => cnt[t] = 0);\n  for (let i = 0; i < n; i++) {\n    const caseN = rng.next() < case1p ? 1 : 2;\n    const up = SEMIS[caseN].upper, lo = SEMIS[caseN].lower;\n    const s = {};\n    [up[0], up[1], lo[0], lo[1]].forEach(t => {\n      const a = alpha >= 0 ? rng.uniform(-alpha, alpha) : rng.uniform(2*alpha, 0);\n      s[t] = strength[t] * (1 + a);\n    });\n    const pUpA = logistic(s[up[0]], s[up[1]], scale);\n    const upW = rng.next() < pUpA ? up[0] : up[1];\n    const pLoA = logistic(s[lo[0]], s[lo[1]], scale);\n    const loW = rng.next() < pLoA ? lo[0] : lo[1];\n    const pF = logistic(s[upW], s[loW], scale);\n    const champ = rng.next() < pF ? upW : loW;\n    cnt[champ]++;\n  }\n  const p = {}; TEAMS.forEach(t => p[t] = cnt[t] \/ n); return p;\n}\nfunction fuse(pm, pmod, w1) { const r = {}; TEAMS.forEach(t => r[t] = w1 * pm[t] + (1 - w1) * pmod[t]); return r; }\n\nfunction optimize(p, params) {\n  const unit = params.bet_unit, maxPer = params.max_bet_per_team;\n  const strategy = params.strategy || \"hedge\";\n  const maxTotal = Math.floor(params.budget \/ unit);\n  const ev = {}; TEAMS.forEach(t => ev[t] = unit * (params.odds[t] * p[t] - 1));\n  \/\/ \u5bf9\u51b2\u6a21\u5f0f\u8df3\u8fc7\u4e3b\u961f(params.favorite),\u907f\u514d\u4e0e\u5929\u7136\"+joy_y \u5934\u5bf8\"\u540c\u5411\u52a0\u6760\u6746\n  const eligible = TEAMS.filter(t => !(strategy === \"hedge\" && t === params.favorite));\n  const order = eligible.slice().sort((a, b) => ev[b] - ev[a]);\n  const n = {}; TEAMS.forEach(t => n[t] = 0);\n  let rem = maxTotal;\n  for (const t of order) {\n    if (rem <= 0 || ev[t] <= 0) break;\n    const take = Math.min(maxPer, rem);\n    n[t] = take; rem -= take;\n  }\n  let cost = 0, evLot = 0;\n  TEAMS.forEach(t => { cost += n[t] * unit; evLot += n[t] * unit * (params.odds[t] * p[t] - 1); });\n  const favorite = params.favorite; const pArg = p[favorite];\n  const joyExp = params.joy_y * pArg;\n  const painExp = params.pain_y * (1 - pArg);\n  \/\/ \u635f\u76ca\u5206\u6876\n  const payoff = {};\n  TEAMS.forEach(t => {\n    let v = n[t] * unit * (params.odds[t] - 1);\n    TEAMS.forEach(tt => { if (tt !== t) v -= n[tt] * unit; });\n    payoff[t] = v;\n  });\n  return { strategy, bets: n, total_cost: cost, ev_lottery: evLot, joy_expected: joyExp,\n           pain_expected: painExp, ev_total_money: evLot + joyExp + painExp,\n           favorite: favorite, p_favorite: pArg, ev_per_unit: ev, payoff_by_champ: payoff };\n}\n\nfunction recompute(fast) {\n  const n = fast ? state.mc_n_fast : 20000;\n  const rng = mkRng(state.seed || 7);\n  const pm = pMarket(state.odds);\n  const pmod = pModel(state.strength, state.alpha, state.scale, state.case1_prob, n, rng);\n  const pf = fuse(pm, pmod, state.w1);\n  const opt = optimize(pf, state);\n  \/\/ \u6a21\u62df\u6536\u76ca\u5206\u5e03\uff08\u7528\u878d\u5408\u6982\u7387\u76f4\u63a5\u62bd\u51a0\u519b\uff09\n  rng.set((state.seed || 7) + 1);\n  const simN = fast ? 6000 : 20000;\n  const probs = TEAMS.map(t => pf[t]);\n  const lottery = new Array(simN), totalMoney = new Array(simN);\n  for (let i = 0; i < simN; i++) {\n    let r = rng.next(), acc = 0, idx = 0;\n    for (let j = 0; j < probs.length; j++) { acc += probs[j]; if (r <= acc) { idx = j; break; } }\n    const t = TEAMS[idx];\n    lottery[i] = opt.payoff_by_champ[t];\n    totalMoney[i] = lottery[i] + (t === state.favorite ? state.joy_y : state.pain_y);\n  }\n  live = {\n    strategy: opt.strategy,\n    p_market: pm, p_model: pmod, p_fused: pf,\n    bets: opt.bets, total_cost: opt.total_cost, ev_lottery: opt.ev_lottery,\n    joy_expected: opt.joy_expected, pain_expected: opt.pain_expected,\n    ev_total_money: opt.ev_total_money,\n    favorite: opt.favorite, p_favorite: opt.p_favorite, ev_per_unit: opt.ev_per_unit,\n    payoff_by_champ: opt.payoff_by_champ,\n    money_hist: hist(totalMoney, 60), lottery_hist: hist(lottery, 60),\n    money_stats: stats(totalMoney), lottery_stats: stats(lottery),\n  };\n  render();\n}\n\nfunction hist(arr, bins) {\n  let mn = Infinity, mx = -Infinity;\n  for (const v of arr) { if (v < mn) mn = v; if (v > mx) mx = v; }\n  if (mn === mx) mx = mn + 1;\n  const w = (mx - mn) \/ bins;\n  const cnt = new Array(bins).fill(0);\n  for (const v of arr) { let b = Math.floor((v - mn) \/ w); if (b >= bins) b = bins - 1; if (b < 0) b = 0; cnt[b]++; }\n  const edges = []; for (let i = 0; i <= bins; i++) edges.push(mn + i * w);\n  return { counts: cnt, edges, min: mn, max: mx };\n}\nfunction stats(a) {\n  const s = a.slice().sort((x, y) => x - y);\n  const q = p => s[Math.floor(p * s.length)];\n  let loss = 0; for (const v of s) if (v < 0) loss++;\n  return { mean: s.reduce((x, y) => x + y, 0) \/ s.length, p05: q(.05), p50: q(.5), p95: q(.95), loss_prob: loss \/ s.length };\n}\n\n\/\/ ---------- \u6e32\u67d3 ----------\nfunction roundRect(ctx, x, y, w, h, r) {\n  ctx.beginPath(); ctx.moveTo(x + r, y);\n  ctx.arcTo(x + w, y, x + w, y + h, r); ctx.arcTo(x + w, y + h, x, y + h, r);\n  ctx.arcTo(x, y + h, x, y, r); ctx.arcTo(x, y, x + w, y, r); ctx.closePath();\n}\nconst fmt = v => (Math.abs(v) >= 1000 ? (v \/ 1000).toFixed(2) + \"k\" : v.toFixed(0));\nconst fmt1 = v => v.toFixed(1);\n\nfunction render() {\n  \/\/ \u9876\u90e8\u4e3b\u961f\u663e\u793a\u680f\n  const fav = state.favorite;\n  document.getElementById(\"favBanner\").innerHTML =\n    `<div class=\"fb-flag\">${flagImg(fav,\"xl\")}<\/div>` +\n    `<div class=\"fb-name\">${fav}<\/div>` +\n    `<div class=\"fb-meta\">` +\n      `<span>\u593a\u51a0\u6982\u7387 <b>${(live.p_favorite*100).toFixed(1)}%<\/b><\/span>` +\n      `<span class=\"sep\">\u00b7<\/span>` +\n      `<span>\u593a\u51a0\u5956\u91d1\u671f\u671b <b>+${live.joy_expected.toFixed(0)}<\/b>\u5143<\/span>` +\n      `<span class=\"sep\">\u00b7<\/span>` +\n      `<span>\u6295\u6ce8\u7b56\u7565 <b>${live.strategy===\"hedge\"?\"\u5bf9\u51b2\":\"\u671f\u671b\u6700\u4f18\"}<\/b><\/span>` +\n    `<\/div>`;\n  \/\/ \u9876\u90e8 stat \u5361 \u2014\u2014 \u603b\u91d1\u94b1\u53e3\u5f84(\u5f69\u7968\u635f\u76ca + \u4e3b\u961f\u593a\u51a0\u5956\u91d1)\n  const s = live;\n  \/\/ \u603b\u91d1\u94b1\u5728\u5404\u4e16\u754c\u7ebf\u7684\u503c = \u5f69\u7968\u635f\u76ca + (\u8be5\u961f\u662f\u4e3b\u961f favorite ? joy_y : pain_y)\n  const totalByChamp = TEAMS.map(t => ({ t, v: s.payoff_by_champ[t] + (t === state.favorite ? state.joy_y : state.pain_y) }));\n  const best = totalByChamp.reduce((a, b) => a.v > b.v ? a : b);\n  const ms = s.money_stats;\n  const cards = [\n    { k: \"\u671f\u671b\u603b\u91d1\u94b1\", v: s.ev_total_money, pos: s.ev_total_money >= 0, sub: \"\u5f69\u7968EV+\" + s.joy_expected.toFixed(0) + \"\u5956\u91d1\" },\n    { k: \"\u4e2d\u4f4d\u6570(\u542b\u5956\u91d1)\", v: ms.p50, pos: ms.p50 >= 0, sub: \"50%\u6982\u7387\u4e0d\u8d85\u8fc7\u6b64\u503c\" },\n    { k: \"\u6700\u5927\u603b\u91d1\u94b1\", v: best.v, pos: true, sub: best.t + \"\u593a\u51a0\u65f6\" },\n    { k: \"\u4e8f\u635f\u6982\u7387\", v: ms.loss_prob * 100, pos: ms.loss_prob < .5, sub: \"\u603b\u91d1\u94b1\u53e3\u5f84\", pct: true },\n  ];\n  document.getElementById(\"statsRow\").innerHTML = cards.map(c =>\n    `<div class=\"stat\"><div class=\"k\">${c.k}<\/div><div class=\"v ${c.pos ? 'pos' : 'neg'}\">${c.pct ? (c.v).toFixed(1) + '%' : fmt(c.v) + '\u5143'}<\/div><div class=\"sub\">${c.sub}<\/div><\/div>`\n  ).join(\"\");\n  \/\/ \u603b\u91d1\u94b1\u53e3\u5f84\u63d0\u793a\u6761\n  const hint = ms.p50 < 0\n    ? `\u26a0\ufe0f \u671f\u671b\u603b\u91d1\u94b1 <b class=\"pos\">+${s.ev_total_money.toFixed(0)}\u5143<\/b>(\u542b\u4e3b\u961f\u593a\u51a0\u5956\u91d1)\u4e3a\u6b63,\u4f46\u4e2d\u4f4d\u6570 <b class=\"neg\">${ms.p50.toFixed(0)}\u5143<\/b>\u2014\u2014\u610f\u5473\u7740 <b>${(ms.loss_prob*100).toFixed(0)}%<\/b> \u6982\u7387\u8d1f\u6536\u76ca\u3002\u671f\u671b\u88ab\u5c0f\u6982\u7387\u7684\u593a\u51a0\u5934\u5bf8(\u5956\u91d1+\u5f69\u7968\u9ad8\u8d54\u7387)\u62c9\u9ad8,\u9700\u7ed3\u5408\u4e8f\u635f\u6982\u7387\u6743\u8861\u3002`\n    : `\u671f\u671b\u603b\u91d1\u94b1 <b class=\"${s.ev_total_money>=0?'pos':'neg'}\">${s.ev_total_money>=0?'+':''}${s.ev_total_money.toFixed(0)}\u5143<\/b>(\u542b\u4e3b\u961f\u593a\u51a0\u5956\u91d1),\u4e2d\u4f4d\u6570 ${ms.p50.toFixed(0)}\u5143,\u4e8f\u635f\u6982\u7387 ${(ms.loss_prob*100).toFixed(0)}%\u3002`;\n  document.getElementById(\"moneyHint\").innerHTML = hint;\n  \/\/ \u7b56\u7565\u63cf\u8ff0\n  const stratDesc = s.strategy === \"hedge\"\n    ? `\u5bf9\u51b2: \u4e0d\u62bc\u4e3b\u961f(${state.favorite}, \u907f\u514d\u4e0e\u5929\u7136+2000\u593a\u51a0\u5934\u5bf8\u540c\u5411\u52a0\u6760\u6746),\u6ce8\u6570\u5206\u6563\u5230\u5176\u4ed6\u6b63EV\u961f\u3002\u4e3b\u961f\u672a\u593a\u51a0\u65f6\u4ecd\u6709\u5f69\u7968\u6536\u76ca\u8865\u507f,\u5206\u5e03\u66f4\u5e73\u3002`\n    : `\u671f\u671b\u6700\u4f18: \u62bc\u6240\u6709\u6b63EV\u961f(\u542b\u4e3b\u961f ${state.favorite}),\u6700\u5927\u5316\u671f\u671b\u603b\u91d1\u94b1,\u4ee3\u4ef7\u662f${state.favorite}\u843d\u8d25\u65f6\u5f69\u7968\u4e5f\u4e8f\u3002`;\n  document.getElementById(\"stratDesc\").textContent = stratDesc;\n  \/\/ prob chart\n  drawProb();\n  drawBracket();\n  drawBetTable();\n  drawDist();\n}\n\nfunction drawProb() {\n  const cv = document.getElementById(\"probChart\");\n  const dpr = window.devicePixelRatio || 1;\n  const W = cv.clientWidth, H = cv.clientHeight;\n  cv.width = W * dpr; cv.height = H * dpr;\n  const ctx = cv.getContext(\"2d\"); ctx.scale(dpr, dpr); ctx.clearRect(0, 0, W, H);\n  const teams = TEAMS, n = teams.length;\n  const ml = 70, mr = 80, mt = 16, mb = 42;\n  const bw = (W - ml - mr) \/ n;\n  const maxP = Math.max(...TEAMS.map(t => Math.max(live.p_market[t], live.p_model[t], live.p_fused[t]))) * 1.15;\n  const y = v => H - mb - (v \/ maxP) * (H - mt - mb);\n  \/\/ \u7f51\u683c + \u8f74\u6807\n  ctx.strokeStyle = \"#eee\"; ctx.fillStyle = \"#9a9aa0\"; ctx.font = \"11px sans-serif\"; ctx.textAlign = \"right\";\n  for (let g = 0; g <= 4; g++) {\n    const v = (maxP \/ 4) * g;\n    ctx.beginPath(); ctx.moveTo(ml, y(v)); ctx.lineTo(W - mr, y(v)); ctx.stroke();\n    ctx.fillText((v * 100).toFixed(0) + \"%\", ml - 8, y(v) + 4);\n  }\n  const series = [\n    { key: \"p_market\", c: \"#c9ccd1\", label: \"\u5e02\u573a\" },\n    { key: \"p_model\", c: \"#8a8a90\", label: \"\u6a21\u578b\" },\n    { key: \"p_fused\", c: \"#c8553d\", label: \"\u878d\u5408\" },\n  ];\n  const bw3 = bw * 0.26;\n  teams.forEach((t, i) => {\n    const cx = ml + bw * i + bw \/ 2;\n    series.forEach((s_, j) => {\n      const v = live[s_.key][t];\n      const x = cx - bw3 * 1.5 + j * bw3;\n      ctx.fillStyle = s_.c;\n      ctx.fillRect(x, y(v), bw3 - 2, H - mb - y(v));\n    });\n    if (flagImgs[t]) ctx.drawImage(flagImgs[t], cx - 9, H - mb + 6, 18, 12);\n    ctx.fillStyle = \"#1c1c1e\"; ctx.textAlign = \"center\"; ctx.font = \"12px sans-serif\";\n    ctx.fillText(t, cx, H - mb + 34);\n  });\n  \/\/ \u6ce8\u6570\u6807\u7b7e\n  teams.forEach((t, i) => {\n    const cx = ml + bw * i + bw \/ 2;\n    const b = live.bets[t];\n    ctx.fillStyle = \"#c8553d\"; ctx.textAlign = \"center\"; ctx.font = \"600 11px sans-serif\";\n    if (b > 0) ctx.fillText(b + \"\u6ce8\", cx, 12);\n  });\n  \/\/ \u56fe\u4f8b\n  ctx.textAlign = \"left\"; ctx.font = \"11px sans-serif\";\n  let lx = W - mr + 8;\n  series.forEach((s_, j) => { ctx.fillStyle = s_.c; ctx.fillRect(lx, 20 + j * 16, 10, 10); ctx.fillStyle = \"#6b6b70\"; ctx.fillText(s_.label, lx + 14, 29 + j * 16); });\n}\n\nfunction drawBetTable() {\n  const rows = TEAMS.map(t => {\n    const ev = live.ev_per_unit[t];\n    const p = live.p_fused[t];\n    const o = state.odds[t];\n    const n = live.bets[t];\n    const w = Math.max(p, ...TEAMS.map(x => live.p_fused[x]));\n    return `<tr>\n      <td>${flagImg(t,\"sm\")} ${t}<\/td>\n      <td>${(p * 100).toFixed(1)}%<\/td>\n      <td>${o.toFixed(2)}<\/td>\n      <td>${ev >= 0 ? '+' : ''}${ev.toFixed(2)}<\/td>\n      <td class=\"bar-cell\"><div class=\"bar\"><span style=\"width:${(p \/ w * 100).toFixed(0)}%\"><\/span><\/div><\/td>\n      <td><b>${n}<\/b><\/td>\n      <td>${(n * state.bet_unit).toFixed(0)}<\/td>\n    <\/tr>`;\n  }).join(\"\");\n  document.getElementById(\"betTable\").innerHTML =\n    `<thead><tr><th>\u7403\u961f<\/th><th>\u878d\u5408\u6982\u7387<\/th><th>\u8d54\u7387<\/th><th>\u5355\u6ce8EV(\u5143)<\/th><th>\u6982\u7387<\/th><th>\u6ce8\u6570<\/th><th>\u6295\u5165<\/th><\/tr><\/thead><tbody>${rows}<\/tbody>`;\n}\n\nlet distMode = \"money\";\nfunction drawBracket() {\n  const fav = state.favorite;\n  const layout = (fav === \"\u5df4\u897f\") ? SEMIS[\"2\"] : SEMIS[\"1\"];\n  const up = layout.upper, lo = layout.lower;\n  const favInUp = up.indexOf(fav) >= 0;\n  const opp = favInUp ? (up[0] === fav ? up[1] : up[0]) : (lo[0] === fav ? lo[1] : lo[0]);\n  const img = (t, x, y, w, h) => FLAGS[t] ? `<image href=\"${FLAGS[t]}\" x=\"${x}\" y=\"${y}\" width=\"${w}\" height=\"${h}\" preserveAspectRatio=\"xMidYMid slice\"\/>` : \"\";\n  const semi = (pair, top, isFav) => `\n    <rect class=\"node ${isFav ? \"fav pulse\" : \"\"}\" x=\"20\" y=\"${top}\" width=\"180\" height=\"40\" rx=\"6\"\/>\n    ${img(pair[0], 28, top + 13, 20, 14)}\n    <text class=\"label-t\" x=\"52\" y=\"${top + 25}\">${pair[0]}<\/text>\n    <text x=\"95\" y=\"${top + 25}\" text-anchor=\"middle\" fill=\"#9a9aa0\" font-size=\"11\">vs<\/text>\n    <text class=\"label-t\" x=\"148\" y=\"${top + 25}\" text-anchor=\"end\">${pair[1]}<\/text>\n    ${img(pair[1], 154, top + 13, 20, 14)}`;\n  const svg = `\n    ${semi(up, 30, favInUp)}\n    ${semi(lo, 150, !favInUp)}\n    <path class=\"${favInUp ? \"path\" : \"path dim\"}\" d=\"M200,50 C245,50 245,110 290,110\"\/>\n    <path class=\"${!favInUp ? \"path\" : \"path dim\"}\" d=\"M200,170 C245,170 245,110 290,110\"\/>\n    <rect class=\"node\" x=\"290\" y=\"90\" width=\"180\" height=\"40\" rx=\"6\"\/>\n    <text class=\"label-t\" x=\"380\" y=\"106\" text-anchor=\"middle\">\u603b\u51b3\u8d5b<\/text>\n    <text x=\"380\" y=\"122\" text-anchor=\"middle\" fill=\"#9a9aa0\" font-size=\"10\">\u4e0a\u533a\u80dc\u8005 vs \u4e0b\u533a\u80dc\u8005<\/text>\n    <path class=\"path\" d=\"M470,110 L560,110\"\/>\n    <rect class=\"node fav pulse\" x=\"560\" y=\"90\" width=\"160\" height=\"40\" rx=\"6\"\/>\n    ${img(fav, 572, 101, 20, 14)}\n    <text class=\"label-t\" x=\"598\" y=\"115\">${fav} \u593a\u51a0?<\/text>`;\n  document.getElementById(\"bracketSvg\").innerHTML = svg;\n  document.getElementById(\"bracketDesc\").textContent =\n    `\u4e3b\u961f ${fav} \u5728${favInUp ? \"\u4e0a\u534a\u533a\" : \"\u4e0b\u534a\u533a\"}\u534a\u51b3\u8d5b\u5bf9\u9635 ${opp}\uff0c\u80dc\u8005\u8fdb\u603b\u51b3\u8d5b\u3002\u6a59\u8272\u6d41\u52a8\u865a\u7ebf\u4e3a\u593a\u51a0\u8f68\u8ff9\uff0c\u8109\u51b2\u8282\u70b9\u4e3a\u4e3b\u961f\u6240\u5728\u4f4d\u7f6e\u3002`;\n}\n\nfunction drawDist() {\n  const h = distMode === \"money\" ? live.money_hist : live.lottery_hist;\n  const st = distMode === \"money\" ? live.money_stats : live.lottery_stats;\n  const cv = document.getElementById(\"distChart\");\n  const dpr = window.devicePixelRatio || 1;\n  const W = cv.clientWidth, H = cv.clientHeight;\n  cv.width = W * dpr; cv.height = H * dpr;\n  const ctx = cv.getContext(\"2d\"); ctx.scale(dpr, dpr); ctx.clearRect(0, 0, W, H);\n  const ml = 60, mr = 16, mt = 12, mb = 28;\n  const bins = h.counts.length;\n  const bw = (W - ml - mr) \/ bins;\n  const maxC = Math.max(...h.counts) * 1.1;\n  const y = v => H - mb - (v \/ maxC) * (H - mt - mb);\n  \/\/ \u96f6\u7ebf\u4f4d\u7f6e\n  const zeroX = ml + ((0 - h.min) \/ (h.max - h.min)) * (W - ml - mr);\n  ctx.strokeStyle = \"#eee\"; ctx.fillStyle = \"#9a9aa0\"; ctx.font = \"10px sans-serif\"; ctx.textAlign = \"center\";\n  for (let g = 0; g <= 4; g++) {\n    const v = (maxC \/ 4) * g;\n    ctx.beginPath(); ctx.moveTo(ml, y(v)); ctx.lineTo(W - mr, y(v)); ctx.stroke();\n    ctx.textAlign = \"right\"; ctx.fillText(v.toFixed(0), ml - 6, y(v) + 3);\n  }\n  \/\/ \u67f1\n  h.counts.forEach((c, i) => {\n    const val = h.edges[i];\n    ctx.fillStyle = val < 0 ? \"rgba(179,65,47,.55)\" : \"rgba(47,125,82,.6)\";\n    ctx.fillRect(ml + i * bw, y(c), bw - 0.5, H - mb - y(c));\n  });\n  \/\/ \u6bcf\u4e2a\u975e\u96f6\u67f1\u6807\u6ce8\u6a2a(\u91d1\u989d)\u3001\u7eb5(\u6b21\u6570\u00b7\u6982\u7387)\u5750\u6807\u503c\n  const total = h.counts.reduce((a, b) => a + b, 0) || 1;\n  \/\/ \u628a\u8fde\u7eed\u975e\u96f6\u6876\u5f52\u4e3a\u4e00\u6bb5\uff0c\u6bcf\u6bb5\u53ea\u5728\u6700\u9ad8\u6876\u6807\u6ce8\u4e00\u6b21\uff0c\u907f\u514d\u76f8\u90bb\u67f1\u6587\u5b57\u6253\u67b6\n  const nzIdx = []; h.counts.forEach((c, i) => { if (c > 0) nzIdx.push(i); });\n  const segs = []; let cur = [];\n  nzIdx.forEach((idx, k) => {\n    if (k === 0 || idx === nzIdx[k - 1] + 1) cur.push(idx);\n    else { segs.push(cur); cur = [idx]; }\n  });\n  if (cur.length) segs.push(cur);\n  ctx.textAlign = \"center\";\n  segs.forEach(seg => {\n    const peak = seg.reduce((a, b) => h.counts[b] > h.counts[a] ? b : a, seg[0]);\n    const cx = ml + (peak + 0.5) * bw;\n    const cTop = y(h.counts[peak]);\n    const val = (h.edges[peak] + h.edges[peak + 1]) \/ 2;\n    const prob = (h.counts[peak] \/ total * 100).toFixed(1);\n    const above = (cTop - mt) > 30;          \/\/ \u67f1\u9876\u4e0a\u65b9\u662f\u5426\u6709\u226530px\u7a7a\u95f4\n    \/\/ \u6a2a\u5750\u6807\uff1a\u91d1\u989d\uff08\u5f69\u8272\uff0c\u6309\u6b63\u8d1f\uff09\n    ctx.fillStyle = val < 0 ? \"#b3412f\" : \"#2f7d52\";\n    ctx.font = \"600 11px sans-serif\";\n    ctx.fillText(val.toFixed(0) + \"\u5143\", cx, above ? cTop - 18 : cTop + 15);\n    \/\/ \u7eb5\u5750\u6807\uff1a\u6b21\u6570 \u00b7 \u6982\u7387%\n    ctx.fillStyle = above ? \"#1c1c1e\" : \"#ffffff\";\n    ctx.font = \"10px sans-serif\";\n    ctx.fillText(h.counts[peak] + \"\u6b21 \u00b7 \" + prob + \"%\", cx, above ? cTop - 6 : cTop + 27);\n  });\n  \/\/ \u96f6\u7ebf\n  ctx.strokeStyle = \"#c8553d\"; ctx.lineWidth = 1.2;\n  ctx.setLineDash([4, 3]); ctx.beginPath(); ctx.moveTo(zeroX, mt); ctx.lineTo(zeroX, H - mb); ctx.stroke(); ctx.setLineDash([]);\n  \/\/ \u5747\u503c\u7ebf\n  const meanX = ml + ((st.mean - h.min) \/ (h.max - h.min)) * (W - ml - mr);\n  ctx.strokeStyle = \"#1c1c1e\"; ctx.lineWidth = 1.2;\n  ctx.beginPath(); ctx.moveTo(meanX, mt); ctx.lineTo(meanX, H - mb); ctx.stroke();\n  ctx.fillStyle = \"#1c1c1e\"; ctx.textAlign = \"left\"; ctx.font = \"10px sans-serif\";\n  ctx.fillText(\"\u5747\u503c \" + st.mean.toFixed(0), meanX + 4, mt + 10);\n  \/\/ x \u8f74\u6807\n  ctx.fillStyle = \"#9a9aa0\"; ctx.textAlign = \"center\"; ctx.font = \"10px sans-serif\";\n  [h.min, 0, h.max].forEach(v => {\n    const x = ml + ((v - h.min) \/ (h.max - h.min)) * (W - ml - mr);\n    ctx.fillText(v.toFixed(0), x, H - mb + 16);\n  });\n  \/\/ ---- \u56fe\u4f8b\uff08\u5de6\u4e0a\u89d2\uff09 ----\n  const isUtil = distMode === \"money\";\n  const lblPos = isUtil ? \"\u6b63\u6536\u76ca (\u22650)\" : \"\u6b63\u635f\u76ca (\u22650)\";\n  const lblNeg = isUtil ? \"\u8d1f\u6536\u76ca (<0)\" : \"\u8d1f\u635f\u76ca (<0)\";\n  const lw = 132, lh = 86, lx = Math.max(ml + 6, W - mr - lw - 8), ly = mt + 4;\n  ctx.globalAlpha = 0.94;\n  ctx.fillStyle = \"#ffffff\"; ctx.strokeStyle = \"#e5e5e7\"; ctx.lineWidth = 1;\n  roundRect(ctx, lx, ly, lw, lh, 8); ctx.fill(); ctx.stroke();\n  ctx.globalAlpha = 1;\n  ctx.font = \"11px sans-serif\"; ctx.textAlign = \"left\"; ctx.textBaseline = \"middle\";\n  let yy = ly + 16;\n  const swatch = (color) => { ctx.fillStyle = color; ctx.fillRect(lx + 10, yy - 5, 14, 10); };\n  const line = (color, dash) => { ctx.strokeStyle = color; if (dash) ctx.setLineDash(dash); ctx.beginPath(); ctx.moveTo(lx + 10, yy); ctx.lineTo(lx + 24, yy); ctx.stroke(); ctx.setLineDash([]); };\n  const txt = (s) => { ctx.fillStyle = \"#1c1c1e\"; ctx.fillText(s, lx + 30, yy + 1); };\n  swatch(\"rgba(47,125,82,.7)\"); txt(lblPos); yy += 18;\n  swatch(\"rgba(179,65,47,.65)\"); txt(lblNeg); yy += 18;\n  line(\"#1c1c1e\"); txt(\"\u5747\u503c\"); yy += 18;\n  line(\"#c8553d\", [3, 2]); txt(\"\u96f6\u7ebf\");\n  ctx.textBaseline = \"alphabetic\";\n  document.getElementById(\"distStats\").innerHTML =\n    `\u5747\u503c <b>${st.mean.toFixed(0)}<\/b> \u00b7 \u4e2d\u4f4d ${st.p50.toFixed(0)} \u00b7 ` +\n    `5%~95% [${st.p05.toFixed(0)}, ${st.p95.toFixed(0)}] \u00b7 \u4e8f\u635f\u6982\u7387 ${(st.loss_prob * 100).toFixed(1)}%`;\n}\n\n\/\/ ---------- \u63a7\u4ef6\u7ed1\u5b9a ----------\nfunction buildControls() {\n  \/\/ \u4e3b\u961f\u9009\u62e9\u6309\u94ae\u7ec4\n  const favDiv = document.getElementById(\"favToggle\");\n  const renderFav = () => favDiv.innerHTML = TEAMS.map(t => `<button data-fav=\"${t}\" class=\"${t===state.favorite?\"on\":\"\"}\">${flagImg(t,\"sm\")}<span>${t}<\/span><\/button>`).join(\"\");\n  renderFav();\n  favDiv.onclick = (e) => {\n    const btn = e.target.closest(\"button[data-fav]\");\n    if (btn) { state.favorite = btn.dataset.fav; renderFav(); recompute(true); }\n  };\n  const basic = [\n    { id: \"alpha\", label: \"\u03b1 \u6ce2\u52a8\u5e45\u5ea6(\u8d1f=\u8d1f\u5411)\", min: -0.5, max: 0.5, step: 0.01, fmt: v => (v * 100).toFixed(0) + \"%\" },\n    { id: \"scale\", label: \"Logistic scale\", min: 5, max: 40, step: 1, fmt: v => v.toFixed(0) },\n    { id: \"budget\", label: \"\u603b\u9884\u7b97\", min: 100, max: 2000, step: 50, fmt: v => v.toFixed(0) },\n    { id: \"joy_y\", label: \"\u4e3b\u961f\u593a\u51a0\u7684\u5feb\u4e50\u503c\", min: 0, max: 5000, step: 100, fmt: v => v.toFixed(0) },\n    { id: \"pain_y\", label: \"\u4e3b\u961f\u672a\u593a\u51a0\u75db\u82e6\u503c\", min: -3000, max: 0, step: 100, fmt: v => v.toFixed(0) },\n  ];\n  document.getElementById(\"basicCtrls\").innerHTML = basic.map(b =>\n    `<div class=\"ctrl\"><label>${b.label} <span class=\"val\" id=\"${b.id}v\">${b.fmt(state[b.id])}<\/span><\/label>` +\n    `<input type=\"range\" id=\"${b.id}\" min=\"${b.min}\" max=\"${b.max}\" step=\"${b.step}\" value=\"${state[b.id]}\"><\/div>`\n  ).join(\"\");\n  document.getElementById(\"teamCtrls\").innerHTML = TEAMS.map(t =>\n    `<div class=\"team-row\"><span class=\"name\">${t}<\/span>` +\n    `<input type=\"range\" id=\"str_${t}\" min=\"50\" max=\"100\" step=\"1\" value=\"${state.strength[t]}\">` +\n    `<span class=\"tnum\" id=\"str_${t}v\">${state.strength[t]}<\/span><\/div>`\n  ).join(\"\");\n\n  basic.forEach(b => {\n    const el = document.getElementById(b.id);\n    el.oninput = () => {\n      state[b.id] = parseFloat(el.value);\n      document.getElementById(b.id + \"v\").textContent = b.fmt(state[b.id]);\n      recompute(true);\n    };\n  });\n  TEAMS.forEach(t => {\n    const el = document.getElementById(\"str_\" + t);\n    el.oninput = () => {\n      state.strength[t] = parseInt(el.value);\n      document.getElementById(\"str_\" + t + \"v\").textContent = state.strength[t];\n      recompute(true);\n    };\n  });\n  document.getElementById(\"w1\").oninput = (e) => {\n    state.w1 = parseFloat(e.target.value);\n    document.getElementById(\"w1v\").textContent = state.w1.toFixed(2);\n    recompute(true);\n  };\n  document.getElementById(\"case1\").oninput = (e) => {\n    state.case1_prob = parseFloat(e.target.value);\n    renderCaseHint();\n    recompute(true);\n  };\n  const renderCaseHint = () => {\n    const p1 = state.case1_prob, p2 = 1 - p1;\n    document.getElementById(\"cv\").textContent = (p1 * 100).toFixed(0) + \"% \/ \" + (p2 * 100).toFixed(0) + \"%\";\n    document.getElementById(\"caseHint\").innerHTML =\n      `<b>\u82f1\u963f\u534a\u533a ${Math.round(p1*100)}%<\/b>\uff1a\u6cd5 vs \u897f \u00b7 \u82f1 vs \u963f<br>` +\n      `<b>\u5df4\u963f\u534a\u533a ${Math.round(p2*100)}%<\/b>\uff1a\u6cd5 vs \u897f \u00b7 \u5df4 vs \u963f<br>` +\n      `\u4e24\u79cd\u56db\u5f3a\u7ec4\u5408\u6309\u6982\u7387\u52a0\u6743\u6df7\u5408\u3002\u5df4\/\u82f1\u4ec5\u5728\u5404\u81ea\u5bf9\u9635\u7ed3\u6784\u4e2d\u8fdb\u56db\u5f3a\u3002`;\n  };\n  const renderOddsList = () => {\n    const odds = state.odds;\n    document.getElementById(\"oddsList\").innerHTML = TEAMS.map(t => {\n      const o = odds[t];\n      const ipm = (1 \/ o * 100).toFixed(1);\n      return `<div class=\"row\"><span class=\"lbl\">${flagImg(t,\"sm\")}<span class=\"nm\">${t}<\/span><span class=\"ipm\">\u9690\u542b ${ipm}%<\/span><\/span><span class=\"od\">${o.toFixed(2)}<\/span><\/div>`;\n    }).join(\"\");\n  };\n  renderCaseHint(); renderOddsList();\n  const setStrategy = (s) => {\n    state.strategy = s;\n    document.getElementById(\"stratHedge\").classList.toggle(\"on\", s === \"hedge\");\n    document.getElementById(\"stratEv\").classList.toggle(\"on\", s === \"ev\");\n    recompute(true);\n  };\n  document.getElementById(\"stratHedge\").onclick = () => setStrategy(\"hedge\");\n  document.getElementById(\"stratEv\").onclick = () => setStrategy(\"ev\");\n  document.getElementById(\"tMoney\").onclick = () => { distMode = \"money\"; document.getElementById(\"tMoney\").classList.add(\"on\"); document.getElementById(\"tLot\").classList.remove(\"on\"); drawDist(); };\n  document.getElementById(\"tLot\").onclick = () => { distMode = \"lot\"; document.getElementById(\"tLot\").classList.add(\"on\"); document.getElementById(\"tMoney\").classList.remove(\"on\"); drawDist(); };\n}\n\n\/\/ \u521d\u59cb\uff1a\u5148\u7528\u6ce8\u5165\u5feb\u7167\u6e32\u67d3\uff0c\u518d\u5f02\u6b65\u9ad8\u7cbe\u5ea6\u91cd\u7b97\u4e00\u6b21\nbuildControls();\nrender();\nsetTimeout(() => recompute(true), 50);\nwindow.addEventListener(\"resize\", () => { drawProb(); drawDist(); });\n<\/script>\n\n","protected":false},"excerpt":{"rendered":"<p>2026 \u4e16\u754c\u676f\u56db\u5f3a \u00b7 \u6295\u6ce8\u5bf9\u51b2\u5206\u6790 2026 \u4e16\u754c\u676f\u56db\u5f3a \u00b7 \u6295\u6ce8\u4e0e\u5bf9\u51b2\u5206\u6790 \u878d\u5408\u5e02\u573a\u8d54\u7387\u4e0e\u7eb8\u9762\u5b9e\u529b\uff08\u8499\u7279<\/p>\n<div class=\"more-link\">\n\t\t\t\t <a href=\"https:\/\/www.aitouzi.tech\/index.php\/2026\/07\/04\/641\/\" class=\"link-btn theme-btn\"><span>Read More <\/span> <i class=\"fa fa-caret-right\"><\/i><\/a>\n\t\t\t<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11],"tags":[],"class_list":["post-641","post","type-post","status-publish","format-standard","hentry","category-11"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u6839\u636e\u4e3b\u961f\u5bf9\u51b2\u4e0b\u6ce8\uff0c6000\u6b21\u8499\u7279\u5361\u6d1b\u6a21\u62df\u544a\u8bc9\u6211\u5e94\u8be5\u4e70\u2026 - \u5df4\u8292\u65f6\u95f4<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.aitouzi.tech\/index.php\/2026\/07\/04\/641\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u6839\u636e\u4e3b\u961f\u5bf9\u51b2\u4e0b\u6ce8\uff0c6000\u6b21\u8499\u7279\u5361\u6d1b\u6a21\u62df\u544a\u8bc9\u6211\u5e94\u8be5\u4e70\u2026 - \u5df4\u8292\u65f6\u95f4\" \/>\n<meta property=\"og:description\" content=\"2026 \u4e16\u754c\u676f\u56db\u5f3a \u00b7 \u6295\u6ce8\u5bf9\u51b2\u5206\u6790 2026 \u4e16\u754c\u676f\u56db\u5f3a \u00b7 \u6295\u6ce8\u4e0e\u5bf9\u51b2\u5206\u6790 \u878d\u5408\u5e02\u573a\u8d54\u7387\u4e0e\u7eb8\u9762\u5b9e\u529b\uff08\u8499\u7279    Read More\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.aitouzi.tech\/index.php\/2026\/07\/04\/641\/\" \/>\n<meta property=\"og:site_name\" content=\"\u5df4\u8292\u65f6\u95f4\" \/>\n<meta property=\"article:published_time\" content=\"2026-07-04T03:18:24+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-04T05:04:00+00:00\" \/>\n<meta name=\"author\" content=\"\u5df4\u8292\u65f6\u95f4\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@lawsonabst\" \/>\n<meta name=\"twitter:site\" content=\"@lawsonabst\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u5df4\u8292\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.aitouzi.tech\/index.php\/2026\/07\/04\/641\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.aitouzi.tech\/index.php\/2026\/07\/04\/641\/\"},\"author\":{\"name\":\"\u5df4\u8292\u65f6\u95f4\",\"@id\":\"https:\/\/www.aitouzi.tech\/#\/schema\/person\/d0f894200658432c1e1b63a2b44dd2b1\"},\"headline\":\"\u6839\u636e\u4e3b\u961f\u5bf9\u51b2\u4e0b\u6ce8\uff0c6000\u6b21\u8499\u7279\u5361\u6d1b\u6a21\u62df\u544a\u8bc9\u6211\u5e94\u8be5\u4e70\u2026\",\"datePublished\":\"2026-07-04T03:18:24+00:00\",\"dateModified\":\"2026-07-04T05:04:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.aitouzi.tech\/index.php\/2026\/07\/04\/641\/\"},\"wordCount\":150,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.aitouzi.tech\/#\/schema\/person\/d0f894200658432c1e1b63a2b44dd2b1\"},\"articleSection\":[\"\u91cf\u5316\u6295\u8d44\"],\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.aitouzi.tech\/index.php\/2026\/07\/04\/641\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.aitouzi.tech\/index.php\/2026\/07\/04\/641\/\",\"url\":\"https:\/\/www.aitouzi.tech\/index.php\/2026\/07\/04\/641\/\",\"name\":\"\u6839\u636e\u4e3b\u961f\u5bf9\u51b2\u4e0b\u6ce8\uff0c6000\u6b21\u8499\u7279\u5361\u6d1b\u6a21\u62df\u544a\u8bc9\u6211\u5e94\u8be5\u4e70\u2026 - \u5df4\u8292\u65f6\u95f4\",\"isPartOf\":{\"@id\":\"https:\/\/www.aitouzi.tech\/#website\"},\"datePublished\":\"2026-07-04T03:18:24+00:00\",\"dateModified\":\"2026-07-04T05:04:00+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.aitouzi.tech\/index.php\/2026\/07\/04\/641\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.aitouzi.tech\/index.php\/2026\/07\/04\/641\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.aitouzi.tech\/index.php\/2026\/07\/04\/641\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.aitouzi.tech\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u6839\u636e\u4e3b\u961f\u5bf9\u51b2\u4e0b\u6ce8\uff0c6000\u6b21\u8499\u7279\u5361\u6d1b\u6a21\u62df\u544a\u8bc9\u6211\u5e94\u8be5\u4e70\u2026\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.aitouzi.tech\/#website\",\"url\":\"https:\/\/www.aitouzi.tech\/\",\"name\":\"\u5df4\u8292\u65f6\u95f4\",\"description\":\"AI\u524d\u6cbf\u89c2\u5bdf\",\"publisher\":{\"@id\":\"https:\/\/www.aitouzi.tech\/#\/schema\/person\/d0f894200658432c1e1b63a2b44dd2b1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.aitouzi.tech\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"zh-Hans\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/www.aitouzi.tech\/#\/schema\/person\/d0f894200658432c1e1b63a2b44dd2b1\",\"name\":\"\u5df4\u8292\u65f6\u95f4\",\"pronouns\":\"he\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.aitouzi.tech\/#\/schema\/person\/image\/\",\"url\":\"http:\/\/101.132.154.235\/wp-content\/uploads\/2025\/12\/\u5df4\u8292\u65f6\u95f4_icon.jpg\",\"contentUrl\":\"http:\/\/101.132.154.235\/wp-content\/uploads\/2025\/12\/\u5df4\u8292\u65f6\u95f4_icon.jpg\",\"width\":1280,\"height\":1280,\"caption\":\"\u5df4\u8292\u65f6\u95f4\"},\"logo\":{\"@id\":\"https:\/\/www.aitouzi.tech\/#\/schema\/person\/image\/\"},\"sameAs\":[\"http:\/\/8.136.103.5\",\"https:\/\/x.com\/lawsonabst\"],\"url\":\"https:\/\/www.aitouzi.tech\/index.php\/author\/admin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"\u6839\u636e\u4e3b\u961f\u5bf9\u51b2\u4e0b\u6ce8\uff0c6000\u6b21\u8499\u7279\u5361\u6d1b\u6a21\u62df\u544a\u8bc9\u6211\u5e94\u8be5\u4e70\u2026 - \u5df4\u8292\u65f6\u95f4","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.aitouzi.tech\/index.php\/2026\/07\/04\/641\/","og_locale":"zh_CN","og_type":"article","og_title":"\u6839\u636e\u4e3b\u961f\u5bf9\u51b2\u4e0b\u6ce8\uff0c6000\u6b21\u8499\u7279\u5361\u6d1b\u6a21\u62df\u544a\u8bc9\u6211\u5e94\u8be5\u4e70\u2026 - \u5df4\u8292\u65f6\u95f4","og_description":"2026 \u4e16\u754c\u676f\u56db\u5f3a \u00b7 \u6295\u6ce8\u5bf9\u51b2\u5206\u6790 2026 \u4e16\u754c\u676f\u56db\u5f3a \u00b7 \u6295\u6ce8\u4e0e\u5bf9\u51b2\u5206\u6790 \u878d\u5408\u5e02\u573a\u8d54\u7387\u4e0e\u7eb8\u9762\u5b9e\u529b\uff08\u8499\u7279    Read More","og_url":"https:\/\/www.aitouzi.tech\/index.php\/2026\/07\/04\/641\/","og_site_name":"\u5df4\u8292\u65f6\u95f4","article_published_time":"2026-07-04T03:18:24+00:00","article_modified_time":"2026-07-04T05:04:00+00:00","author":"\u5df4\u8292\u65f6\u95f4","twitter_card":"summary_large_image","twitter_creator":"@lawsonabst","twitter_site":"@lawsonabst","twitter_misc":{"\u4f5c\u8005":"\u5df4\u8292\u65f6\u95f4","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"4 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.aitouzi.tech\/index.php\/2026\/07\/04\/641\/#article","isPartOf":{"@id":"https:\/\/www.aitouzi.tech\/index.php\/2026\/07\/04\/641\/"},"author":{"name":"\u5df4\u8292\u65f6\u95f4","@id":"https:\/\/www.aitouzi.tech\/#\/schema\/person\/d0f894200658432c1e1b63a2b44dd2b1"},"headline":"\u6839\u636e\u4e3b\u961f\u5bf9\u51b2\u4e0b\u6ce8\uff0c6000\u6b21\u8499\u7279\u5361\u6d1b\u6a21\u62df\u544a\u8bc9\u6211\u5e94\u8be5\u4e70\u2026","datePublished":"2026-07-04T03:18:24+00:00","dateModified":"2026-07-04T05:04:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.aitouzi.tech\/index.php\/2026\/07\/04\/641\/"},"wordCount":150,"commentCount":0,"publisher":{"@id":"https:\/\/www.aitouzi.tech\/#\/schema\/person\/d0f894200658432c1e1b63a2b44dd2b1"},"articleSection":["\u91cf\u5316\u6295\u8d44"],"inLanguage":"zh-Hans","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.aitouzi.tech\/index.php\/2026\/07\/04\/641\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.aitouzi.tech\/index.php\/2026\/07\/04\/641\/","url":"https:\/\/www.aitouzi.tech\/index.php\/2026\/07\/04\/641\/","name":"\u6839\u636e\u4e3b\u961f\u5bf9\u51b2\u4e0b\u6ce8\uff0c6000\u6b21\u8499\u7279\u5361\u6d1b\u6a21\u62df\u544a\u8bc9\u6211\u5e94\u8be5\u4e70\u2026 - \u5df4\u8292\u65f6\u95f4","isPartOf":{"@id":"https:\/\/www.aitouzi.tech\/#website"},"datePublished":"2026-07-04T03:18:24+00:00","dateModified":"2026-07-04T05:04:00+00:00","breadcrumb":{"@id":"https:\/\/www.aitouzi.tech\/index.php\/2026\/07\/04\/641\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.aitouzi.tech\/index.php\/2026\/07\/04\/641\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.aitouzi.tech\/index.php\/2026\/07\/04\/641\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.aitouzi.tech\/"},{"@type":"ListItem","position":2,"name":"\u6839\u636e\u4e3b\u961f\u5bf9\u51b2\u4e0b\u6ce8\uff0c6000\u6b21\u8499\u7279\u5361\u6d1b\u6a21\u62df\u544a\u8bc9\u6211\u5e94\u8be5\u4e70\u2026"}]},{"@type":"WebSite","@id":"https:\/\/www.aitouzi.tech\/#website","url":"https:\/\/www.aitouzi.tech\/","name":"\u5df4\u8292\u65f6\u95f4","description":"AI\u524d\u6cbf\u89c2\u5bdf","publisher":{"@id":"https:\/\/www.aitouzi.tech\/#\/schema\/person\/d0f894200658432c1e1b63a2b44dd2b1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.aitouzi.tech\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"zh-Hans"},{"@type":["Person","Organization"],"@id":"https:\/\/www.aitouzi.tech\/#\/schema\/person\/d0f894200658432c1e1b63a2b44dd2b1","name":"\u5df4\u8292\u65f6\u95f4","pronouns":"he","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.aitouzi.tech\/#\/schema\/person\/image\/","url":"http:\/\/101.132.154.235\/wp-content\/uploads\/2025\/12\/\u5df4\u8292\u65f6\u95f4_icon.jpg","contentUrl":"http:\/\/101.132.154.235\/wp-content\/uploads\/2025\/12\/\u5df4\u8292\u65f6\u95f4_icon.jpg","width":1280,"height":1280,"caption":"\u5df4\u8292\u65f6\u95f4"},"logo":{"@id":"https:\/\/www.aitouzi.tech\/#\/schema\/person\/image\/"},"sameAs":["http:\/\/8.136.103.5","https:\/\/x.com\/lawsonabst"],"url":"https:\/\/www.aitouzi.tech\/index.php\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/www.aitouzi.tech\/index.php\/wp-json\/wp\/v2\/posts\/641","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.aitouzi.tech\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.aitouzi.tech\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.aitouzi.tech\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.aitouzi.tech\/index.php\/wp-json\/wp\/v2\/comments?post=641"}],"version-history":[{"count":4,"href":"https:\/\/www.aitouzi.tech\/index.php\/wp-json\/wp\/v2\/posts\/641\/revisions"}],"predecessor-version":[{"id":645,"href":"https:\/\/www.aitouzi.tech\/index.php\/wp-json\/wp\/v2\/posts\/641\/revisions\/645"}],"wp:attachment":[{"href":"https:\/\/www.aitouzi.tech\/index.php\/wp-json\/wp\/v2\/media?parent=641"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.aitouzi.tech\/index.php\/wp-json\/wp\/v2\/categories?post=641"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.aitouzi.tech\/index.php\/wp-json\/wp\/v2\/tags?post=641"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}