LCOV - code coverage report
Current view: top level - discof/restore/utils - fd_ssmanifest_parser.c (source / functions) Hit Total Coverage
Test: cov.lcov Lines: 0 1500 0.0 %
Date: 2025-09-19 04:41:14 Functions: 0 11 0.0 %

          Line data    Source code
       1             : #include "fd_ssmanifest_parser.h"
       2             : 
       3             : #include "fd_ssmsg.h"
       4             : 
       5             : #include "../../../util/log/fd_log.h"
       6             : 
       7             : struct acc_vec_key {
       8             :   ulong slot;
       9             :   ulong id;
      10             : };
      11             : 
      12             : typedef struct acc_vec_key acc_vec_key_t;
      13             : 
      14             : struct acc_vec {
      15             :   acc_vec_key_t key;
      16             :   ulong         file_sz;
      17             : 
      18             :   ulong         map_next;
      19             :   ulong         map_prev;
      20             : 
      21             :   ulong         pool_next;
      22             : };
      23             : 
      24             : typedef struct acc_vec acc_vec_t;
      25             : 
      26             : #define POOL_NAME  acc_vec_pool
      27           0 : #define POOL_T     acc_vec_t
      28           0 : #define POOL_NEXT  pool_next
      29             : #define POOL_IDX_T ulong
      30             : 
      31             : #include "../../../util/tmpl/fd_pool.c"
      32             : 
      33             : #define MAP_NAME          acc_vec_map
      34             : #define MAP_ELE_T         acc_vec_t
      35             : #define MAP_KEY_T         acc_vec_key_t
      36           0 : #define MAP_KEY           key
      37           0 : #define MAP_IDX_T         ulong
      38           0 : #define MAP_NEXT          map_next
      39             : #define MAP_PREV          map_prev
      40           0 : #define MAP_KEY_HASH(k,s) fd_hash( s, k, sizeof(acc_vec_key_t) )
      41           0 : #define MAP_KEY_EQ(k0,k1) ( ((k0)->slot==(k1)->slot) && ((k0)->id==(k1)->id) )
      42             : 
      43             : #include "../../../util/tmpl/fd_map_chain.c"
      44             : 
      45             : #define SSMANIFEST_DEBUG 0
      46             : 
      47           0 : #define STATE_BLOCKHASH_QUEUE_LAST_HASH_INDEX                                                         (  0)
      48           0 : #define STATE_BLOCKHASH_QUEUE_LAST_HASH_OPTION                                                        (  1)
      49           0 : #define STATE_BLOCKHASH_QUEUE_LAST_HASH                                                               (  2)
      50           0 : #define STATE_BLOCKHASH_QUEUE_AGES_LENGTH                                                             (  3)
      51           0 : #define STATE_BLOCKHASH_QUEUE_AGES_HASH                                                               (  4)
      52           0 : #define STATE_BLOCKHASH_QUEUE_AGES_LAMPORTS_PER_SIGNATURE                                             (  5)
      53           0 : #define STATE_BLOCKHASH_QUEUE_AGES_HASH_INDEX                                                         (  6)
      54           0 : #define STATE_BLOCKHASH_QUEUE_AGES_TIMESTAMP                                                          (  7)
      55           0 : #define STATE_BLOCKHASH_QUEUE_MAX_AGE                                                                 (  8)
      56           0 : #define STATE_ANCESTORS_LENGTH                                                                        (  9)
      57           0 : #define STATE_ANCESTORS                                                                               ( 10)
      58           0 : #define STATE_HASH                                                                                    ( 11)
      59           0 : #define STATE_PARENT_HASH                                                                             ( 12)
      60           0 : #define STATE_PARENT_SLOT                                                                             ( 13)
      61           0 : #define STATE_HARD_FORKS_LENGTH                                                                       ( 14)
      62           0 : #define STATE_HARD_FORKS_SLOT                                                                         ( 15)
      63           0 : #define STATE_HARD_FORKS_VAL                                                                          ( 16)
      64           0 : #define STATE_TRANSACTION_COUNT                                                                       ( 17)
      65           0 : #define STATE_TICK_HEIGHT                                                                             ( 18)
      66           0 : #define STATE_SIGNATURE_COUNT                                                                         ( 19)
      67           0 : #define STATE_CAPITALIZATION                                                                          ( 20)
      68           0 : #define STATE_MAX_TICK_HEIGHT                                                                         ( 21)
      69           0 : #define STATE_HASHES_PER_TICK_OPTION                                                                  ( 22)
      70           0 : #define STATE_HASHES_PER_TICK                                                                         ( 23)
      71           0 : #define STATE_TICKS_PER_SLOT                                                                          ( 24)
      72           0 : #define STATE_NS_PER_SLOT                                                                             ( 25)
      73           0 : #define STATE_GENSIS_CREATION_TIME                                                                    ( 26)
      74           0 : #define STATE_SLOTS_PER_YEAR                                                                          ( 27)
      75           0 : #define STATE_ACCOUNTS_DATA_LEN                                                                       ( 28)
      76           0 : #define STATE_SLOT                                                                                    ( 29)
      77           0 : #define STATE_EPOCH                                                                                   ( 30)
      78           0 : #define STATE_BLOCK_HEIGHT                                                                            ( 31)
      79           0 : #define STATE_COLLECTOR_ID                                                                            ( 32)
      80           0 : #define STATE_COLLECTOR_FEES                                                                          ( 33)
      81           0 : #define STATE_FEE_COLLECTOR_LAMPORTS_PER_SIGNATURE                                                    ( 34)
      82           0 : #define STATE_FEE_RATE_GOVERNOR_TARGET_LAMPORTS_PER_SIGNATURE                                         ( 35)
      83           0 : #define STATE_FEE_RATE_GOVERNOR_TARGET_SIGNATURES_PER_SLOT                                            ( 36)
      84           0 : #define STATE_FEE_RATE_GOVERNOR_MIN_LAMPORTS_PER_SIGNATURE                                            ( 37)
      85           0 : #define STATE_FEE_RATE_GOVERNOR_MAX_LAMPORTS_PER_SIGNATURE                                            ( 38)
      86           0 : #define STATE_FEE_RATE_GOVERNOR_BURN_PERCENT                                                          ( 39)
      87           0 : #define STATE_COLLECTED_RENT                                                                          ( 40)
      88           0 : #define STATE_RENT_COLLECTOR_EPOCH                                                                    ( 41)
      89           0 : #define STATE_RENT_COLLECTOR_EPOCH_SCHEDULE_SLOTS_PER_EPOCH                                           ( 42)
      90           0 : #define STATE_RENT_COLLECTOR_EPOCH_SCHEDULE_LEADER_SCHEDULE_SLOT_OFFSET                               ( 43)
      91           0 : #define STATE_RENT_COLLECTOR_EPOCH_SCHEDULE_WARMUP                                                    ( 44)
      92           0 : #define STATE_RENT_COLLECTOR_EPOCH_SCHEDULE_FIRST_NORMAL_EPOCH                                        ( 45)
      93           0 : #define STATE_RENT_COLLECTOR_EPOCH_SCHEDULE_FIRST_NORMAL_SLOT                                         ( 46)
      94           0 : #define STATE_RENT_COLLECTOR_SLOTS_PER_YEAR                                                           ( 47)
      95           0 : #define STATE_RENT_COLLECTOR_RENT_LAMPORTS_PER_UINT8_YEAR                                             ( 48)
      96           0 : #define STATE_RENT_COLLECTOR_RENT_EXEMPTION_THRESHOLD                                                 ( 49)
      97           0 : #define STATE_RENT_COLLECTOR_RENT_BURN_PERCENT                                                        ( 50)
      98           0 : #define STATE_EPOCH_SCHEDULE_SLOTS_PER_EPOCH                                                          ( 51)
      99           0 : #define STATE_EPOCH_SCHEDULE_LEADER_SCHEDULE_SLOT_OFFSET                                              ( 52)
     100           0 : #define STATE_EPOCH_SCHEDULE_WARMUP                                                                   ( 53)
     101           0 : #define STATE_EPOCH_SCHEDULE_FIRST_NORMAL_EPOCH                                                       ( 54)
     102           0 : #define STATE_EPOCH_SCHEDULE_FIRST_NORMAL_SLOT                                                        ( 55)
     103           0 : #define STATE_INFLATION_INITIAL                                                                       ( 56)
     104           0 : #define STATE_INFLATION_TERMINAL                                                                      ( 57)
     105           0 : #define STATE_INFLATION_TAPER                                                                         ( 58)
     106           0 : #define STATE_INFLATION_FOUNDATION                                                                    ( 59)
     107           0 : #define STATE_INFLATION_FOUNDATION_TERM                                                               ( 60)
     108           0 : #define STATE_INFLATION_UNUSED                                                                        ( 61)
     109           0 : #define STATE_STAKES_VOTE_ACCOUNTS_LENGTH                                                             ( 62)
     110           0 : #define STATE_STAKES_VOTE_ACCOUNTS_KEY                                                                ( 63)
     111           0 : #define STATE_STAKES_VOTE_ACCOUNTS_STAKE                                                              ( 64)
     112           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_LAMPORTS                                                     ( 65)
     113           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_LENGTH                                                  ( 66)
     114           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_VARIANT                                                 ( 67)
     115           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_NODE_PUBKEY                                     ( 68)
     116           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_AUTHORIZED_WITHDRAWER                           ( 69)
     117           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_COMMISSION                                      ( 70)
     118           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_VOTES_LENGTH                                    ( 71)
     119           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_VOTES                                           ( 72)
     120           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_ROOT_SLOT_OPTION                                ( 73)
     121           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_ROOT_SLOT                                       ( 74)
     122           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_AUTHORIZED_VOTERS_LENGTH                        ( 75)
     123           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_AUTHORIZED_VOTERS                               ( 76)
     124           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_PRIOR_VOTERS                                    ( 77)
     125           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_EPOCH_CREDITS_LENGTH                            ( 78)
     126           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_EPOCH_CREDITS                                   ( 79)
     127           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_LAST_TIMESTAMP_SLOT                             ( 80)
     128           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_LAST_TIMESTAMP_TIMESTAMP                        ( 81)
     129           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_NODE_PUBKEY                                      ( 82)
     130           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_WITHDRAWER                            ( 83)
     131           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_COMMISSION                                       ( 84)
     132           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_VOTES_LENGTH                                     ( 85)
     133           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_VOTES                                            ( 86)
     134           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_ROOT_SLOT_OPTION                                 ( 87)
     135           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_ROOT_SLOT                                        ( 88)
     136           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_VOTERS_LENGTH                         ( 89)
     137           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_VOTERS                                ( 90)
     138           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_PRIOR_VOTERS                                     ( 91)
     139           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_EPOCH_CREDITS_LENGTH                             ( 92)
     140           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_EPOCH_CREDITS                                    ( 93)
     141           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_LAST_TIMESTAMP_SLOT                              ( 94)
     142           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_LAST_TIMESTAMP_TIMESTAMP                         ( 95)
     143           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_NODE_PUBKEY                                       ( 96)
     144           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_AUTHORIZED_VOTER                                  ( 97)
     145           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_AUTHORIZED_VOTER_EPOCH                            ( 98)
     146           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_PRIOR_VOTERS                                      ( 99)
     147           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_AUTHORIZED_WITHDRAWER                             (100)
     148           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_COMMISSION                                        (101)
     149           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_VOTES_LENGTH                                      (102)
     150           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_VOTES                                             (103)
     151           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_ROOT_SLOT_OPTION                                  (104)
     152           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_ROOT_SLOT                                         (105)
     153           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_EPOCH_CREDITS_LENGTH                              (106)
     154           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_EPOCH_CREDITS                                     (107)
     155           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_LAST_TIMESTAMP_SLOT                               (108)
     156           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_LAST_TIMESTAMP_TIMESTAMP                          (109)
     157           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_DUMMY                                                   (110)
     158           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_OWNER                                                        (111)
     159           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_EXECUTABLE                                                   (112)
     160           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_RENT_EPOCH                                                   (113)
     161           0 : #define STATE_STAKES_STAKE_DELEGATIONS_LENGTH                                                         (114)
     162           0 : #define STATE_STAKES_STAKE_DELEGATIONS_KEY                                                            (115)
     163           0 : #define STATE_STAKES_STAKE_DELEGATIONS_VOTER_PUBKEY                                                   (116)
     164           0 : #define STATE_STAKES_STAKE_DELEGATIONS_STAKE                                                          (117)
     165           0 : #define STATE_STAKES_STAKE_DELEGATIONS_ACTIVATION_EPOCH                                               (118)
     166           0 : #define STATE_STAKES_STAKE_DELEGATIONS_DEACTIVATION_EPOCH                                             (119)
     167           0 : #define STATE_STAKES_STAKE_DELEGATIONS_WARMUP_COOLDOWN_RATE                                           (120)
     168           0 : #define STATE_STAKES_UNUSED                                                                           (121)
     169           0 : #define STATE_STAKES_EPOCH                                                                            (122)
     170           0 : #define STATE_STAKES_STAKE_HISTORY_LENGTH                                                             (123)
     171           0 : #define STATE_STAKES_STAKE_HISTORY                                                                    (124)
     172           0 : #define STATE_UNUSED_ACCOUNTS1_LENGTH                                                                 (125)
     173           0 : #define STATE_UNUSED_ACCOUNTS1_UNUSED                                                                 (126)
     174           0 : #define STATE_UNUSED_ACCOUNTS2_LENGTH                                                                 (127)
     175           0 : #define STATE_UNUSED_ACCOUNTS2_UNUSED                                                                 (128)
     176           0 : #define STATE_UNUSED_ACCOUNTS3_LENGTH                                                                 (129)
     177           0 : #define STATE_UNUSED_ACCOUNTS3_UNUSED                                                                 (130)
     178           0 : #define STATE_EPOCH_STAKES_LENGTH                                                                     (131)
     179           0 : #define STATE_EPOCH_STAKES_KEY                                                                        (132)
     180           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_LENGTH                                                       (133)
     181           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_KEY                                                          (134)
     182           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_STAKE                                                        (135)
     183           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_LAMPORTS                                               (136)
     184           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_LENGTH                                            (137)
     185           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_VARIANT                                           (138)
     186           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_NODE_PUBKEY                               (139)
     187           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_AUTHORIZED_WITHDRAWER                     (140)
     188           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_COMMISSION                                (141)
     189           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_VOTES_LENGTH                              (142)
     190           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_VOTES                                     (143)
     191           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_ROOT_SLOT_OPTION                          (144)
     192           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_ROOT_SLOT                                 (145)
     193           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_AUTHORIZED_VOTERS_LENGTH                  (146)
     194           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_AUTHORIZED_VOTERS                         (147)
     195           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_PRIOR_VOTERS                              (148)
     196           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_EPOCH_CREDITS_LENGTH                      (149)
     197           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_EPOCH_CREDITS                             (150)
     198           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_LAST_TIMESTAMP_SLOT                       (151)
     199           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_LAST_TIMESTAMP_TIMESTAMP                  (152)
     200           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_NODE_PUBKEY                                (153)
     201           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_WITHDRAWER                      (154)
     202           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_COMMISSION                                 (155)
     203           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_VOTES_LENGTH                               (156)
     204           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_VOTES                                      (157)
     205           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_ROOT_SLOT_OPTION                           (158)
     206           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_ROOT_SLOT                                  (159)
     207           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_VOTERS_LENGTH                   (160)
     208           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_VOTERS                          (161)
     209           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_PRIOR_VOTERS                               (162)
     210           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_EPOCH_CREDITS_LENGTH                       (163)
     211           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_EPOCH_CREDITS                              (164)
     212           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_LAST_TIMESTAMP_SLOT                        (165)
     213           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_LAST_TIMESTAMP_TIMESTAMP                   (166)
     214           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_NODE_PUBKEY                                 (167)
     215           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_AUTHORIZED_VOTER                            (168)
     216           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_AUTHORIZED_VOTER_EPOCH                      (169)
     217           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_PRIOR_VOTERS                                (170)
     218           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_AUTHORIZED_WITHDRAWER                       (171)
     219           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_COMMISSION                                  (172)
     220           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_VOTES_LENGTH                                (173)
     221           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_VOTES                                       (174)
     222           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_ROOT_SLOT_OPTION                            (175)
     223           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_ROOT_SLOT                                   (176)
     224           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_EPOCH_CREDITS_LENGTH                        (177)
     225           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_EPOCH_CREDITS                               (178)
     226           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_LAST_TIMESTAMP_SLOT                         (179)
     227           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_LAST_TIMESTAMP_TIMESTAMP                    (180)
     228           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_DUMMY                                             (181)
     229           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_OWNER                                                  (182)
     230           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_EXECUTABLE                                             (183)
     231           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_RENT_EPOCH                                             (184)
     232           0 : #define STATE_EPOCH_STAKES_STAKE_DELEGATIONS_LENGTH                                                   (185)
     233           0 : #define STATE_EPOCH_STAKES_STAKE_DELEGATIONS_KEY                                                      (186)
     234           0 : #define STATE_EPOCH_STAKES_STAKE_DELEGATIONS_VOTER_PUBKEY                                             (187)
     235           0 : #define STATE_EPOCH_STAKES_STAKE_DELEGATIONS_STAKE                                                    (188)
     236           0 : #define STATE_EPOCH_STAKES_STAKE_DELEGATIONS_ACTIVATION_EPOCH                                         (189)
     237           0 : #define STATE_EPOCH_STAKES_STAKE_DELEGATIONS_DEACTIVATION_EPOCH                                       (190)
     238           0 : #define STATE_EPOCH_STAKES_STAKE_DELEGATIONS_WARMUP_COOLDOWN_RATE                                     (191)
     239           0 : #define STATE_EPOCH_STAKES_UNUSED                                                                     (192)
     240           0 : #define STATE_EPOCH_STAKES_EPOCH                                                                      (193)
     241           0 : #define STATE_EPOCH_STAKES_STAKE_HISTORY_LENGTH                                                       (194)
     242           0 : #define STATE_EPOCH_STAKES_STAKE_HISTORY                                                              (195)
     243           0 : #define STATE_EPOCH_STAKES_TOTAL_STAKE                                                                (196)
     244           0 : #define STATE_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_LENGTH                                            (197)
     245           0 : #define STATE_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_KEY                                               (198)
     246           0 : #define STATE_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_VOTE_ACCOUNTS_LENGTH                              (199)
     247           0 : #define STATE_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_VOTE_ACCOUNTS                                     (200)
     248           0 : #define STATE_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_TOTAL_STAKE                                       (201)
     249           0 : #define STATE_EPOCH_STAKES_EPOCH_AUTHORIZED_VOTERS_LENGTH                                             (202)
     250           0 : #define STATE_EPOCH_STAKES_EPOCH_AUTHORIZED_VOTERS                                                    (203)
     251           0 : #define STATE_IS_DELTA                                                                                (204)
     252           0 : #define STATE_ACCOUNTS_DB_STORAGES_LENGTH                                                             (205)
     253           0 : #define STATE_ACCOUNTS_DB_STORAGES_SLOT                                                               (206)
     254           0 : #define STATE_ACCOUNTS_DB_STORAGES_ACCOUNT_VECS_LENGTH                                                (207)
     255           0 : #define STATE_ACCOUNTS_DB_STORAGES_ACCOUNT_VECS_ID                                                    (208)
     256           0 : #define STATE_ACCOUNTS_DB_STORAGES_ACCOUNT_VECS_FILE_SZ                                               (209)
     257           0 : #define STATE_ACCOUNTS_DB_STORAGES_DUMMY                                                              (210)
     258           0 : #define STATE_ACCOUNTS_DB_VERSION                                                                     (211)
     259           0 : #define STATE_ACCOUNTS_DB_SLOT                                                                        (212)
     260           0 : #define STATE_ACCOUNTS_DB_BANK_HASH_INFO_ACCOUNTS_DELTA_HASH                                          (213)
     261           0 : #define STATE_ACCOUNTS_DB_BANK_HASH_INFO_ACCOUNTS_HASH                                                (214)
     262           0 : #define STATE_ACCOUNTS_DB_BANK_HASH_INFO_STATS_NUM_UPDATED_ACCOUNTS                                   (215)
     263           0 : #define STATE_ACCOUNTS_DB_BANK_HASH_INFO_STATS_NUM_REMOVED_ACCOUNTS                                   (216)
     264           0 : #define STATE_ACCOUNTS_DB_BANK_HASH_INFO_STATS_NUM_LAMPORTS_STORED                                    (217)
     265           0 : #define STATE_ACCOUNTS_DB_BANK_HASH_INFO_STATS_TOTAL_DATA_LEN                                         (218)
     266           0 : #define STATE_ACCOUNTS_DB_BANK_HASH_INFO_STATS_NUM_EXECUTABLE_ACCOUNTS                                (219)
     267           0 : #define STATE_ACCOUNTS_DB_HISTORICAL_ROOTS_LENGTH                                                     (220)
     268           0 : #define STATE_ACCOUNTS_DB_HISTORICAL_ROOTS                                                            (221)
     269           0 : #define STATE_ACCOUNTS_DB_HISTORICAL_WITH_HASH_LENGTH                                                 (222)
     270           0 : #define STATE_ACCOUNTS_DB_HISTORICAL_WITH_HASH                                                        (223)
     271           0 : #define STATE_LAMPORTS_PER_SIGNATURE                                                                  (224)
     272           0 : #define STATE_BANK_INCREMENTAL_SNAPSHOT_PERSISTENCE_OPTION                                            (225)
     273           0 : #define STATE_BANK_INCREMENTAL_SNAPSHOT_PERSISTENCE_FULL_SLOT                                         (226)
     274           0 : #define STATE_BANK_INCREMENTAL_SNAPSHOT_PERSISTENCE_FULL_HASH                                         (227)
     275           0 : #define STATE_BANK_INCREMENTAL_SNAPSHOT_PERSISTENCE_FULL_CAPITALIZATION                               (228)
     276           0 : #define STATE_BANK_INCREMENTAL_SNAPSHOT_PERSISTENCE_INCREMENTAL_HASH                                  (229)
     277           0 : #define STATE_BANK_INCREMENTAL_SNAPSHOT_PERSISTENCE_INCREMENTAL_CAPITALIZATION                        (230)
     278           0 : #define STATE_EPOCH_ACCOUNT_HASH_OPTION                                                               (231)
     279           0 : #define STATE_EPOCH_ACCOUNT_HASH                                                                      (232)
     280           0 : #define STATE_VERSIONED_EPOCH_STAKES_LENGTH                                                           (233)
     281           0 : #define STATE_VERSIONED_EPOCH_STAKES_EPOCH                                                            (234)
     282           0 : #define STATE_VERSIONED_EPOCH_STAKES_VARIANT                                                          (235)
     283           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_LENGTH                                      (236)
     284           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_KEY                                         (237)
     285           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_STAKE                                       (238)
     286           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_LAMPORTS                              (239)
     287           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_LENGTH                           (240)
     288           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_VARIANT                          (241)
     289           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_NODE_PUBKEY              (242)
     290           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_AUTHORIZED_WITHDRAWER    (243)
     291           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_COMMISSION               (244)
     292           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_VOTES_LENGTH             (245)
     293           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_VOTES                    (246)
     294           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_ROOT_SLOT_OPTION         (247)
     295           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_ROOT_SLOT                (248)
     296           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_AUTHORIZED_VOTERS_LENGTH (249)
     297           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_AUTHORIZED_VOTERS        (250)
     298           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_PRIOR_VOTERS             (251)
     299           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_EPOCH_CREDITS_LENGTH     (252)
     300           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_EPOCH_CREDITS            (253)
     301           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_LAST_TIMESTAMP_SLOT      (254)
     302           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_LAST_TIMESTAMP_TIMESTAMP (255)
     303           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_NODE_PUBKEY               (256)
     304           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_WITHDRAWER     (257)
     305           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_COMMISSION                (258)
     306           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_VOTES_LENGTH              (259)
     307           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_VOTES                     (260)
     308           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_ROOT_SLOT_OPTION          (261)
     309           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_ROOT_SLOT                 (262)
     310           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_VOTERS_LENGTH  (263)
     311           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_VOTERS         (264)
     312           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_PRIOR_VOTERS              (265)
     313           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_EPOCH_CREDITS_LENGTH      (266)
     314           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_EPOCH_CREDITS             (267)
     315           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_LAST_TIMESTAMP_SLOT       (268)
     316           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_LAST_TIMESTAMP_TIMESTAMP  (269)
     317           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_NODE_PUBKEY                (270)
     318           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_AUTHORIZED_VOTER           (271)
     319           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_AUTHORIZED_VOTER_EPOCH     (272)
     320           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_PRIOR_VOTERS               (273)
     321           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_AUTHORIZED_WITHDRAWER      (274)
     322           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_COMMISSION                 (275)
     323           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_VOTES_LENGTH               (276)
     324           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_VOTES                      (277)
     325           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_ROOT_SLOT_OPTION           (278)
     326           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_ROOT_SLOT                  (279)
     327           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_EPOCH_CREDITS_LENGTH       (280)
     328           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_EPOCH_CREDITS              (281)
     329           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_LAST_TIMESTAMP_SLOT        (282)
     330           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_LAST_TIMESTAMP_TIMESTAMP   (283)
     331           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_DUMMY                            (284)
     332           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_OWNER                                 (285)
     333           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_EXECUTABLE                            (286)
     334           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_RENT_EPOCH                            (287)
     335           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_LENGTH                                  (288)
     336           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_KEY                                     (289)
     337           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_VOTER_PUBKEY                            (290)
     338           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_STAKE                                   (291)
     339           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_ACTIVATION_EPOCH                        (292)
     340           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_DEACTIVATION_EPOCH                      (293)
     341           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_WARMUP_COOLDOWN_RATE                    (294)
     342           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_CREDITS_OBSERVED                        (295)
     343           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_UNUSED                                                    (296)
     344           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_EPOCH                                                     (297)
     345           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_HISTORY_LENGTH                                      (298)
     346           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_HISTORY                                             (299)
     347           0 : #define STATE_VERSIONED_EPOCH_STAKES_TOTAL_STAKE                                                      (300)
     348           0 : #define STATE_VERSIONED_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_LENGTH                                  (301)
     349           0 : #define STATE_VERSIONED_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_KEY                                     (302)
     350           0 : #define STATE_VERSIONED_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_VOTE_ACCOUNTS_LENGTH                    (303)
     351           0 : #define STATE_VERSIONED_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_VOTE_ACCOUNTS                           (304)
     352           0 : #define STATE_VERSIONED_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_TOTAL_STAKE                             (305)
     353           0 : #define STATE_VERSIONED_EPOCH_STAKES_EPOCH_AUTHORIZED_VOTERS_LENGTH                                   (306)
     354           0 : #define STATE_VERSIONED_EPOCH_STAKES_EPOCH_AUTHORIZED_VOTERS                                          (307)
     355           0 : #define STATE_LTHASH_OPTION                                                                           (308)
     356           0 : #define STATE_LTHASH                                                                                  (309)
     357           0 : #define STATE_DONE                                                                                    (310)
     358             : 
     359             : struct fd_ssmanifest_parser_private {
     360             :   int     state;
     361             :   ulong   off;
     362             :   uchar * dst;
     363             :   ulong   dst_cur;
     364             :   ulong   dst_sz;
     365             : 
     366             :   uchar   option;
     367             :   uint    variant;
     368             : 
     369             :   ulong   idx1;
     370             :   ulong   idx2;
     371             :   ulong   length1;
     372             :   ulong   length2;
     373             :   ulong   length3;
     374             :   ulong   length4;
     375             : 
     376             :   ulong   epoch_stakes_len;
     377             :   ulong   epoch;
     378             :   ulong   epoch_stakes_epoch;
     379             :   ulong   epoch_idx;
     380             : 
     381             :   ulong   account_data_start;
     382             : 
     383             :   ulong acc_vec_slot;
     384             :   ulong acc_vec_id;
     385             :   ulong acc_vec_file_sz;
     386             : 
     387             :   ulong max_acc_vecs;
     388             :   ulong seed;
     389             : 
     390             :   acc_vec_map_t * acc_vec_map;
     391             :   acc_vec_t *     acc_vec_pool;
     392             : 
     393             :   fd_snapshot_manifest_t * manifest;
     394             : };
     395             : 
     396             : static inline ulong
     397           0 : state_size( fd_ssmanifest_parser_t * parser ) {
     398           0 :   ulong length1 = parser->length1;
     399           0 :   ulong length2 = parser->length2;
     400           0 :   ulong length3 = parser->length3;
     401           0 :   ulong length4 = parser->length4;
     402             : 
     403           0 :   switch( parser->state ) {
     404           0 :     case STATE_BLOCKHASH_QUEUE_LAST_HASH_INDEX:                                                               return 8UL         ;
     405           0 :     case STATE_BLOCKHASH_QUEUE_LAST_HASH_OPTION:                                                              return 1UL         ;
     406           0 :     case STATE_BLOCKHASH_QUEUE_LAST_HASH:                                                                     return 32UL        ;
     407           0 :     case STATE_BLOCKHASH_QUEUE_AGES_LENGTH:                                                                   return 8UL         ;
     408           0 :     case STATE_BLOCKHASH_QUEUE_AGES_HASH:                                                                     return 32UL        ;
     409           0 :     case STATE_BLOCKHASH_QUEUE_AGES_LAMPORTS_PER_SIGNATURE:                                                   return 8UL         ;
     410           0 :     case STATE_BLOCKHASH_QUEUE_AGES_HASH_INDEX:                                                               return 8UL         ;
     411           0 :     case STATE_BLOCKHASH_QUEUE_AGES_TIMESTAMP:                                                                return 8UL         ;
     412           0 :     case STATE_BLOCKHASH_QUEUE_MAX_AGE:                                                                       return 8UL         ;
     413           0 :     case STATE_ANCESTORS_LENGTH:                                                                              return 8UL         ;
     414           0 :     case STATE_ANCESTORS:                                                                                     return 16UL*length1;
     415           0 :     case STATE_HASH:                                                                                          return 32UL        ;
     416           0 :     case STATE_PARENT_HASH:                                                                                   return 32UL        ;
     417           0 :     case STATE_PARENT_SLOT:                                                                                   return 8UL         ;
     418           0 :     case STATE_HARD_FORKS_LENGTH:                                                                             return 8UL         ;
     419           0 :     case STATE_HARD_FORKS_SLOT:                                                                               return 8UL         ;
     420           0 :     case STATE_HARD_FORKS_VAL:                                                                                return 8UL         ;
     421           0 :     case STATE_TRANSACTION_COUNT:                                                                             return 8UL         ;
     422           0 :     case STATE_TICK_HEIGHT:                                                                                   return 8UL         ;
     423           0 :     case STATE_SIGNATURE_COUNT:                                                                               return 8UL         ;
     424           0 :     case STATE_CAPITALIZATION:                                                                                return 8UL         ;
     425           0 :     case STATE_MAX_TICK_HEIGHT:                                                                               return 8UL         ;
     426           0 :     case STATE_HASHES_PER_TICK_OPTION:                                                                        return 1UL         ;
     427           0 :     case STATE_HASHES_PER_TICK:                                                                               return 8UL         ;
     428           0 :     case STATE_TICKS_PER_SLOT:                                                                                return 8UL         ;
     429           0 :     case STATE_NS_PER_SLOT:                                                                                   return 16UL        ;
     430           0 :     case STATE_GENSIS_CREATION_TIME:                                                                          return 8UL         ;
     431           0 :     case STATE_SLOTS_PER_YEAR:                                                                                return 8UL         ;
     432           0 :     case STATE_ACCOUNTS_DATA_LEN:                                                                             return 8UL         ;
     433           0 :     case STATE_SLOT:                                                                                          return 8UL         ;
     434           0 :     case STATE_EPOCH:                                                                                         return 8UL         ;
     435           0 :     case STATE_BLOCK_HEIGHT:                                                                                  return 8UL         ;
     436           0 :     case STATE_COLLECTOR_ID:                                                                                  return 32UL        ;
     437           0 :     case STATE_COLLECTOR_FEES:                                                                                return 8UL         ;
     438           0 :     case STATE_FEE_COLLECTOR_LAMPORTS_PER_SIGNATURE:                                                          return 8UL         ;
     439           0 :     case STATE_FEE_RATE_GOVERNOR_TARGET_LAMPORTS_PER_SIGNATURE:                                               return 8UL         ;
     440           0 :     case STATE_FEE_RATE_GOVERNOR_TARGET_SIGNATURES_PER_SLOT:                                                  return 8UL         ;
     441           0 :     case STATE_FEE_RATE_GOVERNOR_MIN_LAMPORTS_PER_SIGNATURE:                                                  return 8UL         ;
     442           0 :     case STATE_FEE_RATE_GOVERNOR_MAX_LAMPORTS_PER_SIGNATURE:                                                  return 8UL         ;
     443           0 :     case STATE_FEE_RATE_GOVERNOR_BURN_PERCENT:                                                                return 1UL         ;
     444           0 :     case STATE_COLLECTED_RENT:                                                                                return 8UL         ;
     445           0 :     case STATE_RENT_COLLECTOR_EPOCH:                                                                          return 8UL         ;
     446           0 :     case STATE_RENT_COLLECTOR_EPOCH_SCHEDULE_SLOTS_PER_EPOCH:                                                 return 8UL         ;
     447           0 :     case STATE_RENT_COLLECTOR_EPOCH_SCHEDULE_LEADER_SCHEDULE_SLOT_OFFSET:                                     return 8UL         ;
     448           0 :     case STATE_RENT_COLLECTOR_EPOCH_SCHEDULE_WARMUP:                                                          return 1UL         ;
     449           0 :     case STATE_RENT_COLLECTOR_EPOCH_SCHEDULE_FIRST_NORMAL_EPOCH:                                              return 8UL         ;
     450           0 :     case STATE_RENT_COLLECTOR_EPOCH_SCHEDULE_FIRST_NORMAL_SLOT:                                               return 8UL         ;
     451           0 :     case STATE_RENT_COLLECTOR_SLOTS_PER_YEAR:                                                                 return 8UL         ;
     452           0 :     case STATE_RENT_COLLECTOR_RENT_LAMPORTS_PER_UINT8_YEAR:                                                   return 8UL         ;
     453           0 :     case STATE_RENT_COLLECTOR_RENT_EXEMPTION_THRESHOLD:                                                       return 8UL         ;
     454           0 :     case STATE_RENT_COLLECTOR_RENT_BURN_PERCENT:                                                              return 1UL         ;
     455           0 :     case STATE_EPOCH_SCHEDULE_SLOTS_PER_EPOCH:                                                                return 8UL         ;
     456           0 :     case STATE_EPOCH_SCHEDULE_LEADER_SCHEDULE_SLOT_OFFSET:                                                    return 8UL         ;
     457           0 :     case STATE_EPOCH_SCHEDULE_WARMUP:                                                                         return 1UL         ;
     458           0 :     case STATE_EPOCH_SCHEDULE_FIRST_NORMAL_EPOCH:                                                             return 8UL         ;
     459           0 :     case STATE_EPOCH_SCHEDULE_FIRST_NORMAL_SLOT:                                                              return 8UL         ;
     460           0 :     case STATE_INFLATION_INITIAL:                                                                             return 8UL         ;
     461           0 :     case STATE_INFLATION_TERMINAL:                                                                            return 8UL         ;
     462           0 :     case STATE_INFLATION_TAPER:                                                                               return 8UL         ;
     463           0 :     case STATE_INFLATION_FOUNDATION:                                                                          return 8UL         ;
     464           0 :     case STATE_INFLATION_FOUNDATION_TERM:                                                                     return 8UL         ;
     465           0 :     case STATE_INFLATION_UNUSED:                                                                              return 8UL         ;
     466           0 :     case STATE_STAKES_VOTE_ACCOUNTS_LENGTH:                                                                   return 8UL         ;
     467           0 :     case STATE_STAKES_VOTE_ACCOUNTS_KEY:                                                                      return 32UL        ;
     468           0 :     case STATE_STAKES_VOTE_ACCOUNTS_STAKE:                                                                    return 8UL         ;
     469           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_LAMPORTS:                                                           return 8UL         ;
     470           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_LENGTH:                                                        return 8UL         ;
     471           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_VARIANT:                                                       return 4UL         ;
     472           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_NODE_PUBKEY:                                           return 32UL        ;
     473           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_AUTHORIZED_WITHDRAWER:                                 return 32UL        ;
     474           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_COMMISSION:                                            return 1UL         ;
     475           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_VOTES_LENGTH:                                          return 8UL         ;
     476           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_VOTES:                                                 return 13UL*length3;
     477           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_ROOT_SLOT_OPTION:                                      return 1UL         ;
     478           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_ROOT_SLOT:                                             return 8UL         ;
     479           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_AUTHORIZED_VOTERS_LENGTH:                              return 8UL         ;
     480           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_AUTHORIZED_VOTERS:                                     return 40UL*length3;
     481           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_PRIOR_VOTERS:                                          return 9UL+48UL*32UL;
     482           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_EPOCH_CREDITS_LENGTH:                                  return 8UL         ;
     483           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_EPOCH_CREDITS:                                         return 24UL*parser->manifest->vote_accounts[ parser->idx1 ].epoch_credits_history_len;
     484           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_LAST_TIMESTAMP_SLOT:                                   return 8UL         ;
     485           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_LAST_TIMESTAMP_TIMESTAMP:                              return 8UL         ;
     486           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_NODE_PUBKEY:                                            return 32UL        ;
     487           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_WITHDRAWER:                                  return 32UL        ;
     488           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_COMMISSION:                                             return 1UL         ;
     489           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_VOTES_LENGTH:                                           return 8UL         ;
     490           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_VOTES:                                                  return 12UL*length3;
     491           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_ROOT_SLOT_OPTION:                                       return 1UL         ;
     492           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_ROOT_SLOT:                                              return 8UL         ;
     493           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_VOTERS_LENGTH:                               return 8UL         ;
     494           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_VOTERS:                                      return 40UL*length3;
     495           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_PRIOR_VOTERS:                                           return 9UL+48UL*32UL;
     496           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_EPOCH_CREDITS_LENGTH:                                   return 8UL         ;
     497           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_EPOCH_CREDITS:                                          return 24UL*parser->manifest->vote_accounts[ parser->idx1 ].epoch_credits_history_len;
     498           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_LAST_TIMESTAMP_SLOT:                                    return 8UL         ;
     499           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_LAST_TIMESTAMP_TIMESTAMP:                               return 8UL         ;
     500           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_NODE_PUBKEY:                                             return 32UL        ;
     501           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_AUTHORIZED_VOTER:                                        return 32UL        ;
     502           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_AUTHORIZED_VOTER_EPOCH:                                  return 8UL         ;
     503           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_PRIOR_VOTERS:                                            return 1800UL      ;
     504           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_AUTHORIZED_WITHDRAWER:                                   return 32UL        ;
     505           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_COMMISSION:                                              return 1UL         ;
     506           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_VOTES_LENGTH:                                            return 8UL         ;
     507           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_VOTES:                                                   return 12UL*length3;
     508           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_ROOT_SLOT_OPTION:                                        return 1UL         ;
     509           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_ROOT_SLOT:                                               return 8UL         ;
     510           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_EPOCH_CREDITS_LENGTH:                                    return 8UL         ;
     511           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_EPOCH_CREDITS:                                           return 24UL*parser->manifest->vote_accounts[ parser->idx1 ].epoch_credits_history_len;
     512           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_LAST_TIMESTAMP_SLOT:                                     return 8UL         ;
     513           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_LAST_TIMESTAMP_TIMESTAMP:                                return 8UL         ;
     514           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_DUMMY:                                                         return parser->length2-(parser->off-parser->account_data_start);
     515           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_OWNER:                                                              return 32UL        ;
     516           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_EXECUTABLE:                                                         return 1UL         ;
     517           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_RENT_EPOCH:                                                         return 8UL         ;
     518           0 :     case STATE_STAKES_STAKE_DELEGATIONS_LENGTH:                                                               return 8UL         ;
     519           0 :     case STATE_STAKES_STAKE_DELEGATIONS_KEY:                                                                  return 32UL        ;
     520           0 :     case STATE_STAKES_STAKE_DELEGATIONS_VOTER_PUBKEY:                                                         return 32UL        ;
     521           0 :     case STATE_STAKES_STAKE_DELEGATIONS_STAKE:                                                                return 8UL         ;
     522           0 :     case STATE_STAKES_STAKE_DELEGATIONS_ACTIVATION_EPOCH:                                                     return 8UL         ;
     523           0 :     case STATE_STAKES_STAKE_DELEGATIONS_DEACTIVATION_EPOCH:                                                   return 8UL         ;
     524           0 :     case STATE_STAKES_STAKE_DELEGATIONS_WARMUP_COOLDOWN_RATE:                                                 return 8UL         ;
     525           0 :     case STATE_STAKES_UNUSED:                                                                                 return 8UL         ;
     526           0 :     case STATE_STAKES_EPOCH:                                                                                  return 8UL         ;
     527           0 :     case STATE_STAKES_STAKE_HISTORY_LENGTH:                                                                   return 8UL         ;
     528           0 :     case STATE_STAKES_STAKE_HISTORY:                                                                          return 32UL*length1;
     529           0 :     case STATE_UNUSED_ACCOUNTS1_LENGTH:                                                                       return 8UL         ;
     530           0 :     case STATE_UNUSED_ACCOUNTS1_UNUSED:                                                                       return 32UL*length1;
     531           0 :     case STATE_UNUSED_ACCOUNTS2_LENGTH:                                                                       return 8UL         ;
     532           0 :     case STATE_UNUSED_ACCOUNTS2_UNUSED:                                                                       return 32UL*length1;
     533           0 :     case STATE_UNUSED_ACCOUNTS3_LENGTH:                                                                       return 8UL         ;
     534           0 :     case STATE_UNUSED_ACCOUNTS3_UNUSED:                                                                       return 40UL*length1;
     535           0 :     case STATE_EPOCH_STAKES_LENGTH:                                                                           return 8UL         ;
     536           0 :     case STATE_EPOCH_STAKES_KEY:                                                                              return 8UL         ;
     537           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_LENGTH:                                                             return 8UL         ;
     538           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_KEY:                                                                return 32UL        ;
     539           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_STAKE:                                                              return 8UL         ;
     540           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_LAMPORTS:                                                     return 8UL         ;
     541           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_LENGTH:                                                  return 8UL         ;
     542           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_VARIANT:                                                 return 4UL         ;
     543           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_NODE_PUBKEY:                                     return 32UL        ;
     544           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_AUTHORIZED_WITHDRAWER:                           return 32UL        ;
     545           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_COMMISSION:                                      return 1UL         ;
     546           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_VOTES_LENGTH:                                    return 8UL         ;
     547           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_VOTES:                                           return 13UL*length4;
     548           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_ROOT_SLOT_OPTION:                                return 1UL         ;
     549           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_ROOT_SLOT:                                       return 8UL         ;
     550           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_AUTHORIZED_VOTERS_LENGTH:                        return 8UL         ;
     551           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_AUTHORIZED_VOTERS:                               return 40UL*length4;
     552           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_PRIOR_VOTERS:                                    return 9UL+48UL*32UL;
     553           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_EPOCH_CREDITS_LENGTH:                            return 8UL         ;
     554           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_EPOCH_CREDITS:                                   return 24UL*(parser->epoch_idx!=ULONG_MAX ? parser->manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ parser->idx2 ].epoch_credits_history_len : length4 );
     555           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_LAST_TIMESTAMP_SLOT:                             return 8UL         ;
     556           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_LAST_TIMESTAMP_TIMESTAMP:                        return 8UL         ;
     557           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_NODE_PUBKEY:                                      return 32UL        ;
     558           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_WITHDRAWER:                            return 32UL        ;
     559           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_COMMISSION:                                       return 1UL         ;
     560           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_VOTES_LENGTH:                                     return 8UL         ;
     561           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_VOTES:                                            return 12UL*length4;
     562           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_ROOT_SLOT_OPTION:                                 return 1UL         ;
     563           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_ROOT_SLOT:                                        return 8UL         ;
     564           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_VOTERS_LENGTH:                         return 8UL         ;
     565           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_VOTERS:                                return 40UL*length4;
     566           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_PRIOR_VOTERS:                                     return 9UL+48UL*32UL;
     567           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_EPOCH_CREDITS_LENGTH:                             return 8UL         ;
     568           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_EPOCH_CREDITS:                                    return 24UL*(parser->epoch_idx!=ULONG_MAX ? parser->manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ parser->idx2 ].epoch_credits_history_len : length4 );
     569           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_LAST_TIMESTAMP_SLOT:                              return 8UL         ;
     570           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_LAST_TIMESTAMP_TIMESTAMP:                         return 8UL         ;
     571           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_NODE_PUBKEY:                                       return 32UL        ;
     572           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_AUTHORIZED_VOTER:                                  return 32UL        ;
     573           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_AUTHORIZED_VOTER_EPOCH:                            return 8UL         ;
     574           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_PRIOR_VOTERS:                                      return 1800UL      ;
     575           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_AUTHORIZED_WITHDRAWER:                             return 32UL        ;
     576           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_COMMISSION:                                        return 1UL         ;
     577           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_VOTES_LENGTH:                                      return 8UL         ;
     578           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_VOTES:                                             return 12UL*length4;
     579           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_ROOT_SLOT_OPTION:                                  return 1UL         ;
     580           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_ROOT_SLOT:                                         return 8UL         ;
     581           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_EPOCH_CREDITS_LENGTH:                              return 8UL         ;
     582           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_EPOCH_CREDITS:                                     return 24UL*(parser->epoch_idx!=ULONG_MAX ? parser->manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ parser->idx2 ].epoch_credits_history_len : length4 );
     583           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_LAST_TIMESTAMP_SLOT:                               return 8UL         ;
     584           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_LAST_TIMESTAMP_TIMESTAMP:                          return 8UL         ;
     585           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_DUMMY:                                                   return parser->length3-(parser->off-parser->account_data_start);
     586           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_OWNER:                                                        return 32UL        ;
     587           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_EXECUTABLE:                                                   return 1UL         ;
     588           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_RENT_EPOCH:                                                   return 8UL         ;
     589           0 :     case STATE_EPOCH_STAKES_STAKE_DELEGATIONS_LENGTH:                                                         return 8UL         ;
     590           0 :     case STATE_EPOCH_STAKES_STAKE_DELEGATIONS_KEY:                                                            return 32UL        ;
     591           0 :     case STATE_EPOCH_STAKES_STAKE_DELEGATIONS_VOTER_PUBKEY:                                                   return 32UL        ;
     592           0 :     case STATE_EPOCH_STAKES_STAKE_DELEGATIONS_STAKE:                                                          return 8UL         ;
     593           0 :     case STATE_EPOCH_STAKES_STAKE_DELEGATIONS_ACTIVATION_EPOCH:                                               return 8UL         ;
     594           0 :     case STATE_EPOCH_STAKES_STAKE_DELEGATIONS_DEACTIVATION_EPOCH:                                             return 8UL         ;
     595           0 :     case STATE_EPOCH_STAKES_STAKE_DELEGATIONS_WARMUP_COOLDOWN_RATE:                                           return 8UL         ;
     596           0 :     case STATE_EPOCH_STAKES_UNUSED:                                                                           return 8UL         ;
     597           0 :     case STATE_EPOCH_STAKES_EPOCH:                                                                            return 8UL         ;
     598           0 :     case STATE_EPOCH_STAKES_STAKE_HISTORY_LENGTH:                                                             return 8UL         ;
     599           0 :     case STATE_EPOCH_STAKES_STAKE_HISTORY:                                                                    return 32UL*length2;
     600           0 :     case STATE_EPOCH_STAKES_TOTAL_STAKE:                                                                      return 8UL         ;
     601           0 :     case STATE_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_LENGTH:                                                  return 8UL         ;
     602           0 :     case STATE_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_KEY:                                                     return 32UL        ;
     603           0 :     case STATE_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_VOTE_ACCOUNTS_LENGTH:                                    return 8UL         ;
     604           0 :     case STATE_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_VOTE_ACCOUNTS:                                           return 32UL*length3;
     605           0 :     case STATE_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_TOTAL_STAKE:                                             return 8UL         ;
     606           0 :     case STATE_EPOCH_STAKES_EPOCH_AUTHORIZED_VOTERS_LENGTH:                                                   return 8UL         ;
     607           0 :     case STATE_EPOCH_STAKES_EPOCH_AUTHORIZED_VOTERS:                                                          return 64UL*length2;
     608           0 :     case STATE_IS_DELTA:                                                                                      return 1UL         ;
     609           0 :     case STATE_ACCOUNTS_DB_STORAGES_LENGTH:                                                                   return 8UL         ;
     610           0 :     case STATE_ACCOUNTS_DB_STORAGES_SLOT:                                                                     return 8UL         ;
     611           0 :     case STATE_ACCOUNTS_DB_STORAGES_ACCOUNT_VECS_LENGTH:                                                      return 8UL         ;
     612           0 :     case STATE_ACCOUNTS_DB_STORAGES_ACCOUNT_VECS_ID:                                                          return 8UL         ;
     613           0 :     case STATE_ACCOUNTS_DB_STORAGES_ACCOUNT_VECS_FILE_SZ:                                                     return 8UL         ;
     614           0 :     case STATE_ACCOUNTS_DB_STORAGES_DUMMY:                                                                    return 0UL         ;
     615           0 :     case STATE_ACCOUNTS_DB_VERSION:                                                                           return 8UL         ;
     616           0 :     case STATE_ACCOUNTS_DB_SLOT:                                                                              return 8UL         ;
     617           0 :     case STATE_ACCOUNTS_DB_BANK_HASH_INFO_ACCOUNTS_DELTA_HASH:                                                return 32UL        ;
     618           0 :     case STATE_ACCOUNTS_DB_BANK_HASH_INFO_ACCOUNTS_HASH:                                                      return 32UL        ;
     619           0 :     case STATE_ACCOUNTS_DB_BANK_HASH_INFO_STATS_NUM_UPDATED_ACCOUNTS:                                         return 8UL         ;
     620           0 :     case STATE_ACCOUNTS_DB_BANK_HASH_INFO_STATS_NUM_REMOVED_ACCOUNTS:                                         return 8UL         ;
     621           0 :     case STATE_ACCOUNTS_DB_BANK_HASH_INFO_STATS_NUM_LAMPORTS_STORED:                                          return 8UL         ;
     622           0 :     case STATE_ACCOUNTS_DB_BANK_HASH_INFO_STATS_TOTAL_DATA_LEN:                                               return 8UL         ;
     623           0 :     case STATE_ACCOUNTS_DB_BANK_HASH_INFO_STATS_NUM_EXECUTABLE_ACCOUNTS:                                      return 8UL         ;
     624           0 :     case STATE_ACCOUNTS_DB_HISTORICAL_ROOTS_LENGTH:                                                           return 8UL         ;
     625           0 :     case STATE_ACCOUNTS_DB_HISTORICAL_ROOTS:                                                                  return 8UL*length1 ;
     626           0 :     case STATE_ACCOUNTS_DB_HISTORICAL_WITH_HASH_LENGTH:                                                       return 8UL         ;
     627           0 :     case STATE_ACCOUNTS_DB_HISTORICAL_WITH_HASH:                                                              return 40UL*length1;
     628           0 :     case STATE_LAMPORTS_PER_SIGNATURE:                                                                        return 8UL         ;
     629           0 :     case STATE_BANK_INCREMENTAL_SNAPSHOT_PERSISTENCE_OPTION:                                                  return 1UL         ;
     630           0 :     case STATE_BANK_INCREMENTAL_SNAPSHOT_PERSISTENCE_FULL_SLOT:                                               return 8UL         ;
     631           0 :     case STATE_BANK_INCREMENTAL_SNAPSHOT_PERSISTENCE_FULL_HASH:                                               return 32UL        ;
     632           0 :     case STATE_BANK_INCREMENTAL_SNAPSHOT_PERSISTENCE_FULL_CAPITALIZATION:                                     return 8UL         ;
     633           0 :     case STATE_BANK_INCREMENTAL_SNAPSHOT_PERSISTENCE_INCREMENTAL_HASH:                                        return 32UL        ;
     634           0 :     case STATE_BANK_INCREMENTAL_SNAPSHOT_PERSISTENCE_INCREMENTAL_CAPITALIZATION:                              return 8UL         ;
     635           0 :     case STATE_EPOCH_ACCOUNT_HASH_OPTION:                                                                     return 1UL         ;
     636           0 :     case STATE_EPOCH_ACCOUNT_HASH:                                                                            return 32UL        ;
     637           0 :     case STATE_VERSIONED_EPOCH_STAKES_LENGTH:                                                                 return 8UL         ;
     638           0 :     case STATE_VERSIONED_EPOCH_STAKES_EPOCH:                                                                  return 8UL         ;
     639           0 :     case STATE_VERSIONED_EPOCH_STAKES_VARIANT:                                                                return 4UL         ;
     640           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_LENGTH:                                            return 8UL         ;
     641           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_KEY:                                               return 32UL        ;
     642           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_STAKE:                                             return 8UL         ;
     643           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_LAMPORTS:                                    return 8UL         ;
     644           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_LENGTH:                                 return 8UL         ;
     645           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_VARIANT:                                return 4UL         ;
     646           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_NODE_PUBKEY:                    return 32UL        ;
     647           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_AUTHORIZED_WITHDRAWER:          return 32UL        ;
     648           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_COMMISSION:                     return 1UL         ;
     649           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_VOTES_LENGTH:                   return 8UL         ;
     650           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_VOTES:                          return 13UL*length4;
     651           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_ROOT_SLOT_OPTION:               return 1UL         ;
     652           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_ROOT_SLOT:                      return 8UL         ;
     653           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_AUTHORIZED_VOTERS_LENGTH:       return 8UL         ;
     654           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_AUTHORIZED_VOTERS:              return 40UL*length4;
     655           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_PRIOR_VOTERS:                   return 9UL+48UL*32UL;
     656           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_EPOCH_CREDITS_LENGTH:           return 8UL         ;
     657           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_EPOCH_CREDITS:                  return 24UL*(parser->epoch_idx!=ULONG_MAX ? parser->manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ parser->idx2 ].epoch_credits_history_len : length4 );
     658           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_LAST_TIMESTAMP_SLOT:            return 8UL         ;
     659           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_LAST_TIMESTAMP_TIMESTAMP:       return 8UL         ;
     660           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_NODE_PUBKEY:                     return 32UL        ;
     661           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_WITHDRAWER:           return 32UL        ;
     662           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_COMMISSION:                      return 1UL         ;
     663           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_VOTES_LENGTH:                    return 8UL         ;
     664           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_VOTES:                           return 12UL*length4;
     665           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_ROOT_SLOT_OPTION:                return 1UL         ;
     666           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_ROOT_SLOT:                       return 8UL         ;
     667           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_VOTERS_LENGTH:        return 8UL         ;
     668           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_VOTERS:               return 40UL*length4;
     669           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_PRIOR_VOTERS:                    return 9UL+48UL*32UL;
     670           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_EPOCH_CREDITS_LENGTH:            return 8UL         ;
     671           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_EPOCH_CREDITS:                   return 24UL*(parser->epoch_idx!=ULONG_MAX ? parser->manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ parser->idx2 ].epoch_credits_history_len : length4 );
     672           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_LAST_TIMESTAMP_SLOT:             return 8UL         ;
     673           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_LAST_TIMESTAMP_TIMESTAMP:        return 8UL         ;
     674           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_NODE_PUBKEY:                      return 32UL        ;
     675           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_AUTHORIZED_VOTER:                 return 32UL        ;
     676           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_AUTHORIZED_VOTER_EPOCH:           return 8UL         ;
     677           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_PRIOR_VOTERS:                     return 1800UL      ;
     678           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_AUTHORIZED_WITHDRAWER:            return 32UL        ;
     679           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_COMMISSION:                       return 1UL         ;
     680           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_VOTES_LENGTH:                     return 8UL         ;
     681           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_VOTES:                            return 12UL*length4;
     682           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_ROOT_SLOT_OPTION:                 return 1UL         ;
     683           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_ROOT_SLOT:                        return 8UL         ;
     684           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_EPOCH_CREDITS_LENGTH:             return 8UL         ;
     685           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_EPOCH_CREDITS:                    return 24UL*(parser->epoch_idx!=ULONG_MAX ? parser->manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ parser->idx2 ].epoch_credits_history_len : length4 );;
     686           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_LAST_TIMESTAMP_SLOT:              return 8UL         ;
     687           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_LAST_TIMESTAMP_TIMESTAMP:         return 8UL         ;
     688           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_DUMMY:                                  return parser->length3-(parser->off-parser->account_data_start);
     689           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_OWNER:                                       return 32UL        ;
     690           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_EXECUTABLE:                                  return 1UL         ;
     691           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_RENT_EPOCH:                                  return 8UL         ;
     692           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_LENGTH:                                        return 8UL         ;
     693           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_KEY:                                           return 32UL        ;
     694           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_VOTER_PUBKEY:                                  return 32UL        ;
     695           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_STAKE:                                         return 8UL         ;
     696           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_ACTIVATION_EPOCH:                              return 8UL         ;
     697           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_DEACTIVATION_EPOCH:                            return 8UL         ;
     698           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_WARMUP_COOLDOWN_RATE:                          return 8UL         ;
     699           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_CREDITS_OBSERVED:                              return 8UL         ;
     700           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_UNUSED:                                                          return 8UL         ;
     701           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_EPOCH:                                                           return 8UL         ;
     702           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_HISTORY_LENGTH:                                            return 8UL         ;
     703           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_HISTORY:                                                   return 32UL*length2;
     704           0 :     case STATE_VERSIONED_EPOCH_STAKES_TOTAL_STAKE:                                                            return 8UL         ;
     705           0 :     case STATE_VERSIONED_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_LENGTH:                                        return 8UL         ;
     706           0 :     case STATE_VERSIONED_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_KEY:                                           return 32UL        ;
     707           0 :     case STATE_VERSIONED_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_VOTE_ACCOUNTS_LENGTH:                          return 8UL         ;
     708           0 :     case STATE_VERSIONED_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_VOTE_ACCOUNTS:                                 return 32UL*length3;
     709           0 :     case STATE_VERSIONED_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_TOTAL_STAKE:                                   return 8UL         ;
     710           0 :     case STATE_VERSIONED_EPOCH_STAKES_EPOCH_AUTHORIZED_VOTERS_LENGTH:                                         return 8UL         ;
     711           0 :     case STATE_VERSIONED_EPOCH_STAKES_EPOCH_AUTHORIZED_VOTERS:                                                return 64UL*length2;
     712           0 :     case STATE_LTHASH_OPTION:                                                                                 return 1UL         ;
     713           0 :     case STATE_LTHASH:                                                                                        return 2048UL      ;
     714           0 :     case STATE_DONE:                                                                                          return 0UL         ;
     715           0 :     default: FD_LOG_ERR(( "unknown state %d", parser->state ));
     716           0 :   }
     717           0 : }
     718             : 
     719             : static inline uchar *
     720           0 : state_dst( fd_ssmanifest_parser_t * parser ) {
     721           0 :   ulong idx1 = parser->idx1;
     722           0 :   ulong idx2 = parser->idx2;
     723           0 :   fd_snapshot_manifest_t * manifest = parser->manifest;
     724             : 
     725           0 :   switch( parser->state ) {
     726           0 :     case STATE_BLOCKHASH_QUEUE_LAST_HASH_INDEX:                                                               return NULL;
     727           0 :     case STATE_BLOCKHASH_QUEUE_LAST_HASH_OPTION:                                                              return NULL;
     728           0 :     case STATE_BLOCKHASH_QUEUE_LAST_HASH:                                                                     return NULL;
     729           0 :     case STATE_BLOCKHASH_QUEUE_AGES_LENGTH:                                                                   return (uchar*)&manifest->blockhashes_len;
     730           0 :     case STATE_BLOCKHASH_QUEUE_AGES_HASH:                                                                     return (uchar*)manifest->blockhashes[ idx1 ].hash;
     731           0 :     case STATE_BLOCKHASH_QUEUE_AGES_LAMPORTS_PER_SIGNATURE:                                                   return (uchar*)&manifest->blockhashes[ idx1 ].lamports_per_signature;
     732           0 :     case STATE_BLOCKHASH_QUEUE_AGES_HASH_INDEX:                                                               return (uchar*)&manifest->blockhashes[ idx1 ].hash_index;
     733           0 :     case STATE_BLOCKHASH_QUEUE_AGES_TIMESTAMP:                                                                return (uchar*)&manifest->blockhashes[ idx1 ].timestamp;
     734           0 :     case STATE_BLOCKHASH_QUEUE_MAX_AGE:                                                                       return NULL;
     735           0 :     case STATE_ANCESTORS_LENGTH:                                                                              return (uchar*)&parser->length1;
     736           0 :     case STATE_ANCESTORS:                                                                                     return NULL;
     737           0 :     case STATE_HASH:                                                                                          return manifest->bank_hash;
     738           0 :     case STATE_PARENT_HASH:                                                                                   return manifest->parent_bank_hash;
     739           0 :     case STATE_PARENT_SLOT:                                                                                   return (uchar*)&manifest->parent_slot;
     740           0 :     case STATE_HARD_FORKS_LENGTH:                                                                             return (uchar*)&manifest->hard_forks_len;
     741           0 :     case STATE_HARD_FORKS_SLOT:                                                                               return (uchar*)&manifest->hard_forks[ idx1 ];
     742           0 :     case STATE_HARD_FORKS_VAL:                                                                                return NULL;
     743           0 :     case STATE_TRANSACTION_COUNT:                                                                             return (uchar*)&manifest->transaction_count;
     744           0 :     case STATE_TICK_HEIGHT:                                                                                   return (uchar*)&manifest->tick_height;
     745           0 :     case STATE_SIGNATURE_COUNT:                                                                               return (uchar*)&manifest->signature_count;
     746           0 :     case STATE_CAPITALIZATION:                                                                                return (uchar*)&manifest->capitalization;
     747           0 :     case STATE_MAX_TICK_HEIGHT:                                                                               return (uchar*)&manifest->max_tick_height;
     748           0 :     case STATE_HASHES_PER_TICK_OPTION:                                                                        return &parser->option;
     749           0 :     case STATE_HASHES_PER_TICK:                                                                               return (uchar*)&manifest->hashes_per_tick;
     750           0 :     case STATE_TICKS_PER_SLOT:                                                                                return (uchar*)&manifest->ticks_per_slot;
     751           0 :     case STATE_NS_PER_SLOT:                                                                                   return (uchar*)&manifest->ns_per_slot;
     752           0 :     case STATE_GENSIS_CREATION_TIME:                                                                          return (uchar*)&manifest->creation_time_millis;
     753           0 :     case STATE_SLOTS_PER_YEAR:                                                                                return (uchar*)&manifest->slots_per_year;
     754           0 :     case STATE_ACCOUNTS_DATA_LEN:                                                                             return NULL;
     755           0 :     case STATE_SLOT:                                                                                          return (uchar*)&manifest->slot;
     756           0 :     case STATE_EPOCH:                                                                                         return (uchar*)&parser->epoch;
     757           0 :     case STATE_BLOCK_HEIGHT:                                                                                  return (uchar*)&manifest->block_height;
     758           0 :     case STATE_COLLECTOR_ID:                                                                                  return NULL;
     759           0 :     case STATE_COLLECTOR_FEES:                                                                                return (uchar*)&manifest->collector_fees;
     760           0 :     case STATE_FEE_COLLECTOR_LAMPORTS_PER_SIGNATURE:                                                          return NULL;
     761           0 :     case STATE_FEE_RATE_GOVERNOR_TARGET_LAMPORTS_PER_SIGNATURE:                                               return (uchar*)&manifest->fee_rate_governor.target_lamports_per_signature;
     762           0 :     case STATE_FEE_RATE_GOVERNOR_TARGET_SIGNATURES_PER_SLOT:                                                  return (uchar*)&manifest->fee_rate_governor.target_signatures_per_slot;
     763           0 :     case STATE_FEE_RATE_GOVERNOR_MIN_LAMPORTS_PER_SIGNATURE:                                                  return (uchar*)&manifest->fee_rate_governor.min_lamports_per_signature;
     764           0 :     case STATE_FEE_RATE_GOVERNOR_MAX_LAMPORTS_PER_SIGNATURE:                                                  return (uchar*)&manifest->fee_rate_governor.max_lamports_per_signature;
     765           0 :     case STATE_FEE_RATE_GOVERNOR_BURN_PERCENT:                                                                return (uchar*)&manifest->fee_rate_governor.burn_percent;
     766           0 :     case STATE_COLLECTED_RENT:                                                                                return NULL;
     767           0 :     case STATE_RENT_COLLECTOR_EPOCH:                                                                          return NULL;
     768           0 :     case STATE_RENT_COLLECTOR_EPOCH_SCHEDULE_SLOTS_PER_EPOCH:                                                 return NULL;
     769           0 :     case STATE_RENT_COLLECTOR_EPOCH_SCHEDULE_LEADER_SCHEDULE_SLOT_OFFSET:                                     return NULL;
     770           0 :     case STATE_RENT_COLLECTOR_EPOCH_SCHEDULE_WARMUP:                                                          return NULL;
     771           0 :     case STATE_RENT_COLLECTOR_EPOCH_SCHEDULE_FIRST_NORMAL_EPOCH:                                              return NULL;
     772           0 :     case STATE_RENT_COLLECTOR_EPOCH_SCHEDULE_FIRST_NORMAL_SLOT:                                               return NULL;
     773           0 :     case STATE_RENT_COLLECTOR_SLOTS_PER_YEAR:                                                                 return NULL;
     774           0 :     case STATE_RENT_COLLECTOR_RENT_LAMPORTS_PER_UINT8_YEAR:                                                   return (uchar*)&manifest->rent_params.lamports_per_uint8_year;
     775           0 :     case STATE_RENT_COLLECTOR_RENT_EXEMPTION_THRESHOLD:                                                       return (uchar*)&manifest->rent_params.exemption_threshold;
     776           0 :     case STATE_RENT_COLLECTOR_RENT_BURN_PERCENT:                                                              return (uchar*)&manifest->rent_params.burn_percent;
     777           0 :     case STATE_EPOCH_SCHEDULE_SLOTS_PER_EPOCH:                                                                return (uchar*)&manifest->epoch_schedule_params.slots_per_epoch;
     778           0 :     case STATE_EPOCH_SCHEDULE_LEADER_SCHEDULE_SLOT_OFFSET:                                                    return (uchar*)&manifest->epoch_schedule_params.leader_schedule_slot_offset;
     779           0 :     case STATE_EPOCH_SCHEDULE_WARMUP:                                                                         return (uchar*)&manifest->epoch_schedule_params.warmup;
     780           0 :     case STATE_EPOCH_SCHEDULE_FIRST_NORMAL_EPOCH:                                                             return (uchar*)&manifest->epoch_schedule_params.first_normal_epoch;
     781           0 :     case STATE_EPOCH_SCHEDULE_FIRST_NORMAL_SLOT:                                                              return (uchar*)&manifest->epoch_schedule_params.first_normal_slot;
     782           0 :     case STATE_INFLATION_INITIAL:                                                                             return (uchar*)&manifest->inflation_params.initial;
     783           0 :     case STATE_INFLATION_TERMINAL:                                                                            return (uchar*)&manifest->inflation_params.terminal;
     784           0 :     case STATE_INFLATION_TAPER:                                                                               return (uchar*)&manifest->inflation_params.taper;
     785           0 :     case STATE_INFLATION_FOUNDATION:                                                                          return (uchar*)&manifest->inflation_params.foundation;
     786           0 :     case STATE_INFLATION_FOUNDATION_TERM:                                                                     return (uchar*)&manifest->inflation_params.foundation_term;
     787           0 :     case STATE_INFLATION_UNUSED:                                                                              return NULL;
     788           0 :     case STATE_STAKES_VOTE_ACCOUNTS_LENGTH:                                                                   return (uchar*)&manifest->vote_accounts_len;
     789           0 :     case STATE_STAKES_VOTE_ACCOUNTS_KEY:                                                                      return manifest->vote_accounts[ idx1 ].vote_account_pubkey;
     790           0 :     case STATE_STAKES_VOTE_ACCOUNTS_STAKE:                                                                    return (uchar*)&manifest->vote_accounts[ idx1 ].stake;
     791           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_LAMPORTS:                                                           return NULL;
     792           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_LENGTH:                                                        return (uchar*)&parser->length2;
     793           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_VARIANT:                                                       return (uchar*)&parser->variant;
     794           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_NODE_PUBKEY:                                           return (uchar*)&manifest->vote_accounts[ idx1 ].node_account_pubkey;
     795           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_AUTHORIZED_WITHDRAWER:                                 return NULL;
     796           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_COMMISSION:                                            return (uchar*)&manifest->vote_accounts[ idx1 ].commission;
     797           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_VOTES_LENGTH:                                          return (uchar*)&parser->length3;
     798           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_VOTES:                                                 return NULL;
     799           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_ROOT_SLOT_OPTION:                                      return &parser->option;
     800           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_ROOT_SLOT:                                             return NULL;
     801           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_AUTHORIZED_VOTERS_LENGTH:                              return (uchar*)&parser->length3;
     802           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_AUTHORIZED_VOTERS:                                     return NULL;
     803           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_PRIOR_VOTERS:                                          return NULL;
     804           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_EPOCH_CREDITS_LENGTH:                                  return (uchar*)&manifest->vote_accounts[ idx1 ].epoch_credits_history_len;
     805           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_EPOCH_CREDITS:                                         return (uchar*)manifest->vote_accounts[ idx1 ].epoch_credits;
     806           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_LAST_TIMESTAMP_SLOT:                                   return (uchar*)&manifest->vote_accounts[ idx1 ].last_slot;
     807           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_LAST_TIMESTAMP_TIMESTAMP:                              return (uchar*)&manifest->vote_accounts[ idx1 ].last_timestamp;
     808           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_NODE_PUBKEY:                                            return (uchar*)&manifest->vote_accounts[ idx1 ].node_account_pubkey;
     809           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_WITHDRAWER:                                  return NULL;
     810           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_COMMISSION:                                             return (uchar*)&manifest->vote_accounts[ idx1 ].commission;
     811           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_VOTES_LENGTH:                                           return (uchar*)&parser->length3;
     812           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_VOTES:                                                  return NULL;
     813           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_ROOT_SLOT_OPTION:                                       return &parser->option;
     814           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_ROOT_SLOT:                                              return NULL;
     815           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_VOTERS_LENGTH:                               return (uchar*)&parser->length3;
     816           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_VOTERS:                                      return NULL;
     817           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_PRIOR_VOTERS:                                           return NULL;
     818           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_EPOCH_CREDITS_LENGTH:                                   return (uchar*)&manifest->vote_accounts[ idx1 ].epoch_credits_history_len;
     819           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_EPOCH_CREDITS:                                          return (uchar*)manifest->vote_accounts[ idx1 ].epoch_credits;
     820           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_LAST_TIMESTAMP_SLOT:                                    return (uchar*)&manifest->vote_accounts[ idx1 ].last_slot;
     821           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_LAST_TIMESTAMP_TIMESTAMP:                               return (uchar*)&manifest->vote_accounts[ idx1 ].last_timestamp;
     822           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_NODE_PUBKEY:                                             return (uchar*)&manifest->vote_accounts[ idx1 ].node_account_pubkey;
     823           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_AUTHORIZED_VOTER:                                        return NULL;
     824           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_AUTHORIZED_VOTER_EPOCH:                                  return NULL;
     825           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_PRIOR_VOTERS:                                            return NULL;
     826           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_AUTHORIZED_WITHDRAWER:                                   return NULL;
     827           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_COMMISSION:                                              return (uchar*)&manifest->vote_accounts[ idx1 ].commission;
     828           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_VOTES_LENGTH:                                            return (uchar*)&parser->length3;
     829           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_VOTES:                                                   return NULL;
     830           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_ROOT_SLOT_OPTION:                                        return &parser->option;
     831           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_ROOT_SLOT:                                               return NULL;
     832           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_EPOCH_CREDITS_LENGTH:                                    return (uchar*)&manifest->vote_accounts[ idx1 ].epoch_credits_history_len;
     833           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_EPOCH_CREDITS:                                           return (uchar*)manifest->vote_accounts[ idx1 ].epoch_credits;
     834           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_LAST_TIMESTAMP_SLOT:                                     return (uchar*)&manifest->vote_accounts[ idx1 ].last_slot;
     835           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_LAST_TIMESTAMP_TIMESTAMP:                                return (uchar*)&manifest->vote_accounts[ idx1 ].last_timestamp;
     836           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_DUMMY:                                                         return NULL;
     837           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_OWNER:                                                              return NULL;
     838           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_EXECUTABLE:                                                         return (uchar*)&parser->option;
     839           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_RENT_EPOCH:                                                         return NULL;
     840           0 :     case STATE_STAKES_STAKE_DELEGATIONS_LENGTH:                                                               return (uchar*)&manifest->stake_delegations_len;
     841           0 :     case STATE_STAKES_STAKE_DELEGATIONS_KEY:                                                                  return (uchar*)&manifest->stake_delegations[ idx1 ].stake_pubkey;
     842           0 :     case STATE_STAKES_STAKE_DELEGATIONS_VOTER_PUBKEY:                                                         return (uchar*)&manifest->stake_delegations[ idx1 ].vote_pubkey;
     843           0 :     case STATE_STAKES_STAKE_DELEGATIONS_STAKE:                                                                return (uchar*)&manifest->stake_delegations[ idx1 ].stake_delegation;
     844           0 :     case STATE_STAKES_STAKE_DELEGATIONS_ACTIVATION_EPOCH:                                                     return (uchar*)&manifest->stake_delegations[ idx1 ].activation_epoch;
     845           0 :     case STATE_STAKES_STAKE_DELEGATIONS_DEACTIVATION_EPOCH:                                                   return (uchar*)&manifest->stake_delegations[ idx1 ].deactivation_epoch;
     846           0 :     case STATE_STAKES_STAKE_DELEGATIONS_WARMUP_COOLDOWN_RATE:                                                 return (uchar*)&manifest->stake_delegations[ idx1 ].warmup_cooldown_rate;
     847           0 :     case STATE_STAKES_UNUSED:                                                                                 return NULL;
     848           0 :     case STATE_STAKES_EPOCH:                                                                                  return NULL;
     849           0 :     case STATE_STAKES_STAKE_HISTORY_LENGTH:                                                                   return (uchar*)&parser->length1;
     850           0 :     case STATE_STAKES_STAKE_HISTORY:                                                                          return NULL;
     851           0 :     case STATE_UNUSED_ACCOUNTS1_LENGTH:                                                                       return (uchar*)&parser->length1;
     852           0 :     case STATE_UNUSED_ACCOUNTS1_UNUSED:                                                                       return NULL;
     853           0 :     case STATE_UNUSED_ACCOUNTS2_LENGTH:                                                                       return (uchar*)&parser->length1;
     854           0 :     case STATE_UNUSED_ACCOUNTS2_UNUSED:                                                                       return NULL;
     855           0 :     case STATE_UNUSED_ACCOUNTS3_LENGTH:                                                                       return (uchar*)&parser->length1;
     856           0 :     case STATE_UNUSED_ACCOUNTS3_UNUSED:                                                                       return NULL;
     857           0 :     case STATE_EPOCH_STAKES_LENGTH:                                                                           return (uchar*)&parser->epoch_stakes_len;
     858           0 :     case STATE_EPOCH_STAKES_KEY:                                                                              return (uchar*)&parser->epoch_stakes_epoch;
     859           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_LENGTH:                                                             return parser->epoch_idx!=ULONG_MAX ? (uchar*)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes_len : (uchar*)&parser->length2;
     860           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_KEY:                                                                return parser->epoch_idx!=ULONG_MAX ? manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].vote : NULL;
     861           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_STAKE:                                                              return parser->epoch_idx!=ULONG_MAX ? (uchar*)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].stake : NULL;
     862           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_LAMPORTS:                                                     return NULL;
     863           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_LENGTH:                                                  return (uchar*)&parser->length3;
     864           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_VARIANT:                                                 return (uchar*)&parser->variant;
     865           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_NODE_PUBKEY:                                     return parser->epoch_idx!=ULONG_MAX ? manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].identity : NULL;;
     866           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_AUTHORIZED_WITHDRAWER:                           return NULL;
     867           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_COMMISSION:                                      return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].commission : NULL;
     868           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_VOTES_LENGTH:                                    return (uchar*)&parser->length4;
     869           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_VOTES:                                           return NULL;
     870           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_ROOT_SLOT_OPTION:                                return &parser->option;
     871           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_ROOT_SLOT:                                       return NULL;
     872           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_AUTHORIZED_VOTERS_LENGTH:                        return (uchar*)&parser->length4;
     873           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_AUTHORIZED_VOTERS:                               return NULL;
     874           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_PRIOR_VOTERS:                                    return NULL;
     875           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_EPOCH_CREDITS_LENGTH:                            return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].epoch_credits_history_len : (uchar*)&parser->length4;
     876           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_EPOCH_CREDITS:                                   return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].epoch_credits : NULL;
     877           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_LAST_TIMESTAMP_SLOT:                             return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].slot : NULL;
     878           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_LAST_TIMESTAMP_TIMESTAMP:                        return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].timestamp : NULL;
     879           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_NODE_PUBKEY:                                      return parser->epoch_idx!=ULONG_MAX ? manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].identity : NULL;
     880           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_WITHDRAWER:                            return NULL;
     881           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_COMMISSION:                                       return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].commission : NULL;
     882           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_VOTES_LENGTH:                                     return (uchar*)&parser->length4;
     883           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_VOTES:                                            return NULL;
     884           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_ROOT_SLOT_OPTION:                                 return &parser->option;
     885           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_ROOT_SLOT:                                        return NULL;
     886           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_VOTERS_LENGTH:                         return (uchar*)&parser->length4;
     887           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_VOTERS:                                return NULL;
     888           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_PRIOR_VOTERS:                                     return NULL;
     889           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_EPOCH_CREDITS_LENGTH:                             return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].epoch_credits_history_len : (uchar*)&parser->length4;
     890           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_EPOCH_CREDITS:                                    return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].epoch_credits : NULL;
     891           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_LAST_TIMESTAMP_SLOT:                              return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].slot : NULL;
     892           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_LAST_TIMESTAMP_TIMESTAMP:                         return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].timestamp : NULL;
     893           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_NODE_PUBKEY:                                       return parser->epoch_idx!=ULONG_MAX ? manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].identity : NULL;
     894           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_AUTHORIZED_VOTER:                                  return NULL;
     895           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_AUTHORIZED_VOTER_EPOCH:                            return NULL;
     896           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_PRIOR_VOTERS:                                      return NULL;
     897           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_AUTHORIZED_WITHDRAWER:                             return NULL;
     898           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_COMMISSION:                                        return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].commission : NULL;
     899           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_VOTES_LENGTH:                                      return (uchar*)&parser->length4;
     900           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_VOTES:                                             return NULL;
     901           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_ROOT_SLOT_OPTION:                                  return &parser->option;
     902           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_ROOT_SLOT:                                         return NULL;
     903           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_EPOCH_CREDITS_LENGTH:                              return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].epoch_credits_history_len : (uchar*)&parser->length4;
     904           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_EPOCH_CREDITS:                                     return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].epoch_credits : NULL;
     905           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_LAST_TIMESTAMP_SLOT:                               return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].slot : NULL;
     906           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_LAST_TIMESTAMP_TIMESTAMP:                          return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].timestamp : NULL;
     907           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_DUMMY:                                                   return NULL;
     908           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_OWNER:                                                        return NULL;
     909           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_EXECUTABLE:                                                   return NULL;
     910           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_RENT_EPOCH:                                                   return NULL;
     911           0 :     case STATE_EPOCH_STAKES_STAKE_DELEGATIONS_LENGTH:                                                         return (uchar*)&parser->length2;
     912           0 :     case STATE_EPOCH_STAKES_STAKE_DELEGATIONS_KEY:                                                            return NULL;
     913           0 :     case STATE_EPOCH_STAKES_STAKE_DELEGATIONS_VOTER_PUBKEY:                                                   return NULL;
     914           0 :     case STATE_EPOCH_STAKES_STAKE_DELEGATIONS_STAKE:                                                          return NULL;
     915           0 :     case STATE_EPOCH_STAKES_STAKE_DELEGATIONS_ACTIVATION_EPOCH:                                               return NULL;
     916           0 :     case STATE_EPOCH_STAKES_STAKE_DELEGATIONS_DEACTIVATION_EPOCH:                                             return NULL;
     917           0 :     case STATE_EPOCH_STAKES_STAKE_DELEGATIONS_WARMUP_COOLDOWN_RATE:                                           return NULL;
     918           0 :     case STATE_EPOCH_STAKES_UNUSED:                                                                           return NULL;
     919           0 :     case STATE_EPOCH_STAKES_EPOCH:                                                                            return NULL;
     920           0 :     case STATE_EPOCH_STAKES_STAKE_HISTORY_LENGTH:                                                             return (uchar*)&parser->length2;
     921           0 :     case STATE_EPOCH_STAKES_STAKE_HISTORY:                                                                    return NULL;
     922           0 :     case STATE_EPOCH_STAKES_TOTAL_STAKE:                                                                      return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].total_stake : NULL;;
     923           0 :     case STATE_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_LENGTH:                                                  return (uchar*)&parser->length2;
     924           0 :     case STATE_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_KEY:                                                     return NULL;
     925           0 :     case STATE_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_VOTE_ACCOUNTS_LENGTH:                                    return (uchar*)&parser->length3;
     926           0 :     case STATE_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_VOTE_ACCOUNTS:                                           return NULL;
     927           0 :     case STATE_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_TOTAL_STAKE:                                             return NULL;
     928           0 :     case STATE_EPOCH_STAKES_EPOCH_AUTHORIZED_VOTERS_LENGTH:                                                   return (uchar*)&parser->length2;
     929           0 :     case STATE_EPOCH_STAKES_EPOCH_AUTHORIZED_VOTERS:                                                          return NULL;
     930           0 :     case STATE_IS_DELTA:                                                                                      return NULL;
     931           0 :     case STATE_ACCOUNTS_DB_STORAGES_LENGTH:                                                                   return (uchar*)&parser->length1;
     932           0 :     case STATE_ACCOUNTS_DB_STORAGES_SLOT:                                                                     return (uchar*)&parser->acc_vec_slot;
     933           0 :     case STATE_ACCOUNTS_DB_STORAGES_ACCOUNT_VECS_LENGTH:                                                      return (uchar*)&parser->length2;
     934           0 :     case STATE_ACCOUNTS_DB_STORAGES_ACCOUNT_VECS_ID:                                                          return (uchar*)&parser->acc_vec_id;
     935           0 :     case STATE_ACCOUNTS_DB_STORAGES_ACCOUNT_VECS_FILE_SZ:                                                     return (uchar*)&parser->acc_vec_file_sz;
     936           0 :     case STATE_ACCOUNTS_DB_STORAGES_DUMMY:                                                                    return NULL;
     937           0 :     case STATE_ACCOUNTS_DB_VERSION:                                                                           return NULL;
     938           0 :     case STATE_ACCOUNTS_DB_SLOT:                                                                              return NULL;
     939           0 :     case STATE_ACCOUNTS_DB_BANK_HASH_INFO_ACCOUNTS_DELTA_HASH:                                                return manifest->accounts_delta_hash;
     940           0 :     case STATE_ACCOUNTS_DB_BANK_HASH_INFO_ACCOUNTS_HASH:                                                      return manifest->accounts_hash;
     941           0 :     case STATE_ACCOUNTS_DB_BANK_HASH_INFO_STATS_NUM_UPDATED_ACCOUNTS:                                         return NULL;
     942           0 :     case STATE_ACCOUNTS_DB_BANK_HASH_INFO_STATS_NUM_REMOVED_ACCOUNTS:                                         return NULL;
     943           0 :     case STATE_ACCOUNTS_DB_BANK_HASH_INFO_STATS_NUM_LAMPORTS_STORED:                                          return NULL;
     944           0 :     case STATE_ACCOUNTS_DB_BANK_HASH_INFO_STATS_TOTAL_DATA_LEN:                                               return NULL;
     945           0 :     case STATE_ACCOUNTS_DB_BANK_HASH_INFO_STATS_NUM_EXECUTABLE_ACCOUNTS:                                      return NULL;
     946           0 :     case STATE_ACCOUNTS_DB_HISTORICAL_ROOTS_LENGTH:                                                           return (uchar*)&parser->length1;
     947           0 :     case STATE_ACCOUNTS_DB_HISTORICAL_ROOTS:                                                                  return NULL;
     948           0 :     case STATE_ACCOUNTS_DB_HISTORICAL_WITH_HASH_LENGTH:                                                       return (uchar*)&parser->length1;
     949           0 :     case STATE_ACCOUNTS_DB_HISTORICAL_WITH_HASH:                                                              return NULL;
     950           0 :     case STATE_LAMPORTS_PER_SIGNATURE:                                                                        return (uchar*)&manifest->lamports_per_signature;
     951           0 :     case STATE_BANK_INCREMENTAL_SNAPSHOT_PERSISTENCE_OPTION:                                                  return &parser->option;
     952           0 :     case STATE_BANK_INCREMENTAL_SNAPSHOT_PERSISTENCE_FULL_SLOT:                                               return NULL;
     953           0 :     case STATE_BANK_INCREMENTAL_SNAPSHOT_PERSISTENCE_FULL_HASH:                                               return NULL;
     954           0 :     case STATE_BANK_INCREMENTAL_SNAPSHOT_PERSISTENCE_FULL_CAPITALIZATION:                                     return NULL;
     955           0 :     case STATE_BANK_INCREMENTAL_SNAPSHOT_PERSISTENCE_INCREMENTAL_HASH:                                        return NULL;
     956           0 :     case STATE_BANK_INCREMENTAL_SNAPSHOT_PERSISTENCE_INCREMENTAL_CAPITALIZATION:                              return NULL;
     957           0 :     case STATE_EPOCH_ACCOUNT_HASH_OPTION:                                                                     return &parser->option;
     958           0 :     case STATE_EPOCH_ACCOUNT_HASH:                                                                            return manifest->epoch_account_hash;
     959           0 :     case STATE_VERSIONED_EPOCH_STAKES_LENGTH:                                                                 return (uchar*)&parser->epoch_stakes_len;
     960           0 :     case STATE_VERSIONED_EPOCH_STAKES_EPOCH:                                                                  return (uchar*)&parser->epoch_stakes_epoch;
     961           0 :     case STATE_VERSIONED_EPOCH_STAKES_VARIANT:                                                                return (uchar*)&parser->variant;
     962           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_LENGTH:                                            return parser->epoch_idx!=ULONG_MAX ? (uchar*)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes_len : (uchar*)&parser->length2;
     963           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_KEY:                                               return parser->epoch_idx!=ULONG_MAX ? manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].vote : NULL;
     964           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_STAKE:                                             return parser->epoch_idx!=ULONG_MAX ? (uchar*)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].stake : NULL;
     965           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_LAMPORTS:                                    return NULL;
     966           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_LENGTH:                                 return (uchar*)&parser->length3;
     967           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_VARIANT:                                return (uchar*)&parser->variant;
     968           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_NODE_PUBKEY:                    return parser->epoch_idx!=ULONG_MAX ? manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].identity : NULL;
     969           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_AUTHORIZED_WITHDRAWER:          return NULL;
     970           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_COMMISSION:                     return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].commission : NULL;
     971           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_VOTES_LENGTH:                   return (uchar*)&parser->length4;
     972           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_VOTES:                          return NULL;
     973           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_ROOT_SLOT_OPTION:               return &parser->option;
     974           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_ROOT_SLOT:                      return NULL;
     975           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_AUTHORIZED_VOTERS_LENGTH:       return (uchar*)&parser->length4;
     976           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_AUTHORIZED_VOTERS:              return NULL;
     977           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_PRIOR_VOTERS:                   return NULL;
     978           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_EPOCH_CREDITS_LENGTH:           return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].epoch_credits_history_len : (uchar*)&parser->length4;
     979           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_EPOCH_CREDITS:                  return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].epoch_credits : NULL;
     980           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_LAST_TIMESTAMP_SLOT:            return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].slot : NULL;
     981           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_LAST_TIMESTAMP_TIMESTAMP:       return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].timestamp : NULL;
     982           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_NODE_PUBKEY:                     return parser->epoch_idx!=ULONG_MAX ? manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].identity : NULL;
     983           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_WITHDRAWER:           return NULL;
     984           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_COMMISSION:                      return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].commission : NULL;
     985           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_VOTES_LENGTH:                    return (uchar*)&parser->length4;
     986           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_VOTES:                           return NULL;
     987           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_ROOT_SLOT_OPTION:                return &parser->option;
     988           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_ROOT_SLOT:                       return NULL;
     989           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_VOTERS_LENGTH:        return (uchar*)&parser->length4;
     990           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_VOTERS:               return NULL;
     991           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_PRIOR_VOTERS:                    return NULL;
     992           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_EPOCH_CREDITS_LENGTH:            return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].epoch_credits_history_len : (uchar*)&parser->length4;
     993           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_EPOCH_CREDITS:                   return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].epoch_credits : NULL;
     994           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_LAST_TIMESTAMP_SLOT:             return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].slot : NULL;
     995           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_LAST_TIMESTAMP_TIMESTAMP:        return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].timestamp : NULL;
     996           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_NODE_PUBKEY:                      return parser->epoch_idx!=ULONG_MAX ? manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].identity : NULL;
     997           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_AUTHORIZED_VOTER:                 return NULL;
     998           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_AUTHORIZED_VOTER_EPOCH:           return NULL;
     999           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_PRIOR_VOTERS:                     return NULL;
    1000           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_AUTHORIZED_WITHDRAWER:            return NULL;
    1001           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_COMMISSION:                       return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].commission : NULL;
    1002           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_VOTES_LENGTH:                     return (uchar*)&parser->length4;
    1003           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_VOTES:                            return NULL;
    1004           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_ROOT_SLOT_OPTION:                 return &parser->option;
    1005           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_ROOT_SLOT:                        return NULL;
    1006           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_EPOCH_CREDITS_LENGTH:             return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].epoch_credits_history_len : (uchar*)&parser->length4;
    1007           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_EPOCH_CREDITS:                    return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].epoch_credits : NULL;
    1008           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_LAST_TIMESTAMP_SLOT:              return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].slot : NULL;
    1009           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_LAST_TIMESTAMP_TIMESTAMP:         return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].timestamp : NULL;
    1010           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_DUMMY:                                  return NULL;
    1011           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_OWNER:                                       return NULL;
    1012           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_EXECUTABLE:                                  return NULL;
    1013           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_RENT_EPOCH:                                  return NULL;
    1014           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_LENGTH:                                        return (uchar*)&parser->length2;
    1015           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_KEY:                                           return NULL;
    1016           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_VOTER_PUBKEY:                                  return NULL;
    1017           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_STAKE:                                         return NULL;
    1018           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_ACTIVATION_EPOCH:                              return NULL;
    1019           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_DEACTIVATION_EPOCH:                            return NULL;
    1020           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_WARMUP_COOLDOWN_RATE:                          return NULL;
    1021           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_CREDITS_OBSERVED:                              return NULL;
    1022           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_UNUSED:                                                          return NULL;
    1023           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_EPOCH:                                                           return NULL;
    1024           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_HISTORY_LENGTH:                                            return (uchar*)&parser->length2;
    1025           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_HISTORY:                                                   return NULL;
    1026           0 :     case STATE_VERSIONED_EPOCH_STAKES_TOTAL_STAKE:                                                            return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].total_stake : NULL;
    1027           0 :     case STATE_VERSIONED_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_LENGTH:                                        return (uchar*)&parser->length2;
    1028           0 :     case STATE_VERSIONED_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_KEY:                                           return NULL;
    1029           0 :     case STATE_VERSIONED_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_VOTE_ACCOUNTS_LENGTH:                          return (uchar*)&parser->length3;
    1030           0 :     case STATE_VERSIONED_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_VOTE_ACCOUNTS:                                 return NULL;
    1031           0 :     case STATE_VERSIONED_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_TOTAL_STAKE:                                   return NULL;
    1032           0 :     case STATE_VERSIONED_EPOCH_STAKES_EPOCH_AUTHORIZED_VOTERS_LENGTH:                                         return (uchar*)&parser->length2;
    1033           0 :     case STATE_VERSIONED_EPOCH_STAKES_EPOCH_AUTHORIZED_VOTERS:                                                return NULL;
    1034           0 :     case STATE_LTHASH_OPTION:                                                                                 return &parser->option;
    1035           0 :     case STATE_LTHASH:                                                                                        return manifest->accounts_lthash;
    1036           0 :     case STATE_DONE:                                                                                          return NULL;
    1037           0 :     default: FD_LOG_ERR(( "unknown state %d", parser->state ));
    1038           0 :   }
    1039           0 : }
    1040             : 
    1041             : #if SSMANIFEST_DEBUG
    1042             : static inline void
    1043             : state_log( fd_ssmanifest_parser_t * parser ) {
    1044             :   fd_snapshot_manifest_t * manifest = parser->manifest;
    1045             : 
    1046             :   switch( parser->state ) {
    1047             :     case STATE_FEE_RATE_GOVERNOR_TARGET_LAMPORTS_PER_SIGNATURE:                  FD_LOG_NOTICE(( "STATE_FEE_RATE_GOVERNOR_TARGET_LAMPORTS_PER_SIGNATURE                   %lu", manifest->fee_rate_governor.target_lamports_per_signature ));   break;
    1048             :     case STATE_FEE_RATE_GOVERNOR_TARGET_SIGNATURES_PER_SLOT:                     FD_LOG_NOTICE(( "STATE_FEE_RATE_GOVERNOR_TARGET_SIGNATURES_PER_SLOT                      %lu", manifest->fee_rate_governor.target_signatures_per_slot ));      break;
    1049             :     case STATE_FEE_RATE_GOVERNOR_MIN_LAMPORTS_PER_SIGNATURE:                     FD_LOG_NOTICE(( "STATE_FEE_RATE_GOVERNOR_MIN_LAMPORTS_PER_SIGNATURE                      %lu", manifest->fee_rate_governor.min_lamports_per_signature ));      break;
    1050             :     case STATE_FEE_RATE_GOVERNOR_MAX_LAMPORTS_PER_SIGNATURE:                     FD_LOG_NOTICE(( "STATE_FEE_RATE_GOVERNOR_MAX_LAMPORTS_PER_SIGNATURE                      %lu", manifest->fee_rate_governor.max_lamports_per_signature ));      break;
    1051             :     case STATE_FEE_RATE_GOVERNOR_BURN_PERCENT:                                   FD_LOG_NOTICE(( "STATE_FEE_RATE_GOVERNOR_BURN_PERCENT                                    %u",  manifest->fee_rate_governor.burn_percent ));                    break;
    1052             :     case STATE_EPOCH_SCHEDULE_SLOTS_PER_EPOCH:                                   FD_LOG_NOTICE(( "STATE_EPOCH_SCHEDULE_SLOTS_PER_EPOCH                                    %lu", manifest->epoch_schedule_params.slots_per_epoch ));             break;
    1053             :     case STATE_EPOCH_SCHEDULE_LEADER_SCHEDULE_SLOT_OFFSET:                       FD_LOG_NOTICE(( "STATE_EPOCH_SCHEDULE_LEADER_SCHEDULE_SLOT_OFFSET                        %lu", manifest->epoch_schedule_params.leader_schedule_slot_offset )); break;
    1054             :     case STATE_EPOCH_SCHEDULE_WARMUP:                                            FD_LOG_NOTICE(( "STATE_EPOCH_SCHEDULE_WARMUP                                             %d",  manifest->epoch_schedule_params.warmup ));                      break;
    1055             :     case STATE_INFLATION_INITIAL:                                                FD_LOG_NOTICE(( "STATE_INFLATION_INITIAL                                                 %lf", manifest->inflation_params.initial ));                          break;
    1056             :     case STATE_INFLATION_TERMINAL:                                               FD_LOG_NOTICE(( "STATE_INFLATION_TERMINAL                                                %lf", manifest->inflation_params.terminal ));                         break;
    1057             :     case STATE_INFLATION_TAPER:                                                  FD_LOG_NOTICE(( "STATE_INFLATION_TAPER                                                   %lf", manifest->inflation_params.taper ));                            break;
    1058             :     case STATE_INFLATION_FOUNDATION:                                             FD_LOG_NOTICE(( "STATE_INFLATION_FOUNDATION                                              %lf", manifest->inflation_params.foundation ));                       break;
    1059             :     case STATE_INFLATION_FOUNDATION_TERM:                                        FD_LOG_NOTICE(( "STATE_INFLATION_FOUNDATION_TERM                                         %lf", manifest->inflation_params.foundation_term ));                  break;
    1060             :     case STATE_STAKES_VOTE_ACCOUNTS_LENGTH:                                      FD_LOG_NOTICE(( "STATE_STAKES_VOTE_ACCOUNTS_LENGTH                                       %lu", manifest->vote_accounts_len ));                                 break;
    1061             :     case STATE_STAKES_STAKE_DELEGATIONS_LENGTH:                                  FD_LOG_NOTICE(( "STATE_STAKES_STAKE_DELEGATIONS_LENGTH                                   %lu", parser->length1 ));                                             break;
    1062             :     case STATE_STAKES_STAKE_HISTORY_LENGTH:                                      FD_LOG_NOTICE(( "STATE_STAKES_STAKE_HISTORY_LENGTH                                       %lu", parser->length1 ));                                             break;
    1063             :     case STATE_EPOCH_STAKES_LENGTH:                                              FD_LOG_NOTICE(( "STATE_EPOCH_STAKES_LENGTH                                               %lu", parser->length1 ));                                             break;
    1064             :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_LENGTH:                                FD_LOG_NOTICE(( "STATE_EPOCH_STAKES_VOTE_ACCOUNTS_LENGTH                                 %lu", parser->length2 ));                                             break;
    1065             :     case STATE_EPOCH_STAKES_STAKE_DELEGATIONS_LENGTH:                            FD_LOG_NOTICE(( "STATE_EPOCH_STAKES_STAKE_DELEGATIONS_LENGTH                             %lu", parser->length2 ));                                             break;
    1066             :     case STATE_EPOCH_STAKES_STAKE_HISTORY_LENGTH:                                FD_LOG_NOTICE(( "STATE_EPOCH_STAKES_STAKE_HISTORY_LENGTH:                                %lu", parser->length2 ));                                             break;
    1067             :     case STATE_EPOCH_STAKES_EPOCH_AUTHORIZED_VOTERS_LENGTH:                      FD_LOG_NOTICE(( "STATE_EPOCH_STAKES_EPOCH_AUTHORIZED_VOTERS_LENGTH                       %lu", parser->length2 ));                                             break;
    1068             :     case STATE_ACCOUNTS_DB_STORAGES_LENGTH:                                      FD_LOG_NOTICE(( "STATE_ACCOUNTS_DB_STORAGES_LENGTH                                       %lu", parser->length1 ));                                             break;
    1069             :     case STATE_ACCOUNTS_DB_HISTORICAL_ROOTS_LENGTH:                              FD_LOG_NOTICE(( "STATE_ACCOUNTS_DB_HISTORICAL_ROOTS_LENGTH                               %lu", parser->length1 ));                                             break;
    1070             :     case STATE_ACCOUNTS_DB_HISTORICAL_WITH_HASH_LENGTH:                          FD_LOG_NOTICE(( "STATE_ACCOUNTS_DB_HISTORICAL_WITH_HASH_LENGTH                           %lu", parser->length1 ));                                             break;
    1071             :     case STATE_VERSIONED_EPOCH_STAKES_LENGTH:                                    FD_LOG_NOTICE(( "STATE_VERSIONED_EPOCH_STAKES_LENGTH                                     %lu", parser->epoch_stakes_len ));                                    break;
    1072             :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_LENGTH:               FD_LOG_NOTICE(( "STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_LENGTH                %lu", parser->length2 ));                                             break;
    1073             :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_LENGTH:           FD_LOG_NOTICE(( "STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_LENGTH            %lu", parser->length2 ));                                             break;
    1074             :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_HISTORY_LENGTH:               FD_LOG_NOTICE(( "STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_HISTORY_LENGTH                %lu", parser->length2 ));                                             break;
    1075             :     case STATE_VERSIONED_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_LENGTH:           FD_LOG_NOTICE(( "STATE_VERSIONED_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_LENGTH            %lu", parser->length2 ));                                             break;
    1076             :     case STATE_VERSIONED_EPOCH_STAKES_EPOCH_AUTHORIZED_VOTERS_LENGTH:            FD_LOG_NOTICE(( "STATE_VERSIONED_EPOCH_STAKES_EPOCH_AUTHORIZED_VOTERS_LENGTH             %lu", parser->length2 ));                                             break;
    1077             :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_VOTES_LENGTH:              FD_LOG_NOTICE(( "STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_VOTES_LENGTH               %lu", parser->length3 ));                                             break;
    1078             :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_VOTES_LENGTH:               FD_LOG_NOTICE(( "STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_VOTES_LENGTH                %lu", parser->length3 ));                                             break;
    1079             :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_ROOT_SLOT_OPTION:          FD_LOG_NOTICE(( "STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_ROOT_SLOT_OPTION            %d", parser->option ));                                              break;
    1080             :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_VARIANT:                          FD_LOG_NOTICE(( "STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_VARIANT:                           %u", parser->variant ));                                             break;
    1081             :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_LENGTH:                           FD_LOG_NOTICE(( "STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_LENGTH:                           %lu", parser->length2 ));                                             break;
    1082             :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_AUTHORIZED_VOTERS_LENGTH: FD_LOG_NOTICE(( "STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_AUTHORIZED_VOTERS_LENGTH: %lu", parser->length3 ));                                             break;
    1083             :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_VOTERS_LENGTH:  FD_LOG_NOTICE(( "STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_VOTERS_LENGTH:  %lu", parser->length3 ));                                             break;
    1084             :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_EPOCH_CREDITS_LENGTH:      FD_LOG_NOTICE(( "STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_EPOCH_CREDITS_LENGTH:      %lu", manifest->vote_accounts[ parser->idx1 ].epoch_credits_history_len )); break;
    1085             :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_LAST_TIMESTAMP_SLOT:       FD_LOG_NOTICE(( "STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_LAST_TIMESTAMP_SLOT:       %lu", manifest->vote_accounts[ parser->idx1 ].last_slot ));           break;
    1086             :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_LAST_TIMESTAMP_TIMESTAMP:  FD_LOG_NOTICE(( "STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_LAST_TIMESTAMP_TIMESTAMP:  %ld", manifest->vote_accounts[ parser->idx1 ].last_timestamp ));      break;
    1087             :     default: break;
    1088             :   }
    1089             : }
    1090             : #endif
    1091             : 
    1092             : static inline int
    1093           0 : state_validate( fd_ssmanifest_parser_t * parser ) {
    1094           0 :   fd_snapshot_manifest_t * manifest = parser->manifest;
    1095             : 
    1096             :   /* Option values in bincode must be either 0 or 1 */
    1097           0 :   switch( parser->state ) {
    1098           0 :     case STATE_EPOCH_SCHEDULE_WARMUP: {
    1099           0 :       if( FD_UNLIKELY( manifest->epoch_schedule_params.warmup>1 ) ) {
    1100           0 :         FD_LOG_WARNING(( "invalid epoch_schedule_warmup bool %d", manifest->epoch_schedule_params.warmup ));
    1101           0 :         return -1;
    1102           0 :       }
    1103           0 :       break;
    1104           0 :     }
    1105           0 :     case STATE_HASHES_PER_TICK_OPTION: {
    1106           0 :       if( FD_UNLIKELY( parser->option>1 ) ) {
    1107           0 :         FD_LOG_WARNING(( "invalid hashes_per_tick option %d", parser->option ));
    1108           0 :         return -1;
    1109           0 :       }
    1110           0 :       break;
    1111           0 :     }
    1112           0 :     case STATE_BANK_INCREMENTAL_SNAPSHOT_PERSISTENCE_OPTION: {
    1113           0 :       if( FD_UNLIKELY( parser->option>1 ) ) {
    1114           0 :         FD_LOG_WARNING(( "invalid bank_incremental_snapshot_persistence option %d", parser->option ));
    1115           0 :         return -1;
    1116           0 :       }
    1117           0 :       break;
    1118           0 :     }
    1119           0 :     case STATE_EPOCH_ACCOUNT_HASH_OPTION: {
    1120           0 :       if( FD_UNLIKELY( parser->option>1 ) ) {
    1121           0 :         FD_LOG_WARNING(( "invalid epoch_account_hash option %d", parser->option ));
    1122           0 :         return -1;
    1123           0 :       }
    1124           0 :       break;
    1125           0 :     }
    1126           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_VARIANT: {
    1127           0 :       if( FD_UNLIKELY( parser->variant>2 ) ) {
    1128           0 :         FD_LOG_WARNING(( "invalid vote_accounts value data variant %u", parser->variant ));
    1129           0 :         return -1;
    1130           0 :       }
    1131           0 :       break;
    1132           0 :     }
    1133           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_EXECUTABLE: {
    1134           0 :       if( FD_UNLIKELY( parser->option>1 ) ) {
    1135           0 :         FD_LOG_WARNING(( "invalid vote_accounts value executable %u", parser->variant ));
    1136           0 :         return -1;
    1137           0 :       }
    1138           0 :       break;
    1139           0 :     }
    1140           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_ROOT_SLOT_OPTION: {
    1141           0 :       if( FD_UNLIKELY( parser->option>1 ) ) {
    1142           0 :         FD_LOG_WARNING(( "invalid vote_accounts value data current root slot option %d", parser->option ));
    1143           0 :         return -1;
    1144           0 :       }
    1145           0 :       break;
    1146           0 :     }
    1147           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_ROOT_SLOT_OPTION: {
    1148           0 :       if( FD_UNLIKELY( parser->option>1 ) ) {
    1149           0 :         FD_LOG_WARNING(( "invalid vote_accounts value data v11411 root slot option %d", parser->option ));
    1150           0 :         return -1;
    1151           0 :       }
    1152           0 :       break;
    1153           0 :     }
    1154           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_ROOT_SLOT_OPTION: {
    1155           0 :       if( FD_UNLIKELY( parser->option>1 ) ) {
    1156           0 :         FD_LOG_WARNING(( "invalid vote_accounts value data v0235 root slot option %d", parser->option ));
    1157           0 :         return -1;
    1158           0 :       }
    1159           0 :       break;
    1160           0 :     }
    1161           0 :     case STATE_VERSIONED_EPOCH_STAKES_VARIANT: {
    1162           0 :       if( FD_UNLIKELY( parser->variant ) ) {
    1163           0 :         FD_LOG_WARNING(( "invalid epoch_stakes variant %u", parser->variant ));
    1164           0 :         return -1;
    1165           0 :       }
    1166           0 :       break;
    1167           0 :     }
    1168           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_ROOT_SLOT_OPTION: {
    1169           0 :       if( FD_UNLIKELY( parser->option>1 ) ) {
    1170           0 :         FD_LOG_WARNING(( "invalid version_epoch_stakes.vote_accounts value data current root slot option %d", parser->option ));
    1171           0 :         return -1;
    1172           0 :       }
    1173           0 :       break;
    1174           0 :     }
    1175           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_ROOT_SLOT_OPTION: {
    1176           0 :       if( FD_UNLIKELY( parser->option>1 ) ) {
    1177           0 :         FD_LOG_WARNING(( "invalid version_epoch_stakes.vote_accounts value data v11411 root slot option %d", parser->option ));
    1178           0 :         return -1;
    1179           0 :       }
    1180           0 :       break;
    1181           0 :     }
    1182           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_ROOT_SLOT_OPTION: {
    1183           0 :       if( FD_UNLIKELY( parser->option>1 ) ) {
    1184           0 :         FD_LOG_WARNING(( "invalid version_epoch_stakes.vote_accounts value data v0235 root slot option %d", parser->option ));
    1185           0 :         return -1;
    1186           0 :       }
    1187           0 :       break;
    1188           0 :     }
    1189           0 :     case STATE_LTHASH_OPTION: {
    1190           0 :       if( FD_UNLIKELY( parser->option>1 ) ) {
    1191           0 :         FD_LOG_WARNING(( "invalid accounts_lthash option %d", parser->option ));
    1192           0 :         return -1;
    1193           0 :       }
    1194           0 :       break;
    1195           0 :     }
    1196           0 :     default: break;
    1197           0 :   }
    1198             : 
    1199           0 :   switch( parser->state ) {
    1200           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_COMMISSION:
    1201             :     // TODO: mainnet-308392063-v2.3.0_backtest.toml has a commission of 254 in it
    1202             :     // case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_COMMISSION:
    1203           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_COMMISSION:
    1204           0 :       if( FD_UNLIKELY( manifest->vote_accounts[ parser->idx1 ].commission>100 ) ) {
    1205           0 :         FD_LOG_WARNING(( "invalid commission %u", manifest->vote_accounts[ parser->idx1 ].commission ));
    1206           0 :         return -1;
    1207           0 :       }
    1208           0 :       break;
    1209           0 :     default:
    1210           0 :       break;
    1211           0 :   }
    1212             : 
    1213             :   /* Lengths must be valid */
    1214           0 :   switch( parser->state ) {
    1215           0 :     case STATE_BLOCKHASH_QUEUE_AGES_LENGTH: {
    1216           0 :       if( FD_UNLIKELY( !manifest->blockhashes_len || manifest->blockhashes_len>sizeof(manifest->blockhashes)/sizeof(manifest->blockhashes[0]) ) ) {
    1217           0 :         FD_LOG_WARNING(( "invalid blockhash_queue_ages length %lu", manifest->blockhashes_len ));
    1218           0 :         return -1;
    1219           0 :       }
    1220           0 :       break;
    1221           0 :     }
    1222           0 :     case STATE_HARD_FORKS_LENGTH: {
    1223           0 :       if( FD_UNLIKELY( manifest->hard_forks_len>sizeof(manifest->hard_forks)/sizeof(manifest->hard_forks[0]) ) ) {
    1224           0 :         FD_LOG_WARNING(( "invalid hard_forks length %lu", manifest->hard_forks_len ));
    1225           0 :         return -1;
    1226           0 :       }
    1227           0 :       break;
    1228           0 :     }
    1229           0 :     case STATE_STAKES_VOTE_ACCOUNTS_LENGTH: {
    1230           0 :       if( FD_UNLIKELY( manifest->vote_accounts_len>sizeof(manifest->vote_accounts)/sizeof(manifest->vote_accounts[0]) ) ) {
    1231           0 :         FD_LOG_WARNING(( "invalid vote_accounts_len %lu", manifest->vote_accounts_len ));
    1232           0 :         return -1;
    1233           0 :       }
    1234           0 :       break;
    1235           0 :     }
    1236           0 :     case STATE_STAKES_STAKE_DELEGATIONS_LENGTH: {
    1237           0 :       if( FD_UNLIKELY( manifest->stake_delegations_len>( 1UL<<22UL ) ) ) { /* 2^21 needed, arbitrarily put 2^22 to have some margin */
    1238           0 :         FD_LOG_WARNING(( "invalid stakes_stake_delegations length %lu", manifest->stake_delegations_len ));
    1239           0 :         return -1;
    1240           0 :       }
    1241           0 :       break;
    1242           0 :     }
    1243           0 :     case STATE_STAKES_STAKE_DELEGATIONS_WARMUP_COOLDOWN_RATE: {
    1244           0 :       if( FD_UNLIKELY( manifest->stake_delegations[ parser->idx1 ].warmup_cooldown_rate>1.0 ) ) {
    1245           0 :         FD_LOG_WARNING(( "invalid stakes_stake_delegations warmup cooldown rate %f", manifest->stake_delegations[ parser->idx1 ].warmup_cooldown_rate ));
    1246           0 :         return -1;
    1247           0 :       }
    1248           0 :       break;
    1249           0 :     }
    1250           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_EPOCH_CREDITS_LENGTH:
    1251           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_EPOCH_CREDITS_LENGTH:
    1252           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_EPOCH_CREDITS_LENGTH: {
    1253           0 :       if( FD_UNLIKELY( manifest->vote_accounts[ parser->idx1 ].epoch_credits_history_len>64UL ) ) {
    1254           0 :         FD_LOG_WARNING(( "invalid vote_accounts value data current epoch credits length %lu", manifest->vote_accounts[ parser->idx1 ].epoch_credits_history_len ));
    1255           0 :         return -1;
    1256           0 :       }
    1257           0 :       break;
    1258           0 :     }
    1259           0 :     case STATE_VERSIONED_EPOCH_STAKES_LENGTH: {
    1260           0 :       if( FD_UNLIKELY( parser->epoch_stakes_len>6UL ) ) {
    1261           0 :         FD_LOG_WARNING(( "invalid epoch_stakes_len %lu", parser->epoch_stakes_len ));
    1262           0 :         return -1;
    1263           0 :       }
    1264           0 :       break;
    1265           0 :     }
    1266           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_VOTES_LENGTH: {
    1267           0 :       if( FD_UNLIKELY( parser->length3>31 ) ) {
    1268           0 :         FD_LOG_WARNING(( "invalid vote_accounts value data current votes length %lu", parser->length3 ));
    1269           0 :         return -1;
    1270           0 :       }
    1271           0 :       break;
    1272           0 :     }
    1273           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_VOTES_LENGTH: {
    1274           0 :       if( FD_UNLIKELY( parser->length3>31 ) ) {
    1275           0 :         FD_LOG_WARNING(( "invalid vote_accounts value data v11411 votes length %lu", parser->length3 ));
    1276           0 :         return -1;
    1277           0 :       }
    1278           0 :       break;
    1279           0 :     }
    1280           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_VOTES_LENGTH: {
    1281           0 :       if( FD_UNLIKELY( parser->length3>31 ) ) {
    1282           0 :         FD_LOG_WARNING(( "invalid vote_accounts value data v0235 votes length %lu", parser->length3 ));
    1283           0 :         return -1;
    1284           0 :       }
    1285           0 :       break;
    1286           0 :     }
    1287           0 :     case STATE_ACCOUNTS_DB_STORAGES_LENGTH: {
    1288           0 :       if( FD_UNLIKELY( parser->length1>(1UL<<20UL ) ) ) {
    1289           0 :         FD_LOG_WARNING(( "invalid accounts_db_storages length %lu", parser->length1 ));
    1290           0 :         return -1;
    1291           0 :       }
    1292           0 :       break;
    1293           0 :     }
    1294           0 :     case STATE_ACCOUNTS_DB_STORAGES_ACCOUNT_VECS_LENGTH: {
    1295           0 :       if( FD_UNLIKELY( parser->length2>(1UL<<16UL ) ) ) {
    1296           0 :         FD_LOG_WARNING(( "invalid accounts_db_storages account vecs length %lu", parser->length2 ));
    1297           0 :         return -1;
    1298           0 :       }
    1299           0 :       break;
    1300           0 :     }
    1301           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_LENGTH:
    1302           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_LENGTH: {
    1303           0 :       ulong stakes_len = parser->epoch_idx!=ULONG_MAX ? manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes_len : parser->length2;
    1304           0 :       ulong stakes_cap = sizeof(manifest->epoch_stakes[ 0UL ].vote_stakes)/sizeof(manifest->epoch_stakes[ 0UL ].vote_stakes[ 0UL ]);
    1305           0 :       if( FD_UNLIKELY( stakes_len>stakes_cap ) ) {
    1306           0 :         FD_LOG_WARNING(( "invalid versioned epoch stakes vote accounts length %lu", stakes_len ));
    1307           0 :         return -1;
    1308           0 :       }
    1309           0 :       break;
    1310           0 :     }
    1311           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_LENGTH: {
    1312           0 :       if( FD_UNLIKELY( parser->length2>( 1UL<<22UL ) ) ) { /* 2^21 needed, arbitrarily put 2^22 to have some margin */
    1313           0 :         FD_LOG_WARNING(( "invalid versioned epoch stakes stake delegation length %lu", parser->length2 ));
    1314           0 :         return -1;
    1315           0 :       }
    1316           0 :       break;
    1317           0 :     }
    1318           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_LENGTH: {
    1319           0 :       if( FD_UNLIKELY( parser->length2>10UL*(1UL<<20UL) ) ) { /* 10 MiB */
    1320           0 :         FD_LOG_WARNING(( "invalid vote_accounts value data length %lu", parser->length2 ));
    1321           0 :         return -1;
    1322           0 :       }
    1323           0 :       break;
    1324           0 :     }
    1325           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_LENGTH:
    1326           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_LENGTH: {
    1327           0 :       if( FD_UNLIKELY( parser->length3>10UL*(1UL<<20UL) ) ) { /* 10 MiB */
    1328           0 :         FD_LOG_WARNING(( "invalid version_epoch_stakes.vote_accounts value data length %lu", parser->length3 ));
    1329           0 :         return -1;
    1330           0 :       }
    1331           0 :       break;
    1332           0 :     }
    1333           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_EPOCH_CREDITS_LENGTH:
    1334           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_EPOCH_CREDITS_LENGTH:
    1335           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_EPOCH_CREDITS_LENGTH:
    1336           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_EPOCH_CREDITS_LENGTH:
    1337           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_EPOCH_CREDITS_LENGTH:
    1338           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_EPOCH_CREDITS_LENGTH: {
    1339           0 :       ulong length = parser->epoch_idx!=ULONG_MAX ? manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ parser->idx2 ].epoch_credits_history_len : parser->length4;
    1340           0 :       if( FD_UNLIKELY( length>64UL ) ) {
    1341           0 :         FD_LOG_WARNING(( "invalid version_epoch_stakes.vote_accounts value data current epoch credits length %lu", length ));
    1342           0 :         return -1;
    1343           0 :       }
    1344           0 :       break;
    1345           0 :     }
    1346           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_VOTES_LENGTH:
    1347           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_VOTES_LENGTH: {
    1348           0 :       if( FD_UNLIKELY( parser->length4>31 ) ) {
    1349           0 :         FD_LOG_WARNING(( "invalid version_epoch_stakes.vote_accounts value data current votes length %lu", parser->length4 ));
    1350           0 :         return -1;
    1351           0 :       }
    1352           0 :       break;
    1353           0 :     }
    1354           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_VOTES_LENGTH:
    1355           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_VOTES_LENGTH: {
    1356           0 :       if( FD_UNLIKELY( parser->length4>31 ) ) {
    1357           0 :         FD_LOG_WARNING(( "invalid version_epoch_stakes.vote_accounts value data v11411 votes length %lu", parser->length4 ));
    1358           0 :         return -1;
    1359           0 :       }
    1360           0 :       break;
    1361           0 :     }
    1362           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_VOTES_LENGTH:
    1363           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_VOTES_LENGTH: {
    1364           0 :       if( FD_UNLIKELY( parser->length4>31 ) ) {
    1365           0 :         FD_LOG_WARNING(( "invalid version_epoch_stakes.vote_accounts value data v0235 votes length %lu", parser->length4 ));
    1366           0 :         return -1;
    1367           0 :       }
    1368           0 :       break;
    1369           0 :     }
    1370           0 :     case STATE_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_LENGTH:
    1371           0 :     case STATE_VERSIONED_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_LENGTH: {
    1372           0 :       if( FD_UNLIKELY( parser->length2>(1UL<<16UL) ) ) {
    1373           0 :         FD_LOG_WARNING(( "invalid versioned epoch stakes node id to vote accounts length %lu", parser->length2 ));
    1374           0 :         return -1;
    1375           0 :       }
    1376           0 :       break;
    1377           0 :     }
    1378           0 :   }
    1379             : 
    1380           0 :   return 0;
    1381           0 : }
    1382             : 
    1383             : static inline int
    1384           0 : state_process( fd_ssmanifest_parser_t * parser ) {
    1385           0 :   fd_snapshot_manifest_t * manifest = parser->manifest;
    1386             : 
    1387           0 :   FD_TEST( parser->state!=STATE_DONE );
    1388             : 
    1389           0 :   if( FD_UNLIKELY( parser->state==STATE_ACCOUNTS_DB_STORAGES_ACCOUNT_VECS_FILE_SZ && parser->acc_vec_map ) ) {
    1390           0 :     if( FD_UNLIKELY( !acc_vec_pool_free( parser->acc_vec_pool ) ) ) {
    1391           0 :       FD_LOG_WARNING(( "acc_vec_pool is full, cannot insert new account vec" ));
    1392           0 :       return -1;
    1393           0 :     }
    1394             : 
    1395           0 :     acc_vec_key_t key = { .slot=parser->acc_vec_slot, .id=parser->acc_vec_id };
    1396           0 :     if( FD_UNLIKELY( acc_vec_map_ele_query( parser->acc_vec_map, &key, NULL, parser->acc_vec_pool ) ) ) {
    1397           0 :       FD_LOG_WARNING(( "duplicate account vec with slot %lu and id %lu", parser->acc_vec_slot, parser->acc_vec_id ));
    1398           0 :       return -1;
    1399           0 :     }
    1400             : 
    1401           0 :     acc_vec_t * acc_vec = acc_vec_pool_ele_acquire( parser->acc_vec_pool );
    1402           0 :     acc_vec->key.id = parser->acc_vec_id;
    1403           0 :     acc_vec->key.slot = parser->acc_vec_slot;
    1404           0 :     acc_vec->file_sz = parser->acc_vec_file_sz;
    1405           0 :     acc_vec_map_ele_insert( parser->acc_vec_map, acc_vec, parser->acc_vec_pool );
    1406           0 :   }
    1407             : 
    1408           0 :   if( FD_UNLIKELY( parser->state==STATE_EPOCH_STAKES_KEY ) ) {
    1409           0 :     ulong epoch_delta = parser->epoch_stakes_epoch-parser->epoch;
    1410           0 :     parser->epoch_idx = epoch_delta<2UL ? epoch_delta : ULONG_MAX;
    1411           0 :   }
    1412             : 
    1413           0 :   if( FD_UNLIKELY( parser->state==STATE_VERSIONED_EPOCH_STAKES_EPOCH ) ) {
    1414           0 :     ulong epoch_delta = parser->epoch_stakes_epoch-parser->epoch;
    1415           0 :     parser->epoch_idx = epoch_delta<2UL ? epoch_delta : ULONG_MAX;
    1416           0 :   }
    1417             : 
    1418             :   /* STATE_STAKES_VOTE_ACCOUNTS */
    1419             : 
    1420           0 :   if( FD_UNLIKELY( parser->state==STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_LENGTH && !parser->length2 ) ) {
    1421           0 :     parser->state = STATE_STAKES_VOTE_ACCOUNTS_VALUE_OWNER;
    1422           0 :     return 0;
    1423           0 :   }
    1424             : 
    1425           0 :   if( FD_UNLIKELY( parser->state==STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_VARIANT ) ) {
    1426           0 :     switch( parser->variant ) {
    1427           0 :       case 2: parser->state = STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_NODE_PUBKEY; return 0;
    1428           0 :       case 1: parser->state = STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_NODE_PUBKEY; return 0;
    1429           0 :       case 0: parser->state = STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_NODE_PUBKEY; return 0;
    1430           0 :     }
    1431           0 :   }
    1432             : 
    1433           0 :   if( FD_UNLIKELY( parser->state==STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_LENGTH ) ) parser->account_data_start = parser->off;
    1434             : 
    1435           0 :   switch( parser->state ) {
    1436           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_LAST_TIMESTAMP_TIMESTAMP:
    1437           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_LAST_TIMESTAMP_TIMESTAMP:
    1438           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_LAST_TIMESTAMP_TIMESTAMP:
    1439           0 :       parser->state = STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_DUMMY;
    1440           0 :       return 0;
    1441           0 :     default: break;
    1442           0 :   }
    1443             : 
    1444             :   /* STATE_EPOCH_STAKES_VOTE_ACCOUNTS */
    1445             : 
    1446           0 :   if( FD_UNLIKELY( parser->state==STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_LENGTH && !parser->length3 ) ) {
    1447           0 :     parser->state = STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_OWNER;
    1448           0 :     return 0;
    1449           0 :   }
    1450             : 
    1451           0 :   if( FD_UNLIKELY( parser->state==STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_VARIANT ) ) {
    1452           0 :     switch( parser->variant ) {
    1453           0 :       case 2: parser->state = STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_NODE_PUBKEY; return 0;
    1454           0 :       case 1: parser->state = STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_NODE_PUBKEY; return 0;
    1455           0 :       case 0: parser->state = STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_NODE_PUBKEY; return 0;
    1456           0 :     }
    1457           0 :   }
    1458             : 
    1459           0 :   if( FD_UNLIKELY( parser->state==STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_LENGTH ) ) parser->account_data_start = parser->off;
    1460             : 
    1461             : 
    1462           0 :   if( FD_UNLIKELY( parser->state==STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_OWNER && parser->epoch_idx!=ULONG_MAX ) ) {
    1463             :     /* We're only interested in vote accounts with stakes>0. When stakes==0, we
    1464             :        decrement the counters so that we store all vote/stakes in a compact array. */
    1465           0 :     fd_snapshot_manifest_vote_stakes_t * vote_stakes = &parser->manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ parser->idx2 ];
    1466           0 :     if( vote_stakes->stake==0 ) {
    1467           0 :       parser->manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes_len--;
    1468           0 :       parser->idx2--;
    1469           0 :     }
    1470           0 :   }
    1471             : 
    1472           0 :   switch( parser->state ) {
    1473           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_LAST_TIMESTAMP_TIMESTAMP:
    1474           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_LAST_TIMESTAMP_TIMESTAMP:
    1475           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_LAST_TIMESTAMP_TIMESTAMP:
    1476           0 :       parser->state = STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_DUMMY;
    1477           0 :       return 0;
    1478           0 :     default: break;
    1479           0 :   }
    1480             : 
    1481             :   /* STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS */
    1482             : 
    1483           0 :   if( FD_UNLIKELY( parser->state==STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_LENGTH && !parser->length3 ) ) {
    1484           0 :     parser->state = STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_OWNER;
    1485           0 :     return 0;
    1486           0 :   }
    1487             : 
    1488           0 :   if( FD_UNLIKELY( parser->state==STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_VARIANT ) ) {
    1489           0 :     switch( parser->variant ) {
    1490           0 :       case 2: parser->state = STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_NODE_PUBKEY; return 0;
    1491           0 :       case 1: parser->state = STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_NODE_PUBKEY; return 0;
    1492           0 :       case 0: parser->state = STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_NODE_PUBKEY; return 0;
    1493           0 :     }
    1494           0 :   }
    1495             : 
    1496           0 :   if( FD_UNLIKELY( parser->state==STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_LENGTH ) ) parser->account_data_start = parser->off;
    1497             : 
    1498           0 :   if( FD_UNLIKELY( parser->state==STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_OWNER && parser->epoch_idx!=ULONG_MAX ) ) {
    1499             :     /* We're only interested in vote accounts with stakes>0. When stakes==0, we
    1500             :        decrement the counters so that we store all vote/stakes in a compact array. */
    1501           0 :     fd_snapshot_manifest_vote_stakes_t * vote_stakes = &parser->manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ parser->idx2 ];
    1502           0 :     if( vote_stakes->stake==0 ) {
    1503           0 :       parser->manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes_len--;
    1504           0 :       parser->idx2--;
    1505           0 :     }
    1506           0 :   }
    1507             : 
    1508           0 :   switch( parser->state ) {
    1509           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_LAST_TIMESTAMP_TIMESTAMP:
    1510           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_LAST_TIMESTAMP_TIMESTAMP:
    1511           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_LAST_TIMESTAMP_TIMESTAMP:
    1512           0 :       parser->state = STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_DUMMY;
    1513           0 :       return 0;
    1514           0 :     default: break;
    1515           0 :   }
    1516             : 
    1517           0 :   switch( parser->state ) {
    1518           0 :     case STATE_HASHES_PER_TICK_OPTION:    manifest->has_hashes_per_tick    = !!parser->option; parser->state += 2-!!parser->option; return 0;
    1519           0 :     case STATE_BANK_INCREMENTAL_SNAPSHOT_PERSISTENCE_OPTION: {
    1520           0 :       if( FD_LIKELY( !!parser->option ) ) parser->state += 1;
    1521           0 :       else                                parser->state = STATE_EPOCH_ACCOUNT_HASH_OPTION;
    1522           0 :       return 0;
    1523           0 :     }
    1524           0 :     case STATE_EPOCH_ACCOUNT_HASH_OPTION: manifest->has_epoch_account_hash = !!parser->option; parser->state += 2-!!parser->option; return 0;
    1525           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_ROOT_SLOT_OPTION: parser->state += 2-!!parser->option; return 0;
    1526           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_ROOT_SLOT_OPTION: parser->state += 2-!!parser->option; return 0;
    1527           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_ROOT_SLOT_OPTION: parser->state += 2-!!parser->option; return 0;
    1528           0 :     case STATE_LTHASH_OPTION:             manifest->has_accounts_lthash    = !!parser->option; parser->state += 2-!!parser->option; return 0;
    1529           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_ROOT_SLOT_OPTION: parser->state += 2-!!parser->option; return 0;
    1530           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_ROOT_SLOT_OPTION: parser->state += 2-!!parser->option; return 0;
    1531           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_ROOT_SLOT_OPTION: parser->state += 2-!!parser->option; return 0;
    1532           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_CURRENT_ROOT_SLOT_OPTION: parser->state += 2-!!parser->option; return 0;
    1533           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_ROOT_SLOT_OPTION: parser->state += 2-!!parser->option; return 0;
    1534           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_ROOT_SLOT_OPTION: parser->state += 2-!!parser->option; return 0;
    1535           0 :     default: break;
    1536           0 :   }
    1537             : 
    1538           0 :   ulong length = 0UL;
    1539           0 :   ulong * idx;
    1540           0 :   int next_target = INT_MAX;
    1541           0 :   switch( parser->state ) {
    1542           0 :     case STATE_BLOCKHASH_QUEUE_AGES_LENGTH:                            length = manifest->blockhashes_len;   idx = &parser->idx1; next_target = STATE_BLOCKHASH_QUEUE_MAX_AGE;                                break;
    1543           0 :     case STATE_HARD_FORKS_LENGTH:                                      length = manifest->hard_forks_len;    idx = &parser->idx1; next_target = STATE_TRANSACTION_COUNT;                                      break;
    1544           0 :     case STATE_STAKES_VOTE_ACCOUNTS_LENGTH:                            length = manifest->vote_accounts_len; idx = &parser->idx1; next_target = STATE_STAKES_STAKE_DELEGATIONS_LENGTH;                        break;
    1545           0 :     case STATE_STAKES_STAKE_DELEGATIONS_LENGTH:                        length = manifest->stake_delegations_len;        idx = &parser->idx1; next_target = STATE_STAKES_UNUSED;                                          break;
    1546           0 :     case STATE_EPOCH_STAKES_LENGTH:                                    length = parser->epoch_stakes_len;    idx = &parser->idx1; next_target = STATE_IS_DELTA;                                               break;
    1547           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_LENGTH:                      length = parser->epoch_idx!=ULONG_MAX ? manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes_len : parser->length2; idx = &parser->idx2; next_target = STATE_EPOCH_STAKES_STAKE_DELEGATIONS_LENGTH;                  break;
    1548           0 :     case STATE_EPOCH_STAKES_STAKE_DELEGATIONS_LENGTH:                  length = parser->length2;             idx = &parser->idx2; next_target = STATE_EPOCH_STAKES_UNUSED;                                    break;
    1549           0 :     case STATE_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_LENGTH:           length = parser->length2;             idx = &parser->idx2; next_target = STATE_EPOCH_STAKES_EPOCH_AUTHORIZED_VOTERS_LENGTH;            break;
    1550           0 :     case STATE_ACCOUNTS_DB_STORAGES_LENGTH:                            length = parser->length1;             idx = &parser->idx1; next_target = STATE_ACCOUNTS_DB_VERSION;                                    break;
    1551           0 :     case STATE_ACCOUNTS_DB_STORAGES_ACCOUNT_VECS_LENGTH:               length = parser->length2;             idx = &parser->idx2; next_target = STATE_ACCOUNTS_DB_STORAGES_DUMMY;                             break;
    1552           0 :     case STATE_VERSIONED_EPOCH_STAKES_LENGTH:                          length = parser->epoch_stakes_len;    idx = &parser->idx1; next_target = STATE_LTHASH_OPTION;                                          break;
    1553           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_LENGTH:     length = parser->epoch_idx!=ULONG_MAX ? manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes_len : parser->length2; idx = &parser->idx2; next_target = STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_LENGTH; break;
    1554           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_LENGTH: length = parser->length2;             idx = &parser->idx2; next_target = STATE_VERSIONED_EPOCH_STAKES_STAKES_UNUSED;                   break;
    1555           0 :     case STATE_VERSIONED_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_LENGTH: length = parser->length2;             idx = &parser->idx2; next_target = STATE_VERSIONED_EPOCH_STAKES_EPOCH_AUTHORIZED_VOTERS_LENGTH;  break;
    1556           0 :     default: break;
    1557           0 :   }
    1558             : 
    1559           0 :   if( FD_UNLIKELY( next_target!=INT_MAX ) ) {
    1560           0 :     *idx = 0UL;
    1561           0 :     if( FD_UNLIKELY( !length ) ) {
    1562           0 :       parser->state = next_target;
    1563           0 :       return 0;
    1564           0 :     }
    1565           0 :   }
    1566             : 
    1567           0 :   int iter_target = INT_MAX;
    1568           0 :   switch( parser->state ) {
    1569           0 :     case STATE_BLOCKHASH_QUEUE_AGES_TIMESTAMP:                                   length = manifest->blockhashes_len;       idx = &parser->idx1; next_target = STATE_BLOCKHASH_QUEUE_MAX_AGE;                                iter_target = STATE_BLOCKHASH_QUEUE_AGES_LENGTH+1UL;                            break;
    1570           0 :     case STATE_HARD_FORKS_VAL:                                                   length = manifest->hard_forks_len;        idx = &parser->idx1; next_target = STATE_TRANSACTION_COUNT;                                      iter_target = STATE_HARD_FORKS_LENGTH+1UL;                                      break;
    1571           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_RENT_EPOCH:                            length = manifest->vote_accounts_len;     idx = &parser->idx1; next_target = STATE_STAKES_STAKE_DELEGATIONS_LENGTH;                        iter_target = STATE_STAKES_VOTE_ACCOUNTS_LENGTH+1UL;                            break;
    1572           0 :     case STATE_STAKES_STAKE_DELEGATIONS_WARMUP_COOLDOWN_RATE:                    length = manifest->stake_delegations_len; idx = &parser->idx1; next_target = STATE_STAKES_UNUSED;                                          iter_target = STATE_STAKES_STAKE_DELEGATIONS_LENGTH+1UL;                        break;
    1573           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_RENT_EPOCH:                      length = parser->epoch_idx!=ULONG_MAX ? manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes_len : parser->length2; idx = &parser->idx2; next_target = STATE_EPOCH_STAKES_STAKE_DELEGATIONS_LENGTH;                  iter_target = STATE_EPOCH_STAKES_VOTE_ACCOUNTS_LENGTH+1UL;                      break;
    1574           0 :     case STATE_EPOCH_STAKES_STAKE_DELEGATIONS_WARMUP_COOLDOWN_RATE:              length = parser->length2;                 idx = &parser->idx2; next_target = STATE_EPOCH_STAKES_UNUSED;                                    iter_target = STATE_EPOCH_STAKES_STAKE_DELEGATIONS_LENGTH+1UL;                  break;
    1575           0 :     case STATE_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_TOTAL_STAKE:                length = parser->length2;                 idx = &parser->idx2; next_target = STATE_EPOCH_STAKES_EPOCH_AUTHORIZED_VOTERS_LENGTH;            iter_target = STATE_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_LENGTH+1UL;           break;
    1576           0 :     case STATE_EPOCH_STAKES_EPOCH_AUTHORIZED_VOTERS:                             length = parser->epoch_stakes_len;        idx = &parser->idx1; next_target = STATE_IS_DELTA;                                               iter_target = STATE_EPOCH_STAKES_LENGTH+1UL;                                    break;
    1577           0 :     case STATE_ACCOUNTS_DB_STORAGES_DUMMY:                                       length = parser->length1;                 idx = &parser->idx1; next_target = STATE_ACCOUNTS_DB_VERSION;                                    iter_target = STATE_ACCOUNTS_DB_STORAGES_LENGTH+1UL;                            break;
    1578           0 :     case STATE_ACCOUNTS_DB_STORAGES_ACCOUNT_VECS_FILE_SZ:                        length = parser->length2;                 idx = &parser->idx2; next_target = STATE_ACCOUNTS_DB_STORAGES_DUMMY;                             iter_target = STATE_ACCOUNTS_DB_STORAGES_ACCOUNT_VECS_LENGTH+1UL;               break;
    1579           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_RENT_EPOCH:     length = parser->epoch_idx!=ULONG_MAX ? manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes_len : parser->length2; idx = &parser->idx2; next_target = STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_LENGTH; iter_target = STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_LENGTH+1UL;     break;
    1580           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_CREDITS_OBSERVED: length = parser->length2;             idx = &parser->idx2; next_target = STATE_VERSIONED_EPOCH_STAKES_STAKES_UNUSED;                   iter_target = STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_LENGTH+1UL; break;
    1581           0 :     case STATE_VERSIONED_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_TOTAL_STAKE:      length = parser->length2;             idx = &parser->idx2; next_target = STATE_VERSIONED_EPOCH_STAKES_EPOCH_AUTHORIZED_VOTERS_LENGTH;  iter_target = STATE_VERSIONED_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_LENGTH+1UL; break;
    1582           0 :     case STATE_VERSIONED_EPOCH_STAKES_EPOCH_AUTHORIZED_VOTERS:                   length = parser->epoch_stakes_len;    idx = &parser->idx1; next_target = STATE_LTHASH_OPTION;                                          iter_target = STATE_VERSIONED_EPOCH_STAKES_LENGTH+1UL;                          break;
    1583           0 :     default: break;
    1584           0 :   }
    1585             : 
    1586           0 :   if( FD_UNLIKELY( iter_target!=INT_MAX ) ) {
    1587           0 :     *idx += 1UL;
    1588           0 :     if( FD_LIKELY( *idx<length ) ) parser->state = iter_target;
    1589           0 :     else                           parser->state = next_target;
    1590           0 :     return 0;
    1591           0 :   }
    1592             : 
    1593           0 :   parser->state += 1;
    1594           0 :   return 0;
    1595           0 : }
    1596             : 
    1597             : FD_FN_CONST ulong
    1598           0 : fd_ssmanifest_parser_align( void ) {
    1599           0 :   return 128UL;
    1600           0 : }
    1601             : 
    1602             : FD_FN_CONST ulong
    1603           0 : fd_ssmanifest_parser_footprint( ulong max_acc_vecs ) {
    1604           0 :   ulong l = FD_LAYOUT_INIT;
    1605           0 :   l = FD_LAYOUT_APPEND( l, alignof(fd_ssmanifest_parser_t), sizeof(fd_ssmanifest_parser_t)         );
    1606           0 :   l = FD_LAYOUT_APPEND( l, acc_vec_pool_align(),            acc_vec_pool_footprint( max_acc_vecs ) );
    1607           0 :   l = FD_LAYOUT_APPEND( l, acc_vec_map_align(),             acc_vec_map_footprint( max_acc_vecs )  );
    1608           0 :   return FD_LAYOUT_FINI( l, alignof(fd_ssmanifest_parser_t) );
    1609           0 : }
    1610             : 
    1611             : void *
    1612             : fd_ssmanifest_parser_new( void * shmem,
    1613             :                           ulong  max_acc_vecs,
    1614           0 :                           ulong  seed ) {
    1615           0 :   if( FD_UNLIKELY( !shmem ) ) {
    1616           0 :     FD_LOG_WARNING(( "NULL shmem" ));
    1617           0 :     return NULL;
    1618           0 :   }
    1619             : 
    1620           0 :   if( FD_UNLIKELY( !fd_ulong_is_aligned( (ulong)shmem, alignof(fd_ssmanifest_parser_t) ) ) ) {
    1621           0 :     FD_LOG_WARNING(( "misaligned shmem" ));
    1622           0 :     return NULL;
    1623           0 :   }
    1624             : 
    1625           0 :   FD_SCRATCH_ALLOC_INIT( l, shmem );
    1626           0 :   fd_ssmanifest_parser_t * parser = FD_SCRATCH_ALLOC_APPEND( l, alignof(fd_ssmanifest_parser_t), sizeof(fd_ssmanifest_parser_t)         );
    1627           0 :   void * _acc_vec_pool            = FD_SCRATCH_ALLOC_APPEND( l, acc_vec_pool_align(),            acc_vec_pool_footprint( max_acc_vecs ) );
    1628           0 :   void * _acc_vec_map             = FD_SCRATCH_ALLOC_APPEND( l, acc_vec_map_align(),             acc_vec_map_footprint( max_acc_vecs )  );
    1629             : 
    1630           0 :   parser->acc_vec_pool = acc_vec_pool_join( acc_vec_pool_new( _acc_vec_pool, max_acc_vecs ) );
    1631           0 :   FD_TEST( parser->acc_vec_pool );
    1632             : 
    1633           0 :   parser->acc_vec_map = acc_vec_map_join( acc_vec_map_new( _acc_vec_map, max_acc_vecs, seed ) );
    1634           0 :   FD_TEST( parser->acc_vec_map );
    1635             : 
    1636           0 :   parser->max_acc_vecs = max_acc_vecs;
    1637           0 :   parser->seed         = seed;
    1638             : 
    1639           0 :   return parser;
    1640           0 : }
    1641             : 
    1642             : fd_ssmanifest_parser_t *
    1643           0 : fd_ssmanifest_parser_join( void * shmem ) {
    1644           0 :   return shmem;
    1645           0 : }
    1646             : 
    1647             : void
    1648             : fd_ssmanifest_parser_init( fd_ssmanifest_parser_t * parser,
    1649           0 :                            fd_snapshot_manifest_t * manifest ) {
    1650           0 :   parser->state    = STATE_BLOCKHASH_QUEUE_LAST_HASH_INDEX;
    1651           0 :   parser->off      = 0UL;
    1652           0 :   parser->dst      = state_dst( parser );
    1653           0 :   parser->dst_sz   = state_size( parser );
    1654           0 :   parser->dst_cur  = 0UL;
    1655           0 :   parser->manifest = manifest;
    1656             : 
    1657           0 :   FD_SCRATCH_ALLOC_INIT( l, parser );
    1658           0 :                          FD_SCRATCH_ALLOC_APPEND( l, alignof(fd_ssmanifest_parser_t), sizeof(fd_ssmanifest_parser_t)                 );
    1659           0 :   void * _acc_vec_pool = FD_SCRATCH_ALLOC_APPEND( l, acc_vec_pool_align(),            acc_vec_pool_footprint( parser->max_acc_vecs ) );
    1660           0 :   void * _acc_vec_map  = FD_SCRATCH_ALLOC_APPEND( l, acc_vec_map_align(),             acc_vec_map_footprint( parser->max_acc_vecs )  );
    1661             : 
    1662           0 :   acc_vec_pool_new( _acc_vec_pool, parser->max_acc_vecs );
    1663           0 :   acc_vec_map_new( _acc_vec_map, parser->max_acc_vecs, parser->seed );
    1664           0 : }
    1665             : 
    1666             : int
    1667             : fd_ssmanifest_parser_consume( fd_ssmanifest_parser_t * parser,
    1668             :                               uchar const *            buf,
    1669           0 :                               ulong                    bufsz ) {
    1670             : #if SSMANIFEST_DEBUG
    1671             :   int state = parser->state;
    1672             : #endif
    1673             : 
    1674           0 :   while( bufsz ) {
    1675             : #if SSMANIFEST_DEBUG
    1676             :     if( parser->state>state ) {
    1677             :       FD_LOG_WARNING(( "State is %d (%lu/%lu)", parser->state, parser->dst_cur, parser->dst_sz ));
    1678             :       state = parser->state;
    1679             :     }
    1680             : #endif
    1681             : 
    1682           0 :     ulong consume = fd_ulong_min( bufsz, parser->dst_sz-parser->dst_cur );
    1683             : 
    1684           0 :     if( FD_LIKELY( parser->dst && consume ) ) memcpy( parser->dst+parser->dst_cur, buf, consume );
    1685             : 
    1686           0 :     parser->off     += consume;
    1687           0 :     parser->dst_cur += consume;
    1688           0 :     buf             += consume;
    1689           0 :     bufsz           -= consume;
    1690             : 
    1691             : #if SSMANIFEST_DEBUG
    1692             :     // FD_LOG_WARNING(( "Consumed %lu new (%lu/%lu) bytes", consume, parser->dst_cur, parser->dst_sz ));
    1693             : #endif
    1694             : 
    1695           0 :     if( FD_LIKELY( parser->dst_cur==parser->dst_sz ) ) {
    1696             : #if SSMANIFEST_DEBUG
    1697             :       state_log( parser );
    1698             : #endif
    1699           0 :       if( FD_UNLIKELY( -1==state_validate( parser ) ) ) {
    1700           0 :         FD_LOG_WARNING(("state_validate failed"));
    1701           0 :         return -1;
    1702           0 :       }
    1703           0 :       if( FD_UNLIKELY( -1==state_process( parser ) ) ) {
    1704           0 :         FD_LOG_WARNING(("state_process failed"));
    1705           0 :         return -1;
    1706           0 :       }
    1707           0 :       parser->dst     = state_dst( parser );
    1708           0 :       parser->dst_sz  = state_size( parser );
    1709           0 :       parser->dst_cur = 0UL;
    1710           0 :     }
    1711             : 
    1712           0 :     if( FD_UNLIKELY( parser->state==STATE_DONE ) ) break;
    1713           0 :     if( FD_UNLIKELY( !bufsz ) ) return 1;
    1714           0 :   }
    1715             : 
    1716           0 :   if( FD_UNLIKELY( bufsz ) ) {
    1717           0 :     FD_LOG_WARNING(( "excess data in buffer" ));
    1718           0 :     return -1;
    1719           0 :   }
    1720             : 
    1721           0 :   return 0;
    1722           0 : }
    1723             : 
    1724             : ulong
    1725             : fd_ssmanifest_acc_vec_sz( fd_ssmanifest_parser_t const * parser,
    1726             :                           ulong                          slot,
    1727           0 :                           ulong                          id ) {
    1728           0 :   acc_vec_key_t key = {
    1729           0 :     .slot = slot,
    1730           0 :     .id   = id
    1731           0 :   };
    1732             : 
    1733           0 :   acc_vec_t * result = acc_vec_map_ele_query( parser->acc_vec_map, &key, NULL, parser->acc_vec_pool );
    1734           0 :   if( FD_UNLIKELY( !result ) ) return ULONG_MAX;
    1735             : 
    1736           0 :   return result->file_sz;
    1737           0 : }

Generated by: LCOV version 1.14