Skip to main content

pogo_masterfile/
lib.rs

1//! Generated from Pokémon GO masterfile — runtime API.
2//!
3//! Crate root. The hand-written templates (`masterfile.rs`, `error.rs`,
4//! `fetcher.rs`, `builder.rs`, `blocking.rs`) are copied verbatim by codegen;
5//! everything in THIS file (per-group accessor methods, the `GroupIndexes`
6//! storage struct, upstream re-exports) is regenerated on every
7//! `bun run generate`.
8
9use std::collections::HashMap;
10
11pub mod accessor;
12#[cfg(feature = "async")]
13pub mod builder;
14pub mod error;
15pub mod fetcher;
16mod masterfile;
17
18#[cfg(feature = "blocking")]
19pub mod blocking;
20
21#[cfg(feature = "async")]
22pub use crate::builder::MasterfileBuilder;
23pub use crate::error::{Error, Result};
24pub use crate::fetcher::DEFAULT_MASTERFILE_URL;
25#[cfg(feature = "async")]
26pub use crate::fetcher::{Fetcher, ReqwestFetcher};
27pub use crate::masterfile::Masterfile;
28
29pub use pogo_masterfile_types::{MasterfileEntry, UnknownTemplateId, parse_masterfile};
30
31// Bring the per-group TemplateId types into a flat module path so GroupIndexes
32// can name them without a giant import block.
33mod template_ids {
34    pub use pogo_masterfile_types::avatar_customization::AvatarCustomizationTemplateId;
35    pub use pogo_masterfile_types::avatar_group_order_settings::AvatarGroupOrderSettingsTemplateId;
36    pub use pogo_masterfile_types::avatar_item_display::AvatarItemDisplayTemplateId;
37    pub use pogo_masterfile_types::badge_settings::BadgeSettingsTemplateId;
38    pub use pogo_masterfile_types::bread_move_level_settings::BreadMoveLevelSettingsTemplateId;
39    pub use pogo_masterfile_types::buddy_activity_category_settings::BuddyActivityCategorySettingsTemplateId;
40    pub use pogo_masterfile_types::buddy_emotion_level_settings::BuddyEmotionLevelSettingsTemplateId;
41    pub use pogo_masterfile_types::buddy_level_settings::BuddyLevelSettingsTemplateId;
42    pub use pogo_masterfile_types::client_quest_template::ClientQuestTemplateTemplateId;
43    pub use pogo_masterfile_types::code_gate_proto::CodeGateProtoTemplateId;
44    pub use pogo_masterfile_types::combat_league::CombatLeagueTemplateId;
45    pub use pogo_masterfile_types::combat_move::CombatMoveTemplateId;
46    pub use pogo_masterfile_types::combat_npc_personality::CombatNpcPersonalityTemplateId;
47    pub use pogo_masterfile_types::combat_npc_trainer::CombatNpcTrainerTemplateId;
48    pub use pogo_masterfile_types::combat_ranking_proto_settings::CombatRankingProtoSettingsTemplateId;
49    pub use pogo_masterfile_types::combat_type::CombatTypeTemplateId;
50    pub use pogo_masterfile_types::event_pass_settings::EventPassSettingsTemplateId;
51    pub use pogo_masterfile_types::event_pass_tier_settings::EventPassTierSettingsTemplateId;
52    pub use pogo_masterfile_types::evolution_chain_display_settings::EvolutionChainDisplaySettingsTemplateId;
53    pub use pogo_masterfile_types::evolution_quest_template::EvolutionQuestTemplateTemplateId;
54    pub use pogo_masterfile_types::feature_gate::FeatureGateTemplateId;
55    pub use pogo_masterfile_types::form_settings::FormSettingsTemplateId;
56    pub use pogo_masterfile_types::fort_power_up_level_settings::FortPowerUpLevelSettingsTemplateId;
57    pub use pogo_masterfile_types::friendship_milestone_settings::FriendshipMilestoneSettingsTemplateId;
58    pub use pogo_masterfile_types::gender_settings::GenderSettingsTemplateId;
59    pub use pogo_masterfile_types::iap_category_display::IapCategoryDisplayTemplateId;
60    pub use pogo_masterfile_types::iap_item_display::IapItemDisplayTemplateId;
61    pub use pogo_masterfile_types::invasion_npc_display_settings::InvasionNpcDisplaySettingsTemplateId;
62    pub use pogo_masterfile_types::item_expiration_settings::ItemExpirationSettingsTemplateId;
63    pub use pogo_masterfile_types::item_settings::ItemSettingsTemplateId;
64    pub use pogo_masterfile_types::language_settings::LanguageSettingsTemplateId;
65    pub use pogo_masterfile_types::level_up_rewards::LevelUpRewardsTemplateId;
66    pub use pogo_masterfile_types::limited_purchase_sku_settings::LimitedPurchaseSkuSettingsTemplateId;
67    pub use pogo_masterfile_types::location_card_settings::LocationCardSettingsTemplateId;
68    pub use pogo_masterfile_types::mega_evo_level_settings::MegaEvoLevelSettingsTemplateId;
69    pub use pogo_masterfile_types::move_sequence_settings::MoveSequenceSettingsTemplateId;
70    pub use pogo_masterfile_types::move_settings::MoveSettingsTemplateId;
71    pub use pogo_masterfile_types::non_combat_move_settings::NonCombatMoveSettingsTemplateId;
72    pub use pogo_masterfile_types::party_play_general_settings::PartyPlayGeneralSettingsTemplateId;
73    pub use pogo_masterfile_types::photo_sets_settings_proto::PhotoSetsSettingsProtoTemplateId;
74    pub use pogo_masterfile_types::pokemon_extended_settings::PokemonExtendedSettingsTemplateId;
75    pub use pogo_masterfile_types::pokemon_family::PokemonFamilyTemplateId;
76    pub use pogo_masterfile_types::pokemon_home_energy_costs::PokemonHomeEnergyCostsTemplateId;
77    pub use pogo_masterfile_types::pokemon_home_form_reversions::PokemonHomeFormReversionsTemplateId;
78    pub use pogo_masterfile_types::pokemon_scale_settings::PokemonScaleSettingsTemplateId;
79    pub use pogo_masterfile_types::pokemon_settings::PokemonSettingsTemplateId;
80    pub use pogo_masterfile_types::pokemon_upgrades::PokemonUpgradesTemplateId;
81    pub use pogo_masterfile_types::pokestop_invasion_availability_settings::PokestopInvasionAvailabilitySettingsTemplateId;
82    pub use pogo_masterfile_types::quest_settings::QuestSettingsTemplateId;
83    pub use pogo_masterfile_types::recommended_search_settings::RecommendedSearchSettingsTemplateId;
84    pub use pogo_masterfile_types::roll_back::RollBackTemplateId;
85    pub use pogo_masterfile_types::settings_override_rule::SettingsOverrideRuleTemplateId;
86    pub use pogo_masterfile_types::sticker_metadata::StickerMetadataTemplateId;
87    pub use pogo_masterfile_types::tappable_settings::TappableSettingsTemplateId;
88    pub use pogo_masterfile_types::temporary_evolution_settings::TemporaryEvolutionSettingsTemplateId;
89    pub use pogo_masterfile_types::type_effective::TypeEffectiveTemplateId;
90    pub use pogo_masterfile_types::vs_seeker_loot::VsSeekerLootTemplateId;
91    pub use pogo_masterfile_types::vs_seeker_pokemon_rewards::VsSeekerPokemonRewardsTemplateId;
92    pub use pogo_masterfile_types::weather_affinities::WeatherAffinitiesTemplateId;
93}
94use template_ids::*;
95
96/// Per-group index storage. Owned by `Masterfile`. The hand-written
97/// `masterfile.rs` template references this struct generically — the
98/// per-group fields are filled in here so the template never has to know
99/// the group set.
100pub(crate) struct GroupIndexes {
101    pub(crate) avatar_customization_index: HashMap<AvatarCustomizationTemplateId, usize>,
102    pub(crate) avatar_customization_order: Vec<usize>,
103    pub(crate) avatar_group_order_settings_index:
104        HashMap<AvatarGroupOrderSettingsTemplateId, usize>,
105    pub(crate) avatar_group_order_settings_order: Vec<usize>,
106    pub(crate) avatar_item_display_index: HashMap<AvatarItemDisplayTemplateId, usize>,
107    pub(crate) avatar_item_display_order: Vec<usize>,
108    pub(crate) badge_settings_index: HashMap<BadgeSettingsTemplateId, usize>,
109    pub(crate) badge_settings_order: Vec<usize>,
110    pub(crate) bread_move_level_settings_index: HashMap<BreadMoveLevelSettingsTemplateId, usize>,
111    pub(crate) bread_move_level_settings_order: Vec<usize>,
112    pub(crate) buddy_activity_category_settings_index:
113        HashMap<BuddyActivityCategorySettingsTemplateId, usize>,
114    pub(crate) buddy_activity_category_settings_order: Vec<usize>,
115    pub(crate) buddy_emotion_level_settings_index:
116        HashMap<BuddyEmotionLevelSettingsTemplateId, usize>,
117    pub(crate) buddy_emotion_level_settings_order: Vec<usize>,
118    pub(crate) buddy_level_settings_index: HashMap<BuddyLevelSettingsTemplateId, usize>,
119    pub(crate) buddy_level_settings_order: Vec<usize>,
120    pub(crate) client_quest_template_index: HashMap<ClientQuestTemplateTemplateId, usize>,
121    pub(crate) client_quest_template_order: Vec<usize>,
122    pub(crate) code_gate_proto_index: HashMap<CodeGateProtoTemplateId, usize>,
123    pub(crate) code_gate_proto_order: Vec<usize>,
124    pub(crate) combat_league_index: HashMap<CombatLeagueTemplateId, usize>,
125    pub(crate) combat_league_order: Vec<usize>,
126    pub(crate) combat_move_index: HashMap<CombatMoveTemplateId, usize>,
127    pub(crate) combat_move_order: Vec<usize>,
128    pub(crate) combat_npc_personality_index: HashMap<CombatNpcPersonalityTemplateId, usize>,
129    pub(crate) combat_npc_personality_order: Vec<usize>,
130    pub(crate) combat_npc_trainer_index: HashMap<CombatNpcTrainerTemplateId, usize>,
131    pub(crate) combat_npc_trainer_order: Vec<usize>,
132    pub(crate) combat_ranking_proto_settings_index:
133        HashMap<CombatRankingProtoSettingsTemplateId, usize>,
134    pub(crate) combat_ranking_proto_settings_order: Vec<usize>,
135    pub(crate) combat_type_index: HashMap<CombatTypeTemplateId, usize>,
136    pub(crate) combat_type_order: Vec<usize>,
137    pub(crate) event_pass_settings_index: HashMap<EventPassSettingsTemplateId, usize>,
138    pub(crate) event_pass_settings_order: Vec<usize>,
139    pub(crate) event_pass_tier_settings_index: HashMap<EventPassTierSettingsTemplateId, usize>,
140    pub(crate) event_pass_tier_settings_order: Vec<usize>,
141    pub(crate) evolution_chain_display_settings_index:
142        HashMap<EvolutionChainDisplaySettingsTemplateId, usize>,
143    pub(crate) evolution_chain_display_settings_order: Vec<usize>,
144    pub(crate) evolution_quest_template_index: HashMap<EvolutionQuestTemplateTemplateId, usize>,
145    pub(crate) evolution_quest_template_order: Vec<usize>,
146    pub(crate) feature_gate_index: HashMap<FeatureGateTemplateId, usize>,
147    pub(crate) feature_gate_order: Vec<usize>,
148    pub(crate) form_settings_index: HashMap<FormSettingsTemplateId, usize>,
149    pub(crate) form_settings_order: Vec<usize>,
150    pub(crate) fort_power_up_level_settings_index:
151        HashMap<FortPowerUpLevelSettingsTemplateId, usize>,
152    pub(crate) fort_power_up_level_settings_order: Vec<usize>,
153    pub(crate) friendship_milestone_settings_index:
154        HashMap<FriendshipMilestoneSettingsTemplateId, usize>,
155    pub(crate) friendship_milestone_settings_order: Vec<usize>,
156    pub(crate) gender_settings_index: HashMap<GenderSettingsTemplateId, usize>,
157    pub(crate) gender_settings_order: Vec<usize>,
158    pub(crate) iap_category_display_index: HashMap<IapCategoryDisplayTemplateId, usize>,
159    pub(crate) iap_category_display_order: Vec<usize>,
160    pub(crate) iap_item_display_index: HashMap<IapItemDisplayTemplateId, usize>,
161    pub(crate) iap_item_display_order: Vec<usize>,
162    pub(crate) invasion_npc_display_settings_index:
163        HashMap<InvasionNpcDisplaySettingsTemplateId, usize>,
164    pub(crate) invasion_npc_display_settings_order: Vec<usize>,
165    pub(crate) item_expiration_settings_index: HashMap<ItemExpirationSettingsTemplateId, usize>,
166    pub(crate) item_expiration_settings_order: Vec<usize>,
167    pub(crate) item_settings_index: HashMap<ItemSettingsTemplateId, usize>,
168    pub(crate) item_settings_order: Vec<usize>,
169    pub(crate) language_settings_index: HashMap<LanguageSettingsTemplateId, usize>,
170    pub(crate) language_settings_order: Vec<usize>,
171    pub(crate) level_up_rewards_index: HashMap<LevelUpRewardsTemplateId, usize>,
172    pub(crate) level_up_rewards_order: Vec<usize>,
173    pub(crate) limited_purchase_sku_settings_index:
174        HashMap<LimitedPurchaseSkuSettingsTemplateId, usize>,
175    pub(crate) limited_purchase_sku_settings_order: Vec<usize>,
176    pub(crate) location_card_settings_index: HashMap<LocationCardSettingsTemplateId, usize>,
177    pub(crate) location_card_settings_order: Vec<usize>,
178    pub(crate) mega_evo_level_settings_index: HashMap<MegaEvoLevelSettingsTemplateId, usize>,
179    pub(crate) mega_evo_level_settings_order: Vec<usize>,
180    pub(crate) move_sequence_settings_index: HashMap<MoveSequenceSettingsTemplateId, usize>,
181    pub(crate) move_sequence_settings_order: Vec<usize>,
182    pub(crate) move_settings_index: HashMap<MoveSettingsTemplateId, usize>,
183    pub(crate) move_settings_order: Vec<usize>,
184    pub(crate) non_combat_move_settings_index: HashMap<NonCombatMoveSettingsTemplateId, usize>,
185    pub(crate) non_combat_move_settings_order: Vec<usize>,
186    pub(crate) party_play_general_settings_index:
187        HashMap<PartyPlayGeneralSettingsTemplateId, usize>,
188    pub(crate) party_play_general_settings_order: Vec<usize>,
189    pub(crate) photo_sets_settings_proto_index: HashMap<PhotoSetsSettingsProtoTemplateId, usize>,
190    pub(crate) photo_sets_settings_proto_order: Vec<usize>,
191    pub(crate) pokemon_extended_settings_index: HashMap<PokemonExtendedSettingsTemplateId, usize>,
192    pub(crate) pokemon_extended_settings_order: Vec<usize>,
193    pub(crate) pokemon_family_index: HashMap<PokemonFamilyTemplateId, usize>,
194    pub(crate) pokemon_family_order: Vec<usize>,
195    pub(crate) pokemon_home_energy_costs_index: HashMap<PokemonHomeEnergyCostsTemplateId, usize>,
196    pub(crate) pokemon_home_energy_costs_order: Vec<usize>,
197    pub(crate) pokemon_home_form_reversions_index:
198        HashMap<PokemonHomeFormReversionsTemplateId, usize>,
199    pub(crate) pokemon_home_form_reversions_order: Vec<usize>,
200    pub(crate) pokemon_scale_settings_index: HashMap<PokemonScaleSettingsTemplateId, usize>,
201    pub(crate) pokemon_scale_settings_order: Vec<usize>,
202    pub(crate) pokemon_settings_index: HashMap<PokemonSettingsTemplateId, usize>,
203    pub(crate) pokemon_settings_order: Vec<usize>,
204    pub(crate) pokemon_upgrades_index: HashMap<PokemonUpgradesTemplateId, usize>,
205    pub(crate) pokemon_upgrades_order: Vec<usize>,
206    pub(crate) pokestop_invasion_availability_settings_index:
207        HashMap<PokestopInvasionAvailabilitySettingsTemplateId, usize>,
208    pub(crate) pokestop_invasion_availability_settings_order: Vec<usize>,
209    pub(crate) quest_settings_index: HashMap<QuestSettingsTemplateId, usize>,
210    pub(crate) quest_settings_order: Vec<usize>,
211    pub(crate) recommended_search_settings_index:
212        HashMap<RecommendedSearchSettingsTemplateId, usize>,
213    pub(crate) recommended_search_settings_order: Vec<usize>,
214    pub(crate) roll_back_index: HashMap<RollBackTemplateId, usize>,
215    pub(crate) roll_back_order: Vec<usize>,
216    pub(crate) settings_override_rule_index: HashMap<SettingsOverrideRuleTemplateId, usize>,
217    pub(crate) settings_override_rule_order: Vec<usize>,
218    pub(crate) sticker_metadata_index: HashMap<StickerMetadataTemplateId, usize>,
219    pub(crate) sticker_metadata_order: Vec<usize>,
220    pub(crate) tappable_settings_index: HashMap<TappableSettingsTemplateId, usize>,
221    pub(crate) tappable_settings_order: Vec<usize>,
222    pub(crate) temporary_evolution_settings_index:
223        HashMap<TemporaryEvolutionSettingsTemplateId, usize>,
224    pub(crate) temporary_evolution_settings_order: Vec<usize>,
225    pub(crate) type_effective_index: HashMap<TypeEffectiveTemplateId, usize>,
226    pub(crate) type_effective_order: Vec<usize>,
227    pub(crate) vs_seeker_loot_index: HashMap<VsSeekerLootTemplateId, usize>,
228    pub(crate) vs_seeker_loot_order: Vec<usize>,
229    pub(crate) vs_seeker_pokemon_rewards_index: HashMap<VsSeekerPokemonRewardsTemplateId, usize>,
230    pub(crate) vs_seeker_pokemon_rewards_order: Vec<usize>,
231    pub(crate) weather_affinities_index: HashMap<WeatherAffinitiesTemplateId, usize>,
232    pub(crate) weather_affinities_order: Vec<usize>,
233}
234
235impl GroupIndexes {
236    /// Walk every entry once, dispatching by variant into the right per-group
237    /// index + order. Singletons fall through the wildcard arm — they're
238    /// addressable via the global `by_id` map but don't get a per-group bucket.
239    pub(crate) fn build(entries: &[MasterfileEntry]) -> Self {
240        let mut avatar_customization_index: HashMap<AvatarCustomizationTemplateId, usize> =
241            HashMap::new();
242        let mut avatar_customization_order: Vec<usize> = Vec::new();
243        let mut avatar_group_order_settings_index: HashMap<
244            AvatarGroupOrderSettingsTemplateId,
245            usize,
246        > = HashMap::new();
247        let mut avatar_group_order_settings_order: Vec<usize> = Vec::new();
248        let mut avatar_item_display_index: HashMap<AvatarItemDisplayTemplateId, usize> =
249            HashMap::new();
250        let mut avatar_item_display_order: Vec<usize> = Vec::new();
251        let mut badge_settings_index: HashMap<BadgeSettingsTemplateId, usize> = HashMap::new();
252        let mut badge_settings_order: Vec<usize> = Vec::new();
253        let mut bread_move_level_settings_index: HashMap<BreadMoveLevelSettingsTemplateId, usize> =
254            HashMap::new();
255        let mut bread_move_level_settings_order: Vec<usize> = Vec::new();
256        let mut buddy_activity_category_settings_index: HashMap<
257            BuddyActivityCategorySettingsTemplateId,
258            usize,
259        > = HashMap::new();
260        let mut buddy_activity_category_settings_order: Vec<usize> = Vec::new();
261        let mut buddy_emotion_level_settings_index: HashMap<
262            BuddyEmotionLevelSettingsTemplateId,
263            usize,
264        > = HashMap::new();
265        let mut buddy_emotion_level_settings_order: Vec<usize> = Vec::new();
266        let mut buddy_level_settings_index: HashMap<BuddyLevelSettingsTemplateId, usize> =
267            HashMap::new();
268        let mut buddy_level_settings_order: Vec<usize> = Vec::new();
269        let mut client_quest_template_index: HashMap<ClientQuestTemplateTemplateId, usize> =
270            HashMap::new();
271        let mut client_quest_template_order: Vec<usize> = Vec::new();
272        let mut code_gate_proto_index: HashMap<CodeGateProtoTemplateId, usize> = HashMap::new();
273        let mut code_gate_proto_order: Vec<usize> = Vec::new();
274        let mut combat_league_index: HashMap<CombatLeagueTemplateId, usize> = HashMap::new();
275        let mut combat_league_order: Vec<usize> = Vec::new();
276        let mut combat_move_index: HashMap<CombatMoveTemplateId, usize> = HashMap::new();
277        let mut combat_move_order: Vec<usize> = Vec::new();
278        let mut combat_npc_personality_index: HashMap<CombatNpcPersonalityTemplateId, usize> =
279            HashMap::new();
280        let mut combat_npc_personality_order: Vec<usize> = Vec::new();
281        let mut combat_npc_trainer_index: HashMap<CombatNpcTrainerTemplateId, usize> =
282            HashMap::new();
283        let mut combat_npc_trainer_order: Vec<usize> = Vec::new();
284        let mut combat_ranking_proto_settings_index: HashMap<
285            CombatRankingProtoSettingsTemplateId,
286            usize,
287        > = HashMap::new();
288        let mut combat_ranking_proto_settings_order: Vec<usize> = Vec::new();
289        let mut combat_type_index: HashMap<CombatTypeTemplateId, usize> = HashMap::new();
290        let mut combat_type_order: Vec<usize> = Vec::new();
291        let mut event_pass_settings_index: HashMap<EventPassSettingsTemplateId, usize> =
292            HashMap::new();
293        let mut event_pass_settings_order: Vec<usize> = Vec::new();
294        let mut event_pass_tier_settings_index: HashMap<EventPassTierSettingsTemplateId, usize> =
295            HashMap::new();
296        let mut event_pass_tier_settings_order: Vec<usize> = Vec::new();
297        let mut evolution_chain_display_settings_index: HashMap<
298            EvolutionChainDisplaySettingsTemplateId,
299            usize,
300        > = HashMap::new();
301        let mut evolution_chain_display_settings_order: Vec<usize> = Vec::new();
302        let mut evolution_quest_template_index: HashMap<EvolutionQuestTemplateTemplateId, usize> =
303            HashMap::new();
304        let mut evolution_quest_template_order: Vec<usize> = Vec::new();
305        let mut feature_gate_index: HashMap<FeatureGateTemplateId, usize> = HashMap::new();
306        let mut feature_gate_order: Vec<usize> = Vec::new();
307        let mut form_settings_index: HashMap<FormSettingsTemplateId, usize> = HashMap::new();
308        let mut form_settings_order: Vec<usize> = Vec::new();
309        let mut fort_power_up_level_settings_index: HashMap<
310            FortPowerUpLevelSettingsTemplateId,
311            usize,
312        > = HashMap::new();
313        let mut fort_power_up_level_settings_order: Vec<usize> = Vec::new();
314        let mut friendship_milestone_settings_index: HashMap<
315            FriendshipMilestoneSettingsTemplateId,
316            usize,
317        > = HashMap::new();
318        let mut friendship_milestone_settings_order: Vec<usize> = Vec::new();
319        let mut gender_settings_index: HashMap<GenderSettingsTemplateId, usize> = HashMap::new();
320        let mut gender_settings_order: Vec<usize> = Vec::new();
321        let mut iap_category_display_index: HashMap<IapCategoryDisplayTemplateId, usize> =
322            HashMap::new();
323        let mut iap_category_display_order: Vec<usize> = Vec::new();
324        let mut iap_item_display_index: HashMap<IapItemDisplayTemplateId, usize> = HashMap::new();
325        let mut iap_item_display_order: Vec<usize> = Vec::new();
326        let mut invasion_npc_display_settings_index: HashMap<
327            InvasionNpcDisplaySettingsTemplateId,
328            usize,
329        > = HashMap::new();
330        let mut invasion_npc_display_settings_order: Vec<usize> = Vec::new();
331        let mut item_expiration_settings_index: HashMap<ItemExpirationSettingsTemplateId, usize> =
332            HashMap::new();
333        let mut item_expiration_settings_order: Vec<usize> = Vec::new();
334        let mut item_settings_index: HashMap<ItemSettingsTemplateId, usize> = HashMap::new();
335        let mut item_settings_order: Vec<usize> = Vec::new();
336        let mut language_settings_index: HashMap<LanguageSettingsTemplateId, usize> =
337            HashMap::new();
338        let mut language_settings_order: Vec<usize> = Vec::new();
339        let mut level_up_rewards_index: HashMap<LevelUpRewardsTemplateId, usize> = HashMap::new();
340        let mut level_up_rewards_order: Vec<usize> = Vec::new();
341        let mut limited_purchase_sku_settings_index: HashMap<
342            LimitedPurchaseSkuSettingsTemplateId,
343            usize,
344        > = HashMap::new();
345        let mut limited_purchase_sku_settings_order: Vec<usize> = Vec::new();
346        let mut location_card_settings_index: HashMap<LocationCardSettingsTemplateId, usize> =
347            HashMap::new();
348        let mut location_card_settings_order: Vec<usize> = Vec::new();
349        let mut mega_evo_level_settings_index: HashMap<MegaEvoLevelSettingsTemplateId, usize> =
350            HashMap::new();
351        let mut mega_evo_level_settings_order: Vec<usize> = Vec::new();
352        let mut move_sequence_settings_index: HashMap<MoveSequenceSettingsTemplateId, usize> =
353            HashMap::new();
354        let mut move_sequence_settings_order: Vec<usize> = Vec::new();
355        let mut move_settings_index: HashMap<MoveSettingsTemplateId, usize> = HashMap::new();
356        let mut move_settings_order: Vec<usize> = Vec::new();
357        let mut non_combat_move_settings_index: HashMap<NonCombatMoveSettingsTemplateId, usize> =
358            HashMap::new();
359        let mut non_combat_move_settings_order: Vec<usize> = Vec::new();
360        let mut party_play_general_settings_index: HashMap<
361            PartyPlayGeneralSettingsTemplateId,
362            usize,
363        > = HashMap::new();
364        let mut party_play_general_settings_order: Vec<usize> = Vec::new();
365        let mut photo_sets_settings_proto_index: HashMap<PhotoSetsSettingsProtoTemplateId, usize> =
366            HashMap::new();
367        let mut photo_sets_settings_proto_order: Vec<usize> = Vec::new();
368        let mut pokemon_extended_settings_index: HashMap<PokemonExtendedSettingsTemplateId, usize> =
369            HashMap::new();
370        let mut pokemon_extended_settings_order: Vec<usize> = Vec::new();
371        let mut pokemon_family_index: HashMap<PokemonFamilyTemplateId, usize> = HashMap::new();
372        let mut pokemon_family_order: Vec<usize> = Vec::new();
373        let mut pokemon_home_energy_costs_index: HashMap<PokemonHomeEnergyCostsTemplateId, usize> =
374            HashMap::new();
375        let mut pokemon_home_energy_costs_order: Vec<usize> = Vec::new();
376        let mut pokemon_home_form_reversions_index: HashMap<
377            PokemonHomeFormReversionsTemplateId,
378            usize,
379        > = HashMap::new();
380        let mut pokemon_home_form_reversions_order: Vec<usize> = Vec::new();
381        let mut pokemon_scale_settings_index: HashMap<PokemonScaleSettingsTemplateId, usize> =
382            HashMap::new();
383        let mut pokemon_scale_settings_order: Vec<usize> = Vec::new();
384        let mut pokemon_settings_index: HashMap<PokemonSettingsTemplateId, usize> = HashMap::new();
385        let mut pokemon_settings_order: Vec<usize> = Vec::new();
386        let mut pokemon_upgrades_index: HashMap<PokemonUpgradesTemplateId, usize> = HashMap::new();
387        let mut pokemon_upgrades_order: Vec<usize> = Vec::new();
388        let mut pokestop_invasion_availability_settings_index: HashMap<
389            PokestopInvasionAvailabilitySettingsTemplateId,
390            usize,
391        > = HashMap::new();
392        let mut pokestop_invasion_availability_settings_order: Vec<usize> = Vec::new();
393        let mut quest_settings_index: HashMap<QuestSettingsTemplateId, usize> = HashMap::new();
394        let mut quest_settings_order: Vec<usize> = Vec::new();
395        let mut recommended_search_settings_index: HashMap<
396            RecommendedSearchSettingsTemplateId,
397            usize,
398        > = HashMap::new();
399        let mut recommended_search_settings_order: Vec<usize> = Vec::new();
400        let mut roll_back_index: HashMap<RollBackTemplateId, usize> = HashMap::new();
401        let mut roll_back_order: Vec<usize> = Vec::new();
402        let mut settings_override_rule_index: HashMap<SettingsOverrideRuleTemplateId, usize> =
403            HashMap::new();
404        let mut settings_override_rule_order: Vec<usize> = Vec::new();
405        let mut sticker_metadata_index: HashMap<StickerMetadataTemplateId, usize> = HashMap::new();
406        let mut sticker_metadata_order: Vec<usize> = Vec::new();
407        let mut tappable_settings_index: HashMap<TappableSettingsTemplateId, usize> =
408            HashMap::new();
409        let mut tappable_settings_order: Vec<usize> = Vec::new();
410        let mut temporary_evolution_settings_index: HashMap<
411            TemporaryEvolutionSettingsTemplateId,
412            usize,
413        > = HashMap::new();
414        let mut temporary_evolution_settings_order: Vec<usize> = Vec::new();
415        let mut type_effective_index: HashMap<TypeEffectiveTemplateId, usize> = HashMap::new();
416        let mut type_effective_order: Vec<usize> = Vec::new();
417        let mut vs_seeker_loot_index: HashMap<VsSeekerLootTemplateId, usize> = HashMap::new();
418        let mut vs_seeker_loot_order: Vec<usize> = Vec::new();
419        let mut vs_seeker_pokemon_rewards_index: HashMap<VsSeekerPokemonRewardsTemplateId, usize> =
420            HashMap::new();
421        let mut vs_seeker_pokemon_rewards_order: Vec<usize> = Vec::new();
422        let mut weather_affinities_index: HashMap<WeatherAffinitiesTemplateId, usize> =
423            HashMap::new();
424        let mut weather_affinities_order: Vec<usize> = Vec::new();
425
426        for (idx, entry) in entries.iter().enumerate() {
427            match entry {
428                MasterfileEntry::AvatarCustomization(_) => {
429                    if let Ok(typed) = entry.template_id().parse::<AvatarCustomizationTemplateId>()
430                    {
431                        avatar_customization_index.insert(typed, idx);
432                        avatar_customization_order.push(idx);
433                    }
434                }
435                MasterfileEntry::AvatarGroupOrderSettings(_) => {
436                    if let Ok(typed) = entry
437                        .template_id()
438                        .parse::<AvatarGroupOrderSettingsTemplateId>()
439                    {
440                        avatar_group_order_settings_index.insert(typed, idx);
441                        avatar_group_order_settings_order.push(idx);
442                    }
443                }
444                MasterfileEntry::AvatarItemDisplay(_) => {
445                    if let Ok(typed) = entry.template_id().parse::<AvatarItemDisplayTemplateId>() {
446                        avatar_item_display_index.insert(typed, idx);
447                        avatar_item_display_order.push(idx);
448                    }
449                }
450                MasterfileEntry::BadgeSettings(_) => {
451                    if let Ok(typed) = entry.template_id().parse::<BadgeSettingsTemplateId>() {
452                        badge_settings_index.insert(typed, idx);
453                        badge_settings_order.push(idx);
454                    }
455                }
456                MasterfileEntry::BreadMoveLevelSettings(_) => {
457                    if let Ok(typed) = entry
458                        .template_id()
459                        .parse::<BreadMoveLevelSettingsTemplateId>()
460                    {
461                        bread_move_level_settings_index.insert(typed, idx);
462                        bread_move_level_settings_order.push(idx);
463                    }
464                }
465                MasterfileEntry::BuddyActivityCategorySettings(_) => {
466                    if let Ok(typed) = entry
467                        .template_id()
468                        .parse::<BuddyActivityCategorySettingsTemplateId>()
469                    {
470                        buddy_activity_category_settings_index.insert(typed, idx);
471                        buddy_activity_category_settings_order.push(idx);
472                    }
473                }
474                MasterfileEntry::BuddyEmotionLevelSettings(_) => {
475                    if let Ok(typed) = entry
476                        .template_id()
477                        .parse::<BuddyEmotionLevelSettingsTemplateId>()
478                    {
479                        buddy_emotion_level_settings_index.insert(typed, idx);
480                        buddy_emotion_level_settings_order.push(idx);
481                    }
482                }
483                MasterfileEntry::BuddyLevelSettings(_) => {
484                    if let Ok(typed) = entry.template_id().parse::<BuddyLevelSettingsTemplateId>() {
485                        buddy_level_settings_index.insert(typed, idx);
486                        buddy_level_settings_order.push(idx);
487                    }
488                }
489                MasterfileEntry::ClientQuestTemplate(_) => {
490                    if let Ok(typed) = entry.template_id().parse::<ClientQuestTemplateTemplateId>()
491                    {
492                        client_quest_template_index.insert(typed, idx);
493                        client_quest_template_order.push(idx);
494                    }
495                }
496                MasterfileEntry::CodeGateProto(_) => {
497                    if let Ok(typed) = entry.template_id().parse::<CodeGateProtoTemplateId>() {
498                        code_gate_proto_index.insert(typed, idx);
499                        code_gate_proto_order.push(idx);
500                    }
501                }
502                MasterfileEntry::CombatLeague(_) => {
503                    if let Ok(typed) = entry.template_id().parse::<CombatLeagueTemplateId>() {
504                        combat_league_index.insert(typed, idx);
505                        combat_league_order.push(idx);
506                    }
507                }
508                MasterfileEntry::CombatMove(_) => {
509                    if let Ok(typed) = entry.template_id().parse::<CombatMoveTemplateId>() {
510                        combat_move_index.insert(typed, idx);
511                        combat_move_order.push(idx);
512                    }
513                }
514                MasterfileEntry::CombatNpcPersonality(_) => {
515                    if let Ok(typed) = entry
516                        .template_id()
517                        .parse::<CombatNpcPersonalityTemplateId>()
518                    {
519                        combat_npc_personality_index.insert(typed, idx);
520                        combat_npc_personality_order.push(idx);
521                    }
522                }
523                MasterfileEntry::CombatNpcTrainer(_) => {
524                    if let Ok(typed) = entry.template_id().parse::<CombatNpcTrainerTemplateId>() {
525                        combat_npc_trainer_index.insert(typed, idx);
526                        combat_npc_trainer_order.push(idx);
527                    }
528                }
529                MasterfileEntry::CombatRankingProtoSettings(_) => {
530                    if let Ok(typed) = entry
531                        .template_id()
532                        .parse::<CombatRankingProtoSettingsTemplateId>()
533                    {
534                        combat_ranking_proto_settings_index.insert(typed, idx);
535                        combat_ranking_proto_settings_order.push(idx);
536                    }
537                }
538                MasterfileEntry::CombatType(_) => {
539                    if let Ok(typed) = entry.template_id().parse::<CombatTypeTemplateId>() {
540                        combat_type_index.insert(typed, idx);
541                        combat_type_order.push(idx);
542                    }
543                }
544                MasterfileEntry::EventPassSettings(_) => {
545                    if let Ok(typed) = entry.template_id().parse::<EventPassSettingsTemplateId>() {
546                        event_pass_settings_index.insert(typed, idx);
547                        event_pass_settings_order.push(idx);
548                    }
549                }
550                MasterfileEntry::EventPassTierSettings(_) => {
551                    if let Ok(typed) = entry
552                        .template_id()
553                        .parse::<EventPassTierSettingsTemplateId>()
554                    {
555                        event_pass_tier_settings_index.insert(typed, idx);
556                        event_pass_tier_settings_order.push(idx);
557                    }
558                }
559                MasterfileEntry::EvolutionChainDisplaySettings(_) => {
560                    if let Ok(typed) = entry
561                        .template_id()
562                        .parse::<EvolutionChainDisplaySettingsTemplateId>()
563                    {
564                        evolution_chain_display_settings_index.insert(typed, idx);
565                        evolution_chain_display_settings_order.push(idx);
566                    }
567                }
568                MasterfileEntry::EvolutionQuestTemplate(_) => {
569                    if let Ok(typed) = entry
570                        .template_id()
571                        .parse::<EvolutionQuestTemplateTemplateId>()
572                    {
573                        evolution_quest_template_index.insert(typed, idx);
574                        evolution_quest_template_order.push(idx);
575                    }
576                }
577                MasterfileEntry::FeatureGate(_) => {
578                    if let Ok(typed) = entry.template_id().parse::<FeatureGateTemplateId>() {
579                        feature_gate_index.insert(typed, idx);
580                        feature_gate_order.push(idx);
581                    }
582                }
583                MasterfileEntry::FormSettings(_) => {
584                    if let Ok(typed) = entry.template_id().parse::<FormSettingsTemplateId>() {
585                        form_settings_index.insert(typed, idx);
586                        form_settings_order.push(idx);
587                    }
588                }
589                MasterfileEntry::FortPowerUpLevelSettings(_) => {
590                    if let Ok(typed) = entry
591                        .template_id()
592                        .parse::<FortPowerUpLevelSettingsTemplateId>()
593                    {
594                        fort_power_up_level_settings_index.insert(typed, idx);
595                        fort_power_up_level_settings_order.push(idx);
596                    }
597                }
598                MasterfileEntry::FriendshipMilestoneSettings(_) => {
599                    if let Ok(typed) = entry
600                        .template_id()
601                        .parse::<FriendshipMilestoneSettingsTemplateId>()
602                    {
603                        friendship_milestone_settings_index.insert(typed, idx);
604                        friendship_milestone_settings_order.push(idx);
605                    }
606                }
607                MasterfileEntry::GenderSettings(_) => {
608                    if let Ok(typed) = entry.template_id().parse::<GenderSettingsTemplateId>() {
609                        gender_settings_index.insert(typed, idx);
610                        gender_settings_order.push(idx);
611                    }
612                }
613                MasterfileEntry::IapCategoryDisplay(_) => {
614                    if let Ok(typed) = entry.template_id().parse::<IapCategoryDisplayTemplateId>() {
615                        iap_category_display_index.insert(typed, idx);
616                        iap_category_display_order.push(idx);
617                    }
618                }
619                MasterfileEntry::IapItemDisplay(_) => {
620                    if let Ok(typed) = entry.template_id().parse::<IapItemDisplayTemplateId>() {
621                        iap_item_display_index.insert(typed, idx);
622                        iap_item_display_order.push(idx);
623                    }
624                }
625                MasterfileEntry::InvasionNpcDisplaySettings(_) => {
626                    if let Ok(typed) = entry
627                        .template_id()
628                        .parse::<InvasionNpcDisplaySettingsTemplateId>()
629                    {
630                        invasion_npc_display_settings_index.insert(typed, idx);
631                        invasion_npc_display_settings_order.push(idx);
632                    }
633                }
634                MasterfileEntry::ItemExpirationSettings(_) => {
635                    if let Ok(typed) = entry
636                        .template_id()
637                        .parse::<ItemExpirationSettingsTemplateId>()
638                    {
639                        item_expiration_settings_index.insert(typed, idx);
640                        item_expiration_settings_order.push(idx);
641                    }
642                }
643                MasterfileEntry::ItemSettings(_) => {
644                    if let Ok(typed) = entry.template_id().parse::<ItemSettingsTemplateId>() {
645                        item_settings_index.insert(typed, idx);
646                        item_settings_order.push(idx);
647                    }
648                }
649                MasterfileEntry::LanguageSettings(_) => {
650                    if let Ok(typed) = entry.template_id().parse::<LanguageSettingsTemplateId>() {
651                        language_settings_index.insert(typed, idx);
652                        language_settings_order.push(idx);
653                    }
654                }
655                MasterfileEntry::LevelUpRewards(_) => {
656                    if let Ok(typed) = entry.template_id().parse::<LevelUpRewardsTemplateId>() {
657                        level_up_rewards_index.insert(typed, idx);
658                        level_up_rewards_order.push(idx);
659                    }
660                }
661                MasterfileEntry::LimitedPurchaseSkuSettings(_) => {
662                    if let Ok(typed) = entry
663                        .template_id()
664                        .parse::<LimitedPurchaseSkuSettingsTemplateId>()
665                    {
666                        limited_purchase_sku_settings_index.insert(typed, idx);
667                        limited_purchase_sku_settings_order.push(idx);
668                    }
669                }
670                MasterfileEntry::LocationCardSettings(_) => {
671                    if let Ok(typed) = entry
672                        .template_id()
673                        .parse::<LocationCardSettingsTemplateId>()
674                    {
675                        location_card_settings_index.insert(typed, idx);
676                        location_card_settings_order.push(idx);
677                    }
678                }
679                MasterfileEntry::MegaEvoLevelSettings(_) => {
680                    if let Ok(typed) = entry
681                        .template_id()
682                        .parse::<MegaEvoLevelSettingsTemplateId>()
683                    {
684                        mega_evo_level_settings_index.insert(typed, idx);
685                        mega_evo_level_settings_order.push(idx);
686                    }
687                }
688                MasterfileEntry::MoveSequenceSettings(_) => {
689                    if let Ok(typed) = entry
690                        .template_id()
691                        .parse::<MoveSequenceSettingsTemplateId>()
692                    {
693                        move_sequence_settings_index.insert(typed, idx);
694                        move_sequence_settings_order.push(idx);
695                    }
696                }
697                MasterfileEntry::MoveSettings(_) => {
698                    if let Ok(typed) = entry.template_id().parse::<MoveSettingsTemplateId>() {
699                        move_settings_index.insert(typed, idx);
700                        move_settings_order.push(idx);
701                    }
702                }
703                MasterfileEntry::NonCombatMoveSettings(_) => {
704                    if let Ok(typed) = entry
705                        .template_id()
706                        .parse::<NonCombatMoveSettingsTemplateId>()
707                    {
708                        non_combat_move_settings_index.insert(typed, idx);
709                        non_combat_move_settings_order.push(idx);
710                    }
711                }
712                MasterfileEntry::PartyPlayGeneralSettings(_) => {
713                    if let Ok(typed) = entry
714                        .template_id()
715                        .parse::<PartyPlayGeneralSettingsTemplateId>()
716                    {
717                        party_play_general_settings_index.insert(typed, idx);
718                        party_play_general_settings_order.push(idx);
719                    }
720                }
721                MasterfileEntry::PhotoSetsSettingsProto(_) => {
722                    if let Ok(typed) = entry
723                        .template_id()
724                        .parse::<PhotoSetsSettingsProtoTemplateId>()
725                    {
726                        photo_sets_settings_proto_index.insert(typed, idx);
727                        photo_sets_settings_proto_order.push(idx);
728                    }
729                }
730                MasterfileEntry::PokemonExtendedSettings(_) => {
731                    if let Ok(typed) = entry
732                        .template_id()
733                        .parse::<PokemonExtendedSettingsTemplateId>()
734                    {
735                        pokemon_extended_settings_index.insert(typed, idx);
736                        pokemon_extended_settings_order.push(idx);
737                    }
738                }
739                MasterfileEntry::PokemonFamily(_) => {
740                    if let Ok(typed) = entry.template_id().parse::<PokemonFamilyTemplateId>() {
741                        pokemon_family_index.insert(typed, idx);
742                        pokemon_family_order.push(idx);
743                    }
744                }
745                MasterfileEntry::PokemonHomeEnergyCosts(_) => {
746                    if let Ok(typed) = entry
747                        .template_id()
748                        .parse::<PokemonHomeEnergyCostsTemplateId>()
749                    {
750                        pokemon_home_energy_costs_index.insert(typed, idx);
751                        pokemon_home_energy_costs_order.push(idx);
752                    }
753                }
754                MasterfileEntry::PokemonHomeFormReversions(_) => {
755                    if let Ok(typed) = entry
756                        .template_id()
757                        .parse::<PokemonHomeFormReversionsTemplateId>()
758                    {
759                        pokemon_home_form_reversions_index.insert(typed, idx);
760                        pokemon_home_form_reversions_order.push(idx);
761                    }
762                }
763                MasterfileEntry::PokemonScaleSettings(_) => {
764                    if let Ok(typed) = entry
765                        .template_id()
766                        .parse::<PokemonScaleSettingsTemplateId>()
767                    {
768                        pokemon_scale_settings_index.insert(typed, idx);
769                        pokemon_scale_settings_order.push(idx);
770                    }
771                }
772                MasterfileEntry::PokemonSettings(_) => {
773                    if let Ok(typed) = entry.template_id().parse::<PokemonSettingsTemplateId>() {
774                        pokemon_settings_index.insert(typed, idx);
775                        pokemon_settings_order.push(idx);
776                    }
777                }
778                MasterfileEntry::PokemonUpgrades(_) => {
779                    if let Ok(typed) = entry.template_id().parse::<PokemonUpgradesTemplateId>() {
780                        pokemon_upgrades_index.insert(typed, idx);
781                        pokemon_upgrades_order.push(idx);
782                    }
783                }
784                MasterfileEntry::PokestopInvasionAvailabilitySettings(_) => {
785                    if let Ok(typed) = entry
786                        .template_id()
787                        .parse::<PokestopInvasionAvailabilitySettingsTemplateId>()
788                    {
789                        pokestop_invasion_availability_settings_index.insert(typed, idx);
790                        pokestop_invasion_availability_settings_order.push(idx);
791                    }
792                }
793                MasterfileEntry::QuestSettings(_) => {
794                    if let Ok(typed) = entry.template_id().parse::<QuestSettingsTemplateId>() {
795                        quest_settings_index.insert(typed, idx);
796                        quest_settings_order.push(idx);
797                    }
798                }
799                MasterfileEntry::RecommendedSearchSettings(_) => {
800                    if let Ok(typed) = entry
801                        .template_id()
802                        .parse::<RecommendedSearchSettingsTemplateId>()
803                    {
804                        recommended_search_settings_index.insert(typed, idx);
805                        recommended_search_settings_order.push(idx);
806                    }
807                }
808                MasterfileEntry::RollBack(_) => {
809                    if let Ok(typed) = entry.template_id().parse::<RollBackTemplateId>() {
810                        roll_back_index.insert(typed, idx);
811                        roll_back_order.push(idx);
812                    }
813                }
814                MasterfileEntry::SettingsOverrideRule(_) => {
815                    if let Ok(typed) = entry
816                        .template_id()
817                        .parse::<SettingsOverrideRuleTemplateId>()
818                    {
819                        settings_override_rule_index.insert(typed, idx);
820                        settings_override_rule_order.push(idx);
821                    }
822                }
823                MasterfileEntry::StickerMetadata(_) => {
824                    if let Ok(typed) = entry.template_id().parse::<StickerMetadataTemplateId>() {
825                        sticker_metadata_index.insert(typed, idx);
826                        sticker_metadata_order.push(idx);
827                    }
828                }
829                MasterfileEntry::TappableSettings(_) => {
830                    if let Ok(typed) = entry.template_id().parse::<TappableSettingsTemplateId>() {
831                        tappable_settings_index.insert(typed, idx);
832                        tappable_settings_order.push(idx);
833                    }
834                }
835                MasterfileEntry::TemporaryEvolutionSettings(_) => {
836                    if let Ok(typed) = entry
837                        .template_id()
838                        .parse::<TemporaryEvolutionSettingsTemplateId>()
839                    {
840                        temporary_evolution_settings_index.insert(typed, idx);
841                        temporary_evolution_settings_order.push(idx);
842                    }
843                }
844                MasterfileEntry::TypeEffective(_) => {
845                    if let Ok(typed) = entry.template_id().parse::<TypeEffectiveTemplateId>() {
846                        type_effective_index.insert(typed, idx);
847                        type_effective_order.push(idx);
848                    }
849                }
850                MasterfileEntry::VsSeekerLoot(_) => {
851                    if let Ok(typed) = entry.template_id().parse::<VsSeekerLootTemplateId>() {
852                        vs_seeker_loot_index.insert(typed, idx);
853                        vs_seeker_loot_order.push(idx);
854                    }
855                }
856                MasterfileEntry::VsSeekerPokemonRewards(_) => {
857                    if let Ok(typed) = entry
858                        .template_id()
859                        .parse::<VsSeekerPokemonRewardsTemplateId>()
860                    {
861                        vs_seeker_pokemon_rewards_index.insert(typed, idx);
862                        vs_seeker_pokemon_rewards_order.push(idx);
863                    }
864                }
865                MasterfileEntry::WeatherAffinities(_) => {
866                    if let Ok(typed) = entry.template_id().parse::<WeatherAffinitiesTemplateId>() {
867                        weather_affinities_index.insert(typed, idx);
868                        weather_affinities_order.push(idx);
869                    }
870                }
871                _ => {}
872            }
873        }
874
875        Self {
876            avatar_customization_index,
877            avatar_customization_order,
878            avatar_group_order_settings_index,
879            avatar_group_order_settings_order,
880            avatar_item_display_index,
881            avatar_item_display_order,
882            badge_settings_index,
883            badge_settings_order,
884            bread_move_level_settings_index,
885            bread_move_level_settings_order,
886            buddy_activity_category_settings_index,
887            buddy_activity_category_settings_order,
888            buddy_emotion_level_settings_index,
889            buddy_emotion_level_settings_order,
890            buddy_level_settings_index,
891            buddy_level_settings_order,
892            client_quest_template_index,
893            client_quest_template_order,
894            code_gate_proto_index,
895            code_gate_proto_order,
896            combat_league_index,
897            combat_league_order,
898            combat_move_index,
899            combat_move_order,
900            combat_npc_personality_index,
901            combat_npc_personality_order,
902            combat_npc_trainer_index,
903            combat_npc_trainer_order,
904            combat_ranking_proto_settings_index,
905            combat_ranking_proto_settings_order,
906            combat_type_index,
907            combat_type_order,
908            event_pass_settings_index,
909            event_pass_settings_order,
910            event_pass_tier_settings_index,
911            event_pass_tier_settings_order,
912            evolution_chain_display_settings_index,
913            evolution_chain_display_settings_order,
914            evolution_quest_template_index,
915            evolution_quest_template_order,
916            feature_gate_index,
917            feature_gate_order,
918            form_settings_index,
919            form_settings_order,
920            fort_power_up_level_settings_index,
921            fort_power_up_level_settings_order,
922            friendship_milestone_settings_index,
923            friendship_milestone_settings_order,
924            gender_settings_index,
925            gender_settings_order,
926            iap_category_display_index,
927            iap_category_display_order,
928            iap_item_display_index,
929            iap_item_display_order,
930            invasion_npc_display_settings_index,
931            invasion_npc_display_settings_order,
932            item_expiration_settings_index,
933            item_expiration_settings_order,
934            item_settings_index,
935            item_settings_order,
936            language_settings_index,
937            language_settings_order,
938            level_up_rewards_index,
939            level_up_rewards_order,
940            limited_purchase_sku_settings_index,
941            limited_purchase_sku_settings_order,
942            location_card_settings_index,
943            location_card_settings_order,
944            mega_evo_level_settings_index,
945            mega_evo_level_settings_order,
946            move_sequence_settings_index,
947            move_sequence_settings_order,
948            move_settings_index,
949            move_settings_order,
950            non_combat_move_settings_index,
951            non_combat_move_settings_order,
952            party_play_general_settings_index,
953            party_play_general_settings_order,
954            photo_sets_settings_proto_index,
955            photo_sets_settings_proto_order,
956            pokemon_extended_settings_index,
957            pokemon_extended_settings_order,
958            pokemon_family_index,
959            pokemon_family_order,
960            pokemon_home_energy_costs_index,
961            pokemon_home_energy_costs_order,
962            pokemon_home_form_reversions_index,
963            pokemon_home_form_reversions_order,
964            pokemon_scale_settings_index,
965            pokemon_scale_settings_order,
966            pokemon_settings_index,
967            pokemon_settings_order,
968            pokemon_upgrades_index,
969            pokemon_upgrades_order,
970            pokestop_invasion_availability_settings_index,
971            pokestop_invasion_availability_settings_order,
972            quest_settings_index,
973            quest_settings_order,
974            recommended_search_settings_index,
975            recommended_search_settings_order,
976            roll_back_index,
977            roll_back_order,
978            settings_override_rule_index,
979            settings_override_rule_order,
980            sticker_metadata_index,
981            sticker_metadata_order,
982            tappable_settings_index,
983            tappable_settings_order,
984            temporary_evolution_settings_index,
985            temporary_evolution_settings_order,
986            type_effective_index,
987            type_effective_order,
988            vs_seeker_loot_index,
989            vs_seeker_loot_order,
990            vs_seeker_pokemon_rewards_index,
991            vs_seeker_pokemon_rewards_order,
992            weather_affinities_index,
993            weather_affinities_order,
994        }
995    }
996}
997
998impl Masterfile {
999    pub fn avatar_customization(&self) -> accessor::AvatarCustomizationAccessor<'_> {
1000        accessor::AvatarCustomizationAccessor {
1001            entries: &self.entries,
1002            index: &self.groups.avatar_customization_index,
1003            order: &self.groups.avatar_customization_order,
1004        }
1005    }
1006
1007    pub fn avatar_group_order_settings(&self) -> accessor::AvatarGroupOrderSettingsAccessor<'_> {
1008        accessor::AvatarGroupOrderSettingsAccessor {
1009            entries: &self.entries,
1010            index: &self.groups.avatar_group_order_settings_index,
1011            order: &self.groups.avatar_group_order_settings_order,
1012        }
1013    }
1014
1015    pub fn avatar_item_display(&self) -> accessor::AvatarItemDisplayAccessor<'_> {
1016        accessor::AvatarItemDisplayAccessor {
1017            entries: &self.entries,
1018            index: &self.groups.avatar_item_display_index,
1019            order: &self.groups.avatar_item_display_order,
1020        }
1021    }
1022
1023    pub fn badge_settings(&self) -> accessor::BadgeSettingsAccessor<'_> {
1024        accessor::BadgeSettingsAccessor {
1025            entries: &self.entries,
1026            index: &self.groups.badge_settings_index,
1027            order: &self.groups.badge_settings_order,
1028        }
1029    }
1030
1031    pub fn bread_move_level_settings(&self) -> accessor::BreadMoveLevelSettingsAccessor<'_> {
1032        accessor::BreadMoveLevelSettingsAccessor {
1033            entries: &self.entries,
1034            index: &self.groups.bread_move_level_settings_index,
1035            order: &self.groups.bread_move_level_settings_order,
1036        }
1037    }
1038
1039    pub fn buddy_activity_category_settings(
1040        &self,
1041    ) -> accessor::BuddyActivityCategorySettingsAccessor<'_> {
1042        accessor::BuddyActivityCategorySettingsAccessor {
1043            entries: &self.entries,
1044            index: &self.groups.buddy_activity_category_settings_index,
1045            order: &self.groups.buddy_activity_category_settings_order,
1046        }
1047    }
1048
1049    pub fn buddy_emotion_level_settings(&self) -> accessor::BuddyEmotionLevelSettingsAccessor<'_> {
1050        accessor::BuddyEmotionLevelSettingsAccessor {
1051            entries: &self.entries,
1052            index: &self.groups.buddy_emotion_level_settings_index,
1053            order: &self.groups.buddy_emotion_level_settings_order,
1054        }
1055    }
1056
1057    pub fn buddy_level_settings(&self) -> accessor::BuddyLevelSettingsAccessor<'_> {
1058        accessor::BuddyLevelSettingsAccessor {
1059            entries: &self.entries,
1060            index: &self.groups.buddy_level_settings_index,
1061            order: &self.groups.buddy_level_settings_order,
1062        }
1063    }
1064
1065    pub fn client_quest_template(&self) -> accessor::ClientQuestTemplateAccessor<'_> {
1066        accessor::ClientQuestTemplateAccessor {
1067            entries: &self.entries,
1068            index: &self.groups.client_quest_template_index,
1069            order: &self.groups.client_quest_template_order,
1070        }
1071    }
1072
1073    pub fn code_gate_proto(&self) -> accessor::CodeGateProtoAccessor<'_> {
1074        accessor::CodeGateProtoAccessor {
1075            entries: &self.entries,
1076            index: &self.groups.code_gate_proto_index,
1077            order: &self.groups.code_gate_proto_order,
1078        }
1079    }
1080
1081    pub fn combat_league(&self) -> accessor::CombatLeagueAccessor<'_> {
1082        accessor::CombatLeagueAccessor {
1083            entries: &self.entries,
1084            index: &self.groups.combat_league_index,
1085            order: &self.groups.combat_league_order,
1086        }
1087    }
1088
1089    pub fn combat_move(&self) -> accessor::CombatMoveAccessor<'_> {
1090        accessor::CombatMoveAccessor {
1091            entries: &self.entries,
1092            index: &self.groups.combat_move_index,
1093            order: &self.groups.combat_move_order,
1094        }
1095    }
1096
1097    pub fn combat_npc_personality(&self) -> accessor::CombatNpcPersonalityAccessor<'_> {
1098        accessor::CombatNpcPersonalityAccessor {
1099            entries: &self.entries,
1100            index: &self.groups.combat_npc_personality_index,
1101            order: &self.groups.combat_npc_personality_order,
1102        }
1103    }
1104
1105    pub fn combat_npc_trainer(&self) -> accessor::CombatNpcTrainerAccessor<'_> {
1106        accessor::CombatNpcTrainerAccessor {
1107            entries: &self.entries,
1108            index: &self.groups.combat_npc_trainer_index,
1109            order: &self.groups.combat_npc_trainer_order,
1110        }
1111    }
1112
1113    pub fn combat_ranking_proto_settings(
1114        &self,
1115    ) -> accessor::CombatRankingProtoSettingsAccessor<'_> {
1116        accessor::CombatRankingProtoSettingsAccessor {
1117            entries: &self.entries,
1118            index: &self.groups.combat_ranking_proto_settings_index,
1119            order: &self.groups.combat_ranking_proto_settings_order,
1120        }
1121    }
1122
1123    pub fn combat_type(&self) -> accessor::CombatTypeAccessor<'_> {
1124        accessor::CombatTypeAccessor {
1125            entries: &self.entries,
1126            index: &self.groups.combat_type_index,
1127            order: &self.groups.combat_type_order,
1128        }
1129    }
1130
1131    pub fn event_pass_settings(&self) -> accessor::EventPassSettingsAccessor<'_> {
1132        accessor::EventPassSettingsAccessor {
1133            entries: &self.entries,
1134            index: &self.groups.event_pass_settings_index,
1135            order: &self.groups.event_pass_settings_order,
1136        }
1137    }
1138
1139    pub fn event_pass_tier_settings(&self) -> accessor::EventPassTierSettingsAccessor<'_> {
1140        accessor::EventPassTierSettingsAccessor {
1141            entries: &self.entries,
1142            index: &self.groups.event_pass_tier_settings_index,
1143            order: &self.groups.event_pass_tier_settings_order,
1144        }
1145    }
1146
1147    pub fn evolution_chain_display_settings(
1148        &self,
1149    ) -> accessor::EvolutionChainDisplaySettingsAccessor<'_> {
1150        accessor::EvolutionChainDisplaySettingsAccessor {
1151            entries: &self.entries,
1152            index: &self.groups.evolution_chain_display_settings_index,
1153            order: &self.groups.evolution_chain_display_settings_order,
1154        }
1155    }
1156
1157    pub fn evolution_quest_template(&self) -> accessor::EvolutionQuestTemplateAccessor<'_> {
1158        accessor::EvolutionQuestTemplateAccessor {
1159            entries: &self.entries,
1160            index: &self.groups.evolution_quest_template_index,
1161            order: &self.groups.evolution_quest_template_order,
1162        }
1163    }
1164
1165    pub fn feature_gate(&self) -> accessor::FeatureGateAccessor<'_> {
1166        accessor::FeatureGateAccessor {
1167            entries: &self.entries,
1168            index: &self.groups.feature_gate_index,
1169            order: &self.groups.feature_gate_order,
1170        }
1171    }
1172
1173    pub fn form_settings(&self) -> accessor::FormSettingsAccessor<'_> {
1174        accessor::FormSettingsAccessor {
1175            entries: &self.entries,
1176            index: &self.groups.form_settings_index,
1177            order: &self.groups.form_settings_order,
1178        }
1179    }
1180
1181    pub fn fort_power_up_level_settings(&self) -> accessor::FortPowerUpLevelSettingsAccessor<'_> {
1182        accessor::FortPowerUpLevelSettingsAccessor {
1183            entries: &self.entries,
1184            index: &self.groups.fort_power_up_level_settings_index,
1185            order: &self.groups.fort_power_up_level_settings_order,
1186        }
1187    }
1188
1189    pub fn friendship_milestone_settings(
1190        &self,
1191    ) -> accessor::FriendshipMilestoneSettingsAccessor<'_> {
1192        accessor::FriendshipMilestoneSettingsAccessor {
1193            entries: &self.entries,
1194            index: &self.groups.friendship_milestone_settings_index,
1195            order: &self.groups.friendship_milestone_settings_order,
1196        }
1197    }
1198
1199    pub fn gender_settings(&self) -> accessor::GenderSettingsAccessor<'_> {
1200        accessor::GenderSettingsAccessor {
1201            entries: &self.entries,
1202            index: &self.groups.gender_settings_index,
1203            order: &self.groups.gender_settings_order,
1204        }
1205    }
1206
1207    pub fn iap_category_display(&self) -> accessor::IapCategoryDisplayAccessor<'_> {
1208        accessor::IapCategoryDisplayAccessor {
1209            entries: &self.entries,
1210            index: &self.groups.iap_category_display_index,
1211            order: &self.groups.iap_category_display_order,
1212        }
1213    }
1214
1215    pub fn iap_item_display(&self) -> accessor::IapItemDisplayAccessor<'_> {
1216        accessor::IapItemDisplayAccessor {
1217            entries: &self.entries,
1218            index: &self.groups.iap_item_display_index,
1219            order: &self.groups.iap_item_display_order,
1220        }
1221    }
1222
1223    pub fn invasion_npc_display_settings(
1224        &self,
1225    ) -> accessor::InvasionNpcDisplaySettingsAccessor<'_> {
1226        accessor::InvasionNpcDisplaySettingsAccessor {
1227            entries: &self.entries,
1228            index: &self.groups.invasion_npc_display_settings_index,
1229            order: &self.groups.invasion_npc_display_settings_order,
1230        }
1231    }
1232
1233    pub fn item_expiration_settings(&self) -> accessor::ItemExpirationSettingsAccessor<'_> {
1234        accessor::ItemExpirationSettingsAccessor {
1235            entries: &self.entries,
1236            index: &self.groups.item_expiration_settings_index,
1237            order: &self.groups.item_expiration_settings_order,
1238        }
1239    }
1240
1241    pub fn item_settings(&self) -> accessor::ItemSettingsAccessor<'_> {
1242        accessor::ItemSettingsAccessor {
1243            entries: &self.entries,
1244            index: &self.groups.item_settings_index,
1245            order: &self.groups.item_settings_order,
1246        }
1247    }
1248
1249    pub fn language_settings(&self) -> accessor::LanguageSettingsAccessor<'_> {
1250        accessor::LanguageSettingsAccessor {
1251            entries: &self.entries,
1252            index: &self.groups.language_settings_index,
1253            order: &self.groups.language_settings_order,
1254        }
1255    }
1256
1257    pub fn level_up_rewards(&self) -> accessor::LevelUpRewardsAccessor<'_> {
1258        accessor::LevelUpRewardsAccessor {
1259            entries: &self.entries,
1260            index: &self.groups.level_up_rewards_index,
1261            order: &self.groups.level_up_rewards_order,
1262        }
1263    }
1264
1265    pub fn limited_purchase_sku_settings(
1266        &self,
1267    ) -> accessor::LimitedPurchaseSkuSettingsAccessor<'_> {
1268        accessor::LimitedPurchaseSkuSettingsAccessor {
1269            entries: &self.entries,
1270            index: &self.groups.limited_purchase_sku_settings_index,
1271            order: &self.groups.limited_purchase_sku_settings_order,
1272        }
1273    }
1274
1275    pub fn location_card_settings(&self) -> accessor::LocationCardSettingsAccessor<'_> {
1276        accessor::LocationCardSettingsAccessor {
1277            entries: &self.entries,
1278            index: &self.groups.location_card_settings_index,
1279            order: &self.groups.location_card_settings_order,
1280        }
1281    }
1282
1283    pub fn mega_evo_level_settings(&self) -> accessor::MegaEvoLevelSettingsAccessor<'_> {
1284        accessor::MegaEvoLevelSettingsAccessor {
1285            entries: &self.entries,
1286            index: &self.groups.mega_evo_level_settings_index,
1287            order: &self.groups.mega_evo_level_settings_order,
1288        }
1289    }
1290
1291    pub fn move_sequence_settings(&self) -> accessor::MoveSequenceSettingsAccessor<'_> {
1292        accessor::MoveSequenceSettingsAccessor {
1293            entries: &self.entries,
1294            index: &self.groups.move_sequence_settings_index,
1295            order: &self.groups.move_sequence_settings_order,
1296        }
1297    }
1298
1299    pub fn move_settings(&self) -> accessor::MoveSettingsAccessor<'_> {
1300        accessor::MoveSettingsAccessor {
1301            entries: &self.entries,
1302            index: &self.groups.move_settings_index,
1303            order: &self.groups.move_settings_order,
1304        }
1305    }
1306
1307    pub fn non_combat_move_settings(&self) -> accessor::NonCombatMoveSettingsAccessor<'_> {
1308        accessor::NonCombatMoveSettingsAccessor {
1309            entries: &self.entries,
1310            index: &self.groups.non_combat_move_settings_index,
1311            order: &self.groups.non_combat_move_settings_order,
1312        }
1313    }
1314
1315    pub fn party_play_general_settings(&self) -> accessor::PartyPlayGeneralSettingsAccessor<'_> {
1316        accessor::PartyPlayGeneralSettingsAccessor {
1317            entries: &self.entries,
1318            index: &self.groups.party_play_general_settings_index,
1319            order: &self.groups.party_play_general_settings_order,
1320        }
1321    }
1322
1323    pub fn photo_sets_settings_proto(&self) -> accessor::PhotoSetsSettingsProtoAccessor<'_> {
1324        accessor::PhotoSetsSettingsProtoAccessor {
1325            entries: &self.entries,
1326            index: &self.groups.photo_sets_settings_proto_index,
1327            order: &self.groups.photo_sets_settings_proto_order,
1328        }
1329    }
1330
1331    pub fn pokemon_extended_settings(&self) -> accessor::PokemonExtendedSettingsAccessor<'_> {
1332        accessor::PokemonExtendedSettingsAccessor {
1333            entries: &self.entries,
1334            index: &self.groups.pokemon_extended_settings_index,
1335            order: &self.groups.pokemon_extended_settings_order,
1336        }
1337    }
1338
1339    pub fn pokemon_family(&self) -> accessor::PokemonFamilyAccessor<'_> {
1340        accessor::PokemonFamilyAccessor {
1341            entries: &self.entries,
1342            index: &self.groups.pokemon_family_index,
1343            order: &self.groups.pokemon_family_order,
1344        }
1345    }
1346
1347    pub fn pokemon_home_energy_costs(&self) -> accessor::PokemonHomeEnergyCostsAccessor<'_> {
1348        accessor::PokemonHomeEnergyCostsAccessor {
1349            entries: &self.entries,
1350            index: &self.groups.pokemon_home_energy_costs_index,
1351            order: &self.groups.pokemon_home_energy_costs_order,
1352        }
1353    }
1354
1355    pub fn pokemon_home_form_reversions(&self) -> accessor::PokemonHomeFormReversionsAccessor<'_> {
1356        accessor::PokemonHomeFormReversionsAccessor {
1357            entries: &self.entries,
1358            index: &self.groups.pokemon_home_form_reversions_index,
1359            order: &self.groups.pokemon_home_form_reversions_order,
1360        }
1361    }
1362
1363    pub fn pokemon_scale_settings(&self) -> accessor::PokemonScaleSettingsAccessor<'_> {
1364        accessor::PokemonScaleSettingsAccessor {
1365            entries: &self.entries,
1366            index: &self.groups.pokemon_scale_settings_index,
1367            order: &self.groups.pokemon_scale_settings_order,
1368        }
1369    }
1370
1371    pub fn pokemon_settings(&self) -> accessor::PokemonSettingsAccessor<'_> {
1372        accessor::PokemonSettingsAccessor {
1373            entries: &self.entries,
1374            index: &self.groups.pokemon_settings_index,
1375            order: &self.groups.pokemon_settings_order,
1376        }
1377    }
1378
1379    pub fn pokemon_upgrades(&self) -> accessor::PokemonUpgradesAccessor<'_> {
1380        accessor::PokemonUpgradesAccessor {
1381            entries: &self.entries,
1382            index: &self.groups.pokemon_upgrades_index,
1383            order: &self.groups.pokemon_upgrades_order,
1384        }
1385    }
1386
1387    pub fn pokestop_invasion_availability_settings(
1388        &self,
1389    ) -> accessor::PokestopInvasionAvailabilitySettingsAccessor<'_> {
1390        accessor::PokestopInvasionAvailabilitySettingsAccessor {
1391            entries: &self.entries,
1392            index: &self.groups.pokestop_invasion_availability_settings_index,
1393            order: &self.groups.pokestop_invasion_availability_settings_order,
1394        }
1395    }
1396
1397    pub fn quest_settings(&self) -> accessor::QuestSettingsAccessor<'_> {
1398        accessor::QuestSettingsAccessor {
1399            entries: &self.entries,
1400            index: &self.groups.quest_settings_index,
1401            order: &self.groups.quest_settings_order,
1402        }
1403    }
1404
1405    pub fn recommended_search_settings(&self) -> accessor::RecommendedSearchSettingsAccessor<'_> {
1406        accessor::RecommendedSearchSettingsAccessor {
1407            entries: &self.entries,
1408            index: &self.groups.recommended_search_settings_index,
1409            order: &self.groups.recommended_search_settings_order,
1410        }
1411    }
1412
1413    pub fn roll_back(&self) -> accessor::RollBackAccessor<'_> {
1414        accessor::RollBackAccessor {
1415            entries: &self.entries,
1416            index: &self.groups.roll_back_index,
1417            order: &self.groups.roll_back_order,
1418        }
1419    }
1420
1421    pub fn settings_override_rule(&self) -> accessor::SettingsOverrideRuleAccessor<'_> {
1422        accessor::SettingsOverrideRuleAccessor {
1423            entries: &self.entries,
1424            index: &self.groups.settings_override_rule_index,
1425            order: &self.groups.settings_override_rule_order,
1426        }
1427    }
1428
1429    pub fn sticker_metadata(&self) -> accessor::StickerMetadataAccessor<'_> {
1430        accessor::StickerMetadataAccessor {
1431            entries: &self.entries,
1432            index: &self.groups.sticker_metadata_index,
1433            order: &self.groups.sticker_metadata_order,
1434        }
1435    }
1436
1437    pub fn tappable_settings(&self) -> accessor::TappableSettingsAccessor<'_> {
1438        accessor::TappableSettingsAccessor {
1439            entries: &self.entries,
1440            index: &self.groups.tappable_settings_index,
1441            order: &self.groups.tappable_settings_order,
1442        }
1443    }
1444
1445    pub fn temporary_evolution_settings(&self) -> accessor::TemporaryEvolutionSettingsAccessor<'_> {
1446        accessor::TemporaryEvolutionSettingsAccessor {
1447            entries: &self.entries,
1448            index: &self.groups.temporary_evolution_settings_index,
1449            order: &self.groups.temporary_evolution_settings_order,
1450        }
1451    }
1452
1453    pub fn type_effective(&self) -> accessor::TypeEffectiveAccessor<'_> {
1454        accessor::TypeEffectiveAccessor {
1455            entries: &self.entries,
1456            index: &self.groups.type_effective_index,
1457            order: &self.groups.type_effective_order,
1458        }
1459    }
1460
1461    pub fn vs_seeker_loot(&self) -> accessor::VsSeekerLootAccessor<'_> {
1462        accessor::VsSeekerLootAccessor {
1463            entries: &self.entries,
1464            index: &self.groups.vs_seeker_loot_index,
1465            order: &self.groups.vs_seeker_loot_order,
1466        }
1467    }
1468
1469    pub fn vs_seeker_pokemon_rewards(&self) -> accessor::VsSeekerPokemonRewardsAccessor<'_> {
1470        accessor::VsSeekerPokemonRewardsAccessor {
1471            entries: &self.entries,
1472            index: &self.groups.vs_seeker_pokemon_rewards_index,
1473            order: &self.groups.vs_seeker_pokemon_rewards_order,
1474        }
1475    }
1476
1477    pub fn weather_affinities(&self) -> accessor::WeatherAffinitiesAccessor<'_> {
1478        accessor::WeatherAffinitiesAccessor {
1479            entries: &self.entries,
1480            index: &self.groups.weather_affinities_index,
1481            order: &self.groups.weather_affinities_order,
1482        }
1483    }
1484}
1485
1486#[cfg(feature = "blocking")]
1487impl blocking::Masterfile {
1488    pub fn avatar_customization(&self) -> accessor::AvatarCustomizationAccessor<'_> {
1489        accessor::AvatarCustomizationAccessor {
1490            entries: &self.entries,
1491            index: &self.groups.avatar_customization_index,
1492            order: &self.groups.avatar_customization_order,
1493        }
1494    }
1495
1496    pub fn avatar_group_order_settings(&self) -> accessor::AvatarGroupOrderSettingsAccessor<'_> {
1497        accessor::AvatarGroupOrderSettingsAccessor {
1498            entries: &self.entries,
1499            index: &self.groups.avatar_group_order_settings_index,
1500            order: &self.groups.avatar_group_order_settings_order,
1501        }
1502    }
1503
1504    pub fn avatar_item_display(&self) -> accessor::AvatarItemDisplayAccessor<'_> {
1505        accessor::AvatarItemDisplayAccessor {
1506            entries: &self.entries,
1507            index: &self.groups.avatar_item_display_index,
1508            order: &self.groups.avatar_item_display_order,
1509        }
1510    }
1511
1512    pub fn badge_settings(&self) -> accessor::BadgeSettingsAccessor<'_> {
1513        accessor::BadgeSettingsAccessor {
1514            entries: &self.entries,
1515            index: &self.groups.badge_settings_index,
1516            order: &self.groups.badge_settings_order,
1517        }
1518    }
1519
1520    pub fn bread_move_level_settings(&self) -> accessor::BreadMoveLevelSettingsAccessor<'_> {
1521        accessor::BreadMoveLevelSettingsAccessor {
1522            entries: &self.entries,
1523            index: &self.groups.bread_move_level_settings_index,
1524            order: &self.groups.bread_move_level_settings_order,
1525        }
1526    }
1527
1528    pub fn buddy_activity_category_settings(
1529        &self,
1530    ) -> accessor::BuddyActivityCategorySettingsAccessor<'_> {
1531        accessor::BuddyActivityCategorySettingsAccessor {
1532            entries: &self.entries,
1533            index: &self.groups.buddy_activity_category_settings_index,
1534            order: &self.groups.buddy_activity_category_settings_order,
1535        }
1536    }
1537
1538    pub fn buddy_emotion_level_settings(&self) -> accessor::BuddyEmotionLevelSettingsAccessor<'_> {
1539        accessor::BuddyEmotionLevelSettingsAccessor {
1540            entries: &self.entries,
1541            index: &self.groups.buddy_emotion_level_settings_index,
1542            order: &self.groups.buddy_emotion_level_settings_order,
1543        }
1544    }
1545
1546    pub fn buddy_level_settings(&self) -> accessor::BuddyLevelSettingsAccessor<'_> {
1547        accessor::BuddyLevelSettingsAccessor {
1548            entries: &self.entries,
1549            index: &self.groups.buddy_level_settings_index,
1550            order: &self.groups.buddy_level_settings_order,
1551        }
1552    }
1553
1554    pub fn client_quest_template(&self) -> accessor::ClientQuestTemplateAccessor<'_> {
1555        accessor::ClientQuestTemplateAccessor {
1556            entries: &self.entries,
1557            index: &self.groups.client_quest_template_index,
1558            order: &self.groups.client_quest_template_order,
1559        }
1560    }
1561
1562    pub fn code_gate_proto(&self) -> accessor::CodeGateProtoAccessor<'_> {
1563        accessor::CodeGateProtoAccessor {
1564            entries: &self.entries,
1565            index: &self.groups.code_gate_proto_index,
1566            order: &self.groups.code_gate_proto_order,
1567        }
1568    }
1569
1570    pub fn combat_league(&self) -> accessor::CombatLeagueAccessor<'_> {
1571        accessor::CombatLeagueAccessor {
1572            entries: &self.entries,
1573            index: &self.groups.combat_league_index,
1574            order: &self.groups.combat_league_order,
1575        }
1576    }
1577
1578    pub fn combat_move(&self) -> accessor::CombatMoveAccessor<'_> {
1579        accessor::CombatMoveAccessor {
1580            entries: &self.entries,
1581            index: &self.groups.combat_move_index,
1582            order: &self.groups.combat_move_order,
1583        }
1584    }
1585
1586    pub fn combat_npc_personality(&self) -> accessor::CombatNpcPersonalityAccessor<'_> {
1587        accessor::CombatNpcPersonalityAccessor {
1588            entries: &self.entries,
1589            index: &self.groups.combat_npc_personality_index,
1590            order: &self.groups.combat_npc_personality_order,
1591        }
1592    }
1593
1594    pub fn combat_npc_trainer(&self) -> accessor::CombatNpcTrainerAccessor<'_> {
1595        accessor::CombatNpcTrainerAccessor {
1596            entries: &self.entries,
1597            index: &self.groups.combat_npc_trainer_index,
1598            order: &self.groups.combat_npc_trainer_order,
1599        }
1600    }
1601
1602    pub fn combat_ranking_proto_settings(
1603        &self,
1604    ) -> accessor::CombatRankingProtoSettingsAccessor<'_> {
1605        accessor::CombatRankingProtoSettingsAccessor {
1606            entries: &self.entries,
1607            index: &self.groups.combat_ranking_proto_settings_index,
1608            order: &self.groups.combat_ranking_proto_settings_order,
1609        }
1610    }
1611
1612    pub fn combat_type(&self) -> accessor::CombatTypeAccessor<'_> {
1613        accessor::CombatTypeAccessor {
1614            entries: &self.entries,
1615            index: &self.groups.combat_type_index,
1616            order: &self.groups.combat_type_order,
1617        }
1618    }
1619
1620    pub fn event_pass_settings(&self) -> accessor::EventPassSettingsAccessor<'_> {
1621        accessor::EventPassSettingsAccessor {
1622            entries: &self.entries,
1623            index: &self.groups.event_pass_settings_index,
1624            order: &self.groups.event_pass_settings_order,
1625        }
1626    }
1627
1628    pub fn event_pass_tier_settings(&self) -> accessor::EventPassTierSettingsAccessor<'_> {
1629        accessor::EventPassTierSettingsAccessor {
1630            entries: &self.entries,
1631            index: &self.groups.event_pass_tier_settings_index,
1632            order: &self.groups.event_pass_tier_settings_order,
1633        }
1634    }
1635
1636    pub fn evolution_chain_display_settings(
1637        &self,
1638    ) -> accessor::EvolutionChainDisplaySettingsAccessor<'_> {
1639        accessor::EvolutionChainDisplaySettingsAccessor {
1640            entries: &self.entries,
1641            index: &self.groups.evolution_chain_display_settings_index,
1642            order: &self.groups.evolution_chain_display_settings_order,
1643        }
1644    }
1645
1646    pub fn evolution_quest_template(&self) -> accessor::EvolutionQuestTemplateAccessor<'_> {
1647        accessor::EvolutionQuestTemplateAccessor {
1648            entries: &self.entries,
1649            index: &self.groups.evolution_quest_template_index,
1650            order: &self.groups.evolution_quest_template_order,
1651        }
1652    }
1653
1654    pub fn feature_gate(&self) -> accessor::FeatureGateAccessor<'_> {
1655        accessor::FeatureGateAccessor {
1656            entries: &self.entries,
1657            index: &self.groups.feature_gate_index,
1658            order: &self.groups.feature_gate_order,
1659        }
1660    }
1661
1662    pub fn form_settings(&self) -> accessor::FormSettingsAccessor<'_> {
1663        accessor::FormSettingsAccessor {
1664            entries: &self.entries,
1665            index: &self.groups.form_settings_index,
1666            order: &self.groups.form_settings_order,
1667        }
1668    }
1669
1670    pub fn fort_power_up_level_settings(&self) -> accessor::FortPowerUpLevelSettingsAccessor<'_> {
1671        accessor::FortPowerUpLevelSettingsAccessor {
1672            entries: &self.entries,
1673            index: &self.groups.fort_power_up_level_settings_index,
1674            order: &self.groups.fort_power_up_level_settings_order,
1675        }
1676    }
1677
1678    pub fn friendship_milestone_settings(
1679        &self,
1680    ) -> accessor::FriendshipMilestoneSettingsAccessor<'_> {
1681        accessor::FriendshipMilestoneSettingsAccessor {
1682            entries: &self.entries,
1683            index: &self.groups.friendship_milestone_settings_index,
1684            order: &self.groups.friendship_milestone_settings_order,
1685        }
1686    }
1687
1688    pub fn gender_settings(&self) -> accessor::GenderSettingsAccessor<'_> {
1689        accessor::GenderSettingsAccessor {
1690            entries: &self.entries,
1691            index: &self.groups.gender_settings_index,
1692            order: &self.groups.gender_settings_order,
1693        }
1694    }
1695
1696    pub fn iap_category_display(&self) -> accessor::IapCategoryDisplayAccessor<'_> {
1697        accessor::IapCategoryDisplayAccessor {
1698            entries: &self.entries,
1699            index: &self.groups.iap_category_display_index,
1700            order: &self.groups.iap_category_display_order,
1701        }
1702    }
1703
1704    pub fn iap_item_display(&self) -> accessor::IapItemDisplayAccessor<'_> {
1705        accessor::IapItemDisplayAccessor {
1706            entries: &self.entries,
1707            index: &self.groups.iap_item_display_index,
1708            order: &self.groups.iap_item_display_order,
1709        }
1710    }
1711
1712    pub fn invasion_npc_display_settings(
1713        &self,
1714    ) -> accessor::InvasionNpcDisplaySettingsAccessor<'_> {
1715        accessor::InvasionNpcDisplaySettingsAccessor {
1716            entries: &self.entries,
1717            index: &self.groups.invasion_npc_display_settings_index,
1718            order: &self.groups.invasion_npc_display_settings_order,
1719        }
1720    }
1721
1722    pub fn item_expiration_settings(&self) -> accessor::ItemExpirationSettingsAccessor<'_> {
1723        accessor::ItemExpirationSettingsAccessor {
1724            entries: &self.entries,
1725            index: &self.groups.item_expiration_settings_index,
1726            order: &self.groups.item_expiration_settings_order,
1727        }
1728    }
1729
1730    pub fn item_settings(&self) -> accessor::ItemSettingsAccessor<'_> {
1731        accessor::ItemSettingsAccessor {
1732            entries: &self.entries,
1733            index: &self.groups.item_settings_index,
1734            order: &self.groups.item_settings_order,
1735        }
1736    }
1737
1738    pub fn language_settings(&self) -> accessor::LanguageSettingsAccessor<'_> {
1739        accessor::LanguageSettingsAccessor {
1740            entries: &self.entries,
1741            index: &self.groups.language_settings_index,
1742            order: &self.groups.language_settings_order,
1743        }
1744    }
1745
1746    pub fn level_up_rewards(&self) -> accessor::LevelUpRewardsAccessor<'_> {
1747        accessor::LevelUpRewardsAccessor {
1748            entries: &self.entries,
1749            index: &self.groups.level_up_rewards_index,
1750            order: &self.groups.level_up_rewards_order,
1751        }
1752    }
1753
1754    pub fn limited_purchase_sku_settings(
1755        &self,
1756    ) -> accessor::LimitedPurchaseSkuSettingsAccessor<'_> {
1757        accessor::LimitedPurchaseSkuSettingsAccessor {
1758            entries: &self.entries,
1759            index: &self.groups.limited_purchase_sku_settings_index,
1760            order: &self.groups.limited_purchase_sku_settings_order,
1761        }
1762    }
1763
1764    pub fn location_card_settings(&self) -> accessor::LocationCardSettingsAccessor<'_> {
1765        accessor::LocationCardSettingsAccessor {
1766            entries: &self.entries,
1767            index: &self.groups.location_card_settings_index,
1768            order: &self.groups.location_card_settings_order,
1769        }
1770    }
1771
1772    pub fn mega_evo_level_settings(&self) -> accessor::MegaEvoLevelSettingsAccessor<'_> {
1773        accessor::MegaEvoLevelSettingsAccessor {
1774            entries: &self.entries,
1775            index: &self.groups.mega_evo_level_settings_index,
1776            order: &self.groups.mega_evo_level_settings_order,
1777        }
1778    }
1779
1780    pub fn move_sequence_settings(&self) -> accessor::MoveSequenceSettingsAccessor<'_> {
1781        accessor::MoveSequenceSettingsAccessor {
1782            entries: &self.entries,
1783            index: &self.groups.move_sequence_settings_index,
1784            order: &self.groups.move_sequence_settings_order,
1785        }
1786    }
1787
1788    pub fn move_settings(&self) -> accessor::MoveSettingsAccessor<'_> {
1789        accessor::MoveSettingsAccessor {
1790            entries: &self.entries,
1791            index: &self.groups.move_settings_index,
1792            order: &self.groups.move_settings_order,
1793        }
1794    }
1795
1796    pub fn non_combat_move_settings(&self) -> accessor::NonCombatMoveSettingsAccessor<'_> {
1797        accessor::NonCombatMoveSettingsAccessor {
1798            entries: &self.entries,
1799            index: &self.groups.non_combat_move_settings_index,
1800            order: &self.groups.non_combat_move_settings_order,
1801        }
1802    }
1803
1804    pub fn party_play_general_settings(&self) -> accessor::PartyPlayGeneralSettingsAccessor<'_> {
1805        accessor::PartyPlayGeneralSettingsAccessor {
1806            entries: &self.entries,
1807            index: &self.groups.party_play_general_settings_index,
1808            order: &self.groups.party_play_general_settings_order,
1809        }
1810    }
1811
1812    pub fn photo_sets_settings_proto(&self) -> accessor::PhotoSetsSettingsProtoAccessor<'_> {
1813        accessor::PhotoSetsSettingsProtoAccessor {
1814            entries: &self.entries,
1815            index: &self.groups.photo_sets_settings_proto_index,
1816            order: &self.groups.photo_sets_settings_proto_order,
1817        }
1818    }
1819
1820    pub fn pokemon_extended_settings(&self) -> accessor::PokemonExtendedSettingsAccessor<'_> {
1821        accessor::PokemonExtendedSettingsAccessor {
1822            entries: &self.entries,
1823            index: &self.groups.pokemon_extended_settings_index,
1824            order: &self.groups.pokemon_extended_settings_order,
1825        }
1826    }
1827
1828    pub fn pokemon_family(&self) -> accessor::PokemonFamilyAccessor<'_> {
1829        accessor::PokemonFamilyAccessor {
1830            entries: &self.entries,
1831            index: &self.groups.pokemon_family_index,
1832            order: &self.groups.pokemon_family_order,
1833        }
1834    }
1835
1836    pub fn pokemon_home_energy_costs(&self) -> accessor::PokemonHomeEnergyCostsAccessor<'_> {
1837        accessor::PokemonHomeEnergyCostsAccessor {
1838            entries: &self.entries,
1839            index: &self.groups.pokemon_home_energy_costs_index,
1840            order: &self.groups.pokemon_home_energy_costs_order,
1841        }
1842    }
1843
1844    pub fn pokemon_home_form_reversions(&self) -> accessor::PokemonHomeFormReversionsAccessor<'_> {
1845        accessor::PokemonHomeFormReversionsAccessor {
1846            entries: &self.entries,
1847            index: &self.groups.pokemon_home_form_reversions_index,
1848            order: &self.groups.pokemon_home_form_reversions_order,
1849        }
1850    }
1851
1852    pub fn pokemon_scale_settings(&self) -> accessor::PokemonScaleSettingsAccessor<'_> {
1853        accessor::PokemonScaleSettingsAccessor {
1854            entries: &self.entries,
1855            index: &self.groups.pokemon_scale_settings_index,
1856            order: &self.groups.pokemon_scale_settings_order,
1857        }
1858    }
1859
1860    pub fn pokemon_settings(&self) -> accessor::PokemonSettingsAccessor<'_> {
1861        accessor::PokemonSettingsAccessor {
1862            entries: &self.entries,
1863            index: &self.groups.pokemon_settings_index,
1864            order: &self.groups.pokemon_settings_order,
1865        }
1866    }
1867
1868    pub fn pokemon_upgrades(&self) -> accessor::PokemonUpgradesAccessor<'_> {
1869        accessor::PokemonUpgradesAccessor {
1870            entries: &self.entries,
1871            index: &self.groups.pokemon_upgrades_index,
1872            order: &self.groups.pokemon_upgrades_order,
1873        }
1874    }
1875
1876    pub fn pokestop_invasion_availability_settings(
1877        &self,
1878    ) -> accessor::PokestopInvasionAvailabilitySettingsAccessor<'_> {
1879        accessor::PokestopInvasionAvailabilitySettingsAccessor {
1880            entries: &self.entries,
1881            index: &self.groups.pokestop_invasion_availability_settings_index,
1882            order: &self.groups.pokestop_invasion_availability_settings_order,
1883        }
1884    }
1885
1886    pub fn quest_settings(&self) -> accessor::QuestSettingsAccessor<'_> {
1887        accessor::QuestSettingsAccessor {
1888            entries: &self.entries,
1889            index: &self.groups.quest_settings_index,
1890            order: &self.groups.quest_settings_order,
1891        }
1892    }
1893
1894    pub fn recommended_search_settings(&self) -> accessor::RecommendedSearchSettingsAccessor<'_> {
1895        accessor::RecommendedSearchSettingsAccessor {
1896            entries: &self.entries,
1897            index: &self.groups.recommended_search_settings_index,
1898            order: &self.groups.recommended_search_settings_order,
1899        }
1900    }
1901
1902    pub fn roll_back(&self) -> accessor::RollBackAccessor<'_> {
1903        accessor::RollBackAccessor {
1904            entries: &self.entries,
1905            index: &self.groups.roll_back_index,
1906            order: &self.groups.roll_back_order,
1907        }
1908    }
1909
1910    pub fn settings_override_rule(&self) -> accessor::SettingsOverrideRuleAccessor<'_> {
1911        accessor::SettingsOverrideRuleAccessor {
1912            entries: &self.entries,
1913            index: &self.groups.settings_override_rule_index,
1914            order: &self.groups.settings_override_rule_order,
1915        }
1916    }
1917
1918    pub fn sticker_metadata(&self) -> accessor::StickerMetadataAccessor<'_> {
1919        accessor::StickerMetadataAccessor {
1920            entries: &self.entries,
1921            index: &self.groups.sticker_metadata_index,
1922            order: &self.groups.sticker_metadata_order,
1923        }
1924    }
1925
1926    pub fn tappable_settings(&self) -> accessor::TappableSettingsAccessor<'_> {
1927        accessor::TappableSettingsAccessor {
1928            entries: &self.entries,
1929            index: &self.groups.tappable_settings_index,
1930            order: &self.groups.tappable_settings_order,
1931        }
1932    }
1933
1934    pub fn temporary_evolution_settings(&self) -> accessor::TemporaryEvolutionSettingsAccessor<'_> {
1935        accessor::TemporaryEvolutionSettingsAccessor {
1936            entries: &self.entries,
1937            index: &self.groups.temporary_evolution_settings_index,
1938            order: &self.groups.temporary_evolution_settings_order,
1939        }
1940    }
1941
1942    pub fn type_effective(&self) -> accessor::TypeEffectiveAccessor<'_> {
1943        accessor::TypeEffectiveAccessor {
1944            entries: &self.entries,
1945            index: &self.groups.type_effective_index,
1946            order: &self.groups.type_effective_order,
1947        }
1948    }
1949
1950    pub fn vs_seeker_loot(&self) -> accessor::VsSeekerLootAccessor<'_> {
1951        accessor::VsSeekerLootAccessor {
1952            entries: &self.entries,
1953            index: &self.groups.vs_seeker_loot_index,
1954            order: &self.groups.vs_seeker_loot_order,
1955        }
1956    }
1957
1958    pub fn vs_seeker_pokemon_rewards(&self) -> accessor::VsSeekerPokemonRewardsAccessor<'_> {
1959        accessor::VsSeekerPokemonRewardsAccessor {
1960            entries: &self.entries,
1961            index: &self.groups.vs_seeker_pokemon_rewards_index,
1962            order: &self.groups.vs_seeker_pokemon_rewards_order,
1963        }
1964    }
1965
1966    pub fn weather_affinities(&self) -> accessor::WeatherAffinitiesAccessor<'_> {
1967        accessor::WeatherAffinitiesAccessor {
1968            entries: &self.entries,
1969            index: &self.groups.weather_affinities_index,
1970            order: &self.groups.weather_affinities_order,
1971        }
1972    }
1973}