offset: sat.third(), rarity: sat.rarity(), percentile: sat.percentile(), satpoint, timestamp: blocktime.timestamp().timestamp(), inscriptions, }) .into_response() } else { SatHtml { sat, satpoint, blocktime, inscriptions, } .page(page_config) .into_response() }) } async fn ordinal(Path(sat): Path) -> Redirect { Redirect::to(&format!("/sat/{sat}")) } async fn output( Extension(page_config): Extension>, Extension(index): Extension>, Path(outpoint): Path, accept_json: AcceptJson, ) -> ServerResult { let list = index.list(outpoint)?; let output = if outpoint == OutPoint::null() || outpoint == unbound_outpoint() { let mut value = 0; if let Some(List::Unspent(ranges)) = &list { for (start, end) in ranges { value += end - start; } } TxOut { value,