Buckets:
| <html lang="en"> | |
| <head> | |
| <meta charset="utf-8" /> | |
| <meta name="viewport" content="width=device-width, initial-scale=1" /> | |
| <meta name="color-scheme" content="light" /> | |
| <title>The Decision Atlas | Trainable OT-DRO reproduction</title> | |
| <link rel="stylesheet" href="styles.css" /> | |
| </head> | |
| <body> | |
| <a class="skip" href="#main">Skip to the atlas</a> | |
| <header class="masthead"> | |
| <div class="mast-grid" aria-hidden="true"></div> | |
| <div class="mast-copy"> | |
| <div id="evidence-gate" class="dev-gate" role="status" aria-live="polite"><span>Preview</span> data binding pending</div> | |
| <p class="kicker">ICML 2026 reproduction · interactive field guide</p> | |
| <h1>The Decision Atlas</h1> | |
| <p class="dek">A forecast will never be exact. A robust optimizer decides which errors to prepare for. This paper teaches it which errors matter.</p> | |
| <a class="enter-lab" href="#atlas-game">Shape the uncertainty map</a> | |
| </div> | |
| <div class="atlas-mark" aria-label="A contour map changing from a generic circle to a loss-shaped ellipse"> | |
| <svg viewBox="0 0 420 300" role="img" aria-labelledby="atlas-title atlas-desc"> | |
| <title id="atlas-title">Loss bends the uncertainty map</title> | |
| <desc id="atlas-desc">Nested round contours transition into rotated ellipses around a decision point.</desc> | |
| <g class="contours round"> | |
| <ellipse cx="135" cy="150" rx="96" ry="96"></ellipse> | |
| <ellipse cx="135" cy="150" rx="70" ry="70"></ellipse> | |
| <ellipse cx="135" cy="150" rx="42" ry="42"></ellipse> | |
| </g> | |
| <path class="route" d="M50 245 C115 220 150 170 205 154 S315 110 372 52"></path> | |
| <g class="contours learned" transform="rotate(-24 290 136)"> | |
| <ellipse cx="290" cy="136" rx="105" ry="51"></ellipse> | |
| <ellipse cx="290" cy="136" rx="78" ry="37"></ellipse> | |
| <ellipse cx="290" cy="136" rx="47" ry="21"></ellipse> | |
| </g> | |
| <circle class="decision" cx="205" cy="154" r="8"></circle> | |
| <text x="38" y="282">fixed distance</text> | |
| <text x="276" y="282">loss-shaped distance</text> | |
| </svg> | |
| </div> | |
| </header> | |
| <main id="main"> | |
| <section class="scene" aria-labelledby="scene-1"> | |
| <div class="scene-no"><b>01</b> meet the decision</div> | |
| <div class="scene-body"> | |
| <h2 id="scene-1">Tomorrow's forecast will be wrong. Which errors should you pay to survive?</h2> | |
| <p class="lede">You manage a tiny $100 portfolio. A reserve bond earns little but changes slowly. A growth stock can earn more, but a bad forecast hurts the money placed in it. Before the market opens, you must split the $100 between them.</p> | |
| <div class="mission-brief"> | |
| <div><span>What you control</span><b>How much of the $100 goes into each asset</b></div> | |
| <div><span>What can go wrong</span><b>Tomorrow's returns differ from the forecast</b></div> | |
| <div><span>Your goal</span><b>Keep the forecasted gain without buying protection against every possible error</b></div> | |
| </div> | |
| <div class="starter-lab" aria-label="Two-shift portfolio introduction"> | |
| <div class="starter-console"> | |
| <p class="console-label">Step 1 · split your $100</p> | |
| <label for="allocation-range">Growth stock <span><output id="allocation-output" for="allocation-range">60</output>%</span></label> | |
| <input id="allocation-range" type="range" min="10" max="90" value="60" /> | |
| <div class="allocation-bar" aria-hidden="true"><span id="stable-share"></span><span id="growth-share"></span></div> | |
| <div class="allocation-labels"><span>Reserve bond <b>$<i id="stable-value">40</i></b></span><span>Growth stock <b>$<i id="growth-value">60</i></b></span></div> | |
| <div class="forecast-card"> | |
| <span>If the forecast is right</span> | |
| <strong id="forecast-gain">+$8.40</strong> | |
| <small>Bond earns 3%. Growth earns 12%.</small> | |
| </div> | |
| <p class="console-label shift-label">Step 2 · break one forecast</p> | |
| <div class="shift-buttons" role="group" aria-label="Choose an equally distant forecast shift"> | |
| <button type="button" data-shift="bond" aria-pressed="false"><b>Error A</b><span>Bond return falls 20 points</span></button> | |
| <button type="button" data-shift="growth" aria-pressed="false"><b>Error B</b><span>Growth return falls 20 points</span></button> | |
| </div> | |
| </div> | |
| <div class="starter-map"> | |
| <svg viewBox="0 0 620 350" role="img" aria-labelledby="starter-title starter-desc"> | |
| <title id="starter-title">Two equally distant forecast shifts</title> | |
| <desc id="starter-desc">A bond error and a growth error move the same distance from the observed forecast.</desc> | |
| <path class="starter-axis" d="M82 292V42M52 260H566"></path> | |
| <text x="454" y="292">growth return</text> | |
| <text x="18" y="44">bond return</text> | |
| <circle class="distance-ring" cx="292" cy="172" r="112"></circle> | |
| <circle class="observed-point" cx="292" cy="172" r="11"></circle> | |
| <text x="306" y="166">tomorrow's forecast</text> | |
| <path class="shift-path shift-a" d="M292 172L292 284"></path> | |
| <path class="shift-path shift-b" d="M292 172L180 172"></path> | |
| <g id="shift-a-point" class="starter-point" transform="translate(292 284)"><circle r="13"></circle><text x="20" y="5">A</text></g> | |
| <g id="shift-b-point" class="starter-point" transform="translate(180 172)"><circle r="13"></circle><text x="20" y="5">B</text></g> | |
| </svg> | |
| <div class="loss-comparison"> | |
| <div><span>Distance from forecast</span><strong>A = B = 20</strong></div> | |
| <div><span>Money lost</span><strong id="starter-loss">Test A or B</strong></div> | |
| </div> | |
| <p id="starter-message" class="starter-message" aria-live="polite">The map calls these errors equally large. Click each one and see whether your portfolio agrees.</p> | |
| </div> | |
| </div> | |
| <div class="margin-note"><b>What the robust optimizer does.</b> It refuses to trust one forecast. It considers a neighborhood of plausible returns, then chooses the portfolio with the best outcome under the worst one. A fixed map calls errors A and B equally plausible because both move 20 points. Your portfolio sees something else: the loss follows where you placed the money.</div> | |
| <div class="first-question"><span>The question</span><strong>If two errors are equally far from the forecast but cause different losses, should the optimizer defend them equally?</strong></div> | |
| <div class="paper-move"><span>The paper's move</span><strong>Learn the meaning of distance from the decision's own loss.</strong><p>A dangerous shift becomes expensive to ignore. A harmless shift stops consuming the same protection budget.</p></div> | |
| <div class="terms" aria-label="Key vocabulary"> | |
| <details><summary>Decision x</summary><p>Your two portfolio weights: the fraction in the reserve bond and the fraction in the growth stock.</p></details> | |
| <details><summary>Uncertain return ξ</summary><p>The pair of bond and growth returns that actually arrives tomorrow.</p></details> | |
| <details><summary>Metric M</summary><p>The rule that tells the robust optimizer how large or costly each forecast error is.</p></details> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="scene game-scene" id="atlas-game" aria-labelledby="scene-2"> | |
| <div class="scene-no"><b>02</b> field trial</div> | |
| <div class="scene-body"> | |
| <h2 id="scene-2">Can you protect the decision without defending every direction?</h2> | |
| <p class="lede">Choose a map, then release three market shifts. This sandbox exposes geometric reach; it does not report method performance.</p> | |
| <div class="atlas-game" aria-label="Interactive uncertainty-map challenge"> | |
| <div class="game-topline"> | |
| <div><span>Round</span><strong id="round-count">1 / 3</strong></div> | |
| <div><span>Map reach</span><strong id="atlas-score">0 / 3</strong></div> | |
| <div><span>Protected area</span><strong id="protection-cost">0.0</strong></div> | |
| </div> | |
| <div class="game-layout"> | |
| <div class="game-map-wrap"> | |
| <svg id="game-map" viewBox="0 0 760 430" role="img" aria-labelledby="game-title game-desc"> | |
| <title id="game-title">Risk cartography game board</title> | |
| <desc id="game-desc">Choose an uncertainty geometry and test it against three market shifts.</desc> | |
| <defs> | |
| <pattern id="small-grid" width="34" height="34" patternUnits="userSpaceOnUse"> | |
| <path d="M34 0H0V34" fill="none" stroke="rgba(255,255,255,.1)" stroke-width="1"></path> | |
| </pattern> | |
| <filter id="glow"><feGaussianBlur stdDeviation="5" result="blur"></feGaussianBlur><feMerge><feMergeNode in="blur"></feMergeNode><feMergeNode in="SourceGraphic"></feMergeNode></feMerge></filter> | |
| </defs> | |
| <rect width="760" height="430" fill="url(#small-grid)"></rect> | |
| <path class="loss-coast" d="M60 350 C185 318 245 250 332 244 C446 235 510 154 698 62"></path> | |
| <path class="safe-route" d="M76 358 C190 332 266 275 346 258 C486 228 552 142 686 78"></path> | |
| <g class="game-samples" aria-hidden="true"> | |
| <circle cx="250" cy="275" r="5"></circle><circle cx="284" cy="239" r="5"></circle> | |
| <circle cx="318" cy="270" r="5"></circle><circle cx="348" cy="212" r="5"></circle> | |
| <circle cx="382" cy="234" r="5"></circle><circle cx="416" cy="178" r="5"></circle> | |
| <circle cx="454" cy="200" r="5"></circle><circle cx="492" cy="144" r="5"></circle> | |
| </g> | |
| <g id="game-contours" class="game-shape-round"> | |
| <ellipse cx="374" cy="224" rx="210" ry="138"></ellipse> | |
| <ellipse cx="374" cy="224" rx="158" ry="102"></ellipse> | |
| <ellipse cx="374" cy="224" rx="102" ry="64"></ellipse> | |
| </g> | |
| <g id="shift-probe" class="probe idle" transform="translate(180 295)"> | |
| <circle r="12"></circle><circle class="probe-ring" r="22"></circle> | |
| </g> | |
| <g id="decision-token" transform="translate(374 224)"> | |
| <circle r="13"></circle><path d="M-4 0l3 4 7-10"></path> | |
| </g> | |
| <text x="58" y="394">lower decision loss</text> | |
| <text x="548" y="46">higher decision loss</text> | |
| </svg> | |
| <div class="game-caption">Interactive intuition. The scored reproduction uses the paper's full experiment matrix.</div> | |
| </div> | |
| <div class="game-console"> | |
| <p class="console-label">Choose the rule for distance</p> | |
| <div class="map-controls" role="group" aria-label="Choose an uncertainty geometry"> | |
| <button type="button" data-game-map="round" aria-pressed="true"><b>Equal defense</b><span>Same price in every direction</span></button> | |
| <button type="button" data-game-map="tail" aria-pressed="false"><b>Tail defense</b><span>Stretch toward a known risk</span></button> | |
| <button type="button" data-game-map="learned" aria-pressed="false"><b>Loss-aligned hypothesis</b><span>Rotate an anisotropic map toward the drawn loss direction</span></button> | |
| </div> | |
| <label class="budget-control" for="budget-range"> | |
| <span>Protection budget</span> | |
| <input id="budget-range" type="range" min="35" max="85" value="58" /> | |
| <output id="budget-output" for="budget-range">58</output> | |
| </label> | |
| <button id="stress-test" class="launch-button" type="button">Release shift 1</button> | |
| <button id="game-reset" class="quiet-button" type="button">Reset trial</button> | |
| <div id="game-message" class="game-message" aria-live="polite">Pick a geometry, set a budget, and release the first shift.</div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="scene prediction" aria-labelledby="scene-3"> | |
| <div class="scene-no"><b>03</b> make the call</div> | |
| <div class="scene-body"> | |
| <h2 id="scene-3">Which map should cut wasted protection while preserving coverage?</h2> | |
| <div class="prediction-grid" role="group" aria-label="Commit a prediction"> | |
| <button type="button" data-predict="generic">Keep distance fixed</button> | |
| <button type="button" data-predict="tail">Hand-design the tail</button> | |
| <button type="button" data-predict="learned">Learn distance from loss</button> | |
| </div> | |
| <div id="prediction-reveal" class="reveal" aria-live="polite">Choose before opening the paper's move.</div> | |
| </div> | |
| </section> | |
| <section class="scene loop" aria-labelledby="scene-4"> | |
| <div class="scene-no"><b>04</b> train the map</div> | |
| <div class="scene-body"> | |
| <h2 id="scene-4">Run one bilevel learning step.</h2> | |
| <p class="lede">A training step passes through four linked instruments. Each click changes the object the next stage receives.</p> | |
| <div class="training-board"> | |
| <div class="training-visual" aria-label="Animated bilevel training instrument"> | |
| <svg id="training-svg" viewBox="0 0 720 400" role="img" aria-labelledby="training-title training-desc"> | |
| <title id="training-title">One bilevel optimization step</title> | |
| <desc id="training-desc">The transport metric, robust decision, loss, and hypergradient update in sequence.</desc> | |
| <rect class="instrument-grid" x="1" y="1" width="718" height="398"></rect> | |
| <g class="metric-dial" transform="translate(172 198)"> | |
| <circle class="dial-ring" r="112"></circle> | |
| <ellipse id="training-ellipse" rx="88" ry="88"></ellipse> | |
| <line id="metric-axis" x1="-70" y1="0" x2="70" y2="0"></line> | |
| <text x="-76" y="150">transport geometry M</text> | |
| </g> | |
| <path class="signal-line" d="M292 198H364"></path> | |
| <g class="decision-dial" transform="translate(434 198)"> | |
| <circle class="dial-ring" r="78"></circle> | |
| <path class="loss-arc" d="M-52 42 Q0-88 52 42"></path> | |
| <line id="decision-needle" x1="0" y1="18" x2="0" y2="-54"></line> | |
| <circle r="9"></circle> | |
| <text x="-57" y="116">robust decision x*</text> | |
| </g> | |
| <g class="loss-meter" transform="translate(570 92)"> | |
| <text x="0" y="0">validation loss</text> | |
| <rect x="0" y="18" width="92" height="190"></rect> | |
| <rect id="loss-fill" x="0" y="65" width="92" height="143"></rect> | |
| <text id="loss-value" x="46" y="238" text-anchor="middle">high</text> | |
| </g> | |
| <path id="gradient-arrow" class="gradient-arrow" d="M616 310 C520 370 290 360 220 302"></path> | |
| <text class="gradient-label" x="370" y="376">hypergradient updates M</text> | |
| </svg> | |
| </div> | |
| <div class="training-console"> | |
| <div class="step-readout"><span>Stage</span><strong id="stage-number">1 / 4</strong></div> | |
| <h3 id="stage-title">Start with a positive metric</h3> | |
| <p id="stage-copy">The first map treats every direction equally. The inner problem receives this geometry.</p> | |
| <div class="training-trace" aria-label="Training step progress"> | |
| <button type="button" data-loop="0" class="active" aria-pressed="true">Metric</button> | |
| <button type="button" data-loop="1" aria-pressed="false">Decision</button> | |
| <button type="button" data-loop="2" aria-pressed="false">Loss</button> | |
| <button type="button" data-loop="3" aria-pressed="false">Update</button> | |
| </div> | |
| <button id="loop-next" class="launch-button" type="button">Solve the inner problem</button> | |
| <button id="loop-reset" class="quiet-button" type="button">Start again</button> | |
| </div> | |
| </div> | |
| <details class="technical-drawer"> | |
| <summary>Open the mathematical view</summary> | |
| <div class="equation technical-equations" aria-label="Bilevel OT-DRO formulation"> | |
| <span>set</span><code>U<sub>ε</sub>(L) = {Q : W<sub>c<sub>L</sub></sub>(Q, P̂<sub>n</sub>) ≤ ε}</code> | |
| <span>cost</span><code>c<sub>L</sub>(ξ,ζ) = ||L<sup>T</sup>(ξ−ζ)||<sub>2</sub><sup>p</sup>, M = LL<sup>T</sup> ⪰ 0</code> | |
| <span>outer</span><code>Φ(L) = ℓ<sub>val</sub>(x*(L),L)</code> | |
| <span>gradient</span><code>∇<sub>L</sub>Φ = ∂<sub>L</sub>ℓ<sub>val</sub> + (∂<sub>x</sub>ℓ<sub>val</sub>)(∂x*/∂L)</code> | |
| <span>update</span><code>L<sub>t+1</sub> = Π<sub>PSD/factor</sub>[L<sub>t</sub> − η<sub>t</sub> clip(∇<sub>L</sub>Φ)]</code> | |
| <span>radius</span><code>ε is calibrated by the frozen bootstrap rule for each route and sample size.</code> | |
| </div> | |
| <div class="route-table" aria-label="Exact robust optimization routes"> | |
| <div><b>Gaussian portfolio</b><span>Gelbrich / W2 ambiguity + SOCP CVaR</span></div> | |
| <div><b>Empirical portfolio</b><span>W1 ambiguity + portfolio loss route</span></div> | |
| <div><b>Absolute regression</b><span>W1 ambiguity + absolute loss</span></div> | |
| <div><b>Squared regression</b><span>W2 ambiguity + squared loss</span></div> | |
| </div> | |
| <p class="drawer-boundary"><b>Implementation boundary.</b> Cholesky-factor updates preserve the PSD parameterization; projection, eigenvalue clipping, and finite stopping make the executed recurrence distinct from the theorem's ideal route. Bound panels report the learned geometry, radius, solver route, and downstream loss jointly.</p> | |
| </details> | |
| </div> | |
| </section> | |
| <section class="scene contract" aria-labelledby="scene-5"> | |
| <div class="scene-no"><b>05</b> open the evidence</div> | |
| <div class="scene-body"> | |
| <h2 id="scene-5">We asked six exact questions, then let the failures stay visible.</h2> | |
| <p class="lede">The judge scores the six anchored claims below. The reproduction covers 14,000 task identities. Five controller exceptions were recovered under an append-only attestation, then substituted exactly once.</p> | |
| <div class="contract-grid"> | |
| <article><b>Validated rows</b><strong id="matrix-rows">14,000</strong><span>exact manifest membership</span></article> | |
| <article><b>Recovered rows</b><strong id="matrix-recovered">5</strong><span>scientifically identical replacements</span></article> | |
| <article><b>Rejected rows</b><strong id="matrix-rejected">0</strong><span>fail-closed reconciliation</span></article> | |
| <article><b>Iteration cap</b><strong>5,000</strong><span>cap hits stay right-censored</span></article> | |
| </div> | |
| <div class="receipt-line"><b>Saved for every run:</b> solver status · residuals · geometry · decision · out-of-sample loss · timing · failure reason</div> | |
| <div id="matrix-state" class="matrix-state" hidden><span>Sealed analysis</span><strong></strong><p></p></div> | |
| <nav id="claim-nav" class="claim-nav" aria-label="Six official claim pages"> | |
| <a href="#claim-A1">A1 · formulation</a><a href="#claim-A2">A2 · theorem</a><a href="#claim-A3">A3 · hypergradient</a><a href="#claim-A4">A4 · Figure 2</a><a href="#claim-A5">A5 · coverage</a><a href="#claim-A6">A6 · regression</a> | |
| </nav> | |
| <div id="claim-results" class="claim-pages" aria-label="Six official claim verdicts" hidden> | |
| <section id="claim-A1" class="claim-page" data-claim-id="A1"><div class="claim-index">A1</div><div class="claim-copy"><span class="claim-verdict"></span><h3></h3><p class="claim-answer"></p><details><summary>Read the official claim and audit boundary</summary><p class="official-claim"></p><p class="claim-downgrade"></p></details></div><dl class="claim-facts"></dl></section> | |
| <section id="claim-A2" class="claim-page" data-claim-id="A2"><div class="claim-index">A2</div><div class="claim-copy"><span class="claim-verdict"></span><h3></h3><p class="claim-answer"></p><details><summary>Read the official claim and audit boundary</summary><p class="official-claim"></p><p class="claim-downgrade"></p></details></div><dl class="claim-facts"></dl></section> | |
| <section id="claim-A3" class="claim-page" data-claim-id="A3"><div class="claim-index">A3</div><div class="claim-copy"><span class="claim-verdict"></span><h3></h3><p class="claim-answer"></p><details><summary>Read the official claim and audit boundary</summary><p class="official-claim"></p><p class="claim-downgrade"></p></details></div><dl class="claim-facts"></dl></section> | |
| <section id="claim-A4" class="claim-page" data-claim-id="A4"><div class="claim-index">A4</div><div class="claim-copy"><span class="claim-verdict"></span><h3></h3><p class="claim-answer"></p><details><summary>Read the official claim and audit boundary</summary><p class="official-claim"></p><p class="claim-downgrade"></p></details></div><dl class="claim-facts"></dl></section> | |
| <section id="claim-A5" class="claim-page" data-claim-id="A5"><div class="claim-index">A5</div><div class="claim-copy"><span class="claim-verdict"></span><h3></h3><p class="claim-answer"></p><details><summary>Read the official claim and audit boundary</summary><p class="official-claim"></p><p class="claim-downgrade"></p></details></div><dl class="claim-facts"></dl></section> | |
| <section id="claim-A6" class="claim-page" data-claim-id="A6"><div class="claim-index">A6</div><div class="claim-copy"><span class="claim-verdict"></span><h3></h3><p class="claim-answer"></p><details><summary>Read the official claim and audit boundary</summary><p class="official-claim"></p><p class="claim-downgrade"></p></details></div><dl class="claim-facts"></dl></section> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="scene evidence-lab" aria-labelledby="scene-6"> | |
| <div class="scene-no"><b>06</b> inspect the tension</div> | |
| <div class="scene-body"> | |
| <h2 id="scene-6">Move through sample size. Watch the target refuse to move.</h2> | |
| <p class="lede">The chart uses distribution-first means and 95% bootstrap intervals from the sealed aggregate. Switch between the coverage claim and the regression claim, then scrub the sample size.</p> | |
| <div id="figure-results" class="evidence-instrument" aria-label="Interactive evidence chart" hidden> | |
| <div class="instrument-controls"> | |
| <div role="group" aria-label="Choose a claim trace"><button type="button" data-chart="coverage" aria-pressed="true">A5 coverage</button><button type="button" data-chart="regression" aria-pressed="false">A6 regression</button></div> | |
| <label for="evidence-step">Sample-size index <output id="evidence-step-output" for="evidence-step">1</output></label> | |
| <input id="evidence-step" type="range" min="0" max="9" value="0" /> | |
| <div id="evidence-readout" class="evidence-readout" aria-live="polite"></div> | |
| </div> | |
| <div class="instrument-chart"><svg id="evidence-chart" viewBox="0 0 760 420" role="img" aria-labelledby="chart-title chart-desc"><title id="chart-title">Distribution-first evidence by sample size</title><desc id="chart-desc">Means, confidence intervals, and the predeclared target for the selected claim.</desc></svg></div> | |
| </div> | |
| <div id="censoring-result" class="censoring-result" hidden><div><span>Censoring audit</span><strong></strong></div><p></p></div> | |
| <div class="theorem-limit"><span>A2 boundary</span><h3>The strongest result here is knowing which question the experiment cannot answer.</h3><p>A finite capped trace can diagnose an implementation. It cannot prove the infinite-horizon conclusion in Theorem 5.1, especially when the executed recurrence includes clipping, projection, refactorization, and finite stopping.</p><div id="theorem-result">The pinned theorem audit keeps A2 inconclusive.</div></div> | |
| <section id="provenance-results" class="provenance-results" aria-label="Reproduction provenance" hidden></section> | |
| <p class="closing">The learned geometry is real enough to test, but the exact paper claims demand more than a good-looking curve.</p> | |
| </div> | |
| </section> | |
| </main> | |
| <footer> | |
| <span>Trainable OT-DRO · OpenReview K1EPPO9t2c</span> | |
| <span>Independent reproduction · scripts, raw runs, and audit trail</span> | |
| </footer> | |
| <script src="evidence-data.js"></script> | |
| <script src="app.js"></script> | |
| </body> | |
| </html> | |
Xet Storage Details
- Size:
- 25.7 kB
- Xet hash:
- 7d5ce74441fd755147bdbbd1ed3dae07aa3723bea37223c5d4142c5b4f0effc4
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.