From 88697189631590cc015de5585209361995e992fe Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Mon, 9 Sep 2013 23:35:50 -0700 Subject: [PATCH 1/3] Customisation kits for Taj engineers. --- code/modules/clothing/clothing.dm | 13 ++++++++++ code/modules/clothing/spacesuits/rig.dm | 34 +++++++++++++++++++++++-- 2 files changed, 45 insertions(+), 2 deletions(-) diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 52c3c7cdc67..6a6c3747300 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -78,6 +78,19 @@ BLIND // can't see anything attack_verb = list("challenged") species_restricted = list("exclude","Unathi","Tajara") +/obj/item/clothing/under/attackby(obj/item/I, mob/user) + + if(istype(I, /obj/item/weapon/wirecutters)) + if("excluded" in species_restricted && ("Tajaran" in species_restricted || "Unathi" in species_restricted)) + species_restricted -= "Unathi" + species_restricted -= "Tajaran" + name = "mangled [name]" + user.visible_message("\red [user] snips the fingertips off [src].","\red You snip the fingertips off [src].") + else + user << "\red You cannot modify [src]." + return + ..() + /obj/item/clothing/gloves/examine() set src in usr ..() diff --git a/code/modules/clothing/spacesuits/rig.dm b/code/modules/clothing/spacesuits/rig.dm index 24b209f9a6f..b075d929167 100644 --- a/code/modules/clothing/spacesuits/rig.dm +++ b/code/modules/clothing/spacesuits/rig.dm @@ -1,3 +1,33 @@ +//Species modification item. + +/obj/item/weapon/modkit/tajaran + name = "hardsuit modification kit" + desc = "A kit containing all the needed tools and parts to modify a hardsuit for another species. This one looks like it's meant for Tajara." + icon = 'icons/obj/custom_items.dmi' + icon_state = "royce_kit" + +/obj/item/clothing/head/helmet/space/rig/attackby(obj/item/I as obj, mob/user as mob) + if(istype(I,/obj/item/weapon/modkit/tajaran)) + user.drop_item() + playsound(src.loc, 'sound/items/Screwdriver.ogg', 100, 1) + user << "\red You painstakingly modify [src] to make it more suitable for a Tajaran user." + new /obj/item/clothing/head/helmet/space/rig/tajara(user.loc) + del(I) + del(src) + return + ..() + +/obj/item/clothing/suit/space/rig/attackby(obj/item/I as obj, mob/user as mob) + if(istype(I,/obj/item/weapon/modkit/tajaran)) + user.drop_item() + playsound(src.loc, 'sound/items/Screwdriver.ogg', 100, 1) + user << "\red You painstakingly modify [src] to make it more suitable for a Tajaran user." + new /obj/item/clothing/suit/space/rig/tajara(user.loc) + del(I) + del(src) + return + ..() + //Regular rig suits /obj/item/clothing/head/helmet/space/rig name = "engineering hardsuit helmet" @@ -12,7 +42,7 @@ icon_action_button = "action_hardhat" heat_protection = HEAD max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECITON_TEMPERATURE - species_restricted = list("exclude","Unathi","Tajara","Skrell","Diona","Vox") + species_restricted = list("exclude","Unathi","Tajaran","Skrell","Diona","Vox") attack_self(mob/user) if(!isturf(user.loc)) @@ -47,7 +77,7 @@ allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/weapon/storage/bag/ore,/obj/item/device/t_scanner,/obj/item/weapon/pickaxe, /obj/item/weapon/rcd) heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECITON_TEMPERATURE - species_restricted = list("exclude","Unathi","Tajara","Diona","Vox") + species_restricted = list("exclude","Unathi","Tajaran","Diona","Vox") //Chief Engineer's rig /obj/item/clothing/head/helmet/space/rig/elite From ca5036fd712d3427b20c1e24045035eea15eea94 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Tue, 10 Sep 2013 00:15:37 -0700 Subject: [PATCH 2/3] Wirecutter use on gloves will remove Tajaran and Unathi restrictions. --- code/modules/clothing/clothing.dm | 17 +-------- code/modules/clothing/gloves/stungloves.dm | 43 +++++++++++++++++----- 2 files changed, 35 insertions(+), 25 deletions(-) diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 6a6c3747300..16beaacac93 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -76,20 +76,7 @@ BLIND // can't see anything body_parts_covered = HANDS slot_flags = SLOT_GLOVES attack_verb = list("challenged") - species_restricted = list("exclude","Unathi","Tajara") - -/obj/item/clothing/under/attackby(obj/item/I, mob/user) - - if(istype(I, /obj/item/weapon/wirecutters)) - if("excluded" in species_restricted && ("Tajaran" in species_restricted || "Unathi" in species_restricted)) - species_restricted -= "Unathi" - species_restricted -= "Tajaran" - name = "mangled [name]" - user.visible_message("\red [user] snips the fingertips off [src].","\red You snip the fingertips off [src].") - else - user << "\red You cannot modify [src]." - return - ..() + species_restricted = list("exclude","Unathi","Tajaran") /obj/item/clothing/gloves/examine() set src in usr @@ -134,7 +121,7 @@ BLIND // can't see anything permeability_coefficient = 0.50 slowdown = SHOES_SLOWDOWN - species_restricted = list("exclude","Unathi","Tajara") + species_restricted = list("exclude","Unathi","Tajaran") //Suit /obj/item/clothing/suit diff --git a/code/modules/clothing/gloves/stungloves.dm b/code/modules/clothing/gloves/stungloves.dm index dd531389681..ea3dd1dc3f4 100644 --- a/code/modules/clothing/gloves/stungloves.dm +++ b/code/modules/clothing/gloves/stungloves.dm @@ -4,18 +4,21 @@ ..() return if(istype(W, /obj/item/weapon/cable_coil)) - var/obj/item/weapon/cable_coil/C = W - if(!wired) - if(C.amount >= 2) - C.use(2) - wired = 1 - siemens_coefficient = 3.0 - user << "You wrap some wires around [src]." - update_icon() + if(!("stunglove" in species_restricted)) + var/obj/item/weapon/cable_coil/C = W + if(!wired) + if(C.amount >= 2) + C.use(2) + wired = 1 + siemens_coefficient = 3.0 + user << "You wrap some wires around [src]." + update_icon() + else + user << "There is not enough wire to cover [src]." else - user << "There is not enough wire to cover [src]." + user << "[src] are already wired." else - user << "[src] are already wired." + user << "" else if(istype(W, /obj/item/weapon/cell)) if(!wired) @@ -30,6 +33,26 @@ user << "[src] already have a cell." else if(istype(W, /obj/item/weapon/wirecutters)) + if("exclude" in species_restricted) + name = "mangled [name]" + species_restricted -= "Unathi" + species_restricted -= "Tajaran" + species_restricted += "stunglove" + + wired = null + + if(cell) + cell.updateicon() + cell.loc = get_turf(src.loc) + cell = null + + playsound(src.loc, 'sound/items/Wirecutter.ogg', 100, 1) + user.visible_message("\red [user] snips the fingertips off [src].","\red You snip the fingertips off [src].") + + update_icon() + + return + if(cell) cell.updateicon() cell.loc = get_turf(src.loc) From e68b284213dae2e0bfc0fbb2ce0f756298ddb087 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Tue, 10 Sep 2013 00:18:33 -0700 Subject: [PATCH 3/3] Variant hardsuit placement on the map. --- maps/tgstation2.dmm | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/maps/tgstation2.dmm b/maps/tgstation2.dmm index d773e5583d3..b9974f6a5b3 100644 --- a/maps/tgstation2.dmm +++ b/maps/tgstation2.dmm @@ -1635,7 +1635,7 @@ "aFw" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Medical_Surgery"; name = "Privacy Shutters"; opacity = 0},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/medical/sleeper) "aFx" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/maintenance/fpmaint) "aFy" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/item/device/radio/off,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva) -"aFz" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/table/reinforced,/obj/machinery/cell_charger,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/item/weapon/cable_coil{pixel_x = 3; pixel_y = -7},/obj/item/weapon/cable_coil{pixel_x = 3; pixel_y = -7},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva) +"aFz" = (/obj/machinery/light/small{dir = 4},/obj/structure/rack,/obj/item/clothing/suit/space/skrell/black,/obj/item/clothing/suit/space/skrell/white,/obj/item/clothing/head/helmet/space/skrell/black,/obj/item/clothing/head/helmet/space/skrell/white,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) "aFA" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) "aFB" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/item/device/radio/intercom{freerange = 1; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 30},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva) "aFC" = (/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/fore) @@ -6195,7 +6195,7 @@ "cpg" = (/obj/structure/cable,/obj/machinery/power/tracker,/turf/simulated/floor/plating/airless,/area/solar/starboard) "cph" = (/turf/space,/area/vox_station/southwest_solars) "cpi" = (/obj/machinery/the_singularitygen{anchored = 0},/turf/simulated/floor/plating,/area/engine/engineering) -"cpj" = (/obj/structure/closet/crate,/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/rods{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/weapon/airlock_electronics,/obj/item/weapon/airlock_electronics,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor/plating,/area/engine/engineering) +"cpj" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/table/reinforced,/obj/machinery/cell_charger,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/item/weapon/cable_coil{pixel_x = 3; pixel_y = -7},/obj/item/weapon/cable_coil{pixel_x = 3; pixel_y = -7},/obj/item/weapon/modkit/tajaran,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva) "cpk" = (/obj/machinery/portable_atmospherics/canister/toxins,/turf/simulated/floor/plating,/area/engine/engineering) "cpl" = (/obj/machinery/power/emitter,/turf/simulated/floor/plating,/area/engine/engineering) "cpm" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/engine/engineering) @@ -10171,6 +10171,7 @@ "dNE" = (/obj/structure/window/basic{dir = 1},/obj/structure/table,/obj/item/broken_device,/turf/simulated/shuttle/floor4,/area/shuttle/vox/station) "dNF" = (/obj/machinery/embedded_controller/radio/airlock_controller{airpump_tag = "vox_east_vent"; exterior_door_tag = "vox_northeast_lock"; frequency = 1331; id_tag = "vox_east_control"; interior_door_tag = "vox_southeast_lock"; pixel_x = -24; req_access_txt = "150"; sensor_tag = "vox_east_sensor"},/turf/simulated/shuttle/plating,/area/shuttle/vox/station) "dNG" = (/obj/item/clothing/head/collectable/petehat{desc = "It smells faintly of reptile."; name = "fancy leader hat"},/turf/simulated/shuttle/floor{icon_state = "floor4"; oxygen = 0},/area/shuttle/vox/station) +"dNH" = (/obj/structure/closet/crate,/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/rods{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/weapon/airlock_electronics,/obj/item/weapon/airlock_electronics,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/item/weapon/modkit/tajaran,/turf/simulated/floor/plating,/area/engine/engineering) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10280,9 +10281,9 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafatNazeatfazeaziaygaygazjazeatfazeazkayfayiazlatQaxpatQatQaWgaQmaQmaQmaQmaQxatQaznazoazpazqaznapxapxaOoaObaOnapxapxapxaoZarGaytaaaaafaaaaafaaaaafaaaaafaaaaytayxayyazrazsaztazuazvayyayzaoZaxBazwazwaBQazyazzazAazBazCazDaQZazFazFaxBayMapGazGalLayOatsaunatuatvatwaupazHazIazJazKazLazMazNazNazOazNasWazPazQazRazSazTazUasWaWGasYasYasYasYasYaWGasWaafaaaaaaaaaaaaaaaaafaafaaaaafaWFaXqazYaWHaWIaafaaaaaaaafaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaAbasZaYXavCaxsaAeaAfaAgaAhaxsavCaZJaKoasZaAkaAlatQaAmaAnaAnaAnaAnaAnaAnavIaAoaApaznaZKaAraAsaznaAtaoZaoZaoZaoZaoZaoZaoZaoZaAuaytaafaAvaAvaAvaAvaAvaAvaAvaafaytayxayyaAwaAxaAyaAzaAwayyayzaAAaxBaxBaxBaxBaABaACayCaADaACaAEaxBaxBaxBaxBayMapGaAFalLayOatsaunatuatvatwavmaAGazNazNazNazNazNazNaAHaAIaAJazNasWasWasWasWaAKasWasWaWGasYasYasYasYasYaWGasWaaaaaaaaaaaaaaeaaaaaaaaaaaaaafaALaAMaANaAOaALaafaaaaaaaafaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasXatfbaRaDaaDaaDaaDabaUatfasXaASasZaATaAUaAVaAVaAVaAVaAVaAVaAVaAVawuaAWaApaznaAXaAYaAZaznaBaaBbaBaaBaaBaaBaaBaaBaaBaaBaaBcaaaaAvaBdaBeaBfaBgaBhaAvaaaaytayxayyaAwaBiaBjaBkaAwayyayzapxaxBaBlaBmaBQaBnaBoazAaBpaBoaBqbaQaBsaBsaxBayMapGayNalLaBtasMavVatuavWaBuavmaAGazNaBvaAIaBwaBwazNaAHaBxaAJazNaByaBzaBAaBBaBCaBDaafbhobgSbgSbgSbgSbgSbgTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaALbgRaBIaBJaALaafaaaaaaaBKaBLaBLaBLaBLbfQbguaBLaBLaBLaBLaBOaBOaBLbeZbeebdMbcRbcqaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaBUaBVaBWaBVaBVaQBaEwaBVaBVaBWaBZaCaasZaziaCbaCcaCdaCeaCfaCgaChaCiaAVawuaCjatQaznaznaCkaClaBcaCmaCnaCoaCpaCqaCraCsaCtaCuaCvaBcaafaAvaCwaCxaCyaCzaCAaAvaafaytayxayyaCBaCCaCDaCCaCEayyayzaCFaxBayCayCaCGaCHaACaCIaADaACaCJaCKayCayLaxBayMapGayNalLayOawTawUaCLawWatwaCMaCNazNaCOaAIaAIaAIazOaCPaCQaCRazNaCSaCTaCUaCVaCWaBDaaaaafaaaaafaaaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaALaCXaCYaCZaALaBDaQCaQDaDcaDdaDeaDeaDeaDeaDeaDeaDfaDgaDgaDhaDiaDjaDgaDgaDkaDlaQYaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaBUaBVaBWaBVaBVaQBaEwaBVaBVaBWaBZaCaasZaziaCbaCcaCdaCeaCfaCgaChaCiaAVawuaCjatQaznaznaCkaClaBcaCmaCnaCoaCpaCqaCraCsaCtaCuaCvaBcaafaAvaCwaCxaCyaCzaCAaAvaafaytayxayyaCBaCCaCDaCCaCEayyayzaCFaxBayCayCaCGaCHaACaCIaADaACaCJaCKayCaFzaxBayMapGayNalLayOawTawUaCLawWatwaCMaCNazNaCOaAIaAIaAIazOaCPaCQaCRazNaCSaCTaCUaCVaCWaBDaaaaafaaaaafaaaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaALaCXaCYaCZaALaBDaQCaQDaDcaDdaDeaDeaDeaDeaDeaDeaDfaDgaDgaDhaDiaDjaDgaDgaDkaDlaQYaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBUaBZaBVaDnaDoaDoaDpaDqaDraDsaDtaDoaDoaDuaDvazeaziaDwaAVaDxaDyaDzaDAaDzaDBaDCaDDaDEarhaDFaDGaDHaAnaDIaDJaDKaDLaDLaDLaDMaDLaDLaDNaCnaBcaaaaAvaDOaDPaDQaCzaDRaAvaaaaytayxayyaDSaDTaDUaDVaDWayyayzaDXaxBaxBaxBaxBaDYaACayCaDZaBoaEaaQZaEbaEcaxBaEdasJaEealLayOaEfaEgaEgaEgaEgaEhaEiaEjaEkaElaEmaEmaEmaEnaEmaEoaEpaEqaEraEsaEtaEuaBDaBDaBDaBDaBDaBDaBDaBDaBDaBDaQCaQDaBDaBDaBDaQCaRFaRaaBDaBDaALaALaExaEyaALaEzaEAaEBaECaEDaEEaEEaEEaEEaEEaEzaEFaEGaEGaEHaEIaEJaEGaEKaELaEMaEKaEKaEKaEKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDuaENaEOaEPaDoaEQaDoaEQaDoaEQaDoaEQaDoaERaESaxsaziaETaAVaEUaEVaEWaEXaEYaEZaAVaFaaFbaAnaFcaAnaFdarhaBaaFeaDNaDLaDLaDLaDLaDLaDLaFfaFgaFhaFiaFjaFkaFlaFmaFnaFoaAvaafaytaFpaFqaFraFsaFtaFuaFvaFqaqkaFxaxBaFyayCaBQaFzaBoazAaFAaACaFBaxBaxBaxBaxBaFCaFDaFEalLaFFarAarAarAaFGaFHaFIaFJaFKaFLaFMaFKaFNaFKaFOaFKaFPaFQaFRaFSaFTaBBaFUaFVaFWaFXaFXaFVaFYaFZaFZaFZaFZaFZaGaaGbaFZaGcaGdaGeaGfaGgaGhaGiaGjaGkaGlaGlaGlaGmaGnaGoaGpaEEaGqaGraGsaEEaEGaGtaEGaGuaGvaGwaGxaRIaGzaGAaGBaGCaGDaGEaGFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGGaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDuaENaEOaEPaDoaEQaDoaEQaDoaEQaDoaEQaDoaERaESaxsaziaETaAVaEUaEVaEWaEXaEYaEZaAVaFaaFbaAnaFcaAnaFdarhaBaaFeaDNaDLaDLaDLaDLaDLaDLaFfaFgaFhaFiaFjaFkaFlaFmaFnaFoaAvaafaytaFpaFqaFraFsaFtaFuaFvaFqaqkaFxaxBaFyayCaBQcpjaBoazAaFAaACaFBaxBaxBaxBaxBaFCaFDaFEalLaFFarAarAarAaFGaFHaFIaFJaFKaFLaFMaFKaFNaFKaFOaFKaFPaFQaFRaFSaFTaBBaFUaFVaFWaFXaFXaFVaFYaFZaFZaFZaFZaFZaGaaGbaFZaGcaGdaGeaGfaGgaGhaGiaGjaGkaGlaGlaGlaGmaGnaGoaGpaEEaGqaGraGsaEEaEGaGtaEGaGuaGvaGwaGxaRIaGzaGAaGBaGCaGDaGEaGFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGGaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSqaDoaDoaBWaDoaEQaDoaEQaGIaEQaDoaEQaDoaERaESaxsaziaGJaAVaGKaGLaSaaGNaSaaCcaCcaGOaGPaGQaGRaGSaGRaGRaGTaGUaGVaGWaGWaGWaGXaGWaGWaGYaGZaBcaaaaHaaAvaHbaHcaHbaAvaAvaaaaytaHdayyaHeaHfaHgaHhaHiaHjaqzaHlaxBaHmayCaHnaCHaACayCaADaACaCJaHoaxBaxBaxBaHpaHqaHralLaHsalLalLalLaHtalLaHuaHvazNaHwaAIazNaHxazNaHyazNaHzaHAaHBaHCaHDaTlaHFaHGaHHaHIaHJaHKaHLaHJaHJaSyaBLaHGaHNaHGaHOaHGaHGaHPaSZaHRaHSaHSaHTaHUaHVaHWaHSaHXaHYaHZaIaaIbaIcaIdaIeaEEaIfaIgaEGaIhaIiaIjaIkaRIaIlaImaGBaInaEKaEKaEKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDuaIoaEOaEPaDoaEQaDoaEQaDoaEQaDoaEQaDoaERaESaxsaIpaIqaIraIsaItaItaItaIqaIuaIvaIqaIwaIxaBSaIyauRauRaBaaGZaIzaCnaIAaGZaGZaIBaICaIDaIEaBcaaaaIFaaaaBRaIHaBRaaaaafaaaaytaHdayyaIIaIJaIKaILaIMayyaINaoZaxBaIOayCaBQaIPaIQazAaIRaISaITaIUaxBaIWaIXaIYaIZaJaaJbaJcaBPaaaaaaaJeaJfaJgaJhazNaJiaAIaAIaAIaCQaAIaAIaAIaJjaBBaJkaBBaJlaJmaBBaJnaBBaJoaJpaJqaJraJsaJtaJuaBNaJwaJuaJxaJuaJuaJuaJuaJyaJuaJuaJzaJuaJuaJuaJuaJAaJBaIaaJCaJDaJEaJFaJGaEEaJHaJIaJJaJKaJLaJMaIkaBMaIlaImaGBaImaJOaJPaBHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJRaJRaJRaJRaJRaJRaJRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJSaJTaBVaDnaDoaDoaDoaJUaDoaDoaJVaDoaDoaDuaJWasXaziaygaJXaJYaJYaJYaJYaJYaJYaJYaJZaKaatQatQaKbatQatQaBaaAcaKdaAdaAiaAiaAiaAiaAjaKhaAqaBcaAPaARaBEaBraKnaBFaBEaBEaBGaytaKqayyayyayyaKraKsayyayyaKtaKuaxBaxBaxBaxBazEazVaHnaHnazWapFaxBaxBaKzaIZaIZaIZaIZaIZaKAaAaavAazZaJeaKEaJgaKFazNazNazNazNazNazNazNazNazNaJjaKGaKHaKIaKJazxaKLaKMaKNaJoaKOaKPaKQaKRaKSaJuaKTaKUaKVaKWaKVaKXaKYaKZaLaaLbaLcaLdaLeaLfaLgaJuaLhaLiaLjaJCaLkaJEaJFaLlaEEaLmaLnaLoaLpaLqaIkaIkaEGaEKaLraGBaImaLsaLtazmaaaaaaaaaaaaaaaaaaaaaaaaaaaaJRaJRaJRaJRaJRaJRaJRaJRaJRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10357,7 +10358,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalNaaaaafaaaaaaaaaaafaafaafaaaaaaaafaafaaaalNaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafbGrchCchPcjhcnWcnXcnYcnZcjhcoackGclmcobckGcoccodcoechTchDcohchGchEcokcodcolcnOcnPcomceAconcmTcnwcoocopcoqcoraaaaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabXpcosceeceecdjcosceeceecdjcosceeceebXpaaeaaacfUaaaaaaaafaafaafaaaaaacfiaafaaaaaaaafaafaaaaaacfUaaackvckvckvckvckvckvckvckvckvckvckvckvckvckvckvckvckvckvckvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalOalOalNalOalOamnalNalNalNalNalOalNalNalOcotaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacjhcoucoucovcovcowcobckGclmcobckGcoxcoycozcoAcoBcoCcoDcoEcoFcoGclmcobcoHcoIceAceAbQcconcoJcnTcnTcoKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaAbXpbXpbXpbXpbXpbXpbXpbXpcoLcoLcoLcaAaaaaaacfUcfUcfUcfUcfUaaaaaaaaacfiaaaaaaaaacfUcfUcfUcfVcfUaaackvckvckvckvckvckvckvckvckvckvckvckvckvckvckvckvckvckvckvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaacjhcovcovcovcovcowcoMcoNcoOcoPcoQcoRcoRcoScoTcoUcoVcoWcoXcoScoYbwKbnocpbckGckGcpccpdcjhcjhcjhcoecpeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacpfcpfcpfaaaaaaaaaaaaaaaaaaaaaaaaaaacfUaafcpgaafcfUaaaaaaaaaaaaaaaaaaaaackvckvckvckvckvckvckvckvckvckvckvckvckvckvckvckvckvckvckvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacphaaaaaaaaacphaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaacjhcpicpjcpkcplcjhcpmcpncpocppcpqcprcpscjhcptcpucpvckGcpwcjhcpxcpycpzcpAcpBcpCcpDcpEcpFcpGcpHbwLcpJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacfUaaaaafaaacfUaaaaaaaaaaaaaaaaaackvckvckvckvckvckvckvckvckvckvckvckvckvckvckvckvckvckvckvckvckvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacphaaaaaaaaacphaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaacjhcpidNHcpkcplcjhcpmcpncpocppcpqcprcpscjhcptcpucpvckGcpwcjhcpxcpycpzcpAcpBcpCcpDcpEcpFcpGcpHbwLcpJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacfUaaaaafaaacfUaaaaaaaaaaaaaaaaaackvckvckvckvckvckvckvckvckvckvckvckvckvckvckvckvckvckvckvckvckvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacphcphcphcphcphaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafcjhcpKcpKcpKcplcjhcpLcpMcjhcpNcpOcpOcpOcjhcpPcpQcpRcpScpTcjhcpOcpOcpOcpNcjhcpUcodcpVcjhcjhcjhcjhcpWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacfUcfUcfUcfUcfUaaaaaaaaaaaaaaaaaackvckvckvckvckvckvckvckvckvckvckvckvckvckvckvckvckvckvckvckvckvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacphaaaaaacphaaaaaacphcphcphcphcphcphcphaaaaaacphaaaaaacphaaaaaeaaaaaaaaaaaaaafaaaaafaaacjhcpKcpKcplcplcjhcpXcpYcjhcpZcqacqbcqccaNcqecqfcqgcqhcpTbZTcqacqacqacqjcjhcqkcqlcpVaaaaaaaaaaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaackvckvckvckvaaaaaackvckvckvckvckvckvckvaaaaaackvckvckvckvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacphcphcphcphaaacphcphcphcphcphcphcphcphcphaaacphcphcphcphaaaaaaaaaaaaaaaaaaaaaaaaaafaagcjhcjhcjhcjhcjhcjhcovcqmcjhcjhcbwcaOcaPcaQcqrcppcqscppcqtcbxcaPcaOcbzcjhcjhcqwcqxcqyaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaackvckvckvckvckvckvckvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa