if data.current.value == 'menuperso_actions' then
ESX.UI.Menu.Open(
'default', GetCurrentResourceName(), 'menuperso_actions',
{
title = 'Actions',
align = 'top-left',
elements = {
{label = 'Annuler Animations', value = 'menuperso_actions__annuler'},
--{label = 'Faire ses besoins [WIP]', value = 'menuperso_actions_pipi'},
{label = 'Arrestation', value = 'menuperso_actions_arrest'},
{label = 'Animations de Salutations', value = 'menuperso_actions_Salute'},
{label = 'Animations d\'Humeurs', value = 'menuperso_actions_Humor'},
{label = 'Animations de Travail', value = 'menuperso_actions_Travail'},
{label = 'Animations Festives', value = 'menuperso_actions_Festives'},
{label = 'Animations Diverses', value = 'menuperso_actions_Others'},
},
},
function(data2, menu2)
if data2.current.value == 'menuperso_actions__annuler' then
local ped = GetPlayerPed(-1);
if ped then
ClearPedTasks(ped);
end
end
if data2.current.value == 'menuperso_actions_arrest' then
local player = GetPlayerPed( -1 )
if ( DoesEntityExist( player ) and not IsEntityDead( player )) then
loadAnimDict( "random@arrests" )
loadAnimDict( "random@arrests@busted" )
if ( IsEntityPlayingAnim( player, "random@arrests@busted", "idle_a", 3 ) ) then
TaskPlayAnim( player, "random@arrests@busted", "exit", 8.0, 1.0, -1, 2, 0, 0, 0, 0 )
Wait (3000)
TaskPlayAnim( player, "random@arrests", "kneeling_arrest_get_up", 8.0, 1.0, -1, 128, 0, 0, 0, 0 )
else
TaskPlayAnim( player, "random@arrests", "idle_2_hands_up", 8.0, 1.0, -1, 2, 0, 0, 0, 0 )
Wait (4000)
TaskPlayAnim( player, "random@arrests", "kneeling_arrest_idle", 8.0, 1.0, -1, 2, 0, 0, 0, 0 )
Wait (500)
TaskPlayAnim( player, "random@arrests@busted", "enter", 8.0, 1.0, -1, 2, 0, 0, 0, 0 )
Wait (1000)
TaskPlayAnim( player, "random@arrests@busted", "idle_a", 8.0, 1.0, -1, 9, 0, 0, 0, 0 )
end
end
end
if data2.current.value == 'menuperso_actions_pipi' then
ESX.UI.Menu.CloseAll()
end
if data2.current.value == 'menuperso_actions_Salute' then
ESX.UI.Menu.Open(
'default', GetCurrentResourceName(), 'menuperso_actions_Salute',
{
title = 'Animations Salutations',
align = 'top-left',
elements = {
{label = 'Saluer', value = 'menuperso_actions_Salute_saluer'},
{label = 'Serrer la main', value = 'menuperso_actions_Salute_serrerlamain'},
{label = 'Tape en 5', value = 'menuperso_actions_Salute_tapeen5'},
{label = 'Salut Militaire', value = 'menuperso_actions_Salute_salutmilitaire'},
},
},
function(data3, menu3)
if data3.current.value == 'menuperso_actions_Salute_saluer' then
animsAction({ lib = "gestures@m@standing@casual", anim = "gesture_hello" })
end
if data3.current.value == 'menuperso_actions_Salute_serrerlamain' then
animsAction({ lib = "mp_common", anim = "givetake1_a" })
end
if data3.current.value == 'menuperso_actions_Salute_tapeen5' then
animsAction({ lib = "mp_ped_interaction", anim = "highfive_guy_a" })
end
if data3.current.value == 'menuperso_actions_Salute_salutmilitaire' then
animsAction({ lib = "mp_player_int_uppersalute", anim = "mp_player_int_salute" })
end
end,
function(data3, menu3)
menu3.close()
end
)
end
if data2.current.value == 'menuperso_actions_Humor' then
ESX.UI.Menu.Open(
'default', GetCurrentResourceName(), 'menuperso_actions_Humor',
{
title = 'Animations Humeurs',
align = 'top-left',
elements = {
{label = 'Féliciter', value = 'menuperso_actions_Humor_feliciter'},
{label = 'Super', value = 'menuperso_actions_Humor_super'},
{label = 'Calme-toi', value = 'menuperso_actions_Humor_calmetoi'},
{label = 'Avoir peur', value = 'menuperso_actions_Humor_avoirpeur'},
{label = 'C\'est pas Possible!', value = 'menuperso_actions_Humor_cestpaspossible'},
{label = 'Enlacer', value = 'menuperso_actions_Humor_enlacer'},
{label = 'Doigt d\'honneur', value = 'menuperso_actions_Humor_doightdhonneur'},
{label = 'Branleur', value = 'menuperso_actions_Humor_branleur'},
{label = 'Balle dans la tete', value = 'menuperso_actions_Humor_balledanslatete'},
},
},
function(data3, menu3)
if data3.current.value == 'menuperso_actions_Humor_feliciter' then
animsActionScenario({anim = "WORLD_HUMAN_CHEERING" })
end
if data3.current.value == 'menuperso_actions_Humor_super' then
animsAction({ lib = "anim@mp_player_intcelebrationmale@thumbs_up", anim = "thumbs_up" })
end
if data3.current.value == 'menuperso_actions_Humor_calmetoi' then
animsAction({ lib = "gestures@m@standing@casual", anim = "gesture_easy_now" })
end
if data3.current.value == 'menuperso_actions_Humor_avoirpeur' then
animsAction({ lib = "amb@code_human_cower_stand@female@idle_a", anim = "idle_c" })
end
if data3.current.value == 'menuperso_actions_Humor_cestpaspossible' then
animsAction({ lib = "gestures@m@standing@casual", anim = "gesture_damn" })
end
if data3.current.value == 'menuperso_actions_Humor_enlacer' then
animsAction({ lib = "mp_ped_interaction", anim = "kisses_guy_a" })
end
if data3.current.value == 'menuperso_actions_Humor_doightdhonneur' then
animsAction({ lib = "mp_player_int_upperfinger", anim = "mp_player_int_finger_01_enter" })
end
if data3.current.value == 'menuperso_actions_Humor_branleur' then
animsAction({ lib = "mp_player_int_upperwank", anim = "mp_player_int_wank_01" })
end
if data3.current.value == 'menuperso_actions_Humor_balledanslatete' then
animsAction({ lib = "mp_suicide", anim = "pistol" })
end
end,
function(data3, menu3)
menu3.close()
end
)
end
if data2.current.value == 'menuperso_actions_Travail' then
ESX.UI.Menu.Open(
'default', GetCurrentResourceName(), 'menuperso_actions_Travail',
{
title = 'Animations Travail',
align = 'top-left',
elements = {
{label = 'Pêcheur', value = 'menuperso_actions_Travail_pecheur'},
{label = 'Agriculteur', value = 'menuperso_actions_Travail_agriculteur'},
{label = 'Dépanneur', value = 'menuperso_actions_Travail_depanneur'},
{label = 'Prendre des notes', value = 'menuperso_actions_Travail_prendredesnotes'},
{label = 'Inspecter', value = 'menuperso_actions_Travail_inspecter'},
},
},
function(data3, menu3)
if data3.current.value == 'menuperso_actions_Travail_pecheur' then
animsActionScenario({anim = "world_human_stand_fishing" })
end
if data3.current.value == 'menuperso_actions_Travail_agriculteur' then
animsActionScenario({anim = "world_human_gardener_plant" })
end
if data3.current.value == 'menuperso_actions_Travail_depanneur' then
animsActionScenario({anim = "world_human_vehicle_mechanic" })
end
if data3.current.value == 'menuperso_actions_Travail_prendredesnotes' then
animsActionScenario({anim = "WORLD_HUMAN_CLIPBOARD" })
end
if data3.current.value == 'menuperso_actions_Travail_inspecter' then
animsActionScenario({anim = "CODE_HUMAN_MEDIC_KNEEL" })
end
end,
function(data3, menu3)
menu3.close()
end
)
end
if data2.current.value == 'menuperso_actions_Festives' then
ESX.UI.Menu.Open(
'default', GetCurrentResourceName(), 'menuperso_actions_Festives',
{
title = 'Animations Festives',
align = 'top-left',
elements = {
{label = 'Danser', value = 'menuperso_actions_Festives_danser'},
{label = 'Jouer de la musique', value = 'menuperso_actions_Festives_jouerdelamusique'},
{label = 'Boire une biere', value = 'menuperso_actions_Festives_boireunebiere'},
{label = 'Air Guitar', value = 'menuperso_actions_Festives_airguitar'},
},
},
function(data3, menu3)
if data3.current.value == 'menuperso_actions_Festives_danser' then
animsAction({ lib = "amb@world_human_partying@female@partying_beer@base", anim = "base" })
end
if data3.current.value == 'menuperso_actions_Festives_jouerdelamusique' then
animsActionScenario({anim = "WORLD_HUMAN_MUSICIAN" })
end
if data3.current.value == 'menuperso_actions_Festives_boireunebiere' then
animsActionScenario({anim = "WORLD_HUMAN_DRINKING" })
end
if data3.current.value == 'menuperso_actions_Festives_airguitar' then
animsAction({ lib = "anim@mp_player_intcelebrationfemale@air_guitar", anim = "air_guitar" })
end
end,
function(data3, menu3)
menu3.close()
end
)
end
if data2.current.value == 'menuperso_actions_Others' then
ESX.UI.Menu.Open(
'default', GetCurrentResourceName(), 'menuperso_actions_Others',
{
title = 'Animations Diverses',
align = 'top-left',
elements = {
{label = 'Fumer une clope', value = 'menuperso_actions_Others_fumeruneclope'},
{label = 'Faire des pompes', value = 'menuperso_actions_Others_fairedespompes'},
{label = 'Regarder aux jumelles', value = 'menuperso_actions_Others_regarderauxjumelles'},
{label = 'Faire du Yoga', value = 'menuperso_actions_Others_faireduyoga'},
{label = 'Faire la statue', value = 'menuperso_actions_Others_fairelastatut'},
{label = 'Faire du jogging', value = 'menuperso_actions_Others_fairedujogging'},
{label = 'Montrer ses muscles', value = 'menuperso_actions_Others_fairedesetirements'},
{label = 'Racoller', value = 'menuperso_actions_Others_racoller'},
{label = 'Racoller 2', value = 'menuperso_actions_Others_racoller2'},
{label = 'S\'asseoir', value = 'menuperso_actions_Others_sasseoir'},
{label = 'S\'asseoir (Par terre)', value = 'menuperso_actions_Others_sasseoirparterre'},
{label = 'Attendre', value = 'menuperso_actions_Others_attendre'},
{label = 'Nettoyer quelque chose', value = 'menuperso_actions_Others_nettoyerquelquechose'},
{label = 'Lever les mains', value = 'menuperso_actions_Others_leverlesmains'},
{label = 'Position de Fouille', value = 'menuperso_actions_Others_positiondefouille'},
{label = 'Se gratter les c**', value = 'menuperso_actions_Others_segratterlesc'},
{label = 'Prendre un selfie', value = 'menuperso_actions_Others_prendreunselfie'},
},
},
function(data3, menu3)
if data3.current.value == 'menuperso_actions_Others_fumeruneclope' then
animsActionScenario({ anim = "WORLD_HUMAN_SMOKING" })
end
if data3.current.value == 'menuperso_actions_Others_fairedespompes' then
animsActionScenario({ anim = "WORLD_HUMAN_PUSH_UPS" })
end
if data3.current.value == 'menuperso_actions_Others_regarderauxjumelles' then
animsActionScenario({ anim = "WORLD_HUMAN_BINOCULARS" })
end
if data3.current.value == 'menuperso_actions_Others_faireduyoga' then
animsActionScenario({ anim = "WORLD_HUMAN_YOGA" })
end
if data3.current.value == 'menuperso_actions_Others_fairelastatut' then
animsActionScenario({ anim = "WORLD_HUMAN_HUMAN_STATUE" })
end
if data3.current.value == 'menuperso_actions_Others_fairedujogging' then
animsActionScenario({ anim = "WORLD_HUMAN_JOG_STANDING" })
end
if data3.current.value == 'menuperso_actions_Others_fairedesetirements' then
animsActionScenario({ anim = "WORLD_HUMAN_MUSCLE_FLEX" })
end
if data3.current.value == 'menuperso_actions_Others_racoller' then
animsActionScenario({ anim = "WORLD_HUMAN_PROSTITUTE_HIGH_CLASS" })
end
if data3.current.value == 'menuperso_actions_Others_racoller2' then
animsActionScenario({ anim = "WORLD_HUMAN_PROSTITUTE_LOW_CLASS" })
end
if data3.current.value == 'menuperso_actions_Others_sasseoir' then
animsAction({ lib = "anim@heists@prison_heistunfinished_biztarget_idle", anim = "target_idle" })
end
if data3.current.value == 'menuperso_actions_Others_sasseoirparterre' then
animsActionScenario({ anim = "WORLD_HUMAN_PICNIC" })
end
if data3.current.value == 'menuperso_actions_Others_attendre' then
animsActionScenario({ anim = "world_human_leaning" })
end
if data3.current.value == 'menuperso_actions_Others_nettoyerquelquechose' then
animsActionScenario({ anim = "world_human_maid_clean" })
end
if data3.current.value == 'menuperso_actions_Others_leverlesmains' then
animsAction({ lib = "random@mugging3", anim = "handsup_standing_base" })
end
if data3.current.value == 'menuperso_actions_Others_positiondefouille' then
animsAction({ lib = "mini@prostitutes@sexlow_veh", anim = "low_car_bj_to_prop_female" })
end
if data3.current.value == 'menuperso_actions_Others_segratterlesc' then
animsAction({ lib = "mp_player_int_uppergrab_crotch", anim = "mp_player_int_grab_crotch" })
end
if data3.current.value == 'menuperso_actions_Others_prendreunselfie' then
animsActionScenario({ anim = "world_human_tourist_mobile" })
end
end,
function(data3, menu3)
menu3.close()
end
)
end
end,
function(data2, menu2)
menu2.close()
end
)
end
aWYgZGF0YS5jdXJyZW50LnZhbHVlID09ICdtZW51cGVyc29fYWN0aW9ucycgdGhlbgoKCQkJCQlFU1guVUkuTWVudS5PcGVuKAoJCQkJCQknZGVmYXVsdCcsIEdldEN1cnJlbnRSZXNvdXJjZU5hbWUoKSwgJ21lbnVwZXJzb19hY3Rpb25zJywKCQkJCQkJewoJCQkJCQkJdGl0bGUgICAgPSAnQWN0aW9ucycsCgkJCQkJCQlhbGlnbiAgICA9ICd0b3AtbGVmdCcsCgkJCQkJCQllbGVtZW50cyA9IHsKCQkJCQkJCQl7bGFiZWwgPSAnQW5udWxlciBBbmltYXRpb25zJywgIHZhbHVlID0gJ21lbnVwZXJzb19hY3Rpb25zX19hbm51bGVyJ30sCgkJCQkJCQkJLS17bGFiZWwgPSAnRmFpcmUgc2VzIGJlc29pbnMgW1dJUF0nLCAgICAgdmFsdWUgPSAnbWVudXBlcnNvX2FjdGlvbnNfcGlwaSd9LAoJCQkJCQkJCXtsYWJlbCA9ICdBcnJlc3RhdGlvbicsICB2YWx1ZSA9ICdtZW51cGVyc29fYWN0aW9uc19hcnJlc3QnfSwKCQkJCQkJCQl7bGFiZWwgPSAnQW5pbWF0aW9ucyBkZSBTYWx1dGF0aW9ucycsICB2YWx1ZSA9ICdtZW51cGVyc29fYWN0aW9uc19TYWx1dGUnfSwKCQkJCQkJCQl7bGFiZWwgPSAnQW5pbWF0aW9ucyBkXCdIdW1ldXJzJywgIHZhbHVlID0gJ21lbnVwZXJzb19hY3Rpb25zX0h1bW9yJ30sCgkJCQkJCQkJe2xhYmVsID0gJ0FuaW1hdGlvbnMgZGUgVHJhdmFpbCcsICB2YWx1ZSA9ICdtZW51cGVyc29fYWN0aW9uc19UcmF2YWlsJ30sCgkJCQkJCQkJe2xhYmVsID0gJ0FuaW1hdGlvbnMgRmVzdGl2ZXMnLCAgdmFsdWUgPSAnbWVudXBlcnNvX2FjdGlvbnNfRmVzdGl2ZXMnfSwKCQkJCQkJCQl7bGFiZWwgPSAnQW5pbWF0aW9ucyBEaXZlcnNlcycsICB2YWx1ZSA9ICdtZW51cGVyc29fYWN0aW9uc19PdGhlcnMnfSwKCQkJCQkJCX0sCgkJCQkJCX0sCgkJCQkJCWZ1bmN0aW9uKGRhdGEyLCBtZW51MikKCgkJCQkJCQlpZiBkYXRhMi5jdXJyZW50LnZhbHVlID09ICdtZW51cGVyc29fYWN0aW9uc19fYW5udWxlcicgdGhlbgoJCQkJCQkJCWxvY2FsIHBlZCA9IEdldFBsYXllclBlZCgtMSk7CgkJCQkJCQkJaWYgcGVkIHRoZW4KCQkJCQkJCQkJQ2xlYXJQZWRUYXNrcyhwZWQpOwoJCQkJCQkJCWVuZAoJCQkJCQkJZW5kCgkJCQkJCQlpZiBkYXRhMi5jdXJyZW50LnZhbHVlID09ICdtZW51cGVyc29fYWN0aW9uc19hcnJlc3QnIHRoZW4KCQkJCQkJCQkKCQkJCQkJCQkgICAgbG9jYWwgcGxheWVyID0gR2V0UGxheWVyUGVkKCAtMSApCgkJCQkJCQkJCWlmICggRG9lc0VudGl0eUV4aXN0KCBwbGF5ZXIgKSBhbmQgbm90IElzRW50aXR5RGVhZCggcGxheWVyICkpIHRoZW4gCgkJCQkJCQkJICAgICAgICBsb2FkQW5pbURpY3QoICJyYW5kb21AYXJyZXN0cyIgKQoJCQkJCQkJCQkJbG9hZEFuaW1EaWN0KCAicmFuZG9tQGFycmVzdHNAYnVzdGVkIiApCgkJCQkJCQkJCQlpZiAoIElzRW50aXR5UGxheWluZ0FuaW0oIHBsYXllciwgInJhbmRvbUBhcnJlc3RzQGJ1c3RlZCIsICJpZGxlX2EiLCAzICkgKSB0aGVuIAoJCQkJCQkJCQkJCVRhc2tQbGF5QW5pbSggcGxheWVyLCAicmFuZG9tQGFycmVzdHNAYnVzdGVkIiwgImV4aXQiLCA4LjAsIDEuMCwgLTEsIDIsIDAsIDAsIDAsIDAgKQoJCQkJCQkJCQkJCVdhaXQgKDMwMDApCgkJCQkJCQkJICAgICAgICAgICAgVGFza1BsYXlBbmltKCBwbGF5ZXIsICJyYW5kb21AYXJyZXN0cyIsICJrbmVlbGluZ19hcnJlc3RfZ2V0X3VwIiwgOC4wLCAxLjAsIC0xLCAxMjgsIDAsIDAsIDAsIDAgKQoJCQkJCQkJCSAgICAgICAgZWxzZQoJCQkJCQkJCSAgICAgICAgICAgIFRhc2tQbGF5QW5pbSggcGxheWVyLCAicmFuZG9tQGFycmVzdHMiLCAiaWRsZV8yX2hhbmRzX3VwIiwgOC4wLCAxLjAsIC0xLCAyLCAwLCAwLCAwLCAwICkKCQkJCQkJCQkJCQlXYWl0ICg0MDAwKQoJCQkJCQkJCSAgICAgICAgICAgIFRhc2tQbGF5QW5pbSggcGxheWVyLCAicmFuZG9tQGFycmVzdHMiLCAia25lZWxpbmdfYXJyZXN0X2lkbGUiLCA4LjAsIDEuMCwgLTEsIDIsIDAsIDAsIDAsIDAgKQoJCQkJCQkJCQkJCVdhaXQgKDUwMCkKCQkJCQkJCQkJCQlUYXNrUGxheUFuaW0oIHBsYXllciwgInJhbmRvbUBhcnJlc3RzQGJ1c3RlZCIsICJlbnRlciIsIDguMCwgMS4wLCAtMSwgMiwgMCwgMCwgMCwgMCApCgkJCQkJCQkJCQkJV2FpdCAoMTAwMCkKCQkJCQkJCQkJCQlUYXNrUGxheUFuaW0oIHBsYXllciwgInJhbmRvbUBhcnJlc3RzQGJ1c3RlZCIsICJpZGxlX2EiLCA4LjAsIDEuMCwgLTEsIDksIDAsIDAsIDAsIDAgKQoJCQkJCQkJCSAgICAgICAgZW5kICAgICAKCQkJCQkJCQkgICAgZW5kCQkJCQkKCQkJCQkJCQkKCQkJCQkJCWVuZAoJCQkJCQkJaWYgZGF0YTIuY3VycmVudC52YWx1ZSA9PSAnbWVudXBlcnNvX2FjdGlvbnNfcGlwaScgdGhlbgoJCQkJCQkJCUVTWC5VSS5NZW51LkNsb3NlQWxsKCkKCQkJCQkJCWVuZAoKCQkJCQkJCWlmIGRhdGEyLmN1cnJlbnQudmFsdWUgPT0gJ21lbnVwZXJzb19hY3Rpb25zX1NhbHV0ZScgdGhlbgoJCQkJCQkJCUVTWC5VSS5NZW51Lk9wZW4oCgkJCQkJCQkJCSdkZWZhdWx0JywgR2V0Q3VycmVudFJlc291cmNlTmFtZSgpLCAnbWVudXBlcnNvX2FjdGlvbnNfU2FsdXRlJywKCQkJCQkJCQkJewoJCQkJCQkJCQkJdGl0bGUgICAgPSAnQW5pbWF0aW9ucyBTYWx1dGF0aW9ucycsCgkJCQkJCQkJCQlhbGlnbiAgICA9ICd0b3AtbGVmdCcsCgkJCQkJCQkJCQllbGVtZW50cyA9IHsKCQkJCQkJCQkJCQl7bGFiZWwgPSAnU2FsdWVyJywgIHZhbHVlID0gJ21lbnVwZXJzb19hY3Rpb25zX1NhbHV0ZV9zYWx1ZXInfSwKCQkJCQkJCQkJCQl7bGFiZWwgPSAnU2VycmVyIGxhIG1haW4nLCAgICAgdmFsdWUgPSAnbWVudXBlcnNvX2FjdGlvbnNfU2FsdXRlX3NlcnJlcmxhbWFpbid9LAoJCQkJCQkJCQkJCXtsYWJlbCA9ICdUYXBlIGVuIDUnLCAgICAgdmFsdWUgPSAnbWVudXBlcnNvX2FjdGlvbnNfU2FsdXRlX3RhcGVlbjUnfSwKCQkJCQkJCQkJCQl7bGFiZWwgPSAnU2FsdXQgTWlsaXRhaXJlJywgIHZhbHVlID0gJ21lbnVwZXJzb19hY3Rpb25zX1NhbHV0ZV9zYWx1dG1pbGl0YWlyZSd9LAoJCQkJCQkJCQkJfSwKCQkJCQkJCQkJfSwKCQkJCQkJCQkJZnVuY3Rpb24oZGF0YTMsIG1lbnUzKQoKCQkJCQkJCQkJCWlmIGRhdGEzLmN1cnJlbnQudmFsdWUgPT0gJ21lbnVwZXJzb19hY3Rpb25zX1NhbHV0ZV9zYWx1ZXInIHRoZW4KCQkJCQkJCQkJCQlhbmltc0FjdGlvbih7IGxpYiA9ICJnZXN0dXJlc0BtQHN0YW5kaW5nQGNhc3VhbCIsIGFuaW0gPSAiZ2VzdHVyZV9oZWxsbyIgfSkKCQkJCQkJCQkJCWVuZAoKCQkJCQkJCQkJCWlmIGRhdGEzLmN1cnJlbnQudmFsdWUgPT0gJ21lbnVwZXJzb19hY3Rpb25zX1NhbHV0ZV9zZXJyZXJsYW1haW4nIHRoZW4KCQkJCQkJCQkJCQlhbmltc0FjdGlvbih7IGxpYiA9ICJtcF9jb21tb24iLCBhbmltID0gImdpdmV0YWtlMV9hIiB9KQoJCQkJCQkJCQkJZW5kCgoJCQkJCQkJCQkJaWYgZGF0YTMuY3VycmVudC52YWx1ZSA9PSAnbWVudXBlcnNvX2FjdGlvbnNfU2FsdXRlX3RhcGVlbjUnIHRoZW4KCQkJCQkJCQkJCQlhbmltc0FjdGlvbih7IGxpYiA9ICJtcF9wZWRfaW50ZXJhY3Rpb24iLCBhbmltID0gImhpZ2hmaXZlX2d1eV9hIiB9KQoJCQkJCQkJCQkJZW5kCgoJCQkJCQkJCQkJaWYgZGF0YTMuY3VycmVudC52YWx1ZSA9PSAnbWVudXBlcnNvX2FjdGlvbnNfU2FsdXRlX3NhbHV0bWlsaXRhaXJlJyB0aGVuCgkJCQkJCQkJCQkJYW5pbXNBY3Rpb24oeyBsaWIgPSAibXBfcGxheWVyX2ludF91cHBlcnNhbHV0ZSIsIGFuaW0gPSAibXBfcGxheWVyX2ludF9zYWx1dGUiIH0pCgkJCQkJCQkJCQllbmQKCgkJCQkJCQkJCWVuZCwKCQkJCQkJCQkJZnVuY3Rpb24oZGF0YTMsIG1lbnUzKQoJCQkJCQkJCQkJbWVudTMuY2xvc2UoKQoJCQkJCQkJCQllbmQKCQkJCQkJCQkpCgkJCQkJCQllbmQKCgkJCQkJCQlpZiBkYXRhMi5jdXJyZW50LnZhbHVlID09ICdtZW51cGVyc29fYWN0aW9uc19IdW1vcicgdGhlbgoJCQkJCQkJCUVTWC5VSS5NZW51Lk9wZW4oCgkJCQkJCQkJCSdkZWZhdWx0JywgR2V0Q3VycmVudFJlc291cmNlTmFtZSgpLCAnbWVudXBlcnNvX2FjdGlvbnNfSHVtb3InLAoJCQkJCQkJCQl7CgkJCQkJCQkJCQl0aXRsZSAgICA9ICdBbmltYXRpb25zIEh1bWV1cnMnLAoJCQkJCQkJCQkJYWxpZ24gICAgPSAndG9wLWxlZnQnLAoJCQkJCQkJCQkJZWxlbWVudHMgPSB7CgkJCQkJCQkJCQkJe2xhYmVsID0gJ0bDqWxpY2l0ZXInLCAgdmFsdWUgPSAnbWVudXBlcnNvX2FjdGlvbnNfSHVtb3JfZmVsaWNpdGVyJ30sCgkJCQkJCQkJCQkJe2xhYmVsID0gJ1N1cGVyJywgICAgIHZhbHVlID0gJ21lbnVwZXJzb19hY3Rpb25zX0h1bW9yX3N1cGVyJ30sCgkJCQkJCQkJCQkJe2xhYmVsID0gJ0NhbG1lLXRvaScsICAgICB2YWx1ZSA9ICdtZW51cGVyc29fYWN0aW9uc19IdW1vcl9jYWxtZXRvaSd9LAoJCQkJCQkJCQkJCXtsYWJlbCA9ICdBdm9pciBwZXVyJywgIHZhbHVlID0gJ21lbnVwZXJzb19hY3Rpb25zX0h1bW9yX2F2b2lycGV1cid9LAoJCQkJCQkJCQkJCXtsYWJlbCA9ICdDXCdlc3QgcGFzIFBvc3NpYmxlIScsICB2YWx1ZSA9ICdtZW51cGVyc29fYWN0aW9uc19IdW1vcl9jZXN0cGFzcG9zc2libGUnfSwKCQkJCQkJCQkJCQl7bGFiZWwgPSAnRW5sYWNlcicsICB2YWx1ZSA9ICdtZW51cGVyc29fYWN0aW9uc19IdW1vcl9lbmxhY2VyJ30sCgkJCQkJCQkJCQkJe2xhYmVsID0gJ0RvaWd0IGRcJ2hvbm5ldXInLCAgdmFsdWUgPSAnbWVudXBlcnNvX2FjdGlvbnNfSHVtb3JfZG9pZ2h0ZGhvbm5ldXInfSwKCQkJCQkJCQkJCQl7bGFiZWwgPSAnQnJhbmxldXInLCAgdmFsdWUgPSAnbWVudXBlcnNvX2FjdGlvbnNfSHVtb3JfYnJhbmxldXInfSwKCQkJCQkJCQkJCQl7bGFiZWwgPSAnQmFsbGUgZGFucyBsYSB0ZXRlJywgIHZhbHVlID0gJ21lbnVwZXJzb19hY3Rpb25zX0h1bW9yX2JhbGxlZGFuc2xhdGV0ZSd9LAoJCQkJCQkJCQkJfSwKCQkJCQkJCQkJfSwKCQkJCQkJCQkJZnVuY3Rpb24oZGF0YTMsIG1lbnUzKQoKCQkJCQkJCQkJCWlmIGRhdGEzLmN1cnJlbnQudmFsdWUgPT0gJ21lbnVwZXJzb19hY3Rpb25zX0h1bW9yX2ZlbGljaXRlcicgdGhlbgoJCQkJCQkJCQkJCWFuaW1zQWN0aW9uU2NlbmFyaW8oe2FuaW0gPSAiV09STERfSFVNQU5fQ0hFRVJJTkciIH0pCgkJCQkJCQkJCQllbmQKCgkJCQkJCQkJCQlpZiBkYXRhMy5jdXJyZW50LnZhbHVlID09ICdtZW51cGVyc29fYWN0aW9uc19IdW1vcl9zdXBlcicgdGhlbgoJCQkJCQkJCQkJCWFuaW1zQWN0aW9uKHsgbGliID0gImFuaW1AbXBfcGxheWVyX2ludGNlbGVicmF0aW9ubWFsZUB0aHVtYnNfdXAiLCBhbmltID0gInRodW1ic191cCIgfSkKCQkJCQkJCQkJCWVuZAoKCQkJCQkJCQkJCWlmIGRhdGEzLmN1cnJlbnQudmFsdWUgPT0gJ21lbnVwZXJzb19hY3Rpb25zX0h1bW9yX2NhbG1ldG9pJyB0aGVuCgkJCQkJCQkJCQkJYW5pbXNBY3Rpb24oeyBsaWIgPSAiZ2VzdHVyZXNAbUBzdGFuZGluZ0BjYXN1YWwiLCBhbmltID0gImdlc3R1cmVfZWFzeV9ub3ciIH0pCgkJCQkJCQkJCQllbmQKCgkJCQkJCQkJCQlpZiBkYXRhMy5jdXJyZW50LnZhbHVlID09ICdtZW51cGVyc29fYWN0aW9uc19IdW1vcl9hdm9pcnBldXInIHRoZW4KCQkJCQkJCQkJCQlhbmltc0FjdGlvbih7IGxpYiA9ICJhbWJAY29kZV9odW1hbl9jb3dlcl9zdGFuZEBmZW1hbGVAaWRsZV9hIiwgYW5pbSA9ICJpZGxlX2MiIH0pCgkJCQkJCQkJCQllbmQKCgkJCQkJCQkJCQlpZiBkYXRhMy5jdXJyZW50LnZhbHVlID09ICdtZW51cGVyc29fYWN0aW9uc19IdW1vcl9jZXN0cGFzcG9zc2libGUnIHRoZW4KCQkJCQkJCQkJCQlhbmltc0FjdGlvbih7IGxpYiA9ICJnZXN0dXJlc0BtQHN0YW5kaW5nQGNhc3VhbCIsIGFuaW0gPSAiZ2VzdHVyZV9kYW1uIiB9KQoJCQkJCQkJCQkJZW5kCgoJCQkJCQkJCQkJaWYgZGF0YTMuY3VycmVudC52YWx1ZSA9PSAnbWVudXBlcnNvX2FjdGlvbnNfSHVtb3JfZW5sYWNlcicgdGhlbgoJCQkJCQkJCQkJCWFuaW1zQWN0aW9uKHsgbGliID0gIm1wX3BlZF9pbnRlcmFjdGlvbiIsIGFuaW0gPSAia2lzc2VzX2d1eV9hIiB9KQoJCQkJCQkJCQkJZW5kCgoJCQkJCQkJCQkJaWYgZGF0YTMuY3VycmVudC52YWx1ZSA9PSAnbWVudXBlcnNvX2FjdGlvbnNfSHVtb3JfZG9pZ2h0ZGhvbm5ldXInIHRoZW4KCQkJCQkJCQkJCQlhbmltc0FjdGlvbih7IGxpYiA9ICJtcF9wbGF5ZXJfaW50X3VwcGVyZmluZ2VyIiwgYW5pbSA9ICJtcF9wbGF5ZXJfaW50X2Zpbmdlcl8wMV9lbnRlciIgfSkKCQkJCQkJCQkJCWVuZAoKCQkJCQkJCQkJCWlmIGRhdGEzLmN1cnJlbnQudmFsdWUgPT0gJ21lbnVwZXJzb19hY3Rpb25zX0h1bW9yX2JyYW5sZXVyJyB0aGVuCgkJCQkJCQkJCQkJYW5pbXNBY3Rpb24oeyBsaWIgPSAibXBfcGxheWVyX2ludF91cHBlcndhbmsiLCBhbmltID0gIm1wX3BsYXllcl9pbnRfd2Fua18wMSIgfSkKCQkJCQkJCQkJCWVuZAoKCQkJCQkJCQkJCWlmIGRhdGEzLmN1cnJlbnQudmFsdWUgPT0gJ21lbnVwZXJzb19hY3Rpb25zX0h1bW9yX2JhbGxlZGFuc2xhdGV0ZScgdGhlbgoJCQkJCQkJCQkJCWFuaW1zQWN0aW9uKHsgbGliID0gIm1wX3N1aWNpZGUiLCBhbmltID0gInBpc3RvbCIgfSkKCQkJCQkJCQkJCWVuZAoKCQkJCQkJCQkJZW5kLAoJCQkJCQkJCQlmdW5jdGlvbihkYXRhMywgbWVudTMpCgkJCQkJCQkJCQltZW51My5jbG9zZSgpCgkJCQkJCQkJCWVuZAoJCQkJCQkJCSkKCQkJCQkJCWVuZAoKCQkJCQkJCWlmIGRhdGEyLmN1cnJlbnQudmFsdWUgPT0gJ21lbnVwZXJzb19hY3Rpb25zX1RyYXZhaWwnIHRoZW4KCQkJCQkJCQlFU1guVUkuTWVudS5PcGVuKAoJCQkJCQkJCQknZGVmYXVsdCcsIEdldEN1cnJlbnRSZXNvdXJjZU5hbWUoKSwgJ21lbnVwZXJzb19hY3Rpb25zX1RyYXZhaWwnLAoJCQkJCQkJCQl7CgkJCQkJCQkJCQl0aXRsZSAgICA9ICdBbmltYXRpb25zIFRyYXZhaWwnLAoJCQkJCQkJCQkJYWxpZ24gICAgPSAndG9wLWxlZnQnLAoJCQkJCQkJCQkJZWxlbWVudHMgPSB7CgkJCQkJCQkJCQkJe2xhYmVsID0gJ1DDqmNoZXVyJywgIHZhbHVlID0gJ21lbnVwZXJzb19hY3Rpb25zX1RyYXZhaWxfcGVjaGV1cid9LAoJCQkJCQkJCQkJCXtsYWJlbCA9ICdBZ3JpY3VsdGV1cicsICAgICB2YWx1ZSA9ICdtZW51cGVyc29fYWN0aW9uc19UcmF2YWlsX2FncmljdWx0ZXVyJ30sCgkJCQkJCQkJCQkJe2xhYmVsID0gJ0TDqXBhbm5ldXInLCAgICAgdmFsdWUgPSAnbWVudXBlcnNvX2FjdGlvbnNfVHJhdmFpbF9kZXBhbm5ldXInfSwKCQkJCQkJCQkJCQl7bGFiZWwgPSAnUHJlbmRyZSBkZXMgbm90ZXMnLCAgdmFsdWUgPSAnbWVudXBlcnNvX2FjdGlvbnNfVHJhdmFpbF9wcmVuZHJlZGVzbm90ZXMnfSwKCQkJCQkJCQkJCQl7bGFiZWwgPSAnSW5zcGVjdGVyJywgIHZhbHVlID0gJ21lbnVwZXJzb19hY3Rpb25zX1RyYXZhaWxfaW5zcGVjdGVyJ30sCgkJCQkJCQkJCQl9LAoJCQkJCQkJCQl9LAoJCQkJCQkJCQlmdW5jdGlvbihkYXRhMywgbWVudTMpCgoJCQkJCQkJCQkJaWYgZGF0YTMuY3VycmVudC52YWx1ZSA9PSAnbWVudXBlcnNvX2FjdGlvbnNfVHJhdmFpbF9wZWNoZXVyJyB0aGVuCgkJCQkJCQkJCQkJYW5pbXNBY3Rpb25TY2VuYXJpbyh7YW5pbSA9ICJ3b3JsZF9odW1hbl9zdGFuZF9maXNoaW5nIiB9KQoJCQkJCQkJCQkJZW5kCgoJCQkJCQkJCQkJaWYgZGF0YTMuY3VycmVudC52YWx1ZSA9PSAnbWVudXBlcnNvX2FjdGlvbnNfVHJhdmFpbF9hZ3JpY3VsdGV1cicgdGhlbgoJCQkJCQkJCQkJCWFuaW1zQWN0aW9uU2NlbmFyaW8oe2FuaW0gPSAid29ybGRfaHVtYW5fZ2FyZGVuZXJfcGxhbnQiIH0pCgkJCQkJCQkJCQllbmQKCgkJCQkJCQkJCQlpZiBkYXRhMy5jdXJyZW50LnZhbHVlID09ICdtZW51cGVyc29fYWN0aW9uc19UcmF2YWlsX2RlcGFubmV1cicgdGhlbgoJCQkJCQkJCQkJCWFuaW1zQWN0aW9uU2NlbmFyaW8oe2FuaW0gPSAid29ybGRfaHVtYW5fdmVoaWNsZV9tZWNoYW5pYyIgfSkKCQkJCQkJCQkJCWVuZAoKCQkJCQkJCQkJCWlmIGRhdGEzLmN1cnJlbnQudmFsdWUgPT0gJ21lbnVwZXJzb19hY3Rpb25zX1RyYXZhaWxfcHJlbmRyZWRlc25vdGVzJyB0aGVuCgkJCQkJCQkJCQkJYW5pbXNBY3Rpb25TY2VuYXJpbyh7YW5pbSA9ICJXT1JMRF9IVU1BTl9DTElQQk9BUkQiIH0pCgkJCQkJCQkJCQllbmQKCgkJCQkJCQkJCQlpZiBkYXRhMy5jdXJyZW50LnZhbHVlID09ICdtZW51cGVyc29fYWN0aW9uc19UcmF2YWlsX2luc3BlY3RlcicgdGhlbgoJCQkJCQkJCQkJCWFuaW1zQWN0aW9uU2NlbmFyaW8oe2FuaW0gPSAiQ09ERV9IVU1BTl9NRURJQ19LTkVFTCIgfSkKCQkJCQkJCQkJCWVuZAoKCQkJCQkJCQkJZW5kLAoJCQkJCQkJCQlmdW5jdGlvbihkYXRhMywgbWVudTMpCgkJCQkJCQkJCQltZW51My5jbG9zZSgpCgkJCQkJCQkJCWVuZAoJCQkJCQkJCSkKCQkJCQkJCWVuZAoKCQkJCQkJCWlmIGRhdGEyLmN1cnJlbnQudmFsdWUgPT0gJ21lbnVwZXJzb19hY3Rpb25zX0Zlc3RpdmVzJyB0aGVuCgkJCQkJCQkJRVNYLlVJLk1lbnUuT3BlbigKCQkJCQkJCQkJJ2RlZmF1bHQnLCBHZXRDdXJyZW50UmVzb3VyY2VOYW1lKCksICdtZW51cGVyc29fYWN0aW9uc19GZXN0aXZlcycsCgkJCQkJCQkJCXsKCQkJCQkJCQkJCXRpdGxlICAgID0gJ0FuaW1hdGlvbnMgRmVzdGl2ZXMnLAoJCQkJCQkJCQkJYWxpZ24gICAgPSAndG9wLWxlZnQnLAoJCQkJCQkJCQkJZWxlbWVudHMgPSB7CgkJCQkJCQkJCQkJe2xhYmVsID0gJ0RhbnNlcicsICB2YWx1ZSA9ICdtZW51cGVyc29fYWN0aW9uc19GZXN0aXZlc19kYW5zZXInfSwKCQkJCQkJCQkJCQl7bGFiZWwgPSAnSm91ZXIgZGUgbGEgbXVzaXF1ZScsICAgICB2YWx1ZSA9ICdtZW51cGVyc29fYWN0aW9uc19GZXN0aXZlc19qb3VlcmRlbGFtdXNpcXVlJ30sCgkJCQkJCQkJCQkJe2xhYmVsID0gJ0JvaXJlIHVuZSBiaWVyZScsICAgICB2YWx1ZSA9ICdtZW51cGVyc29fYWN0aW9uc19GZXN0aXZlc19ib2lyZXVuZWJpZXJlJ30sCgkJCQkJCQkJCQkJe2xhYmVsID0gJ0FpciBHdWl0YXInLCAgdmFsdWUgPSAnbWVudXBlcnNvX2FjdGlvbnNfRmVzdGl2ZXNfYWlyZ3VpdGFyJ30sCgkJCQkJCQkJCQl9LAoJCQkJCQkJCQl9LAoJCQkJCQkJCQlmdW5jdGlvbihkYXRhMywgbWVudTMpCgoJCQkJCQkJCQkJaWYgZGF0YTMuY3VycmVudC52YWx1ZSA9PSAnbWVudXBlcnNvX2FjdGlvbnNfRmVzdGl2ZXNfZGFuc2VyJyB0aGVuCgkJCQkJCQkJCQkJYW5pbXNBY3Rpb24oeyBsaWIgPSAiYW1iQHdvcmxkX2h1bWFuX3BhcnR5aW5nQGZlbWFsZUBwYXJ0eWluZ19iZWVyQGJhc2UiLCBhbmltID0gImJhc2UiIH0pCgkJCQkJCQkJCQllbmQKCgkJCQkJCQkJCQlpZiBkYXRhMy5jdXJyZW50LnZhbHVlID09ICdtZW51cGVyc29fYWN0aW9uc19GZXN0aXZlc19qb3VlcmRlbGFtdXNpcXVlJyB0aGVuCgkJCQkJCQkJCQkJYW5pbXNBY3Rpb25TY2VuYXJpbyh7YW5pbSA9ICJXT1JMRF9IVU1BTl9NVVNJQ0lBTiIgfSkKCQkJCQkJCQkJCWVuZAoKCQkJCQkJCQkJCWlmIGRhdGEzLmN1cnJlbnQudmFsdWUgPT0gJ21lbnVwZXJzb19hY3Rpb25zX0Zlc3RpdmVzX2JvaXJldW5lYmllcmUnIHRoZW4KCQkJCQkJCQkJCQlhbmltc0FjdGlvblNjZW5hcmlvKHthbmltID0gIldPUkxEX0hVTUFOX0RSSU5LSU5HIiB9KQoJCQkJCQkJCQkJZW5kCgoJCQkJCQkJCQkJaWYgZGF0YTMuY3VycmVudC52YWx1ZSA9PSAnbWVudXBlcnNvX2FjdGlvbnNfRmVzdGl2ZXNfYWlyZ3VpdGFyJyB0aGVuCgkJCQkJCQkJCQkJYW5pbXNBY3Rpb24oeyBsaWIgPSAiYW5pbUBtcF9wbGF5ZXJfaW50Y2VsZWJyYXRpb25mZW1hbGVAYWlyX2d1aXRhciIsIGFuaW0gPSAiYWlyX2d1aXRhciIgfSkKCQkJCQkJCQkJCWVuZAoKCQkJCQkJCQkJZW5kLAoJCQkJCQkJCQlmdW5jdGlvbihkYXRhMywgbWVudTMpCgkJCQkJCQkJCQltZW51My5jbG9zZSgpCgkJCQkJCQkJCWVuZAoJCQkJCQkJCSkKCQkJCQkJCWVuZAoKCQkJCQkJCWlmIGRhdGEyLmN1cnJlbnQudmFsdWUgPT0gJ21lbnVwZXJzb19hY3Rpb25zX090aGVycycgdGhlbgoJCQkJCQkJCUVTWC5VSS5NZW51Lk9wZW4oCgkJCQkJCQkJCSdkZWZhdWx0JywgR2V0Q3VycmVudFJlc291cmNlTmFtZSgpLCAnbWVudXBlcnNvX2FjdGlvbnNfT3RoZXJzJywKCQkJCQkJCQkJewoJCQkJCQkJCQkJdGl0bGUgICAgPSAnQW5pbWF0aW9ucyBEaXZlcnNlcycsCgkJCQkJCQkJCQlhbGlnbiAgICA9ICd0b3AtbGVmdCcsCgkJCQkJCQkJCQllbGVtZW50cyA9IHsKCQkJCQkJCQkJCQl7bGFiZWwgPSAnRnVtZXIgdW5lIGNsb3BlJywgICAgIHZhbHVlID0gJ21lbnVwZXJzb19hY3Rpb25zX090aGVyc19mdW1lcnVuZWNsb3BlJ30sCgkJCQkJCQkJCQkJe2xhYmVsID0gJ0ZhaXJlIGRlcyBwb21wZXMnLCAgICAgdmFsdWUgPSAnbWVudXBlcnNvX2FjdGlvbnNfT3RoZXJzX2ZhaXJlZGVzcG9tcGVzJ30sCgkJCQkJCQkJCQkJe2xhYmVsID0gJ1JlZ2FyZGVyIGF1eCBqdW1lbGxlcycsICAgICB2YWx1ZSA9ICdtZW51cGVyc29fYWN0aW9uc19PdGhlcnNfcmVnYXJkZXJhdXhqdW1lbGxlcyd9LAoJCQkJCQkJCQkJCXtsYWJlbCA9ICdGYWlyZSBkdSBZb2dhJywgICAgIHZhbHVlID0gJ21lbnVwZXJzb19hY3Rpb25zX090aGVyc19mYWlyZWR1eW9nYSd9LAoJCQkJCQkJCQkJCXtsYWJlbCA9ICdGYWlyZSBsYSBzdGF0dWUnLCAgICAgdmFsdWUgPSAnbWVudXBlcnNvX2FjdGlvbnNfT3RoZXJzX2ZhaXJlbGFzdGF0dXQnfSwKCQkJCQkJCQkJCQl7bGFiZWwgPSAnRmFpcmUgZHUgam9nZ2luZycsICAgICB2YWx1ZSA9ICdtZW51cGVyc29fYWN0aW9uc19PdGhlcnNfZmFpcmVkdWpvZ2dpbmcnfSwKCQkJCQkJCQkJCQl7bGFiZWwgPSAnTW9udHJlciBzZXMgbXVzY2xlcycsICAgICB2YWx1ZSA9ICdtZW51cGVyc29fYWN0aW9uc19PdGhlcnNfZmFpcmVkZXNldGlyZW1lbnRzJ30sCgkJCQkJCQkJCQkJe2xhYmVsID0gJ1JhY29sbGVyJywgICAgIHZhbHVlID0gJ21lbnVwZXJzb19hY3Rpb25zX090aGVyc19yYWNvbGxlcid9LAoJCQkJCQkJCQkJCXtsYWJlbCA9ICdSYWNvbGxlciAyJywgICAgIHZhbHVlID0gJ21lbnVwZXJzb19hY3Rpb25zX090aGVyc19yYWNvbGxlcjInfSwKCQkJCQkJCQkJCQl7bGFiZWwgPSAnU1wnYXNzZW9pcicsICAgICB2YWx1ZSA9ICdtZW51cGVyc29fYWN0aW9uc19PdGhlcnNfc2Fzc2VvaXInfSwKCQkJCQkJCQkJCQl7bGFiZWwgPSAnU1wnYXNzZW9pciAoUGFyIHRlcnJlKScsICAgICB2YWx1ZSA9ICdtZW51cGVyc29fYWN0aW9uc19PdGhlcnNfc2Fzc2VvaXJwYXJ0ZXJyZSd9LAoJCQkJCQkJCQkJCXtsYWJlbCA9ICdBdHRlbmRyZScsICAgICB2YWx1ZSA9ICdtZW51cGVyc29fYWN0aW9uc19PdGhlcnNfYXR0ZW5kcmUnfSwKCQkJCQkJCQkJCQl7bGFiZWwgPSAnTmV0dG95ZXIgcXVlbHF1ZSBjaG9zZScsICAgICB2YWx1ZSA9ICdtZW51cGVyc29fYWN0aW9uc19PdGhlcnNfbmV0dG95ZXJxdWVscXVlY2hvc2UnfSwKCQkJCQkJCQkJCQl7bGFiZWwgPSAnTGV2ZXIgbGVzIG1haW5zJywgICAgIHZhbHVlID0gJ21lbnVwZXJzb19hY3Rpb25zX090aGVyc19sZXZlcmxlc21haW5zJ30sCgkJCQkJCQkJCQkJe2xhYmVsID0gJ1Bvc2l0aW9uIGRlIEZvdWlsbGUnLCAgICAgdmFsdWUgPSAnbWVudXBlcnNvX2FjdGlvbnNfT3RoZXJzX3Bvc2l0aW9uZGVmb3VpbGxlJ30sCgkJCQkJCQkJCQkJe2xhYmVsID0gJ1NlIGdyYXR0ZXIgbGVzIGMqKicsICAgICB2YWx1ZSA9ICdtZW51cGVyc29fYWN0aW9uc19PdGhlcnNfc2VncmF0dGVybGVzYyd9LAoJCQkJCQkJCQkJCXtsYWJlbCA9ICdQcmVuZHJlIHVuIHNlbGZpZScsICAgICB2YWx1ZSA9ICdtZW51cGVyc29fYWN0aW9uc19PdGhlcnNfcHJlbmRyZXVuc2VsZmllJ30sCgkJCQkJCQkJCQl9LAoJCQkJCQkJCQl9LAoJCQkJCQkJCQlmdW5jdGlvbihkYXRhMywgbWVudTMpCgoJCQkJCQkJCQkJaWYgZGF0YTMuY3VycmVudC52YWx1ZSA9PSAnbWVudXBlcnNvX2FjdGlvbnNfT3RoZXJzX2Z1bWVydW5lY2xvcGUnIHRoZW4KCQkJCQkJCQkJCQlhbmltc0FjdGlvblNjZW5hcmlvKHsgYW5pbSA9ICJXT1JMRF9IVU1BTl9TTU9LSU5HIiB9KQoJCQkJCQkJCQkJZW5kCgoJCQkJCQkJCQkJaWYgZGF0YTMuY3VycmVudC52YWx1ZSA9PSAnbWVudXBlcnNvX2FjdGlvbnNfT3RoZXJzX2ZhaXJlZGVzcG9tcGVzJyB0aGVuCgkJCQkJCQkJCQkJYW5pbXNBY3Rpb25TY2VuYXJpbyh7IGFuaW0gPSAiV09STERfSFVNQU5fUFVTSF9VUFMiIH0pCgkJCQkJCQkJCQllbmQKCgkJCQkJCQkJCQlpZiBkYXRhMy5jdXJyZW50LnZhbHVlID09ICdtZW51cGVyc29fYWN0aW9uc19PdGhlcnNfcmVnYXJkZXJhdXhqdW1lbGxlcycgdGhlbgoJCQkJCQkJCQkJCWFuaW1zQWN0aW9uU2NlbmFyaW8oeyBhbmltID0gIldPUkxEX0hVTUFOX0JJTk9DVUxBUlMiIH0pCgkJCQkJCQkJCQllbmQKCgkJCQkJCQkJCQlpZiBkYXRhMy5jdXJyZW50LnZhbHVlID09ICdtZW51cGVyc29fYWN0aW9uc19PdGhlcnNfZmFpcmVkdXlvZ2EnIHRoZW4KCQkJCQkJCQkJCQlhbmltc0FjdGlvblNjZW5hcmlvKHsgYW5pbSA9ICJXT1JMRF9IVU1BTl9ZT0dBIiB9KQoJCQkJCQkJCQkJZW5kCgoJCQkJCQkJCQkJaWYgZGF0YTMuY3VycmVudC52YWx1ZSA9PSAnbWVudXBlcnNvX2FjdGlvbnNfT3RoZXJzX2ZhaXJlbGFzdGF0dXQnIHRoZW4KCQkJCQkJCQkJCQlhbmltc0FjdGlvblNjZW5hcmlvKHsgYW5pbSA9ICJXT1JMRF9IVU1BTl9IVU1BTl9TVEFUVUUiIH0pCgkJCQkJCQkJCQllbmQKCgkJCQkJCQkJCQlpZiBkYXRhMy5jdXJyZW50LnZhbHVlID09ICdtZW51cGVyc29fYWN0aW9uc19PdGhlcnNfZmFpcmVkdWpvZ2dpbmcnIHRoZW4KCQkJCQkJCQkJCQlhbmltc0FjdGlvblNjZW5hcmlvKHsgYW5pbSA9ICJXT1JMRF9IVU1BTl9KT0dfU1RBTkRJTkciIH0pCgkJCQkJCQkJCQllbmQKCgkJCQkJCQkJCQlpZiBkYXRhMy5jdXJyZW50LnZhbHVlID09ICdtZW51cGVyc29fYWN0aW9uc19PdGhlcnNfZmFpcmVkZXNldGlyZW1lbnRzJyB0aGVuCgkJCQkJCQkJCQkJYW5pbXNBY3Rpb25TY2VuYXJpbyh7IGFuaW0gPSAiV09STERfSFVNQU5fTVVTQ0xFX0ZMRVgiIH0pCgkJCQkJCQkJCQllbmQKCgkJCQkJCQkJCQlpZiBkYXRhMy5jdXJyZW50LnZhbHVlID09ICdtZW51cGVyc29fYWN0aW9uc19PdGhlcnNfcmFjb2xsZXInIHRoZW4KCQkJCQkJCQkJCQlhbmltc0FjdGlvblNjZW5hcmlvKHsgYW5pbSA9ICJXT1JMRF9IVU1BTl9QUk9TVElUVVRFX0hJR0hfQ0xBU1MiIH0pCgkJCQkJCQkJCQllbmQKCgkJCQkJCQkJCQlpZiBkYXRhMy5jdXJyZW50LnZhbHVlID09ICdtZW51cGVyc29fYWN0aW9uc19PdGhlcnNfcmFjb2xsZXIyJyB0aGVuCgkJCQkJCQkJCQkJYW5pbXNBY3Rpb25TY2VuYXJpbyh7IGFuaW0gPSAiV09STERfSFVNQU5fUFJPU1RJVFVURV9MT1dfQ0xBU1MiIH0pCgkJCQkJCQkJCQllbmQKCgkJCQkJCQkJCQlpZiBkYXRhMy5jdXJyZW50LnZhbHVlID09ICdtZW51cGVyc29fYWN0aW9uc19PdGhlcnNfc2Fzc2VvaXInIHRoZW4KCQkJCQkJCQkJCQlhbmltc0FjdGlvbih7IGxpYiA9ICJhbmltQGhlaXN0c0Bwcmlzb25faGVpc3R1bmZpbmlzaGVkX2JpenRhcmdldF9pZGxlIiwgYW5pbSA9ICJ0YXJnZXRfaWRsZSIgfSkKCQkJCQkJCQkJCWVuZAoKCQkJCQkJCQkJCWlmIGRhdGEzLmN1cnJlbnQudmFsdWUgPT0gJ21lbnVwZXJzb19hY3Rpb25zX090aGVyc19zYXNzZW9pcnBhcnRlcnJlJyB0aGVuCgkJCQkJCQkJCQkJYW5pbXNBY3Rpb25TY2VuYXJpbyh7IGFuaW0gPSAiV09STERfSFVNQU5fUElDTklDIiB9KQoJCQkJCQkJCQkJZW5kCgoJCQkJCQkJCQkJaWYgZGF0YTMuY3VycmVudC52YWx1ZSA9PSAnbWVudXBlcnNvX2FjdGlvbnNfT3RoZXJzX2F0dGVuZHJlJyB0aGVuCgkJCQkJCQkJCQkJYW5pbXNBY3Rpb25TY2VuYXJpbyh7IGFuaW0gPSAid29ybGRfaHVtYW5fbGVhbmluZyIgfSkKCQkJCQkJCQkJCWVuZAoKCQkJCQkJCQkJCWlmIGRhdGEzLmN1cnJlbnQudmFsdWUgPT0gJ21lbnVwZXJzb19hY3Rpb25zX090aGVyc19uZXR0b3llcnF1ZWxxdWVjaG9zZScgdGhlbgoJCQkJCQkJCQkJCWFuaW1zQWN0aW9uU2NlbmFyaW8oeyBhbmltID0gIndvcmxkX2h1bWFuX21haWRfY2xlYW4iIH0pCgkJCQkJCQkJCQllbmQKCgkJCQkJCQkJCQlpZiBkYXRhMy5jdXJyZW50LnZhbHVlID09ICdtZW51cGVyc29fYWN0aW9uc19PdGhlcnNfbGV2ZXJsZXNtYWlucycgdGhlbgoJCQkJCQkJCQkJCWFuaW1zQWN0aW9uKHsgbGliID0gInJhbmRvbUBtdWdnaW5nMyIsIGFuaW0gPSAiaGFuZHN1cF9zdGFuZGluZ19iYXNlIiB9KQoJCQkJCQkJCQkJZW5kCgoJCQkJCQkJCQkJaWYgZGF0YTMuY3VycmVudC52YWx1ZSA9PSAnbWVudXBlcnNvX2FjdGlvbnNfT3RoZXJzX3Bvc2l0aW9uZGVmb3VpbGxlJyB0aGVuCgkJCQkJCQkJCQkJYW5pbXNBY3Rpb24oeyBsaWIgPSAibWluaUBwcm9zdGl0dXRlc0BzZXhsb3dfdmVoIiwgYW5pbSA9ICJsb3dfY2FyX2JqX3RvX3Byb3BfZmVtYWxlIiB9KQoJCQkJCQkJCQkJZW5kCgoJCQkJCQkJCQkJaWYgZGF0YTMuY3VycmVudC52YWx1ZSA9PSAnbWVudXBlcnNvX2FjdGlvbnNfT3RoZXJzX3NlZ3JhdHRlcmxlc2MnIHRoZW4KCQkJCQkJCQkJCQlhbmltc0FjdGlvbih7IGxpYiA9ICJtcF9wbGF5ZXJfaW50X3VwcGVyZ3JhYl9jcm90Y2giLCBhbmltID0gIm1wX3BsYXllcl9pbnRfZ3JhYl9jcm90Y2giIH0pCgkJCQkJCQkJCQllbmQKCgkJCQkJCQkJCQlpZiBkYXRhMy5jdXJyZW50LnZhbHVlID09ICdtZW51cGVyc29fYWN0aW9uc19PdGhlcnNfcHJlbmRyZXVuc2VsZmllJyB0aGVuCgkJCQkJCQkJCQkJYW5pbXNBY3Rpb25TY2VuYXJpbyh7IGFuaW0gPSAid29ybGRfaHVtYW5fdG91cmlzdF9tb2JpbGUiIH0pCgkJCQkJCQkJCQllbmQKCgkJCQkJCQkJCWVuZCwKCQkJCQkJCQkJZnVuY3Rpb24oZGF0YTMsIG1lbnUzKQoJCQkJCQkJCQkJbWVudTMuY2xvc2UoKQoJCQkJCQkJCQllbmQKCQkJCQkJCQkpCgkJCQkJCQllbmQKCQkJCQkJCQoJCQkJCQkJCgkJCQkJCWVuZCwKCQkJCQkJZnVuY3Rpb24oZGF0YTIsIG1lbnUyKQoJCQkJCQkJbWVudTIuY2xvc2UoKQoJCQkJCQllbmQKCQkJCQkpCgoJCQkJZW5k