#define TEast 0
#define TWest 1
#define TGuerrila 2
#define TCivilian 3
#define TSideUnknown 4
#define TEnemy 5
#define TFriendly 6
#define TLogic 7
#define true 1
#define false 0
#define private 0
#define protected 1
#define public 2
class DefaultEventhandlers;
class CfgPatches
{
class Ares_Dingo
{
units[] = {};
weapons[] = {};
requiredVersion = 1.50;
requiredAddons[] = {"A3_Soft_F"};
};
};
class WeaponFireGun;
class WeaponCloudsGun;
class WeaponFireMGun;
class WeaponCloudsMGun;
class RCWSOptics;
class CfgVehicles
{
class LandVehicle; // External class reference
class Car : LandVehicle
{
class NewTurret; // External class reference
};
class Car_F : Car
{
class AnimationSources; // External class reference
class Turrets
{
class MainTurret : NewTurret {};
};
class HitPoints
{
class HitLFWheel; // External class reference
class HitLF2Wheel; // External class reference
class HitRFWheel; // External class reference
class HitRF2Wheel; // External class reference
class HitGlass1; // External class reference
class HitGlass2; // External class reference
class HitGlass3; // External class reference
class HitGlass4; // External class reference
class HitGlass5; // External class reference
};
};
class Dingo_Base: Car_F
{
mapSize = 5;
author = "Ares Military and BIS";
displayName = "Dingo2A2";
nameSound = "veh_car";
scope = private;
side = TWest;
faction = BLU_F;
class Library
{
libTextDesc = "$STR_A3_CfgVehicles_MRAP_01_Base_Library0";
};
model = "\Dingo\Dingo2A2.p3d";
Picture = "\Dingo\data\UI\pictures\Dingo_Picture.paa";
Icon = "\Dingo\data\UI\icons\Dingo_Icon.paa"; transportMaxBackpacks = 6;
vehicleClass = "Car";
transportSoldier = 5;
crewVulnerable = false;
crewCrashProtection = 0.15;
armor = 40;
cost = 100000;
threat[] = {0.8, 0.6, 0.3};
memoryPointTrackFLL = "TrackFLL";
memoryPointTrackFLR = "TrackFLR";
memoryPointTrackBLL = "TrackBLL";
memoryPointTrackBLR = "TrackBLR";
memoryPointTrackFRL = "TrackFRL";
memoryPointTrackFRR = "TrackFRR";
memoryPointTrackBRL = "TrackBRL";
memoryPointTrackBRR = "TrackBRR";
class Damage
{
tex[] = {};
mat[] =
{
"A3\data_f\glass_veh_int.rvmat",
"A3\data_f\Glass_veh_damage.rvmat",
"A3\data_f\Glass_veh_damage.rvmat",
"A3\data_f\glass_veh.rvmat",
"A3\data_f\Glass_veh_damage.rvmat",
"A3\data_f\Glass_veh_damage.rvmat"
};
};
class Exhausts
{
class Exhaust1
{
position = "exhaust1_pos";
direction = "exhaust1_dir";
effect = "ExhaustsEffect";
};
};
HiddenSelections[] = {camo1,camo2,camo3};
HiddenSelectionsTextures[] = {"\Dingo\data\TestTexture.paa", "\Dingo\data\TestTexture.paa", "\Dingo\data\TestTexture.paa"};
class AnimationSources: AnimationSources
{
class HitGlass1;
class HitGlass5 : HitGlass1
{
hitpoint="HitGlass5";
};
};
class HitPoints: HitPoints
{
class HitEngine
{
armor=0.5;
material=-1;
name="engine";
visual="";
passThrough=1;
};
class HitGlass1 : HitGlass1
{
armor=1;
};
class HitGlass2 : HitGlass2
{
armor=1;
};
class HitGlass3 : HitGlass3
{
armor=1;
};
class HitGlass4 : HitGlass4
{
armor=1;
};
class HitGlass5 : HitGlass4
{
name="glass5";
visual="glass5";
};
class HitLFWheel : HitLFWheel
{
armor = 0.12;
explosionShielding = 0.8;
};
class HitLF2Wheel : HitLF2Wheel
{
armor = 0.12;
explosionShielding = 0.8;
};
class HitRFWheel : HitRFWheel
{
armor = 0.12;
explosionShielding = 0.8;
};
class HitRF2Wheel : HitRF2Wheel
{
armor = 0.12;
explosionShielding = 0.8;
};
class HitFuel
{
armor=0.14;
material=-1;
name="fueltank";
visual="";
passThrough=1;
};
};
wheelDamageThreshold = 0.7;
wheelDestroyThreshold = 0.99;
wheelDamageRadiusCoef = 0.95;
wheelDestroyRadiusCoef = 0.45;
crew = "B_Soldier_F";
typicalCargo[] = {"B_Soldier_F","B_Soldier_F","B_Soldier_F", "B_Soldier_F", "B_Soldier_F"};
driverAction = "driver_MRAP_01";
cargoAction[] = {"passenger_MRAP_01_front", "passenger_MRAP_01_back", "passenger_generic01_foldhands", "passenger_generic01_foldhands"};
cargoIsCoDriver[] = {true,false,false,false,false};
getInAction = "GetInMRAP_01";
getOutAction = "GetOutMRAP_01";
cargoGetInAction[] = {"GetInMRAP_01_cargo"};
cargoGetOutAction[] = {"GetOutMRAP_01"};
castDriverShadow = false;
commanderCanSee = 31;
hideWeaponsDriver = true;
hideWeaponsCargo = true;
driverDoor = "";
cargoDoors[] = {};
terrainCoef = 2.0;
turnCoef = 4;
steerAheadSimul = 0.4;
steerAheadPlan = 0.2;
predictTurnPlan = 0.9;
predictTurnSimul = 0.5;
precision = 15;
smokeLauncherGrenadeCount = 8;
smokeLauncherVelocity = 14;
smokeLauncherOnTurret = 0;
smokeLauncherAngle = 360;
weapons[] = {"TruckHorn2"};
magazines[] = {};
attenuationEffectType = "CarAttenuation";
soundGetIn[] = {"A3\Sounds_F\vehicles\soft\MRAP_01\getin", 0.562341, 1};
soundGetOut[] = {"A3\Sounds_F\vehicles\soft\MRAP_01\getout", 0.562341, 1, 40};
soundDammage[] = {"", 0.562341, 1};
soundEngineOnInt[] = {"A3\Sounds_F\vehicles\soft\MRAP_01\MRAP_01_int_start", 0.354813, 1.0};
soundEngineOnExt[] = {"A3\Sounds_F\vehicles\soft\MRAP_01\MRAP_01_ext_start", 1.0, 1.0, 200};
soundEngineOffInt[] = {"A3\Sounds_F\vehicles\soft\MRAP_01\MRAP_01_int_stop", 0.354813, 1.0};
soundEngineOffExt[] = {"A3\Sounds_F\vehicles\soft\MRAP_01\MRAP_01_ext_stop", 1.0, 1.0, 200};
buildCrash0[] = {"A3\sounds_f\Vehicles\soft\noises\crash_building_01", 1.77828, 1, 200};
buildCrash1[] = {"A3\sounds_f\Vehicles\soft\noises\crash_building_02", 1.77828, 1, 200};
buildCrash2[] = {"A3\sounds_f\Vehicles\soft\noises\crash_building_03", 1.77828, 1, 200};
buildCrash3[] = {"A3\sounds_f\Vehicles\soft\noises\crash_building_04", 1.77828, 1, 200};
soundBuildingCrash[] = {"buildCrash0", 0.25, "buildCrash1", 0.25, "buildCrash2", 0.25, "buildCrash3", 0.25};
WoodCrash0[] = {"A3\sounds_f\Vehicles\soft\noises\crash_mix_wood_01", 1.77828, 1, 200};
WoodCrash1[] = {"A3\sounds_f\Vehicles\soft\noises\crash_mix_wood_02", 1.77828, 1, 200};
WoodCrash2[] = {"A3\sounds_f\Vehicles\soft\noises\crash_mix_wood_03", 1.77828, 1, 200};
WoodCrash3[] = {"A3\sounds_f\Vehicles\soft\noises\crash_mix_wood_04", 1.77828, 1, 200};
WoodCrash4[] = {"A3\sounds_f\Vehicles\soft\noises\crash_mix_wood_05", 1.77828, 1, 200};
WoodCrash5[] = {"A3\sounds_f\Vehicles\soft\noises\crash_mix_wood_06", 1.77828, 1, 200};
soundWoodCrash[] = {"woodCrash0", 0.166, "woodCrash1", 0.166, "woodCrash2", 0.166, "woodCrash3", 0.166, "woodCrash4", 0.166, "woodCrash5", 0.166};
ArmorCrash0[] = {"A3\sounds_f\Vehicles\soft\noises\crash_vehicle_01", 1.77828, 1, 200};
ArmorCrash1[] = {"A3\sounds_f\Vehicles\soft\noises\crash_vehicle_02", 1.77828, 1, 200};
ArmorCrash2[] = {"A3\sounds_f\Vehicles\soft\noises\crash_vehicle_03", 1.77828, 1, 200};
ArmorCrash3[] = {"A3\sounds_f\Vehicles\soft\noises\crash_vehicle_04", 1.77828, 1, 200};
soundArmorCrash[] = {"ArmorCrash0", 0.25, "ArmorCrash1", 0.25, "ArmorCrash2", 0.25, "ArmorCrash3", 0.25};
class Sounds {
class Idle_ext {
sound[] = {"A3\Sounds_F\vehicles\soft\MRAP_01\MRAP_01_ext_idle", 0.398107, 1, 150};
frequency = "0.95 + ((rpm/ 4500) factor[(800/ 4500),(1400/ 4500)])*0.15";
volume = "engineOn*camPos*(((rpm/ 4500) factor[(600/ 4500),(1100/ 4500)]) * ((rpm/ 4500) factor[(1800/ 4500),(1300/ 4500)]))";
};
class Engine {
sound[] = {"A3\Sounds_F\vehicles\soft\MRAP_01\MRAP_01_ext_low1", db-7, 1, 250};
frequency = "0.9 + ((rpm/ 4500) factor[(1400/ 4500),(2100/ 4500)])*0.2";
volume = "engineOn*camPos*(((rpm/ 4500) factor[(1400/ 4500),(1800/ 4500)]) * ((rpm/ 4500) factor[(2300/ 4500),(2000/ 4500)]))";
};
class Engine1_ext {
sound[] = {"A3\Sounds_F\vehicles\soft\MRAP_01\MRAP_01_ext_low2", 0.562341, 1, 300};
frequency = "0.9 + ((rpm/ 4500) factor[(2100/ 4500),(2800/ 4500)])*0.2";
volume = "engineOn*camPos*(((rpm/ 4500) factor[(1900/ 4500),(2300/ 4500)]) * ((rpm/ 4500) factor[(3000/ 4500),(2500/ 4500)]))";
};
class Engine2_ext {
sound[] = {"A3\Sounds_F\vehicles\soft\MRAP_01\MRAP_01_ext_mid", db-3, 1, 350};
frequency = "0.9 + ((rpm/ 4500) factor[(2800/ 4500),(3600/ 4500)])*0.2";
volume = "engineOn*camPos*(((rpm/ 4500) factor[(2500/ 4500),(3100/ 4500)]) * ((rpm/ 4500) factor[(4500/ 4500),(3700/ 4500)]))";
};
class Engine3_ext {
sound[] = {"A3\Sounds_F\vehicles\soft\MRAP_01\MRAP_01_ext_high", db0, 1, 400};
frequency = "0.95 + ((rpm/ 4500) factor[(3600/ 4500),(4500/ 4500)])*0.1";
volume = "engineOn*camPos*((rpm/ 4500) factor[(3800/ 4500),(4500/ 4500)])";
};
class IdleThrust {
sound[] = {"A3\Sounds_F\vehicles\soft\MRAP_01\MRAP_01_ext_exhaust_idle", 0.562341, 1, 200};
frequency = "0.95 + ((rpm/ 4500) factor[(800/ 4500),(1400/ 4500)])*0.15";
volume = "engineOn*camPos*(0.4+(0.6*(thrust factor[0.1,1])))*(((rpm/ 4500) factor[(600/ 4500),(1100/ 4500)]) * ((rpm/ 4500) factor[(1800/ 4500),(1300/ 4500)]))";
};
class EngineThrust {
sound[] = {"A3\Sounds_F\vehicles\soft\MRAP_01\MRAP_01_ext_exhaust_low1", db-3, 1, 350};
frequency = "0.9 + ((rpm/ 4500) factor[(1400/ 4500),(2100/ 4500)])*0.2";
volume = "engineOn*camPos*(0.4+(0.6*(thrust factor[0.1,1])))*(((rpm/ 4500) factor[(1400/ 4500),(1800/ 4500)]) * ((rpm/ 4500) factor[(2300/ 4500),(2000/ 4500)]))";
};
class Engine1_Thrust_ext {
sound[] = {"A3\Sounds_F\vehicles\soft\MRAP_01\MRAP_01_ext_exhaust_low2", db-1, 1, 400};
frequency = "0.9 + ((rpm/ 4500) factor[(2100/ 4500),(2800/ 4500)])*0.2";
volume = "engineOn*camPos*(0.4+(0.6*(thrust factor[0.1,1])))*(((rpm/ 4500) factor[(1900/ 4500),(2300/ 4500)]) * ((rpm/ 4500) factor[(3000/ 4500),(2500/ 4500)]))";
};
class Engine2_Thrust_ext {
sound[] = {"A3\Sounds_F\vehicles\soft\MRAP_01\MRAP_01_ext_exhaust_mid", db1, 1, 425};
frequency = "0.9 + ((rpm/ 4500) factor[(2800/ 4500),(3600/ 4500)])*0.2";
volume = "engineOn*camPos*(0.4+(0.6*(thrust factor[0.1,1])))*(((rpm/ 4500) factor[(2500/ 4500),(3100/ 4500)]) * ((rpm/ 4500) factor[(4500/ 4500),(3700/ 4500)]))";
};
class Engine3_Thrust_ext {
sound[] = {"A3\Sounds_F\vehicles\soft\MRAP_01\MRAP_01_ext_exhaust_high", db2, 1, 450};
frequency = "0.95 + ((rpm/ 4500) factor[(3600/ 4500),(4500/ 4500)])*0.1";
volume = "engineOn*camPos*(0.4+(0.6*(thrust factor[0.1,1])))*((rpm/ 4500) factor[(3800/ 4500),(4500/ 4500)])";
};
class Idle_int {
sound[] = {"A3\Sounds_F\vehicles\soft\MRAP_01\MRAP_01_int_idle", db-12, 1};
frequency = "0.95 + ((rpm/ 4500) factor[(800/ 4500),(1400/ 4500)])*0.15";
volume = "engineOn*(1-camPos)*(((rpm/ 4500) factor[(600/ 4500),(1100/ 4500)]) * ((rpm/ 4500) factor[(1800/ 4500),(1300/ 4500)]))";
};
class Engine_int {
sound[] = {"A3\Sounds_F\vehicles\soft\MRAP_01\MRAP_01_int_low1", db-10, 1};
frequency = "0.9 + ((rpm/ 4500) factor[(1400/ 4500),(2100/ 4500)])*0.2";
volume = "engineOn*(1-camPos)*(((rpm/ 4500) factor[(1400/ 4500),(1800/ 4500)]) * ((rpm/ 4500) factor[(2300/ 4500),(2000/ 4500)]))";
};
class Engine1_int {
sound[] = {"A3\Sounds_F\vehicles\soft\MRAP_01\MRAP_01_int_low2", 0.398107, 1};
frequency = "0.9 + ((rpm/ 4500) factor[(2100/ 4500),(2800/ 4500)])*0.2";
volume = "engineOn*(1-camPos)*(((rpm/ 4500) factor[(1900/ 4500),(2300/ 4500)]) * ((rpm/ 4500) factor[(3000/ 4500),(2500/ 4500)]))";
};
class Engine2_int {
sound[] = {"A3\Sounds_F\vehicles\soft\MRAP_01\MRAP_01_int_mid", db-6, 1};
frequency = "0.9 + ((rpm/ 4500) factor[(2800/ 4500),(3600/ 4500)])*0.2";
volume = "engineOn*(1-camPos)*(((rpm/ 4500) factor[(2500/ 4500),(3100/ 4500)]) * ((rpm/ 4500) factor[(4500/ 4500),(3700/ 4500)]))";
};
class Engine3_int {
sound[] = {"A3\Sounds_F\vehicles\soft\MRAP_01\MRAP_01_int_high", 0.630957, 1};
frequency = "0.95 + ((rpm/ 4500) factor[(3600/ 4500),(4500/ 4500)])*0.1";
volume = "engineOn*(1-camPos)*((rpm/ 4500) factor[(3800/ 4500),(4500/ 4500)])";
};
class IdleThrust_int {
sound[] = {"A3\Sounds_F\vehicles\soft\MRAP_01\MRAP_01_int_exhaust_idle", db-9, 1};
frequency = "0.95 + ((rpm/ 4500) factor[(800/ 4500),(1400/ 4500)])*0.15";
volume = "engineOn*(1-camPos)*(0.4+(0.6*(thrust factor[0.1,1])))*(((rpm/ 4500) factor[(600/ 4500),(1100/ 4500)]) * ((rpm/ 4500) factor[(1800/ 4500),(1300/ 4500)]))";
};
class EngineThrust_int {
sound[] = {"A3\Sounds_F\vehicles\soft\MRAP_01\MRAP_01_int_exhaust_low1", db-7, 1};
frequency = "0.9 + ((rpm/ 4500) factor[(1400/ 4500),(2100/ 4500)])*0.2";
volume = "engineOn*(1-camPos)*(0.4+(0.6*(thrust factor[0.1,1])))*(((rpm/ 4500) factor[(1400/ 4500),(1800/ 4500)]) * ((rpm/ 4500) factor[(2300/ 4500),(2000/ 4500)]))";
};
class Engine1_Thrust_int {
sound[] = {"A3\Sounds_F\vehicles\soft\MRAP_01\MRAP_01_int_exhaust_low2", 0.562341, 1};
frequency = "0.9 + ((rpm/ 4500) factor[(2100/ 4500),(2800/ 4500)])*0.2";
volume = "engineOn*(1-camPos)*(0.4+(0.6*(thrust factor[0.1,1])))*(((rpm/ 4500) factor[(1900/ 4500),(2300/ 4500)]) * ((rpm/ 4500) factor[(3000/ 4500),(2500/ 4500)]))";
};
class Engine2_Thrust_int {
sound[] = {"A3\Sounds_F\vehicles\soft\MRAP_01\MRAP_01_int_exhaust_mid", db-3, 1};
frequency = "0.9 + ((rpm/ 4500) factor[(2800/ 4500),(3600/ 4500)])*0.2";
volume = "engineOn*(1-camPos)*(0.4+(0.6*(thrust factor[0.1,1])))*(((rpm/ 4500) factor[(2500/ 4500),(3100/ 4500)]) * ((rpm/ 4500) factor[(4500/ 4500),(3700/ 4500)]))";
};
class Engine3_Thrust_int {
sound[] = {"A3\Sounds_F\vehicles\soft\MRAP_01\MRAP_01_int_exhaust_high", db-2, 1};
frequency = "0.95 + ((rpm/ 4500) factor[(3600/ 4500),(4500/ 4500)])*0.1";
volume = "engineOn*(1-camPos)*(0.4+(0.6*(thrust factor[0.1,1])))*((rpm/ 4500) factor[(3800/ 4500),(4500/ 4500)])";
};
class Movement {
sound = "soundEnviron";
frequency = "1";
volume = "0";
};
class TiresRockOut {
sound[] = {"A3\Sounds_F\vehicles\soft\tires\ext_tires_dirt_soft_1", db3, 1.0, 60};
frequency = "1";
volume = "camPos*rock*(speed factor[2, 20])";
};
class TiresSandOut {
sound[] = {"A3\Sounds_F\vehicles\soft\tires\ext-tires-sand1", db3, 1.0, 60};
frequency = "1";
volume = "camPos*sand*(speed factor[2, 20])";
};
class TiresGrassOut {
sound[] = {"A3\Sounds_F\vehicles\soft\tires\ext_tires_dirt_soft_2", db2, 1.0, 60};
frequency = "1";
volume = "camPos*grass*(speed factor[2, 20])";
};
class TiresMudOut {
sound[] = {"A3\Sounds_F\vehicles\soft\tires\ext-tires-mud2", db1, 1.0, 60};
frequency = "1";
volume = "camPos*mud*(speed factor[2, 20])";
};
class TiresGravelOut {
sound[] = {"A3\Sounds_F\vehicles\soft\tires\ext_tires_gravel_1", db2, 1.0, 60};
frequency = "1";
volume = "camPos*gravel*(speed factor[2, 20])";
};
class TiresAsphaltOut {
sound[] = {"A3\Sounds_F\vehicles\soft\tires\ext_tires_asfalt_2", db1, 1.0, 60};
frequency = "1";
volume = "camPos*asphalt*(speed factor[2, 20])";
};
class NoiseOut {
sound[] = {"A3\Sounds_F\vehicles\soft\noises\noise_ext_car_3", db1, 1.0, 90};
frequency = "1";
volume = "camPos*(damper0 max 0.02)*(speed factor[0, 8])";
};
class TiresRockIn {
sound[] = {"A3\Sounds_F\vehicles\soft\tires\int_tires_dirt_soft_1", db-3, 1.0};
frequency = "1";
volume = "(1-camPos)*rock*(speed factor[2, 20])";
};
class TiresSandIn {
sound[] = {"A3\Sounds_F\vehicles\soft\tires\int-tires-sand2", db-3, 1.0};
frequency = "1";
volume = "(1-camPos)*sand*(speed factor[2, 20])";
};
class TiresGrassIn {
sound[] = {"A3\Sounds_F\vehicles\soft\tires\int_tires_dirt_soft_2", db-3, 1.0};
frequency = "1";
volume = "(1-camPos)*grass*(speed factor[2, 20])";
};
class TiresMudIn {
sound[] = {"A3\Sounds_F\vehicles\soft\tires\int-tires-mud2", db-3, 1.0};
frequency = "1";
volume = "(1-camPos)*mud*(speed factor[2, 20])";
};
class TiresGravelIn {
sound[] = {"A3\Sounds_F\vehicles\soft\tires\int_tires_gravel_1", db-3, 1.0};
frequency = "1";
volume = "(1-camPos)*gravel*(speed factor[2, 20])";
};
class TiresAsphaltIn {
sound[] = {"A3\Sounds_F\vehicles\soft\tires\int_tires_asfalt_2", db-3, 1.0};
frequency = "1";
volume = "(1-camPos)*asphalt*(speed factor[2, 20])";
};
class NoiseIn {
sound[] = {"A3\Sounds_F\vehicles\soft\noises\noise_int_car_3", 0.562341, 1.0};
frequency = "1";
volume = "(damper0 max 0.1)*(speed factor[0, 8])*(1-camPos)";
};
class breaking_ext_road {
sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_loop_04", db-3, 1, 80};
frequency = 1;
volume = "engineOn*camPos*asphalt*(LongSlipDrive Factor[-0.15, -0.3])*(Speed Factor[2, 10])";
};
class acceleration_ext_road {
sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_loop_02", db-3, 1, 80};
frequency = 1;
volume = "engineOn*camPos*asphalt*(LongSlipDrive Factor[0.15, 0.3])*(Speed Factor[10, 0])";
};
class turn_left_ext_road {
sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_loop_02", db-3, 1, 80};
frequency = 1;
volume = "engineOn*camPos*asphalt*(latSlipDrive Factor[0.15, 0.3])*(Speed Factor[0, 10])";
};
class turn_right_ext_road {
sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_loop_02", db-3, 1, 80};
frequency = 1;
volume = "engineOn*camPos*asphalt*(latSlipDrive Factor[-0.15, -0.3])*(Speed Factor[0, 10])";
};
class breaking_ext_dirt {
sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_14_dirt_breaking", db-3, 1, 60};
frequency = 1;
volume = "engineOn*camPos*(1-asphalt)*(LongSlipDrive Factor[-0.15, -0.3])*(Speed Factor[2, 10])";
};
class acceleration_ext_dirt {
sound[] = {"A3\Sounds_F\vehicles\soft\noises\acceleration_dirt_ext_1", db-3, 1, 60};
frequency = 1;
volume = "engineOn*camPos*(1-asphalt)*(LongSlipDrive Factor[0.15, 0.3])*(Speed Factor[10, 0])";
};
class turn_left_ext_dirt {
sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_18_dirt", db-3, 1, 60};
frequency = 1;
volume = "engineOn*camPos*(1-asphalt)*(latSlipDrive Factor[0.15, 0.3])*(Speed Factor[0, 10])";
};
class turn_right_ext_dirt {
sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_18_dirt", db-3, 1, 60};
frequency = 1;
volume = "engineOn*camPos*(1-asphalt)*(latSlipDrive Factor[-0.15, -0.3])*(Speed Factor[0, 10])";
};
class breaking_int_road {
sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_loop_04_int", db-10, 1};
frequency = 1;
volume = "engineOn*asphalt*(1-camPos)*(LongSlipDrive Factor[-0.15, -0.3])*(Speed Factor[2, 6])";
};
class acceleration_int_road {
sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_loop_02_int", db-10, 1};
frequency = 1;
volume = "engineOn*asphalt*(1-camPos)*(LongSlipDrive Factor[0.15, 0.3])*(Speed Factor[10, 0])";
};
class turn_left_int_road {
sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_loop_02_int", db-10, 1};
frequency = 1;
volume = "engineOn*asphalt*(1-camPos)*(latSlipDrive Factor[0.15, 0.3])*(Speed Factor[0, 10])";
};
class turn_right_int_road {
sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_loop_02_int", db-10, 1};
frequency = 1;
volume = "engineOn*asphalt*(1-camPos)*(latSlipDrive Factor[-0.15, -0.3])*(Speed Factor[0, 10])";
};
class breaking_int_dirt {
sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_14_dirt_breaking_int", db-10, 1};
frequency = 1;
volume = "engineOn*(1-asphalt)*(1-camPos)*(LongSlipDrive Factor[-0.15, -0.3])*(Speed Factor[2, 6])";
};
class acceleration_int_dirt {
sound[] = {"A3\Sounds_F\vehicles\soft\noises\acceleration_dirt_int_1", db-10, 1};
frequency = 1;
volume = "engineOn*(1-asphalt)*(1-camPos)*(LongSlipDrive Factor[0.15, 0.3])*(Speed Factor[10, 0])";
};
class turn_left_int_dirt {
sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_18_dirt_int", db-10, 1};
frequency = 1;
volume = "engineOn*(1-asphalt)*(1-camPos)*(latSlipDrive Factor[0.15, 0.3])*(Speed Factor[0, 10])";
};
class turn_right_int_dirt {
sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_18_dirt_int", db-10, 1};
frequency = 1;
volume = "engineOn*(1-asphalt)*(1-camPos)*(latSlipDrive Factor[-0.15, -0.3])*(Speed Factor[0, 10])";
};
};
thrustDelay = 0.1;
brakeIdleSpeed = 1.78;
maxSpeed = 90;
fuelCapacity = 94;
wheelCircumference = 3.5168;
antiRollbarForceCoef = 12;
antiRollbarForceLimit = 10;
antiRollbarSpeedMin = 20;
antiRollbarSpeedMax = 50;
idleRpm = 800;
redRpm = 4500;
class complexGearbox
{
GearboxRatios[] = {"R1", -3.182, "N", 0, "D1", 4.182, "D2", 2.318, "D3", 1.85, "D4", 1.65, "D5", 1.45};
TransmissionRatios[] = {"High", 5.539};
gearBoxMode = "auto";
moveOffGear = 1;
driveString = "D";
neutralString = "N";
reverseString = "R";
};
simulation = "carx";
dampersBumpCoef = 6.0;
differentialType = "all_limited";
frontRearSplit = 0.5;
frontBias = 1.3;
rearBias = 1.3;
centreBias = 1.3;
clutchStrength = 20.0;
enginePower = 276;
maxOmega = 471;
peakTorque = 1253;
dampingRateFullThrottle = 0.08;
dampingRateZeroThrottleClutchEngaged = 2.0;
dampingRateZeroThrottleClutchDisengaged = 0.35;
torqueCurve[] = {{0.0, 0.0}, {0.178, 0.5}, {0.25, 0.85}, {0.4, 0.9}, {0.5, 1.0}, {0.725, 0.95}, {0.85, 0.6}, {1.0, 0.3}};
changeGearMinEffectivity[] = {0.95, 0.15, 0.95, 0.95, 0.95, 0.95, 0.95};
switchTime = 0.31;
latency = 1.0;
class Wheels
{
class LF
{
boneName = "wheel_1_1";
steering = 1;
side = "left";
center = "Wheel_1_1_Axis";
boundary = "Wheel_1_1_bound";
width = 0.2;
mass = 150;
MOI = 40;
dampingRate = 0.1;
dampingRateDamaged = 1.0;
dampingRateDestroyed = 1000.0;
maxBrakeTorque = 22500;
maxHandBrakeTorque = 0;
suspTravelDirection[] = {0, -1, 0};
suspForceAppPointOffset = "Wheel_1_1_Axis";
tireForceAppPointOffset = "Wheel_1_1_Axis";
maxCompression = 0.15;
mMaxDroop = 0.15;
sprungMass = 2066;
springStrength = 201234;
springDamperRate = 20600.6;
longitudinalStiffnessPerUnitGravity = 5000;
latStiffX = 25;
latStiffY = 180;
frictionVsSlipGraph[] = {{0, 1}, {0.5, 1}, {1, 1}};
};
class LR : LF
{
boneName = "wheel_1_2";
steering = 0;
center = "Wheel_1_2_Axis";
boundary = "Wheel_1_2_bound";
suspForceAppPointOffset = "Wheel_1_2_Axis";
tireForceAppPointOffset = "Wheel_1_2_Axis";
maxHandBrakeTorque = 275000;
};
class RF : LF
{
boneName = "Wheel_2_1";
center = "Wheel_2_1_Axis";
boundary = "Wheel_2_1_bound";
suspForceAppPointOffset = "Wheel_2_1_Axis";
tireForceAppPointOffset = "Wheel_2_1_Axis";
steering = 1;
side = "right";
};
class RR : RF
{
boneName = "wheel_2_2";
steering = 0;
center = "Wheel_2_2_Axis";
boundary = "Wheel_2_2_bound";
suspForceAppPointOffset = "Wheel_2_2_Axis";
tireForceAppPointOffset = "Wheel_2_2_Axis";
maxHandBrakeTorque = 275000;
};
};
supplyRadius = 5;
transportMaxMagazines = 90;
class TransportMagazines
{
class _xx_30Rnd_65x39_caseless_mag
{
magazine = "30Rnd_65x39_caseless_mag";
count = 16;
};
class _xx_100Rnd_65x39_caseless_mag
{
magazine = "100Rnd_65x39_caseless_mag";
count = 8;
};
class _xx_HandGrenade
{
magazine = "HandGrenade";
count = 10;
};
class _xx_1Rnd_HE_Grenade_shell
{
magazine = "1Rnd_HE_Grenade_shell";
count = 10;
};
class _xx_1Rnd_Smoke_Grenade_shell
{
magazine = "1Rnd_Smoke_Grenade_shell";
count = 4;
};
class _xx_1Rnd_SmokeGreen_Grenade_shell
{
magazine = "1Rnd_SmokeGreen_Grenade_shell";
count = 4;
};
class _xx_1Rnd_SmokeOrange_Grenade_shell
{
magazine = "1Rnd_SmokeOrange_Grenade_shell";
count = 4;
};
class _xx_1Rnd_SmokeBlue_Grenade_shell
{
magazine = "1Rnd_SmokeBlue_Grenade_shell";
count = 4;
};
class _xx_16Rnd_9x21_Mag
{
magazine = "16Rnd_9x21_Mag";
count = 12;
};
class _xx_SmokeShell
{
magazine = "SmokeShell";
count = 4;
};
class _xx_SmokeShellGreen
{
magazine = "SmokeShellGreen";
count = 4;
};
class _xx_SmokeShellOrange
{
magazine = "SmokeShellOrange";
count = 4;
};
class _xx_SmokeShellBlue
{
magazine = "SmokeShellBlue";
count = 4;
};
class _xx_NLAW_F
{
magazine = NLAW_F;
count = 2;
};
};
class TransportItems
{
class _xx_FirstAidKit
{
name = "FirstAidKit";
count = 10;
};
};
class TransportWeapons
{
class _xx_arifle_MX_F
{
weapon = "arifle_MX_F";
count = 2;
};
};
enableGPS = true;
soundServo[] = {"A3\Sounds_F\vehicles\armor\noises\servo_best", db-40, 1.0,10};
radarType = 4;
};
class Dingo_F : Dingo_Base
{
scope = public;
class Turrets {};
};
};
I2RlZmluZSBURWFzdCAwCiNkZWZpbmUgVFdlc3QgMQojZGVmaW5lIFRHdWVycmlsYSAyCiNkZWZpbmUgVENpdmlsaWFuIDMKI2RlZmluZSBUU2lkZVVua25vd24gNAojZGVmaW5lIFRFbmVteSA1CiNkZWZpbmUgVEZyaWVuZGx5IDYKI2RlZmluZSBUTG9naWMgNwojZGVmaW5lIHRydWUgMQojZGVmaW5lIGZhbHNlIDAKI2RlZmluZSBwcml2YXRlIDAKI2RlZmluZSBwcm90ZWN0ZWQgMQojZGVmaW5lIHB1YmxpYyAyCgpjbGFzcyBEZWZhdWx0RXZlbnRoYW5kbGVyczsKCmNsYXNzIENmZ1BhdGNoZXMKewoJY2xhc3MgQXJlc19EaW5nbwoJewoJCXVuaXRzW10gPSB7fTsKCQl3ZWFwb25zW10gPSB7fTsKCQlyZXF1aXJlZFZlcnNpb24gPSAxLjUwOwoKCQlyZXF1aXJlZEFkZG9uc1tdID0geyJBM19Tb2Z0X0YifTsKCX07Cn07CgpjbGFzcyBXZWFwb25GaXJlR3VuOwpjbGFzcyBXZWFwb25DbG91ZHNHdW47CmNsYXNzIFdlYXBvbkZpcmVNR3VuOwpjbGFzcyBXZWFwb25DbG91ZHNNR3VuOwpjbGFzcyBSQ1dTT3B0aWNzOwoKY2xhc3MgQ2ZnVmVoaWNsZXMKewoJY2xhc3MgTGFuZFZlaGljbGU7CS8vIEV4dGVybmFsIGNsYXNzIHJlZmVyZW5jZQoJCgljbGFzcyBDYXIgOiBMYW5kVmVoaWNsZQoJewoJCWNsYXNzIE5ld1R1cnJldDsJLy8gRXh0ZXJuYWwgY2xhc3MgcmVmZXJlbmNlCgl9OwoJCgljbGFzcyBDYXJfRiA6IENhcgoJewoJCWNsYXNzIEFuaW1hdGlvblNvdXJjZXM7CS8vIEV4dGVybmFsIGNsYXNzIHJlZmVyZW5jZQoJCQoJCWNsYXNzIFR1cnJldHMKCQl7CgkJCWNsYXNzIE1haW5UdXJyZXQgOiBOZXdUdXJyZXQge307CgkJfTsKCQkKCQljbGFzcyBIaXRQb2ludHMKCQl7CgkJCWNsYXNzIEhpdExGV2hlZWw7CS8vIEV4dGVybmFsIGNsYXNzIHJlZmVyZW5jZQoJCQljbGFzcyBIaXRMRjJXaGVlbDsJLy8gRXh0ZXJuYWwgY2xhc3MgcmVmZXJlbmNlCgkJCWNsYXNzIEhpdFJGV2hlZWw7CS8vIEV4dGVybmFsIGNsYXNzIHJlZmVyZW5jZQoJCQljbGFzcyBIaXRSRjJXaGVlbDsJLy8gRXh0ZXJuYWwgY2xhc3MgcmVmZXJlbmNlCgkJCWNsYXNzIEhpdEdsYXNzMTsJLy8gRXh0ZXJuYWwgY2xhc3MgcmVmZXJlbmNlCgkJCWNsYXNzIEhpdEdsYXNzMjsJLy8gRXh0ZXJuYWwgY2xhc3MgcmVmZXJlbmNlCgkJCWNsYXNzIEhpdEdsYXNzMzsJLy8gRXh0ZXJuYWwgY2xhc3MgcmVmZXJlbmNlCgkJCWNsYXNzIEhpdEdsYXNzNDsJLy8gRXh0ZXJuYWwgY2xhc3MgcmVmZXJlbmNlCgkJCWNsYXNzIEhpdEdsYXNzNTsJLy8gRXh0ZXJuYWwgY2xhc3MgcmVmZXJlbmNlCgkJfTsKCX07CgoJY2xhc3MgRGluZ29fQmFzZTogQ2FyX0YKCXsKCQltYXBTaXplID0gNTsKCQlhdXRob3IgPSAiQXJlcyBNaWxpdGFyeSBhbmQgQklTIjsKCQlkaXNwbGF5TmFtZSA9ICJEaW5nbzJBMiI7CgkJbmFtZVNvdW5kID0gInZlaF9jYXIiOwoJCXNjb3BlID0gcHJpdmF0ZTsKCQlzaWRlID0gVFdlc3Q7CgkJZmFjdGlvbiA9IEJMVV9GOwoKCQljbGFzcyBMaWJyYXJ5CgkJewoJCQlsaWJUZXh0RGVzYyA9ICIkU1RSX0EzX0NmZ1ZlaGljbGVzX01SQVBfMDFfQmFzZV9MaWJyYXJ5MCI7CgkJfTsKCgkJbW9kZWwgPSAiXERpbmdvXERpbmdvMkEyLnAzZCI7CgkJUGljdHVyZSA9ICJcRGluZ29cZGF0YVxVSVxwaWN0dXJlc1xEaW5nb19QaWN0dXJlLnBhYSI7CgkJSWNvbiA9ICJcRGluZ29cZGF0YVxVSVxpY29uc1xEaW5nb19JY29uLnBhYSI7CgkJdHJhbnNwb3J0TWF4QmFja3BhY2tzID0gNjsKCQl2ZWhpY2xlQ2xhc3MgPSAiQ2FyIjsKCQl0cmFuc3BvcnRTb2xkaWVyID0gNTsKCQljcmV3VnVsbmVyYWJsZSA9IGZhbHNlOwoJCWNyZXdDcmFzaFByb3RlY3Rpb24gPSAwLjE1OwoJCWFybW9yID0gNDA7CgkJY29zdCA9IDEwMDAwMDsKCgkJdGhyZWF0W10gPSB7MC44LCAwLjYsIDAuM307CgoJCW1lbW9yeVBvaW50VHJhY2tGTEwgPSAiVHJhY2tGTEwiOwoJCW1lbW9yeVBvaW50VHJhY2tGTFIgPSAiVHJhY2tGTFIiOwoJCW1lbW9yeVBvaW50VHJhY2tCTEwgPSAiVHJhY2tCTEwiOwoJCW1lbW9yeVBvaW50VHJhY2tCTFIgPSAiVHJhY2tCTFIiOwoJCW1lbW9yeVBvaW50VHJhY2tGUkwgPSAiVHJhY2tGUkwiOwoJCW1lbW9yeVBvaW50VHJhY2tGUlIgPSAiVHJhY2tGUlIiOwoJCW1lbW9yeVBvaW50VHJhY2tCUkwgPSAiVHJhY2tCUkwiOwoJCW1lbW9yeVBvaW50VHJhY2tCUlIgPSAiVHJhY2tCUlIiOwoKCQljbGFzcyBEYW1hZ2UKCQl7CgkJCXRleFtdID0ge307CgkJCW1hdFtdID0KCQkJewkKCQkJCSJBM1xkYXRhX2ZcZ2xhc3NfdmVoX2ludC5ydm1hdCIsCgkJCQkiQTNcZGF0YV9mXEdsYXNzX3ZlaF9kYW1hZ2UucnZtYXQiLAoJCQkJIkEzXGRhdGFfZlxHbGFzc192ZWhfZGFtYWdlLnJ2bWF0IiwKCgkJCQkiQTNcZGF0YV9mXGdsYXNzX3ZlaC5ydm1hdCIsCgkJCQkiQTNcZGF0YV9mXEdsYXNzX3ZlaF9kYW1hZ2UucnZtYXQiLAoJCQkJIkEzXGRhdGFfZlxHbGFzc192ZWhfZGFtYWdlLnJ2bWF0IgoJCQl9OwoJCX07CgoJCWNsYXNzIEV4aGF1c3RzCgkJewoJCQljbGFzcyBFeGhhdXN0MQoJCQl7CgkJCQlwb3NpdGlvbiAJPSAiZXhoYXVzdDFfcG9zIjsKCQkJCWRpcmVjdGlvbiAJPSAiZXhoYXVzdDFfZGlyIjsKCQkJCWVmZmVjdCAJCT0gIkV4aGF1c3RzRWZmZWN0IjsKCQkJfTsKCQl9OwoKCQlIaWRkZW5TZWxlY3Rpb25zW10gPSB7Y2FtbzEsY2FtbzIsY2FtbzN9OwoJCUhpZGRlblNlbGVjdGlvbnNUZXh0dXJlc1tdID0geyJcRGluZ29cZGF0YVxUZXN0VGV4dHVyZS5wYWEiLCAiXERpbmdvXGRhdGFcVGVzdFRleHR1cmUucGFhIiwgIlxEaW5nb1xkYXRhXFRlc3RUZXh0dXJlLnBhYSJ9OwoKCQljbGFzcyBBbmltYXRpb25Tb3VyY2VzOiBBbmltYXRpb25Tb3VyY2VzCgkJewoJCQljbGFzcyBIaXRHbGFzczE7CgoJCQljbGFzcyBIaXRHbGFzczUgOiBIaXRHbGFzczEKCQkJewoJCQkJaGl0cG9pbnQ9IkhpdEdsYXNzNSI7CgkJCX07CgkJfTsKCiAJCWNsYXNzIEhpdFBvaW50czogSGl0UG9pbnRzCgkJewoJCQljbGFzcyBIaXRFbmdpbmUKCQkJewoJCQkJYXJtb3I9MC41OwoJCQkJbWF0ZXJpYWw9LTE7CgkJCQluYW1lPSJlbmdpbmUiOwoJCQkJdmlzdWFsPSIiOwoJCQkJcGFzc1Rocm91Z2g9MTsKCQkJfTsKCgkJCWNsYXNzIEhpdEdsYXNzMSA6IEhpdEdsYXNzMQoJCQl7CgkJCQlhcm1vcj0xOwoJCQl9OwoKCQkJY2xhc3MgSGl0R2xhc3MyIDogSGl0R2xhc3MyCgkJCXsKCQkJCWFybW9yPTE7CgkJCX07CgoJCQljbGFzcyBIaXRHbGFzczMgOiBIaXRHbGFzczMKCQkJewoJCQkJYXJtb3I9MTsKCQkJfTsKCgkJCWNsYXNzIEhpdEdsYXNzNCA6IEhpdEdsYXNzNAoJCQl7CgkJCQlhcm1vcj0xOwoJCQl9OwoKCQkJY2xhc3MgSGl0R2xhc3M1IDogSGl0R2xhc3M0CgkJCXsKCQkJCW5hbWU9ImdsYXNzNSI7CgkJCQl2aXN1YWw9ImdsYXNzNSI7CgkJCX07CgoJCQljbGFzcyBIaXRMRldoZWVsIDogSGl0TEZXaGVlbAoJCQl7CgkJCQlhcm1vciA9IDAuMTI7CgkJCQlleHBsb3Npb25TaGllbGRpbmcgPSAwLjg7CgkJCX07CgkJCQoJCQljbGFzcyBIaXRMRjJXaGVlbCA6IEhpdExGMldoZWVsCgkJCXsKCQkJCWFybW9yID0gMC4xMjsKCQkJCWV4cGxvc2lvblNoaWVsZGluZyA9IDAuODsKCQkJfTsKCQkJCgkJCWNsYXNzIEhpdFJGV2hlZWwgOiBIaXRSRldoZWVsCgkJCXsKCQkJCWFybW9yID0gMC4xMjsKCQkJCWV4cGxvc2lvblNoaWVsZGluZyA9IDAuODsKCQkJfTsKCQkJCgkJCWNsYXNzIEhpdFJGMldoZWVsIDogSGl0UkYyV2hlZWwKCQkJewoJCQkJYXJtb3IgPSAwLjEyOwoJCQkJZXhwbG9zaW9uU2hpZWxkaW5nID0gMC44OwoJCQl9OwoKCQkJY2xhc3MgSGl0RnVlbAoJCQl7CgkJCQlhcm1vcj0wLjE0OwoJCQkJbWF0ZXJpYWw9LTE7CgkJCQluYW1lPSJmdWVsdGFuayI7CgkJCQl2aXN1YWw9IiI7CgkJCQlwYXNzVGhyb3VnaD0xOwoJCQl9OwoJCX07CgoJCXdoZWVsRGFtYWdlVGhyZXNob2xkID0gMC43OwoJCXdoZWVsRGVzdHJveVRocmVzaG9sZCA9IDAuOTk7CgkJd2hlZWxEYW1hZ2VSYWRpdXNDb2VmID0gMC45NTsKCQl3aGVlbERlc3Ryb3lSYWRpdXNDb2VmID0gMC40NTsKCgkJY3JldyA9ICJCX1NvbGRpZXJfRiI7CgkJdHlwaWNhbENhcmdvW10gPSB7IkJfU29sZGllcl9GIiwiQl9Tb2xkaWVyX0YiLCJCX1NvbGRpZXJfRiIsICJCX1NvbGRpZXJfRiIsICJCX1NvbGRpZXJfRiJ9OwoJCWRyaXZlckFjdGlvbiA9ICJkcml2ZXJfTVJBUF8wMSI7CgkJY2FyZ29BY3Rpb25bXSA9IHsicGFzc2VuZ2VyX01SQVBfMDFfZnJvbnQiLCAicGFzc2VuZ2VyX01SQVBfMDFfYmFjayIsICJwYXNzZW5nZXJfZ2VuZXJpYzAxX2ZvbGRoYW5kcyIsICJwYXNzZW5nZXJfZ2VuZXJpYzAxX2ZvbGRoYW5kcyJ9OwoJCWNhcmdvSXNDb0RyaXZlcltdID0ge3RydWUsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2V9OwoJCWdldEluQWN0aW9uID0gIkdldEluTVJBUF8wMSI7CgkJZ2V0T3V0QWN0aW9uID0gIkdldE91dE1SQVBfMDEiOwoJCWNhcmdvR2V0SW5BY3Rpb25bXSA9IHsiR2V0SW5NUkFQXzAxX2NhcmdvIn07CgkJY2FyZ29HZXRPdXRBY3Rpb25bXSA9IHsiR2V0T3V0TVJBUF8wMSJ9OwoJCWNhc3REcml2ZXJTaGFkb3cgPSBmYWxzZTsKCQljb21tYW5kZXJDYW5TZWUgPSAzMTsKCQloaWRlV2VhcG9uc0RyaXZlciA9IHRydWU7CgkJaGlkZVdlYXBvbnNDYXJnbyA9IHRydWU7CgkJZHJpdmVyRG9vciA9ICIiOwoJCWNhcmdvRG9vcnNbXSA9IHt9OwoKCQl0ZXJyYWluQ29lZiA9IDIuMDsKCQl0dXJuQ29lZiA9IDQ7CiAgICAJc3RlZXJBaGVhZFNpbXVsID0gMC40OwoJCXN0ZWVyQWhlYWRQbGFuID0gMC4yOwoJCXByZWRpY3RUdXJuUGxhbiA9IDAuOTsKICAgICAgICBwcmVkaWN0VHVyblNpbXVsID0gMC41OwogICAgICAgIHByZWNpc2lvbiA9IDE1OwoKCQlzbW9rZUxhdW5jaGVyR3JlbmFkZUNvdW50ID0gODsKCQlzbW9rZUxhdW5jaGVyVmVsb2NpdHkgPSAxNDsKCQlzbW9rZUxhdW5jaGVyT25UdXJyZXQgPSAwOwoJCXNtb2tlTGF1bmNoZXJBbmdsZSA9IDM2MDsKCQl3ZWFwb25zW10gPSB7IlRydWNrSG9ybjIifTsKCQltYWdhemluZXNbXSA9IHt9OwoJCWF0dGVudWF0aW9uRWZmZWN0VHlwZSA9ICJDYXJBdHRlbnVhdGlvbiI7CgoJCXNvdW5kR2V0SW5bXSA9IHsiQTNcU291bmRzX0ZcdmVoaWNsZXNcc29mdFxNUkFQXzAxXGdldGluIiwgMC41NjIzNDEsIDF9OwoJCXNvdW5kR2V0T3V0W10gPSB7IkEzXFNvdW5kc19GXHZlaGljbGVzXHNvZnRcTVJBUF8wMVxnZXRvdXQiLCAwLjU2MjM0MSwgMSwgNDB9OwoJCXNvdW5kRGFtbWFnZVtdID0geyIiLCAwLjU2MjM0MSwgMX07CgkJc291bmRFbmdpbmVPbkludFtdID0geyJBM1xTb3VuZHNfRlx2ZWhpY2xlc1xzb2Z0XE1SQVBfMDFcTVJBUF8wMV9pbnRfc3RhcnQiLCAwLjM1NDgxMywgMS4wfTsKCQlzb3VuZEVuZ2luZU9uRXh0W10gPSB7IkEzXFNvdW5kc19GXHZlaGljbGVzXHNvZnRcTVJBUF8wMVxNUkFQXzAxX2V4dF9zdGFydCIsIDEuMCwgMS4wLCAyMDB9OwoJCXNvdW5kRW5naW5lT2ZmSW50W10gPSB7IkEzXFNvdW5kc19GXHZlaGljbGVzXHNvZnRcTVJBUF8wMVxNUkFQXzAxX2ludF9zdG9wIiwgMC4zNTQ4MTMsIDEuMH07CgkJc291bmRFbmdpbmVPZmZFeHRbXSA9IHsiQTNcU291bmRzX0ZcdmVoaWNsZXNcc29mdFxNUkFQXzAxXE1SQVBfMDFfZXh0X3N0b3AiLCAxLjAsIDEuMCwgMjAwfTsKCQlidWlsZENyYXNoMFtdID0geyJBM1xzb3VuZHNfZlxWZWhpY2xlc1xzb2Z0XG5vaXNlc1xjcmFzaF9idWlsZGluZ18wMSIsIDEuNzc4MjgsIDEsIDIwMH07CgkJYnVpbGRDcmFzaDFbXSA9IHsiQTNcc291bmRzX2ZcVmVoaWNsZXNcc29mdFxub2lzZXNcY3Jhc2hfYnVpbGRpbmdfMDIiLCAxLjc3ODI4LCAxLCAyMDB9OwoJCWJ1aWxkQ3Jhc2gyW10gPSB7IkEzXHNvdW5kc19mXFZlaGljbGVzXHNvZnRcbm9pc2VzXGNyYXNoX2J1aWxkaW5nXzAzIiwgMS43NzgyOCwgMSwgMjAwfTsKCQlidWlsZENyYXNoM1tdID0geyJBM1xzb3VuZHNfZlxWZWhpY2xlc1xzb2Z0XG5vaXNlc1xjcmFzaF9idWlsZGluZ18wNCIsIDEuNzc4MjgsIDEsIDIwMH07CgkJc291bmRCdWlsZGluZ0NyYXNoW10gPSB7ImJ1aWxkQ3Jhc2gwIiwgMC4yNSwgImJ1aWxkQ3Jhc2gxIiwgMC4yNSwgImJ1aWxkQ3Jhc2gyIiwgMC4yNSwgImJ1aWxkQ3Jhc2gzIiwgMC4yNX07CgkJV29vZENyYXNoMFtdID0geyJBM1xzb3VuZHNfZlxWZWhpY2xlc1xzb2Z0XG5vaXNlc1xjcmFzaF9taXhfd29vZF8wMSIsIDEuNzc4MjgsIDEsIDIwMH07CgkJV29vZENyYXNoMVtdID0geyJBM1xzb3VuZHNfZlxWZWhpY2xlc1xzb2Z0XG5vaXNlc1xjcmFzaF9taXhfd29vZF8wMiIsIDEuNzc4MjgsIDEsIDIwMH07CgkJV29vZENyYXNoMltdID0geyJBM1xzb3VuZHNfZlxWZWhpY2xlc1xzb2Z0XG5vaXNlc1xjcmFzaF9taXhfd29vZF8wMyIsIDEuNzc4MjgsIDEsIDIwMH07CgkJV29vZENyYXNoM1tdID0geyJBM1xzb3VuZHNfZlxWZWhpY2xlc1xzb2Z0XG5vaXNlc1xjcmFzaF9taXhfd29vZF8wNCIsIDEuNzc4MjgsIDEsIDIwMH07CgkJV29vZENyYXNoNFtdID0geyJBM1xzb3VuZHNfZlxWZWhpY2xlc1xzb2Z0XG5vaXNlc1xjcmFzaF9taXhfd29vZF8wNSIsIDEuNzc4MjgsIDEsIDIwMH07CgkJV29vZENyYXNoNVtdID0geyJBM1xzb3VuZHNfZlxWZWhpY2xlc1xzb2Z0XG5vaXNlc1xjcmFzaF9taXhfd29vZF8wNiIsIDEuNzc4MjgsIDEsIDIwMH07CgkJc291bmRXb29kQ3Jhc2hbXSA9IHsid29vZENyYXNoMCIsIDAuMTY2LCAid29vZENyYXNoMSIsIDAuMTY2LCAid29vZENyYXNoMiIsIDAuMTY2LCAid29vZENyYXNoMyIsIDAuMTY2LCAid29vZENyYXNoNCIsIDAuMTY2LCAid29vZENyYXNoNSIsIDAuMTY2fTsKCQlBcm1vckNyYXNoMFtdID0geyJBM1xzb3VuZHNfZlxWZWhpY2xlc1xzb2Z0XG5vaXNlc1xjcmFzaF92ZWhpY2xlXzAxIiwgMS43NzgyOCwgMSwgMjAwfTsKCQlBcm1vckNyYXNoMVtdID0geyJBM1xzb3VuZHNfZlxWZWhpY2xlc1xzb2Z0XG5vaXNlc1xjcmFzaF92ZWhpY2xlXzAyIiwgMS43NzgyOCwgMSwgMjAwfTsKCQlBcm1vckNyYXNoMltdID0geyJBM1xzb3VuZHNfZlxWZWhpY2xlc1xzb2Z0XG5vaXNlc1xjcmFzaF92ZWhpY2xlXzAzIiwgMS43NzgyOCwgMSwgMjAwfTsKCQlBcm1vckNyYXNoM1tdID0geyJBM1xzb3VuZHNfZlxWZWhpY2xlc1xzb2Z0XG5vaXNlc1xjcmFzaF92ZWhpY2xlXzA0IiwgMS43NzgyOCwgMSwgMjAwfTsKCQlzb3VuZEFybW9yQ3Jhc2hbXSA9IHsiQXJtb3JDcmFzaDAiLCAwLjI1LCAiQXJtb3JDcmFzaDEiLCAwLjI1LCAiQXJtb3JDcmFzaDIiLCAwLjI1LCAiQXJtb3JDcmFzaDMiLCAwLjI1fTsKCgkJY2xhc3MgU291bmRzIHsKCQkJY2xhc3MgSWRsZV9leHQgewoJCQkJc291bmRbXSA9IHsiQTNcU291bmRzX0ZcdmVoaWNsZXNcc29mdFxNUkFQXzAxXE1SQVBfMDFfZXh0X2lkbGUiLCAwLjM5ODEwNywgMSwgMTUwfTsKCQkJCWZyZXF1ZW5jeSA9ICIwLjk1CSsJKChycG0vCTQ1MDApIGZhY3RvclsoODAwLwk0NTAwKSwoMTQwMC8JNDUwMCldKSowLjE1IjsKCQkJCXZvbHVtZSA9ICJlbmdpbmVPbipjYW1Qb3MqKCgocnBtLwk0NTAwKSBmYWN0b3JbKDYwMC8JNDUwMCksKDExMDAvCTQ1MDApXSkJKgkoKHJwbS8JNDUwMCkgZmFjdG9yWygxODAwLwk0NTAwKSwoMTMwMC8JNDUwMCldKSkiOwoJCQl9OwoJCQkKCQkJY2xhc3MgRW5naW5lIHsKCQkJCXNvdW5kW10gPSB7IkEzXFNvdW5kc19GXHZlaGljbGVzXHNvZnRcTVJBUF8wMVxNUkFQXzAxX2V4dF9sb3cxIiwgZGItNywgMSwgMjUwfTsKCQkJCWZyZXF1ZW5jeSA9ICIwLjkJKwkoKHJwbS8JNDUwMCkgZmFjdG9yWygxNDAwLwk0NTAwKSwoMjEwMC8JNDUwMCldKSowLjIiOwoJCQkJdm9sdW1lID0gImVuZ2luZU9uKmNhbVBvcyooKChycG0vCTQ1MDApIGZhY3RvclsoMTQwMC8JNDUwMCksKDE4MDAvCTQ1MDApXSkJKgkoKHJwbS8JNDUwMCkgZmFjdG9yWygyMzAwLwk0NTAwKSwoMjAwMC8JNDUwMCldKSkiOwoJCQl9OwoJCQkKCQkJY2xhc3MgRW5naW5lMV9leHQgewoJCQkJc291bmRbXSA9IHsiQTNcU291bmRzX0ZcdmVoaWNsZXNcc29mdFxNUkFQXzAxXE1SQVBfMDFfZXh0X2xvdzIiLCAwLjU2MjM0MSwgMSwgMzAwfTsKCQkJCWZyZXF1ZW5jeSA9ICIwLjkJKwkJKChycG0vCTQ1MDApIGZhY3RvclsoMjEwMC8JNDUwMCksKDI4MDAvCTQ1MDApXSkqMC4yIjsKCQkJCXZvbHVtZSA9ICJlbmdpbmVPbipjYW1Qb3MqKCgocnBtLwk0NTAwKSBmYWN0b3JbKDE5MDAvCTQ1MDApLCgyMzAwLwk0NTAwKV0pCSoJKChycG0vCTQ1MDApIGZhY3RvclsoMzAwMC8JNDUwMCksKDI1MDAvCTQ1MDApXSkpIjsKCQkJfTsKCQkJCgkJCWNsYXNzIEVuZ2luZTJfZXh0IHsKCQkJCXNvdW5kW10gPSB7IkEzXFNvdW5kc19GXHZlaGljbGVzXHNvZnRcTVJBUF8wMVxNUkFQXzAxX2V4dF9taWQiLCBkYi0zLCAxLCAzNTB9OwoJCQkJZnJlcXVlbmN5ID0gIjAuOQkrCSgocnBtLwk0NTAwKSBmYWN0b3JbKDI4MDAvCTQ1MDApLCgzNjAwLwk0NTAwKV0pKjAuMiI7CgkJCQl2b2x1bWUgPSAiZW5naW5lT24qY2FtUG9zKigoKHJwbS8JNDUwMCkgZmFjdG9yWygyNTAwLwk0NTAwKSwoMzEwMC8JNDUwMCldKQkqCSgocnBtLwk0NTAwKSBmYWN0b3JbKDQ1MDAvCTQ1MDApLCgzNzAwLwk0NTAwKV0pKSI7CgkJCX07CgkJCQoJCQljbGFzcyBFbmdpbmUzX2V4dCB7CgkJCQlzb3VuZFtdID0geyJBM1xTb3VuZHNfRlx2ZWhpY2xlc1xzb2Z0XE1SQVBfMDFcTVJBUF8wMV9leHRfaGlnaCIsIGRiMCwgMSwgNDAwfTsKCQkJCWZyZXF1ZW5jeSA9ICIwLjk1CSsJKChycG0vCTQ1MDApIGZhY3RvclsoMzYwMC8JNDUwMCksKDQ1MDAvCTQ1MDApXSkqMC4xIjsKCQkJCXZvbHVtZSA9ICJlbmdpbmVPbipjYW1Qb3MqKChycG0vCTQ1MDApIGZhY3RvclsoMzgwMC8JNDUwMCksKDQ1MDAvCTQ1MDApXSkiOwoJCQl9OwoJCQkKCQkJY2xhc3MgSWRsZVRocnVzdCB7CgkJCQlzb3VuZFtdID0geyJBM1xTb3VuZHNfRlx2ZWhpY2xlc1xzb2Z0XE1SQVBfMDFcTVJBUF8wMV9leHRfZXhoYXVzdF9pZGxlIiwgMC41NjIzNDEsIDEsIDIwMH07CgkJCQlmcmVxdWVuY3kgPSAiMC45NQkrCSgocnBtLwk0NTAwKSBmYWN0b3JbKDgwMC8JNDUwMCksKDE0MDAvCTQ1MDApXSkqMC4xNSI7CgkJCQl2b2x1bWUgPSAiZW5naW5lT24qY2FtUG9zKigwLjQrKDAuNioodGhydXN0IGZhY3RvclswLjEsMV0pKSkqKCgocnBtLwk0NTAwKSBmYWN0b3JbKDYwMC8JNDUwMCksKDExMDAvCTQ1MDApXSkJKgkoKHJwbS8JNDUwMCkgZmFjdG9yWygxODAwLwk0NTAwKSwoMTMwMC8JNDUwMCldKSkiOwoJCQl9OwoJCQkKCQkJY2xhc3MgRW5naW5lVGhydXN0IHsKCQkJCXNvdW5kW10gPSB7IkEzXFNvdW5kc19GXHZlaGljbGVzXHNvZnRcTVJBUF8wMVxNUkFQXzAxX2V4dF9leGhhdXN0X2xvdzEiLCBkYi0zLCAxLCAzNTB9OwoJCQkJZnJlcXVlbmN5ID0gIjAuOQkrCSgocnBtLwk0NTAwKSBmYWN0b3JbKDE0MDAvCTQ1MDApLCgyMTAwLwk0NTAwKV0pKjAuMiI7CgkJCQl2b2x1bWUgPSAiZW5naW5lT24qY2FtUG9zKigwLjQrKDAuNioodGhydXN0IGZhY3RvclswLjEsMV0pKSkqKCgocnBtLwk0NTAwKSBmYWN0b3JbKDE0MDAvCTQ1MDApLCgxODAwLwk0NTAwKV0pCSoJKChycG0vCTQ1MDApIGZhY3RvclsoMjMwMC8JNDUwMCksKDIwMDAvCTQ1MDApXSkpIjsKCQkJfTsKCQkJCgkJCWNsYXNzIEVuZ2luZTFfVGhydXN0X2V4dCB7CgkJCQlzb3VuZFtdID0geyJBM1xTb3VuZHNfRlx2ZWhpY2xlc1xzb2Z0XE1SQVBfMDFcTVJBUF8wMV9leHRfZXhoYXVzdF9sb3cyIiwgZGItMSwgMSwgNDAwfTsKCQkJCWZyZXF1ZW5jeSA9ICIwLjkJKwkJKChycG0vCTQ1MDApIGZhY3RvclsoMjEwMC8JNDUwMCksKDI4MDAvCTQ1MDApXSkqMC4yIjsKCQkJCXZvbHVtZSA9ICJlbmdpbmVPbipjYW1Qb3MqKDAuNCsoMC42Kih0aHJ1c3QgZmFjdG9yWzAuMSwxXSkpKSooKChycG0vCTQ1MDApIGZhY3RvclsoMTkwMC8JNDUwMCksKDIzMDAvCTQ1MDApXSkJKgkoKHJwbS8JNDUwMCkgZmFjdG9yWygzMDAwLwk0NTAwKSwoMjUwMC8JNDUwMCldKSkiOwoJCQl9OwoJCQkKCQkJY2xhc3MgRW5naW5lMl9UaHJ1c3RfZXh0IHsKCQkJCXNvdW5kW10gPSB7IkEzXFNvdW5kc19GXHZlaGljbGVzXHNvZnRcTVJBUF8wMVxNUkFQXzAxX2V4dF9leGhhdXN0X21pZCIsIGRiMSwgMSwgNDI1fTsKCQkJCWZyZXF1ZW5jeSA9ICIwLjkJKwkoKHJwbS8JNDUwMCkgZmFjdG9yWygyODAwLwk0NTAwKSwoMzYwMC8JNDUwMCldKSowLjIiOwoJCQkJdm9sdW1lID0gImVuZ2luZU9uKmNhbVBvcyooMC40KygwLjYqKHRocnVzdCBmYWN0b3JbMC4xLDFdKSkpKigoKHJwbS8JNDUwMCkgZmFjdG9yWygyNTAwLwk0NTAwKSwoMzEwMC8JNDUwMCldKQkqCSgocnBtLwk0NTAwKSBmYWN0b3JbKDQ1MDAvCTQ1MDApLCgzNzAwLwk0NTAwKV0pKSI7CgkJCX07CgkJCQoJCQljbGFzcyBFbmdpbmUzX1RocnVzdF9leHQgewoJCQkJc291bmRbXSA9IHsiQTNcU291bmRzX0ZcdmVoaWNsZXNcc29mdFxNUkFQXzAxXE1SQVBfMDFfZXh0X2V4aGF1c3RfaGlnaCIsIGRiMiwgMSwgNDUwfTsKCQkJCWZyZXF1ZW5jeSA9ICIwLjk1CSsJKChycG0vCTQ1MDApIGZhY3RvclsoMzYwMC8JNDUwMCksKDQ1MDAvCTQ1MDApXSkqMC4xIjsKCQkJCXZvbHVtZSA9ICJlbmdpbmVPbipjYW1Qb3MqKDAuNCsoMC42Kih0aHJ1c3QgZmFjdG9yWzAuMSwxXSkpKSooKHJwbS8JNDUwMCkgZmFjdG9yWygzODAwLwk0NTAwKSwoNDUwMC8JNDUwMCldKSI7CgkJCX07CgkJCQoJCQljbGFzcyBJZGxlX2ludCB7CgkJCQlzb3VuZFtdID0geyJBM1xTb3VuZHNfRlx2ZWhpY2xlc1xzb2Z0XE1SQVBfMDFcTVJBUF8wMV9pbnRfaWRsZSIsIGRiLTEyLCAxfTsKCQkJCWZyZXF1ZW5jeSA9ICIwLjk1CSsJKChycG0vCTQ1MDApIGZhY3RvclsoODAwLwk0NTAwKSwoMTQwMC8JNDUwMCldKSowLjE1IjsKCQkJCXZvbHVtZSA9ICJlbmdpbmVPbiooMS1jYW1Qb3MpKigoKHJwbS8JNDUwMCkgZmFjdG9yWyg2MDAvCTQ1MDApLCgxMTAwLwk0NTAwKV0pCSoJKChycG0vCTQ1MDApIGZhY3RvclsoMTgwMC8JNDUwMCksKDEzMDAvCTQ1MDApXSkpIjsKCQkJfTsKCQkJCgkJCWNsYXNzIEVuZ2luZV9pbnQgewoJCQkJc291bmRbXSA9IHsiQTNcU291bmRzX0ZcdmVoaWNsZXNcc29mdFxNUkFQXzAxXE1SQVBfMDFfaW50X2xvdzEiLCBkYi0xMCwgMX07CgkJCQlmcmVxdWVuY3kgPSAiMC45CSsJKChycG0vCTQ1MDApIGZhY3RvclsoMTQwMC8JNDUwMCksKDIxMDAvCTQ1MDApXSkqMC4yIjsKCQkJCXZvbHVtZSA9ICJlbmdpbmVPbiooMS1jYW1Qb3MpKigoKHJwbS8JNDUwMCkgZmFjdG9yWygxNDAwLwk0NTAwKSwoMTgwMC8JNDUwMCldKQkqCSgocnBtLwk0NTAwKSBmYWN0b3JbKDIzMDAvCTQ1MDApLCgyMDAwLwk0NTAwKV0pKSI7CgkJCX07CgkJCQoJCQljbGFzcyBFbmdpbmUxX2ludCB7CgkJCQlzb3VuZFtdID0geyJBM1xTb3VuZHNfRlx2ZWhpY2xlc1xzb2Z0XE1SQVBfMDFcTVJBUF8wMV9pbnRfbG93MiIsIDAuMzk4MTA3LCAxfTsKCQkJCWZyZXF1ZW5jeSA9ICIwLjkJKwkJKChycG0vCTQ1MDApIGZhY3RvclsoMjEwMC8JNDUwMCksKDI4MDAvCTQ1MDApXSkqMC4yIjsKCQkJCXZvbHVtZSA9ICJlbmdpbmVPbiooMS1jYW1Qb3MpKigoKHJwbS8JNDUwMCkgZmFjdG9yWygxOTAwLwk0NTAwKSwoMjMwMC8JNDUwMCldKQkqCSgocnBtLwk0NTAwKSBmYWN0b3JbKDMwMDAvCTQ1MDApLCgyNTAwLwk0NTAwKV0pKSI7CgkJCX07CgkJCQoJCQljbGFzcyBFbmdpbmUyX2ludCB7CgkJCQlzb3VuZFtdID0geyJBM1xTb3VuZHNfRlx2ZWhpY2xlc1xzb2Z0XE1SQVBfMDFcTVJBUF8wMV9pbnRfbWlkIiwgZGItNiwgMX07CgkJCQlmcmVxdWVuY3kgPSAiMC45CSsJKChycG0vCTQ1MDApIGZhY3RvclsoMjgwMC8JNDUwMCksKDM2MDAvCTQ1MDApXSkqMC4yIjsKCQkJCXZvbHVtZSA9ICJlbmdpbmVPbiooMS1jYW1Qb3MpKigoKHJwbS8JNDUwMCkgZmFjdG9yWygyNTAwLwk0NTAwKSwoMzEwMC8JNDUwMCldKQkqCSgocnBtLwk0NTAwKSBmYWN0b3JbKDQ1MDAvCTQ1MDApLCgzNzAwLwk0NTAwKV0pKSI7CgkJCX07CgkJCQoJCQljbGFzcyBFbmdpbmUzX2ludCB7CgkJCQlzb3VuZFtdID0geyJBM1xTb3VuZHNfRlx2ZWhpY2xlc1xzb2Z0XE1SQVBfMDFcTVJBUF8wMV9pbnRfaGlnaCIsIDAuNjMwOTU3LCAxfTsKCQkJCWZyZXF1ZW5jeSA9ICIwLjk1CSsJKChycG0vCTQ1MDApIGZhY3RvclsoMzYwMC8JNDUwMCksKDQ1MDAvCTQ1MDApXSkqMC4xIjsKCQkJCXZvbHVtZSA9ICJlbmdpbmVPbiooMS1jYW1Qb3MpKigocnBtLwk0NTAwKSBmYWN0b3JbKDM4MDAvCTQ1MDApLCg0NTAwLwk0NTAwKV0pIjsKCQkJfTsKCQkJCgkJCWNsYXNzIElkbGVUaHJ1c3RfaW50IHsKCQkJCXNvdW5kW10gPSB7IkEzXFNvdW5kc19GXHZlaGljbGVzXHNvZnRcTVJBUF8wMVxNUkFQXzAxX2ludF9leGhhdXN0X2lkbGUiLCBkYi05LCAxfTsKCQkJCWZyZXF1ZW5jeSA9ICIwLjk1CSsJKChycG0vCTQ1MDApIGZhY3RvclsoODAwLwk0NTAwKSwoMTQwMC8JNDUwMCldKSowLjE1IjsKCQkJCXZvbHVtZSA9ICJlbmdpbmVPbiooMS1jYW1Qb3MpKigwLjQrKDAuNioodGhydXN0IGZhY3RvclswLjEsMV0pKSkqKCgocnBtLwk0NTAwKSBmYWN0b3JbKDYwMC8JNDUwMCksKDExMDAvCTQ1MDApXSkJKgkoKHJwbS8JNDUwMCkgZmFjdG9yWygxODAwLwk0NTAwKSwoMTMwMC8JNDUwMCldKSkiOwoJCQl9OwoJCQkKCQkJY2xhc3MgRW5naW5lVGhydXN0X2ludCB7CgkJCQlzb3VuZFtdID0geyJBM1xTb3VuZHNfRlx2ZWhpY2xlc1xzb2Z0XE1SQVBfMDFcTVJBUF8wMV9pbnRfZXhoYXVzdF9sb3cxIiwgZGItNywgMX07CgkJCQlmcmVxdWVuY3kgPSAiMC45CSsJKChycG0vCTQ1MDApIGZhY3RvclsoMTQwMC8JNDUwMCksKDIxMDAvCTQ1MDApXSkqMC4yIjsKCQkJCXZvbHVtZSA9ICJlbmdpbmVPbiooMS1jYW1Qb3MpKigwLjQrKDAuNioodGhydXN0IGZhY3RvclswLjEsMV0pKSkqKCgocnBtLwk0NTAwKSBmYWN0b3JbKDE0MDAvCTQ1MDApLCgxODAwLwk0NTAwKV0pCSoJKChycG0vCTQ1MDApIGZhY3RvclsoMjMwMC8JNDUwMCksKDIwMDAvCTQ1MDApXSkpIjsKCQkJfTsKCQkJCgkJCWNsYXNzIEVuZ2luZTFfVGhydXN0X2ludCB7CgkJCQlzb3VuZFtdID0geyJBM1xTb3VuZHNfRlx2ZWhpY2xlc1xzb2Z0XE1SQVBfMDFcTVJBUF8wMV9pbnRfZXhoYXVzdF9sb3cyIiwgMC41NjIzNDEsIDF9OwoJCQkJZnJlcXVlbmN5ID0gIjAuOQkrCQkoKHJwbS8JNDUwMCkgZmFjdG9yWygyMTAwLwk0NTAwKSwoMjgwMC8JNDUwMCldKSowLjIiOwoJCQkJdm9sdW1lID0gImVuZ2luZU9uKigxLWNhbVBvcykqKDAuNCsoMC42Kih0aHJ1c3QgZmFjdG9yWzAuMSwxXSkpKSooKChycG0vCTQ1MDApIGZhY3RvclsoMTkwMC8JNDUwMCksKDIzMDAvCTQ1MDApXSkJKgkoKHJwbS8JNDUwMCkgZmFjdG9yWygzMDAwLwk0NTAwKSwoMjUwMC8JNDUwMCldKSkiOwoJCQl9OwoJCQkKCQkJY2xhc3MgRW5naW5lMl9UaHJ1c3RfaW50IHsKCQkJCXNvdW5kW10gPSB7IkEzXFNvdW5kc19GXHZlaGljbGVzXHNvZnRcTVJBUF8wMVxNUkFQXzAxX2ludF9leGhhdXN0X21pZCIsIGRiLTMsIDF9OwoJCQkJZnJlcXVlbmN5ID0gIjAuOQkrCSgocnBtLwk0NTAwKSBmYWN0b3JbKDI4MDAvCTQ1MDApLCgzNjAwLwk0NTAwKV0pKjAuMiI7CgkJCQl2b2x1bWUgPSAiZW5naW5lT24qKDEtY2FtUG9zKSooMC40KygwLjYqKHRocnVzdCBmYWN0b3JbMC4xLDFdKSkpKigoKHJwbS8JNDUwMCkgZmFjdG9yWygyNTAwLwk0NTAwKSwoMzEwMC8JNDUwMCldKQkqCSgocnBtLwk0NTAwKSBmYWN0b3JbKDQ1MDAvCTQ1MDApLCgzNzAwLwk0NTAwKV0pKSI7CgkJCX07CgkJCQoJCQljbGFzcyBFbmdpbmUzX1RocnVzdF9pbnQgewoJCQkJc291bmRbXSA9IHsiQTNcU291bmRzX0ZcdmVoaWNsZXNcc29mdFxNUkFQXzAxXE1SQVBfMDFfaW50X2V4aGF1c3RfaGlnaCIsIGRiLTIsIDF9OwoJCQkJZnJlcXVlbmN5ID0gIjAuOTUJKwkoKHJwbS8JNDUwMCkgZmFjdG9yWygzNjAwLwk0NTAwKSwoNDUwMC8JNDUwMCldKSowLjEiOwoJCQkJdm9sdW1lID0gImVuZ2luZU9uKigxLWNhbVBvcykqKDAuNCsoMC42Kih0aHJ1c3QgZmFjdG9yWzAuMSwxXSkpKSooKHJwbS8JNDUwMCkgZmFjdG9yWygzODAwLwk0NTAwKSwoNDUwMC8JNDUwMCldKSI7CgkJCX07CgkJCQoJCQljbGFzcyBNb3ZlbWVudCB7CgkJCQlzb3VuZCA9ICJzb3VuZEVudmlyb24iOwoJCQkJZnJlcXVlbmN5ID0gIjEiOwoJCQkJdm9sdW1lID0gIjAiOwoJCQl9OwoJCQkKCQkJY2xhc3MgVGlyZXNSb2NrT3V0IHsKCQkJCXNvdW5kW10gPSB7IkEzXFNvdW5kc19GXHZlaGljbGVzXHNvZnRcdGlyZXNcZXh0X3RpcmVzX2RpcnRfc29mdF8xIiwgZGIzLCAxLjAsIDYwfTsKCQkJCWZyZXF1ZW5jeSA9ICIxIjsKCQkJCXZvbHVtZSA9ICJjYW1Qb3Mqcm9jayooc3BlZWQgZmFjdG9yWzIsIDIwXSkiOwoJCQl9OwoJCQkKCQkJY2xhc3MgVGlyZXNTYW5kT3V0IHsKCQkJCXNvdW5kW10gPSB7IkEzXFNvdW5kc19GXHZlaGljbGVzXHNvZnRcdGlyZXNcZXh0LXRpcmVzLXNhbmQxIiwgZGIzLCAxLjAsIDYwfTsKCQkJCWZyZXF1ZW5jeSA9ICIxIjsKCQkJCXZvbHVtZSA9ICJjYW1Qb3Mqc2FuZCooc3BlZWQgZmFjdG9yWzIsIDIwXSkiOwoJCQl9OwoJCQkKCQkJY2xhc3MgVGlyZXNHcmFzc091dCB7CgkJCQlzb3VuZFtdID0geyJBM1xTb3VuZHNfRlx2ZWhpY2xlc1xzb2Z0XHRpcmVzXGV4dF90aXJlc19kaXJ0X3NvZnRfMiIsIGRiMiwgMS4wLCA2MH07CgkJCQlmcmVxdWVuY3kgPSAiMSI7CgkJCQl2b2x1bWUgPSAiY2FtUG9zKmdyYXNzKihzcGVlZCBmYWN0b3JbMiwgMjBdKSI7CgkJCX07CgkJCQoJCQljbGFzcyBUaXJlc011ZE91dCB7CgkJCQlzb3VuZFtdID0geyJBM1xTb3VuZHNfRlx2ZWhpY2xlc1xzb2Z0XHRpcmVzXGV4dC10aXJlcy1tdWQyIiwgZGIxLCAxLjAsIDYwfTsKCQkJCWZyZXF1ZW5jeSA9ICIxIjsKCQkJCXZvbHVtZSA9ICJjYW1Qb3MqbXVkKihzcGVlZCBmYWN0b3JbMiwgMjBdKSI7CgkJCX07CgkJCQoJCQljbGFzcyBUaXJlc0dyYXZlbE91dCB7CgkJCQlzb3VuZFtdID0geyJBM1xTb3VuZHNfRlx2ZWhpY2xlc1xzb2Z0XHRpcmVzXGV4dF90aXJlc19ncmF2ZWxfMSIsIGRiMiwgMS4wLCA2MH07CgkJCQlmcmVxdWVuY3kgPSAiMSI7CgkJCQl2b2x1bWUgPSAiY2FtUG9zKmdyYXZlbCooc3BlZWQgZmFjdG9yWzIsIDIwXSkiOwoJCQl9OwoJCQkKCQkJY2xhc3MgVGlyZXNBc3BoYWx0T3V0IHsKCQkJCXNvdW5kW10gPSB7IkEzXFNvdW5kc19GXHZlaGljbGVzXHNvZnRcdGlyZXNcZXh0X3RpcmVzX2FzZmFsdF8yIiwgZGIxLCAxLjAsIDYwfTsKCQkJCWZyZXF1ZW5jeSA9ICIxIjsKCQkJCXZvbHVtZSA9ICJjYW1Qb3MqYXNwaGFsdCooc3BlZWQgZmFjdG9yWzIsIDIwXSkiOwoJCQl9OwoJCQkKCQkJY2xhc3MgTm9pc2VPdXQgewoJCQkJc291bmRbXSA9IHsiQTNcU291bmRzX0ZcdmVoaWNsZXNcc29mdFxub2lzZXNcbm9pc2VfZXh0X2Nhcl8zIiwgZGIxLCAxLjAsIDkwfTsKCQkJCWZyZXF1ZW5jeSA9ICIxIjsKCQkJCXZvbHVtZSA9ICJjYW1Qb3MqKGRhbXBlcjAgbWF4IDAuMDIpKihzcGVlZCBmYWN0b3JbMCwgOF0pIjsKCQkJfTsKCQkJCgkJCWNsYXNzIFRpcmVzUm9ja0luIHsKCQkJCXNvdW5kW10gPSB7IkEzXFNvdW5kc19GXHZlaGljbGVzXHNvZnRcdGlyZXNcaW50X3RpcmVzX2RpcnRfc29mdF8xIiwgZGItMywgMS4wfTsKCQkJCWZyZXF1ZW5jeSA9ICIxIjsKCQkJCXZvbHVtZSA9ICIoMS1jYW1Qb3MpKnJvY2sqKHNwZWVkIGZhY3RvclsyLCAyMF0pIjsKCQkJfTsKCQkJCgkJCWNsYXNzIFRpcmVzU2FuZEluIHsKCQkJCXNvdW5kW10gPSB7IkEzXFNvdW5kc19GXHZlaGljbGVzXHNvZnRcdGlyZXNcaW50LXRpcmVzLXNhbmQyIiwgZGItMywgMS4wfTsKCQkJCWZyZXF1ZW5jeSA9ICIxIjsKCQkJCXZvbHVtZSA9ICIoMS1jYW1Qb3MpKnNhbmQqKHNwZWVkIGZhY3RvclsyLCAyMF0pIjsKCQkJfTsKCQkJCgkJCWNsYXNzIFRpcmVzR3Jhc3NJbiB7CgkJCQlzb3VuZFtdID0geyJBM1xTb3VuZHNfRlx2ZWhpY2xlc1xzb2Z0XHRpcmVzXGludF90aXJlc19kaXJ0X3NvZnRfMiIsIGRiLTMsIDEuMH07CgkJCQlmcmVxdWVuY3kgPSAiMSI7CgkJCQl2b2x1bWUgPSAiKDEtY2FtUG9zKSpncmFzcyooc3BlZWQgZmFjdG9yWzIsIDIwXSkiOwoJCQl9OwoJCQkKCQkJY2xhc3MgVGlyZXNNdWRJbiB7CgkJCQlzb3VuZFtdID0geyJBM1xTb3VuZHNfRlx2ZWhpY2xlc1xzb2Z0XHRpcmVzXGludC10aXJlcy1tdWQyIiwgZGItMywgMS4wfTsKCQkJCWZyZXF1ZW5jeSA9ICIxIjsKCQkJCXZvbHVtZSA9ICIoMS1jYW1Qb3MpKm11ZCooc3BlZWQgZmFjdG9yWzIsIDIwXSkiOwoJCQl9OwoJCQkKCQkJY2xhc3MgVGlyZXNHcmF2ZWxJbiB7CgkJCQlzb3VuZFtdID0geyJBM1xTb3VuZHNfRlx2ZWhpY2xlc1xzb2Z0XHRpcmVzXGludF90aXJlc19ncmF2ZWxfMSIsIGRiLTMsIDEuMH07CgkJCQlmcmVxdWVuY3kgPSAiMSI7CgkJCQl2b2x1bWUgPSAiKDEtY2FtUG9zKSpncmF2ZWwqKHNwZWVkIGZhY3RvclsyLCAyMF0pIjsKCQkJfTsKCQkJCgkJCWNsYXNzIFRpcmVzQXNwaGFsdEluIHsKCQkJCXNvdW5kW10gPSB7IkEzXFNvdW5kc19GXHZlaGljbGVzXHNvZnRcdGlyZXNcaW50X3RpcmVzX2FzZmFsdF8yIiwgZGItMywgMS4wfTsKCQkJCWZyZXF1ZW5jeSA9ICIxIjsKCQkJCXZvbHVtZSA9ICIoMS1jYW1Qb3MpKmFzcGhhbHQqKHNwZWVkIGZhY3RvclsyLCAyMF0pIjsKCQkJfTsKCQkJCgkJCWNsYXNzIE5vaXNlSW4gewoJCQkJc291bmRbXSA9IHsiQTNcU291bmRzX0ZcdmVoaWNsZXNcc29mdFxub2lzZXNcbm9pc2VfaW50X2Nhcl8zIiwgMC41NjIzNDEsIDEuMH07CgkJCQlmcmVxdWVuY3kgPSAiMSI7CgkJCQl2b2x1bWUgPSAiKGRhbXBlcjAgbWF4IDAuMSkqKHNwZWVkIGZhY3RvclswLCA4XSkqKDEtY2FtUG9zKSI7CgkJCX07CgkJCQoJCQljbGFzcyBicmVha2luZ19leHRfcm9hZCB7CgkJCQlzb3VuZFtdID0geyJBM1xTb3VuZHNfRlx2ZWhpY2xlc1xzb2Z0XG5vaXNlc1xzbGlwcGluZ190aXJlc19sb29wXzA0IiwgZGItMywgMSwgODB9OwoJCQkJZnJlcXVlbmN5ID0gMTsKCQkJCXZvbHVtZSA9ICJlbmdpbmVPbipjYW1Qb3MqYXNwaGFsdCooTG9uZ1NsaXBEcml2ZSBGYWN0b3JbLTAuMTUsIC0wLjNdKSooU3BlZWQgRmFjdG9yWzIsIDEwXSkiOwoJCQl9OwoJCQkKCQkJY2xhc3MgYWNjZWxlcmF0aW9uX2V4dF9yb2FkIHsKCQkJCXNvdW5kW10gPSB7IkEzXFNvdW5kc19GXHZlaGljbGVzXHNvZnRcbm9pc2VzXHNsaXBwaW5nX3RpcmVzX2xvb3BfMDIiLCBkYi0zLCAxLCA4MH07CgkJCQlmcmVxdWVuY3kgPSAxOwoJCQkJdm9sdW1lID0gImVuZ2luZU9uKmNhbVBvcyphc3BoYWx0KihMb25nU2xpcERyaXZlIEZhY3RvclswLjE1LCAwLjNdKSooU3BlZWQgRmFjdG9yWzEwLCAwXSkiOwoJCQl9OwoJCQkKCQkJY2xhc3MgdHVybl9sZWZ0X2V4dF9yb2FkIHsKCQkJCXNvdW5kW10gPSB7IkEzXFNvdW5kc19GXHZlaGljbGVzXHNvZnRcbm9pc2VzXHNsaXBwaW5nX3RpcmVzX2xvb3BfMDIiLCBkYi0zLCAxLCA4MH07CgkJCQlmcmVxdWVuY3kgPSAxOwoJCQkJdm9sdW1lID0gImVuZ2luZU9uKmNhbVBvcyphc3BoYWx0KihsYXRTbGlwRHJpdmUgRmFjdG9yWzAuMTUsIDAuM10pKihTcGVlZCBGYWN0b3JbMCwgMTBdKSI7CgkJCX07CgkJCQoJCQljbGFzcyB0dXJuX3JpZ2h0X2V4dF9yb2FkIHsKCQkJCXNvdW5kW10gPSB7IkEzXFNvdW5kc19GXHZlaGljbGVzXHNvZnRcbm9pc2VzXHNsaXBwaW5nX3RpcmVzX2xvb3BfMDIiLCBkYi0zLCAxLCA4MH07CgkJCQlmcmVxdWVuY3kgPSAxOwoJCQkJdm9sdW1lID0gImVuZ2luZU9uKmNhbVBvcyphc3BoYWx0KihsYXRTbGlwRHJpdmUgRmFjdG9yWy0wLjE1LCAtMC4zXSkqKFNwZWVkIEZhY3RvclswLCAxMF0pIjsKCQkJfTsKCQkJCgkJCWNsYXNzIGJyZWFraW5nX2V4dF9kaXJ0IHsKCQkJCXNvdW5kW10gPSB7IkEzXFNvdW5kc19GXHZlaGljbGVzXHNvZnRcbm9pc2VzXHNsaXBwaW5nX3RpcmVzXzE0X2RpcnRfYnJlYWtpbmciLCBkYi0zLCAxLCA2MH07CgkJCQlmcmVxdWVuY3kgPSAxOwoJCQkJdm9sdW1lID0gImVuZ2luZU9uKmNhbVBvcyooMS1hc3BoYWx0KSooTG9uZ1NsaXBEcml2ZSBGYWN0b3JbLTAuMTUsIC0wLjNdKSooU3BlZWQgRmFjdG9yWzIsIDEwXSkiOwoJCQl9OwoJCQkKCQkJY2xhc3MgYWNjZWxlcmF0aW9uX2V4dF9kaXJ0IHsKCQkJCXNvdW5kW10gPSB7IkEzXFNvdW5kc19GXHZlaGljbGVzXHNvZnRcbm9pc2VzXGFjY2VsZXJhdGlvbl9kaXJ0X2V4dF8xIiwgZGItMywgMSwgNjB9OwoJCQkJZnJlcXVlbmN5ID0gMTsKCQkJCXZvbHVtZSA9ICJlbmdpbmVPbipjYW1Qb3MqKDEtYXNwaGFsdCkqKExvbmdTbGlwRHJpdmUgRmFjdG9yWzAuMTUsIDAuM10pKihTcGVlZCBGYWN0b3JbMTAsIDBdKSI7CgkJCX07CgkJCQoJCQljbGFzcyB0dXJuX2xlZnRfZXh0X2RpcnQgewoJCQkJc291bmRbXSA9IHsiQTNcU291bmRzX0ZcdmVoaWNsZXNcc29mdFxub2lzZXNcc2xpcHBpbmdfdGlyZXNfMThfZGlydCIsIGRiLTMsIDEsIDYwfTsKCQkJCWZyZXF1ZW5jeSA9IDE7CgkJCQl2b2x1bWUgPSAiZW5naW5lT24qY2FtUG9zKigxLWFzcGhhbHQpKihsYXRTbGlwRHJpdmUgRmFjdG9yWzAuMTUsIDAuM10pKihTcGVlZCBGYWN0b3JbMCwgMTBdKSI7CgkJCX07CgkJCQoJCQljbGFzcyB0dXJuX3JpZ2h0X2V4dF9kaXJ0IHsKCQkJCXNvdW5kW10gPSB7IkEzXFNvdW5kc19GXHZlaGljbGVzXHNvZnRcbm9pc2VzXHNsaXBwaW5nX3RpcmVzXzE4X2RpcnQiLCBkYi0zLCAxLCA2MH07CgkJCQlmcmVxdWVuY3kgPSAxOwoJCQkJdm9sdW1lID0gImVuZ2luZU9uKmNhbVBvcyooMS1hc3BoYWx0KSoobGF0U2xpcERyaXZlIEZhY3RvclstMC4xNSwgLTAuM10pKihTcGVlZCBGYWN0b3JbMCwgMTBdKSI7CgkJCX07CgkJCQoJCQljbGFzcyBicmVha2luZ19pbnRfcm9hZCB7CgkJCQlzb3VuZFtdID0geyJBM1xTb3VuZHNfRlx2ZWhpY2xlc1xzb2Z0XG5vaXNlc1xzbGlwcGluZ190aXJlc19sb29wXzA0X2ludCIsIGRiLTEwLCAxfTsKCQkJCWZyZXF1ZW5jeSA9IDE7CgkJCQl2b2x1bWUgPSAiZW5naW5lT24qYXNwaGFsdCooMS1jYW1Qb3MpKihMb25nU2xpcERyaXZlIEZhY3RvclstMC4xNSwgLTAuM10pKihTcGVlZCBGYWN0b3JbMiwgNl0pIjsKCQkJfTsKCQkJCgkJCWNsYXNzIGFjY2VsZXJhdGlvbl9pbnRfcm9hZCB7CgkJCQlzb3VuZFtdID0geyJBM1xTb3VuZHNfRlx2ZWhpY2xlc1xzb2Z0XG5vaXNlc1xzbGlwcGluZ190aXJlc19sb29wXzAyX2ludCIsIGRiLTEwLCAxfTsKCQkJCWZyZXF1ZW5jeSA9IDE7CgkJCQl2b2x1bWUgPSAiZW5naW5lT24qYXNwaGFsdCooMS1jYW1Qb3MpKihMb25nU2xpcERyaXZlIEZhY3RvclswLjE1LCAwLjNdKSooU3BlZWQgRmFjdG9yWzEwLCAwXSkiOwoJCQl9OwoJCQkKCQkJY2xhc3MgdHVybl9sZWZ0X2ludF9yb2FkIHsKCQkJCXNvdW5kW10gPSB7IkEzXFNvdW5kc19GXHZlaGljbGVzXHNvZnRcbm9pc2VzXHNsaXBwaW5nX3RpcmVzX2xvb3BfMDJfaW50IiwgZGItMTAsIDF9OwoJCQkJZnJlcXVlbmN5ID0gMTsKCQkJCXZvbHVtZSA9ICJlbmdpbmVPbiphc3BoYWx0KigxLWNhbVBvcykqKGxhdFNsaXBEcml2ZSBGYWN0b3JbMC4xNSwgMC4zXSkqKFNwZWVkIEZhY3RvclswLCAxMF0pIjsKCQkJfTsKCQkJCgkJCWNsYXNzIHR1cm5fcmlnaHRfaW50X3JvYWQgewoJCQkJc291bmRbXSA9IHsiQTNcU291bmRzX0ZcdmVoaWNsZXNcc29mdFxub2lzZXNcc2xpcHBpbmdfdGlyZXNfbG9vcF8wMl9pbnQiLCBkYi0xMCwgMX07CgkJCQlmcmVxdWVuY3kgPSAxOwoJCQkJdm9sdW1lID0gImVuZ2luZU9uKmFzcGhhbHQqKDEtY2FtUG9zKSoobGF0U2xpcERyaXZlIEZhY3RvclstMC4xNSwgLTAuM10pKihTcGVlZCBGYWN0b3JbMCwgMTBdKSI7CgkJCX07CgkJCQoJCQljbGFzcyBicmVha2luZ19pbnRfZGlydCB7CgkJCQlzb3VuZFtdID0geyJBM1xTb3VuZHNfRlx2ZWhpY2xlc1xzb2Z0XG5vaXNlc1xzbGlwcGluZ190aXJlc18xNF9kaXJ0X2JyZWFraW5nX2ludCIsIGRiLTEwLCAxfTsKCQkJCWZyZXF1ZW5jeSA9IDE7CgkJCQl2b2x1bWUgPSAiZW5naW5lT24qKDEtYXNwaGFsdCkqKDEtY2FtUG9zKSooTG9uZ1NsaXBEcml2ZSBGYWN0b3JbLTAuMTUsIC0wLjNdKSooU3BlZWQgRmFjdG9yWzIsIDZdKSI7CgkJCX07CgkJCQoJCQljbGFzcyBhY2NlbGVyYXRpb25faW50X2RpcnQgewoJCQkJc291bmRbXSA9IHsiQTNcU291bmRzX0ZcdmVoaWNsZXNcc29mdFxub2lzZXNcYWNjZWxlcmF0aW9uX2RpcnRfaW50XzEiLCBkYi0xMCwgMX07CgkJCQlmcmVxdWVuY3kgPSAxOwoJCQkJdm9sdW1lID0gImVuZ2luZU9uKigxLWFzcGhhbHQpKigxLWNhbVBvcykqKExvbmdTbGlwRHJpdmUgRmFjdG9yWzAuMTUsIDAuM10pKihTcGVlZCBGYWN0b3JbMTAsIDBdKSI7CgkJCX07CgkJCQoJCQljbGFzcyB0dXJuX2xlZnRfaW50X2RpcnQgewoJCQkJc291bmRbXSA9IHsiQTNcU291bmRzX0ZcdmVoaWNsZXNcc29mdFxub2lzZXNcc2xpcHBpbmdfdGlyZXNfMThfZGlydF9pbnQiLCBkYi0xMCwgMX07CgkJCQlmcmVxdWVuY3kgPSAxOwoJCQkJdm9sdW1lID0gImVuZ2luZU9uKigxLWFzcGhhbHQpKigxLWNhbVBvcykqKGxhdFNsaXBEcml2ZSBGYWN0b3JbMC4xNSwgMC4zXSkqKFNwZWVkIEZhY3RvclswLCAxMF0pIjsKCQkJfTsKCQkJCgkJCWNsYXNzIHR1cm5fcmlnaHRfaW50X2RpcnQgewoJCQkJc291bmRbXSA9IHsiQTNcU291bmRzX0ZcdmVoaWNsZXNcc29mdFxub2lzZXNcc2xpcHBpbmdfdGlyZXNfMThfZGlydF9pbnQiLCBkYi0xMCwgMX07CgkJCQlmcmVxdWVuY3kgPSAxOwoJCQkJdm9sdW1lID0gImVuZ2luZU9uKigxLWFzcGhhbHQpKigxLWNhbVBvcykqKGxhdFNsaXBEcml2ZSBGYWN0b3JbLTAuMTUsIC0wLjNdKSooU3BlZWQgRmFjdG9yWzAsIDEwXSkiOwoJCQl9OwoJCX07CgoJCXRocnVzdERlbGF5ID0gMC4xOwoJCWJyYWtlSWRsZVNwZWVkID0gMS43ODsKCQltYXhTcGVlZCA9IDkwOwoJCWZ1ZWxDYXBhY2l0eSA9IDk0OwoJCXdoZWVsQ2lyY3VtZmVyZW5jZSA9IDMuNTE2ODsKCQlhbnRpUm9sbGJhckZvcmNlQ29lZiA9IDEyOwoJCWFudGlSb2xsYmFyRm9yY2VMaW1pdCA9IDEwOwoJCWFudGlSb2xsYmFyU3BlZWRNaW4gPSAyMDsKCQlhbnRpUm9sbGJhclNwZWVkTWF4ID0gNTA7CgkJaWRsZVJwbSA9IDgwMDsKCQlyZWRScG0gPSA0NTAwOwoKCQljbGFzcyBjb21wbGV4R2VhcmJveAoJCXsKCQkJR2VhcmJveFJhdGlvc1tdID0geyJSMSIsIC0zLjE4MiwgIk4iLCAwLCAiRDEiLCA0LjE4MiwgIkQyIiwgMi4zMTgsICJEMyIsIDEuODUsICJENCIsIDEuNjUsICJENSIsIDEuNDV9OwoJCQlUcmFuc21pc3Npb25SYXRpb3NbXSA9IHsiSGlnaCIsIDUuNTM5fTsKCQkJZ2VhckJveE1vZGUgPSAiYXV0byI7CgkJCW1vdmVPZmZHZWFyID0gMTsKCQkJZHJpdmVTdHJpbmcgPSAiRCI7CgkJCW5ldXRyYWxTdHJpbmcgPSAiTiI7CgkJCXJldmVyc2VTdHJpbmcgPSAiUiI7CgkJfTsKCgkJc2ltdWxhdGlvbiA9ICJjYXJ4IjsKCQlkYW1wZXJzQnVtcENvZWYgPSA2LjA7CgkJZGlmZmVyZW50aWFsVHlwZSA9ICJhbGxfbGltaXRlZCI7CgkJZnJvbnRSZWFyU3BsaXQgPSAwLjU7CgkJZnJvbnRCaWFzID0gMS4zOwoJCXJlYXJCaWFzID0gMS4zOwoJCWNlbnRyZUJpYXMgPSAxLjM7CgkJY2x1dGNoU3RyZW5ndGggPSAyMC4wOwoJCWVuZ2luZVBvd2VyID0gMjc2OwoJCW1heE9tZWdhID0gNDcxOwoJCXBlYWtUb3JxdWUgPSAxMjUzOwoJCWRhbXBpbmdSYXRlRnVsbFRocm90dGxlID0gMC4wODsKCQlkYW1waW5nUmF0ZVplcm9UaHJvdHRsZUNsdXRjaEVuZ2FnZWQgPSAyLjA7CgkJZGFtcGluZ1JhdGVaZXJvVGhyb3R0bGVDbHV0Y2hEaXNlbmdhZ2VkID0gMC4zNTsKCQl0b3JxdWVDdXJ2ZVtdID0ge3swLjAsIDAuMH0sIHswLjE3OCwgMC41fSwgezAuMjUsIDAuODV9LCB7MC40LCAwLjl9LCB7MC41LCAxLjB9LCB7MC43MjUsIDAuOTV9LCB7MC44NSwgMC42fSwgezEuMCwgMC4zfX07CgkJY2hhbmdlR2Vhck1pbkVmZmVjdGl2aXR5W10gPSB7MC45NSwgMC4xNSwgMC45NSwgMC45NSwgMC45NSwgMC45NSwgMC45NX07CgkJc3dpdGNoVGltZSA9IDAuMzE7CgkJbGF0ZW5jeSA9IDEuMDsKCgkJY2xhc3MgV2hlZWxzCgkJewoJCQljbGFzcyBMRgoJCQl7CgkJCQlib25lTmFtZSA9ICJ3aGVlbF8xXzEiOwoJCQkJc3RlZXJpbmcgPSAxOwoJCQkJc2lkZSA9ICJsZWZ0IjsKCQkJCWNlbnRlciA9ICJXaGVlbF8xXzFfQXhpcyI7CgkJCQlib3VuZGFyeSA9ICJXaGVlbF8xXzFfYm91bmQiOwoJCQkJd2lkdGggPSAwLjI7CgkJCQltYXNzID0gMTUwOwoJCQkJTU9JID0gNDA7CgkJCQlkYW1waW5nUmF0ZSA9IDAuMTsKCQkJCWRhbXBpbmdSYXRlRGFtYWdlZCA9IDEuMDsKCQkJCWRhbXBpbmdSYXRlRGVzdHJveWVkID0gMTAwMC4wOwoJCQkJbWF4QnJha2VUb3JxdWUgPSAyMjUwMDsKCQkJCW1heEhhbmRCcmFrZVRvcnF1ZSA9IDA7CgkJCQlzdXNwVHJhdmVsRGlyZWN0aW9uW10gPSB7MCwgLTEsIDB9OwoJCQkJc3VzcEZvcmNlQXBwUG9pbnRPZmZzZXQgPSAiV2hlZWxfMV8xX0F4aXMiOwoJCQkJdGlyZUZvcmNlQXBwUG9pbnRPZmZzZXQgPSAiV2hlZWxfMV8xX0F4aXMiOwoJCQkJbWF4Q29tcHJlc3Npb24gPSAwLjE1OwoJCQkJbU1heERyb29wID0gMC4xNTsKCQkJCXNwcnVuZ01hc3MgPSAyMDY2OwoJCQkJc3ByaW5nU3RyZW5ndGggPSAyMDEyMzQ7CgkJCQlzcHJpbmdEYW1wZXJSYXRlID0gMjA2MDAuNjsKCQkJCWxvbmdpdHVkaW5hbFN0aWZmbmVzc1BlclVuaXRHcmF2aXR5ID0gNTAwMDsKCQkJCWxhdFN0aWZmWCA9IDI1OwoJCQkJbGF0U3RpZmZZID0gMTgwOwoJCQkJZnJpY3Rpb25Wc1NsaXBHcmFwaFtdID0ge3swLCAxfSwgezAuNSwgMX0sIHsxLCAxfX07CgkJCX07CgkJCQoJCQljbGFzcyBMUiA6IExGCgkJCXsKCQkJCWJvbmVOYW1lID0gIndoZWVsXzFfMiI7CgkJCQlzdGVlcmluZyA9IDA7CgkJCQljZW50ZXIgPSAiV2hlZWxfMV8yX0F4aXMiOwoJCQkJYm91bmRhcnkgPSAiV2hlZWxfMV8yX2JvdW5kIjsKCQkJCXN1c3BGb3JjZUFwcFBvaW50T2Zmc2V0ID0gIldoZWVsXzFfMl9BeGlzIjsKCQkJCXRpcmVGb3JjZUFwcFBvaW50T2Zmc2V0ID0gIldoZWVsXzFfMl9BeGlzIjsKCQkJCW1heEhhbmRCcmFrZVRvcnF1ZSA9IDI3NTAwMDsKCQkJfTsKCQkJCgkJCWNsYXNzIFJGIDogTEYKCQkJewoJCQkJYm9uZU5hbWUgPSAiV2hlZWxfMl8xIjsKCQkJCWNlbnRlciA9ICJXaGVlbF8yXzFfQXhpcyI7CgkJCQlib3VuZGFyeSA9ICJXaGVlbF8yXzFfYm91bmQiOwoJCQkJc3VzcEZvcmNlQXBwUG9pbnRPZmZzZXQgPSAiV2hlZWxfMl8xX0F4aXMiOwoJCQkJdGlyZUZvcmNlQXBwUG9pbnRPZmZzZXQgPSAiV2hlZWxfMl8xX0F4aXMiOwoJCQkJc3RlZXJpbmcgPSAxOwoJCQkJc2lkZSA9ICJyaWdodCI7CgkJCX07CgkJCQoJCQljbGFzcyBSUiA6IFJGCgkJCXsKCQkJCWJvbmVOYW1lID0gIndoZWVsXzJfMiI7CgkJCQlzdGVlcmluZyA9IDA7CgkJCQljZW50ZXIgPSAiV2hlZWxfMl8yX0F4aXMiOwoJCQkJYm91bmRhcnkgPSAiV2hlZWxfMl8yX2JvdW5kIjsKCQkJCXN1c3BGb3JjZUFwcFBvaW50T2Zmc2V0ID0gIldoZWVsXzJfMl9BeGlzIjsKCQkJCXRpcmVGb3JjZUFwcFBvaW50T2Zmc2V0ID0gIldoZWVsXzJfMl9BeGlzIjsKCQkJCW1heEhhbmRCcmFrZVRvcnF1ZSA9IDI3NTAwMDsKCQkJfTsKCQl9OwoKCQlzdXBwbHlSYWRpdXMgPSA1OwoJCXRyYW5zcG9ydE1heE1hZ2F6aW5lcyA9IDkwOwoKCQljbGFzcyBUcmFuc3BvcnRNYWdhemluZXMKCQl7CgkJCWNsYXNzIF94eF8zMFJuZF82NXgzOV9jYXNlbGVzc19tYWcKCQkJewoJCQkJbWFnYXppbmUgPSAiMzBSbmRfNjV4MzlfY2FzZWxlc3NfbWFnIjsKCQkJCWNvdW50ID0gMTY7CgkJCX07CgkJCQoJCQljbGFzcyBfeHhfMTAwUm5kXzY1eDM5X2Nhc2VsZXNzX21hZwoJCQl7CgkJCQltYWdhemluZSA9ICIxMDBSbmRfNjV4MzlfY2FzZWxlc3NfbWFnIjsKCQkJCWNvdW50ID0gODsKCQkJfTsKCQkJCgkJCWNsYXNzIF94eF9IYW5kR3JlbmFkZQoJCQl7CgkJCQltYWdhemluZSA9ICJIYW5kR3JlbmFkZSI7CgkJCQljb3VudCA9IDEwOwoJCQl9OwoJCQkKCQkJY2xhc3MgX3h4XzFSbmRfSEVfR3JlbmFkZV9zaGVsbAoJCQl7CgkJCQltYWdhemluZSA9ICIxUm5kX0hFX0dyZW5hZGVfc2hlbGwiOwoJCQkJY291bnQgPSAxMDsKCQkJfTsKCQkJCgkJCWNsYXNzIF94eF8xUm5kX1Ntb2tlX0dyZW5hZGVfc2hlbGwKCQkJewoJCQkJbWFnYXppbmUgPSAiMVJuZF9TbW9rZV9HcmVuYWRlX3NoZWxsIjsKCQkJCWNvdW50ID0gNDsKCQkJfTsKCQkJCgkJCWNsYXNzIF94eF8xUm5kX1Ntb2tlR3JlZW5fR3JlbmFkZV9zaGVsbAoJCQl7CgkJCQltYWdhemluZSA9ICIxUm5kX1Ntb2tlR3JlZW5fR3JlbmFkZV9zaGVsbCI7CgkJCQljb3VudCA9IDQ7CgkJCX07CgkJCQoJCQljbGFzcyBfeHhfMVJuZF9TbW9rZU9yYW5nZV9HcmVuYWRlX3NoZWxsCgkJCXsKCQkJCW1hZ2F6aW5lID0gIjFSbmRfU21va2VPcmFuZ2VfR3JlbmFkZV9zaGVsbCI7CgkJCQljb3VudCA9IDQ7CgkJCX07CgkJCQoJCQljbGFzcyBfeHhfMVJuZF9TbW9rZUJsdWVfR3JlbmFkZV9zaGVsbAoJCQl7CgkJCQltYWdhemluZSA9ICIxUm5kX1Ntb2tlQmx1ZV9HcmVuYWRlX3NoZWxsIjsKCQkJCWNvdW50ID0gNDsKCQkJfTsKCQkJCgkJCWNsYXNzIF94eF8xNlJuZF85eDIxX01hZwoJCQl7CgkJCQltYWdhemluZSA9ICIxNlJuZF85eDIxX01hZyI7CgkJCQljb3VudCA9IDEyOwoJCQl9OwoJCQkKCQkJY2xhc3MgX3h4X1Ntb2tlU2hlbGwKCQkJewoJCQkJbWFnYXppbmUgPSAiU21va2VTaGVsbCI7CgkJCQljb3VudCA9IDQ7CgkJCX07CgkJCQoJCQljbGFzcyBfeHhfU21va2VTaGVsbEdyZWVuCgkJCXsKCQkJCW1hZ2F6aW5lID0gIlNtb2tlU2hlbGxHcmVlbiI7CgkJCQljb3VudCA9IDQ7CgkJCX07CgkJCQoJCQljbGFzcyBfeHhfU21va2VTaGVsbE9yYW5nZQoJCQl7CgkJCQltYWdhemluZSA9ICJTbW9rZVNoZWxsT3JhbmdlIjsKCQkJCWNvdW50ID0gNDsKCQkJfTsKCQkJCgkJCWNsYXNzIF94eF9TbW9rZVNoZWxsQmx1ZQoJCQl7CgkJCQltYWdhemluZSA9ICJTbW9rZVNoZWxsQmx1ZSI7CgkJCQljb3VudCA9IDQ7CgkJCX07CgkJCQoJCQljbGFzcyBfeHhfTkxBV19GCgkJCXsKCQkJCW1hZ2F6aW5lID0gTkxBV19GOwoJCQkJY291bnQgPSAyOwoJCQl9OwoJCX07CgkJCgkJY2xhc3MgVHJhbnNwb3J0SXRlbXMKCQl7CgkJCWNsYXNzIF94eF9GaXJzdEFpZEtpdAoJCQl7CgkJCQluYW1lID0gIkZpcnN0QWlkS2l0IjsKCQkJCWNvdW50ID0gMTA7CgkJCX07CgkJfTsKCQkKCQljbGFzcyBUcmFuc3BvcnRXZWFwb25zCgkJewoJCQljbGFzcyBfeHhfYXJpZmxlX01YX0YKCQkJewoJCQkJd2VhcG9uID0gImFyaWZsZV9NWF9GIjsKCQkJCWNvdW50ID0gMjsKCQkJfTsKCQl9OwoKCQllbmFibGVHUFMgPSB0cnVlOwoKCQlzb3VuZFNlcnZvW10gPSB7IkEzXFNvdW5kc19GXHZlaGljbGVzXGFybW9yXG5vaXNlc1xzZXJ2b19iZXN0IiwgZGItNDAsIDEuMCwxMH07CgoJCXJhZGFyVHlwZSA9IDQ7Cgl9OwoKCWNsYXNzIERpbmdvX0YgOiBEaW5nb19CYXNlCgl7CgkJc2NvcGUgPSBwdWJsaWM7CgkJY2xhc3MgVHVycmV0cyB7fTsKCX07Cn07