Oct 09, 7-8 PM (9)
Oct 09, 8-9 PM (19)
Oct 09, 9-10 PM (2)
Oct 09, 10-11 PM (34)
Oct 09, 11-12 AM (16)
Oct 10, 12-1 AM (3)
Oct 10, 1-2 AM (10)
Oct 10, 2-3 AM (4)
Oct 10, 3-4 AM (11)
Oct 10, 4-5 AM (9)
Oct 10, 5-6 AM (14)
Oct 10, 6-7 AM (27)
Oct 10, 7-8 AM (32)
Oct 10, 8-9 AM (94)
Oct 10, 9-10 AM (50)
Oct 10, 10-11 AM (104)
Oct 10, 11-12 PM (37)
Oct 10, 12-1 PM (45)
Oct 10, 1-2 PM (61)
Oct 10, 2-3 PM (55)
Oct 10, 3-4 PM (43)
Oct 10, 4-5 PM (25)
Oct 10, 5-6 PM (19)
Oct 10, 6-7 PM (5)
Oct 10, 7-8 PM (27)
Oct 10, 8-9 PM (16)
Oct 10, 9-10 PM (17)
Oct 10, 10-11 PM (20)
Oct 10, 11-12 AM (15)
Oct 11, 12-1 AM (2)
Oct 11, 1-2 AM (0)
Oct 11, 2-3 AM (0)
Oct 11, 3-4 AM (3)
Oct 11, 4-5 AM (1)
Oct 11, 5-6 AM (1)
Oct 11, 6-7 AM (2)
Oct 11, 7-8 AM (1)
Oct 11, 8-9 AM (5)
Oct 11, 9-10 AM (3)
Oct 11, 10-11 AM (0)
Oct 11, 11-12 PM (1)
Oct 11, 12-1 PM (0)
Oct 11, 1-2 PM (2)
Oct 11, 2-3 PM (1)
Oct 11, 3-4 PM (5)
Oct 11, 4-5 PM (2)
Oct 11, 5-6 PM (1)
Oct 11, 6-7 PM (0)
Oct 11, 7-8 PM (6)
Oct 11, 8-9 PM (1)
Oct 11, 9-10 PM (0)
Oct 11, 10-11 PM (19)
Oct 11, 11-12 AM (22)
Oct 12, 12-1 AM (0)
Oct 12, 1-2 AM (1)
Oct 12, 2-3 AM (0)
Oct 12, 3-4 AM (4)
Oct 12, 4-5 AM (1)
Oct 12, 5-6 AM (2)
Oct 12, 6-7 AM (0)
Oct 12, 7-8 AM (0)
Oct 12, 8-9 AM (1)
Oct 12, 9-10 AM (0)
Oct 12, 10-11 AM (0)
Oct 12, 11-12 PM (2)
Oct 12, 12-1 PM (0)
Oct 12, 1-2 PM (20)
Oct 12, 2-3 PM (10)
Oct 12, 3-4 PM (3)
Oct 12, 4-5 PM (2)
Oct 12, 5-6 PM (1)
Oct 12, 6-7 PM (1)
Oct 12, 7-8 PM (0)
Oct 12, 8-9 PM (5)
Oct 12, 9-10 PM (1)
Oct 12, 10-11 PM (21)
Oct 12, 11-12 AM (18)
Oct 13, 12-1 AM (2)
Oct 13, 1-2 AM (2)
Oct 13, 2-3 AM (5)
Oct 13, 3-4 AM (7)
Oct 13, 4-5 AM (3)
Oct 13, 5-6 AM (14)
Oct 13, 6-7 AM (9)
Oct 13, 7-8 AM (48)
Oct 13, 8-9 AM (103)
Oct 13, 9-10 AM (66)
Oct 13, 10-11 AM (68)
Oct 13, 11-12 PM (42)
Oct 13, 12-1 PM (40)
Oct 13, 1-2 PM (34)
Oct 13, 2-3 PM (18)
Oct 13, 3-4 PM (39)
Oct 13, 4-5 PM (20)
Oct 13, 5-6 PM (57)
Oct 13, 6-7 PM (4)
Oct 13, 7-8 PM (27)
Oct 13, 8-9 PM (24)
Oct 13, 9-10 PM (7)
Oct 13, 10-11 PM (26)
Oct 13, 11-12 AM (15)
Oct 14, 12-1 AM (3)
Oct 14, 1-2 AM (3)
Oct 14, 2-3 AM (2)
Oct 14, 3-4 AM (6)
Oct 14, 4-5 AM (5)
Oct 14, 5-6 AM (13)
Oct 14, 6-7 AM (14)
Oct 14, 7-8 AM (39)
Oct 14, 8-9 AM (69)
Oct 14, 9-10 AM (60)
Oct 14, 10-11 AM (41)
Oct 14, 11-12 PM (31)
Oct 14, 12-1 PM (102)
Oct 14, 1-2 PM (41)
Oct 14, 2-3 PM (62)
Oct 14, 3-4 PM (27)
Oct 14, 4-5 PM (25)
Oct 14, 5-6 PM (45)
Oct 14, 6-7 PM (20)
Oct 14, 7-8 PM (12)
Oct 14, 8-9 PM (10)
Oct 14, 9-10 PM (7)
Oct 14, 10-11 PM (33)
Oct 14, 11-12 AM (24)
Oct 15, 12-1 AM (18)
Oct 15, 1-2 AM (12)
Oct 15, 2-3 AM (5)
Oct 15, 3-4 AM (8)
Oct 15, 4-5 AM (1)
Oct 15, 5-6 AM (3)
Oct 15, 6-7 AM (42)
Oct 15, 7-8 AM (42)
Oct 15, 8-9 AM (47)
Oct 15, 9-10 AM (101)
Oct 15, 10-11 AM (38)
Oct 15, 11-12 PM (74)
Oct 15, 12-1 PM (63)
Oct 15, 1-2 PM (43)
Oct 15, 2-3 PM (34)
Oct 15, 3-4 PM (10)
Oct 15, 4-5 PM (16)
Oct 15, 5-6 PM (11)
Oct 15, 6-7 PM (16)
Oct 15, 7-8 PM (3)
Oct 15, 8-9 PM (8)
Oct 15, 9-10 PM (12)
Oct 15, 10-11 PM (25)
Oct 15, 11-12 AM (12)
Oct 16, 12-1 AM (5)
Oct 16, 1-2 AM (7)
Oct 16, 2-3 AM (7)
Oct 16, 3-4 AM (39)
Oct 16, 4-5 AM (4)
Oct 16, 5-6 AM (16)
Oct 16, 6-7 AM (49)
Oct 16, 7-8 AM (40)
Oct 16, 8-9 AM (58)
Oct 16, 9-10 AM (50)
Oct 16, 10-11 AM (56)
Oct 16, 11-12 PM (45)
Oct 16, 12-1 PM (89)
Oct 16, 1-2 PM (27)
Oct 16, 2-3 PM (40)
Oct 16, 3-4 PM (39)
Oct 16, 4-5 PM (43)
Oct 16, 5-6 PM (24)
Oct 16, 6-7 PM (11)
Oct 16, 7-8 PM (5)
3,657 commits this week Oct 09, 2025 - Oct 16, 2025
refactor: move parsing logic of epoch/latest[offset] to `Epoch` type
So it can be re-used accross crates.

- `EpochSpecifier` enum to represents the cases between <{uint}, 'latest',
  latest-{uint}>
- add `Epoch::parse_specifier`
- impl `FromStr` to epoch to avoid having downstream code specifying the
  inner type of the epoch when parsing from str
- update aggregator `ExpandedEpoch` logic