// TSNest
// r_debug_info_impl == ReadHint
// r_locator_str == ReadHintStr("***", "locator_str");
// r_debug_info_impl + r_stringz == ReadString("")
// r_choose == ReadHintStr("***", "choose")
// r_pose_43 == ReadMatrix43("***", "pose, matrix_43T");
// r_pose == ReadMatrix44("***", "pose, matrix")
// r_particles == ReadHintStr("***", "particles, str_shared")
// load_motions == ReadString("")

var version = reader.ReadU16("version")

// inventory_item::static_params::load
var section0 = reader.ReadSection("slot")
//inventory_item::static_params::e_slot::load
section0.ReadU32("slot")
section0.ReadU8("priority")

// inventory_item::static_params::load
reader.ReadFP32("control_inertion_factor")
reader.ReadFP32("speed_coef")
reader.ReadFP32("sens_coef")
reader.ReadU32("sprint2run_time")
reader.ReadU32("run2sprint_time")
if (version >= 29) {
	reader.ReadFP32("convergence")
	reader.ReadFP32("aimed_convergence")
}
reader.ReadHint("flags", "flags8")
reader.ReadU8("flags")
reader.ReadU32("slot_max_num")
reader.ReadU32("animation_slot")
reader.ReadU32("keepsakes_count")
reader.ReadHintStr("attach_hud_loc", "locator_str");
reader.ReadString("active_holder_attp")
reader.ReadString("holder_attp")
reader.ReadString("active_item_attp")
reader.ReadString("item_attp")

// uobject::static_params::load
var section1 = reader.ReadSection("__edit")
section1.ReadString("caption")
reader.ReadBool("editable")
reader.ReadBool("visible_for_ai")
reader.ReadBool("block_ai_los")
reader.ReadBool("accept_fast_explosion")
reader.ReadBool("collideable")
if (version >= 29) {
	reader.ReadFP32("usage_distance")
}

// centity::static_params::load
reader.ReadString("collision_sound")
reader.ReadHintStr("collision_track", "camera_track, str_shared") // в движке читается с помощью u_archive_stream_impl::r_camera_track
reader.ReadU32("collision_interval")
reader.ReadFP32("collision_move")
reader.ReadFP32("attach_threshold")
reader.ReadFP32("attach_armor")

// inventory_item_object::static_params::load
reader.ReadHintStr("hr_class", "choose")
reader.ReadString("using_action")
reader.ReadString("using_action_replace")
reader.ReadFP32("take_impulse")
reader.ReadString("take_sound") // потом вызывается r_sound, так-что хз
if (version >= 29) {
	reader.ReadBool("can_be_taken_as_child")
}
var section2 = reader.ReadSection("icon")

// ui_item::load
section2.ReadString("texture")
if (version < 29) {
	section2.ReadVec4("tex_rect")
	section2.ReadString("technics")
}
section2.ReadString("shader")
if (version >= 29) {
	section2.ReadString("technics")
	section2.ReadVec4("tex_rect")
}
section2.ReadVec4("wnd_rect")
section2.ReadU32("color", "color, u32") // в движке читается с помощью r_color_u32, поэтому ReadVec4i на всякий случай, поменял на ReadU32
section2.ReadU32("scale")
section2.ReadU8("h_alignment")
section2.ReadU8("v_alignment")
if (version >= 29) {
	section2.ReadBool("force_ready")
} else {
	section2.ReadVec2("icon_offset")
}
section2.ReadVec2("icon_scale")
section2.ReadFP32("rotate_speed")
section2.ReadU8("flip_tc")
section2.ReadFP32("rotate")

// inventory_item_object::static_params::load
section2.ReadVec2("font_pos")

// cshooting_object::static_params::load
var section3 = reader.ReadSection("axis_disp")
// cshooting_object::static_params::axis_disp::load
section3.ReadFP32("left_axis")
section3.ReadFP32("up_axis")
section3.ReadFP32("right_axis")
section3.ReadFP32("down_axis")

// shooting_particles_data::load
reader.ReadHintStr("flame_particles_hud", "particles, str_shared")
reader.ReadHintStr("flame_particles", "particles, str_shared")
reader.ReadHintStr("smoke_particles_hud", "particles, str_shared")
reader.ReadHintStr("smoke_particles", "particles, str_shared")
reader.ReadHintStr("shot_particles", "particles, str_shared")

// shooting_light_data::load
reader.ReadU16("light_type")
reader.ReadFP32("light_cone")
reader.ReadString("light_proj")
reader.ReadVec4("light_color", "color, vec4f")
reader.ReadFP32("light_range")
reader.ReadFP32("light_var_color")
reader.ReadFP32("light_var_range")
reader.ReadFP32("light_time")
reader.ReadString("light_coloranim")

// shooting_weapon_data::load
reader.ReadFP32("dispersion_base")
reader.ReadFP32("dispersion_aim")
reader.ReadFP32("dispersion_move_factor")
reader.ReadFP32("disp_rot_factor")
if (version >= 29) {
	reader.ReadFP32("dispersion_lh")
}
reader.ReadFP32("dispersion_inc")
reader.ReadFP32("dispersion_min")
reader.ReadFP32("dispersion_max")
if (version >= 29) {
	reader.ReadFP32("dispersion_max_npc")
}
reader.ReadFP32("dispersion_dec")
reader.ReadFP32("bullet_start_disp")
reader.ReadU32("min_ammo_show")
reader.ReadU32("num_shot_dispersed")
if (version >= 29) {
	reader.ReadFP32("rpm")
}
reader.ReadFP32("blt_power")
reader.ReadFP32("blt_impulse")
reader.ReadFP32("blt_power_falloff")
reader.ReadFP32("blt_impulse_falloff"/*, "dDressed, fp32"*/)
reader.ReadFP32("blt_speed")
reader.ReadFP32("blt_head_coef")
reader.ReadFP32("blt_fire_distance_min")
reader.ReadFP32("blt_fire_distance_max")
reader.ReadFP32("blt_fire_distance")
reader.ReadFP32("blt_pierce")
reader.ReadFP32("blt_tracer_scale_xy")
reader.ReadFP32("blt_tracer_scale_z"/*, "dDressed, fp32"*/)
reader.ReadFP32("blt_tracer_min_dist")
reader.ReadString("blt_material")
reader.ReadBool("blt_shoot_through")
if (version >= 29) {
	var k = 0, camera_track_attack_arr = reader.ReadArray("camera_track_attack_arr");
	while(camera_track_attack_arr.More())
	{
		// хз, правильно-ли...
		var e = camera_track_attack_arr.ReadSection(RecStr("rec_", k++, 2), false);
		// shooting_weapon_data::camera_track_shot_info::load
		e.ReadString("track");
		e.ReadU32("count");
		e.ReadU8("body");
		e.ReadU8("weapon");
		e.ReadU8("shot");
	}
}

// cshooting_object::static_params::load
reader.ReadFP32("min_radius")
reader.ReadFP32("max_radius")
reader.ReadString("fire_bone")
reader.ReadString("shell_bone")
reader.ReadVec3("light_point")
reader.ReadHintStr("shell_particles", "particles, str_shared")
reader.ReadFP32("shell_occlusion_distance")
reader.ReadBool("shell_drop")
if (version < 29) {
	reader.ReadFP32("rpm")
}
reader.ReadFP32("noobtube_rpm")
reader.ReadFP32("noobgun_rpm")
if (version >= 29) {
	reader.ReadBool("one_shot_weapon")
}

// chud_item_container::static_params::load
reader.ReadHintStr("hud_visual", "ref_model") // используется u_archive::r_model_ (хз, сработает-ли)
reader.ReadString("anim_time_in")
reader.ReadString("anim_time")
reader.ReadString("anim_time_out")

// ui_entity::static_params::load
reader.ReadU32("id")
reader.ReadVec2("font_pos")
reader.ReadHintStr("description", "choose")
reader.ReadHintStr("long_description", "choose")
reader.ReadFP32("base_scale")
reader.ReadVec2("base_offset")

// weapon::static_params::load
reader.ReadBool("ad_scope")
reader.ReadBool("ad_silencer")
reader.ReadBool("ad_barrel")
reader.ReadBool("ad_barrel_2")
reader.ReadBool("ad_butt_1")
reader.ReadBool("ad_pivot")
reader.ReadBool("ad_bayonet")
reader.ReadBool("ad_laser")
reader.ReadBool("ad_laser_2")
reader.ReadBool("ad_magazine_1")
reader.ReadBool("ad_magazine_2")
reader.ReadBool("ad_kalimator")
reader.ReadBool("ad_envg")
reader.ReadString("ad_scope_bone")
reader.ReadString("ad_silencer_bone")
reader.ReadString("ad_barrel_bone")
reader.ReadString("ad_barrel_2_bone")
reader.ReadString("ad_butt_bone")
reader.ReadString("ad_pivot_bone")
reader.ReadString("ad_bayonet_bone")
reader.ReadString("ad_laser_bone")
reader.ReadString("ad_laser_2_bone")
reader.ReadString("ad_magazine_bone")
reader.ReadString("ad_magazine_2_bone")
reader.ReadString("ad_kalimator_bone")
var section4 = reader.ReadSection("ad_scope_params")
// weapon::static_params::load_scope_params
section4.ReadFP32("holder_range_modifier")
section4.ReadFP32("holder_fov_modifier")
section4.ReadFP32("scope_zoom_factor")
section4.ReadHintStr("scope_texture", "texture, str_shared")

// weapon::static_params::load
reader.ReadString("anim_aim_in")
reader.ReadString("anim_aim_out")
reader.ReadU32("snd_ignore_ai_type")
reader.ReadU32("snd_fly_by_camera_type")
reader.ReadU32("deferred_action_interval")
reader.ReadU32("weapon_replace_interval")
reader.ReadString("anim_idle")
reader.ReadString("seq_idle")
reader.ReadString("anim_idle_aim")
reader.ReadString("anim_draw")
reader.ReadString("anim_holster")
reader.ReadString("anim_holster_lh")
reader.ReadString("anim_flame_in")
reader.ReadString("anim_flame_idle")
reader.ReadString("anim_flame_out")
reader.ReadString("anim_gasmask_clear")
reader.ReadString("anim_lh2_fp")
reader.ReadString("anim_fast")
reader.ReadString("anim_special")
reader.ReadString("anim_idle_friend")
reader.ReadString("anim_idle_friend_run")
reader.ReadString("anim_fast_drop")
reader.ReadU32("delay_friend_on")
reader.ReadU32("delay_friend_off")
reader.ReadU16("item_priority")
reader.ReadString("anim_idle_long_prefix")
reader.ReadFP32("time_before_long_idle")
reader.ReadString("prepare_hud")
reader.ReadString("prepare_hud_drop")
reader.ReadString("action_hud_drop")
reader.ReadString("action_hud_deactivate")
reader.ReadString("special_on")
reader.ReadString("special_off")
reader.ReadBool("can_lh_fire")
reader.ReadU32("cost")
reader.ReadU32("shell_snd_delay")
reader.ReadMatrix43("trade_offset", "pose, matrix_43T");
if (version >= 29) {
	reader.ReadHintStr("trade_camera_track", "camera_track, str_shared")
	var k = 0, dlc_packages_ids = reader.ReadArray("dlc_packages_ids");
	while(dlc_packages_ids.More())
	{
		var e = dlc_packages_ids.ReadSection(RecStr("rec_", k++, 2), false);
		e.ReadU32("name");
	}
}

// weapon_magazined::static_params::load
reader.ReadBool("auto_reload")
reader.ReadBool("need_clip_out")
reader.ReadBool("auto_spawn_ammo")
reader.ReadU32("delay_soft_destroy")
if (version >= 27) {
	reader.ReadU32("ammo_class")
} else {
	reader.ReadString("ammo_class")
}
var section7 = reader.ReadSection("ammo_class")
// ccartridge::load
section7.ReadFP32("k_power")
section7.ReadFP32("k_impulse")
section7.ReadFP32("k_power_falloff")
section7.ReadFP32("k_impulse_falloff")
section7.ReadFP32("k_speed")
section7.ReadFP32("k_head_coef")
section7.ReadFP32("k_fire_distance_min")
section7.ReadFP32("k_fire_distance_max")
section7.ReadFP32("k_fire_distance")
section7.ReadFP32("k_pierce")
section7.ReadFP32("k_tracer_scale_xy")
section7.ReadFP32("k_tracer_scale_z")
section7.ReadFP32("k_tracer_min_dist")
section7.ReadString("k_material")
section7.ReadBool("k_shoot_through")
section7.ReadFP32("blast_radius_min")
section7.ReadFP32("blast_radius_max")
section7.ReadFP32("blast_hit_min")
section7.ReadFP32("blast_hit_max")
section7.ReadFP32("blast_up_throw_factor")
section7.ReadFP32("blast_hit_impulse_factor")
section7.ReadU8("blast_hit_type")
section7.ReadU8("blast_raycast_type")
section7.ReadHintStr("tracer_mesh", "ref_model") // используется u_archive::r_model_ (хз, сработает-ли)
section7.ReadHintStr("tracer_mesh_hud", "ref_model") // тож самое
section7.ReadHintStr("bullet_particles", "particles, str_shared") // мб ReadString("")?
section7.ReadHintStr("impact_particles", "particles, str_shared") // и тут мб тож?
section7.ReadHintStr("trail_mesh", "ref_model") // ещё модель
section7.ReadU32("trail_time")
section7.ReadVec2("trail_beg_scale_xy")
section7.ReadVec2("trail_end_scale_xy")
section7.ReadFP32("wm_size")
section7.ReadFP32("k_monster_coef")
section7.ReadString("ammo_material")
section7.ReadU8("flags0", "bool8")
section7.ReadFP32("k_disp")
section7.ReadS32("buck_shot")
section7.ReadU32("type")

// weapon_magazined::static_params::load
reader.ReadU32("snd_shoot_ai_type")
reader.ReadU32("snd_reload_ai_type")
reader.ReadHintStr("snd_shoot_prefix", "sound")
if (version < 29) {
	reader.ReadHintStr("snd_shoot_close_prefix", "sound")
}
reader.ReadHintStr("snd_shoot_echo_prefix", "sound")
reader.ReadHintStr("snd_shell_drop_prefix", "sound")
reader.ReadHintStr("snd_show_prefix", "sound")
reader.ReadHintStr("snd_hide_prefix", "sound")
reader.ReadHintStr("snd_empty_prefix", "sound")
reader.ReadHintStr("snd_reload_prefix", "sound")
reader.ReadHintStr("snd_net_reload_prefix", "sound")
reader.ReadHintStr("snd_unload_prefix", "sound")
reader.ReadHintStr("snd_unload_money_prefix", "sound")
reader.ReadHintStr("snd_fly_by_prefix", "sound")
reader.ReadHintStr("snd_aim_in_prefix", "sound")
reader.ReadHintStr("snd_aim_out_prefix", "sound")
reader.ReadHintStr("snd_deafening_prefix", "sound")
reader.ReadFP32("track_shot_weight")
reader.ReadString("anim_reload")
reader.ReadString("anim_shoot")
reader.ReadString("anim_gc_shoot")
reader.ReadString("anim_shoot_aim")
if (version >= 29) {
	reader.ReadString("anim_mainspring_pos")
}
var k0 = 0, left_hand_stuff = reader.ReadArray("left_hand_stuff");
while(left_hand_stuff.More())
{
	var e = left_hand_stuff.ReadSection(RecStr("rec_", k0++, 2), false);
	// chud_item_container::static_params::left_hand_motions::load
	e.ReadU32("id");
	e.ReadStrArray16("motions");
}
var k1 = 0, weapon_items_spawner = reader.ReadArray("weapon_items_spawner");
while(weapon_items_spawner.More())
{
	var e = weapon_items_spawner.ReadSection(RecStr("rec_", k1++, 2), false);
	e.ReadU32("att_sdata_key")
}
reader.ReadU32("mag_size")
reader.ReadString("start_mech_reload")
reader.ReadString("start_oboyma_reload")
reader.ReadString("shells_reload")
reader.ReadString("finish_reload")
reader.ReadString("bolt_reload")
reader.ReadString("clip_in")
reader.ReadString("clip_out")
reader.ReadString("mech_up")
reader.ReadString("hturn_name")
reader.ReadString("hturn_aim_name")
reader.ReadString("hturn_lh_name")

reader.ReadU32("reload_special_interval")
reader.ReadU32("activate_addon_interval")
reader.ReadFP32("shot_weight")
reader.ReadFP32("aim_shot_weight")
reader.ReadHintStr("bone_part_clip", "part_id")
if (version < 29) {
	reader.ReadString("anim_oboyma_idle_prefix")
}
reader.ReadString("bone_patron_prefix")
reader.ReadHintStr("bone_optika", "bone_id")
reader.ReadHintStr("bone_laser", "bone_id")
reader.ReadString("s_anim_format")
reader.ReadString("s_bone_format")

// weapon_5_45::static_params::load
if (version >= 27) {
	reader.ReadU32("gold_ammo_class")
} else {
	reader.ReadString("gold_ammo_class")
}
var section8 = reader.ReadSection("gold_ammo_class")
// ccartridge::load
section8.ReadFP32("k_power")
section8.ReadFP32("k_impulse")
section8.ReadFP32("k_power_falloff")
section8.ReadFP32("k_impulse_falloff")
section8.ReadFP32("k_speed")
section8.ReadFP32("k_head_coef")
section8.ReadFP32("k_fire_distance_min")
section8.ReadFP32("k_fire_distance_max")
section8.ReadFP32("k_fire_distance")
section8.ReadFP32("k_pierce")
section8.ReadFP32("k_tracer_scale_xy")
section8.ReadFP32("k_tracer_scale_z")
section8.ReadFP32("k_tracer_min_dist")
section8.ReadString("k_material")
section8.ReadBool("k_shoot_through")
section8.ReadFP32("blast_radius_min")
section8.ReadFP32("blast_radius_max")
section8.ReadFP32("blast_hit_min")
section8.ReadFP32("blast_hit_max")
section8.ReadFP32("blast_up_throw_factor")
section8.ReadFP32("blast_hit_impulse_factor")
section8.ReadU8("blast_hit_type")
section8.ReadU8("blast_raycast_type")
section8.ReadHintStr("tracer_mesh", "ref_model") // используется u_archive::r_model_ (хз, сработает-ли)
section8.ReadHintStr("tracer_mesh_hud", "ref_model") // тож самое
section8.ReadHintStr("bullet_particles", "particles, str_shared") // мб ReadString("")?
section8.ReadHintStr("impact_particles", "particles, str_shared") // и тут мб тож?
section8.ReadHintStr("trail_mesh", "ref_model") // ещё модель
section8.ReadU32("trail_time")
section8.ReadVec2("trail_beg_scale_xy")
section8.ReadVec2("trail_end_scale_xy")
section8.ReadFP32("wm_size")
section8.ReadFP32("k_monster_coef")
section8.ReadString("ammo_material")
section8.ReadU8("flags0", "bool8")
section8.ReadFP32("k_disp")
section8.ReadS32("buck_shot")
section8.ReadU32("type")

// weapon_5_45::static_params::load
reader.ReadHintStr("golden_flame_particles", "particles, str_shared")
reader.ReadHintStr("golden_smoke_particles", "particles, str_shared")
reader.ReadHintStr("snd_golden_shoot_prefix", "sound")

if (version >= 29) {
	reader.ReadHintStr("golden_bullet_tex", "texture, str_shared")
	reader.ReadHintStr("golden_bullet_bump_tex", "texture, str_shared")
	reader.ReadHintStr("normal_bullet_tex", "texture, str_shared")
	reader.ReadHintStr("normal_bullet_bump_tex", "texture, str_shared")
}

// weapon_ak74::static_params::load
reader.ReadString("mask_clear")
reader.ReadString("anim_lean_left_attack")
reader.ReadString("anim_lean_right_attack")
reader.ReadString("anim_lean_left_idle")
reader.ReadString("anim_lean_right_idle")

// TODO: weapon_ak74_hud_item::static_params::load
// chud_item::static_params::load
reader.ReadMatrix43("hud", "pose, matrix")
reader.ReadBool("allow_inertion")
reader.ReadFP32("tend_to_speed")
reader.ReadFP32("fov_coef_tend")

// weapon_hud_item::static_params::load
reader.ReadBool("ad_scope")
reader.ReadBool("ad_silencer")
reader.ReadBool("ad_barrel")
reader.ReadBool("ad_barrel_2")
reader.ReadBool("ad_butt_1")
reader.ReadBool("ad_pivot")
reader.ReadBool("ad_bayonet")
reader.ReadBool("ad_laser")
reader.ReadBool("ad_laser_2")
reader.ReadBool("ad_magazine_1")
reader.ReadBool("ad_magazine_2")
reader.ReadBool("ad_kalimator")
reader.ReadBool("ad_envg")
reader.ReadHintStr("fire_bone", "locator_id")
reader.ReadHintStr("shell_bone", "locator_id")
reader.ReadHintStr("hud_scope_bone", "locator_id")
reader.ReadHintStr("hud_silencer_bone", "locator_id")
reader.ReadHintStr("hud_barrel_bone", "locator_id")
reader.ReadHintStr("hud_barrel_2_bone", "locator_id")
reader.ReadHintStr("hud_butt_bone", "locator_id")
reader.ReadHintStr("hud_pivot_bone", "locator_id")
reader.ReadHintStr("hud_bayonet_bone", "locator_id")
reader.ReadHintStr("hud_laser_bone", "locator_id")
reader.ReadHintStr("hud_laser_2_bone", "locator_id")
reader.ReadHintStr("hud_magazine_bone", "locator_id")
reader.ReadHintStr("hud_magazine_2_bone", "locator_id")
reader.ReadHintStr("hud_kalimator_bone", "locator_id")

// cweapon_magazined_hud_item::static_params::load
reader.ReadHintStr("aim_idle_camera_track", "camera_track, str_shared")
if(version >= 29) {
	reader.ReadHintStr("aim_idle_comp_camera_track", "camera_track, str_shared")
}
reader.ReadHintStr("aim_noobe_camera_track", "camera_track, str_shared")
reader.ReadFP32("aim_track_accrue")
reader.ReadFP32("aim_track_falloff")
reader.ReadFP32("noobe_aim_track_accrue")
reader.ReadFP32("noobe_aim_track_falloff")
reader.ReadHintStr("reload_camera_track", "camera_track, str_shared")
reader.ReadHintStr("gasmask_clear_track", "camera_track, str_shared")
reader.ReadHintStr("gasmask_clear_track_lighter", "camera_track, str_shared")
if(version < 29) {	
	var k = 0, camera_track_attack_arr = reader.ReadArray("camera_track_attack_arr");
	while(camera_track_attack_arr.More())
	{
		var e = camera_track_attack_arr.ReadSection(RecStr("rec_", k++, 2), false);
		// cweapon_magazined_hud_item::static_params::camera_track_shot_info::load
		e.ReadString("track")
		e.ReadU32("count")
		e.ReadU8("body")
		e.ReadU8("weapon")
		e.ReadU8("shot")
	}
}
reader.ReadBool("rangefinder_available")
reader.ReadVec2("rangefinder_position")
reader.ReadU8("rangefinder_h_alignment")
reader.ReadU8("rangefinder_v_alignment")
reader.ReadFP32("rangefinder_font_size")
reader.ReadVec4i("rangefinder_font_color")
reader.ReadString("rangefinder_font_name")
reader.ReadHintStr("dynamite_texture", "texture, str_shared")
reader.ReadHintStr("dynamite_bump", "texture, str_shared")
reader.ReadHintStr("sticky_texture", "texture, str_shared")
reader.ReadHintStr("sticky_bump", "texture, str_shared")
reader.ReadHintStr("flame_texture", "texture, str_shared")
reader.ReadHintStr("flame_bump", "texture, str_shared")
reader.ReadHintStr("bone_clip", "bone_id")
reader.ReadHintStr("fire_bone_launcher", "locator_id")
reader.ReadHintStr("fire_bone_shotgun", "locator_id")
reader.ReadHintStr("bone_patron_bomb", "bone_id")
reader.ReadHintStr("anim_bolt_shoot", "animation_str")
reader.ReadHintStr("anim_bolt_reload", "animation_str")
reader.ReadHintStr("bone_part_bolt", "part_id")

if(version < 29) {
	// cweapon_5_45_hud_item::static_params::load
	reader.ReadHintStr("golden_bullet_tex", "texture, str_shared")
	reader.ReadHintStr("golden_bullet_bump_tex", "texture, str_shared")
	reader.ReadHintStr("normal_bullet_tex", "texture, str_shared")
	reader.ReadHintStr("normal_bullet_bump_tex", "texture, str_shared")
}

// weapon_ak74_hud_item::static_params::load
reader.ReadHintStr("lean_left_in_camera_track", "camera_track, str_shared")
reader.ReadHintStr("lean_right_in_camera_track", "camera_track, str_shared")
reader.ReadHintStr("lean_up_in_camera_track", "camera_track, str_shared")
reader.ReadHintStr("lean_left_idle_camera_track", "camera_track, str_shared")
reader.ReadHintStr("lean_right_idle_camera_track", "camera_track, str_shared")
reader.ReadHintStr("lean_up_idle_camera_track", "camera_track, str_shared")
reader.ReadHintStr("lean_left_out_camera_track", "camera_track, str_shared")
reader.ReadHintStr("lean_right_out_camera_track", "camera_track, str_shared")
reader.ReadHintStr("lean_up_out_camera_track", "camera_track, str_shared")

