diff --git a/mods/rgt_cosmetics/init.lua b/mods/rgt_cosmetics/init.lua new file mode 100644 index 0000000..64ab59a --- /dev/null +++ b/mods/rgt_cosmetics/init.lua @@ -0,0 +1,98 @@ +rgt_cosmetics = { + characters = {} +} +local ns = rgt_cosmetics + +--[[ + { + name = "", -- Technical name + label = "", -- Displayed name + texture = "", + scale = 0.88, -- Amount by which to scale visual_size for this character + eye_height = 1.6, -- For use with `scale` + } +]] +function ns.register_character(def) + ns.characters[def.name] = def +end + +function ns.set_character(m, chr) + if type(chr) == "string" then + chr = ns.characters[chr] + end + m.object:set_properties { + visual = "mesh", + mesh = "rgt_character.gltf", + textures = {chr.texture}, + visual_size = vector.new(1,1,1) *chr.scale, + eye_height = chr.eye_height, + shaded = false, + } + m.object:get_inventory():set_stack("hand", 1, ItemStack("red_glazed_terracotta:_hand_"..chr.name)) +end + +minetest.register_on_joinplayer(function(p) + local m = rgt.players[p:get_player_name()] + ns.set_character(m, m.object:get_meta():get("character") or "key") +end) + +minetest.register_chatcommand("character", { + func = function(name, args) + ns.set_character(rgt.players[name], args) + end +}) + +local _hand = minetest.registered_items[""] +function rgt.register_hand(name, caps, realname) + rgt.register_node("_hand_"..name, { + description = "", + paramtype = "light", + drawtype = "mesh", + mesh = "rgt_hand.gltf", + tiles = {"rgt_base_"..(realname or name or "placeholder")..".png"}, + use_texture_alpha = "opaque", + visual_scale = 1, + wield_scale = vector.new(2,2,2), + node_placement_prediction = "", + on_construct = function(pos) + minetest.remove_node(pos) + end, + drop = "", + on_drop = function() + return "" + end, + range = _hand.range, + pointabilities = caps and caps.pointabilities or {}, + tool_capabilities = caps or { + full_punch_interval = 0, + max_drop_level = 0, + groupcaps = { +-- dig_immediate = {times = {0}, uses = 0, maxlevel = 5}, + hand_breakable = {times = {0.3, 0.5, 0.7}, uses = 0, maxlevel = 5} + }, + damage_groups = {fleshy=1}, + }, + groups = {not_in_creative_inventory = 1, dig_immediate = 1} + }) +end + +rgt.register_hand("key") +rgt.register_hand("vix") + +-- Builtin characters + +ns.register_character { + name = "key", + label = "Key", + texture = "rgt_base_key.png", + scale = 0.88, + eye_height = 1.6 +} + +ns.register_character { + name = "vix", + label = "Vix", + texture = "rgt_base_vix.png", + scale = 0.8, + eye_height = 1.5 +} \ No newline at end of file diff --git a/mods/rgt_cosmetics/mod.conf b/mods/rgt_cosmetics/mod.conf new file mode 100644 index 0000000..27c9345 --- /dev/null +++ b/mods/rgt_cosmetics/mod.conf @@ -0,0 +1,2 @@ +name = rgt_cosmetics +depends = rgt_player \ No newline at end of file diff --git a/mods/rgt_cosmetics/textures/rgt_base_key.png b/mods/rgt_cosmetics/textures/rgt_base_key.png new file mode 100644 index 0000000..a2b8920 Binary files /dev/null and b/mods/rgt_cosmetics/textures/rgt_base_key.png differ diff --git a/mods/rgt_cosmetics/textures/rgt_base_vix.png b/mods/rgt_cosmetics/textures/rgt_base_vix.png new file mode 100644 index 0000000..994dd14 Binary files /dev/null and b/mods/rgt_cosmetics/textures/rgt_base_vix.png differ diff --git a/mods/rgt_outback/init.lua b/mods/rgt_outback/init.lua index 3fb7b31..94cbe96 100644 --- a/mods/rgt_outback/init.lua +++ b/mods/rgt_outback/init.lua @@ -127,20 +127,20 @@ function rgt.add_tree(pos) vm:write_to_map() end -rgt.register_node("tree", { - on_place = function(s, p, pt) - --rgt.add_tree(pt.above) - minetest.spawn_tree(pt.above, { - axiom = "TTTTTT", - trunk = "spruce_planks", - leaves = "oak_planks" - }) - end -}) - rgt.register_node("outback_planks", { tiles = {"rgt_outback_planks.png"}, groups = {hand_breakable = 3} }) + +rgt.register_node("dirt_stony", { + tiles = {"rgt_dirt_stony.png", "rgt_dirt.png"}, + groups = {hand_breakable = 3} +}) + +rgt.register_node("cobble_mossy", { + tiles = {"rgt_cobble_mossy.png"}, + groups = {hand_breakable = 3} +}) + minetest.register_mapgen_script(minetest.get_modpath(minetest.get_current_modname()).."/mapgen.lua") diff --git a/mods/rgt_outback/mapgen.lua b/mods/rgt_outback/mapgen.lua index aef4067..7d7640b 100644 --- a/mods/rgt_outback/mapgen.lua +++ b/mods/rgt_outback/mapgen.lua @@ -14,7 +14,11 @@ end local c_air = minetest.get_content_id("air") local c_stone = minetest.get_content_id("stone") +local c_cobble = minetest.get_content_id("cobble") +local c_mossy_cobble = minetest.get_content_id("cobble_mossy") local c_dirt = minetest.get_content_id("dirt") +local c_stony_dirt = minetest.get_content_id("dirt_stony") +local c_mossy_dirt = minetest.get_content_id("dirt_mossy") local c_grass = minetest.get_content_id("dirt_grass") local c_planks = minetest.get_content_id("outback_planks") @@ -32,6 +36,16 @@ local np_terrain = { } local n_terrain = {} +local np_surface = { + offset = 0, + scale = 1, -- Small height variation + spread = {x = 4, y = 4, z = 4}, + seed = 87745, + octaves = 3 , + persist = 0.6 +} +local n_surface = {} + local np_trees = { offset = 0, scale = 1, -- Small height variation @@ -160,6 +174,7 @@ local function tree(min, max, x, y, z) end + minetest.register_on_generated(function(vm, min, max) -- Only run for blocks that are part of this realm. if not intersection(min, max, REALM_START, REALM_END) then return end @@ -170,6 +185,9 @@ minetest.register_on_generated(function(vm, min, max) local terrain = minetest.get_perlin_map(np_terrain, sides2d) terrain:get_2d_map_flat({x = min.x, y = min.z}, n_terrain) + local surface = minetest.get_perlin_map(np_surface, sides2d) + surface:get_2d_map_flat({x = min.x, y = min.z}, n_surface) + local trees_map = minetest.get_perlin_map(np_trees, sides2d) trees_map:get_2d_map_flat({x = min.x, y = min.z}, n_trees) @@ -188,7 +206,17 @@ minetest.register_on_generated(function(vm, min, max) if y < height -1 then vm_data[vi] = c_stone elseif y < height then - vm_data[vi] = c_grass + if n_surface[ni] > 0.65 then + vm_data[vi] = c_mossy_cobble + elseif n_surface[ni] > 0.3 then + vm_data[vi] = c_cobble + elseif n_surface[ni] > -0.3 then + vm_data[vi] = c_stony_dirt + elseif n_surface[ni] < -0.8 then + vm_data[vi] = c_mossy_dirt + else + vm_data[vi] = c_dirt + end elseif y < height +1 and math.random() > 0.98 then trees[#trees +1] = vector.new(x, y, z) else diff --git a/mods/rgt_outback/textures/rgt_cobble_mossy.png b/mods/rgt_outback/textures/rgt_cobble_mossy.png new file mode 100644 index 0000000..16c9c1f Binary files /dev/null and b/mods/rgt_outback/textures/rgt_cobble_mossy.png differ diff --git a/mods/rgt_outback/textures/rgt_dirt_dark.png b/mods/rgt_outback/textures/rgt_dirt_dark.png new file mode 100644 index 0000000..75ba03b Binary files /dev/null and b/mods/rgt_outback/textures/rgt_dirt_dark.png differ diff --git a/mods/rgt_outback/textures/rgt_dirt_stony.png b/mods/rgt_outback/textures/rgt_dirt_stony.png new file mode 100644 index 0000000..b5facd4 Binary files /dev/null and b/mods/rgt_outback/textures/rgt_dirt_stony.png differ diff --git a/mods/rgt_player/init.lua b/mods/rgt_player/init.lua index 3fccc09..795622c 100644 --- a/mods/rgt_player/init.lua +++ b/mods/rgt_player/init.lua @@ -10,24 +10,274 @@ Player = { local inv = p:get_inventory() inv:set_size("hand", 1) - inv:set_stack("hand", 1, ItemStack("red_glazed_terracotta:hand")) e:set_hotbar_size(8) - p:hud_add { + e.textures = {_textures = {}} + setmetatable(e.textures, { + __newindex = function(tbl, key, value) + tbl._textures[idx] = value + p:set_properties { + textures = tbl._textures + } + end, + __index = e.textures._textures + }) + + e.hunger_bar = p:hud_add { type = "statbar", position = {x=0.5,y=1}, offset = {x=10,y=-96}, scale = {x=4,y=4}, alignment = {x=-1, y=-1}, size = {x=27,y=27}, - text = "rgt_pumpkin.png", + text = "rgt_pumpkin_alt.png", number = 20, item = 20, text2 = "rgt_pumpkin_empty.png" } + e.props = p:get_properties() + + e.eye_height = 1.6 + + + + e.health_display = minetest.add_entity(p:get_pos(), "display") + e.health_display:set_attach(p, nil, vector.new(0, 17, 0)) + e:update_hp(p:get_hp()) + return e end, + update_hp = function(m, hp) + if not (m.health_display and m.health_display:is_valid()) then + m.health_display = minetest.add_entity(m.object:get_pos(), "display") + m.health_display:set_attach(m.object, nil, vector.new(0, 17, 0)) + end + local tx = "[combine:90x90" + for i = math.floor(hp /2), math.floor(m.props.hp_max /2) -1 do + tx = tx..":"..(i *9)..",0=rgt_heart_empty.png" + end + for i = 0, math.floor(hp /2) -1 do + tx = tx..":"..(i *9)..",0=rgt_heart.png" + end + if hp %2 ~= 0 then + tx = tx..":"..((math.floor(hp /2)) *9)..",0=rgt_heart.png\\^[fill\\:5x9\\:4,0\\:#000\\^[makealpha\\:#000" + end + m.health_display:set_properties { + visual = "sprite", + textures = {tx}, + shaded = false + } + end, + tick = function(m, dtime) + local time = minetest.get_us_time() + local p = m.object + if not p or not p:is_player() then + return + end + local pitch = p:get_look_vertical() + local yaw = p:get_look_horizontal() + local dir = p:get_look_dir() + local pos = p:get_pos() + pos.y = pos.y +m.eye_height + + -- Animation + if not m.in_third_person then + local c = p:get_player_control() + local moving = c.up or c.down or c.left or c.right + + if moving then + m.moving = true + if c.aux1 and c.up then + if p:get_animation().y ~= 2 then p:set_animation({x=1, y=2}, 1.5, 0.2, true) end + p:set_physics_override{ + speed = 1.5 + } + else + if p:get_animation().y ~= 1 then p:set_animation({x=0, y=1}, 1.5, 0.2, true) end + p:set_physics_override{ + speed = 1 + } + end + else + m.moving = false + if p:get_animation().y ~= 0 then p:set_animation({x=0, y=0}) end + end + + if not m.rot then m.rot = 0 end + if moving then + local fac = 0 + if c.left then fac = 30 elseif c.right then fac = -30 end + m.rot = yaw +math.rad(fac) + elseif math.abs(yaw -m.rot) > math.rad(40) then + m.rot = m.rot +(yaw -(m.yaw or 0)) + end + m.rot = m.rot %math.rad(360) + m.yaw = yaw + + p:set_bone_override("Head", { + rotation = {vec = vector.new(math.min(math.max(pitch, math.rad(-60)), math.rad(60)),-(yaw -m.rot),0), interpolation = 0.1, absolute = true} + }) + + p:set_bone_override("root", { + rotation = {vec = vector.new(0,yaw -m.rot,0), interpolation = 0.1, absolute = true} + }) + m.ctl = c + else -- Third-person camera + local c = m.camera.ref + local me = m.focus and m.focus.ref or false + local ctl = p:get_player_control() +-- local lv = p:get_look_vertical() +-- local lh = p:get_look_horizontal() +-- local ldir = p:get_look_dir() + local ppos = c:get_pos() + if not ppos then + m:enter_third_person_view(m.third_person_focus, me ~= false) + return + end + local dir = vector.new(0,0,1):rotate(vector.new(math.rad(-45),yaw,0)) +-- if lv < 0 then +-- lv = 0 +-- p:set_look_vertical(0) +-- end + local radius = m.third_person_camera_radius or 10 + local t = (me and me:get_pos() or m.third_person_focus) +(-dir *radius) +-- local standing_on = minetest.get_node(pos:offset(0, -0.05, 0)) +-- local can_jump = minetest.registered_nodes[standing_on.name].walkable + local dist = math.min(radius *2, t:distance(ppos) ^2) + local vel = t:direction(ppos) *dist + local tvel = vector.zero() + local was_moving = m.ctl.up or m.ctl.down or m.ctl.left or m.ctl.right or m.ctl.jump or m.ctl.sneak + local moving = ctl.up or ctl.down or ctl.left or ctl.right +-- if e.jumping == 0 and can_jump and ctl.jump then +-- e.jumping = 10 +-- tvel = tvel +vector.new(0,5,0) +-- end + if ctl.jump then + tvel.y = 3 + elseif ctl.sneak then + tvel.y = -3 + end + if moving then + dir.y = 0 + v_normalize(dir) + local rot = 0 + if ctl.up then + if ctl.left then + rot = math.rad(45) + elseif ctl.right then + rot = math.rad(-45) + end + elseif ctl.down then + if ctl.left then + rot = math.rad(180 -45) + elseif ctl.right then + rot = math.rad(180 +45) + else + rot = math.rad(180) + end + elseif ctl.left then + rot = math.rad(90) + elseif ctl.right then + rot = math.rad(-90) + end + dir = dir:rotate(vector.new(0,rot,0)) + if me then me:set_velocity(tvel +(dir *5)) end + vel = vel -(dir *5) +-- if not was_moving then +-- me:set_animation({x=0, y=1}, 1.5, 0.2, true) +-- end +-- me:set_bone_override("root", { +-- rotation = { +-- vec = -dir:dir_to_rotation(), interpolation = 0.07, absolute = true +-- } +-- }) + elseif was_moving and me then +-- me:set_animation({x=0, y=0}) + me:set_velocity(tvel) + end +-- e.jumping = math.max(0, e.jumping -1) + --vel.y = 0 + c:set_velocity(-vel) + m.ctl = ctl + end + + -- Health regen + -- TODO: Move to combat mod + + if time -(m.last_time or 0) >= 10 *1000000 then + local hp = p:get_hp() + if hp < p:get_properties().hp_max then + p:set_hp(hp +1) + -- Make sure the health display is still loaded. + elseif not (m.health_display and m.health_display:is_valid()) then + m.health_display = minetest.add_entity(m.object:get_pos(), "display") + m.health_display:set_attach(m.object, nil, vector.new(0, 17, 0)) + end + + m.last_time = time + end + + -- Custom on-hover effects + + m.pointed_node = nil + + local pointed_found = false + for pointed in minetest.raycast(pos, pos +(dir *7)) do -- TODO: Automatic range + if pointed and pointed.type == "object" then + local e = pointed.ref:get_luaentity() + if e then + local names_match = m.pointed_obj and (m.pointed_obj._name or m.pointed_obj.name) == (e._name or e.name) + if m.pointed_obj and not names_match then + if m.pointed_obj.on_unhover then + m.pointed_obj:on_unhover(m) + end + m.hover_trigger_range = nil + end + if (m.pointed_obj and not names_match and e.on_hover) or not m.pointed_obj then + if e.on_hover then + m.hover_trigger_range = e:on_hover(m) or 8 + end + pointed_found = true + m.pointed_obj = e + break + elseif m.pointed_obj and names_match and e.on_hover then + pointed_found = true + break + end + end + elseif pointed and pointed.type == "node" and not m.pointed_node then + m.pointed_node = pointed + end + end + if not pointed_found and m.pointed_obj then + if m.pointed_obj.on_unhover then + m.pointed_obj:on_unhover(m) + end + m.pointed_obj = nil + m.hover_trigger_range = nil + end + + m.pos = pos + + -- Run on_wield callbacks + local w = p:get_wielded_item() + local wname = w:get_name() + local def = minetest.registered_items[wname] + if m.prev_wielditem ~= wname then + if m.prev_wielditem then + local def = minetest.registered_items[m.prev_wielditem] + local onunselect = def and def.on_unwield + if onunselect then onunselect(m) end + end + m.prev_wielditem = wname + local onselect = def and def.on_wield + if onselect then onselect(m, w) end + end + + local while_wielded = def and def.while_wielded + if while_wielded then while_wielded(m, w) end + end, set_hotbar_size = function(m, slots) local p = m.object p:hud_set_hotbar_itemcount(slots) @@ -68,3 +318,28 @@ minetest.hud_replace_builtin("health", { minetest.register_on_joinplayer(function(p) ns.players[p:get_player_name()] = Player(p) end) + +minetest.register_on_leaveplayer(function(p) + ns.players[p:get_player_name()] = nil +end) + +minetest.register_globalstep(function(time) + for _, x in pairs(rgt.players) do + x:tick(time) + end +end) + +minetest.register_on_player_hpchange(function(p, hp_change) + rgt.players[p:get_player_name()]:update_hp(p:get_hp() +hp_change) +end) + +minetest.register_chatcommand("hungerbar", { + func = function(name, args) + local m = rgt.players[name] + if args == "pumpkin_alt" then + m.object:hud_change(m.hunger_bar, "text", "rgt_"..args..".png") + else + m.object:hud_change(m.hunger_bar, "text", "rgt_pumpkin.png") + end + end +}) diff --git a/mods/rgt_player/models/rgt_character.gltf b/mods/rgt_player/models/rgt_character.gltf new file mode 100644 index 0000000..7b9364e --- /dev/null +++ b/mods/rgt_player/models/rgt_character.gltf @@ -0,0 +1 @@ +{"asset":{"version":"2.0","generator":"Blockbench 4.11.0 glTF exporter"},"scenes":[{"nodes":[9],"name":"blockbench_export"}],"scene":0,"nodes":[{"translation":[0,15,0],"name":"Head"},{"translation":[0,15,0],"name":"Body"},{"translation":[3.125,13.75,0],"name":"RightArm"},{"translation":[-3.125,13.75,0],"name":"LeftArm"},{"translation":[0.06250000000000006,-6.875,-0.9375],"name":"RightLegFoot"},{"translation":[1.1875,7.5,0],"name":"RightLeg","children":[4]},{"translation":[-0.06250000000000006,-6.875,-0.9375],"name":"LeftLegFoot"},{"translation":[-1.1875,7.5,0],"name":"LeftLeg","children":[6]},{"name":"root","children":[0,1,2,3,5,7]},{"name":"root","mesh":0,"children":[8],"skin":0}],"bufferViews":[{"buffer":0,"byteOffset":0,"byteLength":4032,"target":34962,"byteStride":12},{"buffer":0,"byteOffset":4032,"byteLength":4032,"target":34962,"byteStride":12},{"buffer":0,"byteOffset":8064,"byteLength":2688,"target":34962,"byteStride":8},{"buffer":0,"byteOffset":10752,"byteLength":2688,"target":34962,"byteStride":8},{"buffer":0,"byteOffset":13440,"byteLength":5376,"target":34962,"byteStride":16},{"buffer":0,"byteOffset":18816,"byteLength":1008,"target":34963},{"buffer":0,"byteOffset":19824,"byteLength":576},{"buffer":0,"byteOffset":20400,"byteLength":20},{"buffer":0,"byteOffset":20420,"byteLength":80},{"buffer":0,"byteOffset":20500,"byteLength":36},{"buffer":0,"byteOffset":20536,"byteLength":108},{"buffer":0,"byteOffset":20644,"byteLength":20},{"buffer":0,"byteOffset":20664,"byteLength":80},{"buffer":0,"byteOffset":20744,"byteLength":36},{"buffer":0,"byteOffset":20780,"byteLength":144},{"buffer":0,"byteOffset":20924,"byteLength":36},{"buffer":0,"byteOffset":20960,"byteLength":144},{"buffer":0,"byteOffset":21104,"byteLength":36},{"buffer":0,"byteOffset":21140,"byteLength":144},{"buffer":0,"byteOffset":21284,"byteLength":36},{"buffer":0,"byteOffset":21320,"byteLength":144},{"buffer":0,"byteOffset":21464,"byteLength":36},{"buffer":0,"byteOffset":21500,"byteLength":144},{"buffer":0,"byteOffset":21644,"byteLength":36},{"buffer":0,"byteOffset":21680,"byteLength":144}],"buffers":[{"byteLength":21824,"uri":"data:application/octet-stream;base64,AAAgQAAAoEEAACBAAAAgQAAAoEEAACDAAAAgQAAAcEEAACBAAAAgQAAAcEEAACDAAAAgwAAAoEEAACDAAAAgwAAAoEEAACBAAAAgwAAAcEEAACDAAAAgwAAAcEEAACBAAAAgwAAAoEEAACDAAAAgQAAAoEEAACDAAAAgwAAAoEEAACBAAAAgQAAAoEEAACBAAAAgwAAAcEEAACBAAAAgQAAAcEEAACBAAAAgwAAAcEEAACDAAAAgQAAAcEEAACDAAAAgwAAAoEEAACBAAAAgQAAAoEEAACBAAAAgwAAAcEEAACBAAAAgQAAAcEEAACBAAAAgQAAAoEEAACDAAAAgwAAAoEEAACDAAAAgQAAAcEEAACDAAAAgwAAAcEEAACDAAAA0QACAokEAADRAAAA0QACAokEAADTAAAA0QAAAa0EAADRAAAA0QAAAa0EAADTAAAA0wACAokEAADTAAAA0wACAokEAADRAAAA0wAAAa0EAADTAAAA0wAAAa0EAADRAAAA0wACAokEAADTAAAA0QACAokEAADTAAAA0wACAokEAADRAAAA0QACAokEAADRAAAA0wAAAa0EAADRAAAA0QAAAa0EAADRAAAA0wAAAa0EAADTAAAA0QAAAa0EAADTAAAA0wACAokEAADRAAAA0QACAokEAADRAAAA0wAAAa0EAADRAAAA0QAAAa0EAADRAAAA0QACAokEAADTAAAA0wACAokEAADTAAAA0QAAAa0EAADTAAAA0wAAAa0EAADTAAAAgQAAAcEEAAHA/AAAgQAAAcEEAAHC/AAAgQAAA8EAAAHA/AAAgQAAA8EAAAHC/AAAgwAAAcEEAAHC/AAAgwAAAcEEAAHA/AAAgwAAA8EAAAHC/AAAgwAAA8EAAAHA/AAAgwAAAcEEAAHC/AAAgQAAAcEEAAHC/AAAgwAAAcEEAAHA/AAAgQAAAcEEAAHA/AAAgwAAA8EAAAHA/AAAgQAAA8EAAAHA/AAAgwAAA8EAAAHC/AAAgQAAA8EAAAHC/AAAgwAAAcEEAAHA/AAAgQAAAcEEAAHA/AAAgwAAA8EAAAHA/AAAgQAAA8EAAAHA/AAAgQAAAcEEAAHC/AAAgwAAAcEEAAHC/AAAgQAAA8EAAAHC/AAAgwAAA8EAAAHC/AAAqQACAckEAAIw/AAAqQACAckEAAIy/AAAqQAAA60AAAIw/AAAqQAAA60AAAIy/AAAqwACAckEAAIy/AAAqwACAckEAAIw/AAAqwAAA60AAAIy/AAAqwAAA60AAAIw/AAAqwACAckEAAIy/AAAqQACAckEAAIy/AAAqwACAckEAAIw/AAAqQACAckEAAIw/AAAqwAAA60AAAIw/AAAqQAAA60AAAIw/AAAqwAAA60AAAIy/AAAqQAAA60AAAIy/AAAqwACAckEAAIw/AAAqQACAckEAAIw/AAAqwAAA60AAAIw/AAAqQAAA60AAAIw/AAAqQACAckEAAIy/AAAqwACAckEAAIy/AAAqQAAA60AAAIy/AAAqwAAA60AAAIy/AACMQAAAcEEAAHA/AACMQAAAcEEAAHC/AACMQAAA8EAAAHA/AACMQAAA8EAAAHC/AAAgQAAAcEEAAHC/AAAgQAAAcEEAAHA/AAAgQAAA8EAAAHC/AAAgQAAA8EAAAHA/AAAgQAAAcEEAAHC/AACMQAAAcEEAAHC/AAAgQAAAcEEAAHA/AACMQAAAcEEAAHA/AAAgQAAA8EAAAHA/AACMQAAA8EAAAHA/AAAgQAAA8EAAAHC/AACMQAAA8EAAAHC/AAAgQAAAcEEAAHA/AACMQAAAcEEAAHA/AAAgQAAA8EAAAHA/AACMQAAA8EAAAHA/AACMQAAAcEEAAHC/AAAgQAAAcEEAAHC/AACMQAAA8EAAAHC/AAAgQAAA8EAAAHC/AACRQACAckEAAIw/AACRQACAckEAAIy/AACRQAAA60AAAIw/AACRQAAA60AAAIy/AAAWQACAckEAAIy/AAAWQACAckEAAIw/AAAWQAAA60AAAIy/AAAWQAAA60AAAIw/AAAWQACAckEAAIy/AACRQACAckEAAIy/AAAWQACAckEAAIw/AACRQACAckEAAIw/AAAWQAAA60AAAIw/AACRQAAA60AAAIw/AAAWQAAA60AAAIy/AACRQAAA60AAAIy/AAAWQACAckEAAIw/AACRQACAckEAAIw/AAAWQAAA60AAAIw/AACRQAAA60AAAIw/AACRQACAckEAAIy/AAAWQACAckEAAIy/AACRQAAA60AAAIy/AAAWQAAA60AAAIy/AAAgwAAAcEEAAHA/AAAgwAAAcEEAAHC/AAAgwAAA8EAAAHA/AAAgwAAA8EAAAHC/AACMwAAAcEEAAHC/AACMwAAAcEEAAHA/AACMwAAA8EAAAHC/AACMwAAA8EAAAHA/AACMwAAAcEEAAHC/AAAgwAAAcEEAAHC/AACMwAAAcEEAAHA/AAAgwAAAcEEAAHA/AACMwAAA8EAAAHA/AAAgwAAA8EAAAHA/AACMwAAA8EAAAHC/AAAgwAAA8EAAAHC/AACMwAAAcEEAAHA/AAAgwAAAcEEAAHA/AACMwAAA8EAAAHA/AAAgwAAA8EAAAHA/AAAgwAAAcEEAAHC/AACMwAAAcEEAAHC/AAAgwAAA8EAAAHC/AACMwAAA8EAAAHC/AAAWwACAckEAAIw/AAAWwACAckEAAIy/AAAWwAAA60AAAIw/AAAWwAAA60AAAIy/AACRwACAckEAAIy/AACRwACAckEAAIw/AACRwAAA60AAAIy/AACRwAAA60AAAIw/AACRwACAckEAAIy/AAAWwACAckEAAIy/AACRwACAckEAAIw/AAAWwACAckEAAIw/AACRwAAA60AAAIw/AAAWwAAA60AAAIw/AACRwAAA60AAAIy/AAAWwAAA60AAAIy/AACRwACAckEAAIw/AAAWwACAckEAAIw/AACRwAAA60AAAIw/AAAWwAAA60AAAIw/AAAWwACAckEAAIy/AACRwACAckEAAIy/AAAWwAAA60AAAIy/AACRwAAA60AAAIy/AAAcQAAA8EAAAHA/AAAcQAAA8EAAAHC/AAAcQAAAAAAAAHA/AAAcQAAAAAAAAHC/AACAvQAA8EAAAHC/AACAvQAA8EAAAHA/AACAvQAAAAAAAHC/AACAvQAAAAAAAHA/AACAvQAA8EAAAHC/AAAcQAAA8EAAAHC/AACAvQAA8EAAAHA/AAAcQAAA8EAAAHA/AACAvQAAAAAAAHA/AAAcQAAAAAAAAHA/AACAvQAAAAAAAHC/AAAcQAAAAAAAAHC/AACAvQAA8EAAAHA/AAAcQAAA8EAAAHA/AACAvQAAAAAAAHA/AAAcQAAAAAAAAHA/AAAcQAAA8EAAAHC/AACAvQAA8EAAAHC/AAAcQAAAAAAAAHC/AACAvQAAAAAAAHC/AAAmQAAA9UAAAIw/AAAmQAAA9UAAAIy/AAAmQAAAIL4AAIw/AAAmQAAAIL4AAIy/AABgvgAA9UAAAIy/AABgvgAA9UAAAIw/AABgvgAAIL4AAIy/AABgvgAAIL4AAIw/AABgvgAA9UAAAIy/AAAmQAAA9UAAAIy/AABgvgAA9UAAAIw/AAAmQAAA9UAAAIw/AABgvgAAIL4AAIw/AAAmQAAAIL4AAIw/AABgvgAAIL4AAIy/AAAmQAAAIL4AAIy/AABgvgAA9UAAAIw/AAAmQAAA9UAAAIw/AABgvgAAIL4AAIw/AAAmQAAAIL4AAIw/AAAmQAAA9UAAAIy/AABgvgAA9UAAAIy/AAAmQAAAIL4AAIy/AABgvgAAIL4AAIy/AAAcQAAAoD8AAHC/AAAcQAAAoD8AADTAAAAcQAAAAAAAAHC/AAAcQAAAAAAAADTAAACAvQAAoD8AADTAAACAvQAAoD8AAHC/AACAvQAAAAAAADTAAACAvQAAAAAAAHC/AACAvQAAoD8AADTAAAAcQAAAoD8AADTAAACAvQAAoD8AAHC/AAAcQAAAoD8AAHC/AACAvQAAAAAAAHC/AAAcQAAAAAAAAHC/AACAvQAAAAAAADTAAAAcQAAAAAAAADTAAACAvQAAoD8AAHC/AAAcQAAAoD8AAHC/AACAvQAAAAAAAHC/AAAcQAAAAAAAAHC/AAAcQAAAoD8AADTAAACAvQAAoD8AADTAAAAcQAAAAAAAADTAAACAvQAAAAAAADTAAACAPQAA8EAAAHA/AACAPQAA8EAAAHC/AACAPQAAAAAAAHA/AACAPQAAAAAAAHC/AAAcwAAA8EAAAHC/AAAcwAAA8EAAAHA/AAAcwAAAAAAAAHC/AAAcwAAAAAAAAHA/AAAcwAAA8EAAAHC/AACAPQAA8EAAAHC/AAAcwAAA8EAAAHA/AACAPQAA8EAAAHA/AAAcwAAAAAAAAHA/AACAPQAAAAAAAHA/AAAcwAAAAAAAAHC/AACAPQAAAAAAAHC/AAAcwAAA8EAAAHA/AACAPQAA8EAAAHA/AAAcwAAAAAAAAHA/AACAPQAAAAAAAHA/AACAPQAA8EAAAHC/AAAcwAAA8EAAAHC/AACAPQAAAAAAAHC/AAAcwAAAAAAAAHC/AABgPgAA9UAAAIw/AABgPgAA9UAAAIy/AABgPgAAIL4AAIw/AABgPgAAIL4AAIy/AAAmwAAA9UAAAIy/AAAmwAAA9UAAAIw/AAAmwAAAIL4AAIy/AAAmwAAAIL4AAIw/AAAmwAAA9UAAAIy/AABgPgAA9UAAAIy/AAAmwAAA9UAAAIw/AABgPgAA9UAAAIw/AAAmwAAAIL4AAIw/AABgPgAAIL4AAIw/AAAmwAAAIL4AAIy/AABgPgAAIL4AAIy/AAAmwAAA9UAAAIw/AABgPgAA9UAAAIw/AAAmwAAAIL4AAIw/AABgPgAAIL4AAIw/AABgPgAA9UAAAIy/AAAmwAAA9UAAAIy/AABgPgAAIL4AAIy/AAAmwAAAIL4AAIy/AACAPQAAoD8AAHC/AACAPQAAoD8AADTAAACAPQAAAAAAAHC/AACAPQAAAAAAADTAAAAcwAAAoD8AADTAAAAcwAAAoD8AAHC/AAAcwAAAAAAAADTAAAAcwAAAAAAAAHC/AAAcwAAAoD8AADTAAACAPQAAoD8AADTAAAAcwAAAoD8AAHC/AACAPQAAoD8AAHC/AAAcwAAAAAAAAHC/AACAPQAAAAAAAHC/AAAcwAAAAAAAADTAAACAPQAAAAAAADTAAAAcwAAAoD8AAHC/AACAPQAAoD8AAHC/AAAcwAAAAAAAAHC/AACAPQAAAAAAAHC/AACAPQAAoD8AADTAAAAcwAAAoD8AADTAAACAPQAAAAAAADTAAAAcwAAAAAAAADTAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AACAOQBAAD4AgP89AEAAPgAAgDkAwH8+AID/PQDAfz4AIIA+AEAAPgDgvz4AQAA+ACCAPgDAfz4A4L8+AMB/PgDAfz4AgP89AEAAPgCA/z0AwH8+AACAOQBAAD4AAIA5AOC/PgAAgDkAIIA+AACAOQDgvz4AgP89ACCAPgCA/z0AIMA+AEAAPgDg/z4AQAA+ACDAPgDAfz4A4P8+AMB/PgBAAD4AQAA+AMB/PgBAAD4AQAA+AMB/PgDAfz4AwH8+ABAAPwBAAD4A8B8/AEAAPgAQAD8AwH8+APAfPwDAfz4AEEA/AEAAPgDwXz8AQAA+ABBAPwDAfz4A8F8/AMB/PgDwPz8AgP89ABAgPwCA/z0A8D8/AACAOQAQID8AAIA5APBfPwAAgDkAEEA/AACAOQDwXz8AgP89ABBAPwCA/z0AEGA/AEAAPgDwfz8AQAA+ABBgPwDAfz4A8H8/AMB/PgAQID8AQAA+APA/PwBAAD4AECA/AMB/PgDwPz8AwH8+AACIPgAAoD4AAKA+AACgPgAAiD4AAAA/AACgPgAAAD8AAOA+AACgPgAA+D4AAKA+AADgPgAAAD8AAPg+AAAAPwAA4D4AAKA+AACgPgAAoD4AAOA+AACIPgAAoD4AAIg+AAAQPwAAiD4AAOA+AACIPgAAED8AAKA+AADgPgAAoD4AAAA/AACgPgAAID8AAKA+AAAAPwAAAD8AACA/AAAAPwAAoD4AAKA+AADgPgAAoD4AAKA+AAAAPwAA4D4AAAA/AACIPgAAED8AAKA+AAAQPwAAiD4AAEA/AACgPgAAQD8AAOA+AAAQPwAA+D4AABA/AADgPgAAQD8AAPg+AABAPwAA4D4AABA/AACgPgAAED8AAOA+AAAEPwAAoD4AAAQ/AAAQPwAABD8AAOA+AAAEPwAAED8AABA/AADgPgAAED8AAAA/AAAQPwAAID8AABA/AAAAPwAAQD8AACA/AABAPwAAoD4AABA/AADgPgAAED8AAKA+AABAPwAA4D4AAEA/ABAkPwAgoD4A8C8/ACCgPgAQJD8A4P8+APAvPwDg/z4AEDw/ACCgPgDwRz8AIKA+ABA8PwDg/z4A8Ec/AOD/PgDwOz8A4J8+ABAwPwDgnz4A8Ds/ACCIPgAQMD8AIIg+APBHPwAgiD4AEDw/ACCIPgDwRz8A4J8+ABA8PwDgnz4AEEg/ACCgPgDwUz8AIKA+ABBIPwDg/z4A8FM/AOD/PgAQMD8AIKA+APA7PwAgoD4AEDA/AOD/PgDwOz8A4P8+AAAkPwAAED8AADA/AAAQPwAAJD8AAEA/AAAwPwAAQD8AAEA/AAAQPwAATD8AABA/AABAPwAAQD8AAEw/AABAPwAAPD8AABA/AAAwPwAAED8AADw/AAAEPwAAMD8AAAQ/AABIPwAABD8AADw/AAAEPwAASD8AABA/AAA8PwAAED8AAEw/AAAQPwAAWD8AABA/AABMPwAAQD8AAFg/AABAPwAAMD8AABA/AAA8PwAAED8AADA/AABAPwAAPD8AAEA/ABAEPwAQUD8A8A8/ABBQPwAQBD8A8H8/APAPPwDwfz8AEBw/ABBQPwDwJz8AEFA/ABAcPwDwfz8A8Cc/APB/PwDwGz8A8E8/ABAQPwDwTz8A8Bs/ABBEPwAQED8AEEQ/APAnPwAQRD8AEBw/ABBEPwDwJz8A8E8/ABAcPwDwTz8AECg/ABBQPwDwMz8AEFA/ABAoPwDwfz8A8DM/APB/PwAQED8AEFA/APAbPwAQUD8AEBA/APB/PwDwGz8A8H8/AABAPwAAUD8AAEw/AABQPwAAQD8AAIA/AABMPwAAgD8AAFw/AABQPwAAaD8AAFA/AABcPwAAgD8AAGg/AACAPwAAXD8AAFA/AABQPwAAUD8AAFw/AABEPwAAUD8AAEQ/AABoPwAARD8AAFw/AABEPwAAaD8AAFA/AABcPwAAUD8AAGw/AABQPwAAeD8AAFA/AABsPwAAgD8AAHg/AACAPwAAUD8AAFA/AABcPwAAUD8AAFA/AACAPwAAXD8AAIA/AACAPAAAoD4AAIA9AACgPgAAgDwAAAA/AACAPQAAAD8AAAA+AACgPgAAMD4AAKA+AAAAPgAAAD8AADA+AAAAPwAAAD4AAKA+AACAPQAAoD4AAAA+AACIPgAAgD0AAIg+AABAPgAAiD4AAAA+AACIPgAAQD4AAKA+AAAAPgAAoD4AAEA+AACgPgAAgD4AAKA+AABAPgAAAD8AAIA+AAAAPwAAgD0AAKA+AAAAPgAAoD4AAIA9AAAAPwAAAD4AAAA/AACCPAAQED8AAH89ABAQPwAAgjwA8D8/AAB/PQDwPz8AQAA+ABAQPwDALz4AEBA/AEAAPgDwPz8AwC8+APA/PwCA/z0A8A8/AICAPQDwDz8AgP89ABAEPwCAgD0AEAQ/AMA/PgAQBD8AQAA+ABAEPwDAPz4A8A8/AEAAPgDwDz8AQDA+ABAQPwDAbz4AEBA/AEAwPgDwPz8AwG8+APA/PwCAgD0AEBA/AID/PQAQED8AgIA9APA/PwCA/z0A8D8/ABBIPwAQAD8A8FM/ABAAPwAQSD8A8Ac/APBTPwDwBz8AEGQ/ABAAPwDwbz8AEAA/ABBkPwDwBz8A8G8/APAHPwDwYz8A4P8+ABBUPwDg/z4A8GM/ACDoPgAQVD8AIOg+APBzPwAg6D4AEGQ/ACDoPgDwcz8A4P8+ABBkPwDg/z4AEHA/ABAAPwDwfz8AEAA/ABBwPwDwBz8A8H8/APAHPwAQVD8AEAA/APBjPwAQAD8AEFQ/APAHPwDwYz8A8Ac/AACIPgAAUD8AAKA+AABQPwAAiD4AAIA/AACgPgAAgD8AAMA+AABQPwAA2D4AAFA/AADAPgAAgD8AANg+AACAPwAAwD4AAFA/AACgPgAAUD8AAMA+AABEPwAAoD4AAEQ/AADgPgAARD8AAMA+AABEPwAA4D4AAFA/AADAPgAAUD8AAOA+AABQPwAAAD8AAFA/AADgPgAAgD8AAAA/AACAPwAAoD4AAFA/AADAPgAAUD8AAKA+AACAPwAAwD4AAIA/AACCPAAQUD8AAH89ABBQPwAAgjwA8H8/AAB/PQDwfz8AQAA+ABBQPwDALz4AEFA/AEAAPgDwfz8AwC8+APB/PwCA/z0A8E8/AICAPQDwTz8AgP89ABBEPwCAgD0AEEQ/AMA/PgAQRD8AQAA+ABBEPwDAPz4A8E8/AEAAPgDwTz8AQDA+ABBQPwDAbz4AEFA/AEAwPgDwfz8AwG8+APB/PwCAgD0AEFA/AID/PQAQUD8AgIA9APB/PwCA/z0A8H8/AABUPwAAuD4AAGA/AAC4PgAAVD8AAMg+AABgPwAAyD4AAGA/AAC4PgAAbD8AALg+AABgPwAAyD4AAGw/AADIPgAAZD8AALg+AABUPwAAuD4AAGQ/AACgPgAAVD8AAKA+AAB0PwAAoD4AAGQ/AACgPgAAdD8AALg+AABkPwAAuD4AAGQ/AADIPgAAdD8AAMg+AABkPwAA2D4AAHQ/AADYPgAAVD8AAMg+AABkPwAAyD4AAFQ/AADYPgAAZD8AANg+AAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAFAAAAAAAAAAUAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAUAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAUAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAUAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAUAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAUAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAUAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAUAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAUAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAUAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAUAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAUAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAUAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAUAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAUAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAUAAAAAAAAABQAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAHAAAAAAAAAAcAAAAAAAAABwAAAAAAAAAHAAAAAAAAAAcAAAAAAAAABwAAAAAAAAAHAAAAAAAAAAcAAAAAAAAABwAAAAAAAAAHAAAAAAAAAAcAAAAAAAAABwAAAAAAAAAHAAAAAAAAAAcAAAAAAAAABwAAAAAAAAAHAAAAAAAAAAcAAAAAAAAABwAAAAAAAAAHAAAAAAAAAAcAAAAAAAAABwAAAAAAAAAHAAAAAAAAAAcAAAAAAAAABwAAAAAAAAAHAAAAAAAAAAcAAAAAAAAABwAAAAAAAAAHAAAAAAAAAAcAAAAAAAAABwAAAAAAAAAHAAAAAAAAAAcAAAAAAAAABwAAAAAAAAAHAAAAAAAAAAcAAAAAAAAABwAAAAAAAAAHAAAAAAAAAAcAAAAAAAAABwAAAAAAAAAHAAAAAAAAAAcAAAAAAAAABwAAAAAAAAAHAAAAAAAAAAcAAAAAAAAABwAAAAAAAAAHAAAAAAAAAAcAAAAAAAAABwAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAACAAEAAgADAAEABAAGAAUABgAHAAUACAAKAAkACgALAAkADAAOAA0ADgAPAA0AEAASABEAEgATABEAFAAWABUAFgAXABUAGAAaABkAGgAbABkAHAAeAB0AHgAfAB0AIAAiACEAIgAjACEAJAAmACUAJgAnACUAKAAqACkAKgArACkALAAuAC0ALgAvAC0AMAAyADEAMgAzADEANAA2ADUANgA3ADUAOAA6ADkAOgA7ADkAPAA+AD0APgA/AD0AQABCAEEAQgBDAEEARABGAEUARgBHAEUASABKAEkASgBLAEkATABOAE0ATgBPAE0AUABSAFEAUgBTAFEAVABWAFUAVgBXAFUAWABaAFkAWgBbAFkAXABeAF0AXgBfAF0AYABiAGEAYgBjAGEAZABmAGUAZgBnAGUAaABqAGkAagBrAGkAbABuAG0AbgBvAG0AcAByAHEAcgBzAHEAdAB2AHUAdgB3AHUAeAB6AHkAegB7AHkAfAB+AH0AfgB/AH0AgACCAIEAggCDAIEAhACGAIUAhgCHAIUAiACKAIkAigCLAIkAjACOAI0AjgCPAI0AkACSAJEAkgCTAJEAlACWAJUAlgCXAJUAmACaAJkAmgCbAJkAnACeAJ0AngCfAJ0AoACiAKEAogCjAKEApACmAKUApgCnAKUAqACqAKkAqgCrAKkArACuAK0ArgCvAK0AsACyALEAsgCzALEAtAC2ALUAtgC3ALUAuAC6ALkAugC7ALkAvAC+AL0AvgC/AL0AwADCAMEAwgDDAMEAxADGAMUAxgDHAMUAyADKAMkAygDLAMkAzADOAM0AzgDPAM0A0ADSANEA0gDTANEA1ADWANUA1gDXANUA2ADaANkA2gDbANkA3ADeAN0A3gDfAN0A4ADiAOEA4gDjAOEA5ADmAOUA5gDnAOUA6ADqAOkA6gDrAOkA7ADuAO0A7gDvAO0A8ADyAPEA8gDzAPEA9AD2APUA9gD3APUA+AD6APkA+gD7APkA/AD+AP0A/gD/AP0AAAECAQEBAgEDAQEBBAEGAQUBBgEHAQUBCAEKAQkBCgELAQkBDAEOAQ0BDgEPAQ0BEAESAREBEgETAREBFAEWARUBFgEXARUBGAEaARkBGgEbARkBHAEeAR0BHgEfAR0BIAEiASEBIgEjASEBJAEmASUBJgEnASUBKAEqASkBKgErASkBLAEuAS0BLgEvAS0BMAEyATEBMgEzATEBNAE2ATUBNgE3ATUBOAE6ATkBOgE7ATkBPAE+AT0BPgE/AT0BQAFCAUEBQgFDAUEBRAFGAUUBRgFHAUUBSAFKAUkBSgFLAUkBTAFOAU0BTgFPAU0BAACAPwAAAAAAAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAAAAAACAPwAAgD8AAAAAAAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAHDBAAAAAAAAgD8AAIA/AAAAAAAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAABwwQAAAAAAAIA/AACAPwAAAAAAAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAAAAAAAAgD8AAAAAAABIwAAAXMEAAAAAAACAPwAAgD8AAAAAAAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAAAAAAIA/AAAAAAAASEAAAFzBAAAAAAAAgD8AAIA/AAAAAAAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAAAAAACAPwAAAAAAAJi/AADwwAAAAAAAAIA/AACAPwAAAAAAAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAAAAAAAAgD8AAAAAAACgvwAAIL8AAHA/AACAPwAAgD8AAAAAAAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAAAAAAIA/AAAAAAAAmD8AAPDAAAAAAAAAgD8AAIA/AAAAAAAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAAAAAACAPwAAAAAAAKA/AAAgvwAAcD8AAIA/AAAAAAAAAD8AAIA/AADAPwAAAEAAAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAIA+AAAAPwAAQD8AAIA/AACgPwAAwD8AAOA/AAAAQAAAAAAAAAAAAAAAAAAAAAAAACC/AAAAAAAAAAAAAAAAAAAAAAAAAAAAACC/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAKC/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAKC/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/AACAPwAAwD8AAABAAAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAACAPgAAAD8AAEA/AACAPwAAoD8AAMA/AADgPwAAAEAAAAAAAAAAAAAAAAAAAIA/wsVHvgAAAAAAAAAAvhR7PwAAAAAAAAAAAAAAAAAAgD/CxUc+AAAAAAAAAAC+FHs/AAAAAAAAAAAAAAAAAACAP1Bq7L4AAAAAAAAAACQTYz8AAAAAAAAAAAAAAAAAAIA/UGrsPgAAAAAAAAAAJBNjPwAAAAAAAAAAAAAAAAAAgD8AAAAAAACAPgAAAD8AAEA/AACAPwAAoD8AAMA/AADgPwAAAEAAAAAAAAAAAAAAAAAAAIA/7mNzPgAAAAAAAAAA4Kl4PwAAAAAAAAAAAAAAAAAAgD/CxUe+AAAAAAAAAAC+FHs/AAAAAAAAAAAAAAAAAACAP1Bq7D4AAAAAAAAAACQTYz8AAAAAAAAAAAAAAAAAAIA/UGrsvgAAAAAAAAAAJBNjPwAAAAAAAAAAAAAAAAAAgD8AAAAAAACAPgAAAD8AAEA/AACAPwAAoD8AAMA/AADgPwAAAEAAAAAAAAAAAAAAAAAAAIA/HPaZPgAAAAAAAAAAyyZ0PwAAAAAAAAAAAAAAAAAAgD8c9pm+AAAAAAAAAADLJnQ/AAAAAAAAAAAAAAAAAACAP2xh2D4AAAAAAAAAAMoDaD8AAAAAAAAAAAAAAAAAAIA/bGHYvgAAAAAAAAAAygNoPwAAAAAAAAAAAAAAAAAAgD8AAAAAAACAPgAAAD8AAEA/AACAPwAAoD8AAMA/AADgPwAAAEAAAAAAAAAAAAAAAAAAAIA/tn6yvQAAAAAAAAAAngZ/PwAAAAAAAAAAAAAAAAAAgD+oqAU+AAAAAAAAAABVz30/AAAAAAAAAAAAAAAAAACAP7Z+sr0AAAAAAAAAAJ4Gfz8AAAAAAAAAAAAAAAAAAIA/PMYbPgAAAAAAAAAAQwV9PwAAAAAAAAAAAAAAAAAAgD8AAAAAAACAPgAAAD8AAEA/AACAPwAAoD8AAMA/AADgPwAAAEAAAAAAAAAAAAAAAAAAAIA/HPaZvgAAAAAAAAAAyyZ0PwAAAAAAAAAAAAAAAAAAgD8c9pk+AAAAAAAAAADLJnQ/AAAAAAAAAAAAAAAAAACAP2xh2L4AAAAAAAAAAMoDaD8AAAAAAAAAAAAAAAAAAIA/bGHYPgAAAAAAAAAAygNoPwAAAAAAAAAAAAAAAAAAgD8AAAAAAACAPgAAAD8AAEA/AACAPwAAoD8AAMA/AADgPwAAAEAAAAAAAAAAAAAAAAAAAIA/qKgFPgAAAAAAAAAAVc99PwAAAAAAAAAAAAAAAAAAgD+2frK9AAAAAAAAAACeBn8/AAAAAAAAAAAAAAAAAACAPzzGGz4AAAAAAAAAAEMFfT8AAAAAAAAAAAAAAAAAAIA/tn6yvQAAAAAAAAAAngZ/PwAAAAAAAAAAAAAAAAAAgD8="}],"accessors":[{"bufferView":0,"componentType":5126,"count":336,"max":[4.53125,20.3125,2.8125],"min":[-4.53125,-0.15625,-2.8125],"type":"VEC3"},{"bufferView":1,"componentType":5126,"count":336,"max":[1,1,1],"min":[-1,-1,-1],"type":"VEC3"},{"bufferView":2,"componentType":5126,"count":336,"max":[0.999755859375,1],"min":[0.000244140625,0.000244140625],"type":"VEC2"},{"bufferView":3,"componentType":5123,"count":336,"max":[0,8,0,0],"min":[0,1,0,0],"type":"VEC4"},{"bufferView":4,"componentType":5126,"count":336,"max":[0,1,0,0],"min":[0,1,0,0],"type":"VEC4"},{"bufferView":5,"componentType":5123,"count":504,"max":[335],"min":[0],"type":"SCALAR"},{"bufferView":6,"componentType":5126,"count":9,"max":[1,0,0,0,0,1,0,0,0,0,1,0,3.125,0,0.9375,1],"min":[1,0,0,0,0,1,0,0,0,0,1,0,-3.125,-15,0,1],"type":"MAT4"},{"bufferView":7,"componentType":5126,"count":5,"max":[2],"min":[0],"type":"SCALAR"},{"bufferView":8,"componentType":5126,"count":5,"max":[0,0,0,1],"min":[0,0,0,1],"type":"VEC4"},{"bufferView":9,"componentType":5126,"count":9,"max":[2],"min":[0],"type":"SCALAR"},{"bufferView":10,"componentType":5126,"count":9,"max":[0,0,0],"min":[0,-1.25,0],"type":"VEC3"},{"bufferView":11,"componentType":5126,"count":5,"max":[2],"min":[0],"type":"SCALAR"},{"bufferView":12,"componentType":5126,"count":5,"max":[0,0,0,1],"min":[0,0,0,1],"type":"VEC4"},{"bufferView":13,"componentType":5126,"count":9,"max":[2],"min":[0],"type":"SCALAR"},{"bufferView":14,"componentType":5126,"count":9,"max":[0.4617486000061035,0,0,1],"min":[-0.4617486000061035,0,0,0.8870108127593994],"type":"VEC4"},{"bufferView":15,"componentType":5126,"count":9,"max":[2],"min":[0],"type":"SCALAR"},{"bufferView":16,"componentType":5126,"count":9,"max":[0.4617486000061035,0,0,1],"min":[-0.4617486000061035,0,0,0.8870108127593994],"type":"VEC4"},{"bufferView":17,"componentType":5126,"count":9,"max":[2],"min":[0],"type":"SCALAR"},{"bufferView":18,"componentType":5126,"count":9,"max":[0.4226182699203491,0,0,1],"min":[-0.4226182699203491,0,0,0.9063078165054321],"type":"VEC4"},{"bufferView":19,"componentType":5126,"count":9,"max":[2],"min":[0],"type":"SCALAR"},{"bufferView":20,"componentType":5126,"count":9,"max":[0.15212339162826538,0,0,1],"min":[-0.08715574443340302,0,0,0.9883615374565125],"type":"VEC4"},{"bufferView":21,"componentType":5126,"count":9,"max":[2],"min":[0],"type":"SCALAR"},{"bufferView":22,"componentType":5126,"count":9,"max":[0.4226182699203491,0,0,1],"min":[-0.4226182699203491,0,0,0.9063078165054321],"type":"VEC4"},{"bufferView":23,"componentType":5126,"count":9,"max":[2],"min":[0],"type":"SCALAR"},{"bufferView":24,"componentType":5126,"count":9,"max":[0.15212339162826538,0,0,1],"min":[-0.08715574443340302,0,0,0.9883615374565125],"type":"VEC4"}],"materials":[{"pbrMetallicRoughness":{"metallicFactor":0,"roughnessFactor":1,"baseColorTexture":{"index":0}},"alphaMode":"MASK","alphaCutoff":0.05,"doubleSided":true}],"textures":[{"sampler":0,"source":0,"name":"artifact_key"}],"samplers":[{"magFilter":9728,"minFilter":9728,"wrapS":33071,"wrapT":33071}],"images":[{"mimeType":"image/png"}],"meshes":[{"primitives":[{"mode":4,"attributes":{"POSITION":0,"NORMAL":1,"TEXCOORD_0":2,"JOINTS_0":3,"WEIGHTS_0":4},"indices":5,"material":0}]}],"skins":[{"inverseBindMatrices":6,"joints":[8,0,1,2,3,5,4,7,6],"skeleton":8}],"animations":[{"name":"animation","samplers":[{"input":7,"output":8,"interpolation":"LINEAR"},{"input":9,"output":10,"interpolation":"LINEAR"},{"input":11,"output":12,"interpolation":"LINEAR"},{"input":13,"output":14,"interpolation":"LINEAR"},{"input":15,"output":16,"interpolation":"LINEAR"},{"input":17,"output":18,"interpolation":"LINEAR"},{"input":19,"output":20,"interpolation":"LINEAR"},{"input":21,"output":22,"interpolation":"LINEAR"},{"input":23,"output":24,"interpolation":"LINEAR"}],"channels":[{"sampler":0,"target":{"node":8,"path":"rotation"}},{"sampler":1,"target":{"node":8,"path":"translation"}},{"sampler":2,"target":{"node":1,"path":"rotation"}},{"sampler":3,"target":{"node":2,"path":"rotation"}},{"sampler":4,"target":{"node":3,"path":"rotation"}},{"sampler":5,"target":{"node":5,"path":"rotation"}},{"sampler":6,"target":{"node":4,"path":"rotation"}},{"sampler":7,"target":{"node":7,"path":"rotation"}},{"sampler":8,"target":{"node":6,"path":"rotation"}}]}]} \ No newline at end of file diff --git a/mods/rgt_player/models/rgt_hand.gltf b/mods/rgt_player/models/rgt_hand.gltf new file mode 100644 index 0000000..b3f1685 --- /dev/null +++ b/mods/rgt_player/models/rgt_hand.gltf @@ -0,0 +1 @@ +{"asset":{"version":"2.0","generator":"Blockbench 4.11.0 glTF exporter"},"scenes":[{"nodes":[3],"name":"blockbench_export"}],"scene":0,"nodes":[{"translation":[-7.341186189470692,-10.221666105894709,3.75],"name":"Right Arm","mesh":0},{"translation":[-7.341186189470692,-10.221666105894709,3.75],"name":"Right Arm Layer","mesh":1},{"rotation":[0.9829629131445342,0.12940952255126037,-0.017037086855465768,0.12940952255126018],"name":"RightArm","children":[0,1]},{"children":[2]}],"bufferViews":[{"buffer":0,"byteOffset":0,"byteLength":288,"target":34962,"byteStride":12},{"buffer":0,"byteOffset":288,"byteLength":288,"target":34962,"byteStride":12},{"buffer":0,"byteOffset":576,"byteLength":192,"target":34962,"byteStride":8},{"buffer":0,"byteOffset":768,"byteLength":72,"target":34963},{"buffer":0,"byteOffset":840,"byteLength":288,"target":34962,"byteStride":12},{"buffer":0,"byteOffset":1128,"byteLength":288,"target":34962,"byteStride":12},{"buffer":0,"byteOffset":1416,"byteLength":192,"target":34962,"byteStride":8},{"buffer":0,"byteOffset":1608,"byteLength":72,"target":34963}],"buffers":[{"byteLength":1680,"uri":"data:application/octet-stream;base64,AACMQAAAcEEAAHA/AACMQAAAcEEAAHC/AACMQAAA8EAAAHA/AACMQAAA8EAAAHC/AAAgQAAAcEEAAHC/AAAgQAAAcEEAAHA/AAAgQAAA8EAAAHC/AAAgQAAA8EAAAHA/AAAgQAAAcEEAAHC/AACMQAAAcEEAAHC/AAAgQAAAcEEAAHA/AACMQAAAcEEAAHA/AAAgQAAA8EAAAHA/AACMQAAA8EAAAHA/AAAgQAAA8EAAAHC/AACMQAAA8EAAAHC/AAAgQAAAcEEAAHA/AACMQAAAcEEAAHA/AAAgQAAA8EAAAHA/AACMQAAA8EAAAHA/AACMQAAAcEEAAHC/AAAgQAAAcEEAAHC/AACMQAAA8EAAAHC/AAAgQAAA8EAAAHC/AACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/ABAkPwAgoD4A8C8/ACCgPgAQJD8A4P8+APAvPwDg/z4AEDw/ACCgPgDwRz8AIKA+ABA8PwDg/z4A8Ec/AOD/PgDwOz8A4J8+ABAwPwDgnz4A8Ds/ACCIPgAQMD8AIIg+APBHPwAgiD4AEDw/ACCIPgDwRz8A4J8+ABA8PwDgnz4AEEg/ACCgPgDwUz8AIKA+ABBIPwDg/z4A8FM/AOD/PgAQMD8AIKA+APA7PwAgoD4AEDA/AOD/PgDwOz8A4P8+AAACAAEAAgADAAEABAAGAAUABgAHAAUACAAKAAkACgALAAkADAAOAA0ADgAPAA0AEAASABEAEgATABEAFAAWABUAFgAXABUAAACRQACAckEAAIw/AACRQACAckEAAIy/AACRQAAA60AAAIw/AACRQAAA60AAAIy/AAAWQACAckEAAIy/AAAWQACAckEAAIw/AAAWQAAA60AAAIy/AAAWQAAA60AAAIw/AAAWQACAckEAAIy/AACRQACAckEAAIy/AAAWQACAckEAAIw/AACRQACAckEAAIw/AAAWQAAA60AAAIw/AACRQAAA60AAAIw/AAAWQAAA60AAAIy/AACRQAAA60AAAIy/AAAWQACAckEAAIw/AACRQACAckEAAIw/AAAWQAAA60AAAIw/AACRQAAA60AAAIw/AACRQACAckEAAIy/AAAWQACAckEAAIy/AACRQAAA60AAAIy/AAAWQAAA60AAAIy/AACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAkPwAAED8AADA/AAAQPwAAJD8AAEA/AAAwPwAAQD8AAEA/AAAQPwAATD8AABA/AABAPwAAQD8AAEw/AABAPwAAPD8AABA/AAAwPwAAED8AADw/AAAEPwAAMD8AAAQ/AABIPwAABD8AADw/AAAEPwAASD8AABA/AAA8PwAAED8AAEw/AAAQPwAAWD8AABA/AABMPwAAQD8AAFg/AABAPwAAMD8AABA/AAA8PwAAED8AADA/AABAPwAAPD8AAEA/AAACAAEAAgADAAEABAAGAAUABgAHAAUACAAKAAkACgALAAkADAAOAA0ADgAPAA0AEAASABEAEgATABEAFAAWABUAFgAXABUA"}],"accessors":[{"bufferView":0,"componentType":5126,"count":24,"max":[4.375,15,0.9375],"min":[2.5,7.5,-0.9375],"type":"VEC3"},{"bufferView":1,"componentType":5126,"count":24,"max":[1,1,1],"min":[-1,-1,-1],"type":"VEC3"},{"bufferView":2,"componentType":5126,"count":24,"max":[0.827880859375,0.499755859375],"min":[0.640869140625,0.265869140625],"type":"VEC2"},{"bufferView":3,"componentType":5123,"count":36,"max":[23],"min":[0],"type":"SCALAR"},{"bufferView":4,"componentType":5126,"count":24,"max":[4.53125,15.15625,1.09375],"min":[2.34375,7.34375,-1.09375],"type":"VEC3"},{"bufferView":5,"componentType":5126,"count":24,"max":[1,1,1],"min":[-1,-1,-1],"type":"VEC3"},{"bufferView":6,"componentType":5126,"count":24,"max":[0.84375,0.75],"min":[0.640625,0.515625],"type":"VEC2"},{"bufferView":7,"componentType":5123,"count":36,"max":[23],"min":[0],"type":"SCALAR"}],"materials":[{"pbrMetallicRoughness":{"metallicFactor":0,"roughnessFactor":1,"baseColorTexture":{"index":0}},"alphaMode":"MASK","alphaCutoff":0.05,"doubleSided":true}],"textures":[{"sampler":0,"source":0,"name":"artifact_key.png"}],"samplers":[{"magFilter":9728,"minFilter":9728,"wrapS":33071,"wrapT":33071}],"images":[{"mimeType":"image/png"}],"meshes":[{"primitives":[{"mode":4,"attributes":{"POSITION":0,"NORMAL":1,"TEXCOORD_0":2},"indices":3,"material":0}]},{"primitives":[{"mode":4,"attributes":{"POSITION":4,"NORMAL":5,"TEXCOORD_0":6},"indices":7,"material":0}]}]} \ No newline at end of file diff --git a/mods/rgt_player/textures/crosshair.png b/mods/rgt_player/textures/crosshair.png new file mode 100644 index 0000000..5dc0468 Binary files /dev/null and b/mods/rgt_player/textures/crosshair.png differ diff --git a/mods/rgt_player/textures/object_crosshair.png b/mods/rgt_player/textures/object_crosshair.png new file mode 100644 index 0000000..5dc0468 Binary files /dev/null and b/mods/rgt_player/textures/object_crosshair.png differ diff --git a/mods/rgt_player/textures/rgt_pumpkin.png b/mods/rgt_player/textures/rgt_pumpkin.png index d870e44..cec1376 100644 Binary files a/mods/rgt_player/textures/rgt_pumpkin.png and b/mods/rgt_player/textures/rgt_pumpkin.png differ diff --git a/mods/rgt_player/textures/rgt_pumpkin_alt.png b/mods/rgt_player/textures/rgt_pumpkin_alt.png new file mode 100644 index 0000000..c9c48ee Binary files /dev/null and b/mods/rgt_player/textures/rgt_pumpkin_alt.png differ diff --git a/mods/rgt_player/textures/rgt_pumpkin_alt_empty.png b/mods/rgt_player/textures/rgt_pumpkin_alt_empty.png new file mode 100644 index 0000000..d11ee26 Binary files /dev/null and b/mods/rgt_player/textures/rgt_pumpkin_alt_empty.png differ diff --git a/mods/rgt_realms/init.lua b/mods/rgt_realms/init.lua index 2b34b2a..19acf43 100644 --- a/mods/rgt_realms/init.lua +++ b/mods/rgt_realms/init.lua @@ -1,10 +1,18 @@ rgt_realms = { realms = { void = { + name = "void", + label = "Void", sky = { type = "plain", base_color = "#000" } + }, + surface = { + name = "surface", + label = "Surface", + max = vector.new(-31000, -5000, -31000), + min = vector.new(31000, 1000, 31000) } } } diff --git a/mods/rgt_towns/rgt_towns_editor/init.lua b/mods/rgt_towns/rgt_towns_editor/init.lua index 645910f..73bce32 100644 --- a/mods/rgt_towns/rgt_towns_editor/init.lua +++ b/mods/rgt_towns/rgt_towns_editor/init.lua @@ -94,7 +94,7 @@ end function ns.get_workspace(name) local ws = db:get("workspace:"..name) - if ws then return mietest.deserialize(ws) end + if ws then return minetest.deserialize(ws) end end function ns.place_workspace(name, pos) @@ -127,12 +127,68 @@ function ns.clear_workspace(ws) vm:write_to_map() end -function ns.load_plot(ws, plot) +function ns.load_plot(ws, plot, actor) + if vector.distance(ws.size, rgt_towns.plots[plot].size) > 0.1 then + tell(actor, "Workspace size and plot size do not match!") + return + end minetest.place_schematic(ws.pos, rgt_towns.plots[plot].schematic, nil, nil, true, {}) end -function ns.set_workspace_size(ws, x, y, z) - +local vm_data = {} +function ns.init_plot(ws, lvl) + if lvl and lvl -1 > 0 and lvl < ws.size.y *15 then + lvl = lvl -1 + local min = ws.pos + local max = vector.add(ws.pos, vector.multiply(ws.size, 15)) + local vm = minetest.get_voxel_manip(min, max) + local area = VoxelArea(vm:get_emerged_area()) + + local c_grass = minetest.get_content_id("dirt_grass") + local c_path = minetest.get_content_id("path_grass") + local c_dirt = minetest.get_content_id("dirt") + + vm:get_data(vm_data) + + for x = min.x, max.x -1 do + for z = min.z, max.z -1 do + for y = 0, lvl do + vm_data[area:index(x, ws.pos.y +y, z)] = y == lvl and (( + x +1 == max.x or x == min.x or + z +1 == max.z or z == min.z or + x +2 == max.x and z +2 == max.z or + x +2 == max.x and z -1 == min.z or + x -1 == min.x and z +2 == max.z or + x -1 == min.x and z -1 == min.z + ) and c_path or c_grass) or c_dirt + end + end + end + vm:set_data(vm_data) + vm:write_to_map() + end +end + +function ns.set_workspace_size(name, x, y, z) + local ws = ns.get_workspace(name) + ws.size.x = x + ws.size.y = y + ws.size.z = z + db:set_string("workspace:"..name, minetest.serialize(ws)) + for k, x in pairs(ns.workspaces[name]) do + if k ~= "marker" then + if x.remove then + + elseif type(x) == "table" then + for _, y in pairs(x) do + minetest.delete_particlespawner(y) + end + else + minetest.delete_particlespawner(y) + end + end + end + ns.workspaces[name].outline = rgt_towns.add_cube(vector.offset(ws.pos, -0.5,-0.5,-0.5), vector.add(ws.pos, vector.multiply(ws.size, 15)):offset(-0.5,-0.5,-0.5)) end function ns.export_workspace(ws, label) @@ -144,8 +200,10 @@ end minetest.register_chatcommand("new_plot", { func = function(name, args) local ws = ns.place_workspace(name, minetest.get_player_by_name(name):get_pos()) - if args == "clear" then + if args == "clear" then ns.clear_workspace(ws) + else + ns.init_plot(ws, tonumber(args)) end end }) @@ -159,7 +217,7 @@ minetest.register_chatcommand("load_plot", { return end if args and args ~= "" then - ns.load_plot(ws, args) + ns.load_plot(ws, args, name) end end }) @@ -167,10 +225,14 @@ minetest.register_chatcommand("load_plot", { minetest.register_chatcommand("set_plot_size", { func = function(name, args) if args and args ~= "" then - local x, y, z = args:match "(%d+)%s+(%d+)%s+(%d+)" + local x, y, z, regen, lvl = args:match "^(%d+)%s+(%d+)%s+(%d+)%s+(regenerate)%s+(%d+)" + if not x then return end if not y then y = x end if not z then z = x end - ns.set_workspace_size(ns.get_workspace(name), x, y, z) + ns.set_workspace_size(name, x, y, z) + if regen and lvl then + ns.init_plot(ns.get_workspace(name), tonumber(lvl)) + end tell(name, "Size set to "..x.."x"..y.."x"..z..".") end end diff --git a/mods/rgt_towns/rgt_towns_main/init.lua b/mods/rgt_towns/rgt_towns_main/init.lua index 9401931..7bc88fe 100644 --- a/mods/rgt_towns/rgt_towns_main/init.lua +++ b/mods/rgt_towns/rgt_towns_main/init.lua @@ -34,6 +34,7 @@ rgt_towns.register_plot{ label = "Empty Plot", description = "Hello world", schematic = minetest.get_modpath(minetest.get_current_modname()).."/schems/empty_plot.mts", + size = vector.new(1, 2, 1), recipe = { "", "", "", "dirt_grass 1", "dirt_grass 1", "dirt_grass 1", @@ -48,6 +49,7 @@ rgt_towns.register_plot{ label = "House", description = "Hello world", schematic = minetest.get_modpath(minetest.get_current_modname()).."/schems/house.mts", + size = vector.new(1, 2, 1), recipe = { "oak_planks 1", "oak_planks 1", "oak_planks 1", "oak_log 1", "glass 1", "oak_log 1", diff --git a/mods/rgt_world/init.lua b/mods/rgt_world/init.lua index f67ee76..6215b3b 100644 --- a/mods/rgt_world/init.lua +++ b/mods/rgt_world/init.lua @@ -30,6 +30,11 @@ rgt.register_node("dirt", { groups = {dig_immediate = 3} }) +rgt.register_node("dirt_mossy", { + tiles = {{name = rep("rgt_dirt.png", 4).."^rgt_path_grass.png", scale = 4, align_style = "world"}, "rgt_dirt.png"}, + groups = {dig_immediate = 3} +}) + rgt.register_node("dirt_grass", { tiles = {"rgt_grass_top.png", "rgt_dirt.png", "rgt_dirt.png^rgt_grass_side.png"}, -- tiles = {"[fill:16x16:0,0:#3e7e7b^[fill:14x14:1,1:#326764"}, @@ -55,7 +60,14 @@ rgt.register_node("path_grass", { rgt.register_node("oak_log", { - tiles = {"rgt_oak_log_top.png", "rgt_oak_log_side.png"}, + tiles = {"rgt_oak_log_top.png", "rgt_oak_log_top.png", "rgt_oak_log_side.png"}, + groups = {dig_immediate = 3} +}) + +rgt.register_node("oak_leaves", { + drawtype = "allfaces", + tiles = {"rgt_oak_leaves.png"}, + use_texture_alpha = "clip", groups = {dig_immediate = 3} }) @@ -132,8 +144,8 @@ rgt.register_node("water", { }) rgt.register_node("water_flowing", { - tiles = {{name = "[fill:16x16:0,0:#2d5a7c77^[fill:14x14:1,1:#2d5a7c33", backface_culling = false}}, - special_tiles = {{name = "[fill:16x16:0,0:#2d5a7c77^[fill:14x14:1,1:#2d5a7c33", backface_culling = false}, {name = "[fill:16x16:0,0:#2d5a7c77^[fill:14x14:1,1:#2d5a7c33", backface_culling = false}}, + tiles = {{name = "[fill:16x16:0,0:#2d5a7c77^[fill:14x14:1,1:#2d5a7c33", backface_culling = true}}, + special_tiles = {{name = "[fill:16x16:0,0:#2d5a7c77^[fill:14x14:1,1:#2d5a7c33", backface_culling = true}, {name = "[fill:16x16:0,0:#2d5a7c77^[fill:14x14:1,1:#2d5a7c33", backface_culling = true}}, groups = {dig_immediate = 3}, drawtype = "flowingliquid", use_texture_alpha = "blend", @@ -150,8 +162,48 @@ rgt.register_node("water_flowing", { liquid_range = 5, }) +rgt.register_node("river_water", { + tiles = {"[fill:16x16:0,0:#2d5a7c77^[fill:14x14:1,1:#2d5a7c33"}, + groups = {dig_immediate = 3}, + drawtype = "liquid", + use_texture_alpha = "blend", + paramtype = "light", + walkable = false, + climbable = true, + post_effect_color = "#2d5a7c55", + + liquidtype = "source", + -- Minetest pro tip: Do not try to use aliases for these. + liquid_alternative_source = "red_glazed_terracotta:river_water", + liquid_alternative_flowing = "red_glazed_terracotta:river_water_flowing", + liquid_viscosity = 1, + liquid_range = 2, + liquid_renewable = false +}) + +rgt.register_node("river_water_flowing", { + tiles = {{name = "[fill:16x16:0,0:#2d5a7c77^[fill:14x14:1,1:#2d5a7c33", backface_culling = true}}, + special_tiles = {{name = "[fill:16x16:0,0:#2d5a7c77^[fill:14x14:1,1:#2d5a7c33", backface_culling = true}, {name = "[fill:16x16:0,0:#2d5a7c77^[fill:14x14:1,1:#2d5a7c33", backface_culling = true}}, + groups = {dig_immediate = 3}, + drawtype = "flowingliquid", + use_texture_alpha = "blend", + paramtype = "light", + paramtype2 = "flowingliquid", + walkable = false, + climbable = true, + post_effect_color = "#2d5a7c55", + + liquidtype = "flowing", + liquid_alternative_source = "red_glazed_terracotta:river_water", + liquid_alternative_flowing = "red_glazed_terracotta:river_water_flowing", + liquid_viscosity = 1, + liquid_range = 2, + liquid_renewable = false +}) + minetest.register_alias("mapgen_stone", "red_glazed_terracotta:stone") minetest.register_alias("mapgen_water_source", "red_glazed_terracotta:water") +minetest.register_alias("mapgen_river_water_source", "red_glazed_terracotta:river_water") -- Remove @@ -160,6 +212,16 @@ minetest.register_alias("adrift:dirt", "red_glazed_terracotta:dirt") minetest.register_alias("adrift:dirt_grass", "red_glazed_terracotta:dirt_grass") minetest.register_alias("adrift:water", "red_glazed_terracotta:water") +--minetest.register_decoration { +-- deco_type = "schematic", +-- place_on = "dirt_grass", +-- y_min = 1, +-- fill_ratio = 0.01, +-- schematic = minetest.get_modpath(minetest.get_current_modname()).."/schems/tree.mts", +-- flags = "place_center_x, place_center_z", +-- place_offset_y = 1, +--} + minetest.register_biome{ name = "!", diff --git a/mods/rgt_world/schems/tree.mts b/mods/rgt_world/schems/tree.mts new file mode 100644 index 0000000..b6da9cf Binary files /dev/null and b/mods/rgt_world/schems/tree.mts differ diff --git a/mods/rgt_world/textures/rgt_cobble.png b/mods/rgt_world/textures/rgt_cobble.png index 9d27203..6a21895 100644 Binary files a/mods/rgt_world/textures/rgt_cobble.png and b/mods/rgt_world/textures/rgt_cobble.png differ diff --git a/mods/rgt_world/textures/rgt_dirt_mossy.png b/mods/rgt_world/textures/rgt_dirt_mossy.png new file mode 100644 index 0000000..b20d95b Binary files /dev/null and b/mods/rgt_world/textures/rgt_dirt_mossy.png differ diff --git a/mods/rgt_world/textures/rgt_oak_leaves.png b/mods/rgt_world/textures/rgt_oak_leaves.png new file mode 100644 index 0000000..45ecce7 Binary files /dev/null and b/mods/rgt_world/textures/rgt_oak_leaves.png differ diff --git a/mods/rgt_world/textures/rgt_oak_log_side.png b/mods/rgt_world/textures/rgt_oak_log_side.png index 3e61a61..5a55aa9 100644 Binary files a/mods/rgt_world/textures/rgt_oak_log_side.png and b/mods/rgt_world/textures/rgt_oak_log_side.png differ