there were also works on the inventory and the save system\n Also a new Event manager system for global signaling
+++ /dev/null
-MIT License
-
-Copyright (c) 2022 Peter Kish
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
--- /dev/null
+# GLoot Directory Contents
+
+## Directories
+
+| Directory | Description |
+| --------- | ----------- |
+| `core` | Core GLoot functionality. Contains classes like `Inventory`, `InventoryItem`, `ProtoTree` etc. |
+| `editor` | Code that will exclusively be run in the editor. Contains implementations of the inventory editor, item editor, item slot editor etc. |
+| `images` | Images/icons used by the pluigin. |
+| `ui` | UI control classes like `CtrlInventory`, `CtrlInventoryGrid` etc. |
+
+## Files
+
+| File | Description |
+| ---------- | ----------- |
+| `gloot.gd` | GLoot `EditorPlugin` implementation |
\ No newline at end of file
--- /dev/null
+# Core Directory Contents
+
+## Directories
+
+| Directory | Description |
+| ------------- | ----------- |
+| `constraints` | Constraint implementations (`WeightConstraint`, `GridConstraint` and `ItemCountConstraint`) |
+| `prototree` | Prototree related code (`Prototype` and `ProtoTree`) |
+
+## Files
+
+| File | Description |
+| ------------------- | ----------- |
+| `inventory_item.gd` | `InventoryItem` implementation. |
+| `inventory.gd` | `Inventory` implementation. |
+| `item_count.gd` | A helper script for item count arithmetics that support infinity. |
+| `item_slot.gd` | `ItemSlot` implementation. |
+| `stack_manager.gd` | A helper script for managing item stacks. |
+| `utils.gd` | Miscellaneous helper utility functions. |
+| `verify.gd` | A helper script for data verification. |
--- /dev/null
+# Constraints Directory Contents
+
+## Files
+
+| File | Description |
+| ------------------- | ----------- |
+| `constraint_manager.gd` | Helper script for managing inventory constraints. |
+| `grid_constraint.gd` | `GridConstraint` implementation. |
+| `inventory_constraint.gd` | Inventory constraint base class (`InventoryConstraint`). |
+| `item_count_constraint.gd` | `ItemCountConstraint` implementation. |
+| `quadtree.gd` | Implements quad-trees used in `GridConstraint` for organizing items in a 2d space. |
+| `weight_constraint.gd` | `WeightConstraint` implementation. |
extends RefCounted
-const KEY_WEIGHT_CONSTRAINT = "weight_constraint"
-const KEY_STACKS_CONSTRAINT = "stacks_constraint"
-const KEY_GRID_CONSTRAINT = "grid_constraint"
-
-const Verify = preload("res://addons/gloot/core/verify.gd")
-const WeightConstraint = preload("res://addons/gloot/core/constraints/weight_constraint.gd")
-const StacksConstraint = preload("res://addons/gloot/core/constraints/stacks_constraint.gd")
-const GridConstraint = preload("res://addons/gloot/core/constraints/grid_constraint.gd")
-
-var _weight_constraint: WeightConstraint = null
-var _stacks_constraint: StacksConstraint = null
-var _grid_constraint: GridConstraint = null
-var inventory: Inventory = null :
- set(new_inventory):
- assert(new_inventory != null, "Can't set inventory to null!")
- assert(inventory == null, "Inventory already set!")
- inventory = new_inventory
- if _weight_constraint != null:
- _weight_constraint.inventory = inventory
- if _stacks_constraint != null:
- _stacks_constraint.inventory = inventory
- if _grid_constraint != null:
- _grid_constraint.inventory = inventory
-
-
-enum Configuration {WSG, WS, WG, SG, W, S, G, VANILLA}
+signal constraint_changed(constraint: InventoryConstraint)
+const _Verify = preload("res://addons/gloot/core/verify.gd")
+const _Utils = preload("res://addons/gloot/core/utils.gd")
+const _ItemCount = preload("res://addons/gloot/core/item_count.gd")
-func _init(inventory_: Inventory) -> void:
- inventory = inventory_
-
-
-func _on_item_added(item: InventoryItem) -> void:
- assert(_enforce_constraints(item), "Failed to enforce constraints!")
+const _KEY_CONSTRAINT_NAME: String = "name"
+const _KEY_CONSTRAINT_DATA: String = "data"
- # Enforcing constraints can result in the item being removed from the inventory
- # (e.g. when it's merged with another item stack)
- if !is_instance_valid(item.get_inventory()) || item.is_queued_for_deletion():
- item = null
-
- if _weight_constraint != null:
- _weight_constraint._on_item_added(item)
- if _stacks_constraint != null:
- _stacks_constraint._on_item_added(item)
- if _grid_constraint != null:
- _grid_constraint._on_item_added(item)
+var inventory: Inventory = null
+var _constraints: Array[InventoryConstraint] = []
-func _on_item_removed(item: InventoryItem) -> void:
- if _weight_constraint != null:
- _weight_constraint._on_item_removed(item)
- if _stacks_constraint != null:
- _stacks_constraint._on_item_removed(item)
- if _grid_constraint != null:
- _grid_constraint._on_item_removed(item)
-
+func _init(inventory_: Inventory) -> void:
+ inventory = inventory_
+ if !is_instance_valid(inventory):
+ return
-func _on_item_property_changed(item: InventoryItem, property_name: String) -> void:
- if _weight_constraint != null:
- _weight_constraint._on_item_property_changed(item, property_name)
- if _stacks_constraint != null:
- _stacks_constraint._on_item_property_changed(item, property_name)
- if _grid_constraint != null:
- _grid_constraint._on_item_property_changed(item, property_name)
+func is_empty() -> bool:
+ return _constraints.is_empty()
-func _on_pre_item_swap(item1: InventoryItem, item2: InventoryItem) -> bool:
- if _weight_constraint != null && !_weight_constraint._on_pre_item_swap(item1, item2):
- return false
- if _stacks_constraint != null && !_stacks_constraint._on_pre_item_swap(item1, item2):
- return false
- if _grid_constraint != null && !_grid_constraint._on_pre_item_swap(item1, item2):
- return false
- return true
+func register_constraint(constraint: InventoryConstraint) -> void:
+ _constraints.append(constraint)
+ _Utils.safe_connect(constraint.changed, _on_constraint_changed.bind(constraint))
-func _on_post_item_swap(item1: InventoryItem, item2: InventoryItem) -> void:
- if _weight_constraint != null:
- _weight_constraint._on_post_item_swap(item1, item2)
- if _stacks_constraint != null:
- _stacks_constraint._on_post_item_swap(item1, item2)
- if _grid_constraint != null:
- _grid_constraint._on_post_item_swap(item1, item2)
-
-
-func _enforce_constraints(item: InventoryItem) -> bool:
- match get_configuration():
- Configuration.G:
- return _grid_constraint.move_item_to_free_spot(item)
- Configuration.WG:
- return _grid_constraint.move_item_to_free_spot(item)
- Configuration.SG:
- if _grid_constraint.move_item_to_free_spot(item):
- return true
- _stacks_constraint.pack_item(item)
- Configuration.WSG:
- if _grid_constraint.move_item_to_free_spot(item):
- return true
- _stacks_constraint.pack_item(item)
- return true
+func unregister_constraint(constraint: InventoryConstraint) -> void:
+ _constraints.erase(constraint)
+ _Utils.safe_disconnect(constraint.changed, _on_constraint_changed.bind(constraint))
-func get_configuration() -> int:
- if _weight_constraint && _stacks_constraint && _grid_constraint:
- return Configuration.WSG
+func _on_constraint_changed(constraint: InventoryConstraint) -> void:
+ constraint_changed.emit(constraint)
- if _weight_constraint && _stacks_constraint:
- return Configuration.WS
- if _weight_constraint && _grid_constraint:
- return Configuration.WG
+func _on_item_added(item: InventoryItem) -> void:
+ for constraint in _constraints:
+ constraint._on_item_added(item)
- if _stacks_constraint && _grid_constraint:
- return Configuration.SG
- if _weight_constraint:
- return Configuration.W
+func _on_item_removed(item: InventoryItem) -> void:
+ for constraint in _constraints:
+ constraint._on_item_removed(item)
- if _stacks_constraint:
- return Configuration.S
- if _grid_constraint:
- return Configuration.G
+func _on_item_property_changed(item: InventoryItem, property: String) -> void:
+ for constraint in _constraints:
+ constraint._on_item_property_changed(item, property)
- return Configuration.VANILLA
+func _on_pre_item_swap(item1: InventoryItem, item2: InventoryItem) -> bool:
+ for constraint in _constraints:
+ if !constraint._on_pre_item_swap(item1, item2):
+ return false
+ return true
-func get_space_for(item: InventoryItem) -> ItemCount:
- match get_configuration():
- Configuration.W:
- return _weight_constraint.get_space_for(item)
- Configuration.S:
- return _stacks_constraint.get_space_for(item)
- Configuration.G:
- return _grid_constraint.get_space_for(item)
- Configuration.WS:
- return _ws_get_space_for(item)
- Configuration.WG:
- return ItemCount.min(_grid_constraint.get_space_for(item), _weight_constraint.get_space_for(item))
- Configuration.SG:
- return _sg_get_space_for(item)
- Configuration.WSG:
- return ItemCount.min(_sg_get_space_for(item), _ws_get_space_for(item))
- return ItemCount.inf()
+func _on_post_item_swap(item1: InventoryItem, item2: InventoryItem) -> void:
+ for constraint in _constraints:
+ constraint._on_post_item_swap(item1, item2)
-func _ws_get_space_for(item: InventoryItem) -> ItemCount:
- var stack_size := ItemCount.new(_stacks_constraint.get_item_stack_size(item))
- var result := _weight_constraint.get_space_for(item).div(stack_size)
- return result
+func _get_constraints() -> Array[InventoryConstraint]:
+ return _constraints
-func _sg_get_space_for(item: InventoryItem) -> ItemCount:
- var grid_space := _grid_constraint.get_space_for(item)
- var max_stack_size := ItemCount.new(_stacks_constraint.get_item_max_stack_size(item))
- var stack_size := ItemCount.new(_stacks_constraint.get_item_stack_size(item))
- var free_stacks_space := _stacks_constraint.get_free_stack_space_for(item)
- return grid_space.mul(max_stack_size).add(free_stacks_space).div(stack_size)
+func get_space_for(item: InventoryItem) -> _ItemCount:
+ var min := _ItemCount.inf()
+ for constraint in _constraints:
+ var space_for_item: _ItemCount = _ItemCount.new(constraint.get_space_for(item))
+ if space_for_item.lt(min):
+ min = space_for_item
+ return min
func has_space_for(item: InventoryItem) -> bool:
- match get_configuration():
- Configuration.W:
- return _weight_constraint.has_space_for(item)
- Configuration.S:
- return _stacks_constraint.has_space_for(item)
- Configuration.G:
- return _grid_constraint.has_space_for(item)
- Configuration.WS:
- return _weight_constraint.has_space_for(item)
- Configuration.WG:
- return _weight_constraint.has_space_for(item) && _grid_constraint.has_space_for(item)
- Configuration.SG:
- return _sg_has_space_for(item)
- Configuration.WSG:
- return _sg_has_space_for(item) && _weight_constraint.has_space_for(item)
-
+ for constraint in _constraints:
+ if !constraint.has_space_for(item):
+ return false
return true
-func _sg_has_space_for(item: InventoryItem) -> bool:
- if _grid_constraint.has_space_for(item):
- return true
- var stack_size := ItemCount.new(_stacks_constraint.get_item_stack_size(item))
- var free_stacks_space := _stacks_constraint.get_free_stack_space_for(item)
- return free_stacks_space.ge(stack_size)
-
-
-func enable_weight_constraint(capacity: float = 0.0) -> void:
- assert(_weight_constraint == null, "Weight constraint is already enabled")
- _weight_constraint = WeightConstraint.new(inventory)
- _weight_constraint.capacity = capacity
-
-
-func enable_stacks_constraint() -> void:
- assert(_stacks_constraint == null, "Stacks constraint is already enabled")
- _stacks_constraint = StacksConstraint.new(inventory)
-
-
-func enable_grid_constraint(size: Vector2i = GridConstraint.DEFAULT_SIZE) -> void:
- assert(_grid_constraint == null, "Grid constraint is already enabled")
- _grid_constraint = GridConstraint.new(inventory)
- _grid_constraint.size = size
-
-
-func get_weight_constraint() -> WeightConstraint:
- return _weight_constraint
-
-
-func get_stacks_constraint() -> StacksConstraint:
- return _stacks_constraint
-
-
-func get_grid_constraint() -> GridConstraint:
- return _grid_constraint
+func get_constraint(script: Script) -> InventoryConstraint:
+ for constraint in _constraints:
+ if constraint.get_script() == script:
+ return constraint
+ return null
func reset() -> void:
- if get_weight_constraint():
- get_weight_constraint().reset()
- if get_stacks_constraint():
- get_stacks_constraint().reset()
- if get_grid_constraint():
- get_grid_constraint().reset()
+ while !_constraints.is_empty():
+ var constraint := _constraints.pop_back()
+ inventory.remove_child(constraint)
+ constraint.free()
func serialize() -> Dictionary:
var result := {}
- if get_weight_constraint():
- result[KEY_WEIGHT_CONSTRAINT] = get_weight_constraint().serialize()
- if get_stacks_constraint():
- result[KEY_STACKS_CONSTRAINT] = get_stacks_constraint().serialize()
- if get_grid_constraint():
- result[KEY_GRID_CONSTRAINT] = get_grid_constraint().serialize()
+ for constraint in _constraints:
+ result[constraint.get_script().resource_path] = {
+ _KEY_CONSTRAINT_NAME: constraint.name,
+ _KEY_CONSTRAINT_DATA: constraint.serialize()
+ }
return result
func deserialize(source: Dictionary) -> bool:
- if !Verify.dict(source, false, KEY_WEIGHT_CONSTRAINT, TYPE_DICTIONARY):
- return false
- if !Verify.dict(source, false, KEY_STACKS_CONSTRAINT, TYPE_DICTIONARY):
- return false
- if !Verify.dict(source, false, KEY_GRID_CONSTRAINT, TYPE_DICTIONARY):
- return false
+ for constraint_script_path in source:
+ if !_Verify.dict(source[constraint_script_path], true, _KEY_CONSTRAINT_NAME, [TYPE_STRING, TYPE_STRING_NAME]):
+ return false
+ if !_Verify.dict(source[constraint_script_path], true, _KEY_CONSTRAINT_DATA, TYPE_DICTIONARY):
+ return false
reset()
- if source.has(KEY_WEIGHT_CONSTRAINT):
- if !get_weight_constraint().deserialize(source[KEY_WEIGHT_CONSTRAINT]):
- return false
- if source.has(KEY_STACKS_CONSTRAINT):
- if !get_stacks_constraint().deserialize(source[KEY_STACKS_CONSTRAINT]):
- return false
- if source.has(KEY_GRID_CONSTRAINT):
- if !get_grid_constraint().deserialize(source[KEY_GRID_CONSTRAINT]):
- return false
+ for constraint_script_path in source:
+ var constraint_script = load(constraint_script_path)
+ var new_constraint: InventoryConstraint = constraint_script.new()
+ new_constraint.name = source[constraint_script_path].name
+ new_constraint.deserialize(source[constraint_script_path].data)
+ inventory.add_child(new_constraint)
+ if Engine.is_editor_hint():
+ new_constraint.owner = inventory.get_tree().edited_scene_root
return true
--- /dev/null
+uid://bcmjj8jnlmkvt
-extends "res://addons/gloot/core/constraints/inventory_constraint.gd"
-
-signal size_changed
-
-const Verify = preload("res://addons/gloot/core/verify.gd")
-const GridConstraint = preload("res://addons/gloot/core/constraints/grid_constraint.gd")
-const StacksConstraint = preload("res://addons/gloot/core/constraints/stacks_constraint.gd")
-const QuadTree = preload("res://addons/gloot/core/constraints/quadtree.gd")
-const Utils = preload("res://addons/gloot/core/utils.gd")
-
-# TODO: Replace KEY_WIDTH and KEY_HEIGHT with KEY_SIZE
-const KEY_WIDTH: String = "width"
-const KEY_HEIGHT: String = "height"
-const KEY_SIZE: String = "size"
-const KEY_ROTATED: String = "rotated"
-const KEY_POSITIVE_ROTATION: String = "positive_rotation"
-const KEY_GRID_POSITION: String = "grid_position"
+@tool
+@icon("res://addons/gloot/images/icon_grid_constraint.svg")
+extends InventoryConstraint
+class_name GridConstraint
+## A constraint that limits the inventory to a 2d grid of a given size.
+##
+## The constraint implements a grid-based inventory of a configurable size.
+
+const _Verify = preload("res://addons/gloot/core/verify.gd")
+const _QuadTree = preload("res://addons/gloot/core/constraints/quadtree.gd")
+const _Utils = preload("res://addons/gloot/core/utils.gd")
+
+## Default size of the 2d grid.
const DEFAULT_SIZE: Vector2i = Vector2i(10, 10)
-var _swap_position := Vector2i.ZERO
-var _quad_tree := QuadTree.new(size)
+const _KEY_SIZE: String = "size"
+const _KEY_ROTATED: String = "rotated"
+const _KEY_POSITIVE_ROTATION: String = "positive_rotation"
+const _KEY_ITEM_POSITIONS: String = "item_positions"
+const _KEY_INSERTION_PRIORITY: String = "insertion_priority"
-@export var size: Vector2i = DEFAULT_SIZE :
+enum {INSERTION_PRIORITY_HORIZONTAL = 0, INSERTION_PRIORITY_VERTICAL = 1}
+
+var _swap_positions: Array[Vector2i]
+var _item_positions := {}
+var _quad_tree := _QuadTree.new(size)
+var _inventory_set_stack: Array[Callable]
+
+## The size of the 2d grid.
+@export var size: Vector2i = DEFAULT_SIZE:
set(new_size):
- assert(inventory, "Inventory not set!")
assert(new_size.x > 0, "Inventory width must be positive!")
assert(new_size.y > 0, "Inventory height must be positive!")
var old_size = size
size = old_size
if size != old_size:
_refresh_quad_tree()
- size_changed.emit()
+ changed.emit()
+## Insertion priority. Defines whether items will be stacked horizontally-first or vertically-first when inserted into
+## the 2d grid.
+@export_enum("Horizontal", "Vertical") var insertion_priority: int = INSERTION_PRIORITY_VERTICAL:
+ set(new_insertion_priority):
+ if new_insertion_priority == insertion_priority:
+ return
+ insertion_priority = new_insertion_priority
+ changed.emit()
+
+
+func _push_inventory_set_operation(c: Callable) -> void:
+ _inventory_set_stack.push_back(c)
func _refresh_quad_tree() -> void:
- _quad_tree = QuadTree.new(size)
+ _quad_tree = _QuadTree.new(size)
+ if !is_instance_valid(inventory):
+ return
for item in inventory.get_items():
_quad_tree.add(get_item_rect(item), item)
func _on_inventory_set() -> void:
+ _item_positions.clear()
+ while !_inventory_set_stack.is_empty():
+ _inventory_set_stack.pop_back().call()
_refresh_quad_tree()
func _on_item_added(item: InventoryItem) -> void:
if item == null:
return
- _quad_tree.add(get_item_rect(item), item)
+ if move_item_to_free_spot(item):
+ _quad_tree.add(get_item_rect(item), item)
+ else:
+ inventory.pack_item(item)
func _on_item_removed(item: InventoryItem) -> void:
_quad_tree.remove(item)
+ _item_positions.erase(item)
-func _on_item_property_changed(item: InventoryItem, property_name: String) -> void:
- var relevant_properties = [
- KEY_SIZE,
- KEY_ROTATED,
- KEY_WIDTH,
- KEY_HEIGHT,
- KEY_GRID_POSITION,
- ]
- if property_name in relevant_properties:
- _quad_tree.remove(item)
- _quad_tree.add(get_item_rect(item), item)
+func _on_item_property_changed(item: InventoryItem, property: String) -> void:
+ if property == _KEY_SIZE:
+ _refresh_quad_tree()
func _on_pre_item_swap(item1: InventoryItem, item2: InventoryItem) -> bool:
- if !_size_check(item1, item2):
- return false
-
- if inventory.has_item(item1):
- _swap_position = get_item_position(item1)
- elif inventory.has_item(item2):
- _swap_position = get_item_position(item2)
- return true
-
-
-func _size_check(item1: InventoryItem, item2: InventoryItem) -> bool:
var inv1 = item1.get_inventory()
- var grid_constraint1: GridConstraint = null
- if is_instance_valid(inv1):
- grid_constraint1 = inv1._constraint_manager.get_grid_constraint()
var inv2 = item2.get_inventory()
+ var grid_constraint1: GridConstraint = null
var grid_constraint2: GridConstraint = null
+ var pos1 = Vector2i.ZERO
+ var pos2 = Vector2i.ZERO
+ if is_instance_valid(inv1):
+ grid_constraint1 = inv1.get_constraint(GridConstraint)
+ if is_instance_valid(grid_constraint1):
+ pos1 = grid_constraint1.get_item_position(item1)
if is_instance_valid(inv2):
- grid_constraint2 = inv2._constraint_manager.get_grid_constraint()
-
+ grid_constraint2 = inv2.get_constraint(GridConstraint)
+ if is_instance_valid(grid_constraint2):
+ pos2 = grid_constraint2.get_item_position(item2)
+
+ _swap_positions = [pos1, pos2]
if is_instance_valid(grid_constraint1) || is_instance_valid(grid_constraint2):
return get_item_size(item1) == get_item_size(item2)
return true
func _on_post_item_swap(item1: InventoryItem, item2: InventoryItem) -> void:
- var has1 := inventory.has_item(item1)
- var has2 := inventory.has_item(item2)
- if has1 && has2:
- var temp_pos = get_item_position(item1)
- _move_item_to_unsafe(item1, get_item_position(item2))
- _move_item_to_unsafe(item2, temp_pos)
- elif has1:
- move_item_to(item1, _swap_position)
- elif has2:
- move_item_to(item2, _swap_position)
+ const ITEM1_IDX = 0
+ const ITEM2_IDX = 1
+ if is_instance_valid(item1.get_inventory()) && is_instance_valid(item1.get_inventory().get_constraint(GridConstraint)):
+ item1.get_inventory().get_constraint(GridConstraint).set_item_position_unsafe(item1, _swap_positions[ITEM2_IDX])
+ if is_instance_valid(item2.get_inventory()) && is_instance_valid(item2.get_inventory().get_constraint(GridConstraint)):
+ item2.get_inventory().get_constraint(GridConstraint).set_item_position_unsafe(item2, _swap_positions[ITEM1_IDX])
func _bounds_broken() -> bool:
+ if !is_instance_valid(inventory):
+ return false
for item in inventory.get_items():
if !rect_free(get_item_rect(item), item):
return true
return false
+## Returns the position of the given item on the 2d grid.
func get_item_position(item: InventoryItem) -> Vector2i:
- return item.get_property(KEY_GRID_POSITION, Vector2i.ZERO)
+ if !_item_positions.has(item):
+ return Vector2i.ZERO
+ return _item_positions[item]
-# TODO: Consider making a static "unsafe" version of this
+## Sets the position of the given item on the 2d grid.
func set_item_position(item: InventoryItem, new_position: Vector2i) -> bool:
var new_rect := Rect2i(new_position, get_item_size(item))
if inventory.has_item(item) and !rect_free(new_rect, item):
return false
- item.set_property(KEY_GRID_POSITION, new_position)
+ set_item_position_unsafe(item, new_position)
return true
+## Sets the position of the given item on the 2d grid without any validity checks (somewhat faster than
+## set_item_position).
+func set_item_position_unsafe(item: InventoryItem, new_position: Vector2i) -> void:
+ if new_position == get_item_position(item):
+ return
+
+ _item_positions[item] = new_position
+ _refresh_quad_tree()
+ changed.emit()
+
+
+## Returns the size of the given item (i.e. the `size` property).
func get_item_size(item: InventoryItem) -> Vector2i:
- var result: Vector2i
+ var result: Vector2i = item.get_property(_KEY_SIZE, Vector2i.ONE)
if is_item_rotated(item):
- result.x = item.get_property(KEY_HEIGHT, 1)
- result.y = item.get_property(KEY_WIDTH, 1)
- else:
- result.x = item.get_property(KEY_WIDTH, 1)
- result.y = item.get_property(KEY_HEIGHT, 1)
+ var temp := result.x
+ result.x = result.y
+ result.y = temp
return result
+## Checks wether the given item is rotated (i.e. whether the `rotated` property is set).
static func is_item_rotated(item: InventoryItem) -> bool:
- return item.get_property(KEY_ROTATED, false)
+ return item.get_property(_KEY_ROTATED, false)
+## Checks wether the given item has positive rotation.
static func is_item_rotation_positive(item: InventoryItem) -> bool:
- return item.get_property(KEY_POSITIVE_ROTATION, false)
+ return item.get_property(_KEY_POSITIVE_ROTATION, false)
# TODO: Consider making a static "unsafe" version of this
+## Sets the size of the given item (i.e. the `size` property).
func set_item_size(item: InventoryItem, new_size: Vector2i) -> bool:
if new_size.x < 1 || new_size.y < 1:
return false
if inventory.has_item(item) and !rect_free(new_rect, item):
return false
- item.set_property(KEY_WIDTH, new_size.x)
- item.set_property(KEY_HEIGHT, new_size.y)
+ item.set_property(_KEY_SIZE, new_size)
return true
+## Sets the rotation of the given item (i.e. the `rotated` property).
func set_item_rotation(item: InventoryItem, rotated: bool) -> bool:
if is_item_rotated(item) == rotated:
return false
return false
if rotated:
- item.set_property(KEY_ROTATED, true)
+ item.set_property(_KEY_ROTATED, true)
else:
- item.clear_property(KEY_ROTATED)
+ item.clear_property(_KEY_ROTATED)
return true
+## Rotates the given item (i.e. toggles the `rotated` property).
func rotate_item(item: InventoryItem) -> bool:
return set_item_rotation(item, !is_item_rotated(item))
+## Sets the rotation direction of the given item (positive or negative, i.e. sets the `positive_rotation` property).
static func set_item_rotation_direction(item: InventoryItem, positive: bool) -> void:
if positive:
- item.set_property(KEY_POSITIVE_ROTATION, true)
+ item.set_property(_KEY_POSITIVE_ROTATION, true)
else:
- item.clear_property(KEY_POSITIVE_ROTATION)
+ item.clear_property(_KEY_POSITIVE_ROTATION)
+## Checks if the given item can be rotated.
func can_rotate_item(item: InventoryItem) -> bool:
var rotated_rect := get_item_rect(item)
var temp := rotated_rect.size.x
return rect_free(rotated_rect, item)
+## Returns a rectangle constructed from the position and size of the given item.
func get_item_rect(item: InventoryItem) -> Rect2i:
var item_pos := get_item_position(item)
var item_size := get_item_size(item)
return Rect2i(item_pos, item_size)
+## Sets the position and size of the given item based on the given rectangle. Returns `false` if the new position and
+## size cannot be applied to the item.
func set_item_rect(item: InventoryItem, new_rect: Rect2i) -> bool:
if !rect_free(new_rect, item):
return false
func _get_prototype_size(prototype_id: String) -> Vector2i:
assert(inventory != null, "Inventory not set!")
- assert(inventory.item_protoset != null, "Inventory protoset is null!")
- var width: int = inventory.item_protoset.get_prototype_property(prototype_id, KEY_WIDTH, 1)
- var height: int = inventory.item_protoset.get_prototype_property(prototype_id, KEY_HEIGHT, 1)
- return Vector2i(width, height)
-
-
-func _is_sorted() -> bool:
- assert(inventory != null, "Inventory not set!")
- for item1 in inventory.get_items():
- for item2 in inventory.get_items():
- if item1 == item2:
- continue
-
- var rect1: Rect2i = get_item_rect(item1)
- var rect2: Rect2i = get_item_rect(item2)
- if rect1.intersects(rect2):
- return false;
-
- return true
+ assert(inventory.protoset != null, "Inventory protoset is null!")
+ var size: Vector2i = inventory.get_prototree().get_prototype_property(prototype_id, _KEY_SIZE, Vector2i.ONE)
+ return size
+## Adds the given item to the inventory and sets its position.
func add_item_at(item: InventoryItem, position: Vector2i) -> bool:
assert(inventory != null, "Inventory not set!")
if rect_free(rect):
if not inventory.add_item(item):
return false
- assert(move_item_to(item, position), "Can't move the item to the given place!")
+ var success = move_item_to(item, position)
+ assert(success, "Can't move the item to the given place!")
return true
return false
+## Creates and adds the given item to the inventory and sets its position.
func create_and_add_item_at(prototype_id: String, position: Vector2i) -> InventoryItem:
assert(inventory != null, "Inventory not set!")
var item_rect := Rect2i(position, _get_prototype_size(prototype_id))
return item
+## Returns the item at the given grid position. Returns `null` if no item can be found at that position.
func get_item_at(position: Vector2i) -> InventoryItem:
assert(inventory != null, "Inventory not set!")
var first = _quad_tree.get_first(position)
return first.metadata
+## Returns an array of items under the given rectangle.
func get_items_under(rect: Rect2i) -> Array[InventoryItem]:
assert(inventory != null, "Inventory not set!")
var result: Array[InventoryItem]
return result
+## Moves the given item to a new position. Returns `false` if the item cannot be moved.
func move_item_to(item: InventoryItem, position: Vector2i) -> bool:
assert(inventory != null, "Inventory not set!")
var item_size := get_item_size(item)
var rect := Rect2i(position, item_size)
if rect_free(rect, item):
- _move_item_to_unsafe(item, position)
- inventory.contents_changed.emit()
+ set_item_position_unsafe(item, position)
+ changed.emit()
return true
return false
+## Moves the given item to a free spot. Returns `false` if no free spot can be found.
func move_item_to_free_spot(item: InventoryItem) -> bool:
if rect_free(get_item_rect(item), item):
return true
if not free_place.success:
return false
- _move_item_to_unsafe(item, free_place.position)
- return true
-
-
-func _move_item_to_unsafe(item: InventoryItem, position: Vector2i) -> void:
- item.set_property(KEY_GRID_POSITION, position)
- if item.get_property(KEY_GRID_POSITION) == Vector2i.ZERO:
- item.clear_property(KEY_GRID_POSITION)
-
-
-func transfer_to(item: InventoryItem, destination: GridConstraint, position: Vector2i) -> bool:
- assert(inventory != null, "Inventory not set!")
- assert(destination.inventory != null, "Destination inventory not set!")
- var item_size = get_item_size(item)
- var rect := Rect2i(position, item_size)
- if destination.rect_free(rect) && destination.add_item_at(item, position):
- return true
-
- if _merge_to(item, destination, position):
- return true
-
- return InventoryItem.swap(item, destination.get_item_at(position))
+ return move_item_to(item, free_place.position)
func _merge_to(item: InventoryItem, destination: GridConstraint, position: Vector2i) -> bool:
if item_dst == null:
return false
- return inventory._constraint_manager.get_stacks_constraint().join_stacks(item_dst, item)
-
+ return item.merge_into(item_dst)
+
func _get_mergable_item_at(item: InventoryItem, position: Vector2i) -> InventoryItem:
- if inventory._constraint_manager.get_stacks_constraint() == null:
- return null
-
var rect := Rect2i(position, get_item_size(item))
var mergable_items := _get_mergable_items_under(item, rect)
for mergable_item in mergable_items:
- if inventory._constraint_manager.get_stacks_constraint().stacks_joinable(item, mergable_item):
+ if item.can_merge_into(mergable_item):
return mergable_item
return null
for item_dst in get_items_under(rect):
if item_dst == item:
continue
- if StacksConstraint.items_mergable(item_dst, item):
+ if item.can_merge_into(item_dst):
result.append(item_dst)
return result
+## Checks if the given rectangle is free (i.e. no items can be found under it). The `exception` item will be disregarded
+## during the check, if set.
func rect_free(rect: Rect2i, exception: InventoryItem = null) -> bool:
assert(inventory != null, "Inventory not set!")
# TODO: Check if this is needed after adding find_free_space
+## Finds a place for the given item. The `exception` item will be disregarded during the search, if set. Returns a
+## dictionary containing two fields: `success` and `position`. `success` will be set to `false` if not free place can be
+## found and to `true` otherwise. If `success` is true the `position` field contains the resulting coordinates.
func find_free_place(item: InventoryItem, exception: InventoryItem = null) -> Dictionary:
var result := {success = false, position = Vector2i(-1, -1)}
var item_size = get_item_size(item)
- for x in range(size.x - (item_size.x - 1)):
+
+ var check_position := func(pos: Vector2i) -> bool:
+ var rect := Rect2i(pos, item_size)
+ if rect_free(rect, exception):
+ result.success = true
+ result.position = pos
+ return true
+ return false
+
+ if insertion_priority == INSERTION_PRIORITY_VERTICAL:
+ for x in range(size.x - (item_size.x - 1)):
+ for y in range(size.y - (item_size.y - 1)):
+ if check_position.call(Vector2i(x, y)):
+ return result
+ else:
for y in range(size.y - (item_size.y - 1)):
- var rect := Rect2i(Vector2i(x, y), item_size)
- if rect_free(rect, exception):
- result.success = true
- result.position = Vector2i(x, y)
- return result
+ for x in range(size.x - (item_size.x - 1)):
+ if check_position.call(Vector2i(x, y)):
+ return result
return result
return rect1.get_area() > rect2.get_area()
+## Sorts the inventory based on item size.
func sort() -> bool:
assert(inventory != null, "Inventory not set!")
item_array.sort_custom(_compare_items)
for item in item_array:
- _move_item_to_unsafe(item, -get_item_size(item))
+ set_item_position_unsafe(item, -get_item_size(item))
for item in item_array:
var free_place := find_free_place(item)
return true
-func _sort_if_needed() -> void:
- if !_is_sorted() || _bounds_broken():
- sort()
+## Returns the number of times this constraint can receive the given item.
+func get_space_for(item: InventoryItem) -> int:
+ var result = _get_free_space_for(item) * item.get_max_stack_size()
+ for i in inventory.get_items():
+ if item.can_merge_into(i, true):
+ result += i.get_free_stack_space()
+
+ return result
-func get_space_for(item: InventoryItem) -> ItemCount:
- var occupied_rects: Array[Rect2i]
- var item_size = get_item_size(item)
+func _get_free_space_for(item: InventoryItem) -> int:
+ var item_size = get_item_size(item)
+ var occupied_rects: Array[Rect2i]
var free_space := find_free_space(item_size, occupied_rects)
+
while free_space.success:
occupied_rects.append(Rect2i(free_space.position, item_size))
free_space = find_free_space(item_size, occupied_rects)
- return ItemCount.new(occupied_rects.size())
-
+ return occupied_rects.size()
+
+## Checks if the constraint can receive the given item.
func has_space_for(item: InventoryItem) -> bool:
- var item_size = get_item_size(item)
- return find_free_space(item_size).success
+ var item_size = get_item_size(item)
+
+ if find_free_space(item_size).success:
+ return true
+
+ var total_free_stack_space = 0
+ for i in inventory.get_items():
+ if item.compatible_with(i):
+ total_free_stack_space += i.get_free_stack_space()
+ return total_free_stack_space >= item.get_stack_size()
# TODO: Check if find_free_place is needed
+## Finds a place for the given item with regard to the given occupied rectangles. Returns a dictionary containing two
+## fields: `success` and `position`. `success` will be set to `false` if not free place can be found and to `true`
+## otherwise. If `success` is true the `position` field contains the resulting coordinates.
func find_free_space(item_size: Vector2i, occupied_rects: Array[Rect2i] = []) -> Dictionary:
var result := {success = false, position = Vector2i(-1, -1)}
for x in range(size.x - (item_size.x - 1)):
return false
+## Resets the constraint, i.e. sets its size to default (`Vector2i(10, 10)`).
func reset() -> void:
size = DEFAULT_SIZE
+ _quad_tree = _QuadTree.new(size)
+ _item_positions.clear()
+ insertion_priority = INSERTION_PRIORITY_VERTICAL
+## Serializes the constraint into a `Dictionary`.
func serialize() -> Dictionary:
var result := {}
# Store Vector2i as string to make JSON conversion easier later
- result[KEY_SIZE] = var_to_str(size)
+ result[_KEY_SIZE] = var_to_str(size)
+ result[_KEY_ITEM_POSITIONS] = _serialize_item_positions()
+ if insertion_priority == INSERTION_PRIORITY_HORIZONTAL:
+ result[_KEY_INSERTION_PRIORITY] = int(insertion_priority)
+
+ return result
+
+func _serialize_item_positions() -> Dictionary:
+ var result = {}
+ for item in _item_positions.keys():
+ var str_item_index := var_to_str(inventory.get_item_index(item))
+ var str_item_position = var_to_str(_item_positions[item])
+ result[str_item_index] = str_item_position
return result
+## Loads the constraint data from the given `Dictionary`.
func deserialize(source: Dictionary) -> bool:
- if !Verify.dict(source, true, KEY_SIZE, TYPE_STRING):
+ if !_Verify.dict(source, true, _KEY_SIZE, TYPE_STRING) || \
+ !_Verify.dict(source, false, _KEY_INSERTION_PRIORITY, [TYPE_INT, TYPE_FLOAT]):
return false
reset()
- var s: Vector2i = Utils.str_to_var(source[KEY_SIZE])
- self.size = s
+ # Queue this part of the deserialization for later if the inventory is still not set
+ if is_instance_valid(inventory):
+ _deserialize_item_positions(source[_KEY_ITEM_POSITIONS])
+ else:
+ _push_inventory_set_operation(_deserialize_item_positions.bind(source[_KEY_ITEM_POSITIONS].duplicate()))
+
+ size = _Utils.str_to_var(source[_KEY_SIZE])
+ if source.has(_KEY_INSERTION_PRIORITY):
+ insertion_priority = int(source[_KEY_INSERTION_PRIORITY])
return true
+
+func _deserialize_item_positions(source: Dictionary) -> bool:
+ for str_item_index in source.keys():
+ var item_index: int = _Utils.str_to_var(str_item_index)
+ var item := inventory.get_items()[item_index]
+ var item_position = _Utils.str_to_var(source[str_item_index])
+ set_item_position_unsafe(item, item_position)
+ return true
--- /dev/null
+uid://rk48gcn3clet
-extends Object
-
-var inventory: Inventory = null :
+@tool
+extends Node
+class_name InventoryConstraint
+## Base inventory constraint class.
+##
+## Base inventory constraint class which implements some basic constraint functionality and defines methods that can be
+## overridden.
+
+## Emitted when the state of the constraint has changed.
+signal changed
+
+## Reference to an inventory that this constraint belongs to.
+var inventory: Inventory = null:
set(new_inventory):
- assert(new_inventory != null, "Can't set inventory to null!")
- assert(inventory == null, "Inventory already set!")
inventory = new_inventory
- _on_inventory_set()
+ if is_instance_valid(inventory):
+ _on_inventory_set()
-func _init(inventory_: Inventory) -> void:
- inventory = inventory_
+func _notification(what: int) -> void:
+ if what == NOTIFICATION_PARENTED:
+ _on_parented(get_parent())
+ elif what == NOTIFICATION_UNPARENTED:
+ _on_unparented()
-# Override this
-func get_space_for(item: InventoryItem) -> ItemCount:
- return ItemCount.zero()
+func _on_parented(parent: Node) -> void:
+ if parent is Inventory:
+ inventory = parent
+ inventory._on_constraint_added(self)
+ else:
+ inventory = null
+ update_configuration_warnings()
-# Override this
-func has_space_for(item:InventoryItem) -> bool:
- return false
+func _on_unparented() -> void:
+ if inventory == null:
+ return
+ inventory._on_constraint_removed(self)
+ inventory = null
+ update_configuration_warnings()
-# Override this
-func reset() -> void:
- pass
+func _get_configuration_warnings() -> PackedStringArray:
+ if inventory == null:
+ return PackedStringArray([
+ "InventoryConstraint nodes only serve to provide constraints to Inventory nodes. Please only use them as " \
+ + "children of Inventory nodes."])
+ return PackedStringArray()
+
+
+## Returns the number of times this constraint can receive the given item.
+func get_space_for(item: InventoryItem) -> int:
+ return 0
+
+
+## Checks if the constraint can receive the given item.
+func has_space_for(item: InventoryItem) -> bool:
+ return false
-# Override this
+## Serializes the constraint into a `Dictionary`.
func serialize() -> Dictionary:
return {}
-# Override this
+## Loads the constraint data from the given `Dictionary`.
func deserialize(source: Dictionary) -> bool:
return true
-# Override this
+## Called when constraint inventory is set/changed.
func _on_inventory_set() -> void:
pass
-# Override this
+## Called when an item is added to the inventory.
func _on_item_added(item: InventoryItem) -> void:
pass
-# Override this
+## Called when an item is removed from the inventory.
func _on_item_removed(item: InventoryItem) -> void:
pass
-# Override this
-func _on_item_property_changed(item: InventoryItem, property_name: String) -> void:
+## Called when an item property has changed.
+func _on_item_property_changed(item: InventoryItem, property: String) -> void:
pass
-# Override this
+## Called before the two given items are swapped.
func _on_pre_item_swap(item1: InventoryItem, item2: InventoryItem) -> bool:
return true
-# Override this
+## Called after the two given items have been swapped.
func _on_post_item_swap(item1: InventoryItem, item2: InventoryItem) -> void:
pass
--- /dev/null
+uid://ywmav23pfy8k
--- /dev/null
+@tool
+@icon("res://addons/gloot/images/icon_item_count_constraint.svg")
+extends InventoryConstraint
+class_name ItemCountConstraint
+## A constraint that limits the inventory to a given item stack count.
+##
+## The constraint implements a count-based inventory where the total number of item stacks cannot exceed the configured
+## capacity of the inventory.
+
+const _Verify = preload("res://addons/gloot/core/verify.gd")
+
+## Default capacity.
+const DEFAULT_CAPACITY = 1
+
+const _KEY_CAPACITY: String = "capacity"
+
+## Maximum number of item stacks the inventory can hold.
+@export var capacity: int = DEFAULT_CAPACITY:
+ set(new_capacity):
+ if new_capacity < 1:
+ new_capacity = 1
+ if new_capacity == capacity:
+ return
+ if new_capacity > 0.0 && get_occupied_space() > new_capacity:
+ return
+ capacity = new_capacity
+ changed.emit()
+
+
+## Returns the number of item stacks that can be added to the inventory.
+func get_free_space() -> int:
+ return max(0, capacity - get_occupied_space())
+
+
+## Returns the total number of item stacks in the inventory.
+func get_occupied_space() -> int:
+ if !is_instance_valid(inventory):
+ return 0
+ return inventory.get_item_count()
+
+
+## Returns the number of times this constraint can receive the given item.
+func get_space_for(item: InventoryItem) -> int:
+ var free_stack_space := 0
+ for i in inventory.get_items():
+ if item.can_merge_into(i):
+ free_stack_space += i.get_free_stack_space()
+
+ var free_space = get_free_space() * item.get_max_stack_size()
+ return free_stack_space + free_space
+
+
+## Checks if the constraint can receive the given item.
+func has_space_for(item: InventoryItem) -> bool:
+ return get_occupied_space() < capacity || get_space_for(item) > 0
+
+
+## Resets the constraint, i.e. sets its capacity to default (`1`).
+func reset() -> void:
+ capacity = DEFAULT_CAPACITY
+
+
+## Serializes the constraint into a `Dictionary`.
+func serialize() -> Dictionary:
+ var result := {}
+ result[_KEY_CAPACITY] = capacity
+ return result
+
+
+## Loads the constraint data from the given `Dictionary`.
+func deserialize(source: Dictionary) -> bool:
+ if !_Verify.dict(source, true, _KEY_CAPACITY, [TYPE_INT, TYPE_FLOAT]):
+ return false
+
+ reset()
+ capacity = source[_KEY_CAPACITY]
+
+ return true
--- /dev/null
+uid://catvy2gpuw1gg
+++ /dev/null
-var map: Array
-var _free_fields: int
-var free_fields :
- get:
- return _free_fields
- set(new_free_fields):
- assert(false, "free_fields is read-only!")
-
-
-func _init(size: Vector2i) -> void:
- resize(size)
-
-
-func resize(size: Vector2i) -> void:
- map = []
- map.resize(size.x)
- for i in map.size():
- map[i] = []
- map[i].resize(size.y)
- _free_fields = size.x * size.y
-
-
-func fill_rect(rect: Rect2i, value) -> void:
- assert(value != null, "Can't fill with null!")
- _fill_rect_unsafe(rect, value)
-
-
-func _fill_rect_unsafe(rect: Rect2i, value) -> void:
- for x in range(rect.size.x):
- for y in range(rect.size.y):
- var map_coords := Vector2i(rect.position.x + x, rect.position.y + y)
- if !contains(map_coords):
- continue
- if map[map_coords.x][map_coords.y] != value:
- if value == null:
- _free_fields += 1
- else:
- _free_fields -= 1
- map[map_coords.x][map_coords.y] = value
-
-
-func clear_rect(rect: Rect2i) -> void:
- _fill_rect_unsafe(rect, null)
-
-
-func print() -> void:
- if map.is_empty():
- return
- var output: String
- var size = get_size()
- for j in range(size.y):
- for i in range(size.x):
- if map[i][j]:
- output = output + "x"
- else:
- output = output + "."
- output = output + "\n"
- print(output + "\n")
-
-
-func clear() -> void:
- for column in map:
- column.fill(null)
- var size = get_size()
- _free_fields = size.x * size.y
-
-
-func contains(position: Vector2i) -> bool:
- if map.is_empty():
- return false
-
- var size = get_size()
- return (position.x >= 0) && (position.y >= 0) && (position.x < size.x) && (position.y < size.y)
-
-
-func get_field(position: Vector2i):
- assert(contains(position), "%s out of bounds!" % position)
- return map[position.x][position.y]
-
-
-func get_size() -> Vector2i:
- if map.is_empty():
- return Vector2i.ZERO
- return Vector2i(map.size(), map[0].size())
-
-
class QtRect:
var rect: Rect2i
var metadata: Variant
--- /dev/null
+uid://c8wauomqxb5j6
+++ /dev/null
-extends "res://addons/gloot/core/constraints/inventory_constraint.gd"
-
-const WeightConstraint = preload("res://addons/gloot/core/constraints/weight_constraint.gd")
-const GridConstraint = preload("res://addons/gloot/core/constraints/grid_constraint.gd")
-
-const KEY_STACK_SIZE: String = "stack_size"
-const KEY_MAX_STACK_SIZE: String = "max_stack_size"
-
-const DEFAULT_STACK_SIZE: int = 1
-# TODO: Consider making the default max stack size 1
-const DEFAULT_MAX_STACK_SIZE: int = 100
-
-enum MergeResult {SUCCESS = 0, FAIL, PARTIAL}
-
-
-# TODO: Check which util functions can be made private
-# TODO: Consider making these util methods work with ItemCount
-static func _get_free_stack_space(item: InventoryItem) -> int:
- assert(item != null, "item is null!")
- return get_item_max_stack_size(item) - get_item_stack_size(item)
-
-
-static func _has_custom_property(item: InventoryItem, property: String, value) -> bool:
- assert(item != null, "item is null!")
- return item.properties.has(property) && item.properties[property] == value;
-
-
-static func get_item_stack_size(item: InventoryItem) -> int:
- assert(item != null, "item is null!")
- return item.get_property(KEY_STACK_SIZE, DEFAULT_STACK_SIZE)
-
-
-static func get_item_max_stack_size(item: InventoryItem) -> int:
- assert(item != null, "item is null!")
- return item.get_property(KEY_MAX_STACK_SIZE, DEFAULT_MAX_STACK_SIZE)
-
-
-static func set_item_stack_size(item: InventoryItem, stack_size: int) -> bool:
- assert(item != null, "item is null!")
- assert(stack_size >= 0, "stack_size can't be negative!")
- if stack_size > get_item_max_stack_size(item):
- return false
- if stack_size == 0:
- var inventory: Inventory = item.get_inventory()
- if inventory != null:
- inventory.remove_item(item)
- item.queue_free()
- return true
- item.set_property(KEY_STACK_SIZE, stack_size)
- return true
-
-
-static func set_item_max_stack_size(item: InventoryItem, max_stack_size: int) -> void:
- assert(item != null, "item is null!")
- assert(max_stack_size > 0, "max_stack_size can't be less than 1!")
- item.set_property(KEY_MAX_STACK_SIZE, max_stack_size)
-
-
-static func get_prototype_stack_size(protoset: ItemProtoset, prototype_id: String) -> int:
- assert(protoset != null, "protoset is null!")
- return protoset.get_prototype_property(prototype_id, KEY_STACK_SIZE, 1.0)
-
-
-static func get_prototype_max_stack_size(protoset: ItemProtoset, prototype_id: String) -> int:
- assert(protoset != null, "protoset is null!")
- return protoset.get_prototype_property(prototype_id, KEY_MAX_STACK_SIZE, 1.0)
-
-
-func get_mergable_items(item: InventoryItem) -> Array[InventoryItem]:
- assert(inventory != null, "Inventory not set!")
- assert(item != null, "item is null!")
-
- var result: Array[InventoryItem] = []
-
- for i in inventory.get_items():
- if i == item:
- continue
- if !items_mergable(i, item):
- continue
-
- result.append(i)
-
- return result
-
-
-static func items_mergable(item_1: InventoryItem, item_2: InventoryItem) -> bool:
- # Two item stacks are mergable if they have the same prototype ID and neither of the two contain
- # custom properties that the other one doesn't have (except for "stack_size", "max_stack_size",
- # "grid_position", or "weight").
- assert(item_1 != null, "item_1 is null!")
- assert(item_2 != null, "item_2 is null!")
-
- var ignore_properies: Array[String] = [
- KEY_STACK_SIZE,
- KEY_MAX_STACK_SIZE,
- GridConstraint.KEY_GRID_POSITION,
- WeightConstraint.KEY_WEIGHT
- ]
-
- if item_1.prototype_id != item_2.prototype_id:
- return false
-
- for property in item_1.properties.keys():
- if property in ignore_properies:
- continue
- if !_has_custom_property(item_2, property, item_1.properties[property]):
- return false
-
- for property in item_2.properties.keys():
- if property in ignore_properies:
- continue
- if !_has_custom_property(item_1, property, item_2.properties[property]):
- return false
-
- return true
-
-
-func add_item_automerge(
- item: InventoryItem,
- ignore_properies: Array[String] = []
-) -> bool:
- assert(item != null, "Item is null!")
- assert(inventory != null, "Inventory not set!")
- if !inventory._constraint_manager.has_space_for(item):
- return false
-
- var target_items = get_mergable_items(item)
- for target_item in target_items:
- if _merge_stacks(target_item, item) == MergeResult.SUCCESS:
- return true
-
- assert(inventory.add_item(item))
- return true
-
-
-static func _merge_stacks(item_dst: InventoryItem, item_src: InventoryItem) -> int:
- assert(item_dst != null, "item_dst is null!")
- assert(item_src != null, "item_src is null!")
- assert(items_mergable(item_dst, item_src), "Items must be mergable!")
-
- var src_size: int = get_item_stack_size(item_src)
- assert(src_size > 0, "Item stack size must be greater than 0!")
-
- var dst_size: int = get_item_stack_size(item_dst)
- var dst_max_size: int = get_item_max_stack_size(item_dst)
- var free_dst_stack_space: int = dst_max_size - dst_size
- if free_dst_stack_space <= 0:
- return MergeResult.FAIL
-
- assert(set_item_stack_size(item_src, max(src_size - free_dst_stack_space, 0)))
- assert(set_item_stack_size(item_dst, min(dst_size + src_size, dst_max_size)))
-
- if free_dst_stack_space >= src_size:
- return MergeResult.SUCCESS
-
- return MergeResult.PARTIAL
-
-
-static func split_stack(item: InventoryItem, new_stack_size: int) -> InventoryItem:
- assert(item != null, "item is null!")
- assert(new_stack_size >= 1, "New stack size must be greater or equal to 1!")
-
- var stack_size = get_item_stack_size(item)
- assert(stack_size > 1, "Size of the item stack must be greater than 1!")
- assert(
- new_stack_size < stack_size,
- "New stack size must be smaller than the original stack size!"
- )
-
- var new_item = item.duplicate()
- if new_item.get_parent():
- new_item.get_parent().remove_child(new_item)
-
- assert(set_item_stack_size(new_item, new_stack_size))
- assert(set_item_stack_size(item, stack_size - new_stack_size))
- return new_item
-
-
-# TODO: Rename this
-func split_stack_safe(item: InventoryItem, new_stack_size: int) -> InventoryItem:
- assert(inventory != null, "inventory is null!")
- assert(inventory.has_item(item), "The inventory does not contain the given item!")
-
- var new_item = split_stack(item, new_stack_size)
- if new_item:
- assert(inventory.add_item(new_item))
- return new_item
-
-
-static func join_stacks(
- item_dst: InventoryItem,
- item_src: InventoryItem
-) -> bool:
- if item_dst == null || item_src == null:
- return false
-
- if (!stacks_joinable(item_dst, item_src)):
- return false
-
- # TODO: Check if this can be an assertion
- _merge_stacks(item_dst, item_src)
- return true
-
-
-static func stacks_joinable(
- item_dst: InventoryItem,
- item_src: InventoryItem
-) -> bool:
- assert(item_dst != null, "item_dst is null!")
- assert(item_src != null, "item_src is null!")
-
- if not items_mergable(item_dst, item_src):
- return false
-
- var dst_free_space = _get_free_stack_space(item_dst)
- if dst_free_space < get_item_stack_size(item_src):
- return false
-
- return true
-
-
-func get_space_for(item: InventoryItem) -> ItemCount:
- return ItemCount.inf()
-
-
-func has_space_for(item: InventoryItem) -> bool:
- return true
-
-
-func get_free_stack_space_for(item: InventoryItem) -> ItemCount:
- assert(inventory != null, "Inventory not set!")
-
- var item_count = ItemCount.zero()
- var mergable_items = get_mergable_items(item)
- for mergable_item in mergable_items:
- var free_stack_space := _get_free_stack_space(mergable_item)
- item_count.add(ItemCount.new(free_stack_space))
- return item_count
-
-
-static func pack_item(item: InventoryItem) -> void:
- if !is_instance_valid(item.get_inventory()):
- return
-
- var sc := item.get_inventory()._constraint_manager.get_stacks_constraint()
- if sc == null:
- return
-
- var mergable_items = sc.get_mergable_items(item)
- for mergable_item in mergable_items:
- var merge_result := _merge_stacks(mergable_item, item)
- if merge_result == MergeResult.SUCCESS:
- return
-
-
-func transfer_autosplit(item: InventoryItem, destination: Inventory) -> InventoryItem:
- assert(inventory._constraint_manager.get_configuration() == destination._constraint_manager.get_configuration())
- if inventory.transfer(item, destination):
- return item
-
- var stack_size := get_item_stack_size(item)
- if stack_size <= 1:
- return null
-
- var item_count := _get_space_for_single_item(destination, item)
- assert(!item_count.eq(ItemCount.inf()), "Item count shouldn't be infinite!")
-
- if item_count.le(ItemCount.zero()):
- return null
-
- var new_item: InventoryItem = split_stack(item, item_count.count)
- assert(new_item != null)
-
- assert(destination.add_item(new_item))
- return new_item
-
-
-func _get_space_for_single_item(inventory: Inventory, item: InventoryItem) -> ItemCount:
- var single_item := item.duplicate()
- assert(set_item_stack_size(single_item, 1))
- var count := inventory._constraint_manager.get_space_for(single_item)
- single_item.free()
- return count
-
-
-func transfer_autosplitmerge(item: InventoryItem, destination: Inventory) -> bool:
- if destination._constraint_manager.has_space_for(item):
- # No need for splitting
- return transfer_automerge(item, destination)
-
- var item_count := _get_space_for_single_item(destination, item)
- if item_count.eq(ItemCount.zero()):
- return false
- var new_item: InventoryItem = split_stack(item, item_count.count)
- assert(transfer_automerge(new_item, destination))
- return true
-
-
-func transfer_automerge(item: InventoryItem, destination: Inventory) -> bool:
- assert(inventory._constraint_manager.get_configuration() == destination._constraint_manager.get_configuration())
-
- if !destination._constraint_manager.has_space_for(item):
- return false
- for i in destination.get_items():
- if items_mergable(i, item):
- _merge_stacks(i, item)
- if item.is_queued_for_deletion():
- # Stack size reached 0
- return true
- assert(destination.add_item(item))
- return true
-
-extends "res://addons/gloot/core/constraints/inventory_constraint.gd"
+@tool
+@icon("res://addons/gloot/images/icon_weight_constraint.svg")
+extends InventoryConstraint
+class_name WeightConstraint
+## A constraint that limits the inventory to a given weight capacity.
+##
+## The constraint implements a weight-based inventory where the total sum of the item weights cannot exceed the
+## configured capacity of the inventory.
-signal capacity_changed
-signal occupied_space_changed
+## Default capacity.
+const DEFAULT_CAPACITY: float = 1.0
-const KEY_WEIGHT: String = "weight"
-const KEY_CAPACITY: String = "capacity"
-const KEY_OCCUPIED_SPACE: String = "occupied_space"
+const _KEY_WEIGHT: String = "weight"
+const _KEY_CAPACITY: String = "capacity"
+const _KEY_OCCUPIED_SPACE: String = "occupied_space"
-const Verify = preload("res://addons/gloot/core/verify.gd")
-const StacksConstraint = preload("res://addons/gloot/core/constraints/stacks_constraint.gd")
+const _Verify = preload("res://addons/gloot/core/verify.gd")
-var capacity: float :
+## Maximum weight the inventory can hold.
+@export var capacity: float = DEFAULT_CAPACITY:
set(new_capacity):
if new_capacity < 0.0:
new_capacity = 0.0
if new_capacity == capacity:
return
- if new_capacity > 0.0 && occupied_space > new_capacity:
+ if new_capacity > 0.0 && _occupied_space > new_capacity:
return
capacity = new_capacity
- capacity_changed.emit()
+ changed.emit()
var _occupied_space: float
-var occupied_space: float :
- get:
- return _occupied_space
- set(new_occupied_space):
- assert(false, "occupied_space is read-only!")
-func _init(inventory: Inventory) -> void:
- super._init(inventory)
+## Returns the total sum of the item weights.
+func get_occupied_space() -> float:
+ return _occupied_space
func _on_inventory_set() -> void:
_calculate_occupied_space()
-func _on_item_property_changed(item: InventoryItem, property_name: String) -> void:
- var relevant_properties = [
- KEY_WEIGHT,
- StacksConstraint.KEY_STACK_SIZE,
- ]
- if property_name in relevant_properties:
+func _on_item_property_changed(item: InventoryItem, property: String) -> void:
+ if property == _KEY_WEIGHT || property == Inventory._KEY_STACK_SIZE:
_calculate_occupied_space()
if !is_instance_valid(inv):
return true
- var weight_constraint = inv._constraint_manager.get_weight_constraint()
+ var weight_constraint = inv._constraint_manager.get_constraint(WeightConstraint)
if !is_instance_valid(weight_constraint):
return true
- if weight_constraint.has_unlimited_capacity():
- return true
-
- var space_needed: float = weight_constraint.occupied_space - get_item_weight(item_dst) + get_item_weight(item_src)
+ var space_needed: float = weight_constraint._occupied_space - get_item_weight(item_dst) + get_item_weight(item_src)
return space_needed <= weight_constraint.capacity
-func has_unlimited_capacity() -> bool:
- return capacity == 0.0
-
-
+## Returns the available space in the inventory.
func get_free_space() -> float:
- if has_unlimited_capacity():
- return capacity
-
var free_space: float = capacity - _occupied_space
if free_space < 0.0:
free_space = 0.0
func _calculate_occupied_space() -> void:
var old_occupied_space = _occupied_space
_occupied_space = 0.0
- for item in inventory.get_items():
- _occupied_space += get_item_weight(item)
+ if is_instance_valid(inventory):
+ for item in inventory.get_items():
+ _occupied_space += get_item_weight(item)
if _occupied_space != old_occupied_space:
- emit_signal("occupied_space_changed")
+ changed.emit()
if !Engine.is_editor_hint():
- assert(has_unlimited_capacity() || _occupied_space <= capacity, "Inventory overflow!")
+ assert(_occupied_space <= capacity, "Inventory overflow!")
static func _get_item_unit_weight(item: InventoryItem) -> float:
- var weight = item.get_property(KEY_WEIGHT, 1.0)
+ var weight = item.get_property(_KEY_WEIGHT, 1.0)
return weight
+## Returns the weight of the given item (i.e. the `weight` property).
static func get_item_weight(item: InventoryItem) -> float:
if item == null:
return -1.0
- return StacksConstraint.get_item_stack_size(item) * _get_item_unit_weight(item)
+ # TODO: Handle infinity?
+ return item.get_stack_size() * _get_item_unit_weight(item)
+## Sets the weight of the given item (i.e. the `weight` property).
static func set_item_weight(item: InventoryItem, weight: float) -> void:
assert(weight >= 0.0, "Item weight must be greater or equal to 0!")
- item.set_property(KEY_WEIGHT, weight)
+ item.set_property(_KEY_WEIGHT, weight)
-func get_space_for(item: InventoryItem) -> ItemCount:
- if has_unlimited_capacity():
- return ItemCount.inf()
- var unit_weight := _get_item_unit_weight(item)
- return ItemCount.new(floor(get_free_space() / unit_weight))
+## Returns the number of times this constraint can receive the given item.
+func get_space_for(item: InventoryItem) -> int:
+ return floor(get_free_space() / _get_item_unit_weight(item))
+## Checks if the constraint can receive the given item.
func has_space_for(item: InventoryItem) -> bool:
- if has_unlimited_capacity():
- return true
var item_weight := get_item_weight(item)
return get_free_space() >= item_weight
+## Resets the constraint, i.e. sets its capacity to default (`1.0`).
func reset() -> void:
- capacity = 0.0
+ capacity = DEFAULT_CAPACITY
+## Serializes the constraint into a `Dictionary`.
func serialize() -> Dictionary:
var result := {}
- result[KEY_CAPACITY] = capacity
- # TODO: Check if this is needed
- result[KEY_OCCUPIED_SPACE] = _occupied_space
+ result[_KEY_CAPACITY] = capacity
return result
+## Loads the constraint data from the given `Dictionary`.
func deserialize(source: Dictionary) -> bool:
- if !Verify.dict(source, true, KEY_CAPACITY, TYPE_FLOAT) ||\
- !Verify.dict(source, true, KEY_OCCUPIED_SPACE, TYPE_FLOAT):
+ if !_Verify.dict(source, true, _KEY_CAPACITY, TYPE_FLOAT):
return false
reset()
- capacity = source[KEY_CAPACITY]
- # TODO: Check if this is needed
- _occupied_space = source[KEY_OCCUPIED_SPACE]
+ capacity = source[_KEY_CAPACITY]
+ _calculate_occupied_space()
return true
-
-
--- /dev/null
+uid://3e0y8fv4t2bg
@icon("res://addons/gloot/images/icon_inventory.svg")
extends Node
class_name Inventory
+## Basic stack-based inventory class.
+##
+## Supports basic inventory operations (adding, removing, transferring items etc.). Can contain an unlimited amount of item stacks.
+
+signal item_added(item: InventoryItem) ## Emitted when an item has been added to the inventory.
+signal item_removed(item: InventoryItem) ## Emitted when an item has been removed from the inventory.
+signal item_property_changed(item: InventoryItem, property: String) ## Emitted when a property of an item inside the inventory has been changed.
+signal item_moved(item: InventoryItem) ## Emitted when an item has moved to a new index.
+signal protoset_changed ## Emitted when the protoset property has changed.
+signal constraint_added(constraint: InventoryConstraint) ## Emitted when a new constraint has been added to the inventory.
+signal constraint_removed(constraint: InventoryConstraint) ## Emitted when a constraint has been removed from the inventory.
+signal constraint_changed(constraint: InventoryConstraint) ## Emitted when an inventory constraint has changed.
+
+const _StackManager = preload("res://addons/gloot/core/stack_manager.gd")
+const _ConstraintManager = preload("res://addons/gloot/core/constraints/constraint_manager.gd")
+const _Utils = preload("res://addons/gloot/core/utils.gd")
+const _ItemCount = preload("res://addons/gloot/core/item_count.gd")
+const _Verify = preload("res://addons/gloot/core/verify.gd")
+const _ProtoTreeCache = preload("res://addons/gloot/core/prototree/proto_tree_cache.gd")
+
+const _KEY_NODE_NAME: String = "node_name"
+const _KEY_PROTOSET: String = "protoset"
+const _KEY_CONSTRAINTS: String = "constraints"
+const _KEY_ITEMS: String = "items"
+const _KEY_STACK_SIZE = _StackManager._KEY_STACK_SIZE
+const _KEY_MAX_STACK_SIZE = _StackManager._KEY_MAX_STACK_SIZE
+
+## A JSON resource containing prototype information.
+@export var protoset: JSON:
+ set(new_protoset):
+ if new_protoset == protoset:
+ return
+ clear()
+ _disconnect_protoset_signals()
+ protoset = new_protoset
+ _prototree = _ProtoTreeCache.get_cached(protoset)
+ _connect_protoset_signals()
+ protoset_changed.emit()
+ update_configuration_warnings()
+
+var _prototree := _ProtoTreeCache.get_empty()
-signal item_added(item)
-signal item_removed(item)
-signal item_modified(item)
-signal item_property_changed(item, property_name)
-signal contents_changed
-signal protoset_changed
-
-const ConstraintManager = preload("res://addons/gloot/core/constraints/constraint_manager.gd")
-
-@export var item_protoset: ItemProtoset:
- set(new_item_protoset):
- if new_item_protoset == item_protoset:
- return
- clear()
- _disconnect_protoset_signals()
- item_protoset = new_item_protoset
- _connect_protoset_signals()
- protoset_changed.emit()
- update_configuration_warnings()
var _items: Array[InventoryItem] = []
-var _constraint_manager: ConstraintManager = null
+var _constraint_manager: _ConstraintManager = null
+var _serialized_format: Dictionary:
+ set(new_serialized_format):
+ _serialized_format = new_serialized_format
-const KEY_NODE_NAME: String = "node_name"
-const KEY_ITEM_PROTOSET: String = "item_protoset"
-const KEY_CONSTRAINTS: String = "constraints"
-const KEY_ITEMS: String = "items"
-const Verify = preload("res://addons/gloot/core/verify.gd")
+
+## Returns the inventory prototree parsed from the protoset JSON resource.
+func get_prototree() -> ProtoTree:
+ # TODO: Consider returning null when protoset is null
+ return _prototree
func _disconnect_protoset_signals() -> void:
- if !is_instance_valid(item_protoset):
- return
- item_protoset.changed.disconnect(_on_protoset_changed)
+ if !is_instance_valid(protoset):
+ return
+ protoset.changed.disconnect(_on_protoset_changed)
func _connect_protoset_signals() -> void:
- if !is_instance_valid(item_protoset):
- return
- item_protoset.changed.connect(_on_protoset_changed)
+ if !is_instance_valid(protoset):
+ return
+ protoset.changed.connect(_on_protoset_changed)
func _on_protoset_changed() -> void:
- protoset_changed.emit()
-
+ protoset_changed.emit()
-func _get_configuration_warnings() -> PackedStringArray:
- if item_protoset == null:
- return PackedStringArray([
- "This inventory node has no protoset. Set the 'item_protoset' field to be able to " \
- + "populate the inventory with items."])
- return PackedStringArray()
+
+func _get_property_list():
+ return [
+ {
+ "name": "_serialized_format",
+ "type": TYPE_DICTIONARY,
+ "usage": PROPERTY_USAGE_STORAGE
+ },
+ ]
-static func _get_item_script() -> Script:
- return preload("inventory_item.gd")
+func _update_serialized_format() -> void:
+ if Engine.is_editor_hint():
+ _serialized_format = serialize()
-func _enter_tree():
- for child in get_children():
- if not child is InventoryItem:
- continue
- if has_item(child):
- continue
- _items.append(child)
+func _get_configuration_warnings() -> PackedStringArray:
+ if protoset == null:
+ return PackedStringArray([
+ "This inventory node has no prototree. Set the 'protoset' field to be able to " \
+ + "populate the inventory with items."])
+ return PackedStringArray()
func _init() -> void:
- _constraint_manager = ConstraintManager.new(self)
+ _constraint_manager = _ConstraintManager.new(self)
+ _constraint_manager.constraint_changed.connect(_on_constraint_changed)
-func _ready() -> void:
- for item in get_items():
- _connect_item_signals(item)
+func _on_constraint_changed(constraint: InventoryConstraint) -> void:
+ _update_serialized_format()
+ constraint_changed.emit(constraint)
-func _on_item_added(item: InventoryItem) -> void:
- _items.append(item)
- contents_changed.emit()
- _connect_item_signals(item)
- if _constraint_manager:
- _constraint_manager._on_item_added(item)
- item_added.emit(item)
+func _ready() -> void:
+ renamed.connect(_update_serialized_format)
+ if !_serialized_format.is_empty():
+ deserialize(_serialized_format)
-func _on_item_removed(item: InventoryItem) -> void:
- _items.erase(item)
- contents_changed.emit()
- _disconnect_item_signals(item)
- if _constraint_manager:
- _constraint_manager._on_item_removed(item)
- item_removed.emit(item)
+ for item in get_items():
+ _connect_item_signals(item)
+## Moves the item at the given index in the inventory to a new index.
func move_item(from: int, to: int) -> void:
- assert(from >= 0)
- assert(from < _items.size())
- assert(to >= 0)
- assert(to < _items.size())
- if from == to:
- return
+ assert(from >= 0)
+ assert(from < _items.size())
+ assert(to >= 0)
+ assert(to < _items.size())
+ if from == to:
+ return
- var item = _items[from]
- _items.remove_at(from)
- _items.insert(to, item)
+ var item = _items[from]
+ _items.remove_at(from)
+ _items.insert(to, item)
+ _update_serialized_format()
- contents_changed.emit()
+ item_moved.emit()
+## Returns the index of the given item in the inventory.
func get_item_index(item: InventoryItem) -> int:
- return _items.find(item)
+ return _items.find(item)
+## Returns the number of items in the inventory.
func get_item_count() -> int:
- return _items.size()
+ return _items.size()
func _connect_item_signals(item: InventoryItem) -> void:
- if !item.protoset_changed.is_connected(_emit_item_modified):
- item.protoset_changed.connect(_emit_item_modified.bind(item))
- if !item.prototype_id_changed.is_connected(_emit_item_modified):
- item.prototype_id_changed.connect(_emit_item_modified.bind(item))
- if !item.properties_changed.is_connected(_emit_item_modified):
- item.properties_changed.connect(_emit_item_modified.bind(item))
- if !item.property_changed.is_connected(_on_item_property_changed):
- item.property_changed.connect(_on_item_property_changed.bind(item))
-
+ _Utils.safe_connect(item.property_changed, _on_item_property_changed.bind(item))
-func _disconnect_item_signals(item:InventoryItem) -> void:
- if item.protoset_changed.is_connected(_emit_item_modified):
- item.protoset_changed.disconnect(_emit_item_modified)
- if item.prototype_id_changed.is_connected(_emit_item_modified):
- item.prototype_id_changed.disconnect(_emit_item_modified)
- if item.properties_changed.is_connected(_emit_item_modified):
- item.properties_changed.disconnect(_emit_item_modified)
- if item.property_changed.is_connected(_on_item_property_changed):
- item.property_changed.disconnect(_on_item_property_changed.bind(item))
+func _disconnect_item_signals(item: InventoryItem) -> void:
+ _Utils.safe_disconnect(item.property_changed, _on_item_property_changed)
-func _emit_item_modified(item: InventoryItem) -> void:
- item_modified.emit(item)
-
-func _on_item_property_changed(property_name: String, item: InventoryItem) -> void:
- _constraint_manager._on_item_property_changed(item, property_name)
- item_property_changed.emit(item, property_name)
+func _on_item_property_changed(property: String, item: InventoryItem) -> void:
+ _update_serialized_format()
+ _constraint_manager._on_item_property_changed(item, property)
+ item_property_changed.emit(item, property)
+## Returns an array containing all the items in the inventory.
func get_items() -> Array[InventoryItem]:
- return _items
+ return _items
+## Checks if the inventory contains the given item.
func has_item(item: InventoryItem) -> bool:
- return item in _items
+ return item in _items
+## Adds the given item to the inventory.
func add_item(item: InventoryItem) -> bool:
- if !can_add_item(item):
- return false
-
- if item.get_parent():
- item.get_parent().remove_child(item)
-
- # HACK: In case of InventoryGridStacked we can end up adding the item and
- # removing it immediately, after a successful pack() call (in case the grid
- # constraint has no space for the item). This causes some errors because
- # Godot still tries to call the ENTER_TREE notification. To avoid that, we
- # call transfer_automerge(), which should be able to pack the item without
- # adding it first.
- var gc := _constraint_manager.get_grid_constraint()
- var sc := _constraint_manager.get_stacks_constraint()
- if gc != null && sc != null && !gc.has_space_for(item):
- assert(sc.transfer_automerge(item, self))
- else:
- add_child(item)
-
- if Engine.is_editor_hint() && !item.is_queued_for_deletion():
- item.owner = get_tree().edited_scene_root
- return true
+ if !can_add_item(item):
+ return false
+ if item.get_inventory() != null:
+ item.get_inventory().remove_item(item)
-func can_add_item(item: InventoryItem) -> bool:
- if item == null || has_item(item):
- return false
-
- if !can_hold_item(item):
- return false
-
- if !_constraint_manager.has_space_for(item):
- return false
+ _items.append(item)
+ _update_serialized_format()
+ item._inventory = self
+ _connect_item_signals(item)
+ _constraint_manager._on_item_added(item)
+ # Adding an item can result in the item being freed (e.g. when it's merged with another item stack)
+ if !is_instance_valid(item):
+ item = null
+ item_added.emit(item)
+ return true
- return true
+## Checks if the given item can be added to the inventory.
+func can_add_item(item: InventoryItem) -> bool:
+ if item == null || has_item(item):
+ return false
+
+ if !_constraint_manager.has_space_for(item):
+ return false
-func can_hold_item(item: InventoryItem) -> bool:
- return true
+ return true
+## Creates an `InventoryItem` based on the given prototype ID adds it to the inventory. Returns `null` if the item
+## cannot be added.
func create_and_add_item(prototype_id: String) -> InventoryItem:
- var item: InventoryItem = InventoryItem.new()
- item.protoset = item_protoset
- item.prototype_id = prototype_id
- if add_item(item):
- return item
- else:
- item.free()
- return null
+ var item: InventoryItem = InventoryItem.new(protoset, prototype_id)
+ if add_item(item):
+ return item
+ else:
+ return null
+## Removes the given item from the inventory. Returns `false` if the item is not inside the inventory.
func remove_item(item: InventoryItem) -> bool:
- if !_can_remove_item(item):
- return false
+ if !_can_remove_item(item):
+ return false
- remove_child(item)
- return true
+ _items.erase(item)
+ _update_serialized_format()
+ item._inventory = null
+ _disconnect_item_signals(item)
+ _constraint_manager._on_item_removed(item)
+ item_removed.emit(item)
+ return true
func _can_remove_item(item: InventoryItem) -> bool:
- return item != null && has_item(item)
+ return item != null && has_item(item)
-func remove_all_items() -> void:
- while get_child_count() > 0:
- remove_child(get_child(0))
- _items = []
+## Returns the first found item with the given prototype ID.
+func get_item_with_prototype_id(prototype_id: String) -> InventoryItem:
+ for item in get_items():
+ if !is_instance_valid(item.get_prototype()):
+ continue
+ if item.get_prototype().get_prototype_id() == prototype_id:
+ return item
+
+ return null
-func get_item_by_id(prototype_id: String) -> InventoryItem:
- for item in get_items():
- if item.prototype_id == prototype_id:
- return item
-
- return null
+## Returns an array of all the items with the given prototype ID.
+func get_items_with_prototype_id(prototype_id: String) -> Array[InventoryItem]:
+ var result: Array[InventoryItem] = []
+ for item in get_items():
+ if !is_instance_valid(item.get_prototype()):
+ continue
+ if item.get_prototype().get_prototype_id() == prototype_id:
+ result.append(item)
+
+ return result
-func get_items_by_id(prototype_id: String) -> Array[InventoryItem]:
- var result: Array[InventoryItem] = []
- for item in get_items():
- if item.prototype_id == prototype_id:
- result.append(item)
-
- return result
+## Checks if the inventory has an item with the given prototype ID.
+func has_item_with_prototype_id(prototype_id: String) -> bool:
+ return get_item_with_prototype_id(prototype_id) != null
-func has_item_by_id(prototype_id: String) -> bool:
- return get_item_by_id(prototype_id) != null
+func _on_constraint_added(constraint: InventoryConstraint) -> void:
+ _constraint_manager.register_constraint(constraint)
+ constraint_added.emit(constraint)
+
+func _on_constraint_removed(constraint: InventoryConstraint) -> void:
+ _constraint_manager.unregister_constraint(constraint)
+ constraint_removed.emit(constraint)
-func transfer(item: InventoryItem, destination: Inventory) -> bool:
- return destination.add_item(item)
+## Returns the inventory constraint of the given type (script). Returns `null` if the inventory has no constraints of
+## that type.
+func get_constraint(script: Script) -> InventoryConstraint:
+ return _constraint_manager.get_constraint(script)
+
+## Removes all items from the inventory and sets its protoset to `null`.
func reset() -> void:
- clear()
- item_protoset = null
- _constraint_manager.reset()
+ clear()
+ protoset = null
+## Removes all the items from the inventory.
func clear() -> void:
- for item in get_items():
- item.queue_free()
- remove_all_items()
+ while _items.size() > 0:
+ remove_item(_items[0])
+ _update_serialized_format()
+## Serializes the inventory into a `Dictionary`.
func serialize() -> Dictionary:
- var result: Dictionary = {}
+ var result: Dictionary = {}
+
+ if protoset == null || _constraint_manager == null:
+ return result
- result[KEY_NODE_NAME] = name as String
- result[KEY_ITEM_PROTOSET] = _serialize_item_protoset(item_protoset)
- result[KEY_CONSTRAINTS] = _constraint_manager.serialize()
- if !get_items().is_empty():
- result[KEY_ITEMS] = []
- for item in get_items():
- result[KEY_ITEMS].append(item.serialize())
+ result[_KEY_NODE_NAME] = name as String
+ result[_KEY_PROTOSET] = _serialize_protoset(protoset)
+ if !_constraint_manager.is_empty():
+ result[_KEY_CONSTRAINTS] = _constraint_manager.serialize()
+ if !get_items().is_empty():
+ result[_KEY_ITEMS] = []
+ for item in get_items():
+ result[_KEY_ITEMS].append(item.serialize())
- return result
+ return result
-static func _serialize_item_protoset(item_protoset: ItemProtoset) -> String:
- if !is_instance_valid(item_protoset):
- return ""
- elif item_protoset.resource_path.is_empty():
- return item_protoset.json_data
- else:
- return item_protoset.resource_path
+static func _serialize_protoset(protoset: JSON) -> String:
+ if !is_instance_valid(protoset):
+ return ""
+ elif protoset.resource_path.is_empty():
+ return protoset.stringify(protoset.data)
+ else:
+ return protoset.resource_path
+## Loads the inventory data from the given `Dictionary`.
func deserialize(source: Dictionary) -> bool:
- if !Verify.dict(source, true, KEY_NODE_NAME, TYPE_STRING) ||\
- !Verify.dict(source, true, KEY_ITEM_PROTOSET, TYPE_STRING) ||\
- !Verify.dict(source, false, KEY_ITEMS, TYPE_ARRAY, TYPE_DICTIONARY) ||\
- !Verify.dict(source, false, KEY_CONSTRAINTS, TYPE_DICTIONARY):
- return false
-
- clear()
- item_protoset = null
-
- if !source[KEY_NODE_NAME].is_empty() && source[KEY_NODE_NAME] != name:
- name = source[KEY_NODE_NAME]
- item_protoset = _deserialize_item_protoset(source[KEY_ITEM_PROTOSET])
- # TODO: Check return value:
- if source.has(KEY_CONSTRAINTS):
- _constraint_manager.deserialize(source[KEY_CONSTRAINTS])
- if source.has(KEY_ITEMS):
- var items = source[KEY_ITEMS]
- for item_dict in items:
- var item = _get_item_script().new()
- # TODO: Check return value:
- item.deserialize(item_dict)
- assert(add_item(item), "Failed to add item '%s'. Inventory full?" % item.prototype_id)
-
- return true
-
-
-static func _deserialize_item_protoset(data: String) -> ItemProtoset:
- if data.is_empty():
- return null
- elif data.begins_with("res://"):
- return load(data)
- else:
- var protoset := ItemProtoset.new()
- protoset.json_data = data
- return protoset
+ if !_Verify.dict(source, true, _KEY_NODE_NAME, TYPE_STRING) || \
+ !_Verify.dict(source, true, _KEY_PROTOSET, TYPE_STRING) || \
+ !_Verify.dict(source, false, _KEY_ITEMS, TYPE_ARRAY, TYPE_DICTIONARY) || \
+ !_Verify.dict(source, false, _KEY_CONSTRAINTS, TYPE_DICTIONARY):
+ return false
+
+ clear()
+ protoset = null
+
+ if !source[_KEY_NODE_NAME].is_empty() && source[_KEY_NODE_NAME] != name:
+ name = source[_KEY_NODE_NAME]
+ protoset = _Utils._deserialize_protoset(source[_KEY_PROTOSET])
+ # TODO: Check return value:
+ if source.has(_KEY_ITEMS):
+ var items = source[_KEY_ITEMS]
+ for item_dict in items:
+ var item = InventoryItem.new()
+ # TODO: Check return value:
+ item.deserialize(item_dict)
+ var success = add_item(item)
+ assert(success, "Failed to add item '%s'. Inventory full?" % item.get_title())
+ if source.has(_KEY_CONSTRAINTS):
+ if !_constraint_manager.deserialize(source[_KEY_CONSTRAINTS]):
+ return false
+
+ return true
+
+
+## Splits the given item stack into two within the inventory. `new_stack_size` defines the size of the new stack,
+## which is added to the inventory. Returns `null` if the split cannot be performed or if the new stack cannot be added
+## to the inventory.
+func split_stack(item: InventoryItem, new_stack_size: int) -> InventoryItem:
+ return _StackManager.inv_split_stack(self, item, _ItemCount.new(new_stack_size))
+
+
+## Merges the `item_src` item stack into the `item_dst` stack which is inside the inventory. If `item_dst` doesn't have
+## enough stack space and `split_source` is set to `true`, `item_src` will be split and only partially merged. Returns
+## `false` if the merge cannot be performed.
+func merge_stacks(item_dst: InventoryItem, item_src: InventoryItem, split_source: bool = false) -> bool:
+ return _StackManager.inv_merge_stack(self, item_dst, item_src, split_source)
+
+
+## Adds the given item to the inventory and merges it with all compatible items. Returns `false` if the item cannot be
+## added.
+func add_item_automerge(item: InventoryItem) -> bool:
+ return _StackManager.inv_add_automerge(self, item)
+
+
+## Adds the given item to the inventory, splitting it if there is not enough space for the whole stack.
+func add_item_autosplit(item: InventoryItem) -> bool:
+ return _StackManager.inv_add_autosplit(self, item)
+
+
+## A combination of `add_item_autosplit` and `add_item_automerge`. Adds the given item stack into the inventory, splitting it up
+## and joining it with available item stacks, as needed.
+func add_item_autosplitmerge(item: InventoryItem) -> bool:
+ return _StackManager.inv_add_autosplitmerge(self, item)
+
+## Merges the given item with all compatible items in the same inventory.
+func pack_item(item: InventoryItem) -> void:
+ return _StackManager.inv_pack_stack(self, item)
--- /dev/null
+uid://bxtv6f17pkdmm
+++ /dev/null
-@tool
-@icon("res://addons/gloot/images/icon_inventory_grid.svg")
-extends Inventory
-class_name InventoryGrid
-
-signal size_changed
-
-const DEFAULT_SIZE: Vector2i = Vector2i(10, 10)
-
-@export var size: Vector2i = DEFAULT_SIZE :
- get:
- if _constraint_manager == null:
- return DEFAULT_SIZE
- if _constraint_manager.get_grid_constraint() == null:
- return DEFAULT_SIZE
- return _constraint_manager.get_grid_constraint().size
- set(new_size):
- _constraint_manager.get_grid_constraint().size = new_size
-
-
-func _init() -> void:
- super._init()
- _constraint_manager.enable_grid_constraint()
- _constraint_manager.get_grid_constraint().size_changed.connect(func(): size_changed.emit())
-
-
-func get_item_position(item: InventoryItem) -> Vector2i:
- return _constraint_manager.get_grid_constraint().get_item_position(item)
-
-
-func get_item_size(item: InventoryItem) -> Vector2i:
- return _constraint_manager.get_grid_constraint().get_item_size(item)
-
-
-func get_item_rect(item: InventoryItem) -> Rect2i:
- return _constraint_manager.get_grid_constraint().get_item_rect(item)
-
-
-func set_item_rotation(item: InventoryItem, rotated: bool) -> bool:
- return _constraint_manager.get_grid_constraint().set_item_rotation(item, rotated)
-
-
-func rotate_item(item: InventoryItem) -> bool:
- return _constraint_manager.get_grid_constraint().rotate_item(item)
-
-
-func is_item_rotated(item: InventoryItem) -> bool:
- return _constraint_manager.get_grid_constraint().is_item_rotated(item)
-
-
-func can_rotate_item(item: InventoryItem) -> bool:
- return _constraint_manager.get_grid_constraint().can_rotate_item(item)
-
-
-func set_item_rotation_direction(item: InventoryItem, positive: bool) -> void:
- _constraint_manager.set_item_rotation_direction(item, positive)
-
-
-func is_item_rotation_positive(item: InventoryItem) -> bool:
- return _constraint_manager.get_grid_constraint().is_item_rotation_positive(item)
-
-
-func add_item_at(item: InventoryItem, position: Vector2i) -> bool:
- return _constraint_manager.get_grid_constraint().add_item_at(item, position)
-
-
-func create_and_add_item_at(prototype_id: String, position: Vector2i) -> InventoryItem:
- return _constraint_manager.get_grid_constraint().create_and_add_item_at(prototype_id, position)
-
-
-func get_item_at(position: Vector2i) -> InventoryItem:
- return _constraint_manager.get_grid_constraint().get_item_at(position)
-
-
-func get_items_under(rect: Rect2i) -> Array[InventoryItem]:
- return _constraint_manager.get_grid_constraint().get_items_under(rect)
-
-
-func move_item_to(item: InventoryItem, position: Vector2i) -> bool:
- return _constraint_manager.get_grid_constraint().move_item_to(item, position)
-
-
-func transfer_to(item: InventoryItem, destination: Inventory, position: Vector2i) -> bool:
- return _constraint_manager.get_grid_constraint().transfer_to(item, destination._constraint_manager.get_grid_constraint(), position)
-
-
-func rect_free(rect: Rect2i, exception: InventoryItem = null) -> bool:
- return _constraint_manager.get_grid_constraint().rect_free(rect, exception)
-
-
-func find_free_place(item: InventoryItem) -> Dictionary:
- return _constraint_manager.get_grid_constraint().find_free_place(item)
-
-
-func sort() -> bool:
- return _constraint_manager.get_grid_constraint().sort()
-
+++ /dev/null
-@tool
-@icon("res://addons/gloot/images/icon_inventory_grid_stacked.svg")
-extends InventoryGrid
-class_name InventoryGridStacked
-
-const StacksConstraint = preload("res://addons/gloot/core/constraints/stacks_constraint.gd")
-
-
-func _init() -> void:
- super._init()
- _constraint_manager.enable_stacks_constraint()
-
-
-func has_place_for(item: InventoryItem) -> bool:
- return _constraint_manager.has_space_for(item)
-
-
-func add_item_automerge(item: InventoryItem) -> bool:
- return _constraint_manager.get_stacks_constraint().add_item_automerge(item)
-
-
-func split(item: InventoryItem, new_stack_size: int) -> InventoryItem:
- return _constraint_manager.get_stacks_constraint().split_stack_safe(item, new_stack_size)
-
-
-func join(item_dst: InventoryItem, item_src: InventoryItem) -> bool:
- return _constraint_manager.get_stacks_constraint().join_stacks(item_dst, item_src)
-
-
-static func get_item_stack_size(item: InventoryItem) -> int:
- return StacksConstraint.get_item_stack_size(item)
-
-
-static func set_item_stack_size(item: InventoryItem, new_stack_size: int) -> bool:
- return StacksConstraint.set_item_stack_size(item, new_stack_size)
-
-
-static func get_item_max_stack_size(item: InventoryItem) -> int:
- return StacksConstraint.get_item_max_stack_size(item)
-
-
-static func set_item_max_stack_size(item: InventoryItem, new_stack_size: int) -> void:
- StacksConstraint.set_item_max_stack_size(item, new_stack_size)
-
-
-func get_prototype_stack_size(prototype_id: String) -> int:
- return _constraint_manager.get_stacks_constraint().get_prototype_stack_size(item_protoset, prototype_id)
-
-
-func get_prototype_max_stack_size(prototype_id: String) -> int:
- return _constraint_manager.get_stacks_constraint().get_prototype_max_stack_size(item_protoset, prototype_id)
-
-
-func transfer_automerge(item: InventoryItem, destination: Inventory) -> bool:
- return _constraint_manager.get_stacks_constraint().transfer_automerge(item, destination)
-
-
-func transfer_autosplitmerge(item: InventoryItem, destination: Inventory) -> bool:
- return _constraint_manager.get_stacks_constraint().transfer_autosplitmerge(item, destination)
-
-
-static func pack(item: InventoryItem) -> void:
- return StacksConstraint.pack_item(item)
-
-
-func transfer_to(item: InventoryItem, destination: Inventory, position: Vector2i) -> bool:
- return _constraint_manager.get_grid_constraint().transfer_to(item, destination._constraint_manager.get_grid_constraint(), position)
-
-
-func _get_mergable_item_at(item: InventoryItem, position: Vector2i) -> InventoryItem:
- return _constraint_manager.get_grid_constraint()._get_mergable_item_at(item, position)
-
@tool
@icon("res://addons/gloot/images/icon_item.svg")
-extends Node
+extends RefCounted
class_name InventoryItem
-
-signal protoset_changed
-signal prototype_id_changed
-signal properties_changed
-signal property_changed(property_name)
-signal added_to_inventory(inventory)
-signal removed_from_inventory(inventory)
-signal equipped_in_slot(item_slot)
-signal removed_from_slot(item_slot)
-
-const Utils = preload("res://addons/gloot/core/utils.gd")
-
-@export var protoset: ItemProtoset :
+## Stack-based inventory item class.
+##
+## It is based on an item prototype from an prototree. Can hold additional properties. The default stack size and
+## maximum stack size is 1, which can be changed by setting the `stack_size` and `maximum_stack_size` properties inside
+## the prototype or directly inside the item.
+
+const _StackManager = preload("res://addons/gloot/core/stack_manager.gd")
+const _Verify = preload("res://addons/gloot/core/verify.gd")
+const _Utils = preload("res://addons/gloot/core/utils.gd")
+const _ItemCount = preload("res://addons/gloot/core/item_count.gd")
+const _ProtoTreeCache = preload("res://addons/gloot/core/prototree/proto_tree_cache.gd")
+
+signal property_changed(property_name: String) ## Emitted when an item property has changed.
+
+## A JSON resource containing prototype information.
+var protoset: JSON:
set(new_protoset):
if new_protoset == protoset:
return
- if (_inventory != null) && (new_protoset != _inventory.item_protoset):
+ if (_inventory != null) && (new_protoset != _inventory.protoset):
return
_disconnect_protoset_signals()
protoset = new_protoset
+ _prototree = _ProtoTreeCache.get_cached(protoset)
+ _on_prototree_changed()
_connect_protoset_signals()
+
+var _prototree: ProtoTree = _ProtoTreeCache.get_empty()
+var _prototype: Prototype = null
+var _properties: Dictionary
- # Reset the prototype ID (pick the first prototype from the protoset)
- if protoset && protoset._prototypes && protoset._prototypes.keys().size() > 0:
- prototype_id = protoset._prototypes.keys()[0]
- else:
- prototype_id = ""
-
- protoset_changed.emit()
- update_configuration_warnings()
-
-@export var prototype_id: String :
- set(new_prototype_id):
- if new_prototype_id == prototype_id:
- return
- if protoset == null && !new_prototype_id.is_empty():
- return
- if (protoset != null) && (!protoset.has_prototype(new_prototype_id)):
- return
- prototype_id = new_prototype_id
- _reset_properties()
- update_configuration_warnings()
- prototype_id_changed.emit()
-
-@export var properties: Dictionary :
- set(new_properties):
- properties = new_properties
- properties_changed.emit()
- update_configuration_warnings()
-
-var _inventory: Inventory :
+var _inventory: Inventory:
set(new_inventory):
if new_inventory == _inventory:
return
_inventory = new_inventory
if _inventory:
- protoset = _inventory.item_protoset
-var _item_slot: ItemSlot
+ protoset = _inventory.protoset
-const KEY_PROTOSET: String = "protoset"
-const KEY_PROTOTYE_ID: String = "prototype_id"
-const KEY_PROPERTIES: String = "properties"
-const KEY_NODE_NAME: String = "node_name"
-const KEY_TYPE: String = "type"
-const KEY_VALUE: String = "value"
+const _KEY_PROTOSET: String = "protoset"
+const _KEY_PROTOTYPE_ID: String = "prototype_id"
+const _KEY_PROPERTIES: String = "properties"
+const _KEY_TYPE: String = "type"
+const _KEY_VALUE: String = "value"
-const KEY_IMAGE: String = "image"
-const KEY_NAME: String = "name"
+const _KEY_IMAGE: String = "image"
+const _KEY_NAME: String = "name"
-const Verify = preload("res://addons/gloot/core/verify.gd")
func _connect_protoset_signals() -> void:
- if protoset == null:
+ if !is_instance_valid(protoset):
return
+
protoset.changed.connect(_on_protoset_changed)
func _disconnect_protoset_signals() -> void:
- if protoset == null:
+ if !is_instance_valid(protoset):
return
- protoset.changed.disconnect(_on_protoset_changed)
-
-func _on_protoset_changed() -> void:
- update_configuration_warnings()
+ protoset.changed.disconnect(_on_protoset_changed)
-func _get_configuration_warnings() -> PackedStringArray:
- if !protoset:
- return PackedStringArray()
+func _init(protoset_: JSON = null, prototype_id: String = "") -> void:
+ protoset = protoset_
+ if _prototree.has_prototype(prototype_id):
+ _prototype = _prototree.get_prototype(prototype_id)
- if !protoset.has_prototype(prototype_id):
- return PackedStringArray(["Undefined prototype '%s'. Check the item protoset!" % prototype_id])
- return PackedStringArray()
+func _on_protoset_changed() -> void:
+ _prototree.deserialize(protoset)
+ _on_prototree_changed()
-func _reset_properties() -> void:
- if !protoset || prototype_id.is_empty():
- properties = {}
+func _on_prototree_changed() -> void:
+ if protoset == null:
+ _prototype = null
return
- # Reset (erase) all properties from the current prototype but preserve the rest
- var prototype: Dictionary = protoset.get_prototype(prototype_id)
- var keys: Array = properties.keys().duplicate()
- for property in keys:
- if prototype.has(property):
- properties.erase(property)
-
-
-func _notification(what):
- if what == NOTIFICATION_PARENTED:
- _on_parented(get_parent())
- elif what == NOTIFICATION_UNPARENTED:
- _on_unparented()
-
-
-func _on_parented(parent: Node) -> void:
- if parent is Inventory:
- _on_added_to_inventory(parent as Inventory)
- else:
- _inventory = null
-
- if parent is ItemSlot:
- _link_to_slot(parent as ItemSlot)
- else:
- _unlink_from_slot()
-
-
-func _on_added_to_inventory(inventory: Inventory) -> void:
- assert(inventory != null)
- _inventory = inventory
-
- added_to_inventory.emit(_inventory)
- _inventory._on_item_added(self)
-
-
-func _on_unparented() -> void:
- if _inventory:
- _on_removed_from_inventory(_inventory)
- _inventory = null
+ if _prototype == null:
+ # Pick the first one from the prototree
+ var prototypes := _prototree.get_prototypes()
+ if prototypes.size() > 0:
+ _prototype = prototypes[0]
+ else:
+ _prototype = null
+ return
- _unlink_from_slot()
+ _prototype = _prototree.get_prototype(_prototype.get_prototype_id())
-func _on_removed_from_inventory(inventory: Inventory) -> void:
- if inventory:
- removed_from_inventory.emit(inventory)
- inventory._on_item_removed(self)
+## Returns the inventory prototree parsed from the protoset JSON resource.
+func get_prototree() -> ProtoTree:
+ return _prototree
-func _link_to_slot(item_slot: ItemSlot) -> void:
- _item_slot = item_slot
- _item_slot._on_item_added(self)
- equipped_in_slot.emit(item_slot)
+## Returns the item prototype.
+func get_prototype() -> Prototype:
+ return _prototype
-func _unlink_from_slot() -> void:
- if _item_slot == null:
- return
- var temp_slot := _item_slot
- _item_slot = null
- temp_slot._on_item_removed()
- removed_from_slot.emit(temp_slot)
+## Returns a duplicate of the item.
+func duplicate() -> InventoryItem:
+ var result := InventoryItem.new(protoset, _prototype.get_prototype_id())
+ result._properties = _properties.duplicate()
+ return result
+## Returns the `Inventory` this item belongs to, or `null` if it is not inside an inventory.
func get_inventory() -> Inventory:
return _inventory
-func get_item_slot() -> ItemSlot:
- return _item_slot
-
-
+## Swaps the two given items. Returns `false` if the items cannot be swapped.
static func swap(item1: InventoryItem, item2: InventoryItem) -> bool:
if item1 == null || item2 == null || item1 == item2:
return false
- var owner1 = item1.get_inventory()
- if owner1 == null:
- owner1 = item1.get_item_slot()
- var owner2 = item2.get_inventory()
- if owner2 == null:
- owner2 = item2.get_item_slot()
- if owner1 == null || owner2 == null:
+ var inv1 = item1.get_inventory()
+ var inv2 = item2.get_inventory()
+ if inv1 == null || inv2 == null:
return false
- if owner1 is Inventory:
- if !owner1._constraint_manager._on_pre_item_swap(item1, item2):
- return false
- if owner2 is Inventory && owner1 != owner2:
- if !owner2._constraint_manager._on_pre_item_swap(item1, item2):
+ if !inv1._constraint_manager._on_pre_item_swap(item1, item2):
+ return false
+ if inv1 != inv2:
+ if !inv2._constraint_manager._on_pre_item_swap(item1, item2):
return false
- var idx1 = _remove_item_from_owner(item1, owner1)
- var idx2 = _remove_item_from_owner(item2, owner2)
- if !_add_item_to_owner(item1, owner2, idx2):
- _add_item_to_owner(item1, owner1, idx1)
- _add_item_to_owner(item2, owner2, idx2)
+ var idx1 = inv1.get_item_index(item1)
+ var idx2 = inv2.get_item_index(item2)
+ inv1.remove_item(item1)
+ inv2.remove_item(item2)
+
+ if !inv2.add_item(item1):
+ inv1.add_item(item1)
+ inv1.move_item(inv1.get_item_index(item1), idx1)
+ inv2.add_item(item2)
+ inv2.move_item(inv2.get_item_index(item2), idx2)
return false
- if !_add_item_to_owner(item2, owner1, idx1):
- _add_item_to_owner(item1, owner1, idx1)
- _add_item_to_owner(item2, owner2, idx2)
+ if !inv1.add_item(item2):
+ inv1.add_item(item1)
+ inv1.move_item(inv1.get_item_index(item1), idx1)
+ inv2.add_item(item2)
+ inv2.move_item(inv2.get_item_index(item2), idx2)
return false
+ inv2.move_item(inv2.get_item_index(item1), idx2)
+ inv1.move_item(inv1.get_item_index(item2), idx1)
- if owner1 is Inventory:
- owner1._constraint_manager._on_post_item_swap(item1, item2)
- if owner2 is Inventory && owner1 != owner2:
- owner2._constraint_manager._on_post_item_swap(item1, item2)
+ if inv1 is Inventory:
+ inv1._constraint_manager._on_post_item_swap(item1, item2)
+ if inv2 is Inventory && inv1 != inv2:
+ inv2._constraint_manager._on_post_item_swap(item1, item2)
return true;
-static func _remove_item_from_owner(item: InventoryItem, item_owner) -> int:
- if item_owner is Inventory:
- var inventory := (item_owner as Inventory)
- var item_idx = inventory.get_item_index(item)
- inventory.remove_item(item)
- return item_idx
-
- # TODO: Consider removing/deprecating ItemSlot.remember_source_inventory
- var item_slot := (item_owner as ItemSlot)
- var temp_remember_source_inventory = item_slot.remember_source_inventory
- item_slot.remember_source_inventory = false
- item_slot.clear()
- item_slot.remember_source_inventory = temp_remember_source_inventory
- return 0
-
-
-static func _add_item_to_owner(item: InventoryItem, item_owner, index: int) -> bool:
- if item_owner is Inventory:
- var inventory := (item_owner as Inventory)
- if inventory.add_item(item):
- inventory.move_item(inventory.get_item_index(item), index)
- return true
- return false
- return (item_owner as ItemSlot).equip(item)
+static func _add_item_to_inventory(item: InventoryItem, inventory: Inventory, index: int) -> bool:
+ if inventory.add_item(item):
+ inventory.move_item(inventory.get_item_index(item), index)
+ return true
+ return false
+
+
+## Checks if the item has the given property.
+func has_property(property_name: String) -> bool:
+ if _properties.has(property_name):
+ return true
+ if _prototype != null && _prototype.has_property(property_name):
+ return true
+ return false
+## Returns the given item property. If the item does not define the item property, `default_value` is returned.
func get_property(property_name: String, default_value = null) -> Variant:
- # Note: The protoset editor still doesn't support arrays and dictionaries,
- # but those can still be added via JSON definitions or via code.
- if properties.has(property_name):
- var value = properties[property_name]
+ if _properties.has(property_name):
+ var value = _properties[property_name]
if typeof(value) == TYPE_DICTIONARY || typeof(value) == TYPE_ARRAY:
return value.duplicate()
return value
- if protoset && protoset.prototype_has_property(prototype_id, property_name):
- var value = protoset.get_prototype_property(prototype_id, property_name, default_value)
+ if _prototype != null && _prototype.has_property(property_name):
+ var value = _prototype.get_property(property_name, default_value)
if typeof(value) == TYPE_DICTIONARY || typeof(value) == TYPE_ARRAY:
return value.duplicate()
return value
-
+
+ if _properties.has(property_name):
+ return _properties[property_name]
+ if _prototype != null && _prototree.get_prototypes().is_empty():
+ return _prototype.get_property(property_name, default_value)
return default_value
+## Sets the given item property to the given value.
func set_property(property_name: String, value) -> void:
- if properties.has(property_name) && properties[property_name] == value:
+ if get_property(property_name) == value:
return
- properties[property_name] = value
- property_changed.emit(property_name)
- properties_changed.emit()
+ if _prototype != null && _prototype.has_property(property_name):
+ if _prototype.get_property(property_name) == value && _properties.has(property_name):
+ _properties.erase(property_name)
+ property_changed.emit(property_name)
+ return
+
+ if value == null:
+ if _properties.has(property_name):
+ _properties.erase(property_name)
+ property_changed.emit(property_name)
+ else:
+ _properties[property_name] = value
+ property_changed.emit(property_name)
+
+## Clears (un-defines) the given item property.
func clear_property(property_name: String) -> void:
- if properties.has(property_name):
- properties.erase(property_name)
+ if _properties.has(property_name):
+ _properties.erase(property_name)
property_changed.emit(property_name)
- properties_changed.emit()
+## Returns an array of properties that the item overrides.
+func get_overridden_properties() -> Array:
+ return _properties.keys().duplicate()
+
+
+## Returns an array of item properties (includes prototype properties).
+func get_properties() -> Array:
+ if _prototype != null:
+ return _Utils.array_union(_properties.keys(), _prototype.get_properties().keys())
+ else:
+ return _properties.keys()
+
+
+## Checks if the item overrides the given property.
+func is_property_overridden(property_name) -> bool:
+ return _properties.has(property_name)
+
+
+## Resets item data. Clears its properties and sets its protoset to `null`.
func reset() -> void:
protoset = null
- prototype_id = ""
- properties = {}
+ _properties = {}
+## Serializes the item into a `Dictionary`.
func serialize() -> Dictionary:
var result: Dictionary = {}
- result[KEY_NODE_NAME] = name as String
- result[KEY_PROTOSET] = Inventory._serialize_item_protoset(protoset)
- result[KEY_PROTOTYE_ID] = prototype_id
- if !properties.is_empty():
- result[KEY_PROPERTIES] = {}
- for property_name in properties.keys():
- result[KEY_PROPERTIES][property_name] = _serialize_property(property_name)
+ result[_KEY_PROTOSET] = Inventory._serialize_protoset(protoset)
+ if _prototype != null:
+ result[_KEY_PROTOTYPE_ID] = str(_prototype.get_prototype_id())
+ else:
+ result[_KEY_PROTOTYPE_ID] = ""
+ if !_properties.is_empty():
+ result[_KEY_PROPERTIES] = {}
+ for property_name in _properties.keys():
+ result[_KEY_PROPERTIES][property_name] = _serialize_property(property_name)
return result
func _serialize_property(property_name: String) -> Dictionary:
# Store all properties as strings for JSON support.
var result: Dictionary = {}
- var property_value = properties[property_name]
+ var property_value = _properties[property_name]
var property_type = typeof(property_value)
result = {
- KEY_TYPE: property_type,
- KEY_VALUE: var_to_str(property_value)
+ _KEY_TYPE: property_type,
+ _KEY_VALUE: var_to_str(property_value)
}
return result;
+## Loads the item data from the given `Dictionary`.
func deserialize(source: Dictionary) -> bool:
- if !Verify.dict(source, true, KEY_NODE_NAME, TYPE_STRING) ||\
- !Verify.dict(source, true, KEY_PROTOSET, TYPE_STRING) ||\
- !Verify.dict(source, true, KEY_PROTOTYE_ID, TYPE_STRING) ||\
- !Verify.dict(source, false, KEY_PROPERTIES, TYPE_DICTIONARY):
+ if !_Verify.dict(source, true, _KEY_PROTOSET, TYPE_STRING) || \
+ !_Verify.dict(source, true, _KEY_PROTOTYPE_ID, TYPE_STRING) || \
+ !_Verify.dict(source, false, _KEY_PROPERTIES, TYPE_DICTIONARY):
return false
reset()
- if !source[KEY_NODE_NAME].is_empty() && source[KEY_NODE_NAME] != name:
- name = source[KEY_NODE_NAME]
- protoset = Inventory._deserialize_item_protoset(source[KEY_PROTOSET])
- prototype_id = source[KEY_PROTOTYE_ID]
- if source.has(KEY_PROPERTIES):
- for key in source[KEY_PROPERTIES].keys():
- properties[key] = _deserialize_property(source[KEY_PROPERTIES][key])
- if properties[key] == null:
- properties = {}
+ # TODO: Check return values
+ protoset = _Utils._deserialize_protoset(source[_KEY_PROTOSET])
+ _prototype = _prototree.get_prototype(source[_KEY_PROTOTYPE_ID])
+ if source.has(_KEY_PROPERTIES):
+ for key in source[_KEY_PROPERTIES].keys():
+ var value = _deserialize_property(source[_KEY_PROPERTIES][key])
+ set_property(key, value)
+ if value == null:
+ _properties = {}
return false
return true
func _deserialize_property(data: Dictionary):
# Properties are stored as strings for JSON support.
- var result = Utils.str_to_var(data[KEY_VALUE])
- var expected_type: int = data[KEY_TYPE]
+ var result = _Utils.str_to_var(data[_KEY_VALUE])
+ var expected_type: int = data[_KEY_TYPE]
var property_type: int = typeof(result)
if property_type != expected_type:
print("Property has unexpected type: %s. Expected: %s" %
- [Verify.type_names[property_type], Verify.type_names[expected_type]])
+ [_Verify.type_names[property_type], _Verify.type_names[expected_type]])
return null
return result
+## Helper function for retrieving the item texture. It checks the image item property and loads it as a texture, if
+## available.
func get_texture() -> Texture2D:
- var texture_path = get_property(KEY_IMAGE)
+ var texture_path = get_property(_KEY_IMAGE)
if texture_path && texture_path != "" && ResourceLoader.exists(texture_path):
var texture = load(texture_path)
if texture is Texture2D:
return null
+## Helper function for retrieving the item title. It checks the name item property and uses it as the title, if
+## available. Otherwise, prototype_id is returned as title.
func get_title() -> String:
- var title = get_property(KEY_NAME, prototype_id)
- if !(title is String):
- title = prototype_id
+ var title = get_property(_KEY_NAME, null)
+ if title is String:
+ return title
+ if is_instance_valid(_prototype):
+ return _prototype.get_prototype_id()
+ return ""
+
+
+## Returns the stack size.
+func get_stack_size() -> int:
+ return _StackManager.get_item_stack_size(self).count
+
+
+## Returns the maximum stack size.
+func get_max_stack_size() -> int:
+ return _StackManager.get_item_max_stack_size(self).count
+
+
+## Sets the stack size.
+func set_stack_size(stack_size: int) -> bool:
+ return _StackManager.set_item_stack_size(self, _ItemCount.new(stack_size))
+
+
+## Sets the maximum stack size.
+func set_max_stack_size(max_stack_size: int) -> void:
+ _StackManager.set_item_max_stack_size(self, _ItemCount.new(max_stack_size))
+
+
+## Merges the item stack into the `item_dst` stack. If `item_dst` doesn't have enough stack space and `split` is set to
+## `true`, the stack will be split and only partially merged. Returns `false` if the merge cannot be performed.
+func merge_into(item_dst: InventoryItem, split: bool = false) -> bool:
+ return _StackManager.merge_stacks(item_dst, self, split)
+
+
+## Checks if the item stack can be merged into `item_dst` with, or without splitting (`split` parameter).
+func can_merge_into(item_dst: InventoryItem, split: bool = false) -> bool:
+ return _StackManager.can_merge_stacks(item_dst, self, split)
+
+
+## Checks if the item stack is compatible for merging with `item_dst`.
+func compatible_with(item_dst: InventoryItem) -> bool:
+ return _StackManager.stacks_compatible(self, item_dst)
+
+
+## Returns the free stack space in the item stack (maximum_stack_size - stack_size).
+func get_free_stack_space() -> int:
+ return _StackManager.get_free_stack_space(self).count
+
+
+## Splits the item stack into two and returns a reference to the new stack. `new_stack_size` defines the size of the new
+## stack. Returns `null` if the split cannot be performed.
+func split(new_stack_size: int) -> InventoryItem:
+ return _StackManager.split_stack(self, _ItemCount.new(new_stack_size))
+
- return title
+## Checks if the item stack can be split using the given new stack size.
+func can_split(new_stack_size: int) -> bool:
+ return _StackManager.can_split_stack(self, _ItemCount.new(new_stack_size))
--- /dev/null
+uid://ck2rwh6t6ek8p
+++ /dev/null
-@tool
-@icon("res://addons/gloot/images/icon_inventory_stacked.svg")
-extends Inventory
-class_name InventoryStacked
-
-const StacksConstraint = preload("res://addons/gloot/core/constraints/stacks_constraint.gd")
-
-signal capacity_changed
-signal occupied_space_changed
-
-@export var capacity: float :
- get:
- if _constraint_manager == null:
- return 0.0
- if _constraint_manager.get_weight_constraint() == null:
- return 0.0
- return _constraint_manager.get_weight_constraint().capacity
- set(new_capacity):
- _constraint_manager.get_weight_constraint().capacity = new_capacity
-var occupied_space: float :
- get:
- if _constraint_manager == null:
- return 0.0
- if _constraint_manager.get_weight_constraint() == null:
- return 0.0
- return _constraint_manager.get_weight_constraint().occupied_space
- set(new_occupied_space):
- assert(false, "occupied_space is read-only!")
-
-
-func _init() -> void:
- super._init()
- _constraint_manager.enable_weight_constraint()
- _constraint_manager.enable_stacks_constraint()
- _constraint_manager.get_weight_constraint().capacity_changed.connect(func(): capacity_changed.emit())
- _constraint_manager.get_weight_constraint().occupied_space_changed.connect(func(): occupied_space_changed.emit())
-
-
-func has_unlimited_capacity() -> bool:
- return _constraint_manager.get_weight_constraint().has_unlimited_capacity()
-
-
-func get_free_space() -> float:
- return _constraint_manager.get_weight_constraint().get_free_space()
-
-
-func has_place_for(item: InventoryItem) -> bool:
- return _constraint_manager.has_space_for(item)
-
-
-func add_item_automerge(item: InventoryItem) -> bool:
- return _constraint_manager.get_stacks_constraint().add_item_automerge(item)
-
-
-func split(item: InventoryItem, new_stack_size: int) -> InventoryItem:
- return _constraint_manager.get_stacks_constraint().split_stack_safe(item, new_stack_size)
-
-
-static func join(item_dst: InventoryItem, item_src: InventoryItem) -> bool:
- return StacksConstraint.join_stacks(item_dst, item_src)
-
-
-static func get_item_stack_size(item: InventoryItem) -> int:
- return StacksConstraint.get_item_stack_size(item)
-
-
-static func set_item_stack_size(item: InventoryItem, new_stack_size: int) -> bool:
- return StacksConstraint.set_item_stack_size(item, new_stack_size)
-
-
-static func get_item_max_stack_size(item: InventoryItem) -> int:
- return StacksConstraint.get_item_max_stack_size(item)
-
-
-static func set_item_max_stack_size(item: InventoryItem, new_stack_size: int) -> void:
- StacksConstraint.set_item_max_stack_size(item, new_stack_size)
-
-
-func get_prototype_stack_size(prototype_id: String) -> int:
- return StacksConstraint.get_prototype_stack_size(item_protoset, prototype_id)
-
-
-func get_prototype_max_stack_size(prototype_id: String) -> int:
- return StacksConstraint.get_prototype_max_stack_size(item_protoset, prototype_id)
-
-
-func transfer_autosplit(item: InventoryItem, destination: InventoryStacked) -> bool:
- return _constraint_manager.get_stacks_constraint().transfer_autosplit(item, destination) != null
-
-
-func transfer_automerge(item: InventoryItem, destination: InventoryStacked) -> bool:
- return _constraint_manager.get_stacks_constraint().transfer_automerge(item, destination)
-
-
-func transfer_autosplitmerge(item: InventoryItem, destination: InventoryStacked) -> bool:
- return _constraint_manager.get_stacks_constraint().transfer_autosplitmerge(item, destination)
-
-
-static func pack(item: InventoryItem) -> void:
- return StacksConstraint.pack_item(item)
-class_name ItemCount
+const _ItemCount = preload("res://addons/gloot/core/item_count.gd")
const Inf: int = -1
-@export var count: int = 0 :
+## The item count as an integer (-1 equals infinity).
+@export var count: int = 0:
set(new_count):
if new_count < 0:
new_count = -1
count = count_
+## Checks if the count is infinite.
func is_inf() -> bool:
return count < 0
-func add(item_count_: ItemCount) -> ItemCount:
+## Adds the given _ItemCount to the current one and returns the result.
+func add(item_count_: _ItemCount) -> _ItemCount:
if item_count_.is_inf():
count = Inf
elif !self.is_inf():
return self
-func mul(item_count_: ItemCount) -> ItemCount:
+## Subtracts the given _ItemCount from the current one and returns the result.
+func sub(item_count_: _ItemCount) -> _ItemCount:
+ assert(!item_count_.gt(self), "Can't subtract a count greater than self!")
+ if item_count_.is_inf():
+ count = 0
+ elif !self.is_inf():
+ count -= item_count_.count
+
+ return self
+
+
+## Multiplies the given _ItemCount with the current one and returns the result.
+func mul(item_count_: _ItemCount) -> _ItemCount:
if (count == 0):
return self
if item_count_.is_inf():
return self
-func div(item_count_: ItemCount) -> ItemCount:
+## Divides the current _ItemCount with the given one and returns the result.
+func div(item_count_: _ItemCount) -> _ItemCount:
assert(item_count_.count > 0 || item_count_.is_inf(), "Can't devide by zero!")
if (count == 0):
return self
return self
-func eq(item_count_: ItemCount) -> bool:
+## Check if the item count is equal with the given item count.
+func eq(item_count_: _ItemCount) -> bool:
return item_count_.count == count
-func less(item_count_: ItemCount) -> bool:
+## Check if the item count is less than the given item count.
+func lt(item_count_: _ItemCount) -> bool:
if item_count_.is_inf():
if self.is_inf():
return false
- return true
+ return true
if self.is_inf():
return false
return count < item_count_.count
-func le(item_count_: ItemCount) -> bool:
- return self.less(item_count_) || self.eq(item_count_)
+## Check if the item count is less or equal than the given item count.
+func le(item_count_: _ItemCount) -> bool:
+ return self.lt(item_count_) || self.eq(item_count_)
-func gt(item_count_: ItemCount) -> bool:
+## Check if the item count is greater than the given item count.
+func gt(item_count_: _ItemCount) -> bool:
if item_count_.is_inf():
if self.is_inf():
return false
- return false
+ return false
if self.is_inf():
return true
return count > item_count_.count
-func ge(item_count_: ItemCount) -> bool:
+## Check if the item count is greater or equal than the given item count.
+func ge(item_count_: _ItemCount) -> bool:
return self.gt(item_count_) || self.eq(item_count_)
-static func min(item_count_l: ItemCount, item_count_r: ItemCount) -> ItemCount:
- if item_count_l.less(item_count_r):
+## Returns the smaller item count out of the two.
+static func min(item_count_l: _ItemCount, item_count_r: _ItemCount) -> _ItemCount:
+ if item_count_l.lt(item_count_r):
return item_count_l
return item_count_r
-static func inf() -> ItemCount:
- return ItemCount.new(Inf)
+## Returns an infinite item count.
+static func inf() -> _ItemCount:
+ return _ItemCount.new(Inf)
+
+
+## Returns an item count if 0.
+static func zero() -> _ItemCount:
+ return _ItemCount.new(0)
-static func zero() -> ItemCount:
- return ItemCount.new(0)
+## Returns an item count if 1.
+static func one() -> _ItemCount:
+ return _ItemCount.new(1)
+
+
+func _to_string() -> String:
+ if self.is_inf():
+ return "INF"
+ return str(count)
# TODO: Implement max()
--- /dev/null
+uid://b06sm2con2bxy
+++ /dev/null
-@tool
-@icon("res://addons/gloot/images/icon_item_protoset.svg")
-class_name ItemProtoset
-extends Resource
-
-const Utils = preload("res://addons/gloot/core/utils.gd")
-
-const KEY_ID: String = "id"
-
-@export_multiline var json_data: String :
- set(new_json_data):
- json_data = new_json_data
- if !json_data.is_empty():
- parse(json_data)
- _save()
-
-var _prototypes: Dictionary = {} :
- set(new_prototypes):
- _prototypes = new_prototypes
- _update_json_data()
- _save()
-
-
-func parse(json: String) -> void:
- _prototypes.clear()
-
- var test_json_conv: JSON = JSON.new()
- assert(test_json_conv.parse(json) == OK, "Failed to parse JSON!")
- var parse_result = test_json_conv.data
- assert(parse_result is Array, "JSON file must contain an array!")
-
- for prototype in parse_result:
- assert(prototype is Dictionary, "Item prototype must be a dictionary!")
- assert(prototype.has(KEY_ID), "Item prototype must have an '%s' property!" % KEY_ID)
- assert(prototype[KEY_ID] is String, "'%s' property must be a string!" % KEY_ID)
-
- var id = prototype[KEY_ID]
- assert(!_prototypes.has(id), "Item prototype ID '%s' already in use!" % id)
- _prototypes[id] = prototype
- _unstringify_prototype(_prototypes[id])
-
-
-func _to_json() -> String:
- var result: Array[Dictionary]
- for prototype_id in _prototypes.keys():
- result.append(get_prototype(prototype_id))
-
- for prototype in result:
- _stringify_prototype(prototype)
-
- var indent = "\t"
- if ProjectSettings.get_setting("gloot/JSON_serialization/indent_using_spaces", true):
- indent = ""
- for i in ProjectSettings.get_setting("gloot/JSON_serialization/indent_size", 4):
- indent += " "
-
- return JSON.stringify(
- result,
- indent,
- ProjectSettings.get_setting("gloot/JSON_serialization/sort_keys", true),
- ProjectSettings.get_setting("gloot/JSON_serialization/full_precision", false),
- )
-
-
-func _stringify_prototype(prototype: Dictionary) -> void:
- for key in prototype.keys():
- var type = typeof(prototype[key])
- if (type != TYPE_STRING) and (type != TYPE_FLOAT):
- prototype[key] = var_to_str(prototype[key])
-
-
-func _unstringify_prototype(prototype: Dictionary) -> void:
- for key in prototype.keys():
- var type = typeof(prototype[key])
- if type == TYPE_STRING:
- var variant = Utils.str_to_var(prototype[key])
- if variant != null:
- prototype[key] = variant
-
-
-func _update_json_data() -> void:
- json_data = _to_json()
-
-
-func _save() -> void:
- if !Engine.is_editor_hint():
- return
- emit_changed()
- if !resource_path.is_empty():
- ResourceSaver.save(self)
-
-
-func get_prototype(id: StringName) -> Variant:
- assert(has_prototype(id), "No prototype with ID: %s" % id)
- return _prototypes[id]
-
-
-func add_prototype(id: String) -> void:
- assert(!has_prototype(id), "Prototype with ID already exists")
- _prototypes[id] = {KEY_ID: id}
- _update_json_data()
- _save()
-
-
-func remove_prototype(id: String) -> void:
- assert(has_prototype(id), "No prototype with ID: %s" % id)
- _prototypes.erase(id)
- _update_json_data()
- _save()
-
-
-func duplicate_prototype(id: String) -> void:
- assert(has_prototype(id), "No prototype with ID: %s" % id)
- var new_id = "%s_duplicate" % id
- var new_dict = _prototypes[id].duplicate()
- new_dict[KEY_ID] = new_id
- _prototypes[new_id] = new_dict
- _update_json_data()
- _save()
-
-
-func rename_prototype(id: String, new_id: String) -> void:
- assert(has_prototype(id), "No prototype with ID: %s" % id)
- assert(!has_prototype(new_id), "Prototype with ID already exists")
- add_prototype(new_id)
- _prototypes[new_id] = _prototypes[id].duplicate()
- _prototypes[new_id][KEY_ID] = new_id
- remove_prototype(id)
- _update_json_data()
- _save()
-
-
-func set_prototype_properties(id: String, new_properties: Dictionary) -> void:
- _prototypes[id] = new_properties
- _update_json_data()
- _save()
-
-
-func has_prototype(id: String) -> bool:
- return _prototypes.has(id)
-
-
-func set_prototype_property(id: String, property_name: String, value) -> void:
- assert(has_prototype(id), "No prototype with ID: %s" % id)
- var prototype = get_prototype(id)
- prototype[property_name] = value
-
-
-func get_prototype_property(id: String, property_name: String, default_value = null) -> Variant:
- if has_prototype(id):
- var prototype = get_prototype(id)
- if !prototype.is_empty() && prototype.has(property_name):
- return prototype[property_name]
-
- return default_value
-
-
-func prototype_has_property(id: String, property_name: String) -> bool:
- if has_prototype(id):
- return get_prototype(id).has(property_name)
-
- return false
+++ /dev/null
-@tool
-@icon("res://addons/gloot/images/icon_item_ref_slot.svg")
-class_name ItemRefSlot
-extends "res://addons/gloot/core/item_slot_base.gd"
-
-signal inventory_changed
-
-const Verify = preload("res://addons/gloot/core/verify.gd")
-const KEY_ITEM_INDEX: String = "item_index"
-const EMPTY_SLOT = -1
-
-@export var inventory_path: NodePath :
- set(new_inv_path):
- if inventory_path == new_inv_path:
- return
- inventory_path = new_inv_path
- update_configuration_warnings()
- _set_inventory_from_path(inventory_path)
-
-var _wr_item: WeakRef = weakref(null)
-var _wr_inventory: WeakRef = weakref(null)
-@export var _equipped_item: int = EMPTY_SLOT : set = _set_equipped_item_index
-var inventory: Inventory = null :
- get = _get_inventory, set = _set_inventory
-
-
-func _get_configuration_warnings() -> PackedStringArray:
- if inventory_path.is_empty():
- return PackedStringArray([
- "Inventory path not set! Inventory path needs to point to an inventory node, so " +\
- "items from that inventory can be equipped in the slot."])
- return PackedStringArray()
-
-
-func _set_equipped_item_index(new_value: int) -> void:
- _equipped_item = new_value
- equip_by_index(new_value)
-
-
-func _ready() -> void:
- _set_inventory_from_path(inventory_path)
- equip_by_index(_equipped_item)
-
-
-func _set_inventory_from_path(path: NodePath) -> bool:
- if path.is_empty():
- return false
-
- var node: Node = null
-
- if is_inside_tree():
- node = get_node_or_null(inventory_path)
-
- if node == null || !(node is Inventory):
- return false
-
- clear()
- _set_inventory(node)
- return true
-
-
-func _set_inventory(inventory: Inventory) -> void:
- if inventory == _wr_inventory.get_ref():
- return
-
- if _get_inventory() != null:
- _disconnect_inventory_signals()
-
- clear()
- _wr_inventory = weakref(inventory)
- inventory_changed.emit()
-
- if _get_inventory() != null:
- _connect_inventory_signals()
-
-
-func _connect_inventory_signals() -> void:
- if _get_inventory() == null:
- return
-
- if !_get_inventory().item_removed.is_connected(_on_item_removed):
- _get_inventory().item_removed.connect(_on_item_removed)
-
-
-func _disconnect_inventory_signals() -> void:
- if _get_inventory() == null:
- return
-
- if _get_inventory().item_removed.is_connected(_on_item_removed):
- _get_inventory().item_removed.disconnect(_on_item_removed)
-
-
-func _on_item_removed(item: InventoryItem) -> void:
- clear()
-
-
-func _get_inventory() -> Inventory:
- return _wr_inventory.get_ref()
-
-
-func equip(item: InventoryItem) -> bool:
- if !can_hold_item(item):
- return false
-
- if _wr_item.get_ref() == item:
- return false
-
- if get_item() != null && !clear():
- return false
-
- _wr_item = weakref(item)
- _equipped_item = _get_inventory().get_item_index(item)
- item_equipped.emit()
- return true
-
-
-func equip_by_index(index: int) -> bool:
- if _get_inventory() == null:
- return false
- if index < 0:
- return false
- if index >= _get_inventory().get_item_count():
- return false
- return equip(_get_inventory().get_items()[index])
-
-
-func clear() -> bool:
- if get_item() == null:
- return false
-
- _wr_item = weakref(null)
- _equipped_item = EMPTY_SLOT
- cleared.emit()
- return true
-
-
-func get_item() -> InventoryItem:
- return _wr_item.get_ref()
-
-
-func can_hold_item(item: InventoryItem) -> bool:
- if item == null:
- return false
-
- if _get_inventory() == null || !_get_inventory().has_item(item):
- return false
-
- return true
-
-
-func reset() -> void:
- clear()
-
-
-func serialize() -> Dictionary:
- var result: Dictionary = {}
- var item : InventoryItem = _wr_item.get_ref()
-
- if item != null && item.get_inventory() != null:
- result[KEY_ITEM_INDEX] = item.get_inventory().get_item_index(item)
-
- return result
-
-
-func deserialize(source: Dictionary) -> bool:
- if !Verify.dict(source, false, KEY_ITEM_INDEX, [TYPE_INT, TYPE_FLOAT]):
- return false
-
- reset()
-
- if source.has(KEY_ITEM_INDEX):
- var item_index: int = source[KEY_ITEM_INDEX]
- if !_equip_item_with_index(item_index):
- return false
-
- return true
-
-
-func _equip_item_with_index(item_index: int) -> bool:
- if _get_inventory() == null:
- return false
- if item_index >= _get_inventory().get_item_count():
- return false
- equip(_get_inventory().get_items()[item_index])
- return true
-
@tool
@icon("res://addons/gloot/images/icon_item_slot.svg")
class_name ItemSlot
-extends "res://addons/gloot/core/item_slot_base.gd"
-
-signal protoset_changed
-
-const Verify = preload("res://addons/gloot/core/verify.gd")
-const KEY_ITEM: String = "item"
-
-@export var item_protoset: ItemProtoset:
- set(new_item_protoset):
- if new_item_protoset == item_protoset:
+extends Node
+## An item slot that can hold an inventory item.
+##
+## An item slot that can hold an inventory item.
+
+signal protoset_changed ## Emitted when the protoset property has been changed.
+signal item_equipped ## Emitted when an item is placed in the slot.
+signal cleared ## Emitted when the slot is cleared.Emitted when the slot is cleared.
+
+const _Verify = preload("res://addons/gloot/core/verify.gd")
+const _KEY_ITEM: String = "item"
+
+## A JSON resource containing prototype information.
+@export var protoset: JSON:
+ set(new_protoset):
+ if new_protoset == protoset:
return
- if _item:
- _item = null
- item_protoset = new_item_protoset
+ protoset = new_protoset
+ if is_instance_valid(_inventory):
+ _inventory.protoset = protoset
protoset_changed.emit()
update_configuration_warnings()
-@export var remember_source_inventory: bool = true
+var _inventory: Inventory = null:
+ set(new_inventory):
+ if new_inventory == _inventory:
+ return
+ _disconnect_inventory_signals()
+ _inventory = new_inventory
+ _connect_inventory_signals()
+
+
+func _connect_inventory_signals() -> void:
+ if !is_instance_valid(_inventory):
+ return
+ _inventory.item_added.connect(_on_item_added)
+ _inventory.item_removed.connect(_on_item_removed)
-var _wr_source_inventory: WeakRef = weakref(null)
-var _item: InventoryItem
+
+func _disconnect_inventory_signals() -> void:
+ if !is_instance_valid(_inventory):
+ return
+ _inventory.item_added.disconnect(_on_item_added)
+ _inventory.item_removed.disconnect(_on_item_removed)
+
+
+func _init() -> void:
+ _inventory = Inventory.new()
+ _inventory.protoset = protoset
+ var item_count_constraint := ItemCountConstraint.new()
+ _inventory.add_child(item_count_constraint)
+ add_child(_inventory)
+
+
+func _on_item_added(item: InventoryItem) -> void:
+ item_equipped.emit()
+
+
+func _on_item_removed(item: InventoryItem) -> void:
+ cleared.emit()
func _get_configuration_warnings() -> PackedStringArray:
- if item_protoset == null:
+ if protoset == null:
return PackedStringArray([
- "This item slot has no protoset. Set the 'item_protoset' field to be able to equip items."])
+ "This item slot has no protoset. Set the 'protoset' field to be able to equip items."])
return PackedStringArray()
+## Equips the given inventory item in the slot. If the slot already contains an item, clear() will be called first.
+## Returns false if the clear call fails, the slot can't hold the given item, or already holds the given item. Returns
+## true otherwise.
func equip(item: InventoryItem) -> bool:
if !can_hold_item(item):
return false
- if item.get_parent() == self:
- return false
-
if get_item() != null && !clear():
return false
- _wr_source_inventory = weakref(item.get_inventory())
+ if item.get_inventory() != null:
+ item.get_inventory().remove_item(item)
- if item.get_parent():
- item.get_parent().remove_child(item)
-
- add_child(item)
- if Engine.is_editor_hint():
- item.owner = get_tree().edited_scene_root
+ _inventory.add_item(item)
return true
-func _on_item_added(item: InventoryItem) -> void:
- _item = item
- item_equipped.emit()
-
-
+## Clears the item slot. Returns false if there's no item in the slot.
func clear() -> bool:
- return _clear_impl(remember_source_inventory)
-
-
-func _clear_impl(return_item: bool) -> bool:
if get_item() == null:
return false
- if return_item && _return_item_to_source_inventory():
- return true
-
- remove_child(get_item())
+ _inventory.clear()
return true
-func _return_item_to_source_inventory() -> bool:
- var inventory: Inventory = (_wr_source_inventory.get_ref() as Inventory)
- if inventory != null:
- if inventory.add_item(get_item()):
- return true
- return false
-
-
-func _on_item_removed() -> void:
- _item = null
- _wr_source_inventory = weakref(null)
- cleared.emit()
-
-
+## Returns the equipped item or `null` if there's no item in the slot.
func get_item() -> InventoryItem:
- return _item
+ if _inventory.get_item_count() == 0:
+ return null
+ return _inventory.get_items()[0]
+## Checks if the slot can hold the given item, i.e. the slot uses the same protoset as the item and the item is not
+## `null`.
func can_hold_item(item: InventoryItem) -> bool:
- assert(item_protoset != null, "Item protoset not set!")
+ assert(protoset != null, "Item protoset not set!")
if item == null:
return false
- if item_protoset != item.protoset:
+ if protoset != item.protoset:
return false
return true
-func reset() -> void:
- if _item:
- _item.queue_free()
- _clear_impl(false)
-
-
+## Serializes the item slot into a `Dictionary`.
func serialize() -> Dictionary:
var result: Dictionary = {}
- if _item != null:
- result[KEY_ITEM] = _item.serialize()
+ if get_item() != null:
+ result[_KEY_ITEM] = get_item().serialize()
return result
+## Loads the item slot data from the given `Dictionary`.
func deserialize(source: Dictionary) -> bool:
- if !Verify.dict(source, false, KEY_ITEM, [TYPE_DICTIONARY]):
+ if !_Verify.dict(source, false, _KEY_ITEM, [TYPE_DICTIONARY]):
return false
- reset()
+ clear()
- if source.has(KEY_ITEM):
+ if source.has(_KEY_ITEM):
var item := InventoryItem.new()
- if !item.deserialize(source[KEY_ITEM]):
+ if !item.deserialize(source[_KEY_ITEM]):
return false
equip(item)
return true
-
--- /dev/null
+uid://dhlhquhwb0h0d
+++ /dev/null
-@tool
-@icon("res://addons/gloot/images/icon_item_slot.svg")
-class_name ItemSlotBase
-extends Node
-
-signal item_equipped
-signal cleared
-
-
-# Override this
-func equip(item: InventoryItem) -> bool:
- return false
-
-
-# Override this
-func clear() -> bool:
- return false
-
-
-# Override this
-func get_item() -> InventoryItem:
- return null
-
-
-# Override this
-func can_hold_item(item: InventoryItem) -> bool:
- return false
-
-
-# Override this
-func reset() -> void:
- pass
-
-
-# Override this
-func serialize() -> Dictionary:
- return {}
-
-
-# Override this
-func deserialize(source: Dictionary) -> bool:
- return false
\ No newline at end of file
--- /dev/null
+class_name ProtoTree
+extends RefCounted
+## A prototype tree (prototree).
+##
+## A tree structure of prototypes with a root prototype that can have a number of child prototypes.
+
+const _Utils = preload("res://addons/gloot/core/utils.gd")
+
+var _root := Prototype.new("ROOT")
+
+
+## Returns the root prototype.
+func get_root() -> Prototype:
+ return _root
+
+
+## Creates a child prototype for the root prototype.
+func create_prototype(prototype_id: String) -> Prototype:
+ return _root.inherit(prototype_id)
+
+
+## Returns the prototype with the given ID.
+func get_prototype(prototype_id: String) -> Prototype:
+ return _root.get_derived_prototype(prototype_id)
+
+
+## Returns an array of all child prototypes of the root.
+func get_prototypes() -> Array:
+ return _root.get_derived_prototypes()
+
+
+## Checks if the prototree contains the prototype with the given ID.
+func has_prototype(prototype_id: String) -> bool:
+ return _root.is_inherited_by(prototype_id)
+
+
+## Checks if the prototype with the given ID has the given property defined.
+func prototype_has_property(prototype_id: String, property: String) -> bool:
+ if !has_prototype(prototype_id):
+ return false
+ return _root.get_derived_prototype(prototype_id).has_property(property)
+
+
+## Returns the given property of the prototype with the given ID. If the prototype does not have the property defined,
+## `default_value` is returned.
+func get_prototype_property(prototype_id: String, property: String, default_value: Variant = null) -> Variant:
+ if has_prototype(prototype_id):
+ var prototype = get_prototype(prototype_id)
+ if prototype.has_property(property):
+ return prototype.get_property(property)
+
+ return default_value
+
+
+## Clears the prototree by clearing the roots properties and child prototypes.
+func clear() -> void:
+ _root._clear()
+
+
+## Checks if the prototree is empty (the root has no properties and no child prototypes).
+func is_empty() -> bool:
+ return _root.get_properties().is_empty() && _root.get_derived_prototypes().is_empty()
+
+
+## Parses the given JSON resource into a prototree. Returns `false` if parsing fails.
+func deserialize(json: JSON) -> bool:
+ clear()
+ if !is_instance_valid(json):
+ return false
+ if json.data == null:
+ return false
+ if json.data.is_empty():
+ return true
+ for prototype_id in json.data.keys():
+ var base: Prototype = null
+ var prototype_dict = json.data[prototype_id]
+ if prototype_dict.has("inherits"):
+ base = _root.get_derived_prototype(prototype_dict["inherits"])
+ else:
+ base = _root
+
+ if base == null:
+ clear()
+ return false
+ var new_protototype = base.inherit(prototype_id)
+ assert(new_protototype)
+ for property in prototype_dict.keys():
+ if typeof(prototype_dict[property]) == TYPE_STRING:
+ var value = _Utils.str_to_var(prototype_dict[property])
+ if value == null:
+ new_protototype.set_property(property, prototype_dict[property])
+ else:
+ new_protototype.set_property(property, value)
+ else:
+ new_protototype.set_property(property, prototype_dict[property])
+ return true
--- /dev/null
+uid://sw487eanji4w
--- /dev/null
+@tool
+
+static var _cache: Dictionary = {}
+static var _empty: ProtoTree = ProtoTree.new()
+
+
+static func get_cached(key: JSON) -> ProtoTree:
+ if Engine.is_editor_hint():
+ var result := ProtoTree.new()
+ result.deserialize(key)
+ return result
+
+ if _cache.has(key):
+ return _cache[key]
+ else:
+ _cache[key] = ProtoTree.new()
+ _cache[key].deserialize(key)
+ return _cache[key]
+
+
+static func get_empty() -> ProtoTree:
+ return _empty
--- /dev/null
+uid://bqgnjnqjte3f
--- /dev/null
+class_name Prototype
+extends RefCounted
+## An item prototype.
+##
+## An item prototype contains a set of properties and is identified with an ID string. It can also contain other "child"
+## prototypes as part of a prototype tree (prototree).
+
+const _KEY_PROPERTIES = "properties"
+const _KEY_PROTOTYPES = "prototypes"
+
+var _id: String
+var _properties: Dictionary
+var _parent: Prototype
+var _prototypes: Dictionary
+
+
+func _init(id: String) -> void:
+ _id = id
+
+
+## Returns the prototype ID string.
+func get_id() -> String:
+ return _id
+
+
+## Checks if the prototype inherits the prototype with the given ID.
+func inherits(prototype_id: String) -> bool:
+ var x = self
+ while x:
+ if x._id == prototype_id:
+ return true
+ x = x._parent
+ return false
+
+
+func _defines_or_overrides_property(property: String) -> bool:
+ return _properties.has(property)
+
+
+## Checks if the prototype inherits the given property.
+func inherits_property(property: String) -> bool:
+ if is_instance_valid(_parent):
+ return _parent.has_property(property)
+ return false
+
+
+## Checks if the prototype defines the given property.
+func defines_property(property: String) -> bool:
+ return _defines_or_overrides_property(property) && !inherits_property(property)
+
+
+## Checks if the prototype overrides the given property.
+func overrides_property(property: String) -> bool:
+ return _defines_or_overrides_property(property) && inherits_property(property)
+
+
+## Checks if the prototype has the given property (either by defining, inheriting or overriding it).
+func has_property(property: String) -> bool:
+ if _defines_or_overrides_property(property):
+ return true
+ if is_instance_valid(_parent):
+ return _parent.has_property(property)
+ return false
+
+
+## Returns the value of the given property. If the prototype does not have the property, `default_value` is returned.
+func get_property(property: String, default_value: Variant = null) -> Variant:
+ if _properties.has(property):
+ return _properties[property]
+ if is_instance_valid(_parent):
+ return _parent.get_property(property)
+ return default_value
+
+
+## Returns a `Dictionary` of all prototype properties (defined, inherited or overridden).
+func get_properties() -> Dictionary:
+ var result := _properties.duplicate()
+ if !is_instance_valid(_parent):
+ return result
+
+ result.merge(_parent.get_properties())
+ return result
+
+
+## Sets the given property for the prototype.
+func set_property(property: String, value: Variant):
+ if get_property(property) == value:
+ return
+ _properties[property] = value
+
+
+## Checks if the prototype contains the prototype with the given ID within the prototype tree.
+func is_inherited_by(prototype_id: String) -> bool:
+ return _find_derived_prototype(prototype_id) != null
+
+
+## Creates a child prototype with the given ID that inherits the prototype.
+func inherit(prototype_id: String) -> Prototype:
+ # TODO: Consider using a prototype as input
+ assert(!is_inherited_by(prototype_id), "'%s' already inherits '%s'" % [prototype_id, _id])
+ var new_prototype := Prototype.new(prototype_id)
+ new_prototype._parent = self
+ _prototypes[prototype_id] = new_prototype
+ return new_prototype
+
+
+## Returns the derived prototype with the given ID.
+func get_derived_prototype(prototype_id: String) -> Prototype:
+ assert(!prototype_id.is_empty(), "Invalid prototype ID (empty string)!")
+ var result := _find_derived_prototype(prototype_id)
+ assert(result != null, "Derived prototype not found: '%s'" % prototype_id)
+ return result
+
+
+func _find_derived_prototype(prototype_id: String) -> Prototype:
+ if _prototypes.has(prototype_id):
+ return _prototypes[prototype_id]
+ for p in _prototypes:
+ var prototype: Prototype = _prototypes[p]._find_derived_prototype(prototype_id)
+ if is_instance_valid(prototype):
+ return prototype
+ return null
+
+
+## Returns the ID of the prototype.
+func get_prototype_id() -> String:
+ return _id
+
+
+func _is_root() -> bool:
+ return !is_instance_valid(_parent)
+
+
+## Returns an array of all derived prototypes.
+func get_derived_prototypes() -> Array:
+ return _prototypes.values().duplicate()
+
+
+## Removes the derived prototype with the given ID.
+func remove_derived_prototype(prototype_id: String) -> void:
+ var prototype = get_derived_prototype(prototype_id)
+ var parent = prototype._parent
+ assert(parent != null, "Derived prototype has no parent!")
+ parent._prototypes.erase(prototype.get_id())
+
+
+func _get_root() -> Prototype:
+ var root = self
+ while is_instance_valid(root._parent):
+ root = root._parent
+ return root
+
+
+func _clear() -> void:
+ _properties.clear()
+ _prototypes.clear()
--- /dev/null
+uid://dihy7hdpnvxgi
--- /dev/null
+const _ItemCount = preload("res://addons/gloot/core/item_count.gd")
+
+const _KEY_STACK_SIZE: String = "stack_size"
+const _KEY_MAX_STACK_SIZE: String = "max_stack_size"
+
+const DEFAULT_STACK_SIZE: int = 1
+const DEFAULT_MAX_STACK_SIZE: int = 1
+
+
+static func get_item_stack_size(item: InventoryItem) -> _ItemCount:
+ assert(item != null, "item is null!")
+ var stack_size: int = item.get_property(_KEY_STACK_SIZE, DEFAULT_STACK_SIZE)
+ return _ItemCount.new(stack_size)
+
+
+static func get_item_max_stack_size(item: InventoryItem) -> _ItemCount:
+ assert(item != null, "item is null!")
+ var max_stack_size: int = item.get_property(_KEY_MAX_STACK_SIZE, DEFAULT_MAX_STACK_SIZE)
+ return _ItemCount.new(max_stack_size)
+
+
+static func set_item_stack_size(item: InventoryItem, stack_size: _ItemCount) -> bool:
+ assert(item != null, "item is null!")
+ assert(stack_size != null, "stack_size is null!")
+ if stack_size.gt(get_item_max_stack_size(item)):
+ return false
+ if stack_size.eq(_ItemCount.new(0)):
+ var inventory: Inventory = item.get_inventory()
+ if inventory != null:
+ inventory.remove_item(item)
+ item.set_property(_KEY_STACK_SIZE, stack_size.count)
+ return true
+
+
+static func set_item_max_stack_size(item: InventoryItem, max_stack_size: _ItemCount) -> void:
+ assert(item != null, "item is null!")
+ assert(max_stack_size != null, "max_stack_size is null!")
+ item.set_property(_KEY_MAX_STACK_SIZE, max_stack_size.count)
+
+
+static func get_prototype_stack_size(prototree: ProtoTree, prototype_id: String) -> _ItemCount:
+ assert(prototree != null, "prototree is null!")
+ var stack_size: int = prototree.get_prototype_property(prototype_id, _KEY_STACK_SIZE, DEFAULT_STACK_SIZE)
+ return _ItemCount.new(stack_size)
+
+
+static func get_prototype_max_stack_size(prototree: ProtoTree, prototype_id: String) -> _ItemCount:
+ assert(prototree != null, "prototree is null!")
+ var max_stack_size: int = prototree.get_prototype_property(prototype_id, _KEY_MAX_STACK_SIZE, DEFAULT_MAX_STACK_SIZE)
+ return _ItemCount.new(max_stack_size)
+
+
+static func stacks_compatible(item_1: InventoryItem, item_2: InventoryItem) -> bool:
+ # Two item stacks are compatible for merging if they have the same prototype and neither of the two contain
+ # overridden properties that the other one doesn't have (except for "stack_size", "max_stack_size").
+ assert(item_1 != null, "item_1 is null!")
+ assert(item_2 != null, "item_2 is null!")
+
+ var ignore_properies: Array[String] = [
+ _KEY_STACK_SIZE,
+ _KEY_MAX_STACK_SIZE
+ ]
+
+ if !item_1.get_prototype().get_prototype_id() == item_2.get_prototype().get_prototype_id():
+ return false
+
+ for property in item_1.get_overridden_properties():
+ if property in ignore_properies:
+ continue
+ if !item_2.is_property_overridden(property) || item_2.get_property(property) != item_1.get_property(property):
+ return false
+
+ for property in item_2.get_overridden_properties():
+ if property in ignore_properies:
+ continue
+ if !item_1.is_property_overridden(property) || item_1.get_property(property) != item_2.get_property(property):
+ return false
+
+ return true
+
+
+static func merge_stacks(item_dst: InventoryItem, item_src: InventoryItem, split_source: bool = false) -> bool:
+ if split_source:
+ return _merge_stacks_split_source(item_dst, item_src)
+ return _merge_stacks(item_dst, item_src)
+
+
+static func can_merge_stacks(item_dst: InventoryItem, item_src: InventoryItem, split_source: bool = false) -> bool:
+ if split_source:
+ return _can_merge_stacks_split_source(item_dst, item_src)
+ return _can_merge_stacks(item_dst, item_src)
+
+
+static func _merge_stacks(item_dst: InventoryItem, item_src: InventoryItem) -> bool:
+ assert(item_dst != null, "item_dst is null!")
+ assert(item_src != null, "item_src is null!")
+
+ if item_dst == item_src:
+ return false
+
+ if !_can_merge_stacks(item_dst, item_src):
+ return false
+
+ var src_size := get_item_stack_size(item_src)
+ set_item_stack_size(item_src, _ItemCount.zero())
+ set_item_stack_size(item_dst, get_item_stack_size(item_dst).add(src_size))
+ return true
+
+
+static func _can_merge_stacks(item_dst: InventoryItem, item_src: InventoryItem) -> bool:
+ if !stacks_compatible(item_dst, item_src):
+ return false
+
+ var src_size: _ItemCount = get_item_stack_size(item_src)
+ var dst_size := get_item_stack_size(item_dst)
+ var free_dst_stack_space := get_free_stack_space(item_dst)
+
+ if free_dst_stack_space.eq(_ItemCount.zero()):
+ return false
+ if src_size.gt(free_dst_stack_space):
+ return false
+ return true
+
+
+static func _merge_stacks_split_source(item_dst: InventoryItem, item_src: InventoryItem) -> bool:
+ assert(item_dst != null, "item_dst is null!")
+ assert(item_src != null, "item_src is null!")
+
+ if !_can_merge_stacks_split_source(item_dst, item_src):
+ return false
+ if _merge_stacks(item_dst, item_src):
+ return true
+
+ var free_dst_stack_space := get_free_stack_space(item_dst)
+ var new_stack := split_stack(item_src, free_dst_stack_space)
+ var success = _merge_stacks(item_dst, new_stack)
+ assert(success, "Failed to merge stacks!")
+ return true
+
+
+static func _can_merge_stacks_split_source(item_dst: InventoryItem, item_src: InventoryItem) -> bool:
+ assert(item_dst != null, "item_dst is null!")
+ assert(item_src != null, "item_src is null!")
+ if item_dst == item_src:
+ return false
+ if !stacks_compatible(item_dst, item_src):
+ return false
+ return !get_free_stack_space(item_dst).eq(_ItemCount.zero())
+
+
+static func get_free_stack_space(item: InventoryItem) -> _ItemCount:
+ assert(item != null, "item is null!")
+ return get_item_max_stack_size(item).sub(get_item_stack_size(item))
+
+
+static func split_stack(item: InventoryItem, new_stack_size: _ItemCount) -> InventoryItem:
+ if !can_split_stack(item, new_stack_size):
+ return null
+
+ var new_item := item.duplicate()
+ set_item_stack_size(item, get_item_stack_size(item).sub(new_stack_size))
+ set_item_stack_size(new_item, new_stack_size)
+ return new_item
+
+
+static func can_split_stack(item: InventoryItem, new_stack_size: _ItemCount) -> bool:
+ if get_item_stack_size(item).gt(new_stack_size):
+ return true
+ return false
+
+
+static func inv_split_stack(inv: Inventory, item: InventoryItem, new_stack_size: _ItemCount) -> InventoryItem:
+ assert(inv.has_item(item), "Inventory must contain item!")
+
+ var old_item_stack_size := get_item_stack_size(item)
+ var new_stack := split_stack(item, new_stack_size)
+ if new_stack == null:
+ return null
+
+ if !inv.add_item(new_stack):
+ set_item_stack_size(item, old_item_stack_size)
+ return null
+
+ return new_stack
+
+
+static func inv_merge_stack(inv: Inventory, item_dst: InventoryItem, item_src: InventoryItem, split_source: bool = false) -> bool:
+ if split_source:
+ return _inv_merge_stack_split_source(inv, item_dst, item_src)
+ return _inv_merge_stack(inv, item_dst, item_src)
+
+
+static func _inv_merge_stack(inv: Inventory, item_dst: InventoryItem, item_src: InventoryItem) -> bool:
+ assert(inv.has_item(item_dst), "Inventory must contain item_dst!")
+
+ if !inv.has_item(item_src) && !inv.can_add_item(item_src):
+ return false
+
+ if !merge_stacks(item_dst, item_src):
+ return false
+
+ var inv_src := item_src.get_inventory()
+ if is_instance_valid(inv_src):
+ inv_src.remove_item(item_src)
+ return true
+
+
+static func _inv_merge_stack_split_source(inv: Inventory, item_dst: InventoryItem, item_src: InventoryItem) -> bool:
+ assert(inv.has_item(item_dst), "Inventory must contain item_dst!")
+
+ if !stacks_compatible(item_dst, item_src):
+ return false
+
+ # item_dst and item_src are in the same inventory
+ if inv.has_item(item_src):
+ return merge_stacks(item_dst, item_src, true)
+
+ # item_dst and item_src are in different inventories
+ if inv._constraint_manager.has_space_for(item_src):
+ _merge_stacks_split_source(item_dst, item_src)
+ return true
+
+ var receivable_stack_size := _ItemCount.min(get_free_stack_space(item_dst), inv._constraint_manager.get_space_for(item_src))
+ if receivable_stack_size.eq(_ItemCount.zero()):
+ return false
+ var src_stack_size := get_item_stack_size(item_src)
+ if receivable_stack_size.ge(src_stack_size):
+ # No splitting of item_src is needed
+ var success = _inv_merge_stack(inv, item_dst, item_src)
+ assert(success, "Failed to merge stacks!")
+ return true
+
+ # Need to split item_src
+ var partial_stack := split_stack(item_src, receivable_stack_size)
+ assert(partial_stack != null)
+ var success = merge_stacks(item_dst, partial_stack)
+ assert(success, "Failed to merge stacks!")
+ return true
+
+
+static func inv_add_automerge(inv: Inventory, item: InventoryItem) -> bool:
+ assert(!inv.has_item(item), "Inventory must not contain item!")
+
+ if !inv._constraint_manager.has_space_for(item):
+ return false
+ var success = inv.add_item(item)
+ assert(success, "Failed to add item!")
+ inv_pack_stack(inv, item)
+ return true
+
+
+static func inv_add_autosplit(inv: Inventory, item: InventoryItem) -> bool:
+ if inv.add_item(item):
+ return true
+
+ var space_for_item := inv._constraint_manager.get_space_for(item)
+ if space_for_item.eq(_ItemCount.zero()):
+ return false
+
+ var new_stack := split_stack(item, space_for_item)
+ assert(new_stack)
+ var success = inv.add_item(new_stack)
+ assert(success, "Failed to add item!")
+ return true
+
+
+static func inv_add_autosplitmerge(inv: Inventory, item: InventoryItem) -> bool:
+ assert(!inv.has_item(item), "Inventory must not contain item!")
+
+ if inv._constraint_manager.has_space_for(item):
+ inv.add_item(item)
+ inv_pack_stack(inv, item)
+ return true
+
+ if !_inv_has_space_for_single_item(inv, item):
+ return false
+
+ for i in inv.get_items():
+ _merge_stacks_split_source(i, item)
+ if get_item_stack_size(item).eq(_ItemCount.zero()):
+ return true
+ inv.add_item(item)
+ return true
+
+
+static func _inv_has_space_for_single_item(inv: Inventory, item: InventoryItem) -> bool:
+ var test_item := item.duplicate()
+ set_item_stack_size(test_item, _ItemCount.one())
+ return inv._constraint_manager.has_space_for(test_item)
+
+
+static func inv_pack_stack(inv: Inventory, item: InventoryItem) -> void:
+ for mergable_item in inv.get_items():
+ if !can_merge_stacks(mergable_item, item, true):
+ continue
+ merge_stacks(mergable_item, item, true)
--- /dev/null
+uid://b7wnv2qfxvu8o
+static func safe_connect(s: Signal, c: Callable) -> void:
+ if !s.is_connected(c):
+ s.connect(c)
+
+
+static func safe_disconnect(s: Signal, c: Callable) -> void:
+ if s.is_connected(c):
+ s.disconnect(c)
+
static func str_to_var(s: String) -> Variant:
var variant = str_to_var(s)
- # str_to_var considers all strings that start with a digit convertable to
+ # str_to_var considers all strings that start with a digit convertible to
# int/float (which is not consistent with String.is_valid_int and
# String.is_valid_float).
if typeof(variant) == TYPE_INT && !s.is_valid_int():
if typeof(variant) == TYPE_FLOAT && !s.is_valid_float():
variant = null
return variant
+
+
+static func array_union(a: Array, b: Array) -> Array:
+ var result: Array = a.duplicate()
+ for x in b:
+ if not x in result:
+ result.push_back(x)
+ return result
+
+
+static func _deserialize_protoset(data: String) -> JSON:
+ assert(!data.is_empty(), "Invalid protoset data (empty string)!")
+ if data.begins_with("res://"):
+ return load(data)
+ else:
+ var prototree := JSON.new()
+ prototree.parse(data)
+ return prototree
--- /dev/null
+uid://cl86i2lo5k6s
-
const type_names: Array = [
"null",
"bool",
return Basis()
TYPE_TRANSFORM3D:
return Transform3D()
- TYPE_PROJECTION :
+ TYPE_PROJECTION:
return Projection()
TYPE_COLOR:
return Color()
--- /dev/null
+uid://br7rpdsj2gwtr
--- /dev/null
+# Editor Directory Contents
+
+## Directories
+
+| Directory | Description |
+| ------------------ | ----------- |
+| `common` | Editor functionality commonly used by the rest of the editor-related code. |
+| `inventory_editor` | Inventory editor implementation. |
+| `item_editor` | Item editor implementation. |
+| `item_slot_editor` | Slot editor implementation. |
+
+## Files
+
+| Directory | Description |
+| -------------------------------- | ----------- |
+| `inventory_inspector_plugin.gd` | GLoot `EditorInspectorPlugin` class implementation. |
+| `undoables.gd` | Helper script for executing undoable operations in the editor. |
\ No newline at end of file
+++ /dev/null
-@tool
-extends Control
-
-signal choice_picked(value_index)
-signal choice_selected(value_index)
-
-
-@onready var lbl_filter: Label = $HBoxContainer/Label
-@onready var line_edit: LineEdit = $HBoxContainer/LineEdit
-@onready var item_list: ItemList = $ItemList
-@onready var btn_pick: Button = $Button
-@export var pick_button_visible: bool = true :
- set(new_pick_button_visible):
- pick_button_visible = new_pick_button_visible
- if btn_pick:
- btn_pick.visible = pick_button_visible
-@export var pick_text: String :
- set(new_pick_text):
- pick_text = new_pick_text
- if btn_pick:
- btn_pick.text = pick_text
-@export var pick_icon: Texture2D :
- set(new_pick_icon):
- pick_icon = new_pick_icon
- if btn_pick:
- btn_pick.icon = pick_icon
-@export var filter_text: String = "Filter:" :
- set(new_filter_text):
- filter_text = new_filter_text
- if lbl_filter:
- lbl_filter.text = filter_text
-@export var filter_icon: Texture2D :
- set(new_filter_icon):
- filter_icon = new_filter_icon
- if line_edit:
- line_edit.right_icon = filter_icon
-@export var values: Array[String]
-
-
-func refresh() -> void:
- _clear()
- _populate()
-
-
-func _clear() -> void:
- if item_list:
- item_list.clear()
-
-
-func _populate() -> void:
- if line_edit == null || item_list == null:
- return
-
- if values == null || values.size() == 0:
- return
-
- for value_index in range(values.size()):
- var value = values[value_index]
- assert(value is String, "values must be an array of strings!")
-
- if !line_edit.text.is_empty() && !(line_edit.text.to_lower() in value.to_lower()):
- continue
-
- item_list.add_item(value)
- item_list.set_item_metadata(item_list.get_item_count() - 1, value_index)
-
-
-func _ready() -> void:
- btn_pick.pressed.connect(_on_btn_pick)
- line_edit.text_changed.connect(_on_filter_text_changed)
- item_list.item_activated.connect(_on_item_activated)
- item_list.item_selected.connect(_on_item_selected)
- refresh()
- if btn_pick:
- btn_pick.text = pick_text
- btn_pick.icon = pick_icon
- btn_pick.visible = pick_button_visible
- if lbl_filter:
- lbl_filter.text = filter_text
- if line_edit:
- line_edit.right_icon = filter_icon
-
-
-func _on_btn_pick() -> void:
- var selected_items: PackedInt32Array = item_list.get_selected_items()
- if selected_items.size() == 0:
- return
-
- var selected_item = selected_items[0]
- var selected_value_index = item_list.get_item_metadata(selected_item)
- choice_picked.emit(selected_value_index)
-
-
-func _on_filter_text_changed(_new_text: String) -> void:
- refresh()
-
-
-func _on_item_activated(index: int) -> void:
- var selected_value_index = item_list.get_item_metadata(index)
- choice_picked.emit(selected_value_index)
-
-
-func _on_item_selected(index: int) -> void:
- var selected_value_index = item_list.get_item_metadata(index)
- choice_selected.emit(selected_value_index)
-
-
-func get_selected_item() -> int:
- var selected := item_list.get_selected_items()
- if selected.size() > 0:
- return item_list.get_item_metadata(selected[0])
- return -1
-
-
-func get_selected_text() -> String:
- var selected := get_selected_item()
- if selected >= 0:
- return values[selected]
-
- return ""
-
-
-func set_values(new_values: Array) -> void:
- values.clear()
- for new_value in new_values:
- if typeof(new_value) == TYPE_STRING:
- values.push_back(new_value)
-
- refresh()
+++ /dev/null
-[gd_scene load_steps=2 format=3 uid="uid://dj577duf8yjeb"]
-
-[ext_resource type="Script" path="res://addons/gloot/editor/common/choice_filter.gd" id="1"]
-
-[node name="ChoiceFilter" type="VBoxContainer"]
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-size_flags_horizontal = 3
-size_flags_vertical = 3
-script = ExtResource("1")
-
-[node name="HBoxContainer" type="HBoxContainer" parent="."]
-layout_mode = 2
-size_flags_horizontal = 3
-
-[node name="Label" type="Label" parent="HBoxContainer"]
-layout_mode = 2
-text = "Filter:"
-
-[node name="LineEdit" type="LineEdit" parent="HBoxContainer"]
-layout_mode = 2
-size_flags_horizontal = 3
-clear_button_enabled = true
-
-[node name="ItemList" type="ItemList" parent="."]
-layout_mode = 2
-size_flags_vertical = 3
-
-[node name="Button" type="Button" parent="."]
-layout_mode = 2
+++ /dev/null
-[gd_scene load_steps=2 format=3 uid="uid://rfjw5a8ppj1b"]
-
-[ext_resource type="PackedScene" uid="uid://dj577duf8yjeb" path="res://addons/gloot/editor/common/choice_filter.tscn" id="1"]
-
-[node name="Control" type="Control"]
-layout_mode = 3
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-
-[node name="ChoiceFilter" parent="." instance=ExtResource("1")]
-layout_mode = 0
-anchors_preset = 0
-anchor_right = 0.0
-anchor_bottom = 0.0
-offset_right = 217.0
-offset_bottom = 267.0
-pick_text = "Pick"
-values = Array[String](["foo", "bar", "baz"])
@tool
extends Control
-signal value_changed(key, value)
-signal value_removed(key)
+signal value_changed(key: String, value: Variant)
+signal value_removed(key: String)
-const Verify = preload("res://addons/gloot/core/verify.gd")
-const ValueEditor = preload("res://addons/gloot/editor/common/value_editor.gd")
-const supported_types: Array[int] = [
+const _Verify = preload("res://addons/gloot/core/verify.gd")
+const _ValueEditor = preload("res://addons/gloot/editor/common/value_editor.gd")
+const _supported_types: Array[int] = [
TYPE_BOOL,
TYPE_INT,
TYPE_FLOAT,
@onready var opt_type = $VBoxContainer/HBoxContainer/OptType
@onready var btn_add = $VBoxContainer/HBoxContainer/BtnAdd
-@export var dictionary: Dictionary :
+@export var dictionary: Dictionary:
set(new_dictionary):
dictionary = new_dictionary
refresh()
-@export var color_map: Dictionary :
+@export var color_map: Dictionary:
set(new_color_map):
color_map = new_color_map
refresh()
-@export var remove_button_map: Dictionary :
+@export var remove_button_map: Dictionary:
set(new_remove_button_map):
remove_button_map = new_remove_button_map
refresh()
-@export var immutable_keys: Array[String] :
+@export var immutable_keys: Array[String]:
set(new_immutable_keys):
immutable_keys = new_immutable_keys
refresh()
-@export var default_color: Color = Color.WHITE :
+@export var default_color: Color = Color.WHITE:
set(new_default_color):
default_color = new_default_color
refresh()
func _add_dict_field(name: String, type: int) -> bool:
if (name.is_empty() || type < 0 || dictionary.has(name)):
return false
- dictionary[name] = Verify.create_var(type)
+ dictionary[name] = _Verify.create_var(type)
return true
func _refresh_add_property() -> void:
- for type in supported_types:
- opt_type.add_item(Verify.type_names[type], type)
- opt_type.select(supported_types.find(TYPE_STRING))
+ for type in _supported_types:
+ opt_type.add_item(_Verify.type_names[type], type)
+ opt_type.select(_supported_types.find(TYPE_STRING))
func _clear() -> void:
var value = dictionary[key]
_add_label(key, color)
- _add_label(Verify.type_names[typeof(dictionary[key])], color)
+ _add_label(_Verify.type_names[typeof(dictionary[key])], color)
_add_value_editor(key)
_add_remove_button(key)
func _add_value_editor(key: String) -> void:
- var value_editor: Control = ValueEditor.new()
+ var value_editor: Control = _ValueEditor.new()
value_editor.value = dictionary[key]
value_editor.size_flags_horizontal = SIZE_EXPAND_FILL
value_editor.enabled = (not key in immutable_keys)
--- /dev/null
+uid://bj07u7wpynpva
[node name="OptType" type="OptionButton" parent="VBoxContainer/HBoxContainer"]
layout_mode = 2
-item_count = 14
selected = 3
+item_count = 14
popup/item_0/text = "bool"
popup/item_0/id = 1
popup/item_1/text = "int"
--- /dev/null
+uid://bxx5vlfqbqk6u
extends GridContainer
-signal value_changed(value_index)
+signal value_changed(value_index: int)
-const Utils = preload("res://addons/gloot/core/utils.gd")
+const _Utils = preload("res://addons/gloot/core/utils.gd")
-var values: Array = [] :
+var values: Array = []:
set(new_values):
assert(!is_inside_tree(), "Can't set values once the node is inside a tree")
values = new_values
-var titles: Array = [] :
+var titles: Array = []:
set(new_titles):
assert(!is_inside_tree(), "Can't set titles once the node is inside a tree")
titles = new_titles
func _on_line_edit_focus_exited(line_edit: LineEdit, idx: int) -> void:
- var value = Utils.str_to_var(line_edit.text)
+ var value = _Utils.str_to_var(line_edit.text)
if typeof(value) != type:
line_edit.text = var_to_str(values[idx])
return
+ if value == values[idx]:
+ return
values[idx] = value
value_changed.emit(idx)
--- /dev/null
+uid://chgvb05fxa4ai
--- /dev/null
+@tool
+extends Tree
+
+signal prototype_activated(prototype: Prototype)
+
+@export var protoset: JSON = null:
+ set(new_protoset):
+ if new_protoset == protoset:
+ return
+ _disconnect_json_signals()
+ protoset = new_protoset
+ _proto_tree.clear()
+ _connect_json_signals()
+ _proto_tree.deserialize(protoset)
+ _queue_refresh()
+
+
+var _proto_tree := ProtoTree.new()
+var _refresh_queued := false
+
+
+func _connect_json_signals() -> void:
+ if !is_instance_valid(protoset):
+ return
+ protoset.changed.connect(_queue_refresh)
+
+
+func _disconnect_json_signals() -> void:
+ if !is_instance_valid(protoset):
+ return
+ protoset.changed.disconnect(_queue_refresh)
+
+
+func _queue_refresh() -> void:
+ _refresh_queued = true
+
+
+func _process(_delta: float) -> void:
+ if _refresh_queued:
+ _refresh()
+ _refresh_queued = false
+
+
+func _refresh() -> void:
+ clear()
+ var root_tree_item = create_item(null)
+ root_tree_item.set_text(0, _proto_tree.get_root().get_id())
+ root_tree_item.set_metadata(0, _proto_tree.get_root())
+ _traverse(_proto_tree.get_root(), root_tree_item)
+
+
+func _traverse(prototype: Prototype, tree_item: TreeItem) -> void:
+ for subprototype in prototype.get_derived_prototypes():
+ var subitem = create_item(tree_item)
+ subitem.set_text(0, subprototype.get_id())
+ subitem.set_metadata(0, subprototype)
+ _traverse(subprototype, subitem)
+
+
+func _ready() -> void:
+ item_activated.connect(func():
+ prototype_activated.emit(get_selected().get_metadata(0))
+ )
+
+
+func get_selected_prototype() -> Prototype:
+ if get_selected() == null:
+ return null
+ return get_selected().get_metadata(0)
--- /dev/null
+uid://kudxphm4j8m7
signal value_changed
-const MultivalueEditor = preload("res://addons/gloot/editor/common/multivalue_editor.gd")
-const Utils = preload("res://addons/gloot/core/utils.gd")
+const _MultivalueEditor = preload("res://addons/gloot/editor/common/multivalue_editor.gd")
+const _Utils = preload("res://addons/gloot/core/utils.gd")
-var value :
+var value:
set(new_value):
value = new_value
call_deferred("_refresh")
func _on_line_edit_focus_exited(line_edit: LineEdit) -> void:
- var new_value = Utils.str_to_var(line_edit.text)
+ var new_value = _Utils.str_to_var(line_edit.text)
if typeof(new_value) != typeof(value):
line_edit.text = var_to_str(value)
return
+ if new_value == value:
+ return
value = new_value
value_changed.emit()
func _on_color_picked(picker: ColorPickerButton) -> void:
+ if picker.color == value:
+ return
value = picker.color
value_changed.emit()
func _on_checkbox(checkbox: CheckButton) -> void:
+ if checkbox.button_pressed == value:
+ return
value = checkbox.button_pressed
value_changed.emit()
func _create_v2_editor() -> Control:
- var values = [value.x, value.y]
- var titles = ["X", "Y"]
- var v2_editor = _create_multifloat_editor(2, enabled, values, titles, _on_v2_value_changed)
+ var values := [value.x, value.y]
+ var titles := ["X", "Y"]
+ var value_converter := func(values: Array):
+ return Vector2(values[0], values[1])
+ var v2_editor = _create_multifloat_editor(2, enabled, values, titles, value_converter)
return v2_editor
func _create_v2i_editor() -> Control:
- var values = [value.x, value.y]
- var titles = ["X", "Y"]
- var v2_editor = _create_multiint_editor(2, enabled, values, titles, _on_v2_value_changed)
+ var values := [value.x, value.y]
+ var titles := ["X", "Y"]
+ var value_converter := func(values: Array):
+ return Vector2i(values[0], values[1])
+ var v2_editor = _create_multiint_editor(2, enabled, values, titles, value_converter)
return v2_editor
-func _on_v2_value_changed(_idx: int, v2_editor: Control) -> void:
- value.x = v2_editor.values[0]
- value.y = v2_editor.values[1]
- value_changed.emit()
-
-
func _create_v3_editor() -> Control:
- var values = [value.x, value.y, value.z]
- var titles = ["X", "Y", "Z"]
- var v3_editor = _create_multifloat_editor(3, enabled, values, titles, _on_v3_value_changed)
+ var values := [value.x, value.y, value.z]
+ var titles := ["X", "Y", "Z"]
+ var value_converter := func(values: Array):
+ return Vector3(values[0], values[1], values[2])
+ var v3_editor = _create_multifloat_editor(3, enabled, values, titles, value_converter)
return v3_editor
func _create_v3i_editor() -> Control:
- var values = [value.x, value.y, value.z]
- var titles = ["X", "Y", "Z"]
- var v3_editor = _create_multiint_editor(3, enabled, values, titles, _on_v3_value_changed)
+ var values := [value.x, value.y, value.z]
+ var titles := ["X", "Y", "Z"]
+ var value_converter := func(values: Array):
+ return Vector3i(values[0], values[1], values[2])
+ var v3_editor = _create_multiint_editor(3, enabled, values, titles, value_converter)
return v3_editor
-func _on_v3_value_changed(_idx: int, v3_editor: Control) -> void:
- value.x = v3_editor.values[0]
- value.y = v3_editor.values[1]
- value.z = v3_editor.values[2]
- value_changed.emit()
-
-
func _create_r2_editor() -> Control:
- var values = [value.position.x, value.position.y, value.size.x, value.size.y]
- var titles = ["Position X", "Position Y", "Size X", "Size Y"]
- var r2_editor = _create_multifloat_editor(2, enabled, values, titles, _on_r2_value_changed)
+ var values := [value.position.x, value.position.y, value.size.x, value.size.y]
+ var titles := ["Position X", "Position Y", "Size X", "Size Y"]
+ var value_converter := func(values: Array):
+ return Rect2(
+ values[0],
+ values[1],
+ values[2],
+ values[3])
+ var r2_editor = _create_multifloat_editor(2, enabled, values, titles, value_converter)
return r2_editor
func _create_r2i_editor() -> Control:
- var values = [value.position.x, value.position.y, value.size.x, value.size.y]
- var titles = ["Position X", "Position Y", "Size X", "Size Y"]
- var r2_editor = _create_multiint_editor(2, enabled, values, titles, _on_r2_value_changed)
+ var values := [value.position.x, value.position.y, value.size.x, value.size.y]
+ var titles := ["Position X", "Position Y", "Size X", "Size Y"]
+ var value_converter := func(values: Array):
+ return Rect2i(
+ values[0],
+ values[1],
+ values[2],
+ values[3])
+ var r2_editor = _create_multiint_editor(2, enabled, values, titles, value_converter)
return r2_editor
-func _on_r2_value_changed(_idx: int, r2_editor: Control) -> void:
- value.position.x = r2_editor.values[0]
- value.position.y = r2_editor.values[1]
- value.size.x = r2_editor.values[2]
- value.size.y = r2_editor.values[3]
- value_changed.emit()
-
-
func _create_plane_editor() -> Control:
- var values = [value.x, value.y, value.z, value.d]
- var titles = ["X", "Y", "Z", "D"]
- var editor = _create_multifloat_editor(2, enabled, values, titles, _on_plane_value_changed)
+ var values := [value.x, value.y, value.z, value.d]
+ var titles := ["A", "B", "C", "D"]
+ var value_converter := func(values: Array):
+ return Plane(
+ values[0],
+ values[1],
+ values[2],
+ values[3])
+ var editor = _create_multifloat_editor(2, enabled, values, titles, value_converter)
return editor
-func _on_plane_value_changed(_idx: int, plane_editor: Control) -> void:
- value.x = plane_editor.values[0]
- value.y = plane_editor.values[1]
- value.z = plane_editor.values[2]
- value.d = plane_editor.values[3]
- value_changed.emit()
-
-
func _create_quat_editor() -> Control:
- var values = [value.x, value.y, value.z, value.w]
- var titles = ["X", "Y", "Z", "W"]
- var editor = _create_multifloat_editor(2, enabled, values, titles, _on_quat_value_changed)
+ var values := [value.x, value.y, value.z, value.w]
+ var titles := ["X", "Y", "Z", "W"]
+ var value_converter := func(values: Array):
+ return Quaternion(
+ values[0],
+ values[1],
+ values[2],
+ values[3])
+ var editor = _create_multifloat_editor(2, enabled, values, titles, value_converter)
return editor
-func _on_quat_value_changed(_idx: int, quat_editor: Control) -> void:
- value.x = quat_editor.values[0]
- value.y = quat_editor.values[1]
- value.z = quat_editor.values[2]
- value.d = quat_editor.values[3]
- value_changed.emit()
-
-
func _create_aabb_editor() -> Control:
- var values = [value.position.x, value.position.y, value.position.z, \
+ var values := [value.position.x, value.position.y, value.position.z, \
value.size.x, value.size.y, value.size.z]
- var titles = ["Position X", "Position Y", "Position Z", "Size X", "Size Y", "Size Z"]
- var editor = _create_multifloat_editor(3, enabled, values, titles, _on_aabb_value_changed)
+ var titles := ["Position X", "Position Y", "Position Z", "Size X", "Size Y", "Size Z"]
+ var value_converter := func(values: Array):
+ var result: AABB
+ result.position.x = values[0]
+ result.position.y = values[1]
+ result.position.z = values[2]
+ result.size.x = values[3]
+ result.size.y = values[4]
+ result.size.z = values[5]
+ return result
+ var editor = _create_multifloat_editor(3, enabled, values, titles, value_converter)
return editor
-func _on_aabb_value_changed(_idx: int, aabb_editor: Control) -> void:
- value.position.x = aabb_editor.values[0]
- value.position.y = aabb_editor.values[1]
- value.position.z = aabb_editor.values[2]
- value.size.x = aabb_editor.values[3]
- value.size.y = aabb_editor.values[4]
- value.size.z = aabb_editor.values[5]
- value_changed.emit()
-
-
func _create_multifloat_editor(
columns: int,
enabled: bool,
values: Array,
titles: Array,
- value_changed_handler: Callable) -> Control:
- return _create_multivalue_editor(columns, enabled, TYPE_FLOAT, values, titles, value_changed_handler)
+ value_converter: Callable) -> Control:
+ return _create_multivalue_editor(columns, enabled, TYPE_FLOAT, values, titles, value_converter)
func _create_multiint_editor(
enabled: bool,
values: Array,
titles: Array,
- value_changed_handler: Callable) -> Control:
- return _create_multivalue_editor(columns, enabled, TYPE_INT, values, titles, value_changed_handler)
+ value_converter: Callable) -> Control:
+ return _create_multivalue_editor(columns, enabled, TYPE_INT, values, titles, value_converter)
func _create_multivalue_editor(
type: int,
values: Array,
titles: Array,
- value_changed_handler: Callable) -> Control:
- var multivalue_editor = MultivalueEditor.new()
+ value_converter: Callable) -> Control:
+ var multivalue_editor = _MultivalueEditor.new()
multivalue_editor.columns = columns
multivalue_editor.enabled = enabled
multivalue_editor.type = type
multivalue_editor.values = values
multivalue_editor.titles = titles
_expand_control(multivalue_editor)
- multivalue_editor.value_changed.connect(value_changed_handler.bind(multivalue_editor))
+ multivalue_editor.value_changed.connect(func(_idx: int):
+ var new_value = value_converter.call(multivalue_editor.values)
+ if new_value == value:
+ return
+ value = new_value
+ value_changed.emit()
+ )
return multivalue_editor
--- /dev/null
+uid://b27rj7hee5e7w
+++ /dev/null
-@tool
-extends Object
-
-const GlootUndoRedo = preload("res://addons/gloot/editor/gloot_undo_redo.gd")
-
-
-static func _get_undo_redo_manager():
- var gloot = load("res://addons/gloot/gloot.gd")
- assert(gloot.instance())
- var undo_redo_manager = gloot.instance().get_undo_redo()
- assert(undo_redo_manager)
- return undo_redo_manager
-
-
-static func add_inventory_item(inventory: Inventory, prototype_id: String) -> void:
- var undo_redo_manager = _get_undo_redo_manager()
-
- var old_inv_state := inventory.serialize()
- if inventory.create_and_add_item(prototype_id) == null:
- return
- var new_inv_state := inventory.serialize()
-
- undo_redo_manager.create_action("Add Inventory Item")
- undo_redo_manager.add_do_method(GlootUndoRedo, "_set_inventory", inventory, new_inv_state)
- undo_redo_manager.add_undo_method(GlootUndoRedo, "_set_inventory", inventory, old_inv_state)
- undo_redo_manager.commit_action()
-
-
-static func remove_inventory_item(inventory: Inventory, item: InventoryItem) -> void:
- var undo_redo_manager = _get_undo_redo_manager()
-
- var old_inv_state := inventory.serialize()
- if !inventory.remove_item(item):
- return
- var new_inv_state := inventory.serialize()
-
- undo_redo_manager.create_action("Remove Inventory Item")
- undo_redo_manager.add_do_method(GlootUndoRedo, "_set_inventory", inventory, new_inv_state)
- undo_redo_manager.add_undo_method(GlootUndoRedo, "_set_inventory", inventory, old_inv_state)
- undo_redo_manager.commit_action()
-
-
-static func remove_inventory_items(inventory: Inventory, items: Array[InventoryItem]) -> void:
- var undo_redo_manager = _get_undo_redo_manager()
-
- var old_inv_state := inventory.serialize()
- for item in items:
- assert(inventory.remove_item(item))
- var new_inv_state := inventory.serialize()
-
- undo_redo_manager.create_action("Remove Inventory Items")
- undo_redo_manager.add_do_method(GlootUndoRedo, "_set_inventory", inventory, new_inv_state)
- undo_redo_manager.add_undo_method(GlootUndoRedo, "_set_inventory", inventory, old_inv_state)
- undo_redo_manager.commit_action()
-
-
-static func set_item_properties(item: InventoryItem, new_properties: Dictionary) -> void:
- var undo_redo_manager = _get_undo_redo_manager()
-
- var inventory: Inventory = item.get_inventory()
- if inventory:
- undo_redo_manager.create_action("Set item properties")
- undo_redo_manager.add_do_method(GlootUndoRedo, "_set_item_properties", inventory, inventory.get_item_index(item), new_properties)
- undo_redo_manager.add_undo_method(GlootUndoRedo, "_set_item_properties", inventory, inventory.get_item_index(item), item.properties)
- undo_redo_manager.commit_action()
- else:
- undo_redo_manager.create_action("Set item properties")
- undo_redo_manager.add_undo_property(item, "properties", item.properties)
- undo_redo_manager.add_do_property(item, "properties", new_properties)
- undo_redo_manager.commit_action()
-
-
-static func set_item_prototype_id(item: InventoryItem, new_prototype_id: String) -> void:
- var undo_redo_manager = _get_undo_redo_manager()
-
- var inventory: Inventory = item.get_inventory()
- if inventory:
- undo_redo_manager.create_action("Set prototype_id")
- undo_redo_manager.add_do_method(GlootUndoRedo, "_set_item_prototype_id", inventory, inventory.get_item_index(item), new_prototype_id)
- undo_redo_manager.add_undo_method(GlootUndoRedo, "_set_item_prototype_id", inventory, inventory.get_item_index(item), item.prototype_id)
- undo_redo_manager.commit_action()
- else:
- undo_redo_manager.create_action("Set prototype_id")
- undo_redo_manager.add_undo_property(item, "prototype_id", item.prototype_id)
- undo_redo_manager.add_do_property(item, "prototype_id", new_prototype_id)
- undo_redo_manager.commit_action()
-
-
-static func _set_inventory(inventory: Inventory, inventory_data: Dictionary) -> void:
- inventory.deserialize(inventory_data)
-
-
-static func _set_item_prototype_id(inventory: Inventory, item_index: int, new_prototype_id: String):
- assert(item_index < inventory.get_item_count())
- inventory.get_items()[item_index].prototype_id = new_prototype_id
-
-
-static func _set_item_properties(inventory: Inventory, item_index: int, new_properties: Dictionary):
- assert(item_index < inventory.get_item_count())
- inventory.get_items()[item_index].properties = new_properties.duplicate()
-
-
-static func equip_item_in_item_slot(item_slot: ItemSlotBase, item: InventoryItem) -> void:
- var undo_redo_manager = _get_undo_redo_manager()
-
- var old_slot_state := item_slot.serialize()
- if !item_slot.equip(item):
- return
- var new_slot_state := item_slot.serialize()
-
- undo_redo_manager.create_action("Equip Inventory Item")
- undo_redo_manager.add_do_method(GlootUndoRedo, "_set_item_slot", item_slot, new_slot_state)
- undo_redo_manager.add_undo_method(GlootUndoRedo, "_set_item_slot", item_slot, old_slot_state)
- undo_redo_manager.commit_action()
-
-
-static func clear_item_slot(item_slot: ItemSlotBase) -> void:
- var undo_redo_manager = _get_undo_redo_manager()
-
- var old_slot_state := item_slot.serialize()
- if !item_slot.clear():
- return
- var new_slot_state := item_slot.serialize()
-
- undo_redo_manager.create_action("Clear Inventory Item")
- undo_redo_manager.add_do_method(GlootUndoRedo, "_set_item_slot", item_slot, new_slot_state)
- undo_redo_manager.add_undo_method(GlootUndoRedo, "_set_item_slot", item_slot, old_slot_state)
- undo_redo_manager.commit_action()
-
-
-static func _set_item_slot(item_slot: ItemSlotBase, item_slot_data: Dictionary) -> void:
- item_slot.deserialize(item_slot_data)
-
-
-static func move_inventory_item(inventory: InventoryGrid, item: InventoryItem, to: Vector2i) -> void:
- var undo_redo_manager = _get_undo_redo_manager()
-
- var old_position := inventory.get_item_position(item)
- if old_position == to:
- return
- var item_index := inventory.get_item_index(item)
-
- undo_redo_manager.create_action("Move Inventory Item")
- undo_redo_manager.add_do_method(GlootUndoRedo, "_move_item", inventory, item_index, to)
- undo_redo_manager.add_undo_method(GlootUndoRedo, "_move_item", inventory, item_index, old_position)
- undo_redo_manager.commit_action()
-
-
-static func swap_inventory_items(item1: InventoryItem, item2: InventoryItem) -> void:
-
- var undo_redo_manager = _get_undo_redo_manager()
-
- var inventories: Array[Inventory] = [item1.get_inventory(), item2.get_inventory()]
- var old_inv_states: Array[Dictionary] = [{}, {}]
- var new_inv_states: Array[Dictionary] = [{}, {}]
- old_inv_states[0] = inventories[0].serialize()
- old_inv_states[1] = inventories[1].serialize()
- if !InventoryItem.swap(item1, item2):
- return
- new_inv_states[0] = inventories[0].serialize()
- new_inv_states[1] = inventories[1].serialize()
-
- undo_redo_manager.create_action("Swap Inventory Items")
- undo_redo_manager.add_do_method(GlootUndoRedo, "_set_inventories", inventories, new_inv_states)
- undo_redo_manager.add_undo_method(GlootUndoRedo, "_set_inventories", inventories, old_inv_states)
- undo_redo_manager.commit_action()
-
-
-static func _set_inventories(inventories: Array[Inventory], inventory_data: Array[Dictionary]) -> void:
- assert(inventories.size() == inventory_data.size())
- for i in range(inventories.size()):
- inventories[i].deserialize(inventory_data[i])
-
-
-static func rotate_inventory_item(inventory: InventoryGrid, item: InventoryItem) -> void:
- var undo_redo_manager = _get_undo_redo_manager()
-
- if !inventory.can_rotate_item(item):
- return
-
- var old_rotation := inventory.is_item_rotated(item)
- var item_index := inventory.get_item_index(item)
-
- undo_redo_manager.create_action("Rotate Inventory Item")
- undo_redo_manager.add_do_method(GlootUndoRedo, "_set_item_rotation", inventory, item_index, !old_rotation)
- undo_redo_manager.add_undo_method(GlootUndoRedo, "_set_item_rotation", inventory, item_index, old_rotation)
- undo_redo_manager.commit_action()
-
-
-static func _move_item(inventory: InventoryGrid, item_index: int, to: Vector2i) -> void:
- assert(item_index >= 0 && item_index < inventory.get_item_count())
- var item = inventory.get_items()[item_index]
- inventory.move_item_to(item, to)
-
-
-static func _set_item_rotation(inventory: InventoryGrid, item_index: int, rotation: bool) -> void:
- assert(item_index >= 0 && item_index < inventory.get_item_count())
- var item = inventory.get_items()[item_index]
- inventory.set_item_rotation(item, rotation)
-
-
-static func join_inventory_items(
- inventory: InventoryGridStacked,
- item_dst: InventoryItem,
- item_src: InventoryItem
-) -> void:
- var undo_redo_manager = _get_undo_redo_manager()
-
- var old_inv_state := inventory.serialize()
- if !inventory.join(item_dst, item_src):
- return
- var new_inv_state := inventory.serialize()
-
- undo_redo_manager.create_action("Join Inventory Items")
- undo_redo_manager.add_do_method(GlootUndoRedo, "_set_inventory", inventory, new_inv_state)
- undo_redo_manager.add_undo_method(GlootUndoRedo, "_set_inventory", inventory, old_inv_state)
- undo_redo_manager.commit_action()
-
-
-static func rename_prototype(protoset: ItemProtoset, id: String, new_id: String) -> void:
- var undo_redo_manager = _get_undo_redo_manager()
-
- var old_prototypes = _prototypes_deep_copy(protoset)
-
- undo_redo_manager.create_action("Rename Prototype")
- undo_redo_manager.add_undo_method(GlootUndoRedo, "_set_prototypes", protoset, old_prototypes)
- undo_redo_manager.add_do_method(protoset, "rename_prototype", id, new_id)
- undo_redo_manager.commit_action()
-
-
-static func add_prototype(protoset: ItemProtoset, id: String) -> void:
- var undo_redo_manager = _get_undo_redo_manager()
-
- var old_prototypes = _prototypes_deep_copy(protoset)
-
- undo_redo_manager.create_action("Add Prototype")
- undo_redo_manager.add_undo_method(GlootUndoRedo, "_set_prototypes", protoset, old_prototypes)
- undo_redo_manager.add_do_method(protoset, "add_prototype", id)
- undo_redo_manager.commit_action()
-
-
-static func remove_prototype(protoset: ItemProtoset, id: String) -> void:
- var undo_redo_manager = _get_undo_redo_manager()
-
- var old_prototypes = _prototypes_deep_copy(protoset)
-
- undo_redo_manager.create_action("Remove Prototype")
- undo_redo_manager.add_undo_method(GlootUndoRedo, "_set_prototypes", protoset, old_prototypes)
- undo_redo_manager.add_do_method(protoset, "remove_prototype", id)
- undo_redo_manager.commit_action()
-
-
-static func duplicate_prototype(protoset: ItemProtoset, id: String) -> void:
- var undo_redo_manager = _get_undo_redo_manager()
-
- var old_prototypes = _prototypes_deep_copy(protoset)
-
- undo_redo_manager.create_action("Duplicate Prototype")
- undo_redo_manager.add_undo_method(GlootUndoRedo, "_set_prototypes", protoset, old_prototypes)
- undo_redo_manager.add_do_method(protoset, "duplicate_prototype", id)
- undo_redo_manager.commit_action()
-
-
-static func _prototypes_deep_copy(protoset: ItemProtoset) -> Dictionary:
- var result = protoset._prototypes.duplicate()
- for prototype_id in result.keys():
- result[prototype_id] = protoset._prototypes[prototype_id].duplicate()
- return result
-
-
-static func _set_prototypes(protoset: ItemProtoset, prototypes: Dictionary) -> void:
- protoset._prototypes = prototypes
-
-
-static func set_prototype_properties(protoset: ItemProtoset,
- prototype_id: String,
- new_properties: Dictionary) -> void:
- var undo_redo_manager = _get_undo_redo_manager()
- assert(protoset.has_prototype(prototype_id))
- var old_properties = protoset.get_prototype(prototype_id).duplicate()
-
- undo_redo_manager.create_action("Set prototype properties")
- undo_redo_manager.add_undo_method(
- protoset,
- "set_prototype_properties",
- prototype_id,
- old_properties
- )
- undo_redo_manager.add_do_method(
- protoset,
- "set_prototype_properties",
- prototype_id,
- new_properties
- )
- undo_redo_manager.commit_action()
-
@tool
extends Control
-const GlootUndoRedo = preload("res://addons/gloot/editor/gloot_undo_redo.gd")
-const EditorIcons = preload("res://addons/gloot/editor/common/editor_icons.gd")
-
-@onready var hsplit_container = $HSplitContainer
-@onready var prototype_id_filter = $HSplitContainer/ChoiceFilter
-@onready var inventory_control_container = $HSplitContainer/VBoxContainer
-@onready var btn_edit = $HSplitContainer/VBoxContainer/HBoxContainer/BtnEdit
-@onready var btn_remove = $HSplitContainer/VBoxContainer/HBoxContainer/BtnRemove
-@onready var scroll_container = $HSplitContainer/VBoxContainer/ScrollContainer
-var inventory: Inventory :
+const _Undoables = preload("res://addons/gloot/editor/undoables.gd")
+const _EditorIcons = preload("res://addons/gloot/editor/common/editor_icons.gd")
+const _PropertiesEditor = preload("res://addons/gloot/editor/item_editor/properties_editor.tscn")
+const _POPUP_SIZE = Vector2i(800, 300)
+
+var inventory: Inventory:
set(new_inventory):
+ if inventory == new_inventory:
+ return
disconnect_inventory_signals()
inventory = new_inventory
connect_inventory_signals()
_refresh()
var _inventory_control: Control
+var _inventory_container: Control
+var _properties_editor: Window
func connect_inventory_signals():
if !inventory:
return
- if inventory is InventoryStacked:
- inventory.capacity_changed.connect(_refresh)
- if inventory is InventoryGrid:
- inventory.size_changed.connect(_refresh)
+ inventory.constraint_changed.connect(_on_constraint_changed)
inventory.protoset_changed.connect(_refresh)
+ inventory.constraint_added.connect(_on_constraint_changed)
+ inventory.constraint_removed.connect(_on_constraint_changed)
- if !inventory.item_protoset:
+ if !inventory.protoset:
return
- inventory.item_protoset.changed.connect(_refresh)
+ inventory.protoset.changed.connect(_refresh)
func disconnect_inventory_signals():
if !inventory:
return
- if inventory is InventoryStacked:
- inventory.capacity_changed.disconnect(_refresh)
- if inventory is InventoryGrid:
- inventory.size_changed.disconnect(_refresh)
+ inventory.constraint_changed.disconnect(_on_constraint_changed)
inventory.protoset_changed.disconnect(_refresh)
+ inventory.constraint_added.disconnect(_on_constraint_changed)
+ inventory.constraint_removed.disconnect(_on_constraint_changed)
- if !inventory.item_protoset:
+ if !inventory.protoset:
return
- inventory.item_protoset.changed.disconnect(_refresh)
+ inventory.protoset.changed.disconnect(_refresh)
+
+
+func _on_constraint_changed(constraint: InventoryConstraint) -> void:
+ _refresh()
func _refresh() -> void:
- if !is_inside_tree() || inventory == null || inventory.item_protoset == null:
+ if !is_inside_tree() || inventory == null || inventory.protoset == null:
return
# Remove the inventory control, if present
- if _inventory_control:
- scroll_container.remove_child(_inventory_control)
- _inventory_control.queue_free()
- _inventory_control = null
+ if _inventory_container:
+ %ScrollContainer.remove_child(_inventory_container)
+ _inventory_container.queue_free()
+ _inventory_container = null
# Create the appropriate inventory control and populate it
- if inventory is InventoryGrid:
+ _inventory_container = _create_inventory_container()
+ %ScrollContainer.add_child(_inventory_container)
+
+ %PrototreeViewer.protoset = inventory.protoset
+
+
+func _create_inventory_container() -> Control:
+ var vbox_container: Control = VBoxContainer.new()
+ vbox_container.size_flags_horizontal = SIZE_EXPAND_FILL
+ vbox_container.size_flags_vertical = SIZE_EXPAND_FILL
+ var capacity_control: CtrlInventoryCapacity = null
+
+ if inventory.get_constraint(GridConstraint) != null:
_inventory_control = CtrlInventoryGrid.new()
- _inventory_control.grid_color = Color.GRAY
- _inventory_control.draw_selections = true
- elif inventory is InventoryStacked:
- _inventory_control = CtrlInventoryStacked.new()
- elif inventory is Inventory:
+ else:
_inventory_control = CtrlInventory.new()
_inventory_control.size_flags_horizontal = SIZE_EXPAND_FILL
_inventory_control.size_flags_vertical = SIZE_EXPAND_FILL
_inventory_control.inventory = inventory
_inventory_control.inventory_item_activated.connect(_on_inventory_item_activated)
- _inventory_control.inventory_item_context_activated.connect(_on_inventory_item_context_activated)
+ _inventory_control.inventory_item_clicked.connect(_on_inventory_item_clicked)
- scroll_container.add_child(_inventory_control)
+ if inventory.get_constraint(WeightConstraint) != null:
+ capacity_control = CtrlInventoryCapacity.new()
+ capacity_control.inventory = inventory
- # Set prototype_id_filter values
- prototype_id_filter.set_values(inventory.item_protoset._prototypes.keys())
+ if _inventory_control:
+ vbox_container.add_child(_inventory_control)
+ if capacity_control:
+ vbox_container.add_child(capacity_control)
+
+ return vbox_container
func _on_inventory_item_activated(item: InventoryItem) -> void:
- GlootUndoRedo.remove_inventory_item(inventory, item)
+ _Undoables.undoable_action(inventory, "Remove Inventory Item", func():
+ return inventory.remove_item(item)
+ )
-func _on_inventory_item_context_activated(item: InventoryItem) -> void:
- GlootUndoRedo.rotate_inventory_item(inventory, item)
+func _on_inventory_item_clicked(item: InventoryItem, at_position: Vector2, mouse_button_index: int) -> void:
+ if mouse_button_index != MOUSE_BUTTON_RIGHT:
+ return
+ _Undoables.undoable_action(inventory, "Rotate Inventory Item", func():
+ var grid_constraint: GridConstraint = inventory.get_constraint(GridConstraint)
+ if grid_constraint == null:
+ return false
+ var rotated = grid_constraint.is_item_rotated(item)
+ return grid_constraint.set_item_rotation(item, !rotated)
+ )
func _ready() -> void:
- prototype_id_filter.pick_icon = EditorIcons.get_icon("Add")
- prototype_id_filter.filter_icon = EditorIcons.get_icon("Search")
- btn_edit.icon = EditorIcons.get_icon("Edit")
- btn_remove.icon = EditorIcons.get_icon("Remove")
-
- prototype_id_filter.choice_picked.connect(_on_prototype_id_picked)
- btn_edit.pressed.connect(_on_btn_edit)
- btn_remove.pressed.connect(_on_btn_remove)
+ %BtnAdd.icon = _EditorIcons.get_icon("Add")
+ %BtnEdit.icon = _EditorIcons.get_icon("Edit")
+ %BtnRemove.icon = _EditorIcons.get_icon("Remove")
+
+ %PrototreeViewer.prototype_activated.connect(_on_prototype_activated)
+ %BtnAdd.pressed.connect(_on_btn_add)
+ %BtnEdit.pressed.connect(_on_btn_edit)
+ %BtnRemove.pressed.connect(_on_btn_remove)
_refresh()
-func _on_prototype_id_picked(index: int) -> void:
- var prototype_id = prototype_id_filter.values[index]
- GlootUndoRedo.add_inventory_item(inventory, prototype_id)
+func _on_prototype_activated(prototype: Prototype) -> void:
+ _Undoables.undoable_action(inventory, "Add Inventory Item", func():
+ return (inventory.create_and_add_item(str(prototype.get_prototype_id())) != null)
+ )
+
+
+func _on_btn_add() -> void:
+ var prototype: Prototype = %PrototreeViewer.get_selected_prototype()
+ if prototype == null:
+ return
+ _Undoables.undoable_action(inventory, "Add Inventory Item", func():
+ return (inventory.create_and_add_item(str(prototype.get_prototype_id())) != null)
+ )
func _on_btn_edit() -> void:
var selected_item: InventoryItem = _inventory_control.get_selected_inventory_item()
- if selected_item != null:
- # Call it deferred, so that the control can clean up
- call_deferred("_select_node", selected_item)
+ if selected_item == null:
+ return
+ if _properties_editor == null:
+ _properties_editor = _PropertiesEditor.instantiate()
+ add_child(_properties_editor)
+ _properties_editor.item = selected_item
+ _properties_editor.popup_centered(_POPUP_SIZE)
func _on_btn_remove() -> void:
var selected_items: Array[InventoryItem] = _inventory_control.get_selected_inventory_items()
for selected_item in selected_items:
if selected_item != null:
- GlootUndoRedo.remove_inventory_item(inventory, selected_item)
+ _Undoables.undoable_action(inventory, "Remove Inventory Item", func():
+ return inventory.remove_item(selected_item)
+ )
static func _select_node(node: Node) -> void:
EditorInterface.get_selection().clear()
EditorInterface.get_selection().add_node(node)
EditorInterface.edit_node(node)
-
--- /dev/null
+uid://clm312t8h4uxq
-[gd_scene load_steps=3 format=3 uid="uid://c6e4cxvjdxhdo"]
+[gd_scene load_steps=9 format=3 uid="uid://c6e4cxvjdxhdo"]
-[ext_resource type="PackedScene" uid="uid://dj577duf8yjeb" path="res://addons/gloot/editor/common/choice_filter.tscn" id="1"]
[ext_resource type="Script" path="res://addons/gloot/editor/inventory_editor/inventory_editor.gd" id="2"]
+[ext_resource type="Script" path="res://addons/gloot/editor/common/proto_tree_viewer.gd" id="2_sflgi"]
+
+[sub_resource type="Image" id="Image_317m2"]
+data = {
+"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0),
+"format": "RGBA8",
+"height": 16,
+"mipmaps": false,
+"width": 16
+}
+
+[sub_resource type="ImageTexture" id="ImageTexture_fm4sg"]
+image = SubResource("Image_317m2")
+
+[sub_resource type="Image" id="Image_3bkis"]
+data = {
+"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 182, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 180, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 171, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 170, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 231, 231, 231, 21, 224, 224, 224, 234, 224, 224, 224, 234, 231, 231, 231, 21, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 85, 225, 225, 225, 85, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0),
+"format": "RGBA8",
+"height": 16,
+"mipmaps": false,
+"width": 16
+}
+
+[sub_resource type="ImageTexture" id="ImageTexture_gpbyr"]
+image = SubResource("Image_3bkis")
+
+[sub_resource type="Image" id="Image_1y8m2"]
+data = {
+"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 227, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 225, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 73, 224, 224, 224, 226, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 225, 226, 226, 226, 70, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0),
+"format": "RGBA8",
+"height": 16,
+"mipmaps": false,
+"width": 16
+}
+
+[sub_resource type="ImageTexture" id="ImageTexture_wo0ku"]
+image = SubResource("Image_1y8m2")
[node name="InventoryEditor" type="Control"]
layout_mode = 3
grow_horizontal = 2
grow_vertical = 2
-[node name="ChoiceFilter" parent="HSplitContainer" instance=ExtResource("1")]
+[node name="VBoxContainer2" type="VBoxContainer" parent="HSplitContainer"]
+layout_mode = 2
+size_flags_horizontal = 3
+
+[node name="PrototreeViewer" type="Tree" parent="HSplitContainer/VBoxContainer2"]
+unique_name_in_owner = true
+layout_mode = 2
+size_flags_horizontal = 3
+size_flags_vertical = 3
+hide_root = true
+script = ExtResource("2_sflgi")
+
+[node name="BtnAdd" type="Button" parent="HSplitContainer/VBoxContainer2"]
+unique_name_in_owner = true
layout_mode = 2
-pick_text = "Add"
-filter_text = "Filter Prototypes:"
+text = "Add"
+icon = SubResource("ImageTexture_fm4sg")
[node name="VBoxContainer" type="VBoxContainer" parent="HSplitContainer"]
layout_mode = 2
size_flags_vertical = 3
[node name="ScrollContainer" type="ScrollContainer" parent="HSplitContainer/VBoxContainer"]
+unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
layout_mode = 2
[node name="BtnEdit" type="Button" parent="HSplitContainer/VBoxContainer/HBoxContainer"]
+unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
text = "Edit"
+icon = SubResource("ImageTexture_gpbyr")
[node name="BtnRemove" type="Button" parent="HSplitContainer/VBoxContainer/HBoxContainer"]
+unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
text = "Remove"
+icon = SubResource("ImageTexture_wo0ku")
@tool
extends Control
-const EditorIcons = preload("res://addons/gloot/editor/common/editor_icons.gd")
+const _EditorIcons = preload("res://addons/gloot/editor/common/editor_icons.gd")
@onready var inventory_editor: Control = $HBoxContainer/InventoryEditor
@onready var btn_expand: Button = $HBoxContainer/BtnExpand
@onready var _window_dialog: Window = $Window
@onready var _inventory_editor: Control = $Window/MarginContainer/InventoryEditor
-var inventory: Inventory :
+var inventory: Inventory:
set(new_inventory):
inventory = new_inventory
if inventory_editor:
if inventory_editor:
inventory_editor.inventory = inventory
_apply_editor_settings()
- btn_expand.icon = EditorIcons.get_icon("DistractionFree")
+ btn_expand.icon = _EditorIcons.get_icon("DistractionFree")
btn_expand.pressed.connect(on_btn_expand)
_window_dialog.close_requested.connect(func(): _window_dialog.hide())
--- /dev/null
+uid://cg4p1lf3cmckg
-[gd_scene load_steps=3 format=3 uid="uid://bef418tvtf7h6"]
+[gd_scene load_steps=5 format=3 uid="uid://bef418tvtf7h6"]
[ext_resource type="PackedScene" uid="uid://c6e4cxvjdxhdo" path="res://addons/gloot/editor/inventory_editor/inventory_editor.tscn" id="1"]
[ext_resource type="Script" path="res://addons/gloot/editor/inventory_editor/inventory_inspector.gd" id="2"]
+[sub_resource type="Image" id="Image_1eklb"]
+data = {
+"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 4, 255, 255, 255, 4, 255, 255, 255, 4, 255, 255, 255, 4, 255, 255, 255, 3, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 123, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 127, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 225, 225, 225, 135, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 140, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 213, 232, 232, 232, 22, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 24, 224, 224, 224, 216, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 136, 224, 224, 224, 213, 224, 224, 224, 255, 224, 224, 224, 213, 232, 232, 232, 22, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 24, 224, 224, 224, 216, 224, 224, 224, 255, 224, 224, 224, 210, 224, 224, 224, 138, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 126, 255, 255, 255, 0, 232, 232, 232, 22, 224, 224, 224, 213, 224, 224, 224, 255, 226, 226, 226, 103, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 107, 224, 224, 224, 255, 224, 224, 224, 210, 230, 230, 230, 20, 255, 255, 255, 0, 225, 225, 225, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 232, 232, 232, 22, 226, 226, 226, 103, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 105, 230, 230, 230, 20, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 24, 224, 224, 224, 107, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 109, 232, 232, 232, 22, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 127, 255, 255, 255, 0, 224, 224, 224, 24, 224, 224, 224, 216, 224, 224, 224, 255, 224, 224, 224, 105, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 109, 224, 224, 224, 255, 224, 224, 224, 213, 232, 232, 232, 22, 255, 255, 255, 0, 224, 224, 224, 129, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 140, 224, 224, 224, 216, 224, 224, 224, 255, 224, 224, 224, 210, 230, 230, 230, 20, 255, 255, 255, 0, 255, 255, 255, 0, 232, 232, 232, 22, 224, 224, 224, 213, 224, 224, 224, 255, 224, 224, 224, 213, 225, 225, 225, 142, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 210, 230, 230, 230, 20, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 232, 232, 232, 22, 224, 224, 224, 213, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 138, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 142, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 225, 225, 225, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 129, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0),
+"format": "RGBA8",
+"height": 16,
+"mipmaps": false,
+"width": 16
+}
+
+[sub_resource type="ImageTexture" id="ImageTexture_jr7hk"]
+image = SubResource("Image_1eklb")
+
[node name="InventoryInspector" type="Control"]
-custom_minimum_size = Vector2(0, 200)
+custom_minimum_size = Vector2(0, 300)
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
[node name="BtnExpand" type="Button" parent="HBoxContainer"]
layout_mode = 2
+icon = SubResource("ImageTexture_jr7hk")
[node name="Window" type="Window" parent="."]
title = "Edit Inventory"
extends EditorInspectorPlugin
-const EditProtosetButton = preload("res://addons/gloot/editor/protoset_editor/edit_protoset_button.tscn")
-const InventoryInspector = preload("res://addons/gloot/editor/inventory_editor/inventory_inspector.tscn")
-const ItemSlotInspector = preload("res://addons/gloot/editor/item_slot_editor/item_slot_inspector.tscn")
-const ItemRefSlotButton = preload("res://addons/gloot/editor/item_slot_editor/item_ref_slot_button.gd")
-const EditPropertiesButton = preload("res://addons/gloot/editor/item_editor/edit_properties_button.gd")
-const EditPrototypeIdButton = preload("res://addons/gloot/editor/item_editor/edit_prototype_id_button.gd")
+const _InventoryInspector = preload("res://addons/gloot/editor/inventory_editor/inventory_inspector.tscn")
+const _ItemSlotInspector = preload("res://addons/gloot/editor/item_slot_editor/item_slot_inspector.tscn")
func _can_handle(object: Object) -> bool:
- return (object is Inventory) || \
- (object is InventoryItem) || \
- (object is ItemSlot) || \
- (object is ItemRefSlot) || \
- (object is ItemProtoset)
+ return (object is Inventory) || (object is ItemSlot)
func _parse_begin(object: Object) -> void:
+ if Engine.is_editor_hint() && object.get_class() == "EditorDebuggerRemoteObject":
+ # _parse_begin is called for a EditorDebuggerRemoteObject when inspecting
+ # a remote node and causes errors when trying to access Inventory/ItemSlot
+ # properties.
+ return
+
if object is Inventory:
- var inventory_inspector := InventoryInspector.instantiate()
+ var inventory_inspector := _InventoryInspector.instantiate()
inventory_inspector.init(object as Inventory)
add_custom_control(inventory_inspector)
if object is ItemSlot:
- var item_slot_inspector := ItemSlotInspector.instantiate()
+ var item_slot_inspector := _ItemSlotInspector.instantiate()
item_slot_inspector.init(object as ItemSlot)
add_custom_control(item_slot_inspector)
- if object is ItemProtoset:
- var edit_protoset_button := EditProtosetButton.instantiate()
- edit_protoset_button.init(object as ItemProtoset)
- add_custom_control(edit_protoset_button)
-
-
-func _parse_property(object: Object,
- type: Variant.Type,
- name: String,
- hint: PropertyHint,
- hint_string: String,
- usage: int,
- wide: bool) -> bool:
- if (object is InventoryItem) && name == "properties":
- add_property_editor(name, EditPropertiesButton.new())
- return true
- if (object is InventoryItem) && name == "prototype_id":
- add_property_editor(name, EditPrototypeIdButton.new())
- return true
- if (object is ItemRefSlot) && name == "_equipped_item":
- add_property_editor(name, ItemRefSlotButton.new())
- return true
- return false
-
--- /dev/null
+uid://bfn7j0n1qo2ym
+++ /dev/null
-extends EditorProperty
-
-const EditorIcons = preload("res://addons/gloot/editor/common/editor_icons.gd")
-const PropertiesEditor = preload("res://addons/gloot/editor/item_editor/properties_editor.tscn")
-const POPUP_SIZE = Vector2i(800, 300)
-
-var current_value: Dictionary
-var updating: bool = false
-var _btn_prototype_id: Button
-var _properties_editor: Window
-
-
-func _init():
- _properties_editor = PropertiesEditor.instantiate()
- add_child(_properties_editor)
-
- _btn_prototype_id = Button.new()
- _btn_prototype_id.text = "Edit Properties"
- _btn_prototype_id.pressed.connect(_on_btn_edit)
- _btn_prototype_id.icon = EditorIcons.get_icon("Edit")
- add_child(_btn_prototype_id)
-
-
-func _ready() -> void:
- var item: InventoryItem = get_edited_object()
- if !item:
- return
- _properties_editor.item = item
- item.properties_changed.connect(update_property)
-
- if !item.protoset:
- return
- item.protoset.changed.connect(_on_protoset_changed)
-
- _refresh_button()
-
-
-func _on_btn_edit() -> void:
- _properties_editor.popup_centered(POPUP_SIZE)
-
-
-func update_property() -> void:
- var new_value = get_edited_object()[get_edited_property()]
- if new_value == current_value:
- return
-
- updating = true
- current_value = new_value
- updating = false
-
-
-func _on_protoset_changed() -> void:
- _refresh_button()
-
-
-func _refresh_button() -> void:
- var item: InventoryItem = get_edited_object()
- if !item || !item.protoset:
- return
- _btn_prototype_id.disabled = !item.protoset.has_prototype(item.prototype_id)
-
+++ /dev/null
-extends EditorProperty
-
-
-const PrototypeIdEditor = preload("res://addons/gloot/editor/item_editor/prototype_id_editor.tscn")
-const POPUP_SIZE = Vector2i(300, 300)
-const COLOR_INVALID = Color.RED
-var current_value: String
-var updating: bool = false
-var _prototype_id_editor: Window
-var _btn_prototype_id: Button
-
-
-func _init():
- _prototype_id_editor = PrototypeIdEditor.instantiate()
- add_child(_prototype_id_editor)
-
- _btn_prototype_id = Button.new()
- _btn_prototype_id.text = "Prototype ID"
- _btn_prototype_id.pressed.connect(_on_btn_prototype_id)
- add_child(_btn_prototype_id)
-
-
-func _ready() -> void:
- var item: InventoryItem = get_edited_object()
- _prototype_id_editor.item = item
- item.prototype_id_changed.connect(_refresh_button)
- if item.protoset:
- item.protoset.changed.connect(_refresh_button)
- _refresh_button()
-
-
-func _on_btn_prototype_id() -> void:
- # TODO: Figure out how to show a popup at mouse position
- # _window_dialog.popup(Rect2i(_get_popup_at_mouse_position(POPUP_SIZE), POPUP_SIZE))
- _prototype_id_editor.popup_centered(POPUP_SIZE)
-
-
-func _get_popup_at_mouse_position(size: Vector2i) -> Vector2i:
- var global_mouse_pos: Vector2i = Vector2i(get_global_mouse_position())
- var local_mouse_pos: Vector2i = global_mouse_pos + \
- DisplayServer.window_get_position(DisplayServer.MAIN_WINDOW_ID)
-
- # Prevent the popup from positioning partially out of screen
- var screen_size: Vector2i = DisplayServer.screen_get_size(DisplayServer.SCREEN_OF_MAIN_WINDOW)
- var popup_pos: Vector2i
- popup_pos.x = clamp(local_mouse_pos.x, 0, screen_size.x - size.x)
- popup_pos.y = clamp(local_mouse_pos.y, 0, screen_size.y - size.y)
-
- return popup_pos
-
-
-func update_property() -> void:
- var new_value = get_edited_object()[get_edited_property()]
- if new_value == current_value:
- return
-
- updating = true
- current_value = new_value
- _refresh_button()
- updating = false
-
-
-func _refresh_button() -> void:
- var item: InventoryItem = get_edited_object()
- _btn_prototype_id.text = item.prototype_id
- _btn_prototype_id.disabled = false
- if item.protoset == null:
- _btn_prototype_id.disabled = true
- return
-
- if !item.protoset.has_prototype(item.prototype_id):
- _btn_prototype_id.add_theme_color_override("font_color", COLOR_INVALID)
- _btn_prototype_id.add_theme_color_override("font_color_hover", COLOR_INVALID)
- _btn_prototype_id.tooltip_text = "Invalid prototype ID!"
- else:
- _btn_prototype_id.remove_theme_color_override("font_color")
- _btn_prototype_id.remove_theme_color_override("font_color_hover")
- _btn_prototype_id.tooltip_text = ""
-
@tool
extends Window
-const GlootUndoRedo = preload("res://addons/gloot/editor/gloot_undo_redo.gd")
-const GridConstraint = preload("res://addons/gloot/core/constraints/grid_constraint.gd")
-const DictEditor = preload("res://addons/gloot/editor/common/dict_editor.tscn")
-const EditorIcons = preload("res://addons/gloot/editor/common/editor_icons.gd")
-const COLOR_OVERRIDDEN = Color.GREEN
-const COLOR_INVALID = Color.RED
-var IMMUTABLE_KEYS: Array[String] = [ItemProtoset.KEY_ID, GridConstraint.KEY_GRID_POSITION]
+const _Undoables = preload("res://addons/gloot/editor/undoables.gd")
+const _DictEditor = preload("res://addons/gloot/editor/common/dict_editor.tscn")
+const _EditorIcons = preload("res://addons/gloot/editor/common/editor_icons.gd")
+const _COLOR_OVERRIDDEN = Color.GREEN
+const _COLOR_INVALID = Color.RED
@onready var _margin_container: MarginContainer = $"MarginContainer"
@onready var _dict_editor: Control = $"MarginContainer/DictEditor"
-var item: InventoryItem = null :
+var item: InventoryItem = null:
set(new_item):
if new_item == null:
return
- assert(item == null, "Item already set!")
item = new_item
- if item.protoset:
- item.protoset.changed.connect(_refresh)
_refresh()
func _on_value_changed(key: String, new_value) -> void:
- var new_properties = item.properties.duplicate()
- new_properties[key] = new_value
-
- var item_prototype: Dictionary = item.protoset.get_prototype(item.prototype_id)
- if item_prototype.has(key) && (item_prototype[key] == new_value):
- new_properties.erase(key)
-
- if new_properties.hash() == item.properties.hash():
- return
-
- GlootUndoRedo.set_item_properties(item, new_properties)
- _refresh()
+ _Undoables.undoable_action(item, "Set Item Property", func():
+ item.set_property(key, new_value)
+ return true
+ )
+ # TODO: Figure out why this is needed
+ _refresh.call_deferred()
func _on_value_removed(key: String) -> void:
- var new_properties = item.properties.duplicate()
- new_properties.erase(key)
-
- if new_properties.hash() == item.properties.hash():
- return
-
- GlootUndoRedo.set_item_properties(item, new_properties)
+ _Undoables.undoable_action(item, "Clear Item Property", func():
+ item.clear_property(key)
+ return true
+ )
_refresh()
func _refresh() -> void:
if _dict_editor.btn_add:
- _dict_editor.btn_add.icon = EditorIcons.get_icon("Add")
+ _dict_editor.btn_add.icon = _EditorIcons.get_icon("Add")
_dict_editor.dictionary = _get_dictionary()
_dict_editor.color_map = _get_color_map()
_dict_editor.remove_button_map = _get_remove_button_map()
- _dict_editor.immutable_keys = IMMUTABLE_KEYS
_dict_editor.refresh()
if item == null:
return {}
- if !item.protoset:
+ if item.get_prototree().is_empty():
return {}
- if !item.protoset.has_prototype(item.prototype_id):
+ if !item.get_prototree().has_prototype(item.get_prototype().get_prototype_id()):
return {}
- var result: Dictionary = item.protoset.get_prototype(item.prototype_id).duplicate()
- for key in item.properties.keys():
- result[key] = item.properties[key]
+ var result: Dictionary = item.get_prototype().get_properties()
+ for key in item.get_properties():
+ result[key] = item.get_property(key)
return result
if item == null:
return {}
- if !item.protoset:
+ if item.get_prototree().is_empty():
return {}
var result: Dictionary = {}
var dictionary: Dictionary = _get_dictionary()
for key in dictionary.keys():
- if item.properties.has(key):
- result[key] = COLOR_OVERRIDDEN
- if key == ItemProtoset.KEY_ID && !item.protoset.has_prototype(dictionary[key]):
- result[key] = COLOR_INVALID
+ if item.is_property_overridden(key):
+ result[key] = _COLOR_OVERRIDDEN
return result
if item == null:
return {}
- if !item.protoset:
+ if item.get_prototree().is_empty():
return {}
var result: Dictionary = {}
var dictionary: Dictionary = _get_dictionary()
for key in dictionary.keys():
result[key] = {}
- if item.protoset.get_prototype(item.prototype_id).has(key):
+ if item.has_property(key):
result[key]["text"] = ""
- result[key]["icon"] = EditorIcons.get_icon("Reload")
+ result[key]["icon"] = _EditorIcons.get_icon("Reload")
else:
result[key]["text"] = ""
- result[key]["icon"] = EditorIcons.get_icon("Remove")
+ result[key]["icon"] = _EditorIcons.get_icon("Remove")
- result[key]["disabled"] = (not key in item.properties) or (key in IMMUTABLE_KEYS)
+ result[key]["disabled"] = not item.is_property_overridden(key)
return result
-
--- /dev/null
+uid://1taagfx52uw5
+++ /dev/null
-@tool
-extends Window
-
-const GlootUndoRedo = preload("res://addons/gloot/editor/gloot_undo_redo.gd")
-const ChoiceFilter = preload("res://addons/gloot/editor/common/choice_filter.tscn")
-const EditorIcons = preload("res://addons/gloot/editor/common/editor_icons.gd")
-const POPUP_MARGIN = 10
-
-@onready var _margin_container: MarginContainer = $"MarginContainer"
-@onready var _choice_filter: Control = $"MarginContainer/ChoiceFilter"
-var item: InventoryItem = null :
- set(new_item):
- if new_item == null:
- return
- assert(item == null, "Item already set!")
- item = new_item
- if item.protoset:
- item.protoset.changed.connect(_refresh)
- _refresh()
-
-
-func _ready() -> void:
- _choice_filter.filter_icon = EditorIcons.get_icon("Search")
- about_to_popup.connect(func(): _refresh())
- close_requested.connect(func(): hide())
- _choice_filter.choice_picked.connect(func(value_index: int): _on_choice_picked(value_index))
- hide()
-
-
-func _on_choice_picked(value_index: int) -> void:
- assert(item, "Item not set!")
- var new_prototype_id = _choice_filter.values[value_index]
- if new_prototype_id != item.prototype_id:
- GlootUndoRedo.set_item_prototype_id(item, new_prototype_id)
- hide()
-
-
-func _refresh() -> void:
- _choice_filter.values.clear()
- _choice_filter.values.append_array(_get_prototype_ids())
- _choice_filter.refresh()
-
-
-func _get_prototype_ids() -> Array:
- if item == null || !item.protoset:
- return []
-
- return item.protoset._prototypes.keys()
-
+++ /dev/null
-[gd_scene load_steps=3 format=3 uid="uid://bb341bh2pdb6u"]
-
-[ext_resource type="Script" path="res://addons/gloot/editor/item_editor/prototype_id_editor.gd" id="1_a8scy"]
-[ext_resource type="PackedScene" uid="uid://dj577duf8yjeb" path="res://addons/gloot/editor/common/choice_filter.tscn" id="1_prwl8"]
-
-[node name="PrototypeIdEditor" type="Window"]
-title = "Select Prototype ID"
-size = Vector2i(300, 300)
-visible = false
-exclusive = true
-script = ExtResource("1_a8scy")
-
-[node name="MarginContainer" type="MarginContainer" parent="."]
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-theme_override_constants/margin_left = 10
-theme_override_constants/margin_top = 10
-theme_override_constants/margin_right = 10
-theme_override_constants/margin_bottom = 10
-
-[node name="ChoiceFilter" parent="MarginContainer" instance=ExtResource("1_prwl8")]
-layout_mode = 2
-pick_text = "Select"
-filter_text = "Filter Prototypes:"
+++ /dev/null
-extends EditorProperty
-
-const GlootUndoRedo = preload("res://addons/gloot/editor/gloot_undo_redo.gd")
-
-var updating: bool = false
-var _option_button: OptionButton
-
-
-func _init():
- _option_button = OptionButton.new()
- add_child(_option_button)
- add_focusable(_option_button)
- _option_button.item_selected.connect(_on_item_selected)
-
-
-func _ready() -> void:
- var item_ref_slot: ItemRefSlot = get_edited_object()
- item_ref_slot.inventory_changed.connect(_refresh_option_button)
- item_ref_slot.item_equipped.connect(_refresh_option_button)
- item_ref_slot.cleared.connect(_refresh_option_button)
- _refresh_option_button()
-
-
-func _refresh_option_button() -> void:
- _clear_option_button()
- _populate_option_button()
-
-
-func _clear_option_button() -> void:
- _option_button.clear()
- _option_button.add_item("None")
- _option_button.set_item_metadata(0, null)
- _option_button.select(0)
-
-
-func _populate_option_button() -> void:
- if !get_edited_object():
- return
-
- var item_ref_slot: ItemRefSlot = get_edited_object()
- if !item_ref_slot.inventory:
- return
-
- var equipped_item_index := 0
- for item in item_ref_slot.inventory.get_items():
- _option_button.add_icon_item(item.get_texture(), item.get_title())
- var option_item_index = _option_button.get_item_count() - 1
- _option_button.set_item_metadata(option_item_index, item)
- if item == item_ref_slot.get_item():
- equipped_item_index = option_item_index
-
- _option_button.select(equipped_item_index)
-
-
-func _on_item_selected(item_index: int) -> void:
- if !get_edited_object() || updating:
- return
-
- updating = true
- var item_ref_slot: ItemRefSlot = get_edited_object()
- var selected_item: InventoryItem = _option_button.get_item_metadata(item_index)
- if item_ref_slot.get_item() != selected_item:
- if selected_item == null:
- GlootUndoRedo.clear_item_slot(item_ref_slot)
- else:
- GlootUndoRedo.equip_item_in_item_slot(item_ref_slot, selected_item)
- updating = false
@tool
extends Control
-const GlootUndoRedo = preload("res://addons/gloot/editor/gloot_undo_redo.gd")
-const EditorIcons = preload("res://addons/gloot/editor/common/editor_icons.gd")
+const _Undoables = preload("res://addons/gloot/editor/undoables.gd")
+const _EditorIcons = preload("res://addons/gloot/editor/common/editor_icons.gd")
+const _PropertiesEditor = preload("res://addons/gloot/editor/item_editor/properties_editor.tscn")
+const _POPUP_SIZE = Vector2i(800, 300)
-@onready var hsplit_container = $HSplitContainer
-@onready var prototype_id_filter = $HSplitContainer/ChoiceFilter
-@onready var btn_edit = $HSplitContainer/VBoxContainer/HBoxContainer/BtnEdit
-@onready var btn_clear = $HSplitContainer/VBoxContainer/HBoxContainer/BtnClear
-@onready var ctrl_item_slot = $HSplitContainer/VBoxContainer/CtrlItemSlot
-
-var item_slot: ItemSlot :
+var item_slot: ItemSlot:
set(new_item_slot):
disconnect_item_slot_signals()
item_slot = new_item_slot
- ctrl_item_slot.item_slot = item_slot
+ %CtrlItemSlot.item_slot = item_slot
connect_item_slot_signals()
_refresh()
+var _properties_editor: Window
+
func connect_item_slot_signals():
if !item_slot:
item_slot.item_equipped.connect(_refresh)
item_slot.cleared.connect(_refresh)
- if !item_slot.item_protoset:
+ if !item_slot.protoset:
return
- item_slot.item_protoset.changed.connect(_refresh)
+ item_slot.protoset.changed.connect(_refresh)
item_slot.protoset_changed.connect(_refresh)
item_slot.item_equipped.disconnect(_refresh)
item_slot.cleared.disconnect(_refresh)
- if !item_slot.item_protoset:
+ if !item_slot.protoset:
return
- item_slot.item_protoset.changed.disconnect(_refresh)
+ item_slot.protoset.changed.disconnect(_refresh)
item_slot.protoset_changed.disconnect(_refresh)
func _refresh() -> void:
- if !is_inside_tree() || item_slot == null || item_slot.item_protoset == null:
+ if !is_inside_tree() || item_slot == null || item_slot.protoset == null:
return
- prototype_id_filter.set_values(item_slot.item_protoset._prototypes.keys())
+ %PrototreeViewer.protoset = item_slot.protoset
func _ready() -> void:
_apply_editor_settings()
- prototype_id_filter.pick_icon = EditorIcons.get_icon("Add")
- prototype_id_filter.filter_icon = EditorIcons.get_icon("Search")
- btn_edit.icon = EditorIcons.get_icon("Edit")
- btn_clear.icon = EditorIcons.get_icon("Remove")
+ %BtnAdd.icon = _EditorIcons.get_icon("Add")
+ %BtnEdit.icon = _EditorIcons.get_icon("Edit")
+ %BtnClear.icon = _EditorIcons.get_icon("Remove")
- prototype_id_filter.choice_picked.connect(_on_prototype_id_picked)
- btn_edit.pressed.connect(_on_btn_edit)
- btn_clear.pressed.connect(_on_btn_clear)
+ %PrototreeViewer.prototype_activated.connect(_on_prototype_activated)
+ %BtnAdd.pressed.connect(_on_btn_add)
+ %BtnEdit.pressed.connect(_on_btn_edit)
+ %BtnClear.pressed.connect(_on_btn_clear)
- ctrl_item_slot.item_slot = item_slot
- _refresh()
+ %CtrlItemSlot.item_slot = item_slot
func _apply_editor_settings() -> void:
custom_minimum_size.y = control_height
-func _on_prototype_id_picked(index: int) -> void:
- var prototype_id = prototype_id_filter.values[index]
- var item := InventoryItem.new()
- if item_slot.get_item() != null:
- item_slot.get_item().queue_free()
- item.protoset = item_slot.item_protoset
- item.prototype_id = prototype_id
- GlootUndoRedo.equip_item_in_item_slot(item_slot, item)
+func _on_prototype_activated(prototype: Prototype) -> void:
+ var item := InventoryItem.new(item_slot.protoset, prototype.get_prototype_id())
+ _Undoables.undoable_action(item_slot, "Equip item", func():
+ return item_slot.equip(item)
+ )
+
+
+func _on_btn_add() -> void:
+ var prototype: Prototype = %PrototreeViewer.get_selected_prototype()
+ if prototype == null:
+ return
+ var item := InventoryItem.new(item_slot.protoset, prototype.get_prototype_id())
+ _Undoables.undoable_action(item_slot, "Equip item", func():
+ return item_slot.equip(item)
+ )
func _on_btn_edit() -> void:
- if item_slot.get_item() != null:
- # Call it deferred, so that the control can clean up
- call_deferred("_select_node", item_slot.get_item())
+ if item_slot.get_item() == null:
+ return
+ if _properties_editor == null:
+ _properties_editor = _PropertiesEditor.instantiate()
+ add_child(_properties_editor)
+ _properties_editor.item = item_slot.get_item()
+ _properties_editor.popup_centered(_POPUP_SIZE)
func _on_btn_clear() -> void:
if item_slot.get_item() != null:
- item_slot.get_item().queue_free()
- GlootUndoRedo.clear_item_slot(item_slot)
+ _Undoables.undoable_action(item_slot, "Clear slot", func():
+ return item_slot.clear()
+ )
static func _select_node(node: Node) -> void:
EditorInterface.get_selection().clear()
EditorInterface.get_selection().add_node(node)
EditorInterface.edit_node(node)
-
--- /dev/null
+uid://uepjmhric6qw
-[gd_scene load_steps=12 format=3 uid="uid://bgs0xwufm4k6k"]
+[gd_scene load_steps=10 format=3 uid="uid://bgs0xwufm4k6k"]
[ext_resource type="Script" path="res://addons/gloot/editor/item_slot_editor/item_slot_editor.gd" id="1_d7a2m"]
-[ext_resource type="PackedScene" uid="uid://dj577duf8yjeb" path="res://addons/gloot/editor/common/choice_filter.tscn" id="2_lcnj8"]
-[ext_resource type="Script" path="res://addons/gloot/ui/ctrl_item_slot.gd" id="3_421wi"]
+[ext_resource type="Script" path="res://addons/gloot/editor/common/proto_tree_viewer.gd" id="2_ilkw0"]
+[ext_resource type="Script" path="res://addons/gloot/ui/ctrl_item_slot.gd" id="3_6ewrx"]
-[sub_resource type="Image" id="Image_ktvjb"]
+[sub_resource type="Image" id="Image_jy8n2"]
data = {
"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0),
"format": "RGBA8",
"width": 16
}
-[sub_resource type="ImageTexture" id="ImageTexture_t45ni"]
-image = SubResource("Image_ktvjb")
+[sub_resource type="ImageTexture" id="ImageTexture_d7qa0"]
+image = SubResource("Image_jy8n2")
-[sub_resource type="Image" id="Image_rhg3a"]
-data = {
-"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 68, 224, 224, 224, 184, 224, 224, 224, 240, 224, 224, 224, 232, 224, 224, 224, 186, 227, 227, 227, 62, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 129, 224, 224, 224, 254, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 122, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 68, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 123, 224, 224, 224, 32, 224, 224, 224, 33, 225, 225, 225, 125, 224, 224, 224, 254, 224, 224, 224, 254, 226, 226, 226, 69, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 184, 224, 224, 224, 255, 224, 224, 224, 123, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 125, 224, 224, 224, 255, 225, 225, 225, 174, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 240, 224, 224, 224, 255, 231, 231, 231, 31, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 226, 226, 226, 35, 224, 224, 224, 255, 224, 224, 224, 233, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 232, 224, 224, 224, 255, 224, 224, 224, 32, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 228, 228, 228, 37, 224, 224, 224, 255, 224, 224, 224, 228, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 186, 224, 224, 224, 255, 224, 224, 224, 123, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 130, 224, 224, 224, 255, 224, 224, 224, 173, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 227, 227, 227, 62, 224, 224, 224, 255, 224, 224, 224, 254, 225, 225, 225, 126, 225, 225, 225, 34, 227, 227, 227, 36, 224, 224, 224, 131, 224, 224, 224, 255, 224, 224, 224, 255, 226, 226, 226, 77, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 122, 224, 224, 224, 254, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 210, 231, 231, 231, 21, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 226, 226, 226, 69, 225, 225, 225, 174, 224, 224, 224, 233, 224, 224, 224, 228, 224, 224, 224, 173, 226, 226, 226, 77, 224, 224, 224, 210, 224, 224, 224, 255, 224, 224, 224, 210, 231, 231, 231, 21, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 231, 231, 231, 21, 224, 224, 224, 210, 224, 224, 224, 255, 224, 224, 224, 210, 231, 231, 231, 21, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 231, 231, 231, 21, 224, 224, 224, 210, 224, 224, 224, 255, 224, 224, 224, 210, 231, 231, 231, 21, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 231, 231, 231, 21, 224, 224, 224, 210, 224, 224, 224, 227, 225, 225, 225, 34, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 231, 231, 231, 21, 225, 225, 225, 34, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0),
-"format": "RGBA8",
-"height": 16,
-"mipmaps": false,
-"width": 16
-}
-
-[sub_resource type="ImageTexture" id="ImageTexture_3hnnf"]
-image = SubResource("Image_rhg3a")
-
-[sub_resource type="Image" id="Image_8ww1c"]
+[sub_resource type="Image" id="Image_scp5p"]
data = {
"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 182, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 180, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 171, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 170, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 231, 231, 231, 21, 224, 224, 224, 234, 224, 224, 224, 234, 231, 231, 231, 21, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 85, 225, 225, 225, 85, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0),
"format": "RGBA8",
"width": 16
}
-[sub_resource type="ImageTexture" id="ImageTexture_yqex5"]
-image = SubResource("Image_8ww1c")
+[sub_resource type="ImageTexture" id="ImageTexture_pue5h"]
+image = SubResource("Image_scp5p")
-[sub_resource type="Image" id="Image_240jw"]
+[sub_resource type="Image" id="Image_v1pv7"]
data = {
"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 227, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 225, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 73, 224, 224, 224, 226, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 225, 226, 226, 226, 70, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0),
"format": "RGBA8",
"width": 16
}
-[sub_resource type="ImageTexture" id="ImageTexture_ip6wh"]
-image = SubResource("Image_240jw")
+[sub_resource type="ImageTexture" id="ImageTexture_srjiv"]
+image = SubResource("Image_v1pv7")
[node name="ItemSlotEditor" type="Control"]
-custom_minimum_size = Vector2(0, 200)
+custom_minimum_size = Vector2(0, 300)
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
grow_horizontal = 2
grow_vertical = 2
-[node name="ChoiceFilter" parent="HSplitContainer" instance=ExtResource("2_lcnj8")]
+[node name="VBoxContainer2" type="VBoxContainer" parent="HSplitContainer"]
+layout_mode = 2
+size_flags_horizontal = 3
+
+[node name="PrototreeViewer" type="Tree" parent="HSplitContainer/VBoxContainer2"]
+unique_name_in_owner = true
+layout_mode = 2
+size_flags_horizontal = 3
+size_flags_vertical = 3
+hide_root = true
+script = ExtResource("2_ilkw0")
+
+[node name="BtnAdd" type="Button" parent="HSplitContainer/VBoxContainer2"]
+unique_name_in_owner = true
layout_mode = 2
-pick_text = "Equip"
-pick_icon = SubResource("ImageTexture_t45ni")
-filter_text = "Filter Prototypes:"
-filter_icon = SubResource("ImageTexture_3hnnf")
+text = "Add"
+icon = SubResource("ImageTexture_d7qa0")
[node name="VBoxContainer" type="VBoxContainer" parent="HSplitContainer"]
layout_mode = 2
size_flags_vertical = 3
[node name="CtrlItemSlot" type="Control" parent="HSplitContainer/VBoxContainer"]
-custom_minimum_size = Vector2(32, 32)
+unique_name_in_owner = true
layout_mode = 2
size_flags_vertical = 3
-script = ExtResource("3_421wi")
+script = ExtResource("3_6ewrx")
+icon_stretch_mode = 5
[node name="HBoxContainer" type="HBoxContainer" parent="HSplitContainer/VBoxContainer"]
layout_mode = 2
[node name="BtnEdit" type="Button" parent="HSplitContainer/VBoxContainer/HBoxContainer"]
+unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
text = "Edit"
-icon = SubResource("ImageTexture_yqex5")
+icon = SubResource("ImageTexture_pue5h")
[node name="BtnClear" type="Button" parent="HSplitContainer/VBoxContainer/HBoxContainer"]
+unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
text = "Clear"
-icon = SubResource("ImageTexture_ip6wh")
+icon = SubResource("ImageTexture_srjiv")
@tool
extends Control
-const EditorIcons = preload("res://addons/gloot/editor/common/editor_icons.gd")
+const _EditorIcons = preload("res://addons/gloot/editor/common/editor_icons.gd")
@onready var item_slot_editor: Control = $HBoxContainer/ItemSlotEditor
@onready var btn_expand: Button = $HBoxContainer/BtnExpand
@onready var _window_dialog: Window = $Window
@onready var _item_slot_editor: Control = $Window/MarginContainer/ItemSlotEditor
-var item_slot: ItemSlot :
+var item_slot: ItemSlot:
set(new_item_slot):
item_slot = new_item_slot
if item_slot_editor:
if item_slot_editor:
item_slot_editor.item_slot = item_slot
_apply_editor_settings()
- btn_expand.icon = EditorIcons.get_icon("DistractionFree")
+ btn_expand.icon = _EditorIcons.get_icon("DistractionFree")
btn_expand.pressed.connect(on_btn_expand)
_window_dialog.close_requested.connect(func(): _window_dialog.hide())
--- /dev/null
+uid://taqvou1w60nm
[ext_resource type="Script" path="res://addons/gloot/editor/item_slot_editor/item_slot_inspector.gd" id="1_4gsgr"]
[ext_resource type="PackedScene" uid="uid://bgs0xwufm4k6k" path="res://addons/gloot/editor/item_slot_editor/item_slot_editor.tscn" id="2_ysqy6"]
-[sub_resource type="Image" id="Image_ump51"]
+[sub_resource type="Image" id="Image_1eklb"]
data = {
"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 4, 255, 255, 255, 4, 255, 255, 255, 4, 255, 255, 255, 4, 255, 255, 255, 3, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 123, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 127, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 225, 225, 225, 135, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 140, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 213, 232, 232, 232, 22, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 24, 224, 224, 224, 216, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 136, 224, 224, 224, 213, 224, 224, 224, 255, 224, 224, 224, 213, 232, 232, 232, 22, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 24, 224, 224, 224, 216, 224, 224, 224, 255, 224, 224, 224, 210, 224, 224, 224, 138, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 126, 255, 255, 255, 0, 232, 232, 232, 22, 224, 224, 224, 213, 224, 224, 224, 255, 226, 226, 226, 103, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 107, 224, 224, 224, 255, 224, 224, 224, 210, 230, 230, 230, 20, 255, 255, 255, 0, 225, 225, 225, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 232, 232, 232, 22, 226, 226, 226, 103, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 105, 230, 230, 230, 20, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 24, 224, 224, 224, 107, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 109, 232, 232, 232, 22, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 127, 255, 255, 255, 0, 224, 224, 224, 24, 224, 224, 224, 216, 224, 224, 224, 255, 224, 224, 224, 105, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 109, 224, 224, 224, 255, 224, 224, 224, 213, 232, 232, 232, 22, 255, 255, 255, 0, 224, 224, 224, 129, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 140, 224, 224, 224, 216, 224, 224, 224, 255, 224, 224, 224, 210, 230, 230, 230, 20, 255, 255, 255, 0, 255, 255, 255, 0, 232, 232, 232, 22, 224, 224, 224, 213, 224, 224, 224, 255, 224, 224, 224, 213, 225, 225, 225, 142, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 210, 230, 230, 230, 20, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 232, 232, 232, 22, 224, 224, 224, 213, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 138, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 142, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 225, 225, 225, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 129, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0),
"format": "RGBA8",
"width": 16
}
-[sub_resource type="ImageTexture" id="ImageTexture_eojh7"]
-image = SubResource("Image_ump51")
+[sub_resource type="ImageTexture" id="ImageTexture_jr7hk"]
+image = SubResource("Image_1eklb")
[node name="ItemSlotInspector" type="Control"]
-custom_minimum_size = Vector2(0, 200)
+custom_minimum_size = Vector2(0, 300)
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
[node name="BtnExpand" type="Button" parent="HBoxContainer"]
layout_mode = 2
-icon = SubResource("ImageTexture_eojh7")
+icon = SubResource("ImageTexture_jr7hk")
[node name="Window" type="Window" parent="."]
title = "Edit Item Slot"
+++ /dev/null
-@tool
-extends Button
-
-const EditorIcons = preload("res://addons/gloot/editor/common/editor_icons.gd")
-
-@onready var window_dialog: Window = $"%Window"
-@onready var protoset_editor: Control = $"%ProtosetEditor"
-
-var protoset: ItemProtoset :
- set(new_protoset):
- protoset = new_protoset
- if protoset_editor:
- protoset_editor.protoset = protoset
-
-
-func init(protoset_: ItemProtoset) -> void:
- protoset = protoset_
-
-
-func _ready() -> void:
- icon = EditorIcons.get_icon("Edit")
- window_dialog.close_requested.connect(func(): protoset.notify_property_list_changed())
- protoset_editor.protoset = protoset
- pressed.connect(func(): window_dialog.popup_centered(window_dialog.size))
-
+++ /dev/null
-[gd_scene load_steps=5 format=3 uid="uid://bjme7iuv3j6yb"]
-
-[ext_resource type="PackedScene" uid="uid://cyj0avrwjowl" path="res://addons/gloot/editor/protoset_editor/protoset_editor.tscn" id="1"]
-[ext_resource type="Script" path="res://addons/gloot/editor/protoset_editor/edit_protoset_button.gd" id="2"]
-
-[sub_resource type="Image" id="Image_tnk37"]
-data = {
-"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 182, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 180, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 171, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 170, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 231, 231, 231, 21, 224, 224, 224, 234, 224, 224, 224, 234, 231, 231, 231, 21, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 85, 225, 225, 225, 85, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0),
-"format": "RGBA8",
-"height": 16,
-"mipmaps": false,
-"width": 16
-}
-
-[sub_resource type="ImageTexture" id="ImageTexture_18gso"]
-image = SubResource("Image_tnk37")
-
-[node name="EditProtosetButton" type="Button"]
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-text = "Edit Protoset"
-icon = SubResource("ImageTexture_18gso")
-script = ExtResource("2")
-
-[node name="Window" type="Window" parent="."]
-unique_name_in_owner = true
-title = "Edit Protoset"
-size = Vector2i(1000, 600)
-visible = false
-exclusive = true
-min_size = Vector2i(800, 200)
-
-[node name="ProtosetEditor" parent="Window" instance=ExtResource("1")]
-unique_name_in_owner = true
+++ /dev/null
-@tool
-extends Control
-
-const GlootUndoRedo = preload("res://addons/gloot/editor/gloot_undo_redo.gd")
-const EditorIcons = preload("res://addons/gloot/editor/common/editor_icons.gd")
-
-@onready var prototype_filter = $"%PrototypeFilter"
-@onready var property_editor = $"%PropertyEditor"
-@onready var txt_prototype_id = $"%TxtPrototypeName"
-@onready var btn_add_prototype = $"%BtnAddPrototype"
-@onready var btn_duplicate_prototype = $"%BtnDuplicatePrototype"
-@onready var btn_remove_prototype = $"%BtnRemovePrototype"
-@onready var btn_rename_prototype = $"%BtnRenamePrototype"
-
-var protoset: ItemProtoset :
- set(new_protoset):
- protoset = new_protoset
- if protoset:
- protoset.changed.connect(_on_protoset_changed)
- _refresh()
-var selected_prototype_id: String = ""
-
-
-func _ready() -> void:
- prototype_filter.choice_selected.connect(_on_prototype_selected)
- property_editor.value_changed.connect(_on_property_changed)
- property_editor.value_removed.connect(_on_property_removed)
- txt_prototype_id.text_changed.connect(_on_prototype_id_changed)
- txt_prototype_id.text_submitted.connect(_on_prototype_id_entered)
- btn_add_prototype.pressed.connect(_on_btn_add_prototype)
- btn_duplicate_prototype.pressed.connect(_on_btn_duplicate_prototype)
- btn_rename_prototype.pressed.connect(_on_btn_rename_prototype)
- btn_remove_prototype.pressed.connect(_on_btn_remove_prototype)
-
- btn_add_prototype.icon = EditorIcons.get_icon("Add")
- btn_duplicate_prototype.icon = EditorIcons.get_icon("Duplicate")
- btn_rename_prototype.icon = EditorIcons.get_icon("Edit")
- btn_remove_prototype.icon = EditorIcons.get_icon("Remove")
- prototype_filter.filter_icon = EditorIcons.get_icon("Search")
- _refresh()
-
-
-func _refresh() -> void:
- if !visible:
- return
-
- _clear()
- _populate()
- _refresh_btn_add_prototype()
- _refresh_btn_rename_prototype()
- _refresh_btn_remove_prototype()
- _refresh_btn_duplicate_prototype()
- _inspect_prototype_id(selected_prototype_id)
-
-
-func _clear() -> void:
- prototype_filter.values.clear()
- property_editor.dictionary.clear()
- property_editor.refresh()
-
-
-func _populate() -> void:
- if protoset:
- # TODO: Avoid accessing "private" members (_prototypes)
- prototype_filter.set_values(protoset._prototypes.keys().duplicate())
-
-
-func _refresh_btn_add_prototype() -> void:
- btn_add_prototype.disabled = txt_prototype_id.text.is_empty() ||\
- protoset.has_prototype(txt_prototype_id.text)
-
-
-func _refresh_btn_rename_prototype() -> void:
- btn_rename_prototype.disabled = txt_prototype_id.text.is_empty() ||\
- protoset.has_prototype(txt_prototype_id.text)
-
-
-func _refresh_btn_remove_prototype() -> void:
- btn_remove_prototype.disabled = prototype_filter.get_selected_text().is_empty()
-
-
-func _refresh_btn_duplicate_prototype() -> void:
- btn_duplicate_prototype.disabled = prototype_filter.get_selected_text().is_empty()
-
-
-func _on_protoset_changed() -> void:
- _refresh()
-
-
-func _on_prototype_selected(index: int) -> void:
- selected_prototype_id = prototype_filter.values[index]
- _inspect_prototype_id(selected_prototype_id)
- _refresh_btn_remove_prototype()
- _refresh_btn_duplicate_prototype()
-
-
-func _inspect_prototype_id(prototype_id: String) -> void:
- if !protoset || !protoset.has_prototype(prototype_id):
- return
-
- var prototype: Dictionary = protoset.get_prototype(prototype_id).duplicate()
-
- property_editor.dictionary = prototype
- property_editor.immutable_keys = [ItemProtoset.KEY_ID] as Array[String]
- property_editor.remove_button_map = {}
-
- for property_name in prototype.keys():
- property_editor.set_remove_button_config(property_name, {
- "text": "",
- "disabled": property_name == ItemProtoset.KEY_ID,
- "icon": EditorIcons.get_icon("Remove"),
- })
-
-
-func _on_property_changed(property_name: String, new_value) -> void:
- if selected_prototype_id.is_empty():
- return
- var new_properties = protoset.get_prototype(selected_prototype_id).duplicate()
- new_properties[property_name] = new_value
-
- if new_properties.hash() == protoset.get_prototype(selected_prototype_id).hash():
- return
-
- GlootUndoRedo.set_prototype_properties(protoset, selected_prototype_id, new_properties)
-
-
-func _on_property_removed(property_name: String) -> void:
- if selected_prototype_id.is_empty():
- return
- var new_properties = protoset.get_prototype(selected_prototype_id).duplicate()
- new_properties.erase(property_name)
-
- GlootUndoRedo.set_prototype_properties(protoset, selected_prototype_id, new_properties)
-
-
-func _on_prototype_id_changed(_prototype_id: String) -> void:
- _refresh_btn_add_prototype()
- _refresh_btn_rename_prototype()
-
-
-func _on_prototype_id_entered(prototype_id: String) -> void:
- _add_prototype_id(prototype_id)
-
-
-func _on_btn_add_prototype() -> void:
- _add_prototype_id(txt_prototype_id.text)
-
-
-func _on_btn_duplicate_prototype() -> void:
- GlootUndoRedo.duplicate_prototype(protoset, selected_prototype_id)
-
-
-func _on_btn_rename_prototype() -> void:
- if selected_prototype_id.is_empty():
- return
-
- GlootUndoRedo.rename_prototype(protoset,
- selected_prototype_id,
- txt_prototype_id.text)
- txt_prototype_id.text = ""
-
-
-func _add_prototype_id(prototype_id: String) -> void:
- GlootUndoRedo.add_prototype(protoset, prototype_id)
- txt_prototype_id.text = ""
-
-
-func _on_btn_remove_prototype() -> void:
- if selected_prototype_id.is_empty():
- return
-
- var prototype_id = selected_prototype_id
- if !prototype_id.is_empty():
- GlootUndoRedo.remove_prototype(protoset, prototype_id)
+++ /dev/null
-[gd_scene load_steps=14 format=3 uid="uid://cyj0avrwjowl"]
-
-[ext_resource type="PackedScene" uid="uid://dj577duf8yjeb" path="res://addons/gloot/editor/common/choice_filter.tscn" id="1"]
-[ext_resource type="PackedScene" uid="uid://digtudobrw3xb" path="res://addons/gloot/editor/common/dict_editor.tscn" id="2"]
-[ext_resource type="Script" path="res://addons/gloot/editor/protoset_editor/protoset_editor.gd" id="3"]
-
-[sub_resource type="Image" id="Image_3d3lf"]
-data = {
-"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 68, 224, 224, 224, 184, 224, 224, 224, 240, 224, 224, 224, 232, 224, 224, 224, 186, 227, 227, 227, 62, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 129, 224, 224, 224, 254, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 122, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 68, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 123, 224, 224, 224, 32, 224, 224, 224, 33, 225, 225, 225, 125, 224, 224, 224, 254, 224, 224, 224, 254, 226, 226, 226, 69, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 184, 224, 224, 224, 255, 224, 224, 224, 123, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 125, 224, 224, 224, 255, 225, 225, 225, 174, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 240, 224, 224, 224, 255, 231, 231, 231, 31, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 226, 226, 226, 35, 224, 224, 224, 255, 224, 224, 224, 233, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 232, 224, 224, 224, 255, 224, 224, 224, 32, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 228, 228, 228, 37, 224, 224, 224, 255, 224, 224, 224, 228, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 186, 224, 224, 224, 255, 224, 224, 224, 123, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 130, 224, 224, 224, 255, 224, 224, 224, 173, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 227, 227, 227, 62, 224, 224, 224, 255, 224, 224, 224, 254, 225, 225, 225, 126, 225, 225, 225, 34, 227, 227, 227, 36, 224, 224, 224, 131, 224, 224, 224, 255, 224, 224, 224, 255, 226, 226, 226, 77, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 122, 224, 224, 224, 254, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 210, 231, 231, 231, 21, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 226, 226, 226, 69, 225, 225, 225, 174, 224, 224, 224, 233, 224, 224, 224, 228, 224, 224, 224, 173, 226, 226, 226, 77, 224, 224, 224, 210, 224, 224, 224, 255, 224, 224, 224, 210, 231, 231, 231, 21, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 231, 231, 231, 21, 224, 224, 224, 210, 224, 224, 224, 255, 224, 224, 224, 210, 231, 231, 231, 21, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 231, 231, 231, 21, 224, 224, 224, 210, 224, 224, 224, 255, 224, 224, 224, 210, 231, 231, 231, 21, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 231, 231, 231, 21, 224, 224, 224, 210, 224, 224, 224, 227, 225, 225, 225, 34, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 231, 231, 231, 21, 225, 225, 225, 34, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0),
-"format": "RGBA8",
-"height": 16,
-"mipmaps": false,
-"width": 16
-}
-
-[sub_resource type="ImageTexture" id="ImageTexture_ooqbn"]
-image = SubResource("Image_3d3lf")
-
-[sub_resource type="Image" id="Image_7dqyh"]
-data = {
-"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0),
-"format": "RGBA8",
-"height": 16,
-"mipmaps": false,
-"width": 16
-}
-
-[sub_resource type="ImageTexture" id="ImageTexture_dehry"]
-image = SubResource("Image_7dqyh")
-
-[sub_resource type="Image" id="Image_nsl4i"]
-data = {
-"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 225, 225, 225, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 225, 225, 225, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 225, 225, 225, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 225, 225, 225, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0),
-"format": "RGBA8",
-"height": 16,
-"mipmaps": false,
-"width": 16
-}
-
-[sub_resource type="ImageTexture" id="ImageTexture_cfl22"]
-image = SubResource("Image_nsl4i")
-
-[sub_resource type="Image" id="Image_o82dw"]
-data = {
-"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 182, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 180, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 171, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 170, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 231, 231, 231, 21, 224, 224, 224, 234, 224, 224, 224, 234, 231, 231, 231, 21, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 85, 225, 225, 225, 85, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0),
-"format": "RGBA8",
-"height": 16,
-"mipmaps": false,
-"width": 16
-}
-
-[sub_resource type="ImageTexture" id="ImageTexture_qoier"]
-image = SubResource("Image_o82dw")
-
-[sub_resource type="Image" id="Image_ey4cw"]
-data = {
-"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 227, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 225, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 73, 224, 224, 224, 226, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 225, 226, 226, 226, 70, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0),
-"format": "RGBA8",
-"height": 16,
-"mipmaps": false,
-"width": 16
-}
-
-[sub_resource type="ImageTexture" id="ImageTexture_i8glk"]
-image = SubResource("Image_ey4cw")
-
-[node name="ProtosetEditor" type="Control"]
-layout_mode = 3
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-script = ExtResource("3")
-
-[node name="Gui" type="HSplitContainer" parent="."]
-layout_mode = 0
-anchor_right = 1.0
-anchor_bottom = 1.0
-offset_left = 5.0
-offset_top = 5.0
-offset_right = -5.0
-offset_bottom = -5.0
-size_flags_horizontal = 3
-size_flags_vertical = 3
-
-[node name="VBoxContainer" type="VBoxContainer" parent="Gui"]
-layout_mode = 2
-size_flags_horizontal = 3
-size_flags_vertical = 3
-
-[node name="Label" type="Label" parent="Gui/VBoxContainer"]
-layout_mode = 2
-text = "Prototypes"
-
-[node name="PrototypeFilter" parent="Gui/VBoxContainer" instance=ExtResource("1")]
-unique_name_in_owner = true
-layout_mode = 2
-pick_button_visible = false
-filter_text = "Prototype Filter:"
-filter_icon = SubResource("ImageTexture_ooqbn")
-
-[node name="HBoxContainer2" type="HBoxContainer" parent="Gui/VBoxContainer"]
-layout_mode = 2
-
-[node name="TxtPrototypeName" type="LineEdit" parent="Gui/VBoxContainer/HBoxContainer2"]
-unique_name_in_owner = true
-layout_mode = 2
-size_flags_horizontal = 3
-tooltip_text = "Prototype ID"
-
-[node name="BtnAddPrototype" type="Button" parent="Gui/VBoxContainer/HBoxContainer2"]
-unique_name_in_owner = true
-layout_mode = 2
-tooltip_text = "Add a new prototype with the entered ID"
-disabled = true
-text = "Add"
-icon = SubResource("ImageTexture_dehry")
-
-[node name="BtnDuplicatePrototype" type="Button" parent="Gui/VBoxContainer/HBoxContainer2"]
-unique_name_in_owner = true
-layout_mode = 2
-tooltip_text = "Duplicate the selected prototype"
-disabled = true
-text = "Duplicate"
-icon = SubResource("ImageTexture_cfl22")
-
-[node name="BtnRenamePrototype" type="Button" parent="Gui/VBoxContainer/HBoxContainer2"]
-unique_name_in_owner = true
-layout_mode = 2
-tooltip_text = "Rename the selected prototype"
-disabled = true
-text = "Rename"
-icon = SubResource("ImageTexture_qoier")
-
-[node name="BtnRemovePrototype" type="Button" parent="Gui/VBoxContainer/HBoxContainer2"]
-unique_name_in_owner = true
-layout_mode = 2
-tooltip_text = "Remove the selected prototype"
-disabled = true
-text = "Remove"
-icon = SubResource("ImageTexture_i8glk")
-
-[node name="VBoxContainer2" type="VBoxContainer" parent="Gui"]
-layout_mode = 2
-size_flags_horizontal = 3
-
-[node name="Label" type="Label" parent="Gui/VBoxContainer2"]
-layout_mode = 2
-text = "Properties"
-
-[node name="PropertyEditor" parent="Gui/VBoxContainer2" instance=ExtResource("2")]
-unique_name_in_owner = true
-layout_mode = 2
-dictionary = {}
--- /dev/null
+extends Object
+
+const _Undoables = preload("res://addons/gloot/editor/undoables.gd")
+
+
+static func _get_undo_redo_manager() -> EditorUndoRedoManager:
+ if Engine.is_editor_hint():
+ var Gloot = load("res://addons/gloot/gloot.gd")
+ if Gloot.instance() == null:
+ return null
+ var undo_redo_manager = Gloot.instance().get_undo_redo()
+ if undo_redo_manager == null:
+ return null
+ return undo_redo_manager
+ else:
+ return null
+
+
+static func _undoable_action_impl(objects: Array, action_name: String, callable: Callable) -> bool:
+ var undo_redo_manager = _get_undo_redo_manager()
+ if undo_redo_manager == null:
+ return callable.call()
+
+ var old_states := _serialize_objects(objects)
+ var result: bool = callable.call()
+ if !result:
+ return false
+ var new_states := _serialize_objects(objects)
+
+ undo_redo_manager.create_action(action_name)
+ undo_redo_manager.add_do_method(_Undoables, "_deserialize_objects", objects, new_states)
+ undo_redo_manager.add_undo_method(_Undoables, "_deserialize_objects", objects, old_states)
+ undo_redo_manager.commit_action()
+
+ return true
+
+
+static func _deserialize_objects(objects: Array, object_data: Array[Dictionary]) -> void:
+ assert(objects.size() == object_data.size())
+ for i in range(objects.size()):
+ objects[i].deserialize(object_data[i])
+
+
+static func _serialize_objects(objects: Array) -> Array[Dictionary]:
+ var result: Array[Dictionary]
+ for object in objects:
+ result.push_back(object.serialize())
+ return result
+
+
+static func undoable_action(object: Variant, action_name: String, callable: Callable) -> bool:
+ if typeof(object) == TYPE_ARRAY:
+ return _undoable_action_impl(object, action_name, callable)
+ return _undoable_action_impl([object], action_name, callable)
--- /dev/null
+uid://ckefa71x887kb
remove_inspector_plugin(inspector_plugin)
func _add_settings() -> void:
- _add_setting("gloot/inspector_control_height", TYPE_INT, 200)
- _add_setting("gloot/item_dragging_deadzone_radius", TYPE_FLOAT, 8.0)
- _add_setting("gloot/JSON_serialization/indent_using_spaces", TYPE_BOOL, true)
- _add_setting("gloot/JSON_serialization/indent_size", TYPE_INT, 4)
- _add_setting("gloot/JSON_serialization/sort_keys", TYPE_BOOL, true)
- _add_setting("gloot/JSON_serialization/full_precision", TYPE_BOOL, false)
+ _add_setting("gloot/inspector_control_height", TYPE_INT, 300)
func _add_setting(name: String, type: int, value) -> void:
--- /dev/null
+uid://c3xsv6ylc1vpg
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ height="16"
+ viewBox="0 0 16 16"
+ width="16"
+ version="1.1"
+ id="svg4"
+ sodipodi:docname="icon_ctrl_capacity.svg"
+ inkscape:version="1.3.2 (091e20e, 2023-11-25)"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <metadata
+ id="metadata10">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs8" />
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="2560"
+ inkscape:window-height="1368"
+ id="namedview6"
+ showgrid="true"
+ inkscape:zoom="29.5"
+ inkscape:cx="4.0169492"
+ inkscape:cy="5.8644068"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="svg4"
+ inkscape:snap-grids="true"
+ inkscape:snap-bbox="true"
+ inkscape:snap-center="true"
+ inkscape:snap-others="true"
+ inkscape:showpageshadow="0"
+ inkscape:pagecheckerboard="0"
+ inkscape:deskcolor="#505050">
+ <inkscape:grid
+ type="xygrid"
+ id="grid4520"
+ originx="0"
+ originy="0"
+ spacingy="1"
+ spacingx="1"
+ units="px"
+ visible="true" />
+ </sodipodi:namedview>
+ <path
+ id="rect2"
+ style="fill:#00e436;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round"
+ d="M 1 4 L 1 12 L 15 12 L 15 4 L 1 4 z M 2 5 L 14 5 L 14 11 L 2 11 L 2 5 z M 3 6 L 3 10 L 10 10 L 10 6 L 3 6 z " />
+</svg>
--- /dev/null
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://vbaob50r5jx8"
+path="res://.godot/imported/icon_ctrl_capacity.svg-164a0ccaaa67843fd69711b8f7cc5a8f.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/gloot/images/icon_ctrl_capacity.svg"
+dest_files=["res://.godot/imported/icon_ctrl_capacity.svg-164a0ccaaa67843fd69711b8f7cc5a8f.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=false
+editor/convert_colors_with_editor_theme=false
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ height="16"
+ viewBox="0 0 16 16"
+ width="16"
+ version="1.1"
+ id="svg4"
+ sodipodi:docname="icon_ctrl_inventory_item.svg"
+ inkscape:version="1.3.2 (091e20e, 2023-11-25)"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <metadata
+ id="metadata10">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs8" />
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="2560"
+ inkscape:window-height="1368"
+ id="namedview6"
+ showgrid="true"
+ inkscape:zoom="29.5"
+ inkscape:cx="3.8135593"
+ inkscape:cy="8.3728814"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="svg4"
+ inkscape:snap-grids="true"
+ inkscape:snap-bbox="true"
+ inkscape:snap-center="true"
+ inkscape:snap-others="true"
+ inkscape:showpageshadow="0"
+ inkscape:pagecheckerboard="0"
+ inkscape:deskcolor="#505050">
+ <inkscape:grid
+ type="xygrid"
+ id="grid4520"
+ originx="0"
+ originy="0"
+ spacingy="1"
+ spacingx="1"
+ units="px"
+ visible="true" />
+ </sodipodi:namedview>
+ <path
+ style="fill:#00e436;fill-opacity:1;stroke:none;stroke-width:1.33333325px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M -1e-7,3.9999998 V 12 l 7.9999998,4 V 7.9999997 Z"
+ id="path818"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#008751;fill-opacity:1;stroke:none;stroke-width:1.33333325px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 7.9999997,7.9999997 16,3.9999998 V 12 l -8.0000003,4 z"
+ id="path820"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#ffec27;fill-opacity:1;stroke:none;stroke-width:1.33333px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 7.9999997,-1e-7 16,3.9999998 7.9999997,7.9999997 0,4 Z"
+ id="path1434"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccc" />
+</svg>
--- /dev/null
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://gypy8asicowf"
+path="res://.godot/imported/icon_ctrl_inventory_item.svg-4ddfc5bdcdf5d97ce81d110d6f8c27ff.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/gloot/images/icon_ctrl_inventory_item.svg"
+dest_files=["res://.godot/imported/icon_ctrl_inventory_item.svg-4ddfc5bdcdf5d97ce81d110d6f8c27ff.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=false
+editor/convert_colors_with_editor_theme=false
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- height="16"
- viewBox="0 0 16 16"
- width="16"
- version="1.1"
- id="svg4"
- sodipodi:docname="icon_ctrl_inventory_stacked.svg"
- inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
- <metadata
- id="metadata10">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <defs
- id="defs8" />
- <sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="2498"
- inkscape:window-height="1417"
- id="namedview6"
- showgrid="true"
- inkscape:zoom="29.5"
- inkscape:cx="7.4306916"
- inkscape:cy="0.86544775"
- inkscape:window-x="54"
- inkscape:window-y="-8"
- inkscape:window-maximized="1"
- inkscape:current-layer="svg4"
- inkscape:snap-grids="true"
- inkscape:snap-bbox="true"
- inkscape:snap-center="true"
- inkscape:snap-others="true">
- <inkscape:grid
- type="xygrid"
- id="grid4520" />
- </sodipodi:namedview>
- <g
- id="g6871">
- <path
- sodipodi:nodetypes="ccccc"
- inkscape:connector-curvature="0"
- id="path1436"
- d="M 0,9 8,5 16,9 8,15 Z"
- style="fill:#00e436;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- sodipodi:nodetypes="ccccc"
- inkscape:connector-curvature="0"
- id="path818"
- d="m 0,9 v 3 l 8,4 v -3 z"
- style="fill:#008751;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- sodipodi:nodetypes="ccccc"
- inkscape:connector-curvature="0"
- id="path820"
- d="m 8,13 8,-4 v 3 l -8,4 z"
- style="fill:#1d2b53;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- </g>
- <g
- id="g6879"
- transform="translate(0,-5)">
- <path
- style="fill:#00e436;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 0,9 8,5 16,9 8,15 Z"
- id="path6873"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccc" />
- <path
- style="fill:#008751;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 0,9 v 3 l 8,4 v -3 z"
- id="path6875"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccc" />
- <path
- style="fill:#1d2b53;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 8,13 8,-4 v 3 l -8,4 z"
- id="path6877"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccc" />
- </g>
-</svg>
+++ /dev/null
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://t7dislu7ps55"
-path="res://.godot/imported/icon_ctrl_inventory_stacked.svg-dae2677f1073d9d3b7050efd77843e49.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://addons/gloot/images/icon_ctrl_inventory_stacked.svg"
-dest_files=["res://.godot/imported/icon_ctrl_inventory_stacked.svg-dae2677f1073d9d3b7050efd77843e49.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
-svg/scale=1.0
-editor/scale_with_editor_scale=false
-editor/convert_colors_with_editor_theme=false
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ height="16"
+ viewBox="0 0 16 16"
+ width="16"
+ version="1.1"
+ id="svg4"
+ sodipodi:docname="icon_grid_constraint.svg"
+ inkscape:version="1.3.2 (091e20e, 2023-11-25)"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <metadata
+ id="metadata10">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs8" />
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="2560"
+ inkscape:window-height="1368"
+ id="namedview6"
+ showgrid="true"
+ inkscape:zoom="41.7193"
+ inkscape:cx="3.6074431"
+ inkscape:cy="8.3414631"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="svg4"
+ inkscape:snap-grids="true"
+ inkscape:snap-bbox="true"
+ inkscape:snap-center="true"
+ inkscape:snap-others="true"
+ inkscape:showpageshadow="0"
+ inkscape:pagecheckerboard="0"
+ inkscape:deskcolor="#505050">
+ <inkscape:grid
+ type="xygrid"
+ id="grid4520"
+ spacingx="1"
+ spacingy="1"
+ originx="0"
+ originy="0"
+ units="px"
+ visible="true" />
+ </sodipodi:namedview>
+ <path
+ style="opacity:1;fill:#ff004d;fill-opacity:1;stroke:none;stroke-width:0.06666668;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ d="M 8.0000003,3.9999999 0,8 8.0000003,12 16,8 Z m 0,1.3333334 L 10,6.3333334 l -1.9999997,1 -2,-1 z m 3.3333337,1.6666668 2,0.9999999 -2,0.9999999 L 9.333334,8 Z m -6.6666671,0 L 6.666667,8 4.6666669,8.9999999 2.6666669,8 Z M 8.0000003,8.6666667 10,9.6666669 8.0000003,10.666666 l -2,-0.9999991 z"
+ id="rect2092"
+ inkscape:connector-curvature="0" />
+</svg>
--- /dev/null
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cialwsw8quwo1"
+path="res://.godot/imported/icon_grid_constraint.svg-31bb15f33a36c5e8b232c725fef3f0ae.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/gloot/images/icon_grid_constraint.svg"
+dest_files=["res://.godot/imported/icon_grid_constraint.svg-31bb15f33a36c5e8b232c725fef3f0ae.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=false
+editor/convert_colors_with_editor_theme=false
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- height="16"
- viewBox="0 0 16 16"
- width="16"
- version="1.1"
- id="svg4"
- sodipodi:docname="icon_inventory_grid.svg"
- inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
- <metadata
- id="metadata10">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <defs
- id="defs8" />
- <sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="2498"
- inkscape:window-height="1417"
- id="namedview6"
- showgrid="true"
- inkscape:zoom="41.7193"
- inkscape:cx="10.1668"
- inkscape:cy="7.4508754"
- inkscape:window-x="54"
- inkscape:window-y="-8"
- inkscape:window-maximized="1"
- inkscape:current-layer="svg4"
- inkscape:snap-grids="true"
- inkscape:snap-bbox="true"
- inkscape:snap-center="true"
- inkscape:snap-others="true">
- <inkscape:grid
- type="xygrid"
- id="grid4520"
- spacingx="1"
- spacingy="1" />
- </sodipodi:namedview>
- <path
- style="opacity:1;fill:#ffec27;fill-opacity:1;stroke:none;stroke-width:0.06666668;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 8.0000003,3.9999999 0,8 8.0000003,12 16,8 Z m 0,1.3333334 L 10,6.3333334 l -1.9999997,1 -2,-1 z m 3.3333337,1.6666668 2,0.9999999 -2,0.9999999 L 9.333334,8 Z m -6.6666671,0 L 6.666667,8 4.6666669,8.9999999 2.6666669,8 Z M 8.0000003,8.6666667 10,9.6666669 8.0000003,10.666666 l -2,-0.9999991 z"
- id="rect2092"
- inkscape:connector-curvature="0" />
-</svg>
+++ /dev/null
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://kd75uhabf1gk"
-path="res://.godot/imported/icon_inventory_grid.svg-aa0d41ee8a4783e96656b0c95fc25600.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://addons/gloot/images/icon_inventory_grid.svg"
-dest_files=["res://.godot/imported/icon_inventory_grid.svg-aa0d41ee8a4783e96656b0c95fc25600.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
-svg/scale=1.0
-editor/scale_with_editor_scale=false
-editor/convert_colors_with_editor_theme=false
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- height="16"
- viewBox="0 0 16 16"
- width="16"
- version="1.1"
- id="svg4"
- sodipodi:docname="icon_inventory_grid_stacked.svg"
- inkscape:version="1.2.2 (732a01da63, 2022-12-09)"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:dc="http://purl.org/dc/elements/1.1/">
- <metadata
- id="metadata10">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <defs
- id="defs8" />
- <sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="2560"
- inkscape:window-height="1377"
- id="namedview6"
- showgrid="true"
- inkscape:zoom="41.7193"
- inkscape:cx="5.5250208"
- inkscape:cy="7.4785531"
- inkscape:window-x="-8"
- inkscape:window-y="-8"
- inkscape:window-maximized="1"
- inkscape:current-layer="svg4"
- inkscape:snap-grids="true"
- inkscape:snap-bbox="true"
- inkscape:snap-center="true"
- inkscape:snap-others="true"
- inkscape:showpageshadow="2"
- inkscape:pagecheckerboard="0"
- inkscape:deskcolor="#d1d1d1">
- <inkscape:grid
- type="xygrid"
- id="grid4520" />
- </sodipodi:namedview>
- <g
- id="g5732"
- transform="matrix(0.4375,0,0,0.4375,0,4.75)">
- <path
- sodipodi:nodetypes="ccccc"
- inkscape:connector-curvature="0"
- id="path1436"
- d="M 0,9 8,5 16,9 8,15 Z"
- style="fill:#ffec27;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- sodipodi:nodetypes="ccccc"
- inkscape:connector-curvature="0"
- id="path818"
- d="m 0,9 v 3 l 8,4 v -3 z"
- style="fill:#ffa300;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- sodipodi:nodetypes="ccccc"
- inkscape:connector-curvature="0"
- id="path820"
- d="m 8,13 8,-4 v 3 l -8,4 z"
- style="fill:#ab5236;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- </g>
- <g
- id="g2341"
- transform="matrix(0.4375,0,0,0.4375,9,4.75)">
- <path
- sodipodi:nodetypes="ccccc"
- inkscape:connector-curvature="0"
- id="path2335"
- d="M 0,9 8,5 16,9 8,15 Z"
- style="fill:#ffec27;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- sodipodi:nodetypes="ccccc"
- inkscape:connector-curvature="0"
- id="path2337"
- d="m 0,9 v 3 l 8,4 v -3 z"
- style="fill:#ffa300;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- sodipodi:nodetypes="ccccc"
- inkscape:connector-curvature="0"
- id="path2339"
- d="m 8,13 8,-4 v 3 l -8,4 z"
- style="fill:#ab5236;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- </g>
- <g
- id="g2349"
- transform="matrix(0.4375,0,0,0.4375,4.5,7)">
- <path
- sodipodi:nodetypes="ccccc"
- inkscape:connector-curvature="0"
- id="path2343"
- d="M 0,9 8,5 16,9 8,15 Z"
- style="fill:#ffec27;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- sodipodi:nodetypes="ccccc"
- inkscape:connector-curvature="0"
- id="path2345"
- d="m 0,9 v 3 l 8,4 v -3 z"
- style="fill:#ffa300;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- sodipodi:nodetypes="ccccc"
- inkscape:connector-curvature="0"
- id="path2347"
- d="m 8,13 8,-4 v 3 l -8,4 z"
- style="fill:#ab5236;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- </g>
- <g
- id="g2357"
- transform="matrix(0.4375,0,0,0.4375,9,2.75)">
- <path
- sodipodi:nodetypes="ccccc"
- inkscape:connector-curvature="0"
- id="path2351"
- d="M 0,9 8,5 16,9 8,15 Z"
- style="fill:#ffec27;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- sodipodi:nodetypes="ccccc"
- inkscape:connector-curvature="0"
- id="path2353"
- d="m 0,9 v 3 l 8,4 v -3 z"
- style="fill:#ffa300;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- sodipodi:nodetypes="ccccc"
- inkscape:connector-curvature="0"
- id="path2355"
- d="m 8,13 8,-4 v 3 l -8,4 z"
- style="fill:#ab5236;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- </g>
- <g
- id="g2365"
- transform="matrix(0.4375,0,0,0.4375,0,2.75)">
- <path
- sodipodi:nodetypes="ccccc"
- inkscape:connector-curvature="0"
- id="path2359"
- d="M 0,9 8,5 16,9 8,15 Z"
- style="fill:#ffec27;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- sodipodi:nodetypes="ccccc"
- inkscape:connector-curvature="0"
- id="path2361"
- d="m 0,9 v 3 l 8,4 v -3 z"
- style="fill:#ffa300;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- sodipodi:nodetypes="ccccc"
- inkscape:connector-curvature="0"
- id="path2363"
- d="m 8,13 8,-4 v 3 l -8,4 z"
- style="fill:#ab5236;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- </g>
- <g
- id="g2373"
- transform="matrix(0.4375,0,0,0.4375,0,0.75)">
- <path
- sodipodi:nodetypes="ccccc"
- inkscape:connector-curvature="0"
- id="path2367"
- d="M 0,9 8,5 16,9 8,15 Z"
- style="fill:#ffec27;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- sodipodi:nodetypes="ccccc"
- inkscape:connector-curvature="0"
- id="path2369"
- d="m 0,9 v 3 l 8,4 v -3 z"
- style="fill:#ffa300;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- sodipodi:nodetypes="ccccc"
- inkscape:connector-curvature="0"
- id="path2371"
- d="m 8,13 8,-4 v 3 l -8,4 z"
- style="fill:#ab5236;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- </g>
-</svg>
+++ /dev/null
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://bo38cy4myqvpu"
-path="res://.godot/imported/icon_inventory_grid_stacked.svg-33302053cec4b39ebb5b7a7b1bea5293.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://addons/gloot/images/icon_inventory_grid_stacked.svg"
-dest_files=["res://.godot/imported/icon_inventory_grid_stacked.svg-33302053cec4b39ebb5b7a7b1bea5293.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
-svg/scale=1.0
-editor/scale_with_editor_scale=false
-editor/convert_colors_with_editor_theme=false
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- height="16"
- viewBox="0 0 16 16"
- width="16"
- version="1.1"
- id="svg4"
- sodipodi:docname="icon_inventory_stacked.svg"
- inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
- <metadata
- id="metadata10">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <defs
- id="defs8" />
- <sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="2498"
- inkscape:window-height="1417"
- id="namedview6"
- showgrid="true"
- inkscape:zoom="5.2149125"
- inkscape:cx="-41.453203"
- inkscape:cy="37.560901"
- inkscape:window-x="54"
- inkscape:window-y="-8"
- inkscape:window-maximized="1"
- inkscape:current-layer="svg4"
- inkscape:snap-grids="true"
- inkscape:snap-bbox="true"
- inkscape:snap-center="true"
- inkscape:snap-others="true">
- <inkscape:grid
- type="xygrid"
- id="grid4520" />
- </sodipodi:namedview>
- <g
- id="g5732">
- <path
- sodipodi:nodetypes="ccccc"
- inkscape:connector-curvature="0"
- id="path1436"
- d="M 0,9 8,5 16,9 8,15 Z"
- style="fill:#ffec27;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- sodipodi:nodetypes="ccccc"
- inkscape:connector-curvature="0"
- id="path818"
- d="m 0,9 v 3 l 8,4 v -3 z"
- style="fill:#ffa300;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- sodipodi:nodetypes="ccccc"
- inkscape:connector-curvature="0"
- id="path820"
- d="m 8,13 8,-4 v 3 l -8,4 z"
- style="fill:#ab5236;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- </g>
- <g
- id="g845"
- transform="translate(0,-5)">
- <path
- style="fill:#ffec27;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 0,9 8,5 16,9 8,15 Z"
- id="path839"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccc" />
- <path
- style="fill:#ffa300;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 0,9 v 3 l 8,4 v -3 z"
- id="path841"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccc" />
- <path
- style="fill:#ab5236;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 8,13 8,-4 v 3 l -8,4 z"
- id="path843"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccc" />
- </g>
-</svg>
+++ /dev/null
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://ch1f50xu37dvo"
-path="res://.godot/imported/icon_inventory_stacked.svg-e621060af73c305939da691316b0c966.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://addons/gloot/images/icon_inventory_stacked.svg"
-dest_files=["res://.godot/imported/icon_inventory_stacked.svg-e621060af73c305939da691316b0c966.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
-svg/scale=1.0
-editor/scale_with_editor_scale=false
-editor/convert_colors_with_editor_theme=false
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- height="16"
- viewBox="0 0 16 16"
- width="16"
- version="1.1"
- id="svg4"
- sodipodi:docname="icon_item.svg"
- inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
- <metadata
- id="metadata10">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <defs
- id="defs8" />
- <sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="2498"
- inkscape:window-height="1417"
- id="namedview6"
- showgrid="true"
- inkscape:zoom="29.5"
- inkscape:cx="13.828609"
- inkscape:cy="10.287679"
- inkscape:window-x="54"
- inkscape:window-y="-8"
- inkscape:window-maximized="1"
- inkscape:current-layer="svg4"
- inkscape:snap-grids="true"
- inkscape:snap-bbox="true"
- inkscape:snap-center="true"
- inkscape:snap-others="true">
- <inkscape:grid
- type="xygrid"
- id="grid4520" />
- </sodipodi:namedview>
- <g
- id="g8594"
- transform="matrix(1.3333333,0,0,1.3333333,-2.6666667,-2.6666667)">
- <path
- sodipodi:nodetypes="ccccc"
- inkscape:connector-curvature="0"
- id="path822"
- d="M 2,5 8,2 14,5 8,12.372881 Z"
- style="fill:#ffffff;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- id="path818"
- d="m 2,5 v 6 l 6,3 V 8 Z"
- style="fill:#29adff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- id="path820"
- d="m 8,8 6,-3 v 6 l -6,3 z"
- style="fill:#1d2b53;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- </g>
-</svg>
+++ /dev/null
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://qlt0i7muj2tj"
-path="res://.godot/imported/icon_item.svg-19f0c54092b35b57bc3510f8accf9092.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://addons/gloot/images/icon_item.svg"
-dest_files=["res://.godot/imported/icon_item.svg-19f0c54092b35b57bc3510f8accf9092.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
-svg/scale=1.0
-editor/scale_with_editor_scale=false
-editor/convert_colors_with_editor_theme=false
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ height="16"
+ viewBox="0 0 16 16"
+ width="16"
+ version="1.1"
+ id="svg4"
+ sodipodi:docname="icon_item_count_constraint.svg"
+ inkscape:version="1.3.2 (091e20e, 2023-11-25)"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <path
+ d="M 8.5520681,0.34376179 7.5520697,4.3541721 H 10.302065 L 11.31248,0.34376179 h 2.30208 L 12.604145,4.3541721 h 2.885412 v 2.2187465 h -3.437494 l -0.718749,2.8541622 h 2.958328 V 11.666661 H 10.791648 L 9.7916495,15.656238 H 7.4895698 L 8.4895682,11.666661 H 5.7395725 L 4.7395741,15.656238 H 2.4166611 L 3.4166596,11.666661 H 0.51041414 V 9.4270808 H 3.9270754 L 4.6562409,6.5729186 H 1.7083289 V 4.3541721 H 5.2291567 L 6.2291551,0.34376179 Z M 9.7291496,6.5729186 H 6.9791539 L 6.2499884,9.4270808 h 2.7499957 z"
+ id="text1"
+ style="font-weight:bold;font-size:21.3333px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans Bold';fill:#ff004d;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round"
+ aria-label="#" />
+ <metadata
+ id="metadata10">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs8" />
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="2560"
+ inkscape:window-height="1368"
+ id="namedview6"
+ showgrid="true"
+ inkscape:zoom="41.7193"
+ inkscape:cx="3.6074431"
+ inkscape:cy="8.3414631"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="svg4"
+ inkscape:snap-grids="true"
+ inkscape:snap-bbox="true"
+ inkscape:snap-center="true"
+ inkscape:snap-others="true"
+ inkscape:showpageshadow="0"
+ inkscape:pagecheckerboard="0"
+ inkscape:deskcolor="#505050">
+ <inkscape:grid
+ type="xygrid"
+ id="grid4520"
+ spacingx="1"
+ spacingy="1"
+ originx="0"
+ originy="0"
+ units="px"
+ visible="true" />
+ </sodipodi:namedview>
+</svg>
--- /dev/null
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cic8j2p02o0cn"
+path="res://.godot/imported/icon_item_count_constraint.svg-6ba65dc6693bf362d833b589d299e1ff.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/gloot/images/icon_item_count_constraint.svg"
+dest_files=["res://.godot/imported/icon_item_count_constraint.svg-6ba65dc6693bf362d833b589d299e1ff.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=false
+editor/convert_colors_with_editor_theme=false
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- height="16"
- viewBox="0 0 16 16"
- width="16"
- version="1.1"
- id="svg4"
- sodipodi:docname="icon_item_protoset.svg"
- inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
- <metadata
- id="metadata10">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <defs
- id="defs8" />
- <sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="2498"
- inkscape:window-height="1417"
- id="namedview6"
- showgrid="true"
- inkscape:zoom="59"
- inkscape:cx="7.6342845"
- inkscape:cy="9.1659924"
- inkscape:window-x="54"
- inkscape:window-y="-8"
- inkscape:window-maximized="1"
- inkscape:current-layer="svg4"
- inkscape:snap-grids="true"
- inkscape:snap-bbox="true"
- inkscape:snap-center="true"
- inkscape:snap-others="true">
- <inkscape:grid
- type="xygrid"
- id="grid4520" />
- </sodipodi:namedview>
- <g
- id="g9161"
- transform="matrix(1.1666667,0,0,1.1666667,-1.3333333,-1.3333333)">
- <path
- inkscape:connector-curvature="0"
- id="path835"
- d="m 2,5 v 6 l 6,3 6,-3 V 5 L 8,2 Z"
- style="fill:none;stroke:#c2c3c7;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- id="path837"
- d="m 2,5 6,3 v 6"
- style="fill:none;stroke:#c2c3c7;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- id="path839"
- d="M 8,8 14,5"
- style="fill:none;stroke:#c2c3c7;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- </g>
-</svg>
+++ /dev/null
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://dbepw1v0gp80y"
-path="res://.godot/imported/icon_item_protoset.svg-3584e3e1df3de7b231a248b80bd83194.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://addons/gloot/images/icon_item_protoset.svg"
-dest_files=["res://.godot/imported/icon_item_protoset.svg-3584e3e1df3de7b231a248b80bd83194.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
-svg/scale=1.0
-editor/scale_with_editor_scale=false
-editor/convert_colors_with_editor_theme=false
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- height="16"
- viewBox="0 0 16 16"
- width="16"
- version="1.1"
- id="svg4"
- sodipodi:docname="icon_item_ref_slot.svg"
- inkscape:version="1.3.2 (091e20e, 2023-11-25)"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:dc="http://purl.org/dc/elements/1.1/">
- <metadata
- id="metadata10">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <defs
- id="defs8" />
- <sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="2560"
- inkscape:window-height="1368"
- id="namedview6"
- showgrid="true"
- inkscape:zoom="29.5"
- inkscape:cx="3.0847458"
- inkscape:cy="9.0169492"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="1"
- inkscape:current-layer="svg4"
- inkscape:snap-grids="true"
- inkscape:snap-bbox="true"
- inkscape:snap-center="true"
- inkscape:snap-others="true"
- inkscape:showpageshadow="0"
- inkscape:pagecheckerboard="0"
- inkscape:deskcolor="#505050">
- <inkscape:grid
- type="xygrid"
- id="grid4520"
- originx="0"
- originy="0"
- spacingy="1"
- spacingx="1"
- units="px"
- visible="true" />
- </sodipodi:namedview>
- <path
- style="fill:none;stroke:#29adff;stroke-width:1.16666663px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 1,4.5 v 7 l 7,3.5 7,-3.5 v -7 L 8,1 Z"
- id="path835"
- inkscape:connector-curvature="0" />
- <path
- style="font-weight:bold;font-size:16px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans Bold';fill:#29adff"
- d="M 11.863281,6.6523436 9.2851565,8.0039061 11.863281,9.3632811 11.269531,10.464844 8.667969,9.0273436 V 11.714844 H 7.339844 V 9.0273436 L 4.730469,10.464844 4.136719,9.3632811 6.746094,8.0039061 4.136719,6.6523436 4.730469,5.5507811 7.339844,6.9726561 v -2.6875 h 1.328125 v 2.6875 l 2.601562,-1.421875 z"
- id="text1"
- aria-label="*" />
-</svg>
+++ /dev/null
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://dagqmcoxvm3m6"
-path="res://.godot/imported/icon_item_ref_slot.svg-c8a8d9826d793965417f19dda840f923.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://addons/gloot/images/icon_item_ref_slot.svg"
-dest_files=["res://.godot/imported/icon_item_ref_slot.svg-c8a8d9826d793965417f19dda840f923.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
-svg/scale=1.0
-editor/scale_with_editor_scale=false
-editor/convert_colors_with_editor_theme=false
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ height="16"
+ viewBox="0 0 16 16"
+ width="16"
+ version="1.1"
+ id="svg4"
+ sodipodi:docname="icon_weight_constraint.svg"
+ inkscape:version="1.3.2 (091e20e, 2023-11-25)"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <metadata
+ id="metadata10">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs8" />
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="2560"
+ inkscape:window-height="1368"
+ id="namedview6"
+ showgrid="true"
+ inkscape:zoom="32"
+ inkscape:cx="3.953125"
+ inkscape:cy="13.9375"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="svg4"
+ inkscape:snap-grids="true"
+ inkscape:snap-bbox="true"
+ inkscape:snap-center="true"
+ inkscape:snap-others="true"
+ inkscape:showpageshadow="0"
+ inkscape:pagecheckerboard="0"
+ inkscape:deskcolor="#505050">
+ <inkscape:grid
+ type="xygrid"
+ id="grid4520"
+ spacingx="1"
+ spacingy="1"
+ originx="0"
+ originy="0"
+ units="px"
+ visible="true" />
+ </sodipodi:namedview>
+ <path
+ style="fill:#ff77a8;fill-opacity:1;stroke:none;stroke-width:0.133333;stroke-linecap:round;stroke-linejoin:round"
+ d="M 8,1.2557787 13.333333,3.9224453 8,6.589112 2.6666667,3.9224453 Z"
+ id="path15"
+ sodipodi:nodetypes="ccccc" />
+ <path
+ style="fill:#ff004d;fill-opacity:1;stroke:none;stroke-width:0.133333;stroke-linecap:round;stroke-linejoin:round"
+ d="M 1e-8,11.922445 8,16 V 6.589112 L 2.6666667,3.9224453 Z"
+ id="path16"
+ sodipodi:nodetypes="ccccc" />
+ <path
+ style="fill:#7e2553;fill-opacity:1;stroke:none;stroke-width:0.133333;stroke-linecap:round;stroke-linejoin:round"
+ d="M 16,11.922445 8,16 V 6.589112 l 5.333333,-2.6666667 z"
+ id="path17"
+ sodipodi:nodetypes="ccccc" />
+</svg>
--- /dev/null
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://wkf6siqakc38"
+path="res://.godot/imported/icon_weight_constraint.svg-4c78f8924ceb8ed32de7cdd9d5bc492c.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/gloot/images/icon_weight_constraint.svg"
+dest_files=["res://.godot/imported/icon_weight_constraint.svg-4c78f8924ceb8ed32de7cdd9d5bc492c.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=false
+editor/convert_colors_with_editor_theme=false
name="GLoot"
description="A universal inventory system for the Godot game engine"
author="Peter Kish"
-version="2.4.8"
+version="3.0.0"
script="gloot.gd"
--- /dev/null
+# UI Directory Contents
+
+## Files
+
+| Directory | Description |
+| --------------------------------------------- | ----------- |
+| `ctrl_draggable_inventory_item.gd` | Implements draggable inventory items. |
+| `ctrl_draggable.gd` | Implements draggable UI controls. |
+| `ctrl_drop_zone.gd` | Implements UI controls that can receive dragged controls |
+| `ctrl_inventory_capacity.gd` | `CtrlItemCapacity` implementation. |
+| `ctrl_inventory_grid_basic.gd` | Helper script for displaying inventory items on a grid. |
+| `ctrl_inventory_grid.gd` | `CtrlInventoryGrid` implementation. |
+| `ctrl_inventory_item_base.gd` | `CtrlInventoryItemBase` implementation. |
+| `ctrl_inventory_item.gd` | `CtrlInventoryItem` implementation. |
+| `ctrl_inventory_universal.gd` | Implements a UI control that can display any inventory. |
+| `ctrl_inventory.gd` | `CtrlInventory` implementation. |
+| `ctrl_item_slot.gd` | `CtrlItemSlot` implementation. |
+| `ctrl_inventory_grid_field_style_normal.tres` | The default grid field background style for `CtrlInventoryGrid`. |
+| `ctrl_inventory_grid_style_background.tres` | The default style used for the inventory background in `CtrlInventoryGrid`. |
+| `ctrl_inventory_grid_style_selection.tres` | The default style used for displaying item selections in `CtrlInventoryGrid`. |
+++ /dev/null
-@tool
-extends Control
-
-const CtrlDragable = preload("res://addons/gloot/ui/ctrl_dragable.gd")
-const CtrlDropZone = preload("res://addons/gloot/ui/ctrl_drop_zone.gd")
-
-# Somewhat hacky way to do static signals:
-# https://stackoverflow.com/questions/77026156/how-to-write-a-static-event-emitter-in-gdscript/77026952#77026952
-
-static var dragable_grabbed: Signal = (func():
- if (CtrlDragable as Object).has_user_signal("dragable_grabbed"):
- return (CtrlDragable as Object).dragable_grabbed
- (CtrlDragable as Object).add_user_signal("dragable_grabbed")
- return Signal(CtrlDragable, "dragable_grabbed")
-).call()
-
-static var dragable_dropped: Signal = (func():
- if (CtrlDragable as Object).has_user_signal("dragable_dropped"):
- return (CtrlDragable as Object).dragable_dropped
- (CtrlDragable as Object).add_user_signal("dragable_dropped")
- return Signal(CtrlDragable, "dragable_dropped")
-).call()
-
-signal grabbed(position)
-signal dropped(zone, position)
-
-static var _grabbed_dragable: CtrlDragable = null
-static var _grab_offset: Vector2
-
-var _enabled: bool = true
-
-
-static func get_grabbed_dragable() -> CtrlDragable:
- if !is_instance_valid(_grabbed_dragable):
- return null
- return _grabbed_dragable
-
-
-static func get_grab_offset() -> Vector2:
- return _grab_offset
-
-
-static func get_grab_offset_local_to(control: Control) -> Vector2:
- return CtrlDragable.get_grab_offset() / control.get_global_transform().get_scale()
-
-
-func _get_drag_data(at_position: Vector2):
- if !_enabled:
- return null
-
- _grabbed_dragable = self
- _grab_offset = at_position * get_global_transform().get_scale()
- dragable_grabbed.emit(_grabbed_dragable, _grab_offset)
- grabbed.emit(_grab_offset)
-
- var preview = Control.new()
- var sub_preview = create_preview()
- sub_preview.position = -get_grab_offset()
- preview.add_child(sub_preview)
- set_drag_preview(preview)
- return self
-
-
-func create_preview() -> Control:
- return null
-
-
-func activate() -> void:
- _enabled = true
-
-
-func deactivate() -> void:
- _enabled = false
-
-
-func is_active() -> bool:
- return _enabled
-
-
-func is_dragged() -> bool:
- return _grabbed_dragable == self
--- /dev/null
+@tool
+extends Control
+
+signal activated
+signal clicked(at_position: Vector2, mouse_button_index: int)
+
+var item: InventoryItem:
+ set(new_item):
+ if item == new_item:
+ return
+
+ item = new_item
+ if is_instance_valid(_ctrl_inventory_item):
+ _ctrl_inventory_item.item = item
+var icon_stretch_mode: TextureRect.StretchMode = TextureRect.StretchMode.STRETCH_SCALE:
+ set(new_stretch_mode):
+ if icon_stretch_mode == new_stretch_mode:
+ return
+ icon_stretch_mode = new_stretch_mode
+ if is_instance_valid(_ctrl_inventory_item):
+ _ctrl_inventory_item.icon_stretch_mode = icon_stretch_mode
+var ctrl_inventory_item_scene: PackedScene = null
+var _ctrl_inventory_item: CtrlInventoryItemBase
+static var _grab_offset: Vector2
+
+
+func _ready() -> void:
+ if ctrl_inventory_item_scene == null:
+ _ctrl_inventory_item = CtrlInventoryItem.new()
+ else:
+ _ctrl_inventory_item = ctrl_inventory_item_scene.instantiate()
+ _ctrl_inventory_item.name = "CtrlInventoryItemBase"
+ _ctrl_inventory_item.size = size
+ _ctrl_inventory_item.item = item
+ _ctrl_inventory_item.icon_stretch_mode = icon_stretch_mode
+ _ctrl_inventory_item.mouse_filter = Control.MOUSE_FILTER_IGNORE
+
+ add_child(_ctrl_inventory_item)
+
+ resized.connect(func():
+ _ctrl_inventory_item.size = size
+ )
+
+
+func _get_drag_data(at_position: Vector2) -> Variant:
+ _grab_offset = at_position * get_global_transform().get_scale()
+
+ var sub_preview: Control = null
+ sub_preview = _create_preview()
+ if sub_preview == null:
+ return null
+ var preview = Control.new()
+ sub_preview.position = -_grab_offset
+ preview.add_child(sub_preview)
+ set_drag_preview(preview)
+
+ return item
+
+
+static func get_grab_offset_local_to(control: Control) -> Vector2:
+ return _grab_offset / control.get_global_transform().get_scale()
+
+
+func _create_preview() -> Control:
+ var preview: CtrlInventoryItemBase
+ if ctrl_inventory_item_scene == null:
+ preview = CtrlInventoryItem.new()
+ else:
+ preview = ctrl_inventory_item_scene.instantiate()
+ preview.item = item
+ preview.size = size
+ preview.icon_stretch_mode = icon_stretch_mode
+ return preview
+
+
+func _gui_input(event: InputEvent) -> void:
+ if !(event is InputEventMouseButton):
+ return
+
+ var mb_event: InputEventMouseButton = event
+ if !mb_event.pressed:
+ return
+ if mb_event.button_index == MOUSE_BUTTON_LEFT:
+ if mb_event.double_click:
+ activated.emit()
+ clicked.emit(mb_event.position, mb_event.button_index)
--- /dev/null
+uid://bn6806v4hesei
+++ /dev/null
-@tool
-extends Control
-
-signal dragable_dropped(dragable, position)
-
-const CtrlDragable = preload("res://addons/gloot/ui/ctrl_dragable.gd")
-
-
-func activate() -> void:
- mouse_filter = Control.MOUSE_FILTER_PASS
-
-
-func deactivate() -> void:
- mouse_filter = Control.MOUSE_FILTER_IGNORE
-
-
-func is_active() -> bool:
- return (mouse_filter != Control.MOUSE_FILTER_IGNORE)
-
-
-func _can_drop_data(at_position: Vector2, data) -> bool:
- return data is CtrlDragable
-
-
-func _drop_data(at_position: Vector2, data) -> void:
- var local_offset := CtrlDragable.get_grab_offset_local_to(self)
- dragable_dropped.emit(data, at_position - local_offset)
- CtrlDragable.dragable_dropped.emit(data, self, at_position - local_offset)
-
-
@tool
@icon("res://addons/gloot/images/icon_ctrl_inventory.svg")
class_name CtrlInventory
-extends Control
-
-signal inventory_item_activated(item)
-signal inventory_item_context_activated(item)
-
-enum SelectMode {SELECT_SINGLE = ItemList.SELECT_SINGLE, SELECT_MULTI = ItemList.SELECT_MULTI}
-
-@export var inventory_path: NodePath :
- set(new_inv_path):
- inventory_path = new_inv_path
- var node: Node = get_node_or_null(inventory_path)
-
- if node == null:
- return
-
- if is_inside_tree():
- assert(node is Inventory)
-
- inventory = node
- update_configuration_warnings()
-
-
-@export var default_item_icon: Texture2D
-@export_enum("Single", "Multi") var select_mode: int = SelectMode.SELECT_SINGLE :
- set(new_select_mode):
- if select_mode == new_select_mode:
- return
- select_mode = new_select_mode
- if is_instance_valid(_item_list):
- _item_list.deselect_all();
- _item_list.select_mode = select_mode
-var inventory: Inventory = null :
- set(new_inventory):
- if new_inventory == inventory:
- return
-
- _disconnect_inventory_signals()
- inventory = new_inventory
- _connect_inventory_signals()
-
- _queue_refresh()
-var _vbox_container: VBoxContainer
-var _item_list: ItemList
-var _refresh_queued: bool = false
+extends ItemList
+## Control node for displaying inventories.
+##
+## Displays inventories as an `ItemList`.
+signal inventory_item_activated(item: InventoryItem) ## Emitted when an inventory item has been double-clicked.
+signal inventory_item_clicked(item: InventoryItem, at_position: Vector2, mouse_button_index: int) ## Emitted when an inventory item has been clicked.
+signal inventory_item_selected(item: InventoryItem) ## Emitted when an inventory item has been selected.
-func _get_configuration_warnings() -> PackedStringArray:
- if inventory_path.is_empty():
- return PackedStringArray([
- "This node is not linked to an inventory, so it can't display any content.\n" + \
- "Set the inventory_path property to point to an Inventory node."])
- return PackedStringArray()
-
+const _Utils = preload("res://addons/gloot/core/utils.gd")
-func _ready():
- if Engine.is_editor_hint():
- # Clean up, in case it is duplicated in the editor
- if is_instance_valid(_vbox_container):
- _vbox_container.queue_free()
+## Reference to the inventory that is being displayed.
+@export var inventory: Inventory = null:
+ set(new_inventory):
+ if inventory == new_inventory:
+ return
- _vbox_container = VBoxContainer.new()
- _vbox_container.size_flags_horizontal = SIZE_EXPAND_FILL
- _vbox_container.size_flags_vertical = SIZE_EXPAND_FILL
- _vbox_container.anchor_right = 1.0
- _vbox_container.anchor_bottom = 1.0
- add_child(_vbox_container)
+ if new_inventory == null:
+ _disconnect_inventory_signals()
+ inventory = null
+ _clear()
+ update_configuration_warnings()
+ return
- _item_list = ItemList.new()
- _item_list.size_flags_horizontal = SIZE_EXPAND_FILL
- _item_list.size_flags_vertical = SIZE_EXPAND_FILL
- _item_list.item_activated.connect(_on_list_item_activated)
- _item_list.item_clicked.connect(_on_list_item_clicked)
- _item_list.select_mode = select_mode
- _vbox_container.add_child(_item_list)
+ inventory = new_inventory
+ if inventory.is_node_ready():
+ _refresh()
+ _connect_inventory_signals()
+ update_configuration_warnings()
- if has_node(inventory_path):
- inventory = get_node(inventory_path)
- _queue_refresh()
+func _get_configuration_warnings() -> PackedStringArray:
+ if !is_instance_valid(inventory):
+ return PackedStringArray([
+ "This CtrlInventory node has no inventory set. Set the 'inventory' field to be able to " \
+ + "display its contents."])
+ return PackedStringArray()
func _connect_inventory_signals() -> void:
- if !is_instance_valid(inventory):
- return
-
- if !inventory.contents_changed.is_connected(_queue_refresh):
- inventory.contents_changed.connect(_queue_refresh)
- if !inventory.item_property_changed.is_connected(_on_item_property_changed):
- inventory.item_property_changed.connect(_on_item_property_changed)
+ if !inventory.is_node_ready():
+ _Utils.safe_connect(inventory.ready, _refresh)
+ inventory.protoset_changed.connect(_refresh)
+ inventory.item_property_changed.connect(_on_item_property_changed)
+ inventory.item_added.connect(_on_item_manipulated)
+ inventory.item_removed.connect(_on_item_manipulated)
+ inventory.item_moved.connect(_on_item_manipulated)
func _disconnect_inventory_signals() -> void:
- if !is_instance_valid(inventory):
- return
+ _Utils.safe_disconnect(inventory.ready, _refresh)
+ inventory.protoset_changed.disconnect(_refresh)
+ inventory.item_property_changed.disconnect(_on_item_property_changed)
+ inventory.item_added.disconnect(_on_item_manipulated)
+ inventory.item_removed.disconnect(_on_item_manipulated)
+ inventory.item_moved.disconnect(_on_item_manipulated)
- if inventory.contents_changed.is_connected(_queue_refresh):
- inventory.contents_changed.disconnect(_queue_refresh)
- if inventory.item_property_changed.is_connected(_on_item_property_changed):
- inventory.item_property_changed.disconnect(_on_item_property_changed)
+func _on_item_property_changed(item: InventoryItem, property: String) -> void:
+ if property == InventoryItem._KEY_NAME || property == Inventory._KEY_STACK_SIZE:
+ set_item_text(inventory.get_item_index(item), _get_item_title(item))
+ if property == InventoryItem._KEY_IMAGE:
+ set_item_icon(inventory.get_item_index(item), item.get_texture())
-func _on_list_item_activated(index: int) -> void:
- inventory_item_activated.emit(_get_inventory_item(index))
+func _on_item_manipulated(item: InventoryItem) -> void:
+ _refresh()
-func _on_list_item_clicked(index: int, at_position: Vector2, mouse_button_index: int) -> void:
- if mouse_button_index == MOUSE_BUTTON_RIGHT:
- inventory_item_context_activated.emit(_get_inventory_item(index))
+func _ready() -> void:
+ item_activated.connect(_on_list_item_activated)
+ item_clicked.connect(_on_list_item_clicked)
+ item_selected.connect(_on_list_item_selected)
+ _refresh()
-func _on_item_property_changed(_item: InventoryItem, property_name: String) -> void:
- if property_name in [InventoryItem.KEY_NAME, InventoryItem.KEY_IMAGE]:
- _queue_refresh()
+func _on_list_item_activated(index: int) -> void:
+ inventory_item_activated.emit(_get_inventory_item(index))
-func _process(_delta) -> void:
- if _refresh_queued:
- _refresh()
- _refresh_queued = false
+func _on_list_item_clicked(index: int, at_position: Vector2, mouse_button_index: int) -> void:
+ inventory_item_clicked.emit(_get_inventory_item(index), at_position, mouse_button_index)
-func _queue_refresh() -> void:
- _refresh_queued = true
+func _on_list_item_selected(index: int) -> void:
+ inventory_item_selected.emit(_get_inventory_item(index))
-func _refresh() -> void:
- if is_inside_tree():
- _clear_list()
- _populate_list()
+## Returns the selected inventory item. If multiple items are selected, it returns the first one.
+func get_selected_inventory_item() -> InventoryItem:
+ if get_selected_items().is_empty():
+ return null
-func _clear_list() -> void:
- if is_instance_valid(_item_list):
- _item_list.clear()
+ return _get_inventory_item(get_selected_items()[0])
-func _populate_list() -> void:
- if !is_instance_valid(inventory):
- return
+## Returns an array of selected inventory items.
+func get_selected_inventory_items() -> Array[InventoryItem]:
+ var result: Array[InventoryItem]
+ var indexes = get_selected_items()
+ for i in indexes:
+ result.append(_get_inventory_item(i))
+ return result
- for item in inventory.get_items():
- var texture := item.get_texture()
- if !texture:
- texture = default_item_icon
- _item_list.add_item(_get_item_title(item), texture)
- _item_list.set_item_metadata(_item_list.get_item_count() - 1, item)
+func _get_inventory_item(index: int) -> InventoryItem:
+ assert(index >= 0)
+ assert(index < get_item_count())
+ return get_item_metadata(index)
-func _get_item_title(item: InventoryItem) -> String:
- if item == null:
- return ""
- var title = item.get_title()
- var stack_size: int = InventoryStacked.get_item_stack_size(item)
- if stack_size > 1:
- title = "%s (x%d)" % [title, stack_size]
+func _refresh() -> void:
+ _clear()
+ _populate()
- return title
+func _clear() -> void:
+ clear()
-func get_selected_inventory_item() -> InventoryItem:
- if _item_list.get_selected_items().is_empty():
- return null
- return _get_inventory_item(_item_list.get_selected_items()[0])
+func _populate() -> void:
+ if inventory == null:
+ return
+ for item in inventory.get_items():
+ var texture := item.get_texture()
+ add_item(_get_item_title(item), texture)
+ set_item_metadata(get_item_count() - 1, item)
-func get_selected_inventory_items() -> Array[InventoryItem]:
- var result: Array[InventoryItem]
- var indexes = _item_list.get_selected_items()
- for i in indexes:
- result.append(_get_inventory_item(i))
- return result
+func _get_item_title(item: InventoryItem) -> String:
+ if item == null:
+ return ""
-func _get_inventory_item(index: int) -> InventoryItem:
- assert(index >= 0)
- assert(index < _item_list.get_item_count())
+ var title = item.get_title()
+ var stack_size := item.get_stack_size()
+ if stack_size > 1:
+ title = "%s (x%d)" % [title, stack_size]
- return _item_list.get_item_metadata(index)
+ return title
-func deselect_inventory_item() -> void:
- _item_list.deselect_all()
+## Deselects all selected inventory items.
+func deselect_inventory_items() -> void:
+ deselect_all()
+## Selects the given inventory item.
func select_inventory_item(item: InventoryItem) -> void:
- _item_list.deselect_all()
- for index in _item_list.item_count:
- if _item_list.get_item_metadata(index) != item:
- continue
- _item_list.select(index)
- return
+ deselect_all()
+ for index in item_count:
+ if get_item_metadata(index) != item:
+ continue
+ select(index)
+ return
--- /dev/null
+uid://dkbsp26xx24nl
--- /dev/null
+@tool
+@icon("res://addons/gloot/images/icon_ctrl_capacity.svg")
+class_name CtrlInventoryCapacity
+extends Control
+## Control node for displaying inventory capacity.
+##
+## Displays the inventory capacity as a progress bar.
+
+const _Utils = preload("res://addons/gloot/core/utils.gd")
+
+## Includes a label displaying inventory capacity if enabled.
+@export var show_label = true:
+ set(new_show_label):
+ if new_show_label == show_label:
+ return
+ show_label = new_show_label
+ if _label != null:
+ _label.visible = show_label
+
+## Reference to an inventory with a WeightConstraint or an ItemCountConstraint.
+@export var inventory: Inventory = null:
+ set(new_inventory):
+ if inventory == new_inventory:
+ return
+
+ if inventory != null:
+ _disconnect_inventory_signals()
+ inventory = new_inventory
+ if inventory != null:
+ _connect_inventory_signals()
+ _refresh()
+ update_configuration_warnings()
+
+var _progress_bar: ProgressBar
+var _label: Label
+
+
+func _get_configuration_warnings() -> PackedStringArray:
+ if !is_instance_valid(inventory):
+ return PackedStringArray([
+ "This CtrlInventoryCapacity node has no inventory set. Set the 'inventory' field to be able to " \
+ + "display its capacity."])
+ if inventory.get_constraint(WeightConstraint) == null && inventory.get_constraint(ItemCountConstraint) == null:
+ return PackedStringArray([
+ "The inventory has no WeightConstraint or ItemCountConstraint child node. Add a WeightConstraint or" \
+ + "an ItemCountConstraint to the inventory to be able to display its capacity."])
+ return PackedStringArray()
+
+
+func _connect_inventory_signals() -> void:
+ if !inventory.is_node_ready():
+ _Utils.safe_connect(inventory.ready, _refresh)
+ inventory.protoset_changed.connect(_refresh)
+ inventory.constraint_changed.connect(_on_constraint_changed)
+ inventory.constraint_added.connect(_on_constraint_changed)
+ inventory.constraint_removed.connect(_on_constraint_changed)
+ inventory.item_added.connect(_on_item_manipulated)
+ inventory.item_removed.connect(_on_item_manipulated)
+ inventory.item_property_changed.connect(_on_item_property_changed)
+
+
+func _disconnect_inventory_signals() -> void:
+ _Utils.safe_disconnect(inventory.ready, _refresh)
+ inventory.protoset_changed.disconnect(_refresh)
+ inventory.constraint_changed.disconnect(_on_constraint_changed)
+ inventory.constraint_added.disconnect(_on_constraint_changed)
+ inventory.constraint_removed.disconnect(_on_constraint_changed)
+ inventory.item_added.disconnect(_on_item_manipulated)
+ inventory.item_removed.disconnect(_on_item_manipulated)
+ inventory.item_property_changed.disconnect(_on_item_property_changed)
+
+
+func _on_constraint_changed(constraint: InventoryConstraint) -> void:
+ if (constraint is WeightConstraint) or (constraint is ItemCountConstraint):
+ _refresh()
+
+
+func _on_item_manipulated(item: InventoryItem) -> void:
+ _refresh()
+
+
+func _on_item_property_changed(item: InventoryItem, property: String) -> void:
+ if property in [Inventory._KEY_STACK_SIZE, WeightConstraint._KEY_WEIGHT]:
+ _refresh()
+
+
+func _refresh() -> void:
+ if !is_instance_valid(_label) || !is_instance_valid(_progress_bar):
+ return
+
+ _label.text = ""
+ _progress_bar.min_value = 0
+ _progress_bar.max_value = 1
+ if inventory == null || !inventory.is_node_ready():
+ return
+
+ var weight_constraint := inventory.get_constraint(WeightConstraint)
+ if weight_constraint != null:
+ _progress_bar.max_value = weight_constraint.capacity
+ _label.text = "%s/%s" % [str(weight_constraint.get_occupied_space()), str(weight_constraint.capacity)]
+ _progress_bar.value = weight_constraint.get_occupied_space()
+ return
+
+ var item_count_constraint := inventory.get_constraint(ItemCountConstraint)
+ if item_count_constraint != null:
+ _progress_bar.max_value = item_count_constraint.capacity
+ _label.text = "%s/%s" % [str(inventory.get_item_count()), str(item_count_constraint.capacity)]
+ _progress_bar.value = inventory.get_item_count()
+ return
+
+
+func _ready() -> void:
+ _progress_bar = ProgressBar.new()
+ _progress_bar.show_percentage = false
+ add_child(_progress_bar)
+
+ _label = Label.new()
+ _label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
+ _label.visible = show_label
+ add_child(_label)
+
+ custom_minimum_size.y = _label.size.y
+ size.y = _label.size.y
+ _label.size.x = size.x
+ _progress_bar.size = size
+ _label.resized.connect(func():
+ custom_minimum_size.y = _label.size.y
+ size.y = _label.size.y
+ )
+ resized.connect(func():
+ _progress_bar.size = size
+ _label.size.x = size.x
+ )
+
+ _refresh()
--- /dev/null
+uid://7mojm1gbttyw
@icon("res://addons/gloot/images/icon_ctrl_inventory_grid.svg")
class_name CtrlInventoryGrid
extends Control
-
-signal item_dropped(item, offset)
-signal selection_changed
-signal inventory_item_activated(item)
-signal inventory_item_context_activated(item)
-signal item_mouse_entered(item)
-signal item_mouse_exited(item)
-
-const CtrlInventoryGridBasic = preload("res://addons/gloot/ui/ctrl_inventory_grid_basic.gd")
-
-class GridControl extends Control:
- var color: Color = Color.BLACK :
- set(new_color):
- if new_color == color:
- return
- color = new_color
- queue_redraw()
- var dimensions: Vector2i = Vector2i.ZERO :
- set(new_dimensions):
- if new_dimensions == dimensions:
- return
- dimensions = new_dimensions
- queue_redraw()
-
- func _init(color_: Color, dimensions_: Vector2i) -> void:
- color = color_
- dimensions = dimensions_
-
- func _draw() -> void:
- var rect = Rect2(Vector2.ZERO, size)
- draw_rect(rect, color, false)
-
- if dimensions.x < 1 || dimensions.y < 1:
- return
-
- for i in range(1, dimensions.x):
- var from: Vector2 = Vector2(i * size.x / dimensions.x, 0)
- var to: Vector2 = Vector2(i * size.x / dimensions.x, size.y)
- draw_line(from, to, color)
- for j in range(1, dimensions.y):
- var from: Vector2 = Vector2(0, j * size.y / dimensions.y)
- var to: Vector2 = Vector2(size.x, j * size.y / dimensions.y)
- draw_line(from, to, color)
-
-
-@export var inventory_path: NodePath :
- set(new_inv_path):
- if new_inv_path == inventory_path:
- return
- inventory_path = new_inv_path
- var node: Node = get_node_or_null(inventory_path)
-
- if node == null:
- return
-
- if is_inside_tree():
- assert(node is InventoryGrid)
-
- inventory = node
- update_configuration_warnings()
-@export var default_item_texture: Texture2D :
- set(new_default_item_texture):
- if is_instance_valid(_ctrl_inventory_grid_basic):
- _ctrl_inventory_grid_basic.default_item_texture = new_default_item_texture
- default_item_texture = new_default_item_texture
-@export var stretch_item_sprites: bool = true :
- set(new_stretch_item_sprites):
- if is_instance_valid(_ctrl_inventory_grid_basic):
- _ctrl_inventory_grid_basic.stretch_item_sprites = new_stretch_item_sprites
- stretch_item_sprites = new_stretch_item_sprites
-@export var field_dimensions: Vector2 = Vector2(32, 32) :
- set(new_field_dimensions):
- if is_instance_valid(_ctrl_inventory_grid_basic):
- _ctrl_inventory_grid_basic.field_dimensions = new_field_dimensions
- field_dimensions = new_field_dimensions
-@export var item_spacing: int = 0 :
- set(new_item_spacing):
- if is_instance_valid(_ctrl_inventory_grid_basic):
- _ctrl_inventory_grid_basic.item_spacing = new_item_spacing
- item_spacing = new_item_spacing
-@export var draw_grid: bool = true :
- set(new_draw_grid):
- if new_draw_grid == draw_grid:
- return
- draw_grid = new_draw_grid
- _queue_refresh()
-@export var grid_color: Color = Color.BLACK :
- set(new_grid_color):
- if(new_grid_color == grid_color):
- return
- grid_color = new_grid_color
- _queue_refresh()
-@export var draw_selections: bool = false :
- set(new_draw_selections):
- if new_draw_selections == draw_selections:
- return
- draw_selections = new_draw_selections
- _queue_refresh()
-@export var selection_color: Color = Color.GRAY :
- set(new_selection_color):
- if(new_selection_color == selection_color):
- return
- selection_color = new_selection_color
- _queue_refresh()
-@export_enum("Single", "Multi") var select_mode: int = CtrlInventoryGridBasic.SelectMode.SELECT_SINGLE :
- set(new_select_mode):
- if select_mode == new_select_mode:
- return
- select_mode = new_select_mode
- if is_instance_valid(_ctrl_inventory_grid_basic):
- _ctrl_inventory_grid_basic.select_mode = select_mode
-
-var inventory: InventoryGrid = null :
- set(new_inventory):
- if inventory == new_inventory:
- return
-
- _disconnect_inventory_signals()
- inventory = new_inventory
- _connect_inventory_signals()
-
- if is_instance_valid(_ctrl_inventory_grid_basic):
- _ctrl_inventory_grid_basic.inventory = inventory
- _queue_refresh()
-
-var _ctrl_grid: GridControl = null
-var _ctrl_selection: Control = null
-var _ctrl_inventory_grid_basic: CtrlInventoryGridBasic = null
+## Control node for displaying inventories with a GridConstraint.
+##
+## Displays the inventory contents on a 2D grid. The grid style, size and item icons are customizable.
+
+signal item_dropped(item: InventoryItem, offset: Vector2) ## Emitted when an item has been dropped onto the 2D grid.
+signal selection_changed ## Emitted when the item selection has changed.
+signal inventory_item_activated(item: InventoryItem) ## Emitted when an inventory item has been double-clicked.
+signal inventory_item_clicked(item: InventoryItem) ## Emitted when an inventory item has been right-clicked.
+signal inventory_item_selected(item: InventoryItem) ## Emitted when an inventory item has been selected.
+signal item_mouse_entered(item: InventoryItem) ## Emitted when the mouse cursor has entered the visible area of an item.
+signal item_mouse_exited(item: InventoryItem) ## Emitted when the mouse cursor has exited the visible area of an item.
+
+const _Verify = preload("res://addons/gloot/core/verify.gd")
+const _CtrlInventoryGridBasic = preload("res://addons/gloot/ui/ctrl_inventory_grid_basic.gd")
+const _CtrlDraggableInventoryItem = preload("res://addons/gloot/ui/ctrl_draggable_inventory_item.gd")
+const _Utils = preload("res://addons/gloot/core/utils.gd")
+
+
+class PriorityPanel extends Panel:
+ enum StylePriority {HIGH = 0, MEDIUM = 1, LOW = 2}
+
+ var regular_style: StyleBox
+ var hover_style: StyleBox
+ var _styles: Array[StyleBox] = [null, null, null]
+
+
+ func _init(regular_style_: StyleBox = null, hover_style_: StyleBox = null) -> void:
+ regular_style = regular_style_
+ hover_style = hover_style_
+
+
+ func _ready() -> void:
+ set_style(regular_style)
+ mouse_entered.connect(func():
+ set_style(hover_style)
+ )
+ mouse_exited.connect(func():
+ set_style(regular_style)
+ )
+
+
+ func set_style(style: StyleBox, priority: int = StylePriority.LOW) -> void:
+ if priority > 2 || priority < 0:
+ return
+ if _styles[priority] == style:
+ return
+
+ _styles[priority] = style
+
+ for i in range(0, 3):
+ if _styles[i] != null:
+ _set_panel_style(_styles[i])
+ return
+
+
+ func _set_panel_style(style: StyleBox) -> void:
+ remove_theme_stylebox_override("panel")
+ if style != null:
+ add_theme_stylebox_override("panel", style)
+
+
+class CustomizablePanel extends Panel:
+ func set_style(style: StyleBox) -> void:
+ remove_theme_stylebox_override("panel")
+ if style != null:
+ add_theme_stylebox_override("panel", style)
+
+## Reference to an inventory with a GridConstraint that is being displayed.
+@export var inventory: Inventory = null:
+ set(new_inventory):
+ if inventory == new_inventory:
+ return
+
+ _disconnect_inventory_signals()
+ inventory = new_inventory
+ _connect_inventory_signals()
+
+ if is_instance_valid(_ctrl_inventory_grid_basic):
+ _ctrl_inventory_grid_basic.inventory = inventory
+ _queue_refresh()
+ update_configuration_warnings()
+## If enabled, stretches the icons based on `field_dimensions`.
+@export var stretch_item_icons: bool = true:
+ set(new_stretch_item_icons):
+ if is_instance_valid(_ctrl_inventory_grid_basic):
+ _ctrl_inventory_grid_basic.stretch_item_icons = new_stretch_item_icons
+ stretch_item_icons = new_stretch_item_icons
+## Size of individual fields in the grid.
+@export var field_dimensions: Vector2 = Vector2(32, 32):
+ set(new_field_dimensions):
+ if is_instance_valid(_ctrl_inventory_grid_basic):
+ _ctrl_inventory_grid_basic.field_dimensions = new_field_dimensions
+ field_dimensions = new_field_dimensions
+ _queue_refresh()
+## Spacing between grid fields.
+@export var item_spacing: int = 0:
+ set(new_item_spacing):
+ if is_instance_valid(_ctrl_inventory_grid_basic):
+ _ctrl_inventory_grid_basic.item_spacing = new_item_spacing
+ item_spacing = new_item_spacing
+ _queue_refresh()
+## Item selection mode. Set to SelectMode.SELECT_MULTI to enable selecting multiple items by holding down CTRL. See the
+## `ItemList.SelectMode` constants for details.
+@export_enum("Single", "Multi") var select_mode: int = ItemList.SelectMode.SELECT_SINGLE:
+ set(new_select_mode):
+ if select_mode == new_select_mode:
+ return
+ select_mode = new_select_mode
+ if is_instance_valid(_ctrl_inventory_grid_basic):
+ _ctrl_inventory_grid_basic.select_mode = select_mode
+## Custom control scene representing an `InventoryItem` (must inherit `CtrlInventoryItemBase`). If set to `null`,
+## `CtrlInventoryItem` will be used to represent the item.
+@export var custom_item_control_scene: PackedScene = null:
+ set(new_custom_item_control_scene):
+ if new_custom_item_control_scene == custom_item_control_scene:
+ return
+ if !_valid_custom_item_control_scene(new_custom_item_control_scene):
+ push_error("Invalid scene! Make sure the custom item control scene inherits from CtrlInventoryItemBase!")
+ return
+ custom_item_control_scene = new_custom_item_control_scene
+ if is_instance_valid(_ctrl_inventory_grid_basic):
+ _ctrl_inventory_grid_basic.custom_item_control_scene = custom_item_control_scene
+
+@export_group("Custom Styles")
+## The default grid field background style. Unlike `background_style`, this style is used when displaying each
+## individual field in the 2D grid.
+@export var field_style: StyleBox = null:
+ set(new_field_style):
+ field_style = new_field_style
+ _queue_refresh()
+## The grid field style used when hovering over it with the mouse.
+@export var field_highlighted_style: StyleBox:
+ set(new_field_highlighted_style):
+ field_highlighted_style = new_field_highlighted_style
+ _queue_refresh()
+## The grid field style used for selected items. Unlike `selection_style`, this style is used as field background behind
+## selected items.
+@export var field_selected_style: StyleBox:
+ set(new_field_selected_style):
+ field_selected_style = new_field_selected_style
+ _queue_refresh()
+## The style used for displaying item selections. Unlike `field_selected_style`, this style is used when displaying
+## rectangles over the selected items.
+@export var selection_style: StyleBox = null:
+ set(new_selection_style):
+ selection_style = new_selection_style
+ _queue_refresh()
+## The style used for the inventory background. Unlike `field_style`, this style is used when displaying a rectangle
+## behind the 2D grid.
+@export var background_style: StyleBox = null:
+ set(new_background_style):
+ background_style = new_background_style
+ _queue_refresh()
+
+var _ctrl_inventory_grid_basic: _CtrlInventoryGridBasic = null
+var _field_background_grid: Control = null
+var _field_backgrounds: Array = []
+var _selection_panels: Control = null
var _refresh_queued: bool = false
+var _background: CustomizablePanel = null
+
+
+func _valid_custom_item_control_scene(scene: PackedScene) -> bool:
+ if scene == null:
+ return true
+ if !scene.can_instantiate():
+ return false
+ var temp_instance := scene.instantiate()
+ if !temp_instance is CtrlInventoryItemBase:
+ temp_instance.free()
+ return false
+ temp_instance.free()
+ return true
+
+
+func _get_field_style() -> StyleBox:
+ if field_style:
+ return field_style
+ return preload("res://addons/gloot/ui/ctrl_inventory_grid_field_style_normal.tres")
+
+
+func _get_selection_style() -> StyleBox:
+ if selection_style:
+ return selection_style
+ return preload("res://addons/gloot/ui/ctrl_inventory_grid_style_selection.tres")
+
+
+func _get_background_style() -> StyleBox:
+ if background_style:
+ return background_style
+ return preload("res://addons/gloot/ui/ctrl_inventory_grid_style_background.tres")
+
+
+func _get_field_highlighted_style() -> StyleBox:
+ return field_highlighted_style
+
+
+func _get_field_selected_style() -> StyleBox:
+ return field_selected_style
+
+
+func _get_configuration_warnings() -> PackedStringArray:
+ if !is_instance_valid(inventory):
+ return PackedStringArray([
+ "This CtrlInventoryGrid node has no inventory set. Set the 'inventory' field to be able to " \
+ + "display its contents."])
+ if inventory.get_constraint(GridConstraint) == null:
+ return PackedStringArray([
+ "The inventory has no GridConstraint child node. Add a GridConstraint to the inventory to be able" \
+ + " to display its contents on a grid."])
+ return PackedStringArray()
func _connect_inventory_signals() -> void:
- if !is_instance_valid(inventory):
- return
- if !inventory.contents_changed.is_connected(_queue_refresh):
- inventory.contents_changed.connect(_queue_refresh)
- if !inventory.size_changed.is_connected(_on_inventory_resized):
- inventory.size_changed.connect(_on_inventory_resized)
+ if !is_instance_valid(inventory):
+ return
+ inventory.constraint_changed.connect(_on_constraint_changed)
+ inventory.constraint_added.connect(_on_constraint_changed)
+ inventory.constraint_removed.connect(_on_constraint_changed)
+ inventory.item_property_changed.connect(_on_item_property_changed)
+ inventory.item_added.connect(_on_item_manipulated)
+ inventory.item_removed.connect(_on_item_manipulated)
func _disconnect_inventory_signals() -> void:
- if !is_instance_valid(inventory):
- return
- if inventory.contents_changed.is_connected(_queue_refresh):
- inventory.contents_changed.disconnect(_queue_refresh)
- if inventory.size_changed.is_connected(_on_inventory_resized):
- inventory.size_changed.disconnect(_on_inventory_resized)
+ if !is_instance_valid(inventory):
+ return
+ inventory.constraint_changed.disconnect(_on_constraint_changed)
+ inventory.constraint_added.disconnect(_on_constraint_changed)
+ inventory.constraint_removed.disconnect(_on_constraint_changed)
+ inventory.item_property_changed.disconnect(_on_item_property_changed)
+ inventory.item_added.disconnect(_on_item_manipulated)
+ inventory.item_removed.disconnect(_on_item_manipulated)
-func _on_inventory_resized() -> void:
- _queue_refresh()
+func _on_constraint_changed(constraint: InventoryConstraint) -> void:
+ if constraint is GridConstraint:
+ _queue_refresh()
-func _get_configuration_warnings() -> PackedStringArray:
- if inventory_path.is_empty():
- return PackedStringArray([
- "This node is not linked to an inventory and can't display any content.\n" + \
- "Set the inventory_path property to point to an InventoryGrid node."])
- return PackedStringArray()
+func _on_item_property_changed(item: InventoryItem, property: String) -> void:
+ var relevant_properties := [
+ GridConstraint._KEY_SIZE,
+ GridConstraint._KEY_ROTATED,
+ ]
+ if property in relevant_properties:
+ _queue_refresh()
-func _ready() -> void:
- if Engine.is_editor_hint():
- # Clean up, in case it is duplicated in the editor
- if is_instance_valid(_ctrl_inventory_grid_basic):
- _ctrl_inventory_grid_basic.queue_free()
- _ctrl_grid.queue_free()
- _ctrl_selection.queue_free()
-
- if has_node(inventory_path):
- inventory = get_node_or_null(inventory_path)
-
- _ctrl_inventory_grid_basic = CtrlInventoryGridBasic.new()
- _ctrl_inventory_grid_basic.inventory = inventory
- _ctrl_inventory_grid_basic.field_dimensions = field_dimensions
- _ctrl_inventory_grid_basic.item_spacing = item_spacing
- _ctrl_inventory_grid_basic.default_item_texture = default_item_texture
- _ctrl_inventory_grid_basic.stretch_item_sprites = stretch_item_sprites
- _ctrl_inventory_grid_basic.name = "CtrlInventoryGridBasic"
- _ctrl_inventory_grid_basic.resized.connect(_update_size)
- _ctrl_inventory_grid_basic.select_mode = select_mode
-
- _ctrl_inventory_grid_basic.item_dropped.connect(func(item: InventoryItem, drop_position: Vector2):
- item_dropped.emit(item, drop_position)
- )
- _ctrl_inventory_grid_basic.selection_changed.connect(func():
- _queue_refresh()
- selection_changed.emit()
- )
- _ctrl_inventory_grid_basic.inventory_item_activated.connect(func(item: InventoryItem):
- inventory_item_activated.emit(item)
- )
- _ctrl_inventory_grid_basic.inventory_item_context_activated.connect(func(item: InventoryItem):
- inventory_item_context_activated.emit(item)
- )
- _ctrl_inventory_grid_basic.item_mouse_entered.connect(func(item: InventoryItem): item_mouse_entered.emit(item))
- _ctrl_inventory_grid_basic.item_mouse_exited.connect(func(item: InventoryItem): item_mouse_exited.emit(item))
-
- _ctrl_grid = GridControl.new(grid_color, _get_inventory_dimensions())
- _ctrl_grid.color = grid_color
- _ctrl_grid.dimensions = _get_inventory_dimensions()
- _ctrl_grid.name = "CtrlGrid"
-
- _ctrl_selection = Control.new()
- _ctrl_selection.visible = draw_selections
-
- add_child(_ctrl_grid)
- add_child(_ctrl_selection)
- add_child(_ctrl_inventory_grid_basic)
-
- _update_size()
- _queue_refresh()
+func _on_item_manipulated(item: InventoryItem) -> void:
+ _queue_refresh()
func _process(_delta) -> void:
- if _refresh_queued:
- _refresh()
- _refresh_queued = false
+ if _refresh_queued:
+ _refresh()
+ _refresh_queued = false
func _refresh() -> void:
- if is_instance_valid(_ctrl_grid):
- _ctrl_grid.dimensions = _get_inventory_dimensions()
- _ctrl_grid.color = grid_color
- _ctrl_grid.visible = draw_grid
- else:
- _ctrl_grid.hide()
-
- if is_instance_valid(_ctrl_selection) && is_instance_valid(_ctrl_inventory_grid_basic):
- for child in _ctrl_selection.get_children():
- child.queue_free()
- for selected_inventory_item in _ctrl_inventory_grid_basic.get_selected_inventory_items():
- var rect := _ctrl_inventory_grid_basic.get_item_rect(selected_inventory_item)
- var selection_rect := ColorRect.new()
- selection_rect.color = selection_color
- selection_rect.position = rect.position
- selection_rect.size = rect.size
- _ctrl_selection.add_child(selection_rect)
- _ctrl_selection.visible = draw_selections
+ _refresh_field_background_grid()
+ _refresh_selection_panel()
func _queue_refresh() -> void:
- _refresh_queued = true
+ _refresh_queued = true
+
+
+func _refresh_selection_panel() -> void:
+ if !is_instance_valid(_ctrl_inventory_grid_basic):
+ return
+ if !is_instance_valid(_selection_panels):
+ return
+
+ for child in _selection_panels.get_children():
+ child.queue_free()
+
+ var selected_items := _ctrl_inventory_grid_basic.get_selected_inventory_items()
+ _selection_panels.visible = (!selected_items.is_empty()) && (_get_selection_style() != null)
+ if selected_items.is_empty():
+ return
+
+ for selected_item in selected_items:
+ var selection_panel := CustomizablePanel.new()
+ var rect := _ctrl_inventory_grid_basic.get_item_rect(selected_item)
+ selection_panel.position = rect.position
+ selection_panel.size = rect.size
+ selection_panel.set_style(_get_selection_style())
+ selection_panel.mouse_filter = Control.MOUSE_FILTER_IGNORE
+ _selection_panels.add_child(selection_panel)
+
+
+func _refresh_field_background_grid() -> void:
+ if !is_instance_valid(_ctrl_inventory_grid_basic):
+ return
+ if is_instance_valid(_field_background_grid):
+ while _field_background_grid.get_child_count() > 0:
+ _field_background_grid.get_children()[0].queue_free()
+ _field_background_grid.remove_child(_field_background_grid.get_children()[0])
+ _field_backgrounds = []
+
+ if !is_instance_valid(inventory):
+ return
+ var grid_constraint: GridConstraint = inventory.get_constraint(GridConstraint)
+ if grid_constraint == null:
+ return
+
+ var inv_size := grid_constraint.size
+ for i in range(inv_size.x):
+ _field_backgrounds.append([])
+ for j in range(inv_size.y):
+ var field_panel: PriorityPanel = PriorityPanel.new(_get_field_style(), _get_field_highlighted_style())
+ field_panel.size = field_dimensions
+ field_panel.position = _ctrl_inventory_grid_basic._get_field_position(Vector2i(i, j))
+ _field_background_grid.add_child(field_panel)
+ _field_backgrounds[i].append(field_panel)
-func _get_inventory_dimensions() -> Vector2i:
- var inventory_grid = _get_inventory()
- if !is_instance_valid(inventory_grid):
- return Vector2i.ZERO
- return _ctrl_inventory_grid_basic.inventory.size
+func _ready() -> void:
+ _background = CustomizablePanel.new()
+ _background.name = "Background"
+ _background.set_style(_get_background_style())
+ add_child(_background)
+
+ _field_background_grid = Control.new()
+ _field_background_grid.name = "FieldBackgrounds"
+ add_child(_field_background_grid)
+
+ _ctrl_inventory_grid_basic = _CtrlInventoryGridBasic.new()
+ _ctrl_inventory_grid_basic.custom_item_control_scene = custom_item_control_scene
+ _ctrl_inventory_grid_basic.inventory = inventory
+ _ctrl_inventory_grid_basic.field_dimensions = field_dimensions
+ _ctrl_inventory_grid_basic.item_spacing = item_spacing
+ _ctrl_inventory_grid_basic.stretch_item_icons = stretch_item_icons
+ _ctrl_inventory_grid_basic.name = "_CtrlInventoryGridBasic"
+ _ctrl_inventory_grid_basic.resized.connect(_update_size)
+ _ctrl_inventory_grid_basic.item_dropped.connect(func(item: InventoryItem, drop_position: Vector2):
+ item_dropped.emit(item, drop_position)
+ )
+ _ctrl_inventory_grid_basic.inventory_item_activated.connect(func(item: InventoryItem):
+ inventory_item_activated.emit(item)
+ )
+ _ctrl_inventory_grid_basic.inventory_item_clicked.connect(func(item: InventoryItem, at_position: Vector2, mouse_button_index: int):
+ inventory_item_clicked.emit(item, at_position, mouse_button_index)
+ )
+ _ctrl_inventory_grid_basic.inventory_item_selected.connect(func(item: InventoryItem):
+ inventory_item_selected.emit(item)
+ )
+ _ctrl_inventory_grid_basic.item_mouse_entered.connect(_on_item_mouse_entered)
+ _ctrl_inventory_grid_basic.item_mouse_exited.connect(_on_item_mouse_exited)
+ _ctrl_inventory_grid_basic.selection_changed.connect(_on_selection_changed)
+ _ctrl_inventory_grid_basic.select_mode = select_mode
+ _ctrl_inventory_grid_basic.mouse_filter = Control.MOUSE_FILTER_IGNORE
+ add_child(_ctrl_inventory_grid_basic)
+
+ _selection_panels = Control.new()
+ _selection_panels.mouse_filter = Control.MOUSE_FILTER_IGNORE
+ _selection_panels.name = "SelectionPanels"
+ add_child(_selection_panels)
+
+ _update_size()
+ _queue_refresh()
+
+
+func _notification(what: int) -> void:
+ if what == NOTIFICATION_DRAG_BEGIN:
+ _ctrl_inventory_grid_basic.mouse_filter = Control.MOUSE_FILTER_PASS
+ if what == NOTIFICATION_DRAG_END:
+ _ctrl_inventory_grid_basic.mouse_filter = Control.MOUSE_FILTER_IGNORE
+ _fill_background(_get_field_style(), PriorityPanel.StylePriority.LOW)
func _update_size() -> void:
- custom_minimum_size = _ctrl_inventory_grid_basic.size
- size = _ctrl_inventory_grid_basic.size
- _ctrl_grid.custom_minimum_size = _ctrl_inventory_grid_basic.size
- _ctrl_grid.size = _ctrl_inventory_grid_basic.size
+ custom_minimum_size = _ctrl_inventory_grid_basic.size
+ size = _ctrl_inventory_grid_basic.size
+ _background.size = _ctrl_inventory_grid_basic.size
+
+
+func _on_item_mouse_entered(item: InventoryItem) -> void:
+ _set_item_background(item, _get_field_highlighted_style(), PriorityPanel.StylePriority.MEDIUM)
+ item_mouse_entered.emit(item)
+
+
+func _on_item_mouse_exited(item: InventoryItem) -> void:
+ _set_item_background(item, null, PriorityPanel.StylePriority.MEDIUM)
+ item_mouse_exited.emit(item)
+
+
+func _on_selection_changed() -> void:
+ _handle_selection_change()
+ selection_changed.emit()
+
+
+func _handle_selection_change() -> void:
+ if !is_instance_valid(inventory):
+ return
+ _refresh_selection_panel()
+
+ if !_get_field_selected_style():
+ return
+ for item in inventory.get_items():
+ if item in _ctrl_inventory_grid_basic.get_selected_inventory_items():
+ _set_item_background(item, _get_field_selected_style(), PriorityPanel.StylePriority.HIGH)
+ else:
+ _set_item_background(item, null, PriorityPanel.StylePriority.HIGH)
+
+
+func _on_inventory_resized() -> void:
+ _refresh_field_background_grid()
+
+
+func _input(event) -> void:
+ if !(event is InputEventMouseMotion):
+ return
+ if !is_instance_valid(inventory):
+ return
+
+ if !_get_field_highlighted_style():
+ return
+ _highlight_grabbed_item(_get_field_highlighted_style())
+
+
+func _highlight_grabbed_item(style: StyleBox):
+ var grid_constraint: GridConstraint = inventory.get_constraint(GridConstraint)
+ if grid_constraint == null:
+ return
+ var grabbed_item: InventoryItem = _get_global_grabbed_item()
+ if !grabbed_item:
+ return
+
+ var global_grabbed_item_pos: Vector2 = _get_global_grabbed_item_local_pos()
+ if !_is_hovering(global_grabbed_item_pos):
+ _fill_background(_get_field_style(), PriorityPanel.StylePriority.LOW)
+ return
+
+ _fill_background(_get_field_style(), PriorityPanel.StylePriority.LOW)
+
+ var grabbed_item_coords := _ctrl_inventory_grid_basic.get_field_coords(global_grabbed_item_pos + (field_dimensions / 2))
+ var item_size := grid_constraint.get_item_size(grabbed_item)
+ var rect := Rect2i(grabbed_item_coords, item_size)
+ if !Rect2i(Vector2i.ZERO, grid_constraint.size).encloses(rect):
+ return
+ _set_rect_background(rect, style, PriorityPanel.StylePriority.LOW)
+
+
+func _is_hovering(local_pos: Vector2) -> bool:
+ return get_rect().has_point(local_pos)
+
+
+func _set_item_background(item: InventoryItem, style: StyleBox, priority: int) -> bool:
+ var grid_constraint: GridConstraint = inventory.get_constraint(GridConstraint)
+ if !item || grid_constraint == null:
+ return false
+
+ _set_rect_background(grid_constraint.get_item_rect(item), style, priority)
+ return true
+
+
+func _set_rect_background(rect: Rect2i, style: StyleBox, priority: int) -> void:
+ var grid_constraint: GridConstraint = inventory.get_constraint(GridConstraint)
+ var inv_size = grid_constraint.size
+ var h_range = min(rect.size.x + rect.position.x, inv_size.x)
+ for i in range(rect.position.x, h_range):
+ var v_range = min(rect.size.y + rect.position.y, inv_size.y)
+ for j in range(rect.position.y, v_range):
+ _field_backgrounds[i][j].set_style(style, priority)
+
+
+func _fill_background(style: StyleBox, priority: int) -> void:
+ for panel in _field_background_grid.get_children():
+ panel.set_style(style, priority)
+
+
+func _get_global_grabbed_item() -> InventoryItem:
+ var drag_data := get_viewport().gui_get_drag_data()
+ if !is_instance_valid(drag_data):
+ return null
+ if !(drag_data is InventoryItem):
+ return null
+ return drag_data as InventoryItem
-func _get_inventory() -> InventoryGrid:
- if !is_instance_valid(_ctrl_inventory_grid_basic):
- return null
- if !is_instance_valid(_ctrl_inventory_grid_basic.inventory):
- return null
- return _ctrl_inventory_grid_basic.inventory
+func _get_global_grabbed_item_local_pos() -> Vector2:
+ if _get_global_grabbed_item() != null:
+ return get_local_mouse_position() - _CtrlDraggableInventoryItem.get_grab_offset_local_to(self)
+ return Vector2(-1, -1)
-func deselect_inventory_item() -> void:
- if !is_instance_valid(_ctrl_inventory_grid_basic):
- return
- _ctrl_inventory_grid_basic.deselect_inventory_item()
+## Deselects all selected inventory items.
+func deselect_inventory_items() -> void:
+ if !is_instance_valid(_ctrl_inventory_grid_basic):
+ return
+ _ctrl_inventory_grid_basic.deselect_inventory_items()
+## Selects the given inventory item.
func select_inventory_item(item: InventoryItem) -> void:
- if !is_instance_valid(_ctrl_inventory_grid_basic):
- return
- _ctrl_inventory_grid_basic.select_inventory_item(item)
+ if !is_instance_valid(_ctrl_inventory_grid_basic):
+ return
+ _ctrl_inventory_grid_basic.select_inventory_item(item)
+## Returns the selected inventory item. If multiple items are selected, it returns the first one.
func get_selected_inventory_item() -> InventoryItem:
- if !is_instance_valid(_ctrl_inventory_grid_basic):
- return null
- return _ctrl_inventory_grid_basic.get_selected_inventory_item()
+ if !is_instance_valid(_ctrl_inventory_grid_basic):
+ return null
+ return _ctrl_inventory_grid_basic.get_selected_inventory_item()
+## Returns an array of selected inventory items.
func get_selected_inventory_items() -> Array[InventoryItem]:
- if !is_instance_valid(_ctrl_inventory_grid_basic):
- return []
- return _ctrl_inventory_grid_basic.get_selected_inventory_items()
+ if !is_instance_valid(_ctrl_inventory_grid_basic):
+ return []
+ return _ctrl_inventory_grid_basic.get_selected_inventory_items()
--- /dev/null
+uid://bd75talwyq73v
@tool
extends Control
-signal item_dropped(item, offset)
+signal item_dropped(item: InventoryItem, offset: Vector2)
signal selection_changed
-signal inventory_item_activated(item)
-signal inventory_item_context_activated(item)
-signal item_mouse_entered(item)
-signal item_mouse_exited(item)
+signal inventory_item_activated(item: InventoryItem)
+signal inventory_item_clicked(item: InventoryItem)
+signal inventory_item_selected(item: InventoryItem)
+signal item_mouse_entered(item: InventoryItem)
+signal item_mouse_exited(item: InventoryItem)
+
+const _Undoables = preload("res://addons/gloot/editor/undoables.gd")
+const _CtrlDraggableInventoryItem = preload("res://addons/gloot/ui/ctrl_draggable_inventory_item.gd")
+const _Utils = preload("res://addons/gloot/core/utils.gd")
+const _StackManager = preload("res://addons/gloot/core/stack_manager.gd")
+
+@export var inventory: Inventory = null:
+ set(new_inventory):
+ if inventory == new_inventory:
+ return
-const GlootUndoRedo = preload("res://addons/gloot/editor/gloot_undo_redo.gd")
-const CtrlInventoryItemRect = preload("res://addons/gloot/ui/ctrl_inventory_item_rect.gd")
-const CtrlDropZone = preload("res://addons/gloot/ui/ctrl_drop_zone.gd")
-const CtrlDragable = preload("res://addons/gloot/ui/ctrl_dragable.gd")
-const GridConstraint = preload("res://addons/gloot/core/constraints/grid_constraint.gd")
+ _clear_selection()
-enum SelectMode {SELECT_SINGLE = 0, SELECT_MULTI = 1}
+ _disconnect_inventory_signals()
+ inventory = new_inventory
+ _connect_inventory_signals()
-@export var field_dimensions: Vector2 = Vector2(32, 32) :
+ _queue_refresh()
+@export var field_dimensions: Vector2 = Vector2(32, 32):
set(new_field_dimensions):
if new_field_dimensions == field_dimensions:
return
field_dimensions = new_field_dimensions
_queue_refresh()
-@export var item_spacing: int = 0 :
+@export var item_spacing: int = 0:
set(new_item_spacing):
if new_item_spacing == item_spacing:
return
item_spacing = new_item_spacing
_queue_refresh()
-@export var inventory_path: NodePath :
- set(new_inv_path):
- if new_inv_path == inventory_path:
- return
- inventory_path = new_inv_path
- var node: Node = get_node_or_null(inventory_path)
-
- if node == null:
- return
-
- if is_inside_tree():
- assert(node is InventoryGrid)
-
- inventory = node
- update_configuration_warnings()
-@export var default_item_texture: Texture2D :
- set(new_default_item_texture):
- if new_default_item_texture == default_item_texture:
- return
- default_item_texture = new_default_item_texture
- _queue_refresh()
-@export var stretch_item_sprites: bool = true :
- set(new_stretch_item_sprites):
- stretch_item_sprites = new_stretch_item_sprites
+@export var stretch_item_icons: bool = true:
+ set(new_stretch_item_icons):
+ stretch_item_icons = new_stretch_item_icons
_queue_refresh()
-@export_enum("Single", "Multi") var select_mode: int = SelectMode.SELECT_SINGLE :
+@export_enum("Single", "Multi") var select_mode: int = ItemList.SelectMode.SELECT_SINGLE:
set(new_select_mode):
if select_mode == new_select_mode:
return
select_mode = new_select_mode
_clear_selection()
-var inventory: InventoryGrid = null :
- set(new_inventory):
- if inventory == new_inventory:
+@export var custom_item_control_scene: PackedScene = null:
+ set(new_custom_item_control_scene):
+ if new_custom_item_control_scene == custom_item_control_scene:
return
-
- _clear_selection()
-
- _disconnect_inventory_signals()
- inventory = new_inventory
- _connect_inventory_signals()
-
+ custom_item_control_scene = new_custom_item_control_scene
_queue_refresh()
+
var _ctrl_item_container: Control = null
-var _ctrl_drop_zone: CtrlDropZone = null
var _selected_items: Array[InventoryItem] = []
var _refresh_queued: bool = false
-func _get_configuration_warnings() -> PackedStringArray:
- if inventory_path.is_empty():
- return PackedStringArray([
- "This node is not linked to an inventory and it can't display any content.\n" + \
- "Set the inventory_path property to point to an InventoryGrid node."])
- return PackedStringArray()
-
-
func _ready() -> void:
- if Engine.is_editor_hint():
- # Clean up, in case it is duplicated in the editor
- if is_instance_valid(_ctrl_item_container):
- _ctrl_item_container.queue_free()
-
- mouse_filter = Control.MOUSE_FILTER_IGNORE
-
_ctrl_item_container = Control.new()
_ctrl_item_container.size = size
_ctrl_item_container.mouse_filter = Control.MOUSE_FILTER_IGNORE
resized.connect(func(): _ctrl_item_container.size = size)
add_child(_ctrl_item_container)
- _ctrl_drop_zone = CtrlDropZone.new()
- _ctrl_drop_zone.dragable_dropped.connect(_on_dragable_dropped)
- _ctrl_drop_zone.size = size
- resized.connect(func(): _ctrl_drop_zone.size = size)
- CtrlDragable.dragable_grabbed.connect(func(dragable: CtrlDragable, grab_position: Vector2):
- _ctrl_drop_zone.activate()
- )
- CtrlDragable.dragable_dropped.connect(func(dragable: CtrlDragable, zone: CtrlDropZone, drop_position: Vector2):
- _ctrl_drop_zone.deactivate()
- )
- add_child(_ctrl_drop_zone)
-
- if has_node(inventory_path):
- inventory = get_node_or_null(inventory_path)
-
_queue_refresh()
-func _notification(what: int) -> void:
- if what == NOTIFICATION_DRAG_END:
- _ctrl_drop_zone.deactivate()
-
-
func _connect_inventory_signals() -> void:
if !is_instance_valid(inventory):
return
- if !inventory.contents_changed.is_connected(_queue_refresh):
- inventory.contents_changed.connect(_queue_refresh)
- if !inventory.item_property_changed.is_connected(_on_item_property_changed):
- inventory.item_property_changed.connect(_on_item_property_changed)
- if !inventory.size_changed.is_connected(_on_inventory_resized):
- inventory.size_changed.connect(_on_inventory_resized)
- if !inventory.item_removed.is_connected(_on_item_removed):
- inventory.item_removed.connect(_on_item_removed)
+ _Utils.safe_connect(inventory.item_property_changed, _on_item_property_changed)
+ _Utils.safe_connect(inventory.constraint_changed, _on_constraint_changed)
+ _Utils.safe_connect(inventory.item_added, _on_item_added)
+ _Utils.safe_connect(inventory.item_removed, _on_item_removed)
func _disconnect_inventory_signals() -> void:
if !is_instance_valid(inventory):
return
- if inventory.contents_changed.is_connected(_queue_refresh):
- inventory.contents_changed.disconnect(_queue_refresh)
- if inventory.item_property_changed.is_connected(_on_item_property_changed):
- inventory.item_property_changed.disconnect(_on_item_property_changed)
- if inventory.size_changed.is_connected(_on_inventory_resized):
- inventory.size_changed.disconnect(_on_inventory_resized)
- if inventory.item_removed.is_connected(_on_item_removed):
- inventory.item_removed.disconnect(_on_item_removed)
-
-
-func _on_item_property_changed(_item: InventoryItem, property_name: String) -> void:
- var relevant_properties = [
- GridConstraint.KEY_WIDTH,
- GridConstraint.KEY_HEIGHT,
- GridConstraint.KEY_SIZE,
- GridConstraint.KEY_ROTATED,
- GridConstraint.KEY_GRID_POSITION,
- InventoryItem.KEY_IMAGE,
+ _Utils.safe_disconnect(inventory.item_property_changed, _on_item_property_changed)
+ _Utils.safe_disconnect(inventory.constraint_changed, _on_constraint_changed)
+ _Utils.safe_disconnect(inventory.item_added, _on_item_added)
+ _Utils.safe_disconnect(inventory.item_removed, _on_item_removed)
+
+
+func _on_constraint_changed(constraint: InventoryConstraint) -> void:
+ _queue_refresh()
+
+
+func _on_item_property_changed(_item: InventoryItem, property: String) -> void:
+ var relevant_properties := [
+ GridConstraint._KEY_SIZE,
+ GridConstraint._KEY_ROTATED,
+ GridConstraint._KEY_POSITIVE_ROTATION,
+ Inventory._KEY_STACK_SIZE,
+ InventoryItem._KEY_IMAGE,
]
- if property_name in relevant_properties:
+ if property in relevant_properties:
_queue_refresh()
_queue_refresh()
+func _on_item_added(item: InventoryItem) -> void:
+ _queue_refresh()
+
+
func _on_item_removed(item: InventoryItem) -> void:
_deselect(item)
+ _queue_refresh()
func _process(_delta) -> void:
func _refresh() -> void:
- _ctrl_drop_zone.deactivate()
+ _clear_list()
+ if !is_instance_valid(inventory):
+ return
+
custom_minimum_size = _get_inventory_size_px()
size = custom_minimum_size
-
- _clear_list()
_populate_list()
func _get_inventory_size_px() -> Vector2:
- if !is_instance_valid(inventory):
+ var grid_constraint: GridConstraint = inventory.get_constraint(GridConstraint)
+ if !is_instance_valid(inventory) || grid_constraint == null:
return Vector2.ZERO
- var result := Vector2(inventory.size.x * field_dimensions.x, \
- inventory.size.y * field_dimensions.y)
+ var inv_size := grid_constraint.size
+ var result := Vector2(inv_size.x * field_dimensions.x, inv_size.y * field_dimensions.y)
# Also take item spacing into consideration
- result += Vector2(inventory.size - Vector2i.ONE) * item_spacing
+ result += Vector2(inv_size - Vector2i.ONE) * item_spacing
return result
if !is_instance_valid(_ctrl_item_container):
return
- for ctrl_inventory_item in _ctrl_item_container.get_children():
- _ctrl_item_container.remove_child(ctrl_inventory_item)
- ctrl_inventory_item.queue_free()
+ for ctrl_draggable_inventory_item in _ctrl_item_container.get_children():
+ _ctrl_item_container.remove_child(ctrl_draggable_inventory_item)
+ ctrl_draggable_inventory_item.queue_free()
func _populate_list() -> void:
- if !is_instance_valid(inventory) || !is_instance_valid(_ctrl_item_container):
+ var grid_constraint: GridConstraint = inventory.get_constraint(GridConstraint)
+ if !is_instance_valid(inventory) || (!is_instance_valid(grid_constraint)) || !is_instance_valid(_ctrl_item_container):
return
for item in inventory.get_items():
- var ctrl_inventory_item = CtrlInventoryItemRect.new()
- ctrl_inventory_item.texture = default_item_texture
- ctrl_inventory_item.item = item
- ctrl_inventory_item.grabbed.connect(_on_item_grab.bind(ctrl_inventory_item))
- ctrl_inventory_item.dropped.connect(_on_item_drop.bind(ctrl_inventory_item))
- ctrl_inventory_item.activated.connect(_on_item_activated.bind(ctrl_inventory_item))
- ctrl_inventory_item.context_activated.connect(_on_item_context_activated.bind(ctrl_inventory_item))
- ctrl_inventory_item.mouse_entered.connect(_on_item_mouse_entered.bind(ctrl_inventory_item))
- ctrl_inventory_item.mouse_exited.connect(_on_item_mouse_exited.bind(ctrl_inventory_item))
- ctrl_inventory_item.clicked.connect(_on_item_clicked.bind(ctrl_inventory_item))
- ctrl_inventory_item.size = _get_item_sprite_size(item)
-
- ctrl_inventory_item.position = _get_field_position(inventory.get_item_position(item))
- ctrl_inventory_item.stretch_mode = TextureRect.STRETCH_KEEP_CENTERED
- if stretch_item_sprites:
- ctrl_inventory_item.stretch_mode = TextureRect.STRETCH_SCALE
-
- _ctrl_item_container.add_child(ctrl_inventory_item)
-
-
-func _on_item_grab(offset: Vector2, ctrl_inventory_item: CtrlInventoryItemRect) -> void:
- _clear_selection()
+ var ctrl_draggable_inventory_item = _CtrlDraggableInventoryItem.new()
+ ctrl_draggable_inventory_item.item = item
+ ctrl_draggable_inventory_item.ctrl_inventory_item_scene = custom_item_control_scene
+ ctrl_draggable_inventory_item.activated.connect(_on_inventory_item_activated.bind(ctrl_draggable_inventory_item))
+ ctrl_draggable_inventory_item.clicked.connect(_on_inventory_item_clicked.bind(ctrl_draggable_inventory_item))
+ ctrl_draggable_inventory_item.mouse_entered.connect(_on_item_mouse_entered.bind(ctrl_draggable_inventory_item))
+ ctrl_draggable_inventory_item.mouse_exited.connect(_on_item_mouse_exited.bind(ctrl_draggable_inventory_item))
+ ctrl_draggable_inventory_item.size = _get_item_sprite_size(item)
+ ctrl_draggable_inventory_item.position = _get_field_position(grid_constraint.get_item_position(item))
+ ctrl_draggable_inventory_item.icon_stretch_mode = TextureRect.STRETCH_KEEP_CENTERED
+ if stretch_item_icons:
+ ctrl_draggable_inventory_item.icon_stretch_mode = TextureRect.STRETCH_SCALE
-func _on_item_drop(zone: CtrlDropZone, drop_position: Vector2, ctrl_inventory_item: CtrlInventoryItemRect) -> void:
- var item: InventoryItem = ctrl_inventory_item.item
- # The item might have been freed in case the item stack has been moved and merged with another
- # stack.
- if is_instance_valid(item) and inventory.has_item(item):
- if zone == null:
- item_dropped.emit(item, drop_position + ctrl_inventory_item.position)
+ _ctrl_item_container.add_child(ctrl_draggable_inventory_item)
-func _get_item_sprite_size(item: InventoryItem) -> Vector2:
- var item_size := inventory.get_item_size(item)
- var sprite_size := Vector2(item_size) * field_dimensions
-
- # Also take item spacing into consideration
- sprite_size += (Vector2(item_size) - Vector2.ONE) * item_spacing
-
- return sprite_size
+func _notification(what):
+ if what == NOTIFICATION_DRAG_BEGIN:
+ _clear_selection()
+ for c in _ctrl_item_container.get_children():
+ c.mouse_filter = Control.MOUSE_FILTER_IGNORE
+ elif what == NOTIFICATION_DRAG_END:
+ for c in _ctrl_item_container.get_children():
+ c.mouse_filter = Control.MOUSE_FILTER_PASS
-func _on_item_activated(ctrl_inventory_item: CtrlInventoryItemRect) -> void:
- var item = ctrl_inventory_item.item
- if !item:
- return
+func _can_drop_data(at_position: Vector2, data) -> bool:
+ return data is InventoryItem
- inventory_item_activated.emit(item)
-
-func _on_item_context_activated(ctrl_inventory_item: CtrlInventoryItemRect) -> void:
- var item = ctrl_inventory_item.item
- if !item:
- return
-
- inventory_item_context_activated.emit(item)
+func _drop_data(at_position: Vector2, data) -> void:
+ var local_offset := _CtrlDraggableInventoryItem.get_grab_offset_local_to(self)
+ at_position -= local_offset
+ var item := (data as InventoryItem)
+ if is_instance_valid(item):
+ _on_item_dropped(item, at_position)
-func _on_item_mouse_entered(ctrl_inventory_item) -> void:
- item_mouse_entered.emit(ctrl_inventory_item.item)
+func _get_item_sprite_size(item: InventoryItem) -> Vector2:
+ var grid_constraint: GridConstraint = inventory.get_constraint(GridConstraint)
+ var item_size := grid_constraint.get_item_size(item)
+ var sprite_size := Vector2(item_size) * field_dimensions
+ # Also take item spacing into consideration
+ sprite_size += (Vector2(item_size) - Vector2.ONE) * item_spacing
-func _on_item_mouse_exited(ctrl_inventory_item) -> void:
- item_mouse_exited.emit(ctrl_inventory_item.item)
+ return sprite_size
-func _on_item_clicked(ctrl_inventory_item) -> void:
- var item = ctrl_inventory_item.item
+func _on_inventory_item_clicked(at_position: Vector2,
+ button_index: int,
+ ctrl_draggable_inventory_item: _CtrlDraggableInventoryItem) -> void:
+ var item = ctrl_draggable_inventory_item.item
if !is_instance_valid(item):
return
- if select_mode == SelectMode.SELECT_MULTI && Input.is_key_pressed(KEY_CTRL):
+ if select_mode == ItemList.SelectMode.SELECT_MULTI && Input.is_key_pressed(KEY_CTRL):
if !_is_item_selected(item):
_select(item)
else:
_clear_selection()
_select(item)
+ inventory_item_clicked.emit(item, at_position, button_index)
+
+
+func _on_inventory_item_activated(ctrl_draggable_inventory_item: _CtrlDraggableInventoryItem) -> void:
+ var item = ctrl_draggable_inventory_item.item
+ if !item:
+ return
+
+ inventory_item_activated.emit(item)
+
+
+func _on_item_mouse_entered(ctrl_draggable_inventory_item) -> void:
+ item_mouse_entered.emit(ctrl_draggable_inventory_item.item)
+
+
+func _on_item_mouse_exited(ctrl_draggable_inventory_item) -> void:
+ item_mouse_exited.emit(ctrl_draggable_inventory_item.item)
+
func _select(item: InventoryItem) -> void:
if item in _selected_items:
return
_selected_items.append(item)
+ inventory_item_selected.emit(item)
selection_changed.emit()
selection_changed.emit()
-func _on_dragable_dropped(dragable: CtrlDragable, drop_position: Vector2) -> void:
- var item: InventoryItem = dragable.item
+func _on_item_dropped(item: InventoryItem, drop_position: Vector2) -> void:
if item == null:
return
func _handle_item_transfer(item: InventoryItem, drop_position: Vector2) -> void:
- var source_inventory: InventoryGrid = item.get_inventory()
+ var source_inventory: Inventory = item.get_inventory()
+ var grid_constraint: GridConstraint = inventory.get_constraint(GridConstraint)
var field_coords = get_field_coords(drop_position + (field_dimensions / 2))
if source_inventory != null:
- if source_inventory.item_protoset != inventory.item_protoset:
+ if source_inventory.protoset != inventory.protoset:
return
- source_inventory.transfer_to(item, inventory, field_coords)
- elif !inventory.add_item_at(item, field_coords):
+ if grid_constraint.add_item_at(item, field_coords):
+ return
+ if _merge_item(item, field_coords):
+ return
+ _swap_items(item, field_coords)
+ elif !grid_constraint.add_item_at(item, field_coords):
_swap_items(item, field_coords)
func _move_item(item: InventoryItem, move_position: Vector2i) -> bool:
- if !inventory.rect_free(Rect2i(move_position, inventory.get_item_size(item)), item):
+ var grid_constraint: GridConstraint = inventory.get_constraint(GridConstraint)
+ if !grid_constraint.rect_free(Rect2i(move_position, grid_constraint.get_item_size(item)), item):
return false
if Engine.is_editor_hint():
- GlootUndoRedo.move_inventory_item(inventory, item, move_position)
+ _Undoables.undoable_action(inventory, "Move Inventory Item", func():
+ return grid_constraint.move_item_to(item, move_position)
+ )
return true
- inventory.move_item_to(item, move_position)
+ grid_constraint.move_item_to(item, move_position)
return true
func _merge_item(item_src: InventoryItem, position: Vector2i) -> bool:
- if !(inventory is InventoryGridStacked):
- return false
-
- var item_dst = (inventory as InventoryGridStacked)._get_mergable_item_at(item_src, position)
+ var item_dst = _get_mergable_item_at(item_src, position)
if item_dst == null:
return false
if Engine.is_editor_hint():
- GlootUndoRedo.join_inventory_items(inventory, item_dst, item_src)
+ _Undoables.undoable_action(inventory, "Merge Inventory Items", func():
+ return inventory.merge_stacks(item_dst, item_src, true)
+ )
else:
- (inventory as InventoryGridStacked).join(item_dst, item_src)
+ inventory.merge_stacks(item_dst, item_src, true)
return true
+func _get_mergable_item_at(item: InventoryItem, position: Vector2i) -> InventoryItem:
+ var grid_constraint: GridConstraint = inventory.get_constraint(GridConstraint)
+ var target_item := grid_constraint.get_item_at(position)
+ if target_item != null && item.can_merge_into(target_item, true):
+ return target_item
+ return null
+
+
func _swap_items(item: InventoryItem, position: Vector2i) -> bool:
- var item2 = inventory.get_item_at(position)
+ var grid_constraint: GridConstraint = inventory.get_constraint(GridConstraint)
+ var item2 := grid_constraint.get_item_at(position)
if item2 == null:
return false
if Engine.is_editor_hint():
- GlootUndoRedo.swap_inventory_items(item, item2)
+ var inventories: Array[Inventory]
+ if is_instance_valid(item.get_inventory()):
+ inventories.append(item.get_inventory())
+ if is_instance_valid(item2.get_inventory()):
+ inventories.append(item2.get_inventory())
+ _Undoables.undoable_action(inventories, "Swap Inventory Items", func():
+ if !_StackManager.stacks_compatible(item, item2):
+ InventoryItem.swap(item, item2)
+ return true
+ )
else:
- InventoryItem.swap(item, item2)
+ if !_StackManager.stacks_compatible(item, item2):
+ InventoryItem.swap(item, item2)
return true
return field_position
-func deselect_inventory_item() -> void:
+func deselect_inventory_items() -> void:
_clear_selection()
if !is_instance_valid(item):
return Rect2()
return Rect2(
- _get_field_position(inventory.get_item_position(item)),
+ _get_field_position(inventory.get_constraint(GridConstraint).get_item_position(item)),
_get_item_sprite_size(item)
)
-
--- /dev/null
+uid://bwg12d5wf7h5t
+++ /dev/null
-@tool
-@icon("res://addons/gloot/images/icon_ctrl_inventory_grid.svg")
-class_name CtrlInventoryGridEx
-extends Control
-
-signal item_dropped(item, offset)
-signal selection_changed
-signal inventory_item_activated(item)
-signal inventory_item_context_activated(item)
-signal item_mouse_entered(item)
-signal item_mouse_exited(item)
-
-const Verify = preload("res://addons/gloot/core/verify.gd")
-const CtrlInventoryGridBasic = preload("res://addons/gloot/ui/ctrl_inventory_grid_basic.gd")
-const CtrlInventoryItemRect = preload("res://addons/gloot/ui/ctrl_inventory_item_rect.gd")
-const CtrlDragable = preload("res://addons/gloot/ui/ctrl_dragable.gd")
-
-
-class PriorityPanel extends Panel:
- enum StylePriority {HIGH = 0, MEDIUM = 1, LOW = 2}
-
- var regular_style: StyleBox
- var hover_style: StyleBox
- var _styles: Array[StyleBox] = [null, null, null]
-
-
- func _init(regular_style_: StyleBox, hover_style_: StyleBox) -> void:
- regular_style = regular_style_
- hover_style = hover_style_
-
-
- func _ready() -> void:
- set_style(regular_style)
- mouse_entered.connect(func():
- set_style(hover_style)
- )
- mouse_exited.connect(func():
- set_style(regular_style)
- )
-
-
- func set_style(style: StyleBox, priority: int = StylePriority.LOW) -> void:
- if priority > 2 || priority < 0:
- return
- if _styles[priority] == style:
- return
-
- _styles[priority] = style
-
- for i in range(0, 3):
- if _styles[i] != null:
- _set_panel_style(_styles[i])
- return
-
-
- func _set_panel_style(style: StyleBox) -> void:
- remove_theme_stylebox_override("panel")
- if style != null:
- add_theme_stylebox_override("panel", style)
-
-
-class SelectionPanel extends Panel:
- func set_style(style: StyleBox) -> void:
- remove_theme_stylebox_override("panel")
- if style != null:
- add_theme_stylebox_override("panel", style)
-
-
-@export var inventory_path: NodePath :
- set(new_inv_path):
- if new_inv_path == inventory_path:
- return
- inventory_path = new_inv_path
- var node: Node = get_node_or_null(inventory_path)
-
- if node == null:
- return
-
- if is_inside_tree():
- assert(node is InventoryGrid)
-
- inventory = node
- update_configuration_warnings()
-@export var default_item_texture: Texture2D :
- set(new_default_item_texture):
- if is_instance_valid(_ctrl_inventory_grid_basic):
- _ctrl_inventory_grid_basic.default_item_texture = new_default_item_texture
- default_item_texture = new_default_item_texture
-@export var stretch_item_sprites: bool = true :
- set(new_stretch_item_sprites):
- if is_instance_valid(_ctrl_inventory_grid_basic):
- _ctrl_inventory_grid_basic.stretch_item_sprites = new_stretch_item_sprites
- stretch_item_sprites = new_stretch_item_sprites
-@export var field_dimensions: Vector2 = Vector2(32, 32) :
- set(new_field_dimensions):
- if is_instance_valid(_ctrl_inventory_grid_basic):
- _ctrl_inventory_grid_basic.field_dimensions = new_field_dimensions
- field_dimensions = new_field_dimensions
-@export var item_spacing: int = 0 :
- set(new_item_spacing):
- if is_instance_valid(_ctrl_inventory_grid_basic):
- _ctrl_inventory_grid_basic.item_spacing = new_item_spacing
- item_spacing = new_item_spacing
-@export_enum("Single", "Multi") var select_mode: int = CtrlInventoryGridBasic.SelectMode.SELECT_SINGLE :
- set(new_select_mode):
- if select_mode == new_select_mode:
- return
- select_mode = new_select_mode
- if is_instance_valid(_ctrl_inventory_grid_basic):
- _ctrl_inventory_grid_basic.select_mode = select_mode
-
-@export_group("Custom Styles")
-@export var field_style: StyleBox :
- set(new_field_style):
- field_style = new_field_style
- _queue_refresh()
-@export var field_highlighted_style: StyleBox :
- set(new_field_highlighted_style):
- field_highlighted_style = new_field_highlighted_style
- _queue_refresh()
-@export var field_selected_style: StyleBox :
- set(new_field_selected_style):
- field_selected_style = new_field_selected_style
- _queue_refresh()
-@export var selection_style: StyleBox :
- set(new_selection_style):
- selection_style = new_selection_style
- _queue_refresh()
-
-var inventory: InventoryGrid = null :
- set(new_inventory):
- if inventory == new_inventory:
- return
-
- _disconnect_inventory_signals()
- inventory = new_inventory
- _connect_inventory_signals()
-
- if is_instance_valid(_ctrl_inventory_grid_basic):
- _ctrl_inventory_grid_basic.inventory = inventory
- _queue_refresh()
-var _ctrl_inventory_grid_basic: CtrlInventoryGridBasic = null
-var _field_background_grid: Control = null
-var _field_backgrounds: Array = []
-var _selection_panels: Control = null
-var _refresh_queued: bool = false
-
-
-func _connect_inventory_signals() -> void:
- if !is_instance_valid(inventory):
- return
- if !inventory.contents_changed.is_connected(_queue_refresh):
- inventory.contents_changed.connect(_queue_refresh)
- if !inventory.size_changed.is_connected(_on_inventory_resized):
- inventory.size_changed.connect(_on_inventory_resized)
-
-
-func _disconnect_inventory_signals() -> void:
- if !is_instance_valid(inventory):
- return
- if inventory.contents_changed.is_connected(_queue_refresh):
- inventory.contents_changed.disconnect(_queue_refresh)
- if inventory.size_changed.is_connected(_on_inventory_resized):
- inventory.size_changed.disconnect(_on_inventory_resized)
-
-
-func _process(_delta) -> void:
- if _refresh_queued:
- _refresh()
- _refresh_queued = false
-
-
-func _refresh() -> void:
- _refresh_field_background_grid()
- _refresh_selection_panel()
-
-
-func _queue_refresh() -> void:
- _refresh_queued = true
-
-
-func _refresh_selection_panel() -> void:
- if !is_instance_valid(_selection_panels):
- return
-
- for child in _selection_panels.get_children():
- child.queue_free()
-
- var selected_items := _ctrl_inventory_grid_basic.get_selected_inventory_items()
- _selection_panels.visible = (!selected_items.is_empty()) && (selection_style != null)
- if selected_items.is_empty():
- return
-
- for selected_item in selected_items:
- var selection_panel := SelectionPanel.new()
- var rect := _ctrl_inventory_grid_basic.get_item_rect(selected_item)
- selection_panel.position = rect.position
- selection_panel.size = rect.size
- selection_panel.set_style(selection_style)
- selection_panel.mouse_filter = Control.MOUSE_FILTER_IGNORE
- _selection_panels.add_child(selection_panel)
-
-
-func _refresh_field_background_grid() -> void:
- if is_instance_valid(_field_background_grid):
- while _field_background_grid.get_child_count() > 0:
- _field_background_grid.get_children()[0].queue_free()
- _field_background_grid.remove_child(_field_background_grid.get_children()[0])
- _field_backgrounds = []
-
- if !is_instance_valid(inventory):
- return
-
- for i in range(inventory.size.x):
- _field_backgrounds.append([])
- for j in range(inventory.size.y):
- var field_panel: PriorityPanel = PriorityPanel.new(field_style, field_highlighted_style)
- field_panel.visible = (field_style != null)
- field_panel.size = field_dimensions
- field_panel.position = _ctrl_inventory_grid_basic._get_field_position(Vector2i(i, j))
- _field_background_grid.add_child(field_panel)
- _field_backgrounds[i].append(field_panel)
-
-
-func _ready() -> void:
- if Engine.is_editor_hint():
- # Clean up, in case it is duplicated in the editor
- if is_instance_valid(_ctrl_inventory_grid_basic):
- _ctrl_inventory_grid_basic.queue_free()
- _field_background_grid.queue_free()
-
- if has_node(inventory_path):
- inventory = get_node_or_null(inventory_path)
-
- _field_background_grid = Control.new()
- _field_background_grid.name = "FieldBackgrounds"
- add_child(_field_background_grid)
-
- _ctrl_inventory_grid_basic = CtrlInventoryGridBasic.new()
- _ctrl_inventory_grid_basic.inventory = inventory
- _ctrl_inventory_grid_basic.field_dimensions = field_dimensions
- _ctrl_inventory_grid_basic.item_spacing = item_spacing
- _ctrl_inventory_grid_basic.default_item_texture = default_item_texture
- _ctrl_inventory_grid_basic.stretch_item_sprites = stretch_item_sprites
- _ctrl_inventory_grid_basic.name = "CtrlInventoryGridBasic"
- _ctrl_inventory_grid_basic.resized.connect(_update_size)
- _ctrl_inventory_grid_basic.item_dropped.connect(func(item: InventoryItem, drop_position: Vector2):
- item_dropped.emit(item, drop_position)
- )
- _ctrl_inventory_grid_basic.inventory_item_activated.connect(func(item: InventoryItem):
- inventory_item_activated.emit(item)
- )
- _ctrl_inventory_grid_basic.inventory_item_context_activated.connect(func(item: InventoryItem):
- inventory_item_context_activated.emit(item)
- )
- _ctrl_inventory_grid_basic.item_mouse_entered.connect(_on_item_mouse_entered)
- _ctrl_inventory_grid_basic.item_mouse_exited.connect(_on_item_mouse_exited)
- _ctrl_inventory_grid_basic.selection_changed.connect(_on_selection_changed)
- _ctrl_inventory_grid_basic.select_mode = select_mode
- add_child(_ctrl_inventory_grid_basic)
-
- _selection_panels = Control.new()
- _selection_panels.mouse_filter = Control.MOUSE_FILTER_IGNORE
- _selection_panels.name = "SelectionPanels"
- add_child(_selection_panels)
-
- CtrlDragable.dragable_dropped.connect(func(_grabbed_dragable, _zone, _local_drop_position):
- _fill_background(field_style, PriorityPanel.StylePriority.LOW)
- )
-
- _update_size()
- _queue_refresh()
-
-
-func _notification(what: int) -> void:
- if what == NOTIFICATION_DRAG_END:
- _fill_background(field_style, PriorityPanel.StylePriority.LOW)
-
-
-func _update_size() -> void:
- custom_minimum_size = _ctrl_inventory_grid_basic.size
- size = _ctrl_inventory_grid_basic.size
-
-
-func _on_item_mouse_entered(item: InventoryItem) -> void:
- _set_item_background(item, field_highlighted_style, PriorityPanel.StylePriority.MEDIUM)
- item_mouse_entered.emit(item)
-
-
-func _on_item_mouse_exited(item: InventoryItem) -> void:
- _set_item_background(item, null, PriorityPanel.StylePriority.MEDIUM)
- item_mouse_exited.emit(item)
-
-
-func _on_selection_changed() -> void:
- _handle_selection_change()
- selection_changed.emit()
-
-
-func _handle_selection_change() -> void:
- if !is_instance_valid(inventory):
- return
- _refresh_selection_panel()
-
- if !field_selected_style:
- return
- for item in inventory.get_items():
- if item in _ctrl_inventory_grid_basic.get_selected_inventory_items():
- _set_item_background(item, field_selected_style, PriorityPanel.StylePriority.HIGH)
- else:
- _set_item_background(item, null, PriorityPanel.StylePriority.HIGH)
-
-
-func _on_inventory_resized() -> void:
- _refresh_field_background_grid()
-
-
-func _input(event) -> void:
- if !(event is InputEventMouseMotion):
- return
- if !is_instance_valid(inventory):
- return
-
- if !field_highlighted_style:
- return
- _highlight_grabbed_item(field_highlighted_style)
-
-
-func _highlight_grabbed_item(style: StyleBox):
- var grabbed_item: InventoryItem = _get_global_grabbed_item()
- if !grabbed_item:
- return
-
- var global_grabbed_item_pos: Vector2 = _get_global_grabbed_item_local_pos()
- if !_is_hovering(global_grabbed_item_pos):
- _fill_background(field_style, PriorityPanel.StylePriority.LOW)
- return
-
- _fill_background(field_style, PriorityPanel.StylePriority.LOW)
-
- var grabbed_item_coords := _ctrl_inventory_grid_basic.get_field_coords(global_grabbed_item_pos + (field_dimensions / 2))
- var item_size := inventory.get_item_size(grabbed_item)
- var rect := Rect2i(grabbed_item_coords, item_size)
- if !Rect2i(Vector2i.ZERO, inventory.size).encloses(rect):
- return
- _set_rect_background(rect, style, PriorityPanel.StylePriority.LOW)
-
-
-func _is_hovering(local_pos: Vector2) -> bool:
- return get_rect().has_point(local_pos)
-
-
-func _set_item_background(item: InventoryItem, style: StyleBox, priority: int) -> bool:
- if !item:
- return false
-
- _set_rect_background(inventory.get_item_rect(item), style, priority)
- return true
-
-
-func _set_rect_background(rect: Rect2i, style: StyleBox, priority: int) -> void:
- var h_range = min(rect.size.x + rect.position.x, inventory.size.x)
- for i in range(rect.position.x, h_range):
- var v_range = min(rect.size.y + rect.position.y, inventory.size.y)
- for j in range(rect.position.y, v_range):
- _field_backgrounds[i][j].set_style(style, priority)
-
-
-func _fill_background(style: StyleBox, priority: int) -> void:
- for panel in _field_background_grid.get_children():
- panel.set_style(style, priority)
-
-
-func _get_global_grabbed_item() -> InventoryItem:
- if CtrlDragable.get_grabbed_dragable() == null:
- return null
- return (CtrlDragable.get_grabbed_dragable() as CtrlInventoryItemRect).item
-
-
-func _get_global_grabbed_item_local_pos() -> Vector2:
- if CtrlDragable.get_grabbed_dragable():
- return get_local_mouse_position() - CtrlDragable.get_grab_offset_local_to(self)
- return Vector2(-1, -1)
-
-
-func deselect_inventory_item() -> void:
- if !is_instance_valid(_ctrl_inventory_grid_basic):
- return
- _ctrl_inventory_grid_basic.deselect_inventory_item()
-
-
-func select_inventory_item(item: InventoryItem) -> void:
- if !is_instance_valid(_ctrl_inventory_grid_basic):
- return
- _ctrl_inventory_grid_basic.select_inventory_item(item)
-
-
-func get_selected_inventory_item() -> InventoryItem:
- if !is_instance_valid(_ctrl_inventory_grid_basic):
- return null
- return _ctrl_inventory_grid_basic.get_selected_inventory_item()
-
-
-func get_selected_inventory_items() -> Array[InventoryItem]:
- if !is_instance_valid(_ctrl_inventory_grid_basic):
- return []
- return _ctrl_inventory_grid_basic.get_selected_inventory_items()
-
--- /dev/null
+[gd_resource type="StyleBoxFlat" format=3 uid="uid://bab5l46oddme5"]
+
+[resource]
+bg_color = Color(0.6, 0.6, 0.6, 0)
+border_width_right = 1
+border_width_bottom = 1
--- /dev/null
+[gd_resource type="StyleBoxFlat" format=3 uid="uid://dnk4u11b38rr6"]
+
+[resource]
+bg_color = Color(0.6, 0.6, 0.6, 0)
+border_width_left = 1
+border_width_top = 1
--- /dev/null
+[gd_resource type="StyleBoxFlat" format=3 uid="uid://c2h2ygy48r1cr"]
+
+[resource]
+bg_color = Color(0.6, 0.6, 0.6, 0)
+border_width_left = 2
+border_width_top = 2
+border_width_right = 2
+border_width_bottom = 2
+border_color = Color(1, 1, 1, 1)
--- /dev/null
+@tool
+@icon("res://addons/gloot/images/icon_ctrl_inventory_item.svg")
+class_name CtrlInventoryItem
+extends CtrlInventoryItemBase
+## Control node for displaying inventory items.
+##
+## Displays an `InventoryItem` icon and its stack size. Consists of a `TextureRect` (the icon) a `Label` (the stack
+## size).
+
+const _Utils = preload("res://addons/gloot/core/utils.gd")
+
+var _texture_rect: TextureRect
+var _stack_size_label: Label
+var _old_item: InventoryItem = null
+
+
+func _connect_item_signals(new_item: InventoryItem) -> void:
+ if !is_instance_valid(new_item):
+ return
+ _Utils.safe_connect(new_item.property_changed, _on_item_property_changed)
+
+
+func _disconnect_item_signals(old_item: InventoryItem) -> void:
+ if !is_instance_valid(old_item):
+ return
+ _Utils.safe_disconnect(old_item.property_changed, _on_item_property_changed)
+
+
+func _on_item_property_changed(_property: String) -> void:
+ _refresh()
+
+
+func _get_item_position() -> Vector2:
+ if is_instance_valid(item) && item.get_inventory():
+ return item.get_inventory().get_item_position(item)
+ return Vector2(0, 0)
+
+
+func _ready() -> void:
+ item_changed.connect(_on_item_changed)
+ icon_stretch_mode_changed.connect(_on_icon_stretch_mode_changed)
+
+ _texture_rect = TextureRect.new()
+ _texture_rect.mouse_filter = Control.MOUSE_FILTER_IGNORE
+ _texture_rect.expand_mode = TextureRect.EXPAND_IGNORE_SIZE
+ _texture_rect.stretch_mode = icon_stretch_mode
+
+ _stack_size_label = Label.new()
+ _stack_size_label.mouse_filter = Control.MOUSE_FILTER_IGNORE
+ _stack_size_label.horizontal_alignment = HORIZONTAL_ALIGNMENT_RIGHT
+ _stack_size_label.vertical_alignment = VERTICAL_ALIGNMENT_BOTTOM
+
+ add_child(_texture_rect)
+ add_child(_stack_size_label)
+
+ resized.connect(func():
+ _texture_rect.size = size
+ _stack_size_label.size = size
+ )
+
+ _refresh()
+
+
+func _on_item_changed() -> void:
+ _disconnect_item_signals(_old_item)
+ _old_item = item
+ _connect_item_signals(item)
+ _refresh()
+
+
+func _on_icon_stretch_mode_changed() -> void:
+ if is_instance_valid(_texture_rect):
+ _texture_rect.stretch_mode = icon_stretch_mode
+
+
+func _update_texture() -> void:
+ if !is_instance_valid(_texture_rect):
+ return
+
+ if is_instance_valid(item):
+ _texture_rect.texture = item.get_texture()
+ else:
+ _texture_rect.texture = null
+ return
+
+ if is_instance_valid(item) && GridConstraint.is_item_rotated(item):
+ _texture_rect.size = Vector2(size.y, size.x)
+ if GridConstraint.is_item_rotation_positive(item):
+ _texture_rect.position = Vector2(_texture_rect.size.y, 0)
+ _texture_rect.rotation = PI / 2
+ else:
+ _texture_rect.position = Vector2(0, _texture_rect.size.x)
+ _texture_rect.rotation = -PI / 2
+
+ else:
+ _texture_rect.size = size
+ _texture_rect.position = Vector2.ZERO
+ _texture_rect.rotation = 0
+
+
+func _update_stack_size() -> void:
+ if !is_instance_valid(_stack_size_label):
+ return
+ if !is_instance_valid(item):
+ _stack_size_label.text = ""
+ return
+ var stack_size: int = item.get_stack_size()
+ if stack_size <= 1:
+ _stack_size_label.text = ""
+ else:
+ _stack_size_label.text = "%d" % stack_size
+ _stack_size_label.size = size
+
+
+func _refresh() -> void:
+ _update_texture()
+ _update_stack_size()
--- /dev/null
+uid://dyd1r31bdgjgu
--- /dev/null
+@tool
+@icon("res://addons/gloot/images/icon_ctrl_inventory_item.svg")
+class_name CtrlInventoryItemBase
+extends Control
+## Base class for `CtrlInventoryItem`.
+##
+## `CtrlInventoryItemBase` defines some signals and members used for displaying an `InventoryItem`. Must be inherited
+## when defining a custom class for representing inventory items.
+
+## Emitted when the `item` property has been changed.
+signal item_changed
+
+## Emitted when the `icon_stretch_mode` property has been changed.
+signal icon_stretch_mode_changed
+
+## Reference to the `InventoryItem` that is being displayed.
+var item: InventoryItem = null:
+ set(new_item):
+ if item == new_item:
+ return
+ item = new_item
+ item_changed.emit()
+
+@export_group("Icon Behavior", "icon_")
+## Controls the item icon behavior when resizing the node's bounding rectangle. See the `TextureRect.StretchMode`
+## constants for details.
+@export var icon_stretch_mode: TextureRect.StretchMode = TextureRect.StretchMode.STRETCH_SCALE:
+ set(new_icon_stretch_mode):
+ if new_icon_stretch_mode == icon_stretch_mode:
+ return
+ icon_stretch_mode = new_icon_stretch_mode
+ icon_stretch_mode_changed.emit()
--- /dev/null
+uid://dydpqmpsplkbg
+++ /dev/null
-extends "res://addons/gloot/ui/ctrl_dragable.gd"
-
-const CtrlInventoryItemRect = preload("res://addons/gloot/ui/ctrl_inventory_item_rect.gd")
-const StacksConstraint = preload("res://addons/gloot/core/constraints/stacks_constraint.gd")
-const GridConstraint = preload("res://addons/gloot/core/constraints/grid_constraint.gd")
-
-signal activated
-signal clicked
-signal context_activated
-
-var item: InventoryItem :
- set(new_item):
- if item == new_item:
- return
-
- _disconnect_item_signals()
- _connect_item_signals(new_item)
-
- item = new_item
- if item:
- texture = item.get_texture()
- activate()
- else:
- texture = null
- deactivate()
- _update_stack_size()
-var texture: Texture2D :
- set(new_texture):
- if new_texture == texture:
- return
- texture = new_texture
- _update_texture()
-var stretch_mode: TextureRect.StretchMode = TextureRect.StretchMode.STRETCH_SCALE :
- set(new_stretch_mode):
- if stretch_mode == new_stretch_mode:
- return
- stretch_mode = new_stretch_mode
- if is_instance_valid(_texture_rect):
- _texture_rect.stretch_mode = stretch_mode
-var item_slot: ItemSlot
-var _texture_rect: TextureRect
-var _stack_size_label: Label
-static var _stored_preview_size: Vector2
-static var _stored_preview_offset: Vector2
-
-
-func _connect_item_signals(new_item: InventoryItem) -> void:
- if new_item == null:
- return
-
- if !new_item.protoset_changed.is_connected(_refresh):
- new_item.protoset_changed.connect(_refresh)
- if !new_item.prototype_id_changed.is_connected(_refresh):
- new_item.prototype_id_changed.connect(_refresh)
- if !new_item.property_changed.is_connected(_on_item_property_changed):
- new_item.property_changed.connect(_on_item_property_changed)
-
-
-func _disconnect_item_signals() -> void:
- if !is_instance_valid(item):
- return
-
- if item.protoset_changed.is_connected(_refresh):
- item.protoset_changed.disconnect(_refresh)
- if item.prototype_id_changed.is_connected(_refresh):
- item.prototype_id_changed.disconnect(_refresh)
- if item.property_changed.is_connected(_on_item_property_changed):
- item.property_changed.disconnect(_on_item_property_changed)
-
-
-func _on_item_property_changed(property_name: String) -> void:
- var relevant_properties = [
- StacksConstraint.KEY_STACK_SIZE,
- GridConstraint.KEY_WIDTH,
- GridConstraint.KEY_HEIGHT,
- GridConstraint.KEY_SIZE,
- GridConstraint.KEY_ROTATED,
- GridConstraint.KEY_GRID_POSITION,
- InventoryItem.KEY_IMAGE,
- ]
- if property_name in relevant_properties:
- _refresh()
-
-
-func _ready() -> void:
- _texture_rect = TextureRect.new()
- _texture_rect.mouse_filter = Control.MOUSE_FILTER_IGNORE
- _texture_rect.expand_mode = TextureRect.EXPAND_IGNORE_SIZE
- _texture_rect.stretch_mode = stretch_mode
- _stack_size_label = Label.new()
- _stack_size_label.mouse_filter = Control.MOUSE_FILTER_IGNORE
- _stack_size_label.horizontal_alignment = HORIZONTAL_ALIGNMENT_RIGHT
- _stack_size_label.vertical_alignment = VERTICAL_ALIGNMENT_BOTTOM
- add_child(_texture_rect)
- add_child(_stack_size_label)
-
- resized.connect(func():
- _texture_rect.size = size
- _stack_size_label.size = size
- )
-
- if item == null:
- deactivate()
-
- _refresh()
-
-
-func _update_texture() -> void:
- if !is_instance_valid(_texture_rect):
- return
- _texture_rect.texture = texture
- if is_instance_valid(item) && GridConstraint.is_item_rotated(item):
- _texture_rect.size = Vector2(size.y, size.x)
- if GridConstraint.is_item_rotation_positive(item):
- _texture_rect.position = Vector2(_texture_rect.size.y, 0)
- _texture_rect.rotation = PI/2
- else:
- _texture_rect.position = Vector2(0, _texture_rect.size.x)
- _texture_rect.rotation = -PI/2
-
- else:
- _texture_rect.size = size
- _texture_rect.position = Vector2.ZERO
- _texture_rect.rotation = 0
-
-
-func _update_stack_size() -> void:
- if !is_instance_valid(_stack_size_label):
- return
- if !is_instance_valid(item):
- _stack_size_label.text = ""
- return
- var stack_size: int = StacksConstraint.get_item_stack_size(item)
- if stack_size <= 1:
- _stack_size_label.text = ""
- else:
- _stack_size_label.text = "%d" % stack_size
- _stack_size_label.size = size
-
-
-func _refresh() -> void:
- _update_texture()
- _update_stack_size()
-
-
-func create_preview() -> Control:
- var preview = CtrlInventoryItemRect.new()
- preview.item = item
- preview.texture = texture
- preview.size = size
- preview.stretch_mode = stretch_mode
- return preview
-
-
-func _gui_input(event: InputEvent) -> void:
- if !(event is InputEventMouseButton):
- return
-
- var mb_event: InputEventMouseButton = event
- if mb_event.button_index == MOUSE_BUTTON_LEFT:
- if mb_event.double_click:
- activated.emit()
- else:
- clicked.emit()
- elif mb_event.button_index == MOUSE_BUTTON_MASK_RIGHT:
- context_activated.emit()
-
+++ /dev/null
-@tool
-@icon("res://addons/gloot/images/icon_ctrl_inventory_stacked.svg")
-class_name CtrlInventoryStacked
-extends CtrlInventory
-
-@export var progress_bar_visible: bool = true :
- set(new_progress_bar_visible):
- progress_bar_visible = new_progress_bar_visible
- if _progress_bar:
- _progress_bar.visible = progress_bar_visible
-@export var label_visible: bool = true :
- set(new_label_visible):
- label_visible = new_label_visible
- if _label:
- _label.visible = label_visible
-var _progress_bar: ProgressBar
-var _label: Label
-
-
-func _ready():
- super._ready()
-
- _progress_bar = ProgressBar.new()
- _progress_bar.size_flags_horizontal = SIZE_EXPAND_FILL
- _progress_bar.show_percentage = false
- _progress_bar.visible = progress_bar_visible
- _progress_bar.custom_minimum_size.y = 20
- _vbox_container.add_child(_progress_bar)
-
- _label = Label.new()
- _label.anchor_right = 1.0
- _label.anchor_bottom = 1.0
- _label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
- _label.vertical_alignment = VERTICAL_ALIGNMENT_CENTER
- _progress_bar.add_child(_label)
-
- _queue_refresh()
-
-
-func _connect_inventory_signals() -> void:
- if !inventory:
- return
-
- super._connect_inventory_signals()
-
- if !inventory.capacity_changed.is_connected(_queue_refresh):
- inventory.capacity_changed.connect(_queue_refresh)
- if !inventory.occupied_space_changed.is_connected(_queue_refresh):
- inventory.occupied_space_changed.connect(_queue_refresh)
-
-
-func _disconnect_inventory_signals() -> void:
- if !inventory:
- return
-
- super._disconnect_inventory_signals()
-
- if !inventory.capacity_changed.is_connected(_queue_refresh):
- inventory.capacity_changed.disconnect(_queue_refresh)
- if !inventory.occupied_space_changed.is_connected(_queue_refresh):
- inventory.occupied_space_changed.disconnect(_queue_refresh)
-
-
-func _refresh():
- super._refresh()
- if is_instance_valid(_label):
- _label.visible = label_visible
- _label.text = "%d/%d" % [inventory.occupied_space, inventory.capacity]
- if is_instance_valid(_progress_bar):
- _progress_bar.visible = progress_bar_visible
- _progress_bar.min_value = 0
- _progress_bar.max_value = inventory.capacity
- _progress_bar.value = inventory.occupied_space
-
--- /dev/null
+@tool
+@icon("res://addons/gloot/images/icon_ctrl_inventory.svg")
+extends VBoxContainer
+
+signal inventory_item_activated(item: InventoryItem)
+signal inventory_item_clicked(item: InventoryItem)
+signal inventory_item_selected(item: InventoryItem)
+
+@export var inventory: Inventory = null:
+ set(new_inventory):
+ if inventory == new_inventory:
+ return
+ disconnect_inventory_signals()
+ inventory = new_inventory
+ connect_inventory_signals()
+ _refresh()
+ update_configuration_warnings()
+
+var _inventory_control: Control = null
+var _capacity_control: CtrlInventoryCapacity = null
+
+
+func _get_configuration_warnings() -> PackedStringArray:
+ if !is_instance_valid(inventory):
+ return PackedStringArray([
+ "This CtrlInventoryUniversal node has no inventory set. Set the 'inventory' field to be able to " \
+ + "display its contents."])
+ return PackedStringArray()
+
+
+func connect_inventory_signals():
+ if !inventory:
+ return
+
+ inventory.protoset_changed.connect(_refresh)
+ inventory.constraint_changed.connect(_on_constraint_changed)
+ inventory.constraint_added.connect(_on_constraint_changed)
+ inventory.constraint_removed.connect(_on_constraint_changed)
+
+ if !inventory.protoset:
+ return
+ inventory.protoset.changed.connect(_refresh)
+
+
+func disconnect_inventory_signals():
+ if !inventory:
+ return
+
+ inventory.protoset_changed.disconnect(_refresh)
+ inventory.constraint_changed.disconnect(_on_constraint_changed)
+ inventory.constraint_added.disconnect(_on_constraint_changed)
+ inventory.constraint_removed.disconnect(_on_constraint_changed)
+
+ if !inventory.protoset:
+ return
+ inventory.protoset.changed.disconnect(_refresh)
+
+
+func _on_constraint_changed(constraint: InventoryConstraint) -> void:
+ _refresh()
+
+
+func _ready() -> void:
+ _refresh()
+
+
+func _refresh() -> void:
+ if is_instance_valid(_inventory_control):
+ _inventory_control.queue_free()
+ _inventory_control = null
+ if is_instance_valid(_capacity_control):
+ _capacity_control.queue_free()
+ _capacity_control = null
+
+ if !is_instance_valid(inventory):
+ return
+
+ if inventory.get_constraint(GridConstraint) != null:
+ _inventory_control = CtrlInventoryGrid.new()
+ else:
+ _inventory_control = CtrlInventory.new()
+ _inventory_control.size_flags_horizontal = SIZE_EXPAND_FILL
+ _inventory_control.size_flags_vertical = SIZE_EXPAND_FILL
+ _inventory_control.inventory = inventory
+ _inventory_control.inventory_item_activated.connect(func(item: InventoryItem):
+ inventory_item_activated.emit(item)
+ )
+ _inventory_control.inventory_item_clicked.connect(func(item: InventoryItem, at_position: Vector2, mouse_button_index: int):
+ inventory_item_clicked.emit(item, at_position, mouse_button_index)
+ )
+ _inventory_control.inventory_item_selected.connect(func(item: InventoryItem):
+ inventory_item_selected.emit(item)
+ )
+ if inventory.get_constraint(WeightConstraint) != null:
+ _capacity_control = CtrlInventoryCapacity.new()
+ _capacity_control.inventory = inventory
+
+ if is_instance_valid(_inventory_control):
+ add_child(_inventory_control)
+ if is_instance_valid(_capacity_control):
+ add_child(_capacity_control)
+
+
+func get_selected_inventory_item() -> InventoryItem:
+ assert(is_instance_valid(_inventory_control))
+ return _inventory_control.get_selected_inventory_item()
+
+
+func get_selected_inventory_items() -> Array[InventoryItem]:
+ assert(is_instance_valid(_inventory_control))
+ return _inventory_control.get_selected_inventory_items()
--- /dev/null
+uid://bgmdl33rmga3l
@icon("res://addons/gloot/images/icon_ctrl_item_slot.svg")
class_name CtrlItemSlot
extends Control
+## A control node representing an inventory slot (`ItemSlot`).
+##
+## A control node representing an inventory slot (`ItemSlot`).
-const CtrlInventoryItemRect = preload("res://addons/gloot/ui/ctrl_inventory_item_rect.gd")
-const CtrlDropZone = preload("res://addons/gloot/ui/ctrl_drop_zone.gd")
-const CtrlDragable = preload("res://addons/gloot/ui/ctrl_dragable.gd")
-const StacksConstraint = preload("res://addons/gloot/core/constraints/stacks_constraint.gd")
-signal item_mouse_entered
-signal item_mouse_exited
+const _CtrlDraggableInventoryItem = preload("res://addons/gloot/ui/ctrl_draggable_inventory_item.gd")
+const _Utils = preload("res://addons/gloot/core/utils.gd")
-@export var item_slot_path: NodePath :
- set(new_item_slot_path):
- if item_slot_path == new_item_slot_path:
- return
- item_slot_path = new_item_slot_path
- var node: Node = get_node_or_null(item_slot_path)
-
- if node == null:
- _clear()
+## Reference to the item slot that is being displayed.
+@export var item_slot: ItemSlot:
+ set(new_item_slot):
+ if new_item_slot == item_slot:
return
- if is_inside_tree():
- assert(node is ItemSlotBase)
-
- item_slot = node
- _refresh()
- update_configuration_warnings()
-@export var default_item_icon: Texture2D :
- set(new_default_item_icon):
- if default_item_icon == new_default_item_icon:
- return
- default_item_icon = new_default_item_icon
+ _disconnect_item_slot_signals()
+ item_slot = new_item_slot
+ _connect_item_slot_signals()
+
_refresh()
-@export var item_texture_visible: bool = true :
- set(new_item_texture_visible):
- if item_texture_visible == new_item_texture_visible:
- return
- item_texture_visible = new_item_texture_visible
- if is_instance_valid(_ctrl_inventory_item_rect):
- _ctrl_inventory_item_rect.visible = item_texture_visible
-@export var label_visible: bool = true :
- set(new_label_visible):
- if label_visible == new_label_visible:
- return
- label_visible = new_label_visible
- if is_instance_valid(_label):
- _label.visible = label_visible
+
@export_group("Icon Behavior", "icon_")
-@export var icon_stretch_mode: TextureRect.StretchMode = TextureRect.StretchMode.STRETCH_KEEP_CENTERED :
+## Controls the item icon behavior when resizing the node's bounding rectangle. See the `TextureRect.StretchMode`
+## constants for details.
+@export var icon_stretch_mode: TextureRect.StretchMode = TextureRect.StretchMode.STRETCH_KEEP_CENTERED:
set(new_icon_stretch_mode):
if icon_stretch_mode == new_icon_stretch_mode:
return
icon_stretch_mode = new_icon_stretch_mode
- if is_instance_valid(_ctrl_inventory_item_rect):
- _ctrl_inventory_item_rect.stretch_mode = icon_stretch_mode
-@export_group("Text Behavior", "label_")
-@export var label_horizontal_alignment: HorizontalAlignment = HORIZONTAL_ALIGNMENT_CENTER :
- set(new_label_horizontal_alignment):
- if label_horizontal_alignment == new_label_horizontal_alignment:
- return
- label_horizontal_alignment = new_label_horizontal_alignment
- if is_instance_valid(_label):
- _label.horizontal_alignment = label_horizontal_alignment
-@export var label_vertical_alignment: VerticalAlignment = VERTICAL_ALIGNMENT_CENTER :
- set(new_label_vertical_alignment):
- if label_vertical_alignment == new_label_vertical_alignment:
- return
- label_vertical_alignment = new_label_vertical_alignment
- if is_instance_valid(_label):
- _label.vertical_alignment = label_vertical_alignment
-@export var label_text_overrun_behavior: TextServer.OverrunBehavior :
- set(new_label_text_overrun_behavior):
- if label_text_overrun_behavior == new_label_text_overrun_behavior:
+ if is_instance_valid(_ctrl_draggable_inventory_item):
+ _ctrl_draggable_inventory_item.icon_stretch_mode = icon_stretch_mode
+
+@export_group("Custom Styles")
+## The slot background style.
+@export var slot_style: StyleBox:
+ set(new_slot_style):
+ if slot_style == new_slot_style:
return
- label_text_overrun_behavior = new_label_text_overrun_behavior
- if is_instance_valid(_label):
- _label.text_overrun_behavior = label_text_overrun_behavior
-@export var label_clip_text: bool :
- set(new_label_clip_text):
- if label_clip_text == new_label_clip_text:
- return
- label_clip_text = new_label_clip_text
- if is_instance_valid(_label):
- _label.clip_text = label_clip_text
-var item_slot: ItemSlotBase :
- set(new_item_slot):
- if new_item_slot == item_slot:
+ slot_style = new_slot_style
+ _refresh()
+## The slot background style when the mouse cursor hovers over the slot.
+@export var slot_highlighted_style: StyleBox:
+ set(new_slot_highlighted_style):
+ if slot_highlighted_style == new_slot_highlighted_style:
return
-
- _disconnect_item_slot_signals()
- item_slot = new_item_slot
- _connect_item_slot_signals()
-
+ slot_highlighted_style = new_slot_highlighted_style
_refresh()
-var _hbox_container: HBoxContainer
-var _ctrl_inventory_item_rect: CtrlInventoryItemRect
-var _label: Label
-var _ctrl_drop_zone: CtrlDropZone
-
-func _get_configuration_warnings() -> PackedStringArray:
- if item_slot_path.is_empty():
- return PackedStringArray([
- "This node is not linked to an item slot, so it can't display any content.\n" + \
- "Set the item_slot_path property to point to an ItemSlotBase node."])
- return PackedStringArray()
+var _background_panel: Panel
+var _ctrl_draggable_inventory_item: _CtrlDraggableInventoryItem
func _connect_item_slot_signals() -> void:
if !is_instance_valid(item_slot):
return
-
- if !item_slot.item_equipped.is_connected(_refresh):
- item_slot.item_equipped.connect(_refresh)
- if !item_slot.cleared.is_connected(_refresh):
- item_slot.cleared.connect(_refresh)
+ _Utils.safe_connect(item_slot.item_equipped, _refresh)
+ _Utils.safe_connect(item_slot.cleared, _refresh)
func _disconnect_item_slot_signals() -> void:
if !is_instance_valid(item_slot):
return
-
- if item_slot.item_equipped.is_connected(_refresh):
- item_slot.item_equipped.disconnect(_refresh)
- if item_slot.cleared.is_connected(_refresh):
- item_slot.cleared.disconnect(_refresh)
+ _Utils.safe_disconnect(item_slot.item_equipped, _refresh)
+ _Utils.safe_disconnect(item_slot.cleared, _refresh)
func _ready():
- if Engine.is_editor_hint():
- # Clean up, in case it is duplicated in the editor
- if is_instance_valid(_hbox_container):
- _hbox_container.queue_free()
-
- var node: Node = get_node_or_null(item_slot_path)
- if is_inside_tree() && node:
- assert(node is ItemSlotBase)
- item_slot = node
-
- _hbox_container = HBoxContainer.new()
- _hbox_container.size_flags_horizontal = SIZE_EXPAND_FILL
- _hbox_container.size_flags_vertical = SIZE_EXPAND_FILL
- add_child(_hbox_container)
- _hbox_container.resized.connect(func(): size = _hbox_container.size)
-
- _ctrl_inventory_item_rect = CtrlInventoryItemRect.new()
- _ctrl_inventory_item_rect.visible = item_texture_visible
- _ctrl_inventory_item_rect.size_flags_horizontal = SIZE_EXPAND_FILL
- _ctrl_inventory_item_rect.size_flags_vertical = SIZE_EXPAND_FILL
- _ctrl_inventory_item_rect.item_slot = item_slot
- _ctrl_inventory_item_rect.stretch_mode = icon_stretch_mode
- _ctrl_inventory_item_rect.mouse_entered.connect(_on_mouse_entered)
- _ctrl_inventory_item_rect.mouse_exited.connect(_on_mouse_exited)
- _hbox_container.add_child(_ctrl_inventory_item_rect)
-
- _ctrl_drop_zone = CtrlDropZone.new()
- _ctrl_drop_zone.dragable_dropped.connect(_on_dragable_dropped)
- _ctrl_drop_zone.size = size
- resized.connect(func(): _ctrl_drop_zone.size = size)
- CtrlDragable.dragable_grabbed.connect(_on_any_dragable_grabbed)
- CtrlDragable.dragable_dropped.connect(_on_any_dragable_dropped)
- add_child(_ctrl_drop_zone)
- _ctrl_drop_zone.deactivate()
-
- _label = Label.new()
- _label.visible = label_visible
- _label.size_flags_horizontal = SIZE_EXPAND_FILL
- _label.size_flags_vertical = SIZE_EXPAND_FILL
- _label.horizontal_alignment = label_horizontal_alignment
- _label.vertical_alignment = label_vertical_alignment
- _label.text_overrun_behavior = label_text_overrun_behavior
- _label.clip_text = label_clip_text
- _hbox_container.add_child(_label)
-
- _hbox_container.size = size
+ _background_panel = Panel.new()
+ _background_panel.size = size
+ _background_panel.mouse_filter = Control.MOUSE_FILTER_IGNORE
+ _set_panel_style(_background_panel, slot_style)
+ add_child(_background_panel)
+
+ _ctrl_draggable_inventory_item = _CtrlDraggableInventoryItem.new()
+ _ctrl_draggable_inventory_item.icon_stretch_mode = icon_stretch_mode
+ _ctrl_draggable_inventory_item.size = size
+ add_child(_ctrl_draggable_inventory_item)
+
resized.connect(func():
- _hbox_container.size = size
+ if is_instance_valid(_background_panel):
+ _background_panel.size = size
+ if is_instance_valid(_ctrl_draggable_inventory_item):
+ _ctrl_draggable_inventory_item.size = size
)
_refresh()
-func _on_dragable_dropped(dragable: CtrlDragable, drop_position: Vector2) -> void:
- var item = (dragable as CtrlInventoryItemRect).item
+func _can_drop_data(at_position: Vector2, data) -> bool:
+ return data is InventoryItem
+
+func _drop_data(at_position: Vector2, data) -> void:
+ var item := (data as InventoryItem)
+ if is_instance_valid(item):
+ _on_item_dropped(item, at_position)
+
+
+func _notification(what):
+ if what == NOTIFICATION_DRAG_BEGIN:
+ _ctrl_draggable_inventory_item.mouse_filter = Control.MOUSE_FILTER_IGNORE
+ elif what == NOTIFICATION_DRAG_END:
+ _ctrl_draggable_inventory_item.mouse_filter = Control.MOUSE_FILTER_PASS
+
+
+func _on_item_dropped(item: InventoryItem, drop_position: Vector2) -> void:
if !item:
return
if !is_instance_valid(item_slot):
if _swap_items(item_slot.get_item(), item):
return
- item_slot.equip(item)
+ if item_slot.get_item() == null:
+ item_slot.equip(item)
func _join_stacks(item_dst: InventoryItem, item_src: InventoryItem) -> bool:
return false
if !is_instance_valid(item_dst.get_inventory()):
return false
- if item_dst.get_inventory()._constraint_manager.get_stacks_constraint() == null:
- return false
- return StacksConstraint.join_stacks(item_dst, item_src)
+ return item_src.merge_into(item_dst)
func _swap_items(item1: InventoryItem, item2: InventoryItem) -> bool:
if item_slot.get_item() == null:
return false
- if item_slot is ItemRefSlot:
- # No support for swapping (planning to deprecate ItemRefSlot)
- return false
return InventoryItem.swap(item1, item2)
-func _on_any_dragable_grabbed(dragable: CtrlDragable, grab_position: Vector2):
- _ctrl_drop_zone.activate()
-
-
-func _on_any_dragable_dropped(dragable: CtrlDragable, zone: CtrlDropZone, drop_position: Vector2):
- _ctrl_drop_zone.deactivate()
-
-
-func _on_mouse_entered():
- var item = item_slot.get_item()
- emit_signal("item_mouse_entered", item)
-
-
-func _on_mouse_exited():
- var item = item_slot.get_item()
- emit_signal("item_mouse_exited", item)
-
-
-func _notification(what: int) -> void:
- if what == NOTIFICATION_DRAG_END:
- _ctrl_drop_zone.deactivate()
-
-
func _refresh() -> void:
_clear()
if !is_instance_valid(item_slot):
return
-
- if item_slot.get_item() == null:
- return
var item = item_slot.get_item()
- if is_instance_valid(_label):
- _label.text = item.get_property(InventoryItem.KEY_NAME, item.prototype_id)
- if is_instance_valid(_ctrl_inventory_item_rect):
- _ctrl_inventory_item_rect.item = item
- if item.get_texture():
- _ctrl_inventory_item_rect.texture = item.get_texture()
+ if !is_instance_valid(item):
+ return
+
+ if is_instance_valid(_ctrl_draggable_inventory_item):
+ _ctrl_draggable_inventory_item.item = item
func _clear() -> void:
- if is_instance_valid(_label):
- _label.text = ""
- if is_instance_valid(_ctrl_inventory_item_rect):
- _ctrl_inventory_item_rect.item = null
- _ctrl_inventory_item_rect.texture = default_item_icon
+ if is_instance_valid(_ctrl_draggable_inventory_item):
+ _ctrl_draggable_inventory_item.item = null
+
+func _set_panel_style(panel: Panel, style: StyleBox) -> void:
+ panel.remove_theme_stylebox_override("panel")
+ if style != null:
+ panel.add_theme_stylebox_override("panel", style)
+
+
+func _input(event) -> void:
+ if event is InputEventMouseMotion:
+ if !is_instance_valid(_background_panel):
+ return
+
+ if get_global_rect().has_point(get_global_mouse_position()) && slot_highlighted_style:
+ _set_panel_style(_background_panel, slot_highlighted_style)
+ return
+
+ if slot_style:
+ _set_panel_style(_background_panel, slot_style)
+ else:
+ _background_panel.hide()
--- /dev/null
+uid://lbyveer3y70s
+++ /dev/null
-@tool
-@icon("res://addons/gloot/images/icon_ctrl_item_slot.svg")
-class_name CtrlItemSlotEx
-extends CtrlItemSlot
-
-@export var slot_style: StyleBox :
- set(new_slot_style):
- slot_style = new_slot_style
- _refresh()
-@export var slot_highlighted_style: StyleBox :
- set(new_slot_highlighted_style):
- slot_highlighted_style = new_slot_highlighted_style
- _refresh()
-var _background_panel: Panel
-
-
-func _ready():
- super._ready()
- resized.connect(func():
- if is_instance_valid(_background_panel):
- _background_panel.size = size
- )
-
-
-func _refresh() -> void:
- super._refresh()
- _update_background()
-
-
-func _update_background() -> void:
- if !is_instance_valid(_background_panel):
- _background_panel = Panel.new()
- add_child(_background_panel)
- move_child(_background_panel, 0)
-
- _background_panel.size = size
- _background_panel.show()
- if slot_style:
- _set_panel_style(_background_panel, slot_style)
- else:
- _background_panel.hide()
-
-
-func _set_panel_style(panel: Panel, style: StyleBox) -> void:
- panel.remove_theme_stylebox_override("panel")
- if style != null:
- panel.add_theme_stylebox_override("panel", style)
-
-
-func _on_mouse_entered():
- if slot_highlighted_style:
- _set_panel_style(_background_panel, slot_highlighted_style)
- super._on_mouse_entered()
-
-
-func _on_mouse_exited():
- if slot_style:
- _set_panel_style(_background_panel, slot_style)
- else:
- _background_panel.hide()
- super._on_mouse_exited()
--- /dev/null
+uid://bxml0kyjdhbw5
--- /dev/null
+uid://b0ixau067ehwl
--- /dev/null
+uid://hqbq2lltkx1n
--- /dev/null
+uid://fv3m33cjuae8
-[gd_scene load_steps=12 format=3 uid="uid://ohwjxojqcj63"]
+[gd_scene load_steps=12 format=4 uid="uid://ohwjxojqcj63"]
[ext_resource type="Texture2D" uid="uid://c77npili4pel4" path="res://addons/phantom_camera/examples/textures/2D/level_spritesheet.png" id="1_foq54"]
[ext_resource type="PackedScene" uid="uid://dg7rhrymsrrrm" path="res://addons/phantom_camera/examples/ui/ui_inventory.tscn" id="2_kmt5y"]
[ext_resource type="PackedScene" uid="uid://iq5xd1ob1res" path="res://addons/phantom_camera/examples/ui/ui_sign.tscn" id="3_1cmgi"]
[ext_resource type="FontFile" uid="uid://c4mm3of2mc8o5" path="res://addons/phantom_camera/fonts/Nunito-Black.ttf" id="4_4dx73"]
-[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="5_w68mw"]
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="5_gcww2"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_2d.gd" id="6_i3g4f"]
[ext_resource type="Resource" uid="uid://euybd2w0bax" path="res://addons/phantom_camera/examples/resources/tween/player_phantom_camera_2d_tween.tres" id="7_j2i8l"]
[ext_resource type="PackedScene" uid="uid://7kh0xydx0b1o" path="res://addons/phantom_camera/examples/example_scenes/2D/sub_scenes/playable_character_2d.tscn" id="8_ytjsp"]
[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/2D/player_character_body_2d_4.3.gd" id="9_o4c4h"]
-[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_easgx"]
+[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_yx3lp"]
texture = ExtResource("1_foq54")
0:0/0 = 0
-0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-0:0/0/physics_layer_0/angular_velocity = 0.0
-0:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-0:0/0/physics_layer_1/angular_velocity = 0.0
1:0/0 = 0
-1:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-1:0/0/physics_layer_0/angular_velocity = 0.0
-1:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-1:0/0/physics_layer_1/angular_velocity = 0.0
2:0/0 = 0
-2:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-2:0/0/physics_layer_0/angular_velocity = 0.0
-2:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-2:0/0/physics_layer_1/angular_velocity = 0.0
3:0/0 = 0
-3:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:0/0/physics_layer_0/angular_velocity = 0.0
-3:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:0/0/physics_layer_1/angular_velocity = 0.0
4:0/0 = 0
-4:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:0/0/physics_layer_0/angular_velocity = 0.0
-4:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:0/0/physics_layer_1/angular_velocity = 0.0
5:0/0 = 0
-5:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:0/0/physics_layer_0/angular_velocity = 0.0
-5:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:0/0/physics_layer_1/angular_velocity = 0.0
6:0/0 = 0
-6:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-6:0/0/physics_layer_0/angular_velocity = 0.0
-6:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-6:0/0/physics_layer_1/angular_velocity = 0.0
7:0/0 = 0
-7:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:0/0/physics_layer_0/angular_velocity = 0.0
7:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-7:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:0/0/physics_layer_1/angular_velocity = 0.0
0:1/0 = 0
-0:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-0:1/0/physics_layer_0/angular_velocity = 0.0
-0:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-0:1/0/physics_layer_1/angular_velocity = 0.0
1:1/0 = 0
-1:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-1:1/0/physics_layer_0/angular_velocity = 0.0
-1:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-1:1/0/physics_layer_1/angular_velocity = 0.0
2:1/0 = 0
-2:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-2:1/0/physics_layer_0/angular_velocity = 0.0
-2:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-2:1/0/physics_layer_1/angular_velocity = 0.0
3:1/0 = 0
-3:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:1/0/physics_layer_0/angular_velocity = 0.0
-3:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:1/0/physics_layer_1/angular_velocity = 0.0
4:1/0 = 0
-4:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:1/0/physics_layer_0/angular_velocity = 0.0
-4:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:1/0/physics_layer_1/angular_velocity = 0.0
5:1/0 = 0
-5:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:1/0/physics_layer_0/angular_velocity = 0.0
-5:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:1/0/physics_layer_1/angular_velocity = 0.0
7:1/0 = 0
-7:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:1/0/physics_layer_0/angular_velocity = 0.0
7:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-7:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:1/0/physics_layer_1/angular_velocity = 0.0
2:2/0 = 0
-2:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-2:2/0/physics_layer_0/angular_velocity = 0.0
-2:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-2:2/0/physics_layer_1/angular_velocity = 0.0
3:2/0 = 0
-3:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:2/0/physics_layer_0/angular_velocity = 0.0
-3:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:2/0/physics_layer_1/angular_velocity = 0.0
4:2/0 = 0
-4:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:2/0/physics_layer_0/angular_velocity = 0.0
-4:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:2/0/physics_layer_1/angular_velocity = 0.0
7:2/0 = 0
-7:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:2/0/physics_layer_0/angular_velocity = 0.0
7:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-7:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:2/0/physics_layer_1/angular_velocity = 0.0
3:3/0 = 0
-3:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:3/0/physics_layer_0/angular_velocity = 0.0
-3:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:3/0/physics_layer_1/angular_velocity = 0.0
4:3/0 = 0
-4:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:3/0/physics_layer_0/angular_velocity = 0.0
-4:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:3/0/physics_layer_1/angular_velocity = 0.0
5:3/0 = 0
-5:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:3/0/physics_layer_0/angular_velocity = 0.0
-5:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:3/0/physics_layer_1/angular_velocity = 0.0
7:3/0 = 0
-7:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:3/0/physics_layer_0/angular_velocity = 0.0
7:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-7:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:3/0/physics_layer_1/angular_velocity = 0.0
3:4/0 = 0
-3:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:4/0/physics_layer_0/angular_velocity = 0.0
-3:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:4/0/physics_layer_1/angular_velocity = 0.0
4:4/0 = 0
-4:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:4/0/physics_layer_0/angular_velocity = 0.0
-4:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:4/0/physics_layer_1/angular_velocity = 0.0
5:4/0 = 0
-5:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:4/0/physics_layer_0/angular_velocity = 0.0
-5:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:4/0/physics_layer_1/angular_velocity = 0.0
7:4/0 = 0
-7:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:4/0/physics_layer_0/angular_velocity = 0.0
-7:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:4/0/physics_layer_1/angular_velocity = 0.0
3:5/0 = 0
-3:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:5/0/physics_layer_0/angular_velocity = 0.0
-3:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:5/0/physics_layer_1/angular_velocity = 0.0
4:5/0 = 0
-4:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:5/0/physics_layer_0/angular_velocity = 0.0
-4:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:5/0/physics_layer_1/angular_velocity = 0.0
7:5/0 = 0
-7:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:5/0/physics_layer_0/angular_velocity = 0.0
-7:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:5/0/physics_layer_1/angular_velocity = 0.0
3:6/0 = 0
-3:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:6/0/physics_layer_0/angular_velocity = 0.0
-3:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:6/0/physics_layer_1/angular_velocity = 0.0
4:6/0 = 0
-4:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:6/0/physics_layer_0/angular_velocity = 0.0
-4:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:6/0/physics_layer_1/angular_velocity = 0.0
7:6/0 = 0
-7:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:6/0/physics_layer_0/angular_velocity = 0.0
-7:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:6/0/physics_layer_1/angular_velocity = 0.0
2:7/0 = 0
-2:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-2:7/0/physics_layer_0/angular_velocity = 0.0
-2:7/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-2:7/0/physics_layer_1/angular_velocity = 0.0
3:7/0 = 0
-3:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:7/0/physics_layer_0/angular_velocity = 0.0
-3:7/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:7/0/physics_layer_1/angular_velocity = 0.0
4:7/0 = 0
-4:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:7/0/physics_layer_0/angular_velocity = 0.0
-4:7/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:7/0/physics_layer_1/angular_velocity = 0.0
5:7/0 = 0
-5:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:7/0/physics_layer_0/angular_velocity = 0.0
-5:7/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:7/0/physics_layer_1/angular_velocity = 0.0
8:0/0 = 0
-8:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:0/0/physics_layer_0/angular_velocity = 0.0
8:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-8:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:0/0/physics_layer_1/angular_velocity = 0.0
9:0/0 = 0
-9:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:0/0/physics_layer_0/angular_velocity = 0.0
9:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-9:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:0/0/physics_layer_1/angular_velocity = 0.0
10:0/0 = 0
-10:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:0/0/physics_layer_0/angular_velocity = 0.0
10:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-10:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:0/0/physics_layer_1/angular_velocity = 0.0
11:0/0 = 0
-11:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:0/0/physics_layer_0/angular_velocity = 0.0
11:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-11:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:0/0/physics_layer_1/angular_velocity = 0.0
12:0/0 = 0
-12:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:0/0/physics_layer_0/angular_velocity = 0.0
12:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:0/0/physics_layer_1/angular_velocity = 0.0
13:0/0 = 0
-13:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:0/0/physics_layer_0/angular_velocity = 0.0
13:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:0/0/physics_layer_1/angular_velocity = 0.0
14:0/0 = 0
-14:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:0/0/physics_layer_0/angular_velocity = 0.0
-14:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:0/0/physics_layer_1/angular_velocity = 0.0
14:0/0/physics_layer_1/polygon_0/points = PackedVector2Array(8, -8, 8, 8, -8, 8)
14:0/0/custom_data_0 = &"Sign"
15:0/0 = 0
-15:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:0/0/physics_layer_0/angular_velocity = 0.0
-15:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:0/0/physics_layer_1/angular_velocity = 0.0
16:0/0 = 0
-16:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:0/0/physics_layer_0/angular_velocity = 0.0
-16:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:0/0/physics_layer_1/angular_velocity = 0.0
8:1/0 = 0
-8:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:1/0/physics_layer_0/angular_velocity = 0.0
8:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-8:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:1/0/physics_layer_1/angular_velocity = 0.0
9:1/0 = 0
-9:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:1/0/physics_layer_0/angular_velocity = 0.0
9:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-9:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:1/0/physics_layer_1/angular_velocity = 0.0
10:1/0 = 0
-10:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:1/0/physics_layer_0/angular_velocity = 0.0
10:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-10:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:1/0/physics_layer_1/angular_velocity = 0.0
11:1/0 = 0
-11:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:1/0/physics_layer_0/angular_velocity = 0.0
11:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-11:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:1/0/physics_layer_1/angular_velocity = 0.0
12:1/0 = 0
-12:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:1/0/physics_layer_0/angular_velocity = 0.0
12:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:1/0/physics_layer_1/angular_velocity = 0.0
13:1/0 = 0
-13:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:1/0/physics_layer_0/angular_velocity = 0.0
13:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:1/0/physics_layer_1/angular_velocity = 0.0
14:1/0 = 0
-14:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:1/0/physics_layer_0/angular_velocity = 0.0
-14:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:1/0/physics_layer_1/angular_velocity = 0.0
15:1/0 = 0
-15:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:1/0/physics_layer_0/angular_velocity = 0.0
-15:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:1/0/physics_layer_1/angular_velocity = 0.0
16:1/0 = 0
-16:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:1/0/physics_layer_0/angular_velocity = 0.0
-16:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:1/0/physics_layer_1/angular_velocity = 0.0
8:2/0 = 0
-8:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:2/0/physics_layer_0/angular_velocity = 0.0
8:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-8:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:2/0/physics_layer_1/angular_velocity = 0.0
9:2/0 = 0
-9:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:2/0/physics_layer_0/angular_velocity = 0.0
9:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-9:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:2/0/physics_layer_1/angular_velocity = 0.0
10:2/0 = 0
-10:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:2/0/physics_layer_0/angular_velocity = 0.0
10:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-10:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:2/0/physics_layer_1/angular_velocity = 0.0
11:2/0 = 0
-11:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:2/0/physics_layer_0/angular_velocity = 0.0
11:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-11:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:2/0/physics_layer_1/angular_velocity = 0.0
12:2/0 = 0
-12:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:2/0/physics_layer_0/angular_velocity = 0.0
12:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:2/0/physics_layer_1/angular_velocity = 0.0
13:2/0 = 0
-13:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:2/0/physics_layer_0/angular_velocity = 0.0
13:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:2/0/physics_layer_1/angular_velocity = 0.0
14:2/0 = 0
-14:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:2/0/physics_layer_0/angular_velocity = 0.0
-14:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:2/0/physics_layer_1/angular_velocity = 0.0
15:2/0 = 0
-15:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:2/0/physics_layer_0/angular_velocity = 0.0
-15:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:2/0/physics_layer_1/angular_velocity = 0.0
16:2/0 = 0
-16:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:2/0/physics_layer_0/angular_velocity = 0.0
-16:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:2/0/physics_layer_1/angular_velocity = 0.0
8:3/0 = 0
-8:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:3/0/physics_layer_0/angular_velocity = 0.0
8:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-8:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:3/0/physics_layer_1/angular_velocity = 0.0
9:3/0 = 0
-9:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:3/0/physics_layer_0/angular_velocity = 0.0
9:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-9:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:3/0/physics_layer_1/angular_velocity = 0.0
10:3/0 = 0
-10:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:3/0/physics_layer_0/angular_velocity = 0.0
10:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-10:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:3/0/physics_layer_1/angular_velocity = 0.0
11:3/0 = 0
-11:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:3/0/physics_layer_0/angular_velocity = 0.0
-11:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:3/0/physics_layer_1/angular_velocity = 0.0
12:3/0 = 0
-12:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:3/0/physics_layer_0/angular_velocity = 0.0
12:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:3/0/physics_layer_1/angular_velocity = 0.0
13:3/0 = 0
-13:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:3/0/physics_layer_0/angular_velocity = 0.0
13:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:3/0/physics_layer_1/angular_velocity = 0.0
14:3/0 = 0
-14:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:3/0/physics_layer_0/angular_velocity = 0.0
-14:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:3/0/physics_layer_1/angular_velocity = 0.0
15:3/0 = 0
-15:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:3/0/physics_layer_0/angular_velocity = 0.0
-15:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:3/0/physics_layer_1/angular_velocity = 0.0
16:3/0 = 0
-16:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:3/0/physics_layer_0/angular_velocity = 0.0
-16:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:3/0/physics_layer_1/angular_velocity = 0.0
8:4/0 = 0
-8:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:4/0/physics_layer_0/angular_velocity = 0.0
-8:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:4/0/physics_layer_1/angular_velocity = 0.0
9:4/0 = 0
-9:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:4/0/physics_layer_0/angular_velocity = 0.0
-9:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:4/0/physics_layer_1/angular_velocity = 0.0
10:4/0 = 0
-10:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:4/0/physics_layer_0/angular_velocity = 0.0
-10:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:4/0/physics_layer_1/angular_velocity = 0.0
11:4/0 = 0
-11:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:4/0/physics_layer_0/angular_velocity = 0.0
11:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-7, 2.5, -5, -2, -2.5, -5, 2, -7, 8, -8, 8, 8, -8, 8)
-11:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:4/0/physics_layer_1/angular_velocity = 0.0
12:4/0 = 0
-12:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:4/0/physics_layer_0/angular_velocity = 0.0
12:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:4/0/physics_layer_1/angular_velocity = 0.0
13:4/0 = 0
-13:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:4/0/physics_layer_0/angular_velocity = 0.0
13:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 0, -6, 4, -1.5, 6.5, 1.5, 8, 8, -8, 8)
-13:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:4/0/physics_layer_1/angular_velocity = 0.0
14:4/0 = 0
-14:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:4/0/physics_layer_0/angular_velocity = 0.0
-14:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:4/0/physics_layer_1/angular_velocity = 0.0
14:4/0/physics_layer_1/polygon_0/points = PackedVector2Array(-8, -8, -8, 8, 8, 8, 8, -8)
14:4/0/custom_data_0 = &"Inventory"
15:4/0 = 0
-15:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:4/0/physics_layer_0/angular_velocity = 0.0
-15:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:4/0/physics_layer_1/angular_velocity = 0.0
16:4/0 = 0
-16:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:4/0/physics_layer_0/angular_velocity = 0.0
-16:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:4/0/physics_layer_1/angular_velocity = 0.0
8:5/0 = 0
-8:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:5/0/physics_layer_0/angular_velocity = 0.0
-8:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:5/0/physics_layer_1/angular_velocity = 0.0
9:5/0 = 0
-9:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:5/0/physics_layer_0/angular_velocity = 0.0
-9:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:5/0/physics_layer_1/angular_velocity = 0.0
10:5/0 = 0
-10:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:5/0/physics_layer_0/angular_velocity = 0.0
-10:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:5/0/physics_layer_1/angular_velocity = 0.0
11:5/0 = 0
-11:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:5/0/physics_layer_0/angular_velocity = 0.0
11:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-11:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:5/0/physics_layer_1/angular_velocity = 0.0
12:5/0 = 0
-12:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:5/0/physics_layer_0/angular_velocity = 0.0
12:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:5/0/physics_layer_1/angular_velocity = 0.0
13:5/0 = 0
-13:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:5/0/physics_layer_0/angular_velocity = 0.0
13:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:5/0/physics_layer_1/angular_velocity = 0.0
14:5/0 = 0
-14:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:5/0/physics_layer_0/angular_velocity = 0.0
-14:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:5/0/physics_layer_1/angular_velocity = 0.0
15:5/0 = 0
-15:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:5/0/physics_layer_0/angular_velocity = 0.0
-15:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:5/0/physics_layer_1/angular_velocity = 0.0
16:5/0 = 0
-16:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:5/0/physics_layer_0/angular_velocity = 0.0
-16:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:5/0/physics_layer_1/angular_velocity = 0.0
8:6/0 = 0
-8:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:6/0/physics_layer_0/angular_velocity = 0.0
-8:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:6/0/physics_layer_1/angular_velocity = 0.0
9:6/0 = 0
-9:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:6/0/physics_layer_0/angular_velocity = 0.0
-9:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:6/0/physics_layer_1/angular_velocity = 0.0
10:6/0 = 0
-10:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:6/0/physics_layer_0/angular_velocity = 0.0
-10:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:6/0/physics_layer_1/angular_velocity = 0.0
11:6/0 = 0
-11:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:6/0/physics_layer_0/angular_velocity = 0.0
11:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, 1, 6.5, -3, 3, -6.5, -1.5)
-11:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:6/0/physics_layer_1/angular_velocity = 0.0
12:6/0 = 0
-12:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:6/0/physics_layer_0/angular_velocity = 0.0
12:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:6/0/physics_layer_1/angular_velocity = 0.0
13:6/0 = 0
-13:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:6/0/physics_layer_0/angular_velocity = 0.0
13:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 6, -0.5, 3, 3.5, -1.5, 6.5, -8, 8)
-13:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:6/0/physics_layer_1/angular_velocity = 0.0
14:6/0 = 0
-14:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:6/0/physics_layer_0/angular_velocity = 0.0
-14:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:6/0/physics_layer_1/angular_velocity = 0.0
15:6/0 = 0
-15:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:6/0/physics_layer_0/angular_velocity = 0.0
-15:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:6/0/physics_layer_1/angular_velocity = 0.0
16:6/0 = 0
-16:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:6/0/physics_layer_0/angular_velocity = 0.0
-16:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:6/0/physics_layer_1/angular_velocity = 0.0
-[sub_resource type="TileSet" id="TileSet_kf7eg"]
+[sub_resource type="TileSet" id="TileSet_nawqc"]
physics_layer_0/collision_layer = 1
physics_layer_1/collision_layer = 2
physics_layer_1/collision_mask = 2
custom_data_layer_0/name = "Type"
custom_data_layer_0/type = 21
-sources/0 = SubResource("TileSetAtlasSource_easgx")
+sources/0 = SubResource("TileSetAtlasSource_yx3lp")
-[node name="ExampleScene2D2" type="Node2D"]
+[node name="Root" type="Node2D"]
[node name="Background" type="CanvasLayer" parent="."]
layer = -3
[node name="ColorRect" type="ColorRect" parent="Background"]
+auto_translate_mode = 2
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_bottom = 548.0
grow_horizontal = 2
grow_vertical = 2
-auto_translate = false
localize_numeral_system = false
color = Color(0.137255, 0.14902, 0.196078, 1)
-[node name="TileMap" type="TileMap" parent="."]
-z_index = -1
+[node name="Pillar" type="TileMapLayer" parent="."]
+use_parent_material = true
scale = Vector2(3, 3)
-tile_set = SubResource("TileSet_kf7eg")
-format = 2
-layer_0/name = "Background"
-layer_0/tile_data = PackedInt32Array(-393216, 655360, 2, -327680, 655360, 3, -262144, 655360, 3, -196608, 655360, 3, -131072, 655360, 3, -65536, 655360, 3, -393215, 720896, 2, -327679, 720896, 1, -262143, 720896, 1, -196607, 720896, 1, -131071, 720896, 1, -65535, 720896, 1, -393214, 786432, 2, -327678, 786432, 3, -262142, 786432, 3, -196606, 786432, 3, -131070, 786432, 3, -65534, 786432, 3)
-layer_1/name = "Terrain"
-layer_1/z_index = 1
-layer_1/tile_data = PackedInt32Array(1, 720896, 0, 2, 720896, 0, 3, 720896, 0, 4, 720896, 0, 5, 720896, 0, 6, 720896, 0, 7, 720896, 0, 8, 720896, 0, 9, 786432, 0, 65545, 786432, 1, 131081, 786432, 1, 196617, 786432, 1, 262153, 786432, 1, 327689, 786432, 1, 393225, 786432, 1, 65537, 720896, 1, 131073, 720896, 1, 196609, 720896, 1, 262145, 458752, 1, 327681, 720896, 1, 393217, 720896, 1, 65538, 720896, 1, 131074, 720896, 1, 196610, 720896, 1, 262146, 720896, 1, 327682, 720896, 1, 393218, 720896, 1, 65539, 720896, 1, 131075, 720896, 1, 196611, 720896, 1, 262147, 720896, 1, 327683, 720896, 1, 393219, 720896, 1, 65540, 458752, 1, 131076, 720896, 1, 196612, 720896, 1, 262148, 720896, 1, 327684, 720896, 1, 393220, 720896, 1, 65541, 720896, 1, 131077, 720896, 1, 196613, 720896, 1, 262149, 458752, 1, 327685, 720896, 1, 393221, 720896, 1, 65542, 720896, 1, 131078, 720896, 1, 196614, 720896, 1, 262150, 720896, 1, 327686, 720896, 1, 393222, 720896, 1, 65543, 720896, 1, 131079, 720896, 1, 196615, 720896, 1, 262151, 720896, 1, 327687, 720896, 1, 393223, 458752, 1, 65544, 720896, 1, 131080, 720896, 1, 196616, 458752, 1, 262152, 720896, 1, 327688, 720896, 1, 393224, 720896, 1, 65546, 524288, 5, 65547, 524288, 5, 65548, 524288, 5, 65549, 524288, 5, 131082, 524288, 6, 131083, 524288, 6, 131084, 524288, 6, 131085, 524288, 6, 196618, 720896, 1, 262154, 720896, 1, 196619, 720896, 1, 262155, 720896, 1, 196620, 720896, 1, 262156, 720896, 1, 196621, 720896, 1, 262157, 720896, 1, 65550, 524288, 5, 65551, 524288, 5, 65552, 524288, 5, 131086, 524288, 6, 131087, 524288, 6, 131088, 524288, 6, 196622, 720896, 1, 196623, 720896, 1, 262159, 720896, 1, 262160, 720896, 1, 196624, 720896, 1, 262158, 720896, 1, 17, 720896, 4, 65553, 720896, 5, 131089, 720896, 5, 196625, 720896, 5, 262161, 720896, 5, 18, 786432, 4, 19, 786432, 4, 20, 786432, 4, 21, 786432, 4, 22, 786432, 4, 23, 786432, 4, 65554, 786432, 5, 131090, 786432, 5, 196626, 786432, 5, 262162, 786432, 5, 65555, 786432, 5, 131091, 589824, 6, 196627, 786432, 5, 262163, 786432, 5, 65556, 786432, 5, 131092, 786432, 5, 196628, 786432, 5, 262164, 786432, 5, 65557, 786432, 5, 131093, 786432, 5, 196629, 786432, 5, 262165, 786432, 5, 65558, 786432, 5, 131094, 786432, 5, 196630, 786432, 5, 262166, 655360, 6, 65559, 786432, 5, 131095, 786432, 5, 196631, 786432, 5, 262167, 786432, 5, 327697, 720896, 5, 393233, 720896, 5, 327698, 589824, 6, 393234, 786432, 5, 327699, 786432, 5, 393235, 786432, 5, 327700, 786432, 5, 393236, 786432, 5, 327701, 786432, 5, 393237, 786432, 5, 327702, 786432, 5, 393238, 786432, 5, 327703, 786432, 5, 393239, 786432, 5, -131062, 720896, 4, -131061, 786432, 4, -131060, 786432, 4, -65526, 720896, 6, -65525, 786432, 6, -65524, 786432, 6, -131056, 851968, 4, -65520, 851968, 6, -131059, 786432, 4, -131058, 786432, 4, -131057, 786432, 4, -65523, 786432, 6, -65522, 786432, 6, -65521, 786432, 6, -196596, 917504, 0, -65536, 917504, 2, -65535, 983040, 2, -65534, 1048576, 2, -65533, 917504, 2, -65532, 983040, 2, -65531, 1048576, 2, -65530, 917504, 2, -65529, 983040, 2, -65528, 1048576, 2, 65535, 655360, 0, 131071, 655360, 1, 196607, 655360, 1, 262143, 655360, 1, 327679, 655360, 1, 393215, 655360, 1, 458751, 655360, 1, 524287, 655360, 1, 589823, 655360, 1, 0, 720896, 0, 65536, 720896, 1, 131072, 720896, 1, 196608, 720896, 1, 262144, 720896, 1, 327680, 720896, 1, 393216, 720896, 1, 458752, 720896, 1, 524288, 720896, 1, 524289, 720896, 1, 524290, 720896, 1, 524291, 720896, 1, 524292, 720896, 1, 524293, 720896, 1, 524294, 720896, 1, 524295, 720896, 1, 524296, 720896, 1, 524297, 786432, 1, 458761, 786432, 1, 458760, 720896, 1, 458759, 720896, 1, 458758, 458752, 1, 458757, 720896, 1, 458756, 720896, 1, 458755, 720896, 1, 458754, 720896, 1, 458753, 720896, 1, -262145, 851968, 4, -196609, 851968, 5, -131073, 851968, 5, -65537, 851968, 5, -1, 851968, 6, -262146, 786432, 4, -262147, 786432, 4, -196610, 589824, 6, -196611, 786432, 5, -6, 786432, 5, -5, 786432, 5, -4, 786432, 5, -3, 786432, 5, -2, 786432, 5, -65538, 786432, 5, -131074, 786432, 5, -131075, 786432, 5, -65539, 655360, 6, 65534, 851968, 5, 131070, 851968, 5, 196606, 851968, 5, 262142, 851968, 5, 327678, 851968, 5, 393214, 851968, 5, 458750, 851968, 5, 65533, 786432, 5, 65532, 786432, 5, 65531, 786432, 5, 65530, 786432, 5, 65529, 720896, 5, 131066, 786432, 5, 196602, 786432, 5, 262138, 786432, 5, 262139, 786432, 5, 327675, 786432, 5, 131068, 786432, 5, 131069, 786432, 5, 196605, 786432, 5, 262141, 786432, 5, 327677, 786432, 5, 393213, 786432, 5, 458749, 786432, 5, 393212, 786432, 5, 393211, 786432, 5, 458748, 786432, 5, 327676, 655360, 6, 262140, 786432, 5, 196604, 786432, 5, 131067, 786432, 5, 196603, 589824, 6, 458747, 786432, 5, 458746, 786432, 5, 393210, 786432, 5, 327674, 786432, 5, -7, 720896, 5, 131065, 720896, 5, 196601, 720896, 5, 262137, 720896, 5, 327673, 720896, 5, 393209, 720896, 5, 458745, 720896, 5, -327684, 720896, 3, -196594, 720896, 3, -196597, 720896, 3, -65518, 720896, 3, -65516, 720896, 3, -327686, 1048576, 5, -327685, 720896, 3, -196595, 917504, 6, -65514, 983040, 6, -327683, 983040, 5, -65513, 1048576, 5, -262151, 720896, 4, -196615, 720896, 5, -131079, 720896, 5, -65543, 720896, 5, -262150, 786432, 4, -196614, 655360, 6, -131078, 786432, 5, -65542, 786432, 5, -262149, 786432, 4, -196613, 786432, 5, -131077, 786432, 5, -65541, 786432, 5, -262148, 786432, 4, -196612, 786432, 5, -131076, 786432, 5, -65540, 786432, 5, 458769, 720896, 5, 524305, 720896, 6, 458775, 786432, 5, 458774, 786432, 5, 458773, 786432, 5, 458772, 786432, 5, 458771, 786432, 5, 458770, 786432, 5, 524306, 786432, 6, 524307, 786432, 6, 524308, 786432, 6, 524309, 786432, 6, 524310, 786432, 6, 524311, 786432, 6, 327690, 720896, 1, 393226, 720896, 1, 458762, 720896, 1, 524298, 720896, 1, 327691, 720896, 1, 393227, 720896, 1, 458763, 720896, 1, 524299, 720896, 1, 327692, 720896, 1, 393228, 720896, 1, 458764, 720896, 1, 524300, 720896, 1, 327693, 720896, 1, 393229, 720896, 1, 458765, 720896, 1, 524301, 720896, 1, 327694, 720896, 1, 393230, 720896, 1, 458766, 720896, 1, 524302, 720896, 1, 327695, 720896, 1, 393231, 720896, 1, 458767, 720896, 1, 524303, 720896, 1, 327696, 720896, 1, 393232, 720896, 1, 458768, 720896, 1, 524304, 720896, 1, 29, 851968, 4, 65565, 851968, 5, 131101, 851968, 5, 196637, 851968, 5, 262173, 851968, 5, 327709, 851968, 5, 393245, 851968, 5, 458781, 851968, 5, 524317, 851968, 6, -65511, 917504, 4, 24, 786432, 4, 25, 786432, 4, 26, 786432, 4, 27, 786432, 4, 28, 786432, 4, 65560, 786432, 5, 65561, 786432, 5, 65562, 786432, 5, 65563, 786432, 5, 65564, 786432, 5, 131100, 786432, 5, 196636, 589824, 6, 131099, 786432, 5, 131098, 786432, 5, 131097, 786432, 5, 131096, 786432, 5, 196632, 786432, 5, 262168, 786432, 5, 327704, 786432, 5, 393240, 786432, 5, 458776, 786432, 5, 524312, 786432, 6, 196633, 786432, 5, 262169, 786432, 5, 327705, 786432, 5, 393241, 786432, 5, 458777, 786432, 5, 524313, 786432, 6, 196634, 786432, 5, 262170, 786432, 5, 327706, 786432, 5, 393242, 655360, 6, 458778, 786432, 5, 524314, 786432, 6, 196635, 786432, 5, 262171, 786432, 5, 327707, 786432, 5, 393243, 786432, 5, 458779, 786432, 5, 524315, 786432, 6, 262172, 786432, 5, 327708, 786432, 5, 393244, 786432, 5, 458780, 786432, 5, 524316, 786432, 6, -196593, 1048576, 6, -393182, 1048576, 6, -393185, 917504, 6, -393180, 983040, 6, -393184, 983040, 5, -65509, 720896, 3, -65510, 720896, 3, -393181, 720896, 3, -393183, 720896, 3, -65517, 720896, 3, -65515, 720896, 3, -327650, 720896, 4, -262114, 720896, 5, -196578, 720896, 5, -131042, 720896, 5, -65506, 720896, 5, -65498, 851968, 5, -131034, 851968, 5, -196570, 851968, 5, -327642, 851968, 4, -327649, 786432, 4, -327648, 786432, 4, -327647, 786432, 4, -327646, 786432, 4, -327645, 786432, 4, -327644, 786432, 4, -327643, 786432, 4, -262106, 851968, 5, -65499, 786432, 5, -131035, 786432, 5, -196571, 786432, 5, -262107, 786432, 5, -262108, 786432, 5, -262109, 786432, 5, -262110, 786432, 5, -262111, 786432, 5, -262112, 786432, 5, -262113, 786432, 5, -196577, 655360, 6, -131041, 786432, 5, -65505, 786432, 5, -65500, 655360, 6, -131036, 589824, 6, -196572, 786432, 5, -196573, 786432, 5, -196574, 786432, 5, -196575, 786432, 5, -196576, 786432, 5, -131040, 589824, 6, -65504, 786432, 5, -65501, 786432, 5, -131037, 786432, 5, -131038, 786432, 5, -131039, 786432, 5, -65503, 786432, 5, -65502, 786432, 5, 524318, 720896, 6, 458782, 720896, 5, 393246, 720896, 5, 327710, 720896, 5, 262174, 720896, 5, 196638, 720896, 5, 131102, 720896, 5, 65566, 720896, 5, 30, 720896, 5, 524319, 786432, 6, 524320, 786432, 6, 524321, 786432, 6, 524322, 786432, 6, 524323, 786432, 6, 524324, 786432, 6, 524325, 786432, 6, 524326, 851968, 6, 38, 851968, 5, 65574, 851968, 5, 131110, 851968, 5, 196646, 851968, 5, 262182, 851968, 5, 327718, 851968, 5, 393254, 851968, 5, 458790, 851968, 5, 31, 786432, 5, 65567, 786432, 5, 131103, 786432, 5, 196639, 786432, 5, 262175, 786432, 5, 327711, 786432, 5, 393247, 655360, 6, 458783, 786432, 5, 32, 786432, 5, 65568, 786432, 5, 131104, 786432, 5, 196640, 786432, 5, 262176, 786432, 5, 327712, 786432, 5, 393248, 786432, 5, 458784, 786432, 5, 33, 786432, 5, 65569, 786432, 5, 131105, 655360, 6, 196641, 786432, 5, 262177, 786432, 5, 327713, 786432, 5, 393249, 786432, 5, 458785, 786432, 5, 34, 786432, 5, 65570, 786432, 5, 131106, 786432, 5, 196642, 786432, 5, 262178, 655360, 6, 327714, 655360, 6, 393250, 786432, 5, 458786, 786432, 5, 35, 786432, 5, 65571, 786432, 5, 131107, 786432, 5, 196643, 786432, 5, 262179, 786432, 5, 327715, 786432, 5, 393251, 786432, 5, 458787, 786432, 5, 36, 655360, 6, 65572, 786432, 5, 131108, 786432, 5, 196644, 786432, 5, 262180, 786432, 5, 327716, 786432, 5, 393252, 786432, 5, 458788, 655360, 6, 37, 786432, 5, 65573, 786432, 5, 131109, 786432, 5, 196645, 786432, 5, 262181, 786432, 5, 327717, 786432, 5, 393253, 786432, 5, 458789, 786432, 5, 524282, 786432, 5, 524283, 786432, 5, 524284, 786432, 5, 524285, 786432, 5, 524281, 720896, 5, 524286, 851968, 5, 589817, 720896, 6, 589818, 786432, 6, 589819, 786432, 6, 589820, 786432, 6, 589821, 786432, 6, 589822, 851968, 6)
+tile_map_data = PackedByteArray("AAAAAPr/AAAKAAIAAAAAAPv/AAAKAAMAAAAAAPz/AAAKAAMAAAAAAP3/AAAKAAMAAAAAAP7/AAAKAAMAAAAAAP//AAAKAAMAAAABAPr/AAALAAIAAAABAPv/AAALAAEAAAABAPz/AAALAAEAAAABAP3/AAALAAEAAAABAP7/AAALAAEAAAABAP//AAALAAEAAAACAPr/AAAMAAIAAAACAPv/AAAMAAMAAAACAPz/AAAMAAMAAAACAP3/AAAMAAMAAAACAP7/AAAMAAMAAAACAP//AAAMAAMAAAA=")
+tile_set = SubResource("TileSet_nawqc")
+collision_enabled = false
+navigation_enabled = false
+
+[node name="Terrain" type="TileMapLayer" parent="."]
+use_parent_material = true
+scale = Vector2(3, 3)
+tile_map_data = PackedByteArray("AAABAAAAAAALAAAAAAACAAAAAAALAAAAAAADAAAAAAALAAAAAAAEAAAAAAALAAAAAAAFAAAAAAALAAAAAAAGAAAAAAALAAAAAAAHAAAAAAALAAAAAAAIAAAAAAALAAAAAAAJAAAAAAAMAAAAAAAJAAEAAAAMAAEAAAAJAAIAAAAMAAEAAAAJAAMAAAAMAAEAAAAJAAQAAAAMAAEAAAAJAAUAAAAMAAEAAAAJAAYAAAAMAAEAAAABAAEAAAALAAEAAAABAAIAAAALAAEAAAABAAMAAAALAAEAAAABAAQAAAAHAAEAAAABAAUAAAALAAEAAAABAAYAAAALAAEAAAACAAEAAAALAAEAAAACAAIAAAALAAEAAAACAAMAAAALAAEAAAACAAQAAAALAAEAAAACAAUAAAALAAEAAAACAAYAAAALAAEAAAADAAEAAAALAAEAAAADAAIAAAALAAEAAAADAAMAAAALAAEAAAADAAQAAAALAAEAAAADAAUAAAALAAEAAAADAAYAAAALAAEAAAAEAAEAAAAHAAEAAAAEAAIAAAALAAEAAAAEAAMAAAALAAEAAAAEAAQAAAALAAEAAAAEAAUAAAALAAEAAAAEAAYAAAALAAEAAAAFAAEAAAALAAEAAAAFAAIAAAALAAEAAAAFAAMAAAALAAEAAAAFAAQAAAAHAAEAAAAFAAUAAAALAAEAAAAFAAYAAAALAAEAAAAGAAEAAAALAAEAAAAGAAIAAAALAAEAAAAGAAMAAAALAAEAAAAGAAQAAAALAAEAAAAGAAUAAAALAAEAAAAGAAYAAAALAAEAAAAHAAEAAAALAAEAAAAHAAIAAAALAAEAAAAHAAMAAAALAAEAAAAHAAQAAAALAAEAAAAHAAUAAAALAAEAAAAHAAYAAAAHAAEAAAAIAAEAAAALAAEAAAAIAAIAAAALAAEAAAAIAAMAAAAHAAEAAAAIAAQAAAALAAEAAAAIAAUAAAALAAEAAAAIAAYAAAALAAEAAAAKAAEAAAAIAAUAAAALAAEAAAAIAAUAAAAMAAEAAAAIAAUAAAANAAEAAAAIAAUAAAAKAAIAAAAIAAYAAAALAAIAAAAIAAYAAAAMAAIAAAAIAAYAAAANAAIAAAAIAAYAAAAKAAMAAAALAAEAAAAKAAQAAAALAAEAAAALAAMAAAALAAEAAAALAAQAAAALAAEAAAAMAAMAAAALAAEAAAAMAAQAAAALAAEAAAANAAMAAAALAAEAAAANAAQAAAALAAEAAAAOAAEAAAAIAAUAAAAPAAEAAAAIAAUAAAAQAAEAAAAIAAUAAAAOAAIAAAAIAAYAAAAPAAIAAAAIAAYAAAAQAAIAAAAIAAYAAAAOAAMAAAALAAEAAAAPAAMAAAALAAEAAAAPAAQAAAALAAEAAAAQAAQAAAALAAEAAAAQAAMAAAALAAEAAAAOAAQAAAALAAEAAAARAAAAAAALAAQAAAARAAEAAAALAAUAAAARAAIAAAALAAUAAAARAAMAAAALAAUAAAARAAQAAAALAAUAAAASAAAAAAAMAAQAAAATAAAAAAAMAAQAAAAUAAAAAAAMAAQAAAAVAAAAAAAMAAQAAAAWAAAAAAAMAAQAAAAXAAAAAAAMAAQAAAASAAEAAAAMAAUAAAASAAIAAAAMAAUAAAASAAMAAAAMAAUAAAASAAQAAAAMAAUAAAATAAEAAAAMAAUAAAATAAIAAAAJAAYAAAATAAMAAAAMAAUAAAATAAQAAAAMAAUAAAAUAAEAAAAMAAUAAAAUAAIAAAAMAAUAAAAUAAMAAAAMAAUAAAAUAAQAAAAMAAUAAAAVAAEAAAAMAAUAAAAVAAIAAAAMAAUAAAAVAAMAAAAMAAUAAAAVAAQAAAAMAAUAAAAWAAEAAAAMAAUAAAAWAAIAAAAMAAUAAAAWAAMAAAAMAAUAAAAWAAQAAAAKAAYAAAAXAAEAAAAMAAUAAAAXAAIAAAAMAAUAAAAXAAMAAAAMAAUAAAAXAAQAAAAMAAUAAAARAAUAAAALAAUAAAARAAYAAAALAAUAAAASAAUAAAAJAAYAAAASAAYAAAAMAAUAAAATAAUAAAAMAAUAAAATAAYAAAAMAAUAAAAUAAUAAAAMAAUAAAAUAAYAAAAMAAUAAAAVAAUAAAAMAAUAAAAVAAYAAAAMAAUAAAAWAAUAAAAMAAUAAAAWAAYAAAAMAAUAAAAXAAUAAAAMAAUAAAAXAAYAAAAMAAUAAAAKAP7/AAALAAQAAAALAP7/AAAMAAQAAAAMAP7/AAAMAAQAAAAKAP//AAALAAYAAAALAP//AAAMAAYAAAAMAP//AAAMAAYAAAAQAP7/AAANAAQAAAAQAP//AAANAAYAAAANAP7/AAAMAAQAAAAOAP7/AAAMAAQAAAAPAP7/AAAMAAQAAAANAP//AAAMAAYAAAAOAP//AAAMAAYAAAAPAP//AAAMAAYAAAAMAP3/AAAOAAAAAAADAP//AAAOAAIAAAAEAP//AAAPAAIAAAAFAP//AAAQAAIAAAAGAP//AAAOAAIAAAAHAP//AAAPAAIAAAAIAP//AAAQAAIAAAD//wAAAAAKAAAAAAD//wEAAAAKAAEAAAD//wIAAAAKAAEAAAD//wMAAAAKAAEAAAD//wQAAAAKAAEAAAD//wUAAAAKAAEAAAD//wYAAAAKAAEAAAD//wcAAAAKAAEAAAD//wgAAAAKAAEAAAAAAAAAAAALAAAAAAAAAAEAAAALAAEAAAAAAAIAAAALAAEAAAAAAAMAAAALAAEAAAAAAAQAAAALAAEAAAAAAAUAAAALAAEAAAAAAAYAAAALAAEAAAAAAAcAAAALAAEAAAAAAAgAAAALAAEAAAABAAgAAAALAAEAAAACAAgAAAALAAEAAAADAAgAAAALAAEAAAAEAAgAAAALAAEAAAAFAAgAAAALAAEAAAAGAAgAAAALAAEAAAAHAAgAAAALAAEAAAAIAAgAAAALAAEAAAAJAAgAAAAMAAEAAAAJAAcAAAAMAAEAAAAIAAcAAAALAAEAAAAHAAcAAAALAAEAAAAGAAcAAAAHAAEAAAAFAAcAAAALAAEAAAAEAAcAAAALAAEAAAADAAcAAAALAAEAAAACAAcAAAALAAEAAAABAAcAAAALAAEAAAD///v/AAANAAQAAAD///z/AAANAAUAAAD///3/AAANAAUAAAD///7/AAANAAUAAAD/////AAANAAYAAAD+//v/AAAMAAQAAAD9//v/AAAMAAQAAAD+//z/AAAJAAYAAAD9//z/AAAMAAUAAAD6////AAAMAAUAAAD7////AAAMAAUAAAD8////AAAMAAUAAAD9////AAAMAAUAAAD+////AAAMAAUAAAD+//7/AAAMAAUAAAD+//3/AAAMAAUAAAD9//3/AAAMAAUAAAD9//7/AAAKAAYAAAD+/wAAAAANAAUAAAD+/wEAAAANAAUAAAD+/wIAAAANAAUAAAD+/wMAAAANAAUAAAD+/wQAAAANAAUAAAD+/wUAAAANAAUAAAD+/wYAAAANAAUAAAD9/wAAAAAMAAUAAAD8/wAAAAAMAAUAAAD7/wAAAAAMAAUAAAD6/wAAAAAMAAUAAAD5/wAAAAALAAUAAAD6/wEAAAAMAAUAAAD6/wIAAAAMAAUAAAD6/wMAAAAMAAUAAAD7/wMAAAAMAAUAAAD7/wQAAAAMAAUAAAD8/wEAAAAMAAUAAAD9/wEAAAAMAAUAAAD9/wIAAAAMAAUAAAD9/wMAAAAMAAUAAAD9/wQAAAAMAAUAAAD9/wUAAAAMAAUAAAD9/wYAAAAMAAUAAAD8/wUAAAAMAAUAAAD7/wUAAAAMAAUAAAD8/wYAAAAMAAUAAAD8/wQAAAAKAAYAAAD8/wMAAAAMAAUAAAD8/wIAAAAMAAUAAAD7/wEAAAAMAAUAAAD7/wIAAAAJAAYAAAD7/wYAAAAMAAUAAAD6/wYAAAAMAAUAAAD6/wUAAAAMAAUAAAD6/wQAAAAMAAUAAAD5////AAALAAUAAAD5/wEAAAALAAUAAAD5/wIAAAALAAUAAAD5/wMAAAALAAUAAAD5/wQAAAALAAUAAAD5/wUAAAALAAUAAAD5/wYAAAALAAUAAAD8//r/AAALAAMAAAAOAP3/AAALAAMAAAALAP3/AAALAAMAAAASAP//AAALAAMAAAAUAP//AAALAAMAAAD6//r/AAAQAAUAAAD7//r/AAALAAMAAAANAP3/AAAOAAYAAAAWAP//AAAPAAYAAAD9//r/AAAPAAUAAAAXAP//AAAQAAUAAAD5//v/AAALAAQAAAD5//z/AAALAAUAAAD5//3/AAALAAUAAAD5//7/AAALAAUAAAD6//v/AAAMAAQAAAD6//z/AAAKAAYAAAD6//3/AAAMAAUAAAD6//7/AAAMAAUAAAD7//v/AAAMAAQAAAD7//z/AAAMAAUAAAD7//3/AAAMAAUAAAD7//7/AAAMAAUAAAD8//v/AAAMAAQAAAD8//z/AAAMAAUAAAD8//3/AAAMAAUAAAD8//7/AAAMAAUAAAARAAcAAAALAAUAAAARAAgAAAALAAYAAAAXAAcAAAAMAAUAAAAWAAcAAAAMAAUAAAAVAAcAAAAMAAUAAAAUAAcAAAAMAAUAAAATAAcAAAAMAAUAAAASAAcAAAAMAAUAAAASAAgAAAAMAAYAAAATAAgAAAAMAAYAAAAUAAgAAAAMAAYAAAAVAAgAAAAMAAYAAAAWAAgAAAAMAAYAAAAXAAgAAAAMAAYAAAAKAAUAAAALAAEAAAAKAAYAAAALAAEAAAAKAAcAAAALAAEAAAAKAAgAAAALAAEAAAALAAUAAAALAAEAAAALAAYAAAALAAEAAAALAAcAAAALAAEAAAALAAgAAAALAAEAAAAMAAUAAAALAAEAAAAMAAYAAAALAAEAAAAMAAcAAAALAAEAAAAMAAgAAAALAAEAAAANAAUAAAALAAEAAAANAAYAAAALAAEAAAANAAcAAAALAAEAAAANAAgAAAALAAEAAAAOAAUAAAALAAEAAAAOAAYAAAALAAEAAAAOAAcAAAALAAEAAAAOAAgAAAALAAEAAAAPAAUAAAALAAEAAAAPAAYAAAALAAEAAAAPAAcAAAALAAEAAAAPAAgAAAALAAEAAAAQAAUAAAALAAEAAAAQAAYAAAALAAEAAAAQAAcAAAALAAEAAAAQAAgAAAALAAEAAAAdAAAAAAANAAQAAAAdAAEAAAANAAUAAAAdAAIAAAANAAUAAAAdAAMAAAANAAUAAAAdAAQAAAANAAUAAAAdAAUAAAANAAUAAAAdAAYAAAANAAUAAAAdAAcAAAANAAUAAAAdAAgAAAANAAYAAAAZAP//AAAOAAQAAAAYAAAAAAAMAAQAAAAZAAAAAAAMAAQAAAAaAAAAAAAMAAQAAAAbAAAAAAAMAAQAAAAcAAAAAAAMAAQAAAAYAAEAAAAMAAUAAAAZAAEAAAAMAAUAAAAaAAEAAAAMAAUAAAAbAAEAAAAMAAUAAAAcAAEAAAAMAAUAAAAcAAIAAAAMAAUAAAAcAAMAAAAJAAYAAAAbAAIAAAAMAAUAAAAaAAIAAAAMAAUAAAAZAAIAAAAMAAUAAAAYAAIAAAAMAAUAAAAYAAMAAAAMAAUAAAAYAAQAAAAMAAUAAAAYAAUAAAAMAAUAAAAYAAYAAAAMAAUAAAAYAAcAAAAMAAUAAAAYAAgAAAAMAAYAAAAZAAMAAAAMAAUAAAAZAAQAAAAMAAUAAAAZAAUAAAAMAAUAAAAZAAYAAAAMAAUAAAAZAAcAAAAMAAUAAAAZAAgAAAAMAAYAAAAaAAMAAAAMAAUAAAAaAAQAAAAMAAUAAAAaAAUAAAAMAAUAAAAaAAYAAAAKAAYAAAAaAAcAAAAMAAUAAAAaAAgAAAAMAAYAAAAbAAMAAAAMAAUAAAAbAAQAAAAMAAUAAAAbAAUAAAAMAAUAAAAbAAYAAAAMAAUAAAAbAAcAAAAMAAUAAAAbAAgAAAAMAAYAAAAcAAQAAAAMAAUAAAAcAAUAAAAMAAUAAAAcAAYAAAAMAAUAAAAcAAcAAAAMAAUAAAAcAAgAAAAMAAYAAAAPAP3/AAAQAAYAAAAiAPr/AAAQAAYAAAAfAPr/AAAOAAYAAAAkAPr/AAAPAAYAAAAgAPr/AAAPAAUAAAAbAP//AAALAAMAAAAaAP//AAALAAMAAAAjAPr/AAALAAMAAAAhAPr/AAALAAMAAAATAP//AAALAAMAAAAVAP//AAALAAMAAAAeAPv/AAALAAQAAAAeAPz/AAALAAUAAAAeAP3/AAALAAUAAAAeAP7/AAALAAUAAAAeAP//AAALAAUAAAAmAP//AAANAAUAAAAmAP7/AAANAAUAAAAmAP3/AAANAAUAAAAmAPv/AAANAAQAAAAfAPv/AAAMAAQAAAAgAPv/AAAMAAQAAAAhAPv/AAAMAAQAAAAiAPv/AAAMAAQAAAAjAPv/AAAMAAQAAAAkAPv/AAAMAAQAAAAlAPv/AAAMAAQAAAAmAPz/AAANAAUAAAAlAP//AAAMAAUAAAAlAP7/AAAMAAUAAAAlAP3/AAAMAAUAAAAlAPz/AAAMAAUAAAAkAPz/AAAMAAUAAAAjAPz/AAAMAAUAAAAiAPz/AAAMAAUAAAAhAPz/AAAMAAUAAAAgAPz/AAAMAAUAAAAfAPz/AAAMAAUAAAAfAP3/AAAKAAYAAAAfAP7/AAAMAAUAAAAfAP//AAAMAAUAAAAkAP//AAAKAAYAAAAkAP7/AAAJAAYAAAAkAP3/AAAMAAUAAAAjAP3/AAAMAAUAAAAiAP3/AAAMAAUAAAAhAP3/AAAMAAUAAAAgAP3/AAAMAAUAAAAgAP7/AAAJAAYAAAAgAP//AAAMAAUAAAAjAP//AAAMAAUAAAAjAP7/AAAMAAUAAAAiAP7/AAAMAAUAAAAhAP7/AAAMAAUAAAAhAP//AAAMAAUAAAAiAP//AAAMAAUAAAAeAAgAAAALAAYAAAAeAAcAAAALAAUAAAAeAAYAAAALAAUAAAAeAAUAAAALAAUAAAAeAAQAAAALAAUAAAAeAAMAAAALAAUAAAAeAAIAAAALAAUAAAAeAAEAAAALAAUAAAAeAAAAAAALAAUAAAAfAAgAAAAMAAYAAAAgAAgAAAAMAAYAAAAhAAgAAAAMAAYAAAAiAAgAAAAMAAYAAAAjAAgAAAAMAAYAAAAkAAgAAAAMAAYAAAAlAAgAAAAMAAYAAAAmAAgAAAANAAYAAAAmAAAAAAANAAUAAAAmAAEAAAANAAUAAAAmAAIAAAANAAUAAAAmAAMAAAANAAUAAAAmAAQAAAANAAUAAAAmAAUAAAANAAUAAAAmAAYAAAANAAUAAAAmAAcAAAANAAUAAAAfAAAAAAAMAAUAAAAfAAEAAAAMAAUAAAAfAAIAAAAMAAUAAAAfAAMAAAAMAAUAAAAfAAQAAAAMAAUAAAAfAAUAAAAMAAUAAAAfAAYAAAAKAAYAAAAfAAcAAAAMAAUAAAAgAAAAAAAMAAUAAAAgAAEAAAAMAAUAAAAgAAIAAAAMAAUAAAAgAAMAAAAMAAUAAAAgAAQAAAAMAAUAAAAgAAUAAAAMAAUAAAAgAAYAAAAMAAUAAAAgAAcAAAAMAAUAAAAhAAAAAAAMAAUAAAAhAAEAAAAMAAUAAAAhAAIAAAAKAAYAAAAhAAMAAAAMAAUAAAAhAAQAAAAMAAUAAAAhAAUAAAAMAAUAAAAhAAYAAAAMAAUAAAAhAAcAAAAMAAUAAAAiAAAAAAAMAAUAAAAiAAEAAAAMAAUAAAAiAAIAAAAMAAUAAAAiAAMAAAAMAAUAAAAiAAQAAAAKAAYAAAAiAAUAAAAKAAYAAAAiAAYAAAAMAAUAAAAiAAcAAAAMAAUAAAAjAAAAAAAMAAUAAAAjAAEAAAAMAAUAAAAjAAIAAAAMAAUAAAAjAAMAAAAMAAUAAAAjAAQAAAAMAAUAAAAjAAUAAAAMAAUAAAAjAAYAAAAMAAUAAAAjAAcAAAAMAAUAAAAkAAAAAAAKAAYAAAAkAAEAAAAMAAUAAAAkAAIAAAAMAAUAAAAkAAMAAAAMAAUAAAAkAAQAAAAMAAUAAAAkAAUAAAAMAAUAAAAkAAYAAAAMAAUAAAAkAAcAAAAKAAYAAAAlAAAAAAAMAAUAAAAlAAEAAAAMAAUAAAAlAAIAAAAMAAUAAAAlAAMAAAAMAAUAAAAlAAQAAAAMAAUAAAAlAAUAAAAMAAUAAAAlAAYAAAAMAAUAAAAlAAcAAAAMAAUAAAD6/wcAAAAMAAUAAAD7/wcAAAAMAAUAAAD8/wcAAAAMAAUAAAD9/wcAAAAMAAUAAAD5/wcAAAALAAUAAAD+/wcAAAANAAUAAAD5/wgAAAALAAYAAAD6/wgAAAAMAAYAAAD7/wgAAAAMAAYAAAD8/wgAAAAMAAYAAAD9/wgAAAAMAAYAAAD+/wgAAAANAAYAAAA=")
+tile_set = SubResource("TileSet_nawqc")
[node name="UI" type="CanvasLayer" parent="."]
[Space] to jump"
[node name="Camera2D" type="Camera2D" parent="."]
+physics_interpolation_mode = 1
position = Vector2(227, -28)
zoom = Vector2(1.5, 1.5)
+process_callback = 0
editor_draw_limits = true
[node name="PhantomCameraHost" type="Node" parent="Camera2D"]
-script = ExtResource("5_w68mw")
+process_priority = 300
+process_physics_priority = 300
+script = ExtResource("5_gcww2")
[node name="Player" type="Node" parent="."]
[node name="PlayerPhantomCamera2D" type="Node2D" parent="Player" node_paths=PackedStringArray("follow_target")]
unique_name_in_owner = true
process_priority = -1
+top_level = true
position = Vector2(227, -28)
script = ExtResource("6_i3g4f")
priority = 10
-[gd_scene load_steps=12 format=3 uid="uid://dg1tuoxd3b4tw"]
+[gd_scene load_steps=12 format=4 uid="uid://dg1tuoxd3b4tw"]
[ext_resource type="Texture2D" uid="uid://c77npili4pel4" path="res://addons/phantom_camera/examples/textures/2D/level_spritesheet.png" id="1_nf5bo"]
[ext_resource type="PackedScene" uid="uid://dg7rhrymsrrrm" path="res://addons/phantom_camera/examples/ui/ui_inventory.tscn" id="2_5oggv"]
[ext_resource type="PackedScene" uid="uid://7kh0xydx0b1o" path="res://addons/phantom_camera/examples/example_scenes/2D/sub_scenes/playable_character_2d.tscn" id="8_i4m1d"]
[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/2D/player_character_body_2d_4.3.gd" id="9_m3lnd"]
-[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_easgx"]
+[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_dpuou"]
texture = ExtResource("1_nf5bo")
0:0/0 = 0
-0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-0:0/0/physics_layer_0/angular_velocity = 0.0
-0:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-0:0/0/physics_layer_1/angular_velocity = 0.0
1:0/0 = 0
-1:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-1:0/0/physics_layer_0/angular_velocity = 0.0
-1:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-1:0/0/physics_layer_1/angular_velocity = 0.0
2:0/0 = 0
-2:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-2:0/0/physics_layer_0/angular_velocity = 0.0
-2:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-2:0/0/physics_layer_1/angular_velocity = 0.0
3:0/0 = 0
-3:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:0/0/physics_layer_0/angular_velocity = 0.0
-3:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:0/0/physics_layer_1/angular_velocity = 0.0
4:0/0 = 0
-4:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:0/0/physics_layer_0/angular_velocity = 0.0
-4:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:0/0/physics_layer_1/angular_velocity = 0.0
5:0/0 = 0
-5:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:0/0/physics_layer_0/angular_velocity = 0.0
-5:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:0/0/physics_layer_1/angular_velocity = 0.0
6:0/0 = 0
-6:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-6:0/0/physics_layer_0/angular_velocity = 0.0
-6:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-6:0/0/physics_layer_1/angular_velocity = 0.0
7:0/0 = 0
-7:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:0/0/physics_layer_0/angular_velocity = 0.0
7:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-7:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:0/0/physics_layer_1/angular_velocity = 0.0
0:1/0 = 0
-0:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-0:1/0/physics_layer_0/angular_velocity = 0.0
-0:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-0:1/0/physics_layer_1/angular_velocity = 0.0
1:1/0 = 0
-1:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-1:1/0/physics_layer_0/angular_velocity = 0.0
-1:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-1:1/0/physics_layer_1/angular_velocity = 0.0
2:1/0 = 0
-2:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-2:1/0/physics_layer_0/angular_velocity = 0.0
-2:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-2:1/0/physics_layer_1/angular_velocity = 0.0
3:1/0 = 0
-3:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:1/0/physics_layer_0/angular_velocity = 0.0
-3:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:1/0/physics_layer_1/angular_velocity = 0.0
4:1/0 = 0
-4:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:1/0/physics_layer_0/angular_velocity = 0.0
-4:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:1/0/physics_layer_1/angular_velocity = 0.0
5:1/0 = 0
-5:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:1/0/physics_layer_0/angular_velocity = 0.0
-5:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:1/0/physics_layer_1/angular_velocity = 0.0
7:1/0 = 0
-7:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:1/0/physics_layer_0/angular_velocity = 0.0
7:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-7:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:1/0/physics_layer_1/angular_velocity = 0.0
2:2/0 = 0
-2:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-2:2/0/physics_layer_0/angular_velocity = 0.0
-2:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-2:2/0/physics_layer_1/angular_velocity = 0.0
3:2/0 = 0
-3:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:2/0/physics_layer_0/angular_velocity = 0.0
-3:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:2/0/physics_layer_1/angular_velocity = 0.0
4:2/0 = 0
-4:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:2/0/physics_layer_0/angular_velocity = 0.0
-4:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:2/0/physics_layer_1/angular_velocity = 0.0
7:2/0 = 0
-7:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:2/0/physics_layer_0/angular_velocity = 0.0
7:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-7:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:2/0/physics_layer_1/angular_velocity = 0.0
3:3/0 = 0
-3:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:3/0/physics_layer_0/angular_velocity = 0.0
-3:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:3/0/physics_layer_1/angular_velocity = 0.0
4:3/0 = 0
-4:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:3/0/physics_layer_0/angular_velocity = 0.0
-4:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:3/0/physics_layer_1/angular_velocity = 0.0
5:3/0 = 0
-5:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:3/0/physics_layer_0/angular_velocity = 0.0
-5:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:3/0/physics_layer_1/angular_velocity = 0.0
7:3/0 = 0
-7:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:3/0/physics_layer_0/angular_velocity = 0.0
7:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-7:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:3/0/physics_layer_1/angular_velocity = 0.0
3:4/0 = 0
-3:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:4/0/physics_layer_0/angular_velocity = 0.0
-3:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:4/0/physics_layer_1/angular_velocity = 0.0
4:4/0 = 0
-4:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:4/0/physics_layer_0/angular_velocity = 0.0
-4:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:4/0/physics_layer_1/angular_velocity = 0.0
5:4/0 = 0
-5:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:4/0/physics_layer_0/angular_velocity = 0.0
-5:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:4/0/physics_layer_1/angular_velocity = 0.0
7:4/0 = 0
-7:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:4/0/physics_layer_0/angular_velocity = 0.0
-7:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:4/0/physics_layer_1/angular_velocity = 0.0
3:5/0 = 0
-3:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:5/0/physics_layer_0/angular_velocity = 0.0
-3:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:5/0/physics_layer_1/angular_velocity = 0.0
4:5/0 = 0
-4:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:5/0/physics_layer_0/angular_velocity = 0.0
-4:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:5/0/physics_layer_1/angular_velocity = 0.0
7:5/0 = 0
-7:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:5/0/physics_layer_0/angular_velocity = 0.0
-7:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:5/0/physics_layer_1/angular_velocity = 0.0
3:6/0 = 0
-3:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:6/0/physics_layer_0/angular_velocity = 0.0
-3:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:6/0/physics_layer_1/angular_velocity = 0.0
4:6/0 = 0
-4:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:6/0/physics_layer_0/angular_velocity = 0.0
-4:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:6/0/physics_layer_1/angular_velocity = 0.0
7:6/0 = 0
-7:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:6/0/physics_layer_0/angular_velocity = 0.0
-7:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:6/0/physics_layer_1/angular_velocity = 0.0
2:7/0 = 0
-2:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-2:7/0/physics_layer_0/angular_velocity = 0.0
-2:7/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-2:7/0/physics_layer_1/angular_velocity = 0.0
3:7/0 = 0
-3:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:7/0/physics_layer_0/angular_velocity = 0.0
-3:7/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:7/0/physics_layer_1/angular_velocity = 0.0
4:7/0 = 0
-4:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:7/0/physics_layer_0/angular_velocity = 0.0
-4:7/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:7/0/physics_layer_1/angular_velocity = 0.0
5:7/0 = 0
-5:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:7/0/physics_layer_0/angular_velocity = 0.0
-5:7/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:7/0/physics_layer_1/angular_velocity = 0.0
8:0/0 = 0
-8:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:0/0/physics_layer_0/angular_velocity = 0.0
8:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-8:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:0/0/physics_layer_1/angular_velocity = 0.0
9:0/0 = 0
-9:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:0/0/physics_layer_0/angular_velocity = 0.0
9:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-9:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:0/0/physics_layer_1/angular_velocity = 0.0
10:0/0 = 0
-10:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:0/0/physics_layer_0/angular_velocity = 0.0
10:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-10:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:0/0/physics_layer_1/angular_velocity = 0.0
11:0/0 = 0
-11:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:0/0/physics_layer_0/angular_velocity = 0.0
11:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-11:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:0/0/physics_layer_1/angular_velocity = 0.0
12:0/0 = 0
-12:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:0/0/physics_layer_0/angular_velocity = 0.0
12:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:0/0/physics_layer_1/angular_velocity = 0.0
13:0/0 = 0
-13:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:0/0/physics_layer_0/angular_velocity = 0.0
13:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:0/0/physics_layer_1/angular_velocity = 0.0
14:0/0 = 0
-14:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:0/0/physics_layer_0/angular_velocity = 0.0
-14:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:0/0/physics_layer_1/angular_velocity = 0.0
14:0/0/physics_layer_1/polygon_0/points = PackedVector2Array(8, -8, 8, 8, -8, 8)
14:0/0/custom_data_0 = &"Sign"
15:0/0 = 0
-15:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:0/0/physics_layer_0/angular_velocity = 0.0
-15:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:0/0/physics_layer_1/angular_velocity = 0.0
16:0/0 = 0
-16:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:0/0/physics_layer_0/angular_velocity = 0.0
-16:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:0/0/physics_layer_1/angular_velocity = 0.0
8:1/0 = 0
-8:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:1/0/physics_layer_0/angular_velocity = 0.0
8:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-8:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:1/0/physics_layer_1/angular_velocity = 0.0
9:1/0 = 0
-9:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:1/0/physics_layer_0/angular_velocity = 0.0
9:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-9:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:1/0/physics_layer_1/angular_velocity = 0.0
10:1/0 = 0
-10:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:1/0/physics_layer_0/angular_velocity = 0.0
10:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-10:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:1/0/physics_layer_1/angular_velocity = 0.0
11:1/0 = 0
-11:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:1/0/physics_layer_0/angular_velocity = 0.0
11:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-11:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:1/0/physics_layer_1/angular_velocity = 0.0
12:1/0 = 0
-12:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:1/0/physics_layer_0/angular_velocity = 0.0
12:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:1/0/physics_layer_1/angular_velocity = 0.0
13:1/0 = 0
-13:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:1/0/physics_layer_0/angular_velocity = 0.0
13:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:1/0/physics_layer_1/angular_velocity = 0.0
14:1/0 = 0
-14:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:1/0/physics_layer_0/angular_velocity = 0.0
-14:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:1/0/physics_layer_1/angular_velocity = 0.0
15:1/0 = 0
-15:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:1/0/physics_layer_0/angular_velocity = 0.0
-15:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:1/0/physics_layer_1/angular_velocity = 0.0
16:1/0 = 0
-16:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:1/0/physics_layer_0/angular_velocity = 0.0
-16:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:1/0/physics_layer_1/angular_velocity = 0.0
8:2/0 = 0
-8:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:2/0/physics_layer_0/angular_velocity = 0.0
8:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-8:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:2/0/physics_layer_1/angular_velocity = 0.0
9:2/0 = 0
-9:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:2/0/physics_layer_0/angular_velocity = 0.0
9:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-9:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:2/0/physics_layer_1/angular_velocity = 0.0
10:2/0 = 0
-10:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:2/0/physics_layer_0/angular_velocity = 0.0
10:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-10:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:2/0/physics_layer_1/angular_velocity = 0.0
11:2/0 = 0
-11:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:2/0/physics_layer_0/angular_velocity = 0.0
11:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-11:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:2/0/physics_layer_1/angular_velocity = 0.0
12:2/0 = 0
-12:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:2/0/physics_layer_0/angular_velocity = 0.0
12:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:2/0/physics_layer_1/angular_velocity = 0.0
13:2/0 = 0
-13:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:2/0/physics_layer_0/angular_velocity = 0.0
13:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:2/0/physics_layer_1/angular_velocity = 0.0
14:2/0 = 0
-14:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:2/0/physics_layer_0/angular_velocity = 0.0
-14:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:2/0/physics_layer_1/angular_velocity = 0.0
15:2/0 = 0
-15:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:2/0/physics_layer_0/angular_velocity = 0.0
-15:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:2/0/physics_layer_1/angular_velocity = 0.0
16:2/0 = 0
-16:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:2/0/physics_layer_0/angular_velocity = 0.0
-16:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:2/0/physics_layer_1/angular_velocity = 0.0
8:3/0 = 0
-8:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:3/0/physics_layer_0/angular_velocity = 0.0
8:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-8:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:3/0/physics_layer_1/angular_velocity = 0.0
9:3/0 = 0
-9:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:3/0/physics_layer_0/angular_velocity = 0.0
9:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-9:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:3/0/physics_layer_1/angular_velocity = 0.0
10:3/0 = 0
-10:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:3/0/physics_layer_0/angular_velocity = 0.0
10:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-10:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:3/0/physics_layer_1/angular_velocity = 0.0
11:3/0 = 0
-11:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:3/0/physics_layer_0/angular_velocity = 0.0
-11:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:3/0/physics_layer_1/angular_velocity = 0.0
12:3/0 = 0
-12:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:3/0/physics_layer_0/angular_velocity = 0.0
12:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:3/0/physics_layer_1/angular_velocity = 0.0
13:3/0 = 0
-13:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:3/0/physics_layer_0/angular_velocity = 0.0
13:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:3/0/physics_layer_1/angular_velocity = 0.0
14:3/0 = 0
-14:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:3/0/physics_layer_0/angular_velocity = 0.0
-14:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:3/0/physics_layer_1/angular_velocity = 0.0
15:3/0 = 0
-15:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:3/0/physics_layer_0/angular_velocity = 0.0
-15:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:3/0/physics_layer_1/angular_velocity = 0.0
16:3/0 = 0
-16:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:3/0/physics_layer_0/angular_velocity = 0.0
-16:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:3/0/physics_layer_1/angular_velocity = 0.0
8:4/0 = 0
-8:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:4/0/physics_layer_0/angular_velocity = 0.0
-8:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:4/0/physics_layer_1/angular_velocity = 0.0
9:4/0 = 0
-9:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:4/0/physics_layer_0/angular_velocity = 0.0
-9:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:4/0/physics_layer_1/angular_velocity = 0.0
10:4/0 = 0
-10:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:4/0/physics_layer_0/angular_velocity = 0.0
-10:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:4/0/physics_layer_1/angular_velocity = 0.0
11:4/0 = 0
-11:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:4/0/physics_layer_0/angular_velocity = 0.0
11:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-7, 2.5, -5, -2, -2.5, -5, 2, -7, 8, -8, 8, 8, -8, 8)
-11:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:4/0/physics_layer_1/angular_velocity = 0.0
12:4/0 = 0
-12:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:4/0/physics_layer_0/angular_velocity = 0.0
12:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:4/0/physics_layer_1/angular_velocity = 0.0
13:4/0 = 0
-13:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:4/0/physics_layer_0/angular_velocity = 0.0
13:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 0, -6, 4, -1.5, 6.5, 1.5, 8, 8, -8, 8)
-13:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:4/0/physics_layer_1/angular_velocity = 0.0
14:4/0 = 0
-14:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:4/0/physics_layer_0/angular_velocity = 0.0
-14:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:4/0/physics_layer_1/angular_velocity = 0.0
14:4/0/physics_layer_1/polygon_0/points = PackedVector2Array(-8, -8, -8, 8, 8, 8, 8, -8)
14:4/0/custom_data_0 = &"Inventory"
15:4/0 = 0
-15:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:4/0/physics_layer_0/angular_velocity = 0.0
-15:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:4/0/physics_layer_1/angular_velocity = 0.0
16:4/0 = 0
-16:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:4/0/physics_layer_0/angular_velocity = 0.0
-16:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:4/0/physics_layer_1/angular_velocity = 0.0
8:5/0 = 0
-8:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:5/0/physics_layer_0/angular_velocity = 0.0
-8:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:5/0/physics_layer_1/angular_velocity = 0.0
9:5/0 = 0
-9:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:5/0/physics_layer_0/angular_velocity = 0.0
-9:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:5/0/physics_layer_1/angular_velocity = 0.0
10:5/0 = 0
-10:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:5/0/physics_layer_0/angular_velocity = 0.0
-10:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:5/0/physics_layer_1/angular_velocity = 0.0
11:5/0 = 0
-11:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:5/0/physics_layer_0/angular_velocity = 0.0
11:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-11:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:5/0/physics_layer_1/angular_velocity = 0.0
12:5/0 = 0
-12:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:5/0/physics_layer_0/angular_velocity = 0.0
12:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:5/0/physics_layer_1/angular_velocity = 0.0
13:5/0 = 0
-13:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:5/0/physics_layer_0/angular_velocity = 0.0
13:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:5/0/physics_layer_1/angular_velocity = 0.0
14:5/0 = 0
-14:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:5/0/physics_layer_0/angular_velocity = 0.0
-14:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:5/0/physics_layer_1/angular_velocity = 0.0
15:5/0 = 0
-15:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:5/0/physics_layer_0/angular_velocity = 0.0
-15:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:5/0/physics_layer_1/angular_velocity = 0.0
16:5/0 = 0
-16:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:5/0/physics_layer_0/angular_velocity = 0.0
-16:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:5/0/physics_layer_1/angular_velocity = 0.0
8:6/0 = 0
-8:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:6/0/physics_layer_0/angular_velocity = 0.0
-8:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:6/0/physics_layer_1/angular_velocity = 0.0
9:6/0 = 0
-9:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:6/0/physics_layer_0/angular_velocity = 0.0
-9:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:6/0/physics_layer_1/angular_velocity = 0.0
10:6/0 = 0
-10:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:6/0/physics_layer_0/angular_velocity = 0.0
-10:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:6/0/physics_layer_1/angular_velocity = 0.0
11:6/0 = 0
-11:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:6/0/physics_layer_0/angular_velocity = 0.0
11:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, 1, 6.5, -3, 3, -6.5, -1.5)
-11:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:6/0/physics_layer_1/angular_velocity = 0.0
12:6/0 = 0
-12:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:6/0/physics_layer_0/angular_velocity = 0.0
12:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:6/0/physics_layer_1/angular_velocity = 0.0
13:6/0 = 0
-13:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:6/0/physics_layer_0/angular_velocity = 0.0
13:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 6, -0.5, 3, 3.5, -1.5, 6.5, -8, 8)
-13:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:6/0/physics_layer_1/angular_velocity = 0.0
14:6/0 = 0
-14:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:6/0/physics_layer_0/angular_velocity = 0.0
-14:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:6/0/physics_layer_1/angular_velocity = 0.0
15:6/0 = 0
-15:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:6/0/physics_layer_0/angular_velocity = 0.0
-15:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:6/0/physics_layer_1/angular_velocity = 0.0
16:6/0 = 0
-16:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:6/0/physics_layer_0/angular_velocity = 0.0
-16:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:6/0/physics_layer_1/angular_velocity = 0.0
-[sub_resource type="TileSet" id="TileSet_kf7eg"]
+[sub_resource type="TileSet" id="TileSet_kxirl"]
physics_layer_0/collision_layer = 1
physics_layer_1/collision_layer = 2
physics_layer_1/collision_mask = 2
custom_data_layer_0/name = "Type"
custom_data_layer_0/type = 21
-sources/0 = SubResource("TileSetAtlasSource_easgx")
+sources/0 = SubResource("TileSetAtlasSource_dpuou")
-[node name="ExampleScene2D" type="Node2D"]
+[node name="Root" type="Node2D"]
[node name="Background" type="CanvasLayer" parent="."]
layer = -3
[node name="ColorRect" type="ColorRect" parent="Background"]
+auto_translate_mode = 2
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_bottom = 578.0
grow_horizontal = 2
grow_vertical = 2
-auto_translate = false
localize_numeral_system = false
color = Color(0.137255, 0.14902, 0.196078, 1)
-[node name="TileMap" type="TileMap" parent="."]
-z_index = -1
+[node name="Pillar" type="TileMapLayer" parent="."]
+use_parent_material = true
scale = Vector2(3, 3)
-tile_set = SubResource("TileSet_kf7eg")
-format = 2
-layer_0/name = "Background"
-layer_0/tile_data = PackedInt32Array(-393216, 655360, 2, -327680, 655360, 3, -262144, 655360, 3, -196608, 655360, 3, -131072, 655360, 3, -65536, 655360, 3, -393215, 720896, 2, -327679, 720896, 1, -262143, 720896, 1, -196607, 720896, 1, -131071, 720896, 1, -65535, 720896, 1, -393214, 786432, 2, -327678, 786432, 3, -262142, 786432, 3, -196606, 786432, 3, -131070, 786432, 3, -65534, 786432, 3)
-layer_1/name = "Terrain"
-layer_1/z_index = 1
-layer_1/tile_data = PackedInt32Array(1, 720896, 0, 2, 720896, 0, 3, 720896, 0, 4, 720896, 0, 5, 720896, 0, 6, 720896, 0, 7, 720896, 0, 8, 720896, 0, 9, 786432, 0, 65545, 786432, 1, 131081, 786432, 1, 196617, 786432, 1, 262153, 786432, 1, 327689, 786432, 1, 393225, 786432, 1, 65537, 720896, 1, 131073, 720896, 1, 196609, 720896, 1, 262145, 458752, 1, 327681, 720896, 1, 393217, 720896, 1, 65538, 720896, 1, 131074, 720896, 1, 196610, 720896, 1, 262146, 720896, 1, 327682, 720896, 1, 393218, 720896, 1, 65539, 720896, 1, 131075, 720896, 1, 196611, 720896, 1, 262147, 720896, 1, 327683, 720896, 1, 393219, 720896, 1, 65540, 458752, 1, 131076, 720896, 1, 196612, 720896, 1, 262148, 720896, 1, 327684, 720896, 1, 393220, 720896, 1, 65541, 720896, 1, 131077, 720896, 1, 196613, 720896, 1, 262149, 458752, 1, 327685, 720896, 1, 393221, 720896, 1, 65542, 720896, 1, 131078, 720896, 1, 196614, 720896, 1, 262150, 720896, 1, 327686, 720896, 1, 393222, 720896, 1, 65543, 720896, 1, 131079, 720896, 1, 196615, 720896, 1, 262151, 720896, 1, 327687, 720896, 1, 393223, 458752, 1, 65544, 720896, 1, 131080, 720896, 1, 196616, 458752, 1, 262152, 720896, 1, 327688, 720896, 1, 393224, 720896, 1, 65546, 524288, 5, 65547, 524288, 5, 65548, 524288, 5, 65549, 524288, 5, 131082, 524288, 6, 131083, 524288, 6, 131084, 524288, 6, 131085, 524288, 6, 196618, 720896, 1, 262154, 720896, 1, 196619, 720896, 1, 262155, 720896, 1, 196620, 720896, 1, 262156, 720896, 1, 196621, 720896, 1, 262157, 720896, 1, 65550, 524288, 5, 65551, 524288, 5, 65552, 524288, 5, 131086, 524288, 6, 131087, 524288, 6, 131088, 524288, 6, 196622, 720896, 1, 196623, 720896, 1, 262159, 720896, 1, 262160, 720896, 1, 196624, 720896, 1, 262158, 720896, 1, 17, 720896, 4, 65553, 720896, 5, 131089, 720896, 5, 196625, 720896, 5, 262161, 720896, 5, 18, 786432, 4, 19, 786432, 4, 20, 786432, 4, 21, 786432, 4, 22, 786432, 4, 23, 786432, 4, 65554, 786432, 5, 131090, 786432, 5, 196626, 786432, 5, 262162, 786432, 5, 65555, 786432, 5, 131091, 589824, 6, 196627, 786432, 5, 262163, 786432, 5, 65556, 786432, 5, 131092, 786432, 5, 196628, 786432, 5, 262164, 786432, 5, 65557, 786432, 5, 131093, 786432, 5, 196629, 786432, 5, 262165, 786432, 5, 65558, 786432, 5, 131094, 786432, 5, 196630, 786432, 5, 262166, 655360, 6, 65559, 786432, 5, 131095, 786432, 5, 196631, 786432, 5, 262167, 786432, 5, 327697, 720896, 5, 393233, 720896, 5, 327698, 589824, 6, 393234, 786432, 5, 327699, 786432, 5, 393235, 786432, 5, 327700, 786432, 5, 393236, 786432, 5, 327701, 786432, 5, 393237, 786432, 5, 327702, 786432, 5, 393238, 786432, 5, 327703, 786432, 5, 393239, 786432, 5, -131062, 720896, 4, -131061, 786432, 4, -131060, 786432, 4, -65526, 720896, 6, -65525, 786432, 6, -65524, 786432, 6, -131056, 851968, 4, -65520, 851968, 6, -131059, 786432, 4, -131058, 786432, 4, -131057, 786432, 4, -65523, 786432, 6, -65522, 786432, 6, -65521, 786432, 6, -196596, 917504, 0, -65536, 917504, 2, -65535, 983040, 2, -65534, 1048576, 2, -65533, 917504, 2, -65532, 983040, 2, -65531, 1048576, 2, -65530, 917504, 2, -65529, 983040, 2, -65528, 1048576, 2, 65535, 655360, 0, 131071, 655360, 1, 196607, 655360, 1, 262143, 655360, 1, 327679, 655360, 1, 393215, 655360, 1, 458751, 655360, 1, 524287, 655360, 1, 589823, 655360, 1, 0, 720896, 0, 65536, 720896, 1, 131072, 720896, 1, 196608, 720896, 1, 262144, 720896, 1, 327680, 720896, 1, 393216, 720896, 1, 458752, 720896, 1, 524288, 720896, 1, 524289, 720896, 1, 524290, 720896, 1, 524291, 720896, 1, 524292, 720896, 1, 524293, 720896, 1, 524294, 720896, 1, 524295, 720896, 1, 524296, 720896, 1, 524297, 786432, 1, 458761, 786432, 1, 458760, 720896, 1, 458759, 720896, 1, 458758, 458752, 1, 458757, 720896, 1, 458756, 720896, 1, 458755, 720896, 1, 458754, 720896, 1, 458753, 720896, 1, -262145, 851968, 4, -196609, 851968, 5, -131073, 851968, 5, -65537, 851968, 5, -1, 851968, 6, -262146, 786432, 4, -262147, 786432, 4, -196610, 589824, 6, -196611, 786432, 5, -6, 786432, 5, -5, 786432, 5, -4, 786432, 5, -3, 786432, 5, -2, 786432, 5, -65538, 786432, 5, -131074, 786432, 5, -131075, 786432, 5, -65539, 655360, 6, 65534, 851968, 5, 131070, 851968, 5, 196606, 851968, 5, 262142, 851968, 5, 327678, 851968, 5, 393214, 851968, 5, 458750, 851968, 5, 65533, 786432, 5, 65532, 786432, 5, 65531, 786432, 5, 65530, 786432, 5, 65529, 720896, 5, 131066, 786432, 5, 196602, 786432, 5, 262138, 786432, 5, 262139, 786432, 5, 327675, 786432, 5, 131068, 786432, 5, 131069, 786432, 5, 196605, 786432, 5, 262141, 786432, 5, 327677, 786432, 5, 393213, 786432, 5, 458749, 786432, 5, 393212, 786432, 5, 393211, 786432, 5, 458748, 786432, 5, 327676, 655360, 6, 262140, 786432, 5, 196604, 786432, 5, 131067, 786432, 5, 196603, 589824, 6, 458747, 786432, 5, 458746, 786432, 5, 393210, 786432, 5, 327674, 786432, 5, -7, 720896, 5, 131065, 720896, 5, 196601, 720896, 5, 262137, 720896, 5, 327673, 720896, 5, 393209, 720896, 5, 458745, 720896, 5, -327684, 720896, 3, -196594, 720896, 3, -196597, 720896, 3, -65518, 720896, 3, -65516, 720896, 3, -327686, 1048576, 5, -327685, 720896, 3, -196595, 917504, 6, -65514, 983040, 6, -327683, 983040, 5, -65513, 1048576, 5, -262151, 720896, 4, -196615, 720896, 5, -131079, 720896, 5, -65543, 720896, 5, -262150, 786432, 4, -196614, 655360, 6, -131078, 786432, 5, -65542, 786432, 5, -262149, 786432, 4, -196613, 786432, 5, -131077, 786432, 5, -65541, 786432, 5, -262148, 786432, 4, -196612, 786432, 5, -131076, 786432, 5, -65540, 786432, 5, 458769, 720896, 5, 524305, 720896, 6, 458775, 786432, 5, 458774, 786432, 5, 458773, 786432, 5, 458772, 786432, 5, 458771, 786432, 5, 458770, 786432, 5, 524306, 786432, 6, 524307, 786432, 6, 524308, 786432, 6, 524309, 786432, 6, 524310, 786432, 6, 524311, 786432, 6, 327690, 720896, 1, 393226, 720896, 1, 458762, 720896, 1, 524298, 720896, 1, 327691, 720896, 1, 393227, 720896, 1, 458763, 720896, 1, 524299, 720896, 1, 327692, 720896, 1, 393228, 720896, 1, 458764, 720896, 1, 524300, 720896, 1, 327693, 720896, 1, 393229, 720896, 1, 458765, 720896, 1, 524301, 720896, 1, 327694, 720896, 1, 393230, 720896, 1, 458766, 720896, 1, 524302, 720896, 1, 327695, 720896, 1, 393231, 720896, 1, 458767, 720896, 1, 524303, 720896, 1, 327696, 720896, 1, 393232, 720896, 1, 458768, 720896, 1, 524304, 720896, 1, 29, 851968, 4, 65565, 851968, 5, 131101, 851968, 5, 196637, 851968, 5, 262173, 851968, 5, 327709, 851968, 5, 393245, 851968, 5, 458781, 851968, 5, 524317, 851968, 6, -65511, 917504, 4, 24, 786432, 4, 25, 786432, 4, 26, 786432, 4, 27, 786432, 4, 28, 786432, 4, 65560, 786432, 5, 65561, 786432, 5, 65562, 786432, 5, 65563, 786432, 5, 65564, 786432, 5, 131100, 786432, 5, 196636, 589824, 6, 131099, 786432, 5, 131098, 786432, 5, 131097, 786432, 5, 131096, 786432, 5, 196632, 786432, 5, 262168, 786432, 5, 327704, 786432, 5, 393240, 786432, 5, 458776, 786432, 5, 524312, 786432, 6, 196633, 786432, 5, 262169, 786432, 5, 327705, 786432, 5, 393241, 786432, 5, 458777, 786432, 5, 524313, 786432, 6, 196634, 786432, 5, 262170, 786432, 5, 327706, 786432, 5, 393242, 655360, 6, 458778, 786432, 5, 524314, 786432, 6, 196635, 786432, 5, 262171, 786432, 5, 327707, 786432, 5, 393243, 786432, 5, 458779, 786432, 5, 524315, 786432, 6, 262172, 786432, 5, 327708, 786432, 5, 393244, 786432, 5, 458780, 786432, 5, 524316, 786432, 6, -196593, 1048576, 6, -393182, 1048576, 6, -393185, 917504, 6, -393180, 983040, 6, -393184, 983040, 5, -65509, 720896, 3, -65510, 720896, 3, -393181, 720896, 3, -393183, 720896, 3, -65517, 720896, 3, -65515, 720896, 3, -327650, 720896, 4, -262114, 720896, 5, -196578, 720896, 5, -131042, 720896, 5, -65506, 720896, 5, -65498, 851968, 5, -131034, 851968, 5, -196570, 851968, 5, -327642, 851968, 4, -327649, 786432, 4, -327648, 786432, 4, -327647, 786432, 4, -327646, 786432, 4, -327645, 786432, 4, -327644, 786432, 4, -327643, 786432, 4, -262106, 851968, 5, -65499, 786432, 5, -131035, 786432, 5, -196571, 786432, 5, -262107, 786432, 5, -262108, 786432, 5, -262109, 786432, 5, -262110, 786432, 5, -262111, 786432, 5, -262112, 786432, 5, -262113, 786432, 5, -196577, 655360, 6, -131041, 786432, 5, -65505, 786432, 5, -65500, 655360, 6, -131036, 589824, 6, -196572, 786432, 5, -196573, 786432, 5, -196574, 786432, 5, -196575, 786432, 5, -196576, 786432, 5, -131040, 589824, 6, -65504, 786432, 5, -65501, 786432, 5, -131037, 786432, 5, -131038, 786432, 5, -131039, 786432, 5, -65503, 786432, 5, -65502, 786432, 5, 524318, 720896, 6, 458782, 720896, 5, 393246, 720896, 5, 327710, 720896, 5, 262174, 720896, 5, 196638, 720896, 5, 131102, 720896, 5, 65566, 720896, 5, 30, 720896, 5, 524319, 786432, 6, 524320, 786432, 6, 524321, 786432, 6, 524322, 786432, 6, 524323, 786432, 6, 524324, 786432, 6, 524325, 786432, 6, 524326, 851968, 6, 38, 851968, 5, 65574, 851968, 5, 131110, 851968, 5, 196646, 851968, 5, 262182, 851968, 5, 327718, 851968, 5, 393254, 851968, 5, 458790, 851968, 5, 31, 786432, 5, 65567, 786432, 5, 131103, 786432, 5, 196639, 786432, 5, 262175, 786432, 5, 327711, 786432, 5, 393247, 655360, 6, 458783, 786432, 5, 32, 786432, 5, 65568, 786432, 5, 131104, 786432, 5, 196640, 786432, 5, 262176, 786432, 5, 327712, 786432, 5, 393248, 786432, 5, 458784, 786432, 5, 33, 786432, 5, 65569, 786432, 5, 131105, 655360, 6, 196641, 786432, 5, 262177, 786432, 5, 327713, 786432, 5, 393249, 786432, 5, 458785, 786432, 5, 34, 786432, 5, 65570, 786432, 5, 131106, 786432, 5, 196642, 786432, 5, 262178, 655360, 6, 327714, 655360, 6, 393250, 786432, 5, 458786, 786432, 5, 35, 786432, 5, 65571, 786432, 5, 131107, 786432, 5, 196643, 786432, 5, 262179, 786432, 5, 327715, 786432, 5, 393251, 786432, 5, 458787, 786432, 5, 36, 655360, 6, 65572, 786432, 5, 131108, 786432, 5, 196644, 786432, 5, 262180, 786432, 5, 327716, 786432, 5, 393252, 786432, 5, 458788, 655360, 6, 37, 786432, 5, 65573, 786432, 5, 131109, 786432, 5, 196645, 786432, 5, 262181, 786432, 5, 327717, 786432, 5, 393253, 786432, 5, 458789, 786432, 5, 524282, 786432, 5, 524283, 786432, 5, 524284, 786432, 5, 524285, 786432, 5, 524281, 720896, 5, 524286, 851968, 5, 589817, 720896, 6, 589818, 786432, 6, 589819, 786432, 6, 589820, 786432, 6, 589821, 786432, 6, 589822, 851968, 6)
+tile_map_data = PackedByteArray("AAAAAPr/AAAKAAIAAAAAAPv/AAAKAAMAAAAAAPz/AAAKAAMAAAAAAP3/AAAKAAMAAAAAAP7/AAAKAAMAAAAAAP//AAAKAAMAAAABAPr/AAALAAIAAAABAPv/AAALAAEAAAABAPz/AAALAAEAAAABAP3/AAALAAEAAAABAP7/AAALAAEAAAABAP//AAALAAEAAAACAPr/AAAMAAIAAAACAPv/AAAMAAMAAAACAPz/AAAMAAMAAAACAP3/AAAMAAMAAAACAP7/AAAMAAMAAAACAP//AAAMAAMAAAA=")
+tile_set = SubResource("TileSet_kxirl")
+collision_enabled = false
+navigation_enabled = false
+
+[node name="Terrain" type="TileMapLayer" parent="."]
+use_parent_material = true
+scale = Vector2(3, 3)
+tile_map_data = PackedByteArray("AAABAAAAAAALAAAAAAACAAAAAAALAAAAAAADAAAAAAALAAAAAAAEAAAAAAALAAAAAAAFAAAAAAALAAAAAAAGAAAAAAALAAAAAAAHAAAAAAALAAAAAAAIAAAAAAALAAAAAAAJAAAAAAAMAAAAAAAJAAEAAAAMAAEAAAAJAAIAAAAMAAEAAAAJAAMAAAAMAAEAAAAJAAQAAAAMAAEAAAAJAAUAAAAMAAEAAAAJAAYAAAAMAAEAAAABAAEAAAALAAEAAAABAAIAAAALAAEAAAABAAMAAAALAAEAAAABAAQAAAAHAAEAAAABAAUAAAALAAEAAAABAAYAAAALAAEAAAACAAEAAAALAAEAAAACAAIAAAALAAEAAAACAAMAAAALAAEAAAACAAQAAAALAAEAAAACAAUAAAALAAEAAAACAAYAAAALAAEAAAADAAEAAAALAAEAAAADAAIAAAALAAEAAAADAAMAAAALAAEAAAADAAQAAAALAAEAAAADAAUAAAALAAEAAAADAAYAAAALAAEAAAAEAAEAAAAHAAEAAAAEAAIAAAALAAEAAAAEAAMAAAALAAEAAAAEAAQAAAALAAEAAAAEAAUAAAALAAEAAAAEAAYAAAALAAEAAAAFAAEAAAALAAEAAAAFAAIAAAALAAEAAAAFAAMAAAALAAEAAAAFAAQAAAAHAAEAAAAFAAUAAAALAAEAAAAFAAYAAAALAAEAAAAGAAEAAAALAAEAAAAGAAIAAAALAAEAAAAGAAMAAAALAAEAAAAGAAQAAAALAAEAAAAGAAUAAAALAAEAAAAGAAYAAAALAAEAAAAHAAEAAAALAAEAAAAHAAIAAAALAAEAAAAHAAMAAAALAAEAAAAHAAQAAAALAAEAAAAHAAUAAAALAAEAAAAHAAYAAAAHAAEAAAAIAAEAAAALAAEAAAAIAAIAAAALAAEAAAAIAAMAAAAHAAEAAAAIAAQAAAALAAEAAAAIAAUAAAALAAEAAAAIAAYAAAALAAEAAAAKAAEAAAAIAAUAAAALAAEAAAAIAAUAAAAMAAEAAAAIAAUAAAANAAEAAAAIAAUAAAAKAAIAAAAIAAYAAAALAAIAAAAIAAYAAAAMAAIAAAAIAAYAAAANAAIAAAAIAAYAAAAKAAMAAAALAAEAAAAKAAQAAAALAAEAAAALAAMAAAALAAEAAAALAAQAAAALAAEAAAAMAAMAAAALAAEAAAAMAAQAAAALAAEAAAANAAMAAAALAAEAAAANAAQAAAALAAEAAAAOAAEAAAAIAAUAAAAPAAEAAAAIAAUAAAAQAAEAAAAIAAUAAAAOAAIAAAAIAAYAAAAPAAIAAAAIAAYAAAAQAAIAAAAIAAYAAAAOAAMAAAALAAEAAAAPAAMAAAALAAEAAAAPAAQAAAALAAEAAAAQAAQAAAALAAEAAAAQAAMAAAALAAEAAAAOAAQAAAALAAEAAAARAAAAAAALAAQAAAARAAEAAAALAAUAAAARAAIAAAALAAUAAAARAAMAAAALAAUAAAARAAQAAAALAAUAAAASAAAAAAAMAAQAAAATAAAAAAAMAAQAAAAUAAAAAAAMAAQAAAAVAAAAAAAMAAQAAAAWAAAAAAAMAAQAAAAXAAAAAAAMAAQAAAASAAEAAAAMAAUAAAASAAIAAAAMAAUAAAASAAMAAAAMAAUAAAASAAQAAAAMAAUAAAATAAEAAAAMAAUAAAATAAIAAAAJAAYAAAATAAMAAAAMAAUAAAATAAQAAAAMAAUAAAAUAAEAAAAMAAUAAAAUAAIAAAAMAAUAAAAUAAMAAAAMAAUAAAAUAAQAAAAMAAUAAAAVAAEAAAAMAAUAAAAVAAIAAAAMAAUAAAAVAAMAAAAMAAUAAAAVAAQAAAAMAAUAAAAWAAEAAAAMAAUAAAAWAAIAAAAMAAUAAAAWAAMAAAAMAAUAAAAWAAQAAAAKAAYAAAAXAAEAAAAMAAUAAAAXAAIAAAAMAAUAAAAXAAMAAAAMAAUAAAAXAAQAAAAMAAUAAAARAAUAAAALAAUAAAARAAYAAAALAAUAAAASAAUAAAAJAAYAAAASAAYAAAAMAAUAAAATAAUAAAAMAAUAAAATAAYAAAAMAAUAAAAUAAUAAAAMAAUAAAAUAAYAAAAMAAUAAAAVAAUAAAAMAAUAAAAVAAYAAAAMAAUAAAAWAAUAAAAMAAUAAAAWAAYAAAAMAAUAAAAXAAUAAAAMAAUAAAAXAAYAAAAMAAUAAAAKAP7/AAALAAQAAAALAP7/AAAMAAQAAAAMAP7/AAAMAAQAAAAKAP//AAALAAYAAAALAP//AAAMAAYAAAAMAP//AAAMAAYAAAAQAP7/AAANAAQAAAAQAP//AAANAAYAAAANAP7/AAAMAAQAAAAOAP7/AAAMAAQAAAAPAP7/AAAMAAQAAAANAP//AAAMAAYAAAAOAP//AAAMAAYAAAAPAP//AAAMAAYAAAAMAP3/AAAOAAAAAAADAP//AAAOAAIAAAAEAP//AAAPAAIAAAAFAP//AAAQAAIAAAAGAP//AAAOAAIAAAAHAP//AAAPAAIAAAAIAP//AAAQAAIAAAD//wAAAAAKAAAAAAD//wEAAAAKAAEAAAD//wIAAAAKAAEAAAD//wMAAAAKAAEAAAD//wQAAAAKAAEAAAD//wUAAAAKAAEAAAD//wYAAAAKAAEAAAD//wcAAAAKAAEAAAD//wgAAAAKAAEAAAAAAAAAAAALAAAAAAAAAAEAAAALAAEAAAAAAAIAAAALAAEAAAAAAAMAAAALAAEAAAAAAAQAAAALAAEAAAAAAAUAAAALAAEAAAAAAAYAAAALAAEAAAAAAAcAAAALAAEAAAAAAAgAAAALAAEAAAABAAgAAAALAAEAAAACAAgAAAALAAEAAAADAAgAAAALAAEAAAAEAAgAAAALAAEAAAAFAAgAAAALAAEAAAAGAAgAAAALAAEAAAAHAAgAAAALAAEAAAAIAAgAAAALAAEAAAAJAAgAAAAMAAEAAAAJAAcAAAAMAAEAAAAIAAcAAAALAAEAAAAHAAcAAAALAAEAAAAGAAcAAAAHAAEAAAAFAAcAAAALAAEAAAAEAAcAAAALAAEAAAADAAcAAAALAAEAAAACAAcAAAALAAEAAAABAAcAAAALAAEAAAD///v/AAANAAQAAAD///z/AAANAAUAAAD///3/AAANAAUAAAD///7/AAANAAUAAAD/////AAANAAYAAAD+//v/AAAMAAQAAAD9//v/AAAMAAQAAAD+//z/AAAJAAYAAAD9//z/AAAMAAUAAAD6////AAAMAAUAAAD7////AAAMAAUAAAD8////AAAMAAUAAAD9////AAAMAAUAAAD+////AAAMAAUAAAD+//7/AAAMAAUAAAD+//3/AAAMAAUAAAD9//3/AAAMAAUAAAD9//7/AAAKAAYAAAD+/wAAAAANAAUAAAD+/wEAAAANAAUAAAD+/wIAAAANAAUAAAD+/wMAAAANAAUAAAD+/wQAAAANAAUAAAD+/wUAAAANAAUAAAD+/wYAAAANAAUAAAD9/wAAAAAMAAUAAAD8/wAAAAAMAAUAAAD7/wAAAAAMAAUAAAD6/wAAAAAMAAUAAAD5/wAAAAALAAUAAAD6/wEAAAAMAAUAAAD6/wIAAAAMAAUAAAD6/wMAAAAMAAUAAAD7/wMAAAAMAAUAAAD7/wQAAAAMAAUAAAD8/wEAAAAMAAUAAAD9/wEAAAAMAAUAAAD9/wIAAAAMAAUAAAD9/wMAAAAMAAUAAAD9/wQAAAAMAAUAAAD9/wUAAAAMAAUAAAD9/wYAAAAMAAUAAAD8/wUAAAAMAAUAAAD7/wUAAAAMAAUAAAD8/wYAAAAMAAUAAAD8/wQAAAAKAAYAAAD8/wMAAAAMAAUAAAD8/wIAAAAMAAUAAAD7/wEAAAAMAAUAAAD7/wIAAAAJAAYAAAD7/wYAAAAMAAUAAAD6/wYAAAAMAAUAAAD6/wUAAAAMAAUAAAD6/wQAAAAMAAUAAAD5////AAALAAUAAAD5/wEAAAALAAUAAAD5/wIAAAALAAUAAAD5/wMAAAALAAUAAAD5/wQAAAALAAUAAAD5/wUAAAALAAUAAAD5/wYAAAALAAUAAAD8//r/AAALAAMAAAAOAP3/AAALAAMAAAALAP3/AAALAAMAAAASAP//AAALAAMAAAAUAP//AAALAAMAAAD6//r/AAAQAAUAAAD7//r/AAALAAMAAAANAP3/AAAOAAYAAAAWAP//AAAPAAYAAAD9//r/AAAPAAUAAAAXAP//AAAQAAUAAAD5//v/AAALAAQAAAD5//z/AAALAAUAAAD5//3/AAALAAUAAAD5//7/AAALAAUAAAD6//v/AAAMAAQAAAD6//z/AAAKAAYAAAD6//3/AAAMAAUAAAD6//7/AAAMAAUAAAD7//v/AAAMAAQAAAD7//z/AAAMAAUAAAD7//3/AAAMAAUAAAD7//7/AAAMAAUAAAD8//v/AAAMAAQAAAD8//z/AAAMAAUAAAD8//3/AAAMAAUAAAD8//7/AAAMAAUAAAARAAcAAAALAAUAAAARAAgAAAALAAYAAAAXAAcAAAAMAAUAAAAWAAcAAAAMAAUAAAAVAAcAAAAMAAUAAAAUAAcAAAAMAAUAAAATAAcAAAAMAAUAAAASAAcAAAAMAAUAAAASAAgAAAAMAAYAAAATAAgAAAAMAAYAAAAUAAgAAAAMAAYAAAAVAAgAAAAMAAYAAAAWAAgAAAAMAAYAAAAXAAgAAAAMAAYAAAAKAAUAAAALAAEAAAAKAAYAAAALAAEAAAAKAAcAAAALAAEAAAAKAAgAAAALAAEAAAALAAUAAAALAAEAAAALAAYAAAALAAEAAAALAAcAAAALAAEAAAALAAgAAAALAAEAAAAMAAUAAAALAAEAAAAMAAYAAAALAAEAAAAMAAcAAAALAAEAAAAMAAgAAAALAAEAAAANAAUAAAALAAEAAAANAAYAAAALAAEAAAANAAcAAAALAAEAAAANAAgAAAALAAEAAAAOAAUAAAALAAEAAAAOAAYAAAALAAEAAAAOAAcAAAALAAEAAAAOAAgAAAALAAEAAAAPAAUAAAALAAEAAAAPAAYAAAALAAEAAAAPAAcAAAALAAEAAAAPAAgAAAALAAEAAAAQAAUAAAALAAEAAAAQAAYAAAALAAEAAAAQAAcAAAALAAEAAAAQAAgAAAALAAEAAAAdAAAAAAANAAQAAAAdAAEAAAANAAUAAAAdAAIAAAANAAUAAAAdAAMAAAANAAUAAAAdAAQAAAANAAUAAAAdAAUAAAANAAUAAAAdAAYAAAANAAUAAAAdAAcAAAANAAUAAAAdAAgAAAANAAYAAAAZAP//AAAOAAQAAAAYAAAAAAAMAAQAAAAZAAAAAAAMAAQAAAAaAAAAAAAMAAQAAAAbAAAAAAAMAAQAAAAcAAAAAAAMAAQAAAAYAAEAAAAMAAUAAAAZAAEAAAAMAAUAAAAaAAEAAAAMAAUAAAAbAAEAAAAMAAUAAAAcAAEAAAAMAAUAAAAcAAIAAAAMAAUAAAAcAAMAAAAJAAYAAAAbAAIAAAAMAAUAAAAaAAIAAAAMAAUAAAAZAAIAAAAMAAUAAAAYAAIAAAAMAAUAAAAYAAMAAAAMAAUAAAAYAAQAAAAMAAUAAAAYAAUAAAAMAAUAAAAYAAYAAAAMAAUAAAAYAAcAAAAMAAUAAAAYAAgAAAAMAAYAAAAZAAMAAAAMAAUAAAAZAAQAAAAMAAUAAAAZAAUAAAAMAAUAAAAZAAYAAAAMAAUAAAAZAAcAAAAMAAUAAAAZAAgAAAAMAAYAAAAaAAMAAAAMAAUAAAAaAAQAAAAMAAUAAAAaAAUAAAAMAAUAAAAaAAYAAAAKAAYAAAAaAAcAAAAMAAUAAAAaAAgAAAAMAAYAAAAbAAMAAAAMAAUAAAAbAAQAAAAMAAUAAAAbAAUAAAAMAAUAAAAbAAYAAAAMAAUAAAAbAAcAAAAMAAUAAAAbAAgAAAAMAAYAAAAcAAQAAAAMAAUAAAAcAAUAAAAMAAUAAAAcAAYAAAAMAAUAAAAcAAcAAAAMAAUAAAAcAAgAAAAMAAYAAAAPAP3/AAAQAAYAAAAiAPr/AAAQAAYAAAAfAPr/AAAOAAYAAAAkAPr/AAAPAAYAAAAgAPr/AAAPAAUAAAAbAP//AAALAAMAAAAaAP//AAALAAMAAAAjAPr/AAALAAMAAAAhAPr/AAALAAMAAAATAP//AAALAAMAAAAVAP//AAALAAMAAAAeAPv/AAALAAQAAAAeAPz/AAALAAUAAAAeAP3/AAALAAUAAAAeAP7/AAALAAUAAAAeAP//AAALAAUAAAAmAP//AAANAAUAAAAmAP7/AAANAAUAAAAmAP3/AAANAAUAAAAmAPv/AAANAAQAAAAfAPv/AAAMAAQAAAAgAPv/AAAMAAQAAAAhAPv/AAAMAAQAAAAiAPv/AAAMAAQAAAAjAPv/AAAMAAQAAAAkAPv/AAAMAAQAAAAlAPv/AAAMAAQAAAAmAPz/AAANAAUAAAAlAP//AAAMAAUAAAAlAP7/AAAMAAUAAAAlAP3/AAAMAAUAAAAlAPz/AAAMAAUAAAAkAPz/AAAMAAUAAAAjAPz/AAAMAAUAAAAiAPz/AAAMAAUAAAAhAPz/AAAMAAUAAAAgAPz/AAAMAAUAAAAfAPz/AAAMAAUAAAAfAP3/AAAKAAYAAAAfAP7/AAAMAAUAAAAfAP//AAAMAAUAAAAkAP//AAAKAAYAAAAkAP7/AAAJAAYAAAAkAP3/AAAMAAUAAAAjAP3/AAAMAAUAAAAiAP3/AAAMAAUAAAAhAP3/AAAMAAUAAAAgAP3/AAAMAAUAAAAgAP7/AAAJAAYAAAAgAP//AAAMAAUAAAAjAP//AAAMAAUAAAAjAP7/AAAMAAUAAAAiAP7/AAAMAAUAAAAhAP7/AAAMAAUAAAAhAP//AAAMAAUAAAAiAP//AAAMAAUAAAAeAAgAAAALAAYAAAAeAAcAAAALAAUAAAAeAAYAAAALAAUAAAAeAAUAAAALAAUAAAAeAAQAAAALAAUAAAAeAAMAAAALAAUAAAAeAAIAAAALAAUAAAAeAAEAAAALAAUAAAAeAAAAAAALAAUAAAAfAAgAAAAMAAYAAAAgAAgAAAAMAAYAAAAhAAgAAAAMAAYAAAAiAAgAAAAMAAYAAAAjAAgAAAAMAAYAAAAkAAgAAAAMAAYAAAAlAAgAAAAMAAYAAAAmAAgAAAANAAYAAAAmAAAAAAANAAUAAAAmAAEAAAANAAUAAAAmAAIAAAANAAUAAAAmAAMAAAANAAUAAAAmAAQAAAANAAUAAAAmAAUAAAANAAUAAAAmAAYAAAANAAUAAAAmAAcAAAANAAUAAAAfAAAAAAAMAAUAAAAfAAEAAAAMAAUAAAAfAAIAAAAMAAUAAAAfAAMAAAAMAAUAAAAfAAQAAAAMAAUAAAAfAAUAAAAMAAUAAAAfAAYAAAAKAAYAAAAfAAcAAAAMAAUAAAAgAAAAAAAMAAUAAAAgAAEAAAAMAAUAAAAgAAIAAAAMAAUAAAAgAAMAAAAMAAUAAAAgAAQAAAAMAAUAAAAgAAUAAAAMAAUAAAAgAAYAAAAMAAUAAAAgAAcAAAAMAAUAAAAhAAAAAAAMAAUAAAAhAAEAAAAMAAUAAAAhAAIAAAAKAAYAAAAhAAMAAAAMAAUAAAAhAAQAAAAMAAUAAAAhAAUAAAAMAAUAAAAhAAYAAAAMAAUAAAAhAAcAAAAMAAUAAAAiAAAAAAAMAAUAAAAiAAEAAAAMAAUAAAAiAAIAAAAMAAUAAAAiAAMAAAAMAAUAAAAiAAQAAAAKAAYAAAAiAAUAAAAKAAYAAAAiAAYAAAAMAAUAAAAiAAcAAAAMAAUAAAAjAAAAAAAMAAUAAAAjAAEAAAAMAAUAAAAjAAIAAAAMAAUAAAAjAAMAAAAMAAUAAAAjAAQAAAAMAAUAAAAjAAUAAAAMAAUAAAAjAAYAAAAMAAUAAAAjAAcAAAAMAAUAAAAkAAAAAAAKAAYAAAAkAAEAAAAMAAUAAAAkAAIAAAAMAAUAAAAkAAMAAAAMAAUAAAAkAAQAAAAMAAUAAAAkAAUAAAAMAAUAAAAkAAYAAAAMAAUAAAAkAAcAAAAKAAYAAAAlAAAAAAAMAAUAAAAlAAEAAAAMAAUAAAAlAAIAAAAMAAUAAAAlAAMAAAAMAAUAAAAlAAQAAAAMAAUAAAAlAAUAAAAMAAUAAAAlAAYAAAAMAAUAAAAlAAcAAAAMAAUAAAD6/wcAAAAMAAUAAAD7/wcAAAAMAAUAAAD8/wcAAAAMAAUAAAD9/wcAAAAMAAUAAAD5/wcAAAALAAUAAAD+/wcAAAANAAUAAAD5/wgAAAALAAYAAAD6/wgAAAAMAAYAAAD7/wgAAAAMAAYAAAD8/wgAAAAMAAYAAAD9/wgAAAAMAAYAAAD+/wgAAAANAAYAAAA=")
+tile_set = SubResource("TileSet_kxirl")
[node name="UI" type="CanvasLayer" parent="."]
visible = false
[node name="Camera2D" type="Camera2D" parent="."]
-position = Vector2(282, -29)
+physics_interpolation_mode = 1
+position = Vector2(215, -73)
zoom = Vector2(2, 2)
+process_callback = 0
[node name="PhantomCameraHost" type="Node" parent="Camera2D"]
+process_priority = 300
+process_physics_priority = 300
script = ExtResource("4_j3ux0")
[node name="Player" type="Node" parent="."]
[node name="PlayerPhantomCamera2D" type="Node2D" parent="Player" node_paths=PackedStringArray("follow_target")]
unique_name_in_owner = true
-position = Vector2(282, -29)
+top_level = true
+position = Vector2(215, -73)
script = ExtResource("5_uwr6r")
priority = 5
follow_mode = 5
zoom = Vector2(2, 2)
tween_resource = ExtResource("6_4l0c3")
tween_on_load = false
+follow_offset = Vector2(0, -45)
follow_damping = true
-dead_zone_width = 0.416
-dead_zone_height = 0.63
+dead_zone_width = 0.25
+dead_zone_height = 0.8
show_viewfinder_in_play = true
draw_limits = true
[Space] to jump"
[node name="CharacterBody2D" parent="Player" instance=ExtResource("8_i4m1d")]
-position = Vector2(282, -29)
+position = Vector2(215, -28)
script = ExtResource("9_m3lnd")
-[gd_scene load_steps=14 format=3 uid="uid://bio6mao7gtru2"]
+[gd_scene load_steps=14 format=4 uid="uid://bio6mao7gtru2"]
[ext_resource type="Texture2D" uid="uid://c77npili4pel4" path="res://addons/phantom_camera/examples/textures/2D/level_spritesheet.png" id="1_8rflf"]
[ext_resource type="PackedScene" uid="uid://dg7rhrymsrrrm" path="res://addons/phantom_camera/examples/ui/ui_inventory.tscn" id="2_tafwr"]
[ext_resource type="PackedScene" uid="uid://7kh0xydx0b1o" path="res://addons/phantom_camera/examples/example_scenes/2D/sub_scenes/playable_character_2d.tscn" id="9_witv0"]
[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/2D/player_character_body_2d_4.3.gd" id="10_aivri"]
-[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_easgx"]
+[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_3qxnm"]
texture = ExtResource("1_8rflf")
0:0/0 = 0
-0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-0:0/0/physics_layer_0/angular_velocity = 0.0
-0:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-0:0/0/physics_layer_1/angular_velocity = 0.0
1:0/0 = 0
-1:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-1:0/0/physics_layer_0/angular_velocity = 0.0
-1:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-1:0/0/physics_layer_1/angular_velocity = 0.0
2:0/0 = 0
-2:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-2:0/0/physics_layer_0/angular_velocity = 0.0
-2:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-2:0/0/physics_layer_1/angular_velocity = 0.0
3:0/0 = 0
-3:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:0/0/physics_layer_0/angular_velocity = 0.0
-3:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:0/0/physics_layer_1/angular_velocity = 0.0
4:0/0 = 0
-4:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:0/0/physics_layer_0/angular_velocity = 0.0
-4:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:0/0/physics_layer_1/angular_velocity = 0.0
5:0/0 = 0
-5:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:0/0/physics_layer_0/angular_velocity = 0.0
-5:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:0/0/physics_layer_1/angular_velocity = 0.0
6:0/0 = 0
-6:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-6:0/0/physics_layer_0/angular_velocity = 0.0
-6:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-6:0/0/physics_layer_1/angular_velocity = 0.0
7:0/0 = 0
-7:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:0/0/physics_layer_0/angular_velocity = 0.0
7:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-7:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:0/0/physics_layer_1/angular_velocity = 0.0
0:1/0 = 0
-0:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-0:1/0/physics_layer_0/angular_velocity = 0.0
-0:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-0:1/0/physics_layer_1/angular_velocity = 0.0
1:1/0 = 0
-1:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-1:1/0/physics_layer_0/angular_velocity = 0.0
-1:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-1:1/0/physics_layer_1/angular_velocity = 0.0
2:1/0 = 0
-2:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-2:1/0/physics_layer_0/angular_velocity = 0.0
-2:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-2:1/0/physics_layer_1/angular_velocity = 0.0
3:1/0 = 0
-3:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:1/0/physics_layer_0/angular_velocity = 0.0
-3:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:1/0/physics_layer_1/angular_velocity = 0.0
4:1/0 = 0
-4:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:1/0/physics_layer_0/angular_velocity = 0.0
-4:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:1/0/physics_layer_1/angular_velocity = 0.0
5:1/0 = 0
-5:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:1/0/physics_layer_0/angular_velocity = 0.0
-5:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:1/0/physics_layer_1/angular_velocity = 0.0
7:1/0 = 0
-7:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:1/0/physics_layer_0/angular_velocity = 0.0
7:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-7:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:1/0/physics_layer_1/angular_velocity = 0.0
2:2/0 = 0
-2:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-2:2/0/physics_layer_0/angular_velocity = 0.0
-2:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-2:2/0/physics_layer_1/angular_velocity = 0.0
3:2/0 = 0
-3:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:2/0/physics_layer_0/angular_velocity = 0.0
-3:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:2/0/physics_layer_1/angular_velocity = 0.0
4:2/0 = 0
-4:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:2/0/physics_layer_0/angular_velocity = 0.0
-4:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:2/0/physics_layer_1/angular_velocity = 0.0
7:2/0 = 0
-7:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:2/0/physics_layer_0/angular_velocity = 0.0
7:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-7:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:2/0/physics_layer_1/angular_velocity = 0.0
3:3/0 = 0
-3:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:3/0/physics_layer_0/angular_velocity = 0.0
-3:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:3/0/physics_layer_1/angular_velocity = 0.0
4:3/0 = 0
-4:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:3/0/physics_layer_0/angular_velocity = 0.0
-4:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:3/0/physics_layer_1/angular_velocity = 0.0
5:3/0 = 0
-5:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:3/0/physics_layer_0/angular_velocity = 0.0
-5:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:3/0/physics_layer_1/angular_velocity = 0.0
7:3/0 = 0
-7:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:3/0/physics_layer_0/angular_velocity = 0.0
7:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-7:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:3/0/physics_layer_1/angular_velocity = 0.0
3:4/0 = 0
-3:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:4/0/physics_layer_0/angular_velocity = 0.0
-3:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:4/0/physics_layer_1/angular_velocity = 0.0
4:4/0 = 0
-4:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:4/0/physics_layer_0/angular_velocity = 0.0
-4:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:4/0/physics_layer_1/angular_velocity = 0.0
5:4/0 = 0
-5:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:4/0/physics_layer_0/angular_velocity = 0.0
-5:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:4/0/physics_layer_1/angular_velocity = 0.0
7:4/0 = 0
-7:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:4/0/physics_layer_0/angular_velocity = 0.0
-7:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:4/0/physics_layer_1/angular_velocity = 0.0
3:5/0 = 0
-3:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:5/0/physics_layer_0/angular_velocity = 0.0
-3:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:5/0/physics_layer_1/angular_velocity = 0.0
4:5/0 = 0
-4:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:5/0/physics_layer_0/angular_velocity = 0.0
-4:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:5/0/physics_layer_1/angular_velocity = 0.0
7:5/0 = 0
-7:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:5/0/physics_layer_0/angular_velocity = 0.0
-7:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:5/0/physics_layer_1/angular_velocity = 0.0
3:6/0 = 0
-3:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:6/0/physics_layer_0/angular_velocity = 0.0
-3:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:6/0/physics_layer_1/angular_velocity = 0.0
4:6/0 = 0
-4:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:6/0/physics_layer_0/angular_velocity = 0.0
-4:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:6/0/physics_layer_1/angular_velocity = 0.0
7:6/0 = 0
-7:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:6/0/physics_layer_0/angular_velocity = 0.0
-7:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:6/0/physics_layer_1/angular_velocity = 0.0
2:7/0 = 0
-2:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-2:7/0/physics_layer_0/angular_velocity = 0.0
-2:7/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-2:7/0/physics_layer_1/angular_velocity = 0.0
3:7/0 = 0
-3:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:7/0/physics_layer_0/angular_velocity = 0.0
-3:7/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:7/0/physics_layer_1/angular_velocity = 0.0
4:7/0 = 0
-4:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:7/0/physics_layer_0/angular_velocity = 0.0
-4:7/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:7/0/physics_layer_1/angular_velocity = 0.0
5:7/0 = 0
-5:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:7/0/physics_layer_0/angular_velocity = 0.0
-5:7/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:7/0/physics_layer_1/angular_velocity = 0.0
8:0/0 = 0
-8:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:0/0/physics_layer_0/angular_velocity = 0.0
8:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-8:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:0/0/physics_layer_1/angular_velocity = 0.0
9:0/0 = 0
-9:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:0/0/physics_layer_0/angular_velocity = 0.0
9:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-9:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:0/0/physics_layer_1/angular_velocity = 0.0
10:0/0 = 0
-10:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:0/0/physics_layer_0/angular_velocity = 0.0
10:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-10:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:0/0/physics_layer_1/angular_velocity = 0.0
11:0/0 = 0
-11:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:0/0/physics_layer_0/angular_velocity = 0.0
11:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-11:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:0/0/physics_layer_1/angular_velocity = 0.0
12:0/0 = 0
-12:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:0/0/physics_layer_0/angular_velocity = 0.0
12:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:0/0/physics_layer_1/angular_velocity = 0.0
13:0/0 = 0
-13:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:0/0/physics_layer_0/angular_velocity = 0.0
13:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:0/0/physics_layer_1/angular_velocity = 0.0
14:0/0 = 0
-14:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:0/0/physics_layer_0/angular_velocity = 0.0
-14:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:0/0/physics_layer_1/angular_velocity = 0.0
14:0/0/physics_layer_1/polygon_0/points = PackedVector2Array(8, -8, 8, 8, -8, 8)
14:0/0/custom_data_0 = &"Sign"
15:0/0 = 0
-15:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:0/0/physics_layer_0/angular_velocity = 0.0
-15:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:0/0/physics_layer_1/angular_velocity = 0.0
16:0/0 = 0
-16:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:0/0/physics_layer_0/angular_velocity = 0.0
-16:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:0/0/physics_layer_1/angular_velocity = 0.0
8:1/0 = 0
-8:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:1/0/physics_layer_0/angular_velocity = 0.0
8:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-8:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:1/0/physics_layer_1/angular_velocity = 0.0
9:1/0 = 0
-9:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:1/0/physics_layer_0/angular_velocity = 0.0
9:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-9:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:1/0/physics_layer_1/angular_velocity = 0.0
10:1/0 = 0
-10:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:1/0/physics_layer_0/angular_velocity = 0.0
10:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-10:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:1/0/physics_layer_1/angular_velocity = 0.0
11:1/0 = 0
-11:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:1/0/physics_layer_0/angular_velocity = 0.0
11:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-11:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:1/0/physics_layer_1/angular_velocity = 0.0
12:1/0 = 0
-12:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:1/0/physics_layer_0/angular_velocity = 0.0
12:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:1/0/physics_layer_1/angular_velocity = 0.0
13:1/0 = 0
-13:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:1/0/physics_layer_0/angular_velocity = 0.0
13:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:1/0/physics_layer_1/angular_velocity = 0.0
14:1/0 = 0
-14:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:1/0/physics_layer_0/angular_velocity = 0.0
-14:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:1/0/physics_layer_1/angular_velocity = 0.0
15:1/0 = 0
-15:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:1/0/physics_layer_0/angular_velocity = 0.0
-15:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:1/0/physics_layer_1/angular_velocity = 0.0
16:1/0 = 0
-16:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:1/0/physics_layer_0/angular_velocity = 0.0
-16:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:1/0/physics_layer_1/angular_velocity = 0.0
8:2/0 = 0
-8:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:2/0/physics_layer_0/angular_velocity = 0.0
8:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-8:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:2/0/physics_layer_1/angular_velocity = 0.0
9:2/0 = 0
-9:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:2/0/physics_layer_0/angular_velocity = 0.0
9:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-9:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:2/0/physics_layer_1/angular_velocity = 0.0
10:2/0 = 0
-10:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:2/0/physics_layer_0/angular_velocity = 0.0
10:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-10:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:2/0/physics_layer_1/angular_velocity = 0.0
11:2/0 = 0
-11:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:2/0/physics_layer_0/angular_velocity = 0.0
11:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-11:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:2/0/physics_layer_1/angular_velocity = 0.0
12:2/0 = 0
-12:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:2/0/physics_layer_0/angular_velocity = 0.0
12:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:2/0/physics_layer_1/angular_velocity = 0.0
13:2/0 = 0
-13:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:2/0/physics_layer_0/angular_velocity = 0.0
13:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:2/0/physics_layer_1/angular_velocity = 0.0
14:2/0 = 0
-14:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:2/0/physics_layer_0/angular_velocity = 0.0
-14:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:2/0/physics_layer_1/angular_velocity = 0.0
15:2/0 = 0
-15:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:2/0/physics_layer_0/angular_velocity = 0.0
-15:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:2/0/physics_layer_1/angular_velocity = 0.0
16:2/0 = 0
-16:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:2/0/physics_layer_0/angular_velocity = 0.0
-16:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:2/0/physics_layer_1/angular_velocity = 0.0
8:3/0 = 0
-8:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:3/0/physics_layer_0/angular_velocity = 0.0
8:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-8:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:3/0/physics_layer_1/angular_velocity = 0.0
9:3/0 = 0
-9:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:3/0/physics_layer_0/angular_velocity = 0.0
9:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-9:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:3/0/physics_layer_1/angular_velocity = 0.0
10:3/0 = 0
-10:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:3/0/physics_layer_0/angular_velocity = 0.0
10:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-10:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:3/0/physics_layer_1/angular_velocity = 0.0
11:3/0 = 0
-11:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:3/0/physics_layer_0/angular_velocity = 0.0
-11:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:3/0/physics_layer_1/angular_velocity = 0.0
12:3/0 = 0
-12:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:3/0/physics_layer_0/angular_velocity = 0.0
12:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:3/0/physics_layer_1/angular_velocity = 0.0
13:3/0 = 0
-13:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:3/0/physics_layer_0/angular_velocity = 0.0
13:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:3/0/physics_layer_1/angular_velocity = 0.0
14:3/0 = 0
-14:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:3/0/physics_layer_0/angular_velocity = 0.0
-14:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:3/0/physics_layer_1/angular_velocity = 0.0
15:3/0 = 0
-15:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:3/0/physics_layer_0/angular_velocity = 0.0
-15:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:3/0/physics_layer_1/angular_velocity = 0.0
16:3/0 = 0
-16:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:3/0/physics_layer_0/angular_velocity = 0.0
-16:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:3/0/physics_layer_1/angular_velocity = 0.0
8:4/0 = 0
-8:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:4/0/physics_layer_0/angular_velocity = 0.0
-8:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:4/0/physics_layer_1/angular_velocity = 0.0
9:4/0 = 0
-9:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:4/0/physics_layer_0/angular_velocity = 0.0
-9:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:4/0/physics_layer_1/angular_velocity = 0.0
10:4/0 = 0
-10:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:4/0/physics_layer_0/angular_velocity = 0.0
-10:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:4/0/physics_layer_1/angular_velocity = 0.0
11:4/0 = 0
-11:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:4/0/physics_layer_0/angular_velocity = 0.0
11:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-7, 2.5, -5, -2, -2.5, -5, 2, -7, 8, -8, 8, 8, -8, 8)
-11:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:4/0/physics_layer_1/angular_velocity = 0.0
12:4/0 = 0
-12:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:4/0/physics_layer_0/angular_velocity = 0.0
12:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:4/0/physics_layer_1/angular_velocity = 0.0
13:4/0 = 0
-13:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:4/0/physics_layer_0/angular_velocity = 0.0
13:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 0, -6, 4, -1.5, 6.5, 1.5, 8, 8, -8, 8)
-13:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:4/0/physics_layer_1/angular_velocity = 0.0
14:4/0 = 0
-14:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:4/0/physics_layer_0/angular_velocity = 0.0
-14:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:4/0/physics_layer_1/angular_velocity = 0.0
14:4/0/physics_layer_1/polygon_0/points = PackedVector2Array(-8, -8, -8, 8, 8, 8, 8, -8)
14:4/0/custom_data_0 = &"Inventory"
15:4/0 = 0
-15:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:4/0/physics_layer_0/angular_velocity = 0.0
-15:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:4/0/physics_layer_1/angular_velocity = 0.0
16:4/0 = 0
-16:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:4/0/physics_layer_0/angular_velocity = 0.0
-16:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:4/0/physics_layer_1/angular_velocity = 0.0
8:5/0 = 0
-8:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:5/0/physics_layer_0/angular_velocity = 0.0
-8:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:5/0/physics_layer_1/angular_velocity = 0.0
9:5/0 = 0
-9:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:5/0/physics_layer_0/angular_velocity = 0.0
-9:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:5/0/physics_layer_1/angular_velocity = 0.0
10:5/0 = 0
-10:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:5/0/physics_layer_0/angular_velocity = 0.0
-10:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:5/0/physics_layer_1/angular_velocity = 0.0
11:5/0 = 0
-11:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:5/0/physics_layer_0/angular_velocity = 0.0
11:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-11:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:5/0/physics_layer_1/angular_velocity = 0.0
12:5/0 = 0
-12:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:5/0/physics_layer_0/angular_velocity = 0.0
12:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:5/0/physics_layer_1/angular_velocity = 0.0
13:5/0 = 0
-13:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:5/0/physics_layer_0/angular_velocity = 0.0
13:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:5/0/physics_layer_1/angular_velocity = 0.0
14:5/0 = 0
-14:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:5/0/physics_layer_0/angular_velocity = 0.0
-14:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:5/0/physics_layer_1/angular_velocity = 0.0
15:5/0 = 0
-15:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:5/0/physics_layer_0/angular_velocity = 0.0
-15:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:5/0/physics_layer_1/angular_velocity = 0.0
16:5/0 = 0
-16:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:5/0/physics_layer_0/angular_velocity = 0.0
-16:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:5/0/physics_layer_1/angular_velocity = 0.0
8:6/0 = 0
-8:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:6/0/physics_layer_0/angular_velocity = 0.0
-8:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:6/0/physics_layer_1/angular_velocity = 0.0
9:6/0 = 0
-9:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:6/0/physics_layer_0/angular_velocity = 0.0
-9:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:6/0/physics_layer_1/angular_velocity = 0.0
10:6/0 = 0
-10:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:6/0/physics_layer_0/angular_velocity = 0.0
-10:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:6/0/physics_layer_1/angular_velocity = 0.0
11:6/0 = 0
-11:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:6/0/physics_layer_0/angular_velocity = 0.0
11:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, 1, 6.5, -3, 3, -6.5, -1.5)
-11:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:6/0/physics_layer_1/angular_velocity = 0.0
12:6/0 = 0
-12:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:6/0/physics_layer_0/angular_velocity = 0.0
12:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:6/0/physics_layer_1/angular_velocity = 0.0
13:6/0 = 0
-13:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:6/0/physics_layer_0/angular_velocity = 0.0
13:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 6, -0.5, 3, 3.5, -1.5, 6.5, -8, 8)
-13:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:6/0/physics_layer_1/angular_velocity = 0.0
14:6/0 = 0
-14:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:6/0/physics_layer_0/angular_velocity = 0.0
-14:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:6/0/physics_layer_1/angular_velocity = 0.0
15:6/0 = 0
-15:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:6/0/physics_layer_0/angular_velocity = 0.0
-15:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:6/0/physics_layer_1/angular_velocity = 0.0
16:6/0 = 0
-16:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:6/0/physics_layer_0/angular_velocity = 0.0
-16:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:6/0/physics_layer_1/angular_velocity = 0.0
-[sub_resource type="TileSet" id="TileSet_kf7eg"]
+[sub_resource type="TileSet" id="TileSet_14yng"]
physics_layer_0/collision_layer = 1
physics_layer_1/collision_layer = 2
physics_layer_1/collision_mask = 2
custom_data_layer_0/name = "Type"
custom_data_layer_0/type = 21
-sources/0 = SubResource("TileSetAtlasSource_easgx")
+sources/0 = SubResource("TileSetAtlasSource_3qxnm")
[sub_resource type="Resource" id="Resource_spy00"]
script = ExtResource("7_awenl")
transition = 4
ease = 2
-[node name="ExampleScene2D" type="Node2D"]
+[node name="Root" type="Node2D"]
[node name="Background" type="CanvasLayer" parent="."]
layer = -3
[node name="ColorRect" type="ColorRect" parent="Background"]
+auto_translate_mode = 2
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_bottom = 548.0
grow_horizontal = 2
grow_vertical = 2
-auto_translate = false
localize_numeral_system = false
color = Color(0.137255, 0.14902, 0.196078, 1)
-[node name="TileMap" type="TileMap" parent="."]
-z_index = -1
+[node name="Pillar" type="TileMapLayer" parent="."]
+use_parent_material = true
scale = Vector2(3, 3)
-tile_set = SubResource("TileSet_kf7eg")
-format = 2
-layer_0/name = "Background"
-layer_0/tile_data = PackedInt32Array(-393216, 655360, 2, -327680, 655360, 3, -262144, 655360, 3, -196608, 655360, 3, -131072, 655360, 3, -65536, 655360, 3, -393215, 720896, 2, -327679, 720896, 1, -262143, 720896, 1, -196607, 720896, 1, -131071, 720896, 1, -65535, 720896, 1, -393214, 786432, 2, -327678, 786432, 3, -262142, 786432, 3, -196606, 786432, 3, -131070, 786432, 3, -65534, 786432, 3)
-layer_1/name = "Terrain"
-layer_1/z_index = 1
-layer_1/tile_data = PackedInt32Array(1, 720896, 0, 2, 720896, 0, 3, 720896, 0, 4, 720896, 0, 5, 720896, 0, 6, 720896, 0, 7, 720896, 0, 8, 720896, 0, 9, 786432, 0, 65545, 786432, 1, 131081, 786432, 1, 196617, 786432, 1, 262153, 786432, 1, 327689, 786432, 1, 393225, 786432, 1, 65537, 720896, 1, 131073, 720896, 1, 196609, 720896, 1, 262145, 458752, 1, 327681, 720896, 1, 393217, 720896, 1, 65538, 720896, 1, 131074, 720896, 1, 196610, 720896, 1, 262146, 720896, 1, 327682, 720896, 1, 393218, 720896, 1, 65539, 720896, 1, 131075, 720896, 1, 196611, 720896, 1, 262147, 720896, 1, 327683, 720896, 1, 393219, 720896, 1, 65540, 458752, 1, 131076, 720896, 1, 196612, 720896, 1, 262148, 720896, 1, 327684, 720896, 1, 393220, 720896, 1, 65541, 720896, 1, 131077, 720896, 1, 196613, 720896, 1, 262149, 458752, 1, 327685, 720896, 1, 393221, 720896, 1, 65542, 720896, 1, 131078, 720896, 1, 196614, 720896, 1, 262150, 720896, 1, 327686, 720896, 1, 393222, 720896, 1, 65543, 720896, 1, 131079, 720896, 1, 196615, 720896, 1, 262151, 720896, 1, 327687, 720896, 1, 393223, 458752, 1, 65544, 720896, 1, 131080, 720896, 1, 196616, 458752, 1, 262152, 720896, 1, 327688, 720896, 1, 393224, 720896, 1, 65546, 524288, 5, 65547, 524288, 5, 65548, 524288, 5, 65549, 524288, 5, 131082, 524288, 6, 131083, 524288, 6, 131084, 524288, 6, 131085, 524288, 6, 196618, 720896, 1, 262154, 720896, 1, 196619, 720896, 1, 262155, 720896, 1, 196620, 720896, 1, 262156, 720896, 1, 196621, 720896, 1, 262157, 720896, 1, 65550, 524288, 5, 65551, 524288, 5, 65552, 524288, 5, 131086, 524288, 6, 131087, 524288, 6, 131088, 524288, 6, 196622, 720896, 1, 196623, 720896, 1, 262159, 720896, 1, 262160, 720896, 1, 196624, 720896, 1, 262158, 720896, 1, 17, 720896, 4, 65553, 720896, 5, 131089, 720896, 5, 196625, 720896, 5, 262161, 720896, 5, 18, 786432, 4, 19, 786432, 4, 20, 786432, 4, 21, 786432, 4, 22, 786432, 4, 23, 786432, 4, 65554, 786432, 5, 131090, 786432, 5, 196626, 786432, 5, 262162, 786432, 5, 65555, 786432, 5, 131091, 589824, 6, 196627, 786432, 5, 262163, 786432, 5, 65556, 786432, 5, 131092, 786432, 5, 196628, 786432, 5, 262164, 786432, 5, 65557, 786432, 5, 131093, 786432, 5, 196629, 786432, 5, 262165, 786432, 5, 65558, 786432, 5, 131094, 786432, 5, 196630, 786432, 5, 262166, 655360, 6, 65559, 786432, 5, 131095, 786432, 5, 196631, 786432, 5, 262167, 786432, 5, 327697, 720896, 5, 393233, 720896, 5, 327698, 589824, 6, 393234, 786432, 5, 327699, 786432, 5, 393235, 786432, 5, 327700, 786432, 5, 393236, 786432, 5, 327701, 786432, 5, 393237, 786432, 5, 327702, 786432, 5, 393238, 786432, 5, 327703, 786432, 5, 393239, 786432, 5, -131062, 720896, 4, -131061, 786432, 4, -131060, 786432, 4, -65526, 720896, 6, -65525, 786432, 6, -65524, 786432, 6, -131056, 851968, 4, -65520, 851968, 6, -131059, 786432, 4, -131058, 786432, 4, -131057, 786432, 4, -65523, 786432, 6, -65522, 786432, 6, -65521, 786432, 6, -196596, 917504, 0, -65536, 917504, 2, -65535, 983040, 2, -65534, 1048576, 2, -65533, 917504, 2, -65532, 983040, 2, -65531, 1048576, 2, -65530, 917504, 2, -65529, 983040, 2, -65528, 1048576, 2, 65535, 655360, 0, 131071, 655360, 1, 196607, 655360, 1, 262143, 655360, 1, 327679, 655360, 1, 393215, 655360, 1, 458751, 655360, 1, 524287, 655360, 1, 589823, 655360, 1, 0, 720896, 0, 65536, 720896, 1, 131072, 720896, 1, 196608, 720896, 1, 262144, 720896, 1, 327680, 720896, 1, 393216, 720896, 1, 458752, 720896, 1, 524288, 720896, 1, 524289, 720896, 1, 524290, 720896, 1, 524291, 720896, 1, 524292, 720896, 1, 524293, 720896, 1, 524294, 720896, 1, 524295, 720896, 1, 524296, 720896, 1, 524297, 786432, 1, 458761, 786432, 1, 458760, 720896, 1, 458759, 720896, 1, 458758, 458752, 1, 458757, 720896, 1, 458756, 720896, 1, 458755, 720896, 1, 458754, 720896, 1, 458753, 720896, 1, -262145, 851968, 4, -196609, 851968, 5, -131073, 851968, 5, -65537, 851968, 5, -1, 851968, 6, -262146, 786432, 4, -262147, 786432, 4, -196610, 589824, 6, -196611, 786432, 5, -6, 786432, 5, -5, 786432, 5, -4, 786432, 5, -3, 786432, 5, -2, 786432, 5, -65538, 786432, 5, -131074, 786432, 5, -131075, 786432, 5, -65539, 655360, 6, 65534, 851968, 5, 131070, 851968, 5, 196606, 851968, 5, 262142, 851968, 5, 327678, 851968, 5, 393214, 851968, 5, 458750, 851968, 5, 65533, 786432, 5, 65532, 786432, 5, 65531, 786432, 5, 65530, 786432, 5, 65529, 720896, 5, 131066, 786432, 5, 196602, 786432, 5, 262138, 786432, 5, 262139, 786432, 5, 327675, 786432, 5, 131068, 786432, 5, 131069, 786432, 5, 196605, 786432, 5, 262141, 786432, 5, 327677, 786432, 5, 393213, 786432, 5, 458749, 786432, 5, 393212, 786432, 5, 393211, 786432, 5, 458748, 786432, 5, 327676, 655360, 6, 262140, 786432, 5, 196604, 786432, 5, 131067, 786432, 5, 196603, 589824, 6, 458747, 786432, 5, 458746, 786432, 5, 393210, 786432, 5, 327674, 786432, 5, -7, 720896, 5, 131065, 720896, 5, 196601, 720896, 5, 262137, 720896, 5, 327673, 720896, 5, 393209, 720896, 5, 458745, 720896, 5, -327684, 720896, 3, -196594, 720896, 3, -196597, 720896, 3, -65518, 720896, 3, -65516, 720896, 3, -327686, 1048576, 5, -327685, 720896, 3, -196595, 917504, 6, -65514, 983040, 6, -327683, 983040, 5, -65513, 1048576, 5, -262151, 720896, 4, -196615, 720896, 5, -131079, 720896, 5, -65543, 720896, 5, -262150, 786432, 4, -196614, 655360, 6, -131078, 786432, 5, -65542, 786432, 5, -262149, 786432, 4, -196613, 786432, 5, -131077, 786432, 5, -65541, 786432, 5, -262148, 786432, 4, -196612, 786432, 5, -131076, 786432, 5, -65540, 786432, 5, 458769, 720896, 5, 524305, 720896, 6, 458775, 786432, 5, 458774, 786432, 5, 458773, 786432, 5, 458772, 786432, 5, 458771, 786432, 5, 458770, 786432, 5, 524306, 786432, 6, 524307, 786432, 6, 524308, 786432, 6, 524309, 786432, 6, 524310, 786432, 6, 524311, 786432, 6, 327690, 720896, 1, 393226, 720896, 1, 458762, 720896, 1, 524298, 720896, 1, 327691, 720896, 1, 393227, 720896, 1, 458763, 720896, 1, 524299, 720896, 1, 327692, 720896, 1, 393228, 720896, 1, 458764, 720896, 1, 524300, 720896, 1, 327693, 720896, 1, 393229, 720896, 1, 458765, 720896, 1, 524301, 720896, 1, 327694, 720896, 1, 393230, 720896, 1, 458766, 720896, 1, 524302, 720896, 1, 327695, 720896, 1, 393231, 720896, 1, 458767, 720896, 1, 524303, 720896, 1, 327696, 720896, 1, 393232, 720896, 1, 458768, 720896, 1, 524304, 720896, 1, 29, 851968, 4, 65565, 851968, 5, 131101, 851968, 5, 196637, 851968, 5, 262173, 851968, 5, 327709, 851968, 5, 393245, 851968, 5, 458781, 851968, 5, 524317, 851968, 6, -65511, 917504, 4, 24, 786432, 4, 25, 786432, 4, 26, 786432, 4, 27, 786432, 4, 28, 786432, 4, 65560, 786432, 5, 65561, 786432, 5, 65562, 786432, 5, 65563, 786432, 5, 65564, 786432, 5, 131100, 786432, 5, 196636, 589824, 6, 131099, 786432, 5, 131098, 786432, 5, 131097, 786432, 5, 131096, 786432, 5, 196632, 786432, 5, 262168, 786432, 5, 327704, 786432, 5, 393240, 786432, 5, 458776, 786432, 5, 524312, 786432, 6, 196633, 786432, 5, 262169, 786432, 5, 327705, 786432, 5, 393241, 786432, 5, 458777, 786432, 5, 524313, 786432, 6, 196634, 786432, 5, 262170, 786432, 5, 327706, 786432, 5, 393242, 655360, 6, 458778, 786432, 5, 524314, 786432, 6, 196635, 786432, 5, 262171, 786432, 5, 327707, 786432, 5, 393243, 786432, 5, 458779, 786432, 5, 524315, 786432, 6, 262172, 786432, 5, 327708, 786432, 5, 393244, 786432, 5, 458780, 786432, 5, 524316, 786432, 6, -196593, 1048576, 6, -393182, 1048576, 6, -393185, 917504, 6, -393180, 983040, 6, -393184, 983040, 5, -65509, 720896, 3, -65510, 720896, 3, -393181, 720896, 3, -393183, 720896, 3, -65517, 720896, 3, -65515, 720896, 3, -327650, 720896, 4, -262114, 720896, 5, -196578, 720896, 5, -131042, 720896, 5, -65506, 720896, 5, -65498, 851968, 5, -131034, 851968, 5, -196570, 851968, 5, -327642, 851968, 4, -327649, 786432, 4, -327648, 786432, 4, -327647, 786432, 4, -327646, 786432, 4, -327645, 786432, 4, -327644, 786432, 4, -327643, 786432, 4, -262106, 851968, 5, -65499, 786432, 5, -131035, 786432, 5, -196571, 786432, 5, -262107, 786432, 5, -262108, 786432, 5, -262109, 786432, 5, -262110, 786432, 5, -262111, 786432, 5, -262112, 786432, 5, -262113, 786432, 5, -196577, 655360, 6, -131041, 786432, 5, -65505, 786432, 5, -65500, 655360, 6, -131036, 589824, 6, -196572, 786432, 5, -196573, 786432, 5, -196574, 786432, 5, -196575, 786432, 5, -196576, 786432, 5, -131040, 589824, 6, -65504, 786432, 5, -65501, 786432, 5, -131037, 786432, 5, -131038, 786432, 5, -131039, 786432, 5, -65503, 786432, 5, -65502, 786432, 5, 524318, 720896, 6, 458782, 720896, 5, 393246, 720896, 5, 327710, 720896, 5, 262174, 720896, 5, 196638, 720896, 5, 131102, 720896, 5, 65566, 720896, 5, 30, 720896, 5, 524319, 786432, 6, 524320, 786432, 6, 524321, 786432, 6, 524322, 786432, 6, 524323, 786432, 6, 524324, 786432, 6, 524325, 786432, 6, 524326, 851968, 6, 38, 851968, 5, 65574, 851968, 5, 131110, 851968, 5, 196646, 851968, 5, 262182, 851968, 5, 327718, 851968, 5, 393254, 851968, 5, 458790, 851968, 5, 31, 786432, 5, 65567, 786432, 5, 131103, 786432, 5, 196639, 786432, 5, 262175, 786432, 5, 327711, 786432, 5, 393247, 655360, 6, 458783, 786432, 5, 32, 786432, 5, 65568, 786432, 5, 131104, 786432, 5, 196640, 786432, 5, 262176, 786432, 5, 327712, 786432, 5, 393248, 786432, 5, 458784, 786432, 5, 33, 786432, 5, 65569, 786432, 5, 131105, 655360, 6, 196641, 786432, 5, 262177, 786432, 5, 327713, 786432, 5, 393249, 786432, 5, 458785, 786432, 5, 34, 786432, 5, 65570, 786432, 5, 131106, 786432, 5, 196642, 786432, 5, 262178, 655360, 6, 327714, 655360, 6, 393250, 786432, 5, 458786, 786432, 5, 35, 786432, 5, 65571, 786432, 5, 131107, 786432, 5, 196643, 786432, 5, 262179, 786432, 5, 327715, 786432, 5, 393251, 786432, 5, 458787, 786432, 5, 36, 655360, 6, 65572, 786432, 5, 131108, 786432, 5, 196644, 786432, 5, 262180, 786432, 5, 327716, 786432, 5, 393252, 786432, 5, 458788, 655360, 6, 37, 786432, 5, 65573, 786432, 5, 131109, 786432, 5, 196645, 786432, 5, 262181, 786432, 5, 327717, 786432, 5, 393253, 786432, 5, 458789, 786432, 5)
+tile_map_data = PackedByteArray("AAAAAPr/AAAKAAIAAAAAAPv/AAAKAAMAAAAAAPz/AAAKAAMAAAAAAP3/AAAKAAMAAAAAAP7/AAAKAAMAAAAAAP//AAAKAAMAAAABAPr/AAALAAIAAAABAPv/AAALAAEAAAABAPz/AAALAAEAAAABAP3/AAALAAEAAAABAP7/AAALAAEAAAABAP//AAALAAEAAAACAPr/AAAMAAIAAAACAPv/AAAMAAMAAAACAPz/AAAMAAMAAAACAP3/AAAMAAMAAAACAP7/AAAMAAMAAAACAP//AAAMAAMAAAA=")
+tile_set = SubResource("TileSet_14yng")
+collision_enabled = false
+navigation_enabled = false
+
+[node name="Terrain" type="TileMapLayer" parent="."]
+use_parent_material = true
+scale = Vector2(3, 3)
+tile_map_data = PackedByteArray("AAABAAAAAAALAAAAAAACAAAAAAALAAAAAAADAAAAAAALAAAAAAAEAAAAAAALAAAAAAAFAAAAAAALAAAAAAAGAAAAAAALAAAAAAAHAAAAAAALAAAAAAAIAAAAAAALAAAAAAAJAAAAAAAMAAAAAAAJAAEAAAAMAAEAAAAJAAIAAAAMAAEAAAAJAAMAAAAMAAEAAAAJAAQAAAAMAAEAAAAJAAUAAAAMAAEAAAAJAAYAAAAMAAEAAAABAAEAAAALAAEAAAABAAIAAAALAAEAAAABAAMAAAALAAEAAAABAAQAAAAHAAEAAAABAAUAAAALAAEAAAABAAYAAAALAAEAAAACAAEAAAALAAEAAAACAAIAAAALAAEAAAACAAMAAAALAAEAAAACAAQAAAALAAEAAAACAAUAAAALAAEAAAACAAYAAAALAAEAAAADAAEAAAALAAEAAAADAAIAAAALAAEAAAADAAMAAAALAAEAAAADAAQAAAALAAEAAAADAAUAAAALAAEAAAADAAYAAAALAAEAAAAEAAEAAAAHAAEAAAAEAAIAAAALAAEAAAAEAAMAAAALAAEAAAAEAAQAAAALAAEAAAAEAAUAAAALAAEAAAAEAAYAAAALAAEAAAAFAAEAAAALAAEAAAAFAAIAAAALAAEAAAAFAAMAAAALAAEAAAAFAAQAAAAHAAEAAAAFAAUAAAALAAEAAAAFAAYAAAALAAEAAAAGAAEAAAALAAEAAAAGAAIAAAALAAEAAAAGAAMAAAALAAEAAAAGAAQAAAALAAEAAAAGAAUAAAALAAEAAAAGAAYAAAALAAEAAAAHAAEAAAALAAEAAAAHAAIAAAALAAEAAAAHAAMAAAALAAEAAAAHAAQAAAALAAEAAAAHAAUAAAALAAEAAAAHAAYAAAAHAAEAAAAIAAEAAAALAAEAAAAIAAIAAAALAAEAAAAIAAMAAAAHAAEAAAAIAAQAAAALAAEAAAAIAAUAAAALAAEAAAAIAAYAAAALAAEAAAAKAAEAAAAIAAUAAAALAAEAAAAIAAUAAAAMAAEAAAAIAAUAAAANAAEAAAAIAAUAAAAKAAIAAAAIAAYAAAALAAIAAAAIAAYAAAAMAAIAAAAIAAYAAAANAAIAAAAIAAYAAAAKAAMAAAALAAEAAAAKAAQAAAALAAEAAAALAAMAAAALAAEAAAALAAQAAAALAAEAAAAMAAMAAAALAAEAAAAMAAQAAAALAAEAAAANAAMAAAALAAEAAAANAAQAAAALAAEAAAAOAAEAAAAIAAUAAAAPAAEAAAAIAAUAAAAQAAEAAAAIAAUAAAAOAAIAAAAIAAYAAAAPAAIAAAAIAAYAAAAQAAIAAAAIAAYAAAAOAAMAAAALAAEAAAAPAAMAAAALAAEAAAAPAAQAAAALAAEAAAAQAAQAAAALAAEAAAAQAAMAAAALAAEAAAAOAAQAAAALAAEAAAARAAAAAAALAAQAAAARAAEAAAALAAUAAAARAAIAAAALAAUAAAARAAMAAAALAAUAAAARAAQAAAALAAUAAAASAAAAAAAMAAQAAAATAAAAAAAMAAQAAAAUAAAAAAAMAAQAAAAVAAAAAAAMAAQAAAAWAAAAAAAMAAQAAAAXAAAAAAAMAAQAAAASAAEAAAAMAAUAAAASAAIAAAAMAAUAAAASAAMAAAAMAAUAAAASAAQAAAAMAAUAAAATAAEAAAAMAAUAAAATAAIAAAAJAAYAAAATAAMAAAAMAAUAAAATAAQAAAAMAAUAAAAUAAEAAAAMAAUAAAAUAAIAAAAMAAUAAAAUAAMAAAAMAAUAAAAUAAQAAAAMAAUAAAAVAAEAAAAMAAUAAAAVAAIAAAAMAAUAAAAVAAMAAAAMAAUAAAAVAAQAAAAMAAUAAAAWAAEAAAAMAAUAAAAWAAIAAAAMAAUAAAAWAAMAAAAMAAUAAAAWAAQAAAAKAAYAAAAXAAEAAAAMAAUAAAAXAAIAAAAMAAUAAAAXAAMAAAAMAAUAAAAXAAQAAAAMAAUAAAARAAUAAAALAAUAAAARAAYAAAALAAUAAAASAAUAAAAJAAYAAAASAAYAAAAMAAUAAAATAAUAAAAMAAUAAAATAAYAAAAMAAUAAAAUAAUAAAAMAAUAAAAUAAYAAAAMAAUAAAAVAAUAAAAMAAUAAAAVAAYAAAAMAAUAAAAWAAUAAAAMAAUAAAAWAAYAAAAMAAUAAAAXAAUAAAAMAAUAAAAXAAYAAAAMAAUAAAAKAP7/AAALAAQAAAALAP7/AAAMAAQAAAAMAP7/AAAMAAQAAAAKAP//AAALAAYAAAALAP//AAAMAAYAAAAMAP//AAAMAAYAAAAQAP7/AAANAAQAAAAQAP//AAANAAYAAAANAP7/AAAMAAQAAAAOAP7/AAAMAAQAAAAPAP7/AAAMAAQAAAANAP//AAAMAAYAAAAOAP//AAAMAAYAAAAPAP//AAAMAAYAAAAMAP3/AAAOAAAAAAADAP//AAAOAAIAAAAEAP//AAAPAAIAAAAFAP//AAAQAAIAAAAGAP//AAAOAAIAAAAHAP//AAAPAAIAAAAIAP//AAAQAAIAAAD//wAAAAAKAAAAAAD//wEAAAAKAAEAAAD//wIAAAAKAAEAAAD//wMAAAAKAAEAAAD//wQAAAAKAAEAAAD//wUAAAAKAAEAAAD//wYAAAAKAAEAAAD//wcAAAAKAAEAAAD//wgAAAAKAAEAAAAAAAAAAAALAAAAAAAAAAEAAAALAAEAAAAAAAIAAAALAAEAAAAAAAMAAAALAAEAAAAAAAQAAAALAAEAAAAAAAUAAAALAAEAAAAAAAYAAAALAAEAAAAAAAcAAAALAAEAAAAAAAgAAAALAAEAAAABAAgAAAALAAEAAAACAAgAAAALAAEAAAADAAgAAAALAAEAAAAEAAgAAAALAAEAAAAFAAgAAAALAAEAAAAGAAgAAAALAAEAAAAHAAgAAAALAAEAAAAIAAgAAAALAAEAAAAJAAgAAAAMAAEAAAAJAAcAAAAMAAEAAAAIAAcAAAALAAEAAAAHAAcAAAALAAEAAAAGAAcAAAAHAAEAAAAFAAcAAAALAAEAAAAEAAcAAAALAAEAAAADAAcAAAALAAEAAAACAAcAAAALAAEAAAABAAcAAAALAAEAAAD///v/AAANAAQAAAD///z/AAANAAUAAAD///3/AAANAAUAAAD///7/AAANAAUAAAD/////AAANAAYAAAD+//v/AAAMAAQAAAD9//v/AAAMAAQAAAD+//z/AAAJAAYAAAD9//z/AAAMAAUAAAD6////AAAMAAUAAAD7////AAAMAAUAAAD8////AAAMAAUAAAD9////AAAMAAUAAAD+////AAAMAAUAAAD+//7/AAAMAAUAAAD+//3/AAAMAAUAAAD9//3/AAAMAAUAAAD9//7/AAAKAAYAAAD+/wAAAAANAAUAAAD+/wEAAAANAAUAAAD+/wIAAAANAAUAAAD+/wMAAAANAAUAAAD+/wQAAAANAAUAAAD+/wUAAAANAAUAAAD+/wYAAAANAAUAAAD9/wAAAAAMAAUAAAD8/wAAAAAMAAUAAAD7/wAAAAAMAAUAAAD6/wAAAAAMAAUAAAD5/wAAAAALAAUAAAD6/wEAAAAMAAUAAAD6/wIAAAAMAAUAAAD6/wMAAAAMAAUAAAD7/wMAAAAMAAUAAAD7/wQAAAAMAAUAAAD8/wEAAAAMAAUAAAD9/wEAAAAMAAUAAAD9/wIAAAAMAAUAAAD9/wMAAAAMAAUAAAD9/wQAAAAMAAUAAAD9/wUAAAAMAAUAAAD9/wYAAAAMAAUAAAD8/wUAAAAMAAUAAAD7/wUAAAAMAAUAAAD8/wYAAAAMAAUAAAD8/wQAAAAKAAYAAAD8/wMAAAAMAAUAAAD8/wIAAAAMAAUAAAD7/wEAAAAMAAUAAAD7/wIAAAAJAAYAAAD7/wYAAAAMAAUAAAD6/wYAAAAMAAUAAAD6/wUAAAAMAAUAAAD6/wQAAAAMAAUAAAD5////AAALAAUAAAD5/wEAAAALAAUAAAD5/wIAAAALAAUAAAD5/wMAAAALAAUAAAD5/wQAAAALAAUAAAD5/wUAAAALAAUAAAD5/wYAAAALAAUAAAD8//r/AAALAAMAAAAOAP3/AAALAAMAAAALAP3/AAALAAMAAAASAP//AAALAAMAAAAUAP//AAALAAMAAAD6//r/AAAQAAUAAAD7//r/AAALAAMAAAANAP3/AAAOAAYAAAAWAP//AAAPAAYAAAD9//r/AAAPAAUAAAAXAP//AAAQAAUAAAD5//v/AAALAAQAAAD5//z/AAALAAUAAAD5//3/AAALAAUAAAD5//7/AAALAAUAAAD6//v/AAAMAAQAAAD6//z/AAAKAAYAAAD6//3/AAAMAAUAAAD6//7/AAAMAAUAAAD7//v/AAAMAAQAAAD7//z/AAAMAAUAAAD7//3/AAAMAAUAAAD7//7/AAAMAAUAAAD8//v/AAAMAAQAAAD8//z/AAAMAAUAAAD8//3/AAAMAAUAAAD8//7/AAAMAAUAAAARAAcAAAALAAUAAAARAAgAAAALAAYAAAAXAAcAAAAMAAUAAAAWAAcAAAAMAAUAAAAVAAcAAAAMAAUAAAAUAAcAAAAMAAUAAAATAAcAAAAMAAUAAAASAAcAAAAMAAUAAAASAAgAAAAMAAYAAAATAAgAAAAMAAYAAAAUAAgAAAAMAAYAAAAVAAgAAAAMAAYAAAAWAAgAAAAMAAYAAAAXAAgAAAAMAAYAAAAKAAUAAAALAAEAAAAKAAYAAAALAAEAAAAKAAcAAAALAAEAAAAKAAgAAAALAAEAAAALAAUAAAALAAEAAAALAAYAAAALAAEAAAALAAcAAAALAAEAAAALAAgAAAALAAEAAAAMAAUAAAALAAEAAAAMAAYAAAALAAEAAAAMAAcAAAALAAEAAAAMAAgAAAALAAEAAAANAAUAAAALAAEAAAANAAYAAAALAAEAAAANAAcAAAALAAEAAAANAAgAAAALAAEAAAAOAAUAAAALAAEAAAAOAAYAAAALAAEAAAAOAAcAAAALAAEAAAAOAAgAAAALAAEAAAAPAAUAAAALAAEAAAAPAAYAAAALAAEAAAAPAAcAAAALAAEAAAAPAAgAAAALAAEAAAAQAAUAAAALAAEAAAAQAAYAAAALAAEAAAAQAAcAAAALAAEAAAAQAAgAAAALAAEAAAAdAAAAAAANAAQAAAAdAAEAAAANAAUAAAAdAAIAAAANAAUAAAAdAAMAAAANAAUAAAAdAAQAAAANAAUAAAAdAAUAAAANAAUAAAAdAAYAAAANAAUAAAAdAAcAAAANAAUAAAAdAAgAAAANAAYAAAAZAP//AAAOAAQAAAAYAAAAAAAMAAQAAAAZAAAAAAAMAAQAAAAaAAAAAAAMAAQAAAAbAAAAAAAMAAQAAAAcAAAAAAAMAAQAAAAYAAEAAAAMAAUAAAAZAAEAAAAMAAUAAAAaAAEAAAAMAAUAAAAbAAEAAAAMAAUAAAAcAAEAAAAMAAUAAAAcAAIAAAAMAAUAAAAcAAMAAAAJAAYAAAAbAAIAAAAMAAUAAAAaAAIAAAAMAAUAAAAZAAIAAAAMAAUAAAAYAAIAAAAMAAUAAAAYAAMAAAAMAAUAAAAYAAQAAAAMAAUAAAAYAAUAAAAMAAUAAAAYAAYAAAAMAAUAAAAYAAcAAAAMAAUAAAAYAAgAAAAMAAYAAAAZAAMAAAAMAAUAAAAZAAQAAAAMAAUAAAAZAAUAAAAMAAUAAAAZAAYAAAAMAAUAAAAZAAcAAAAMAAUAAAAZAAgAAAAMAAYAAAAaAAMAAAAMAAUAAAAaAAQAAAAMAAUAAAAaAAUAAAAMAAUAAAAaAAYAAAAKAAYAAAAaAAcAAAAMAAUAAAAaAAgAAAAMAAYAAAAbAAMAAAAMAAUAAAAbAAQAAAAMAAUAAAAbAAUAAAAMAAUAAAAbAAYAAAAMAAUAAAAbAAcAAAAMAAUAAAAbAAgAAAAMAAYAAAAcAAQAAAAMAAUAAAAcAAUAAAAMAAUAAAAcAAYAAAAMAAUAAAAcAAcAAAAMAAUAAAAcAAgAAAAMAAYAAAAPAP3/AAAQAAYAAAAiAPr/AAAQAAYAAAAfAPr/AAAOAAYAAAAkAPr/AAAPAAYAAAAgAPr/AAAPAAUAAAAbAP//AAALAAMAAAAaAP//AAALAAMAAAAjAPr/AAALAAMAAAAhAPr/AAALAAMAAAATAP//AAALAAMAAAAVAP//AAALAAMAAAAeAPv/AAALAAQAAAAeAPz/AAALAAUAAAAeAP3/AAALAAUAAAAeAP7/AAALAAUAAAAeAP//AAALAAUAAAAmAP//AAANAAUAAAAmAP7/AAANAAUAAAAmAP3/AAANAAUAAAAmAPv/AAANAAQAAAAfAPv/AAAMAAQAAAAgAPv/AAAMAAQAAAAhAPv/AAAMAAQAAAAiAPv/AAAMAAQAAAAjAPv/AAAMAAQAAAAkAPv/AAAMAAQAAAAlAPv/AAAMAAQAAAAmAPz/AAANAAUAAAAlAP//AAAMAAUAAAAlAP7/AAAMAAUAAAAlAP3/AAAMAAUAAAAlAPz/AAAMAAUAAAAkAPz/AAAMAAUAAAAjAPz/AAAMAAUAAAAiAPz/AAAMAAUAAAAhAPz/AAAMAAUAAAAgAPz/AAAMAAUAAAAfAPz/AAAMAAUAAAAfAP3/AAAKAAYAAAAfAP7/AAAMAAUAAAAfAP//AAAMAAUAAAAkAP//AAAKAAYAAAAkAP7/AAAJAAYAAAAkAP3/AAAMAAUAAAAjAP3/AAAMAAUAAAAiAP3/AAAMAAUAAAAhAP3/AAAMAAUAAAAgAP3/AAAMAAUAAAAgAP7/AAAJAAYAAAAgAP//AAAMAAUAAAAjAP//AAAMAAUAAAAjAP7/AAAMAAUAAAAiAP7/AAAMAAUAAAAhAP7/AAAMAAUAAAAhAP//AAAMAAUAAAAiAP//AAAMAAUAAAAeAAgAAAALAAYAAAAeAAcAAAALAAUAAAAeAAYAAAALAAUAAAAeAAUAAAALAAUAAAAeAAQAAAALAAUAAAAeAAMAAAALAAUAAAAeAAIAAAALAAUAAAAeAAEAAAALAAUAAAAeAAAAAAALAAUAAAAfAAgAAAAMAAYAAAAgAAgAAAAMAAYAAAAhAAgAAAAMAAYAAAAiAAgAAAAMAAYAAAAjAAgAAAAMAAYAAAAkAAgAAAAMAAYAAAAlAAgAAAAMAAYAAAAmAAgAAAANAAYAAAAmAAAAAAANAAUAAAAmAAEAAAANAAUAAAAmAAIAAAANAAUAAAAmAAMAAAANAAUAAAAmAAQAAAANAAUAAAAmAAUAAAANAAUAAAAmAAYAAAANAAUAAAAmAAcAAAANAAUAAAAfAAAAAAAMAAUAAAAfAAEAAAAMAAUAAAAfAAIAAAAMAAUAAAAfAAMAAAAMAAUAAAAfAAQAAAAMAAUAAAAfAAUAAAAMAAUAAAAfAAYAAAAKAAYAAAAfAAcAAAAMAAUAAAAgAAAAAAAMAAUAAAAgAAEAAAAMAAUAAAAgAAIAAAAMAAUAAAAgAAMAAAAMAAUAAAAgAAQAAAAMAAUAAAAgAAUAAAAMAAUAAAAgAAYAAAAMAAUAAAAgAAcAAAAMAAUAAAAhAAAAAAAMAAUAAAAhAAEAAAAMAAUAAAAhAAIAAAAKAAYAAAAhAAMAAAAMAAUAAAAhAAQAAAAMAAUAAAAhAAUAAAAMAAUAAAAhAAYAAAAMAAUAAAAhAAcAAAAMAAUAAAAiAAAAAAAMAAUAAAAiAAEAAAAMAAUAAAAiAAIAAAAMAAUAAAAiAAMAAAAMAAUAAAAiAAQAAAAKAAYAAAAiAAUAAAAKAAYAAAAiAAYAAAAMAAUAAAAiAAcAAAAMAAUAAAAjAAAAAAAMAAUAAAAjAAEAAAAMAAUAAAAjAAIAAAAMAAUAAAAjAAMAAAAMAAUAAAAjAAQAAAAMAAUAAAAjAAUAAAAMAAUAAAAjAAYAAAAMAAUAAAAjAAcAAAAMAAUAAAAkAAAAAAAKAAYAAAAkAAEAAAAMAAUAAAAkAAIAAAAMAAUAAAAkAAMAAAAMAAUAAAAkAAQAAAAMAAUAAAAkAAUAAAAMAAUAAAAkAAYAAAAMAAUAAAAkAAcAAAAKAAYAAAAlAAAAAAAMAAUAAAAlAAEAAAAMAAUAAAAlAAIAAAAMAAUAAAAlAAMAAAAMAAUAAAAlAAQAAAAMAAUAAAAlAAUAAAAMAAUAAAAlAAYAAAAMAAUAAAAlAAcAAAAMAAUAAAD6/wcAAAAMAAUAAAD7/wcAAAAMAAUAAAD8/wcAAAAMAAUAAAD9/wcAAAAMAAUAAAD5/wcAAAALAAUAAAD+/wcAAAANAAUAAAD5/wgAAAALAAYAAAD6/wgAAAAMAAYAAAD7/wgAAAAMAAYAAAD8/wgAAAAMAAYAAAD9/wgAAAAMAAYAAAD+/wgAAAANAAYAAAA=")
+tile_set = SubResource("TileSet_14yng")
[node name="UI" type="CanvasLayer" parent="."]
visible = false
[node name="Camera2D" type="Camera2D" parent="."]
-position = Vector2(107, -172.5)
+physics_interpolation_mode = 1
+position = Vector2(186, -172.5)
+zoom = Vector2(1.5, 1.5)
+process_callback = 0
position_smoothing_speed = 8.0
[node name="PhantomCameraHost" type="Node" parent="Camera2D"]
+process_priority = 300
+process_physics_priority = 300
script = ExtResource("4_dxiro")
[node name="Label" type="Label" parent="."]
[Space] to jump"
[node name="PhantomCamera2D" type="Node2D" parent="." node_paths=PackedStringArray("follow_targets")]
-position = Vector2(107, -172.5)
+top_level = true
+position = Vector2(186, -172.5)
script = ExtResource("6_ojk83")
priority = 10
follow_mode = 3
-follow_targets = [NodePath("../GroupNPCSprite"), NodePath("../CharacterBody2D")]
+follow_targets = [NodePath("../CharacterBody2D"), NodePath("../GroupNPCSprite")]
+zoom = Vector2(1.5, 1.5)
tween_resource = SubResource("Resource_spy00")
tween_on_load = false
follow_damping = true
auto_zoom = true
+auto_zoom_min = 0.5
+auto_zoom_max = 1.5
auto_zoom_margin = Vector4(200, 0, 200, 0)
draw_limits = true
-[gd_scene load_steps=13 format=3 uid="uid://b75giavcvh1mv"]
+[gd_scene load_steps=13 format=4 uid="uid://b75giavcvh1mv"]
[ext_resource type="Texture2D" uid="uid://c77npili4pel4" path="res://addons/phantom_camera/examples/textures/2D/level_spritesheet.png" id="1_t003o"]
[ext_resource type="PackedScene" uid="uid://dg7rhrymsrrrm" path="res://addons/phantom_camera/examples/ui/ui_inventory.tscn" id="2_4ncqd"]
[ext_resource type="PackedScene" uid="uid://7kh0xydx0b1o" path="res://addons/phantom_camera/examples/example_scenes/2D/sub_scenes/playable_character_2d.tscn" id="8_fy81j"]
[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/2D/player_character_body_2d_4.3.gd" id="9_u6ygl"]
-[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_easgx"]
+[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_nivvc"]
texture = ExtResource("1_t003o")
0:0/0 = 0
-0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-0:0/0/physics_layer_0/angular_velocity = 0.0
-0:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-0:0/0/physics_layer_1/angular_velocity = 0.0
1:0/0 = 0
-1:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-1:0/0/physics_layer_0/angular_velocity = 0.0
-1:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-1:0/0/physics_layer_1/angular_velocity = 0.0
2:0/0 = 0
-2:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-2:0/0/physics_layer_0/angular_velocity = 0.0
-2:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-2:0/0/physics_layer_1/angular_velocity = 0.0
3:0/0 = 0
-3:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:0/0/physics_layer_0/angular_velocity = 0.0
-3:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:0/0/physics_layer_1/angular_velocity = 0.0
4:0/0 = 0
-4:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:0/0/physics_layer_0/angular_velocity = 0.0
-4:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:0/0/physics_layer_1/angular_velocity = 0.0
5:0/0 = 0
-5:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:0/0/physics_layer_0/angular_velocity = 0.0
-5:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:0/0/physics_layer_1/angular_velocity = 0.0
6:0/0 = 0
-6:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-6:0/0/physics_layer_0/angular_velocity = 0.0
-6:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-6:0/0/physics_layer_1/angular_velocity = 0.0
7:0/0 = 0
-7:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:0/0/physics_layer_0/angular_velocity = 0.0
7:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-7:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:0/0/physics_layer_1/angular_velocity = 0.0
0:1/0 = 0
-0:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-0:1/0/physics_layer_0/angular_velocity = 0.0
-0:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-0:1/0/physics_layer_1/angular_velocity = 0.0
1:1/0 = 0
-1:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-1:1/0/physics_layer_0/angular_velocity = 0.0
-1:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-1:1/0/physics_layer_1/angular_velocity = 0.0
2:1/0 = 0
-2:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-2:1/0/physics_layer_0/angular_velocity = 0.0
-2:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-2:1/0/physics_layer_1/angular_velocity = 0.0
3:1/0 = 0
-3:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:1/0/physics_layer_0/angular_velocity = 0.0
-3:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:1/0/physics_layer_1/angular_velocity = 0.0
4:1/0 = 0
-4:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:1/0/physics_layer_0/angular_velocity = 0.0
-4:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:1/0/physics_layer_1/angular_velocity = 0.0
5:1/0 = 0
-5:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:1/0/physics_layer_0/angular_velocity = 0.0
-5:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:1/0/physics_layer_1/angular_velocity = 0.0
7:1/0 = 0
-7:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:1/0/physics_layer_0/angular_velocity = 0.0
7:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-7:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:1/0/physics_layer_1/angular_velocity = 0.0
2:2/0 = 0
-2:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-2:2/0/physics_layer_0/angular_velocity = 0.0
-2:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-2:2/0/physics_layer_1/angular_velocity = 0.0
3:2/0 = 0
-3:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:2/0/physics_layer_0/angular_velocity = 0.0
-3:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:2/0/physics_layer_1/angular_velocity = 0.0
4:2/0 = 0
-4:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:2/0/physics_layer_0/angular_velocity = 0.0
-4:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:2/0/physics_layer_1/angular_velocity = 0.0
7:2/0 = 0
-7:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:2/0/physics_layer_0/angular_velocity = 0.0
7:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-7:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:2/0/physics_layer_1/angular_velocity = 0.0
3:3/0 = 0
-3:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:3/0/physics_layer_0/angular_velocity = 0.0
-3:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:3/0/physics_layer_1/angular_velocity = 0.0
4:3/0 = 0
-4:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:3/0/physics_layer_0/angular_velocity = 0.0
-4:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:3/0/physics_layer_1/angular_velocity = 0.0
5:3/0 = 0
-5:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:3/0/physics_layer_0/angular_velocity = 0.0
-5:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:3/0/physics_layer_1/angular_velocity = 0.0
7:3/0 = 0
-7:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:3/0/physics_layer_0/angular_velocity = 0.0
7:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-7:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:3/0/physics_layer_1/angular_velocity = 0.0
3:4/0 = 0
-3:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:4/0/physics_layer_0/angular_velocity = 0.0
-3:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:4/0/physics_layer_1/angular_velocity = 0.0
4:4/0 = 0
-4:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:4/0/physics_layer_0/angular_velocity = 0.0
-4:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:4/0/physics_layer_1/angular_velocity = 0.0
5:4/0 = 0
-5:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:4/0/physics_layer_0/angular_velocity = 0.0
-5:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:4/0/physics_layer_1/angular_velocity = 0.0
7:4/0 = 0
-7:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:4/0/physics_layer_0/angular_velocity = 0.0
-7:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:4/0/physics_layer_1/angular_velocity = 0.0
3:5/0 = 0
-3:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:5/0/physics_layer_0/angular_velocity = 0.0
-3:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:5/0/physics_layer_1/angular_velocity = 0.0
4:5/0 = 0
-4:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:5/0/physics_layer_0/angular_velocity = 0.0
-4:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:5/0/physics_layer_1/angular_velocity = 0.0
7:5/0 = 0
-7:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:5/0/physics_layer_0/angular_velocity = 0.0
-7:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:5/0/physics_layer_1/angular_velocity = 0.0
3:6/0 = 0
-3:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:6/0/physics_layer_0/angular_velocity = 0.0
-3:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:6/0/physics_layer_1/angular_velocity = 0.0
4:6/0 = 0
-4:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:6/0/physics_layer_0/angular_velocity = 0.0
-4:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:6/0/physics_layer_1/angular_velocity = 0.0
7:6/0 = 0
-7:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:6/0/physics_layer_0/angular_velocity = 0.0
-7:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:6/0/physics_layer_1/angular_velocity = 0.0
2:7/0 = 0
-2:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-2:7/0/physics_layer_0/angular_velocity = 0.0
-2:7/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-2:7/0/physics_layer_1/angular_velocity = 0.0
3:7/0 = 0
-3:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:7/0/physics_layer_0/angular_velocity = 0.0
-3:7/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:7/0/physics_layer_1/angular_velocity = 0.0
4:7/0 = 0
-4:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:7/0/physics_layer_0/angular_velocity = 0.0
-4:7/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:7/0/physics_layer_1/angular_velocity = 0.0
5:7/0 = 0
-5:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:7/0/physics_layer_0/angular_velocity = 0.0
-5:7/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:7/0/physics_layer_1/angular_velocity = 0.0
8:0/0 = 0
-8:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:0/0/physics_layer_0/angular_velocity = 0.0
8:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-8:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:0/0/physics_layer_1/angular_velocity = 0.0
9:0/0 = 0
-9:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:0/0/physics_layer_0/angular_velocity = 0.0
9:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-9:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:0/0/physics_layer_1/angular_velocity = 0.0
10:0/0 = 0
-10:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:0/0/physics_layer_0/angular_velocity = 0.0
10:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-10:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:0/0/physics_layer_1/angular_velocity = 0.0
11:0/0 = 0
-11:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:0/0/physics_layer_0/angular_velocity = 0.0
11:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-11:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:0/0/physics_layer_1/angular_velocity = 0.0
12:0/0 = 0
-12:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:0/0/physics_layer_0/angular_velocity = 0.0
12:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:0/0/physics_layer_1/angular_velocity = 0.0
13:0/0 = 0
-13:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:0/0/physics_layer_0/angular_velocity = 0.0
13:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:0/0/physics_layer_1/angular_velocity = 0.0
14:0/0 = 0
-14:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:0/0/physics_layer_0/angular_velocity = 0.0
-14:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:0/0/physics_layer_1/angular_velocity = 0.0
14:0/0/physics_layer_1/polygon_0/points = PackedVector2Array(8, -8, 8, 8, -8, 8)
14:0/0/custom_data_0 = &"Sign"
15:0/0 = 0
-15:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:0/0/physics_layer_0/angular_velocity = 0.0
-15:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:0/0/physics_layer_1/angular_velocity = 0.0
16:0/0 = 0
-16:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:0/0/physics_layer_0/angular_velocity = 0.0
-16:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:0/0/physics_layer_1/angular_velocity = 0.0
8:1/0 = 0
-8:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:1/0/physics_layer_0/angular_velocity = 0.0
8:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-8:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:1/0/physics_layer_1/angular_velocity = 0.0
9:1/0 = 0
-9:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:1/0/physics_layer_0/angular_velocity = 0.0
9:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-9:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:1/0/physics_layer_1/angular_velocity = 0.0
10:1/0 = 0
-10:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:1/0/physics_layer_0/angular_velocity = 0.0
10:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-10:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:1/0/physics_layer_1/angular_velocity = 0.0
11:1/0 = 0
-11:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:1/0/physics_layer_0/angular_velocity = 0.0
11:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-11:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:1/0/physics_layer_1/angular_velocity = 0.0
12:1/0 = 0
-12:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:1/0/physics_layer_0/angular_velocity = 0.0
12:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:1/0/physics_layer_1/angular_velocity = 0.0
13:1/0 = 0
-13:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:1/0/physics_layer_0/angular_velocity = 0.0
13:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:1/0/physics_layer_1/angular_velocity = 0.0
14:1/0 = 0
-14:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:1/0/physics_layer_0/angular_velocity = 0.0
-14:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:1/0/physics_layer_1/angular_velocity = 0.0
15:1/0 = 0
-15:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:1/0/physics_layer_0/angular_velocity = 0.0
-15:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:1/0/physics_layer_1/angular_velocity = 0.0
16:1/0 = 0
-16:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:1/0/physics_layer_0/angular_velocity = 0.0
-16:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:1/0/physics_layer_1/angular_velocity = 0.0
8:2/0 = 0
-8:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:2/0/physics_layer_0/angular_velocity = 0.0
8:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-8:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:2/0/physics_layer_1/angular_velocity = 0.0
9:2/0 = 0
-9:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:2/0/physics_layer_0/angular_velocity = 0.0
9:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-9:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:2/0/physics_layer_1/angular_velocity = 0.0
10:2/0 = 0
-10:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:2/0/physics_layer_0/angular_velocity = 0.0
10:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-10:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:2/0/physics_layer_1/angular_velocity = 0.0
11:2/0 = 0
-11:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:2/0/physics_layer_0/angular_velocity = 0.0
11:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-11:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:2/0/physics_layer_1/angular_velocity = 0.0
12:2/0 = 0
-12:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:2/0/physics_layer_0/angular_velocity = 0.0
12:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:2/0/physics_layer_1/angular_velocity = 0.0
13:2/0 = 0
-13:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:2/0/physics_layer_0/angular_velocity = 0.0
13:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:2/0/physics_layer_1/angular_velocity = 0.0
14:2/0 = 0
-14:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:2/0/physics_layer_0/angular_velocity = 0.0
-14:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:2/0/physics_layer_1/angular_velocity = 0.0
15:2/0 = 0
-15:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:2/0/physics_layer_0/angular_velocity = 0.0
-15:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:2/0/physics_layer_1/angular_velocity = 0.0
16:2/0 = 0
-16:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:2/0/physics_layer_0/angular_velocity = 0.0
-16:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:2/0/physics_layer_1/angular_velocity = 0.0
8:3/0 = 0
-8:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:3/0/physics_layer_0/angular_velocity = 0.0
8:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-8:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:3/0/physics_layer_1/angular_velocity = 0.0
9:3/0 = 0
-9:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:3/0/physics_layer_0/angular_velocity = 0.0
9:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-9:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:3/0/physics_layer_1/angular_velocity = 0.0
10:3/0 = 0
-10:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:3/0/physics_layer_0/angular_velocity = 0.0
10:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-10:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:3/0/physics_layer_1/angular_velocity = 0.0
11:3/0 = 0
-11:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:3/0/physics_layer_0/angular_velocity = 0.0
-11:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:3/0/physics_layer_1/angular_velocity = 0.0
12:3/0 = 0
-12:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:3/0/physics_layer_0/angular_velocity = 0.0
12:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:3/0/physics_layer_1/angular_velocity = 0.0
13:3/0 = 0
-13:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:3/0/physics_layer_0/angular_velocity = 0.0
13:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:3/0/physics_layer_1/angular_velocity = 0.0
14:3/0 = 0
-14:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:3/0/physics_layer_0/angular_velocity = 0.0
-14:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:3/0/physics_layer_1/angular_velocity = 0.0
15:3/0 = 0
-15:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:3/0/physics_layer_0/angular_velocity = 0.0
-15:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:3/0/physics_layer_1/angular_velocity = 0.0
16:3/0 = 0
-16:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:3/0/physics_layer_0/angular_velocity = 0.0
-16:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:3/0/physics_layer_1/angular_velocity = 0.0
8:4/0 = 0
-8:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:4/0/physics_layer_0/angular_velocity = 0.0
-8:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:4/0/physics_layer_1/angular_velocity = 0.0
9:4/0 = 0
-9:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:4/0/physics_layer_0/angular_velocity = 0.0
-9:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:4/0/physics_layer_1/angular_velocity = 0.0
10:4/0 = 0
-10:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:4/0/physics_layer_0/angular_velocity = 0.0
-10:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:4/0/physics_layer_1/angular_velocity = 0.0
11:4/0 = 0
-11:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:4/0/physics_layer_0/angular_velocity = 0.0
11:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-7, 2.5, -5, -2, -2.5, -5, 2, -7, 8, -8, 8, 8, -8, 8)
-11:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:4/0/physics_layer_1/angular_velocity = 0.0
12:4/0 = 0
-12:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:4/0/physics_layer_0/angular_velocity = 0.0
12:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:4/0/physics_layer_1/angular_velocity = 0.0
13:4/0 = 0
-13:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:4/0/physics_layer_0/angular_velocity = 0.0
13:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 0, -6, 4, -1.5, 6.5, 1.5, 8, 8, -8, 8)
-13:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:4/0/physics_layer_1/angular_velocity = 0.0
14:4/0 = 0
-14:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:4/0/physics_layer_0/angular_velocity = 0.0
-14:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:4/0/physics_layer_1/angular_velocity = 0.0
14:4/0/physics_layer_1/polygon_0/points = PackedVector2Array(-8, -8, -8, 8, 8, 8, 8, -8)
14:4/0/custom_data_0 = &"Inventory"
15:4/0 = 0
-15:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:4/0/physics_layer_0/angular_velocity = 0.0
-15:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:4/0/physics_layer_1/angular_velocity = 0.0
16:4/0 = 0
-16:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:4/0/physics_layer_0/angular_velocity = 0.0
-16:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:4/0/physics_layer_1/angular_velocity = 0.0
8:5/0 = 0
-8:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:5/0/physics_layer_0/angular_velocity = 0.0
-8:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:5/0/physics_layer_1/angular_velocity = 0.0
9:5/0 = 0
-9:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:5/0/physics_layer_0/angular_velocity = 0.0
-9:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:5/0/physics_layer_1/angular_velocity = 0.0
10:5/0 = 0
-10:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:5/0/physics_layer_0/angular_velocity = 0.0
-10:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:5/0/physics_layer_1/angular_velocity = 0.0
11:5/0 = 0
-11:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:5/0/physics_layer_0/angular_velocity = 0.0
11:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-11:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:5/0/physics_layer_1/angular_velocity = 0.0
12:5/0 = 0
-12:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:5/0/physics_layer_0/angular_velocity = 0.0
12:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:5/0/physics_layer_1/angular_velocity = 0.0
13:5/0 = 0
-13:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:5/0/physics_layer_0/angular_velocity = 0.0
13:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:5/0/physics_layer_1/angular_velocity = 0.0
14:5/0 = 0
-14:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:5/0/physics_layer_0/angular_velocity = 0.0
-14:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:5/0/physics_layer_1/angular_velocity = 0.0
15:5/0 = 0
-15:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:5/0/physics_layer_0/angular_velocity = 0.0
-15:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:5/0/physics_layer_1/angular_velocity = 0.0
16:5/0 = 0
-16:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:5/0/physics_layer_0/angular_velocity = 0.0
-16:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:5/0/physics_layer_1/angular_velocity = 0.0
8:6/0 = 0
-8:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:6/0/physics_layer_0/angular_velocity = 0.0
-8:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:6/0/physics_layer_1/angular_velocity = 0.0
9:6/0 = 0
-9:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:6/0/physics_layer_0/angular_velocity = 0.0
-9:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:6/0/physics_layer_1/angular_velocity = 0.0
10:6/0 = 0
-10:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:6/0/physics_layer_0/angular_velocity = 0.0
-10:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:6/0/physics_layer_1/angular_velocity = 0.0
11:6/0 = 0
-11:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:6/0/physics_layer_0/angular_velocity = 0.0
11:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, 1, 6.5, -3, 3, -6.5, -1.5)
-11:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:6/0/physics_layer_1/angular_velocity = 0.0
12:6/0 = 0
-12:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:6/0/physics_layer_0/angular_velocity = 0.0
12:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:6/0/physics_layer_1/angular_velocity = 0.0
13:6/0 = 0
-13:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:6/0/physics_layer_0/angular_velocity = 0.0
13:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 6, -0.5, 3, 3.5, -1.5, 6.5, -8, 8)
-13:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:6/0/physics_layer_1/angular_velocity = 0.0
14:6/0 = 0
-14:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:6/0/physics_layer_0/angular_velocity = 0.0
-14:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:6/0/physics_layer_1/angular_velocity = 0.0
15:6/0 = 0
-15:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:6/0/physics_layer_0/angular_velocity = 0.0
-15:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:6/0/physics_layer_1/angular_velocity = 0.0
16:6/0 = 0
-16:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:6/0/physics_layer_0/angular_velocity = 0.0
-16:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:6/0/physics_layer_1/angular_velocity = 0.0
-[sub_resource type="TileSet" id="TileSet_kf7eg"]
+[sub_resource type="TileSet" id="TileSet_eyojy"]
physics_layer_0/collision_layer = 1
physics_layer_1/collision_layer = 2
physics_layer_1/collision_mask = 2
custom_data_layer_0/name = "Type"
custom_data_layer_0/type = 21
-sources/0 = SubResource("TileSetAtlasSource_easgx")
+sources/0 = SubResource("TileSetAtlasSource_nivvc")
[sub_resource type="Curve2D" id="Curve2D_usrhf"]
_data = {
-"points": PackedVector2Array(-96.4111, 42.3785, 0, 0, 222, 0, 0, 0, 0, 0, 1550, 0)
+"points": PackedVector2Array(-96.4111, 42.3785, 0, 0, 222, 0, 0, 0, 0, 0, 1580.53, 0)
}
point_count = 2
-[node name="ExampleScene2D" type="Node2D"]
+[node name="Root" type="Node2D"]
[node name="Background" type="CanvasLayer" parent="."]
layer = -3
[node name="ColorRect" type="ColorRect" parent="Background"]
+auto_translate_mode = 2
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_bottom = 548.0
grow_horizontal = 2
grow_vertical = 2
-auto_translate = false
localize_numeral_system = false
color = Color(0.137255, 0.14902, 0.196078, 1)
-[node name="TileMap" type="TileMap" parent="."]
-z_index = -1
+[node name="Pillar" type="TileMapLayer" parent="."]
+use_parent_material = true
scale = Vector2(3, 3)
-tile_set = SubResource("TileSet_kf7eg")
-format = 2
-layer_0/name = "Background"
-layer_0/tile_data = PackedInt32Array(-393216, 655360, 2, -327680, 655360, 3, -262144, 655360, 3, -196608, 655360, 3, -131072, 655360, 3, -65536, 655360, 3, -393215, 720896, 2, -327679, 720896, 1, -262143, 720896, 1, -196607, 720896, 1, -131071, 720896, 1, -65535, 720896, 1, -393214, 786432, 2, -327678, 786432, 3, -262142, 786432, 3, -196606, 786432, 3, -131070, 786432, 3, -65534, 786432, 3)
-layer_1/name = "Terrain"
-layer_1/z_index = 1
-layer_1/tile_data = PackedInt32Array(1, 720896, 0, 2, 720896, 0, 3, 720896, 0, 4, 720896, 0, 5, 720896, 0, 6, 720896, 0, 7, 720896, 0, 8, 720896, 0, 9, 786432, 0, 65545, 786432, 1, 131081, 786432, 1, 196617, 786432, 1, 262153, 786432, 1, 327689, 786432, 1, 393225, 786432, 1, 65537, 720896, 1, 131073, 720896, 1, 196609, 720896, 1, 262145, 458752, 1, 327681, 720896, 1, 393217, 720896, 1, 65538, 720896, 1, 131074, 720896, 1, 196610, 720896, 1, 262146, 720896, 1, 327682, 720896, 1, 393218, 720896, 1, 65539, 720896, 1, 131075, 720896, 1, 196611, 720896, 1, 262147, 720896, 1, 327683, 720896, 1, 393219, 720896, 1, 65540, 458752, 1, 131076, 720896, 1, 196612, 720896, 1, 262148, 720896, 1, 327684, 720896, 1, 393220, 720896, 1, 65541, 720896, 1, 131077, 720896, 1, 196613, 720896, 1, 262149, 458752, 1, 327685, 720896, 1, 393221, 720896, 1, 65542, 720896, 1, 131078, 720896, 1, 196614, 720896, 1, 262150, 720896, 1, 327686, 720896, 1, 393222, 720896, 1, 65543, 720896, 1, 131079, 720896, 1, 196615, 720896, 1, 262151, 720896, 1, 327687, 720896, 1, 393223, 458752, 1, 65544, 720896, 1, 131080, 720896, 1, 196616, 458752, 1, 262152, 720896, 1, 327688, 720896, 1, 393224, 720896, 1, 65546, 524288, 5, 65547, 524288, 5, 65548, 524288, 5, 65549, 524288, 5, 131082, 524288, 6, 131083, 524288, 6, 131084, 524288, 6, 131085, 524288, 6, 196618, 720896, 1, 262154, 720896, 1, 196619, 720896, 1, 262155, 720896, 1, 196620, 720896, 1, 262156, 720896, 1, 196621, 720896, 1, 262157, 720896, 1, 65550, 524288, 5, 65551, 524288, 5, 65552, 524288, 5, 131086, 524288, 6, 131087, 524288, 6, 131088, 524288, 6, 196622, 720896, 1, 196623, 720896, 1, 262159, 720896, 1, 262160, 720896, 1, 196624, 720896, 1, 262158, 720896, 1, 17, 720896, 4, 65553, 720896, 5, 131089, 720896, 5, 196625, 720896, 5, 262161, 720896, 5, 18, 786432, 4, 19, 786432, 4, 20, 786432, 4, 21, 786432, 4, 22, 786432, 4, 23, 786432, 4, 65554, 786432, 5, 131090, 786432, 5, 196626, 786432, 5, 262162, 786432, 5, 65555, 786432, 5, 131091, 589824, 6, 196627, 786432, 5, 262163, 786432, 5, 65556, 786432, 5, 131092, 786432, 5, 196628, 786432, 5, 262164, 786432, 5, 65557, 786432, 5, 131093, 786432, 5, 196629, 786432, 5, 262165, 786432, 5, 65558, 786432, 5, 131094, 786432, 5, 196630, 786432, 5, 262166, 655360, 6, 65559, 786432, 5, 131095, 786432, 5, 196631, 786432, 5, 262167, 786432, 5, 327697, 720896, 5, 393233, 720896, 5, 327698, 589824, 6, 393234, 786432, 5, 327699, 786432, 5, 393235, 786432, 5, 327700, 786432, 5, 393236, 786432, 5, 327701, 786432, 5, 393237, 786432, 5, 327702, 786432, 5, 393238, 786432, 5, 327703, 786432, 5, 393239, 786432, 5, -131062, 720896, 4, -131061, 786432, 4, -131060, 786432, 4, -65526, 720896, 6, -65525, 786432, 6, -65524, 786432, 6, -131056, 851968, 4, -65520, 851968, 6, -131059, 786432, 4, -131058, 786432, 4, -131057, 786432, 4, -65523, 786432, 6, -65522, 786432, 6, -65521, 786432, 6, -65536, 917504, 2, -65535, 983040, 2, -65534, 1048576, 2, -65533, 917504, 2, -65532, 983040, 2, -65531, 1048576, 2, -65530, 917504, 2, -65529, 983040, 2, -65528, 1048576, 2, 65535, 655360, 0, 131071, 655360, 1, 196607, 655360, 1, 262143, 655360, 1, 327679, 655360, 1, 393215, 655360, 1, 458751, 655360, 1, 524287, 655360, 1, 589823, 655360, 1, 0, 720896, 0, 65536, 720896, 1, 131072, 720896, 1, 196608, 720896, 1, 262144, 720896, 1, 327680, 720896, 1, 393216, 720896, 1, 458752, 720896, 1, 524288, 720896, 1, 524289, 720896, 1, 524290, 720896, 1, 524291, 720896, 1, 524292, 720896, 1, 524293, 720896, 1, 524294, 720896, 1, 524295, 720896, 1, 524296, 720896, 1, 524297, 786432, 1, 458761, 786432, 1, 458760, 720896, 1, 458759, 720896, 1, 458758, 458752, 1, 458757, 720896, 1, 458756, 720896, 1, 458755, 720896, 1, 458754, 720896, 1, 458753, 720896, 1, -262145, 851968, 4, -196609, 851968, 5, -131073, 851968, 5, -65537, 851968, 5, -1, 851968, 6, -262146, 786432, 4, -262147, 786432, 4, -196610, 589824, 6, -196611, 786432, 5, -6, 786432, 5, -5, 786432, 5, -4, 786432, 5, -3, 786432, 5, -2, 786432, 5, -65538, 786432, 5, -131074, 786432, 5, -131075, 786432, 5, -65539, 655360, 6, 65534, 851968, 5, 131070, 851968, 5, 196606, 851968, 5, 262142, 851968, 5, 327678, 851968, 5, 393214, 851968, 5, 458750, 851968, 5, 65533, 786432, 5, 65532, 786432, 5, 65531, 786432, 5, 65530, 786432, 5, 65529, 720896, 5, 131066, 786432, 5, 196602, 786432, 5, 262138, 786432, 5, 262139, 786432, 5, 327675, 786432, 5, 131068, 786432, 5, 131069, 786432, 5, 196605, 786432, 5, 262141, 786432, 5, 327677, 786432, 5, 393213, 786432, 5, 458749, 786432, 5, 393212, 786432, 5, 393211, 786432, 5, 458748, 786432, 5, 327676, 655360, 6, 262140, 786432, 5, 196604, 786432, 5, 131067, 786432, 5, 196603, 589824, 6, 458747, 786432, 5, 458746, 786432, 5, 393210, 786432, 5, 327674, 786432, 5, -7, 720896, 5, 131065, 720896, 5, 196601, 720896, 5, 262137, 720896, 5, 327673, 720896, 5, 393209, 720896, 5, 458745, 720896, 5, -327684, 720896, 3, -196594, 720896, 3, -196597, 720896, 3, -65518, 720896, 3, -65516, 720896, 3, -327686, 1048576, 5, -327685, 720896, 3, -196595, 917504, 6, -65514, 983040, 6, -327683, 983040, 5, -65513, 1048576, 5, -262151, 720896, 4, -196615, 720896, 5, -131079, 720896, 5, -65543, 720896, 5, -262150, 786432, 4, -196614, 655360, 6, -131078, 786432, 5, -65542, 786432, 5, -262149, 786432, 4, -196613, 786432, 5, -131077, 786432, 5, -65541, 786432, 5, -262148, 786432, 4, -196612, 786432, 5, -131076, 786432, 5, -65540, 786432, 5, 458769, 720896, 5, 524305, 720896, 6, 458775, 786432, 5, 458774, 786432, 5, 458773, 786432, 5, 458772, 786432, 5, 458771, 786432, 5, 458770, 786432, 5, 524306, 786432, 6, 524307, 786432, 6, 524308, 786432, 6, 524309, 786432, 6, 524310, 786432, 6, 524311, 786432, 6, 327690, 720896, 1, 393226, 720896, 1, 458762, 720896, 1, 524298, 720896, 1, 327691, 720896, 1, 393227, 720896, 1, 458763, 720896, 1, 524299, 720896, 1, 327692, 720896, 1, 393228, 720896, 1, 458764, 720896, 1, 524300, 720896, 1, 327693, 720896, 1, 393229, 720896, 1, 458765, 720896, 1, 524301, 720896, 1, 327694, 720896, 1, 393230, 720896, 1, 458766, 720896, 1, 524302, 720896, 1, 327695, 720896, 1, 393231, 720896, 1, 458767, 720896, 1, 524303, 720896, 1, 327696, 720896, 1, 393232, 720896, 1, 458768, 720896, 1, 524304, 720896, 1, 29, 851968, 4, 65565, 851968, 5, 131101, 851968, 5, 196637, 851968, 5, 262173, 851968, 5, 327709, 851968, 5, 393245, 851968, 5, 458781, 851968, 5, 524317, 851968, 6, 24, 786432, 4, 25, 786432, 4, 26, 786432, 4, 27, 786432, 4, 28, 786432, 4, 65560, 786432, 5, 65561, 786432, 5, 65562, 786432, 5, 65563, 786432, 5, 65564, 786432, 5, 131100, 786432, 5, 196636, 589824, 6, 131099, 786432, 5, 131098, 786432, 5, 131097, 786432, 5, 131096, 786432, 5, 196632, 786432, 5, 262168, 786432, 5, 327704, 786432, 5, 393240, 786432, 5, 458776, 786432, 5, 524312, 786432, 6, 196633, 786432, 5, 262169, 786432, 5, 327705, 786432, 5, 393241, 786432, 5, 458777, 786432, 5, 524313, 786432, 6, 196634, 786432, 5, 262170, 786432, 5, 327706, 786432, 5, 393242, 655360, 6, 458778, 786432, 5, 524314, 786432, 6, 196635, 786432, 5, 262171, 786432, 5, 327707, 786432, 5, 393243, 786432, 5, 458779, 786432, 5, 524315, 786432, 6, 262172, 786432, 5, 327708, 786432, 5, 393244, 786432, 5, 458780, 786432, 5, 524316, 786432, 6, -196593, 1048576, 6, -65509, 720896, 3, -65510, 720896, 3, -65517, 720896, 3, -65515, 720896, 3, 524282, 786432, 5, 524283, 786432, 5, 524284, 786432, 5, 524285, 786432, 5, 524281, 720896, 5, 524286, 851968, 5, 589817, 720896, 6, 589818, 786432, 6, 589819, 786432, 6, 589820, 786432, 6, 589821, 786432, 6, 589822, 851968, 6, -196569, 720896, 4, -131033, 720896, 5, -65497, 720896, 5, 39, 720896, 5, 65575, 720896, 5, 131111, 720896, 5, 196647, 720896, 5, 262183, 720896, 5, 327719, 720896, 5, 393255, 720896, 5, 458791, 720896, 5, 524327, 720896, 5, 589863, 720896, 5, 655399, 720896, 6, -262104, 917504, 6, -196568, 786432, 4, -131032, 786432, 5, -65496, 655360, 6, 40, 786432, 5, 65576, 786432, 5, 131112, 786432, 5, 196648, 786432, 5, 262184, 786432, 5, 327720, 786432, 5, 393256, 786432, 5, 458792, 786432, 5, 524328, 655360, 6, 589864, 786432, 5, 655400, 786432, 6, -262103, 983040, 5, -196567, 786432, 4, -131031, 786432, 5, -65495, 786432, 5, 41, 589824, 6, 65577, 786432, 5, 131113, 786432, 5, 196649, 786432, 5, 262185, 786432, 5, 327721, 786432, 5, 393257, 786432, 5, 458793, 786432, 5, 524329, 786432, 5, 589865, 786432, 5, 655401, 786432, 6, -262102, 720896, 3, -196566, 786432, 4, -131030, 786432, 5, -65494, 786432, 5, 42, 786432, 5, 65578, 786432, 5, 131114, 786432, 5, 196650, 786432, 5, 262186, 655360, 6, 327722, 786432, 5, 393258, 786432, 5, 458794, 786432, 5, 524330, 786432, 5, 589866, 786432, 5, 655402, 786432, 6, -262101, 1048576, 6, -196565, 786432, 4, -131029, 786432, 5, -65493, 786432, 5, 43, 786432, 5, 65579, 786432, 5, 131115, 786432, 5, 196651, 786432, 5, 262187, 786432, 5, 327723, 786432, 5, 393259, 655360, 6, 458795, 655360, 6, 524331, 786432, 5, 589867, 786432, 5, 655403, 786432, 6, -262100, 720896, 3, -196564, 786432, 4, -131028, 786432, 5, -65492, 786432, 5, 44, 786432, 5, 65580, 786432, 5, 131116, 786432, 5, 196652, 786432, 5, 262188, 786432, 5, 327724, 786432, 5, 393260, 786432, 5, 458796, 786432, 5, 524332, 786432, 5, 589868, 786432, 5, 655404, 786432, 6, -262099, 983040, 6, -196563, 786432, 4, -131027, 786432, 5, -65491, 786432, 5, 45, 589824, 6, 65581, 655360, 6, 131117, 655360, 6, 196653, 786432, 5, 262189, 786432, 5, 327725, 786432, 5, 393261, 786432, 5, 458797, 786432, 5, 524333, 786432, 5, 589869, 655360, 6, 655405, 786432, 6, -196562, 786432, 4, -131026, 786432, 5, -65490, 786432, 5, 46, 786432, 5, 65582, 786432, 5, 131118, 786432, 5, 196654, 786432, 5, 262190, 786432, 5, 327726, 786432, 5, 393262, 786432, 5, 458798, 786432, 5, 524334, 786432, 5, 589870, 786432, 5, 655406, 786432, 6, -196561, 851968, 4, -131025, 851968, 5, -65489, 851968, 5, 47, 851968, 5, 65583, 851968, 5, 131119, 851968, 5, 196655, 851968, 5, 262191, 851968, 5, 327727, 851968, 5, 393263, 851968, 5, 458799, 851968, 5, 524335, 851968, 5, 589871, 851968, 5, 655407, 851968, 6, -131042, 720896, 4, -65506, 720896, 5, 30, 720896, 5, 65566, 720896, 5, 131102, 720896, 5, 196638, 720896, 5, 262174, 720896, 5, 327710, 720896, 5, 393246, 720896, 5, 458782, 720896, 5, 524318, 720896, 5, -196577, 917504, 6, -131041, 786432, 4, -65505, 786432, 5, 31, 655360, 6, 65567, 786432, 5, 131103, 786432, 5, 196639, 786432, 5, 262175, 786432, 5, 327711, 786432, 5, 393247, 786432, 5, 458783, 786432, 5, 524319, 786432, 5, -196576, 983040, 5, -131040, 786432, 4, -65504, 786432, 5, 32, 786432, 5, 65568, 589824, 6, 131104, 786432, 5, 196640, 786432, 5, 262176, 786432, 5, 327712, 786432, 5, 393248, 786432, 5, 458784, 786432, 5, 524320, 786432, 5, -196575, 720896, 3, -131039, 786432, 4, -65503, 786432, 5, 33, 786432, 5, 65569, 786432, 5, 131105, 786432, 5, 196641, 786432, 5, 262177, 786432, 5, 327713, 655360, 6, 393249, 786432, 5, 458785, 786432, 5, 524321, 786432, 5, -196574, 1048576, 6, -131038, 786432, 4, -65502, 786432, 5, 34, 786432, 5, 65570, 786432, 5, 131106, 786432, 5, 196642, 786432, 5, 262178, 786432, 5, 327714, 786432, 5, 393250, 786432, 5, 458786, 655360, 6, 524322, 655360, 6, -196573, 720896, 3, -131037, 786432, 4, -65501, 786432, 5, 35, 786432, 5, 65571, 786432, 5, 131107, 786432, 5, 196643, 786432, 5, 262179, 786432, 5, 327715, 786432, 5, 393251, 786432, 5, 458787, 786432, 5, 524323, 786432, 5, -196572, 983040, 6, -131036, 786432, 4, -65500, 786432, 5, 36, 786432, 5, 65572, 589824, 6, 131108, 655360, 6, 196644, 655360, 6, 262180, 786432, 5, 327716, 786432, 5, 393252, 786432, 5, 458788, 786432, 5, 524324, 786432, 5, -131035, 786432, 4, -65499, 786432, 5, 37, 786432, 5, 65573, 786432, 5, 131109, 786432, 5, 196645, 786432, 5, 262181, 786432, 5, 327717, 786432, 5, 393253, 786432, 5, 458789, 786432, 5, 524325, 786432, 5, -131034, 851968, 4, -65498, 851968, 5, 38, 851968, 5, 65574, 851968, 5, 131110, 851968, 5, 196646, 851968, 5, 262182, 851968, 5, 327718, 851968, 5, 393254, 851968, 5, 458790, 851968, 5, 524326, 851968, 5, 589854, 720896, 5, 655390, 720896, 5, 720926, 720896, 6, 589855, 655360, 6, 655391, 786432, 5, 720927, 786432, 6, 589856, 786432, 5, 655392, 786432, 5, 720928, 786432, 6, 589857, 786432, 5, 655393, 786432, 5, 720929, 786432, 6, 589858, 786432, 5, 655394, 786432, 5, 720930, 786432, 6, 589859, 786432, 5, 655395, 786432, 5, 720931, 786432, 6, 589860, 786432, 5, 655396, 655360, 6, 720932, 786432, 6, 589861, 786432, 5, 655397, 786432, 5, 720933, 786432, 6, 589862, 851968, 5, 655398, 851968, 5, 720934, 851968, 6, -458704, 720896, 4, -393168, 720896, 5, -327632, 720896, 5, -262096, 720896, 5, -196560, 720896, 5, -131024, 720896, 5, -65488, 720896, 5, 48, 720896, 5, 65584, 720896, 5, 131120, 720896, 5, 196656, 720896, 5, 262192, 720896, 5, 327728, 720896, 5, 393264, 720896, 6, -524239, 917504, 6, -458703, 786432, 4, -393167, 786432, 5, -327631, 655360, 6, -262095, 786432, 5, -196559, 786432, 5, -131023, 786432, 5, -65487, 786432, 5, 49, 786432, 5, 65585, 786432, 5, 131121, 786432, 5, 196657, 786432, 5, 262193, 655360, 6, 327729, 786432, 5, 393265, 786432, 6, -524238, 983040, 5, -458702, 786432, 4, -393166, 786432, 5, -327630, 786432, 5, -262094, 589824, 6, -196558, 786432, 5, -131022, 786432, 5, -65486, 786432, 5, 50, 786432, 5, 65586, 786432, 5, 131122, 786432, 5, 196658, 786432, 5, 262194, 786432, 5, 327730, 786432, 5, 393266, 786432, 6, -524237, 720896, 3, -458701, 786432, 4, -393165, 786432, 5, -327629, 786432, 5, -262093, 786432, 5, -196557, 786432, 5, -131021, 786432, 5, -65485, 786432, 5, 51, 655360, 6, 65587, 786432, 5, 131123, 786432, 5, 196659, 786432, 5, 262195, 786432, 5, 327731, 786432, 5, 393267, 786432, 6, -524236, 1048576, 6, -458700, 786432, 4, -393164, 786432, 5, -327628, 786432, 5, -262092, 786432, 5, -196556, 786432, 5, -131020, 786432, 5, -65484, 786432, 5, 52, 786432, 5, 65588, 786432, 5, 131124, 655360, 6, 196660, 655360, 6, 262196, 786432, 5, 327732, 786432, 5, 393268, 786432, 6, -524235, 720896, 3, -458699, 786432, 4, -393163, 786432, 5, -327627, 786432, 5, -262091, 786432, 5, -196555, 786432, 5, -131019, 786432, 5, -65483, 786432, 5, 53, 786432, 5, 65589, 786432, 5, 131125, 786432, 5, 196661, 786432, 5, 262197, 786432, 5, 327733, 786432, 5, 393269, 786432, 6, -524234, 983040, 6, -458698, 786432, 4, -393162, 786432, 5, -327626, 786432, 5, -262090, 589824, 6, -196554, 655360, 6, -131018, 655360, 6, -65482, 786432, 5, 54, 786432, 5, 65590, 786432, 5, 131126, 786432, 5, 196662, 786432, 5, 262198, 786432, 5, 327734, 655360, 6, 393270, 786432, 6, -458697, 786432, 4, -393161, 786432, 5, -327625, 786432, 5, -262089, 786432, 5, -196553, 786432, 5, -131017, 786432, 5, -65481, 786432, 5, 55, 786432, 5, 65591, 786432, 5, 131127, 786432, 5, 196663, 786432, 5, 262199, 786432, 5, 327735, 786432, 5, 393271, 786432, 6, -458696, 851968, 4, -393160, 851968, 5, -327624, 851968, 5, -262088, 851968, 5, -196552, 851968, 5, -131016, 851968, 5, -65480, 851968, 5, 56, 851968, 5, 65592, 851968, 5, 131128, 851968, 5, 196664, 851968, 5, 262200, 851968, 5, 327736, 851968, 5, 393272, 851968, 6)
+tile_map_data = PackedByteArray("AAAAAPr/AAAKAAIAAAAAAPv/AAAKAAMAAAAAAPz/AAAKAAMAAAAAAP3/AAAKAAMAAAAAAP7/AAAKAAMAAAAAAP//AAAKAAMAAAABAPr/AAALAAIAAAABAPv/AAALAAEAAAABAPz/AAALAAEAAAABAP3/AAALAAEAAAABAP7/AAALAAEAAAABAP//AAALAAEAAAACAPr/AAAMAAIAAAACAPv/AAAMAAMAAAACAPz/AAAMAAMAAAACAP3/AAAMAAMAAAACAP7/AAAMAAMAAAACAP//AAAMAAMAAAA=")
+tile_set = SubResource("TileSet_eyojy")
+collision_enabled = false
+navigation_enabled = false
+
+[node name="Terrain" type="TileMapLayer" parent="."]
+use_parent_material = true
+scale = Vector2(3, 3)
+tile_map_data = PackedByteArray("AAABAAAAAAALAAAAAAACAAAAAAALAAAAAAADAAAAAAALAAAAAAAEAAAAAAALAAAAAAAFAAAAAAALAAAAAAAGAAAAAAALAAAAAAAHAAAAAAALAAAAAAAIAAAAAAALAAAAAAAJAAAAAAAMAAAAAAAJAAEAAAAMAAEAAAAJAAIAAAAMAAEAAAAJAAMAAAAMAAEAAAAJAAQAAAAMAAEAAAAJAAUAAAAMAAEAAAAJAAYAAAAMAAEAAAABAAEAAAALAAEAAAABAAIAAAALAAEAAAABAAMAAAALAAEAAAABAAQAAAAHAAEAAAABAAUAAAALAAEAAAABAAYAAAALAAEAAAACAAEAAAALAAEAAAACAAIAAAALAAEAAAACAAMAAAALAAEAAAACAAQAAAALAAEAAAACAAUAAAALAAEAAAACAAYAAAALAAEAAAADAAEAAAALAAEAAAADAAIAAAALAAEAAAADAAMAAAALAAEAAAADAAQAAAALAAEAAAADAAUAAAALAAEAAAADAAYAAAALAAEAAAAEAAEAAAAHAAEAAAAEAAIAAAALAAEAAAAEAAMAAAALAAEAAAAEAAQAAAALAAEAAAAEAAUAAAALAAEAAAAEAAYAAAALAAEAAAAFAAEAAAALAAEAAAAFAAIAAAALAAEAAAAFAAMAAAALAAEAAAAFAAQAAAAHAAEAAAAFAAUAAAALAAEAAAAFAAYAAAALAAEAAAAGAAEAAAALAAEAAAAGAAIAAAALAAEAAAAGAAMAAAALAAEAAAAGAAQAAAALAAEAAAAGAAUAAAALAAEAAAAGAAYAAAALAAEAAAAHAAEAAAALAAEAAAAHAAIAAAALAAEAAAAHAAMAAAALAAEAAAAHAAQAAAALAAEAAAAHAAUAAAALAAEAAAAHAAYAAAAHAAEAAAAIAAEAAAALAAEAAAAIAAIAAAALAAEAAAAIAAMAAAAHAAEAAAAIAAQAAAALAAEAAAAIAAUAAAALAAEAAAAIAAYAAAALAAEAAAAKAAEAAAAIAAUAAAALAAEAAAAIAAUAAAAMAAEAAAAIAAUAAAANAAEAAAAIAAUAAAAKAAIAAAAIAAYAAAALAAIAAAAIAAYAAAAMAAIAAAAIAAYAAAANAAIAAAAIAAYAAAAKAAMAAAALAAEAAAAKAAQAAAALAAEAAAALAAMAAAALAAEAAAALAAQAAAALAAEAAAAMAAMAAAALAAEAAAAMAAQAAAALAAEAAAANAAMAAAALAAEAAAANAAQAAAALAAEAAAAOAAEAAAAIAAUAAAAPAAEAAAAIAAUAAAAQAAEAAAAIAAUAAAAOAAIAAAAIAAYAAAAPAAIAAAAIAAYAAAAQAAIAAAAIAAYAAAAOAAMAAAALAAEAAAAPAAMAAAALAAEAAAAPAAQAAAALAAEAAAAQAAQAAAALAAEAAAAQAAMAAAALAAEAAAAOAAQAAAALAAEAAAARAAAAAAALAAQAAAARAAEAAAALAAUAAAARAAIAAAALAAUAAAARAAMAAAALAAUAAAARAAQAAAALAAUAAAASAAAAAAAMAAQAAAATAAAAAAAMAAQAAAAUAAAAAAAMAAQAAAAVAAAAAAAMAAQAAAAWAAAAAAAMAAQAAAAXAAAAAAAMAAQAAAASAAEAAAAMAAUAAAASAAIAAAAMAAUAAAASAAMAAAAMAAUAAAASAAQAAAAMAAUAAAATAAEAAAAMAAUAAAATAAIAAAAJAAYAAAATAAMAAAAMAAUAAAATAAQAAAAMAAUAAAAUAAEAAAAMAAUAAAAUAAIAAAAMAAUAAAAUAAMAAAAMAAUAAAAUAAQAAAAMAAUAAAAVAAEAAAAMAAUAAAAVAAIAAAAMAAUAAAAVAAMAAAAMAAUAAAAVAAQAAAAMAAUAAAAWAAEAAAAMAAUAAAAWAAIAAAAMAAUAAAAWAAMAAAAMAAUAAAAWAAQAAAAKAAYAAAAXAAEAAAAMAAUAAAAXAAIAAAAMAAUAAAAXAAMAAAAMAAUAAAAXAAQAAAAMAAUAAAARAAUAAAALAAUAAAARAAYAAAALAAUAAAASAAUAAAAJAAYAAAASAAYAAAAMAAUAAAATAAUAAAAMAAUAAAATAAYAAAAMAAUAAAAUAAUAAAAMAAUAAAAUAAYAAAAMAAUAAAAVAAUAAAAMAAUAAAAVAAYAAAAMAAUAAAAWAAUAAAAMAAUAAAAWAAYAAAAMAAUAAAAXAAUAAAAMAAUAAAAXAAYAAAAMAAUAAAAKAP7/AAALAAQAAAALAP7/AAAMAAQAAAAMAP7/AAAMAAQAAAAKAP//AAALAAYAAAALAP//AAAMAAYAAAAMAP//AAAMAAYAAAAQAP7/AAANAAQAAAAQAP//AAANAAYAAAANAP7/AAAMAAQAAAAOAP7/AAAMAAQAAAAPAP7/AAAMAAQAAAANAP//AAAMAAYAAAAOAP//AAAMAAYAAAAPAP//AAAMAAYAAAAMAP3/AAAOAAAAAAADAP//AAAOAAIAAAAEAP//AAAPAAIAAAAFAP//AAAQAAIAAAAGAP//AAAOAAIAAAAHAP//AAAPAAIAAAAIAP//AAAQAAIAAAD//wAAAAAKAAAAAAD//wEAAAAKAAEAAAD//wIAAAAKAAEAAAD//wMAAAAKAAEAAAD//wQAAAAKAAEAAAD//wUAAAAKAAEAAAD//wYAAAAKAAEAAAD//wcAAAAKAAEAAAD//wgAAAAKAAEAAAAAAAAAAAALAAAAAAAAAAEAAAALAAEAAAAAAAIAAAALAAEAAAAAAAMAAAALAAEAAAAAAAQAAAALAAEAAAAAAAUAAAALAAEAAAAAAAYAAAALAAEAAAAAAAcAAAALAAEAAAAAAAgAAAALAAEAAAABAAgAAAALAAEAAAACAAgAAAALAAEAAAADAAgAAAALAAEAAAAEAAgAAAALAAEAAAAFAAgAAAALAAEAAAAGAAgAAAALAAEAAAAHAAgAAAALAAEAAAAIAAgAAAALAAEAAAAJAAgAAAAMAAEAAAAJAAcAAAAMAAEAAAAIAAcAAAALAAEAAAAHAAcAAAALAAEAAAAGAAcAAAAHAAEAAAAFAAcAAAALAAEAAAAEAAcAAAALAAEAAAADAAcAAAALAAEAAAACAAcAAAALAAEAAAABAAcAAAALAAEAAAD///v/AAANAAQAAAD///z/AAANAAUAAAD///3/AAANAAUAAAD///7/AAANAAUAAAD/////AAANAAYAAAD+//v/AAAMAAQAAAD9//v/AAAMAAQAAAD+//z/AAAJAAYAAAD9//z/AAAMAAUAAAD6////AAAMAAUAAAD7////AAAMAAUAAAD8////AAAMAAUAAAD9////AAAMAAUAAAD+////AAAMAAUAAAD+//7/AAAMAAUAAAD+//3/AAAMAAUAAAD9//3/AAAMAAUAAAD9//7/AAAKAAYAAAD+/wAAAAANAAUAAAD+/wEAAAANAAUAAAD+/wIAAAANAAUAAAD+/wMAAAANAAUAAAD+/wQAAAANAAUAAAD+/wUAAAANAAUAAAD+/wYAAAANAAUAAAD9/wAAAAAMAAUAAAD8/wAAAAAMAAUAAAD7/wAAAAAMAAUAAAD6/wAAAAAMAAUAAAD5/wAAAAALAAUAAAD6/wEAAAAMAAUAAAD6/wIAAAAMAAUAAAD6/wMAAAAMAAUAAAD7/wMAAAAMAAUAAAD7/wQAAAAMAAUAAAD8/wEAAAAMAAUAAAD9/wEAAAAMAAUAAAD9/wIAAAAMAAUAAAD9/wMAAAAMAAUAAAD9/wQAAAAMAAUAAAD9/wUAAAAMAAUAAAD9/wYAAAAMAAUAAAD8/wUAAAAMAAUAAAD7/wUAAAAMAAUAAAD8/wYAAAAMAAUAAAD8/wQAAAAKAAYAAAD8/wMAAAAMAAUAAAD8/wIAAAAMAAUAAAD7/wEAAAAMAAUAAAD7/wIAAAAJAAYAAAD7/wYAAAAMAAUAAAD6/wYAAAAMAAUAAAD6/wUAAAAMAAUAAAD6/wQAAAAMAAUAAAD5////AAALAAUAAAD5/wEAAAALAAUAAAD5/wIAAAALAAUAAAD5/wMAAAALAAUAAAD5/wQAAAALAAUAAAD5/wUAAAALAAUAAAD5/wYAAAALAAUAAAD8//r/AAALAAMAAAAOAP3/AAALAAMAAAALAP3/AAALAAMAAAASAP//AAALAAMAAAAUAP//AAALAAMAAAD6//r/AAAQAAUAAAD7//r/AAALAAMAAAANAP3/AAAOAAYAAAAWAP//AAAPAAYAAAD9//r/AAAPAAUAAAAXAP//AAAQAAUAAAD5//v/AAALAAQAAAD5//z/AAALAAUAAAD5//3/AAALAAUAAAD5//7/AAALAAUAAAD6//v/AAAMAAQAAAD6//z/AAAKAAYAAAD6//3/AAAMAAUAAAD6//7/AAAMAAUAAAD7//v/AAAMAAQAAAD7//z/AAAMAAUAAAD7//3/AAAMAAUAAAD7//7/AAAMAAUAAAD8//v/AAAMAAQAAAD8//z/AAAMAAUAAAD8//3/AAAMAAUAAAD8//7/AAAMAAUAAAARAAcAAAALAAUAAAARAAgAAAALAAYAAAAXAAcAAAAMAAUAAAAWAAcAAAAMAAUAAAAVAAcAAAAMAAUAAAAUAAcAAAAMAAUAAAATAAcAAAAMAAUAAAASAAcAAAAMAAUAAAASAAgAAAAMAAYAAAATAAgAAAAMAAYAAAAUAAgAAAAMAAYAAAAVAAgAAAAMAAYAAAAWAAgAAAAMAAYAAAAXAAgAAAAMAAYAAAAKAAUAAAALAAEAAAAKAAYAAAALAAEAAAAKAAcAAAALAAEAAAAKAAgAAAALAAEAAAALAAUAAAALAAEAAAALAAYAAAALAAEAAAALAAcAAAALAAEAAAALAAgAAAALAAEAAAAMAAUAAAALAAEAAAAMAAYAAAALAAEAAAAMAAcAAAALAAEAAAAMAAgAAAALAAEAAAANAAUAAAALAAEAAAANAAYAAAALAAEAAAANAAcAAAALAAEAAAANAAgAAAALAAEAAAAOAAUAAAALAAEAAAAOAAYAAAALAAEAAAAOAAcAAAALAAEAAAAOAAgAAAALAAEAAAAPAAUAAAALAAEAAAAPAAYAAAALAAEAAAAPAAcAAAALAAEAAAAPAAgAAAALAAEAAAAQAAUAAAALAAEAAAAQAAYAAAALAAEAAAAQAAcAAAALAAEAAAAQAAgAAAALAAEAAAAdAAAAAAANAAQAAAAdAAEAAAANAAUAAAAdAAIAAAANAAUAAAAdAAMAAAANAAUAAAAdAAQAAAANAAUAAAAdAAUAAAANAAUAAAAdAAYAAAANAAUAAAAdAAcAAAANAAUAAAAdAAgAAAANAAYAAAAZAP//AAAOAAQAAAAYAAAAAAAMAAQAAAAZAAAAAAAMAAQAAAAaAAAAAAAMAAQAAAAbAAAAAAAMAAQAAAAcAAAAAAAMAAQAAAAYAAEAAAAMAAUAAAAZAAEAAAAMAAUAAAAaAAEAAAAMAAUAAAAbAAEAAAAMAAUAAAAcAAEAAAAMAAUAAAAcAAIAAAAMAAUAAAAcAAMAAAAJAAYAAAAbAAIAAAAMAAUAAAAaAAIAAAAMAAUAAAAZAAIAAAAMAAUAAAAYAAIAAAAMAAUAAAAYAAMAAAAMAAUAAAAYAAQAAAAMAAUAAAAYAAUAAAAMAAUAAAAYAAYAAAAMAAUAAAAYAAcAAAAMAAUAAAAYAAgAAAAMAAYAAAAZAAMAAAAMAAUAAAAZAAQAAAAMAAUAAAAZAAUAAAAMAAUAAAAZAAYAAAAMAAUAAAAZAAcAAAAMAAUAAAAZAAgAAAAMAAYAAAAaAAMAAAAMAAUAAAAaAAQAAAAMAAUAAAAaAAUAAAAMAAUAAAAaAAYAAAAKAAYAAAAaAAcAAAAMAAUAAAAaAAgAAAAMAAYAAAAbAAMAAAAMAAUAAAAbAAQAAAAMAAUAAAAbAAUAAAAMAAUAAAAbAAYAAAAMAAUAAAAbAAcAAAAMAAUAAAAbAAgAAAAMAAYAAAAcAAQAAAAMAAUAAAAcAAUAAAAMAAUAAAAcAAYAAAAMAAUAAAAcAAcAAAAMAAUAAAAcAAgAAAAMAAYAAAAPAP3/AAAQAAYAAAAbAP//AAALAAMAAAAaAP//AAALAAMAAAATAP//AAALAAMAAAAVAP//AAALAAMAAAD6/wcAAAAMAAUAAAD7/wcAAAAMAAUAAAD8/wcAAAAMAAUAAAD9/wcAAAAMAAUAAAD5/wcAAAALAAUAAAD+/wcAAAANAAUAAAD5/wgAAAALAAYAAAD6/wgAAAAMAAYAAAD7/wgAAAAMAAYAAAD8/wgAAAAMAAYAAAD9/wgAAAAMAAYAAAD+/wgAAAANAAYAAAAeAP//AAALAAQAAAAeAAAAAAALAAUAAAAeAAEAAAALAAUAAAAeAAIAAAALAAUAAAAeAAMAAAALAAUAAAAeAAQAAAALAAUAAAAeAAUAAAALAAUAAAAeAAYAAAALAAUAAAAeAAcAAAALAAUAAAAeAAgAAAALAAUAAAAeAAkAAAALAAUAAAAeAAoAAAALAAUAAAAeAAsAAAALAAUAAAAeAAwAAAALAAYAAAAfAP//AAAMAAQAAAAfAAAAAAAMAAUAAAAfAAEAAAAKAAYAAAAfAAIAAAAMAAUAAAAfAAMAAAAMAAUAAAAfAAQAAAAMAAUAAAAfAAUAAAAMAAUAAAAfAAYAAAAMAAUAAAAfAAcAAAAMAAUAAAAfAAgAAAAMAAUAAAAfAAkAAAAMAAUAAAAfAAoAAAAKAAYAAAAfAAsAAAAMAAUAAAAfAAwAAAAMAAYAAAAgAP//AAAMAAQAAAAgAAAAAAAMAAUAAAAgAAEAAAAMAAUAAAAgAAIAAAAJAAYAAAAgAAMAAAAMAAUAAAAgAAQAAAAMAAUAAAAgAAUAAAAMAAUAAAAgAAYAAAAMAAUAAAAgAAcAAAAMAAUAAAAgAAgAAAAMAAUAAAAgAAkAAAAMAAUAAAAgAAoAAAAMAAUAAAAgAAsAAAAMAAUAAAAgAAwAAAAMAAYAAAAhAP//AAAMAAQAAAAhAAAAAAAMAAUAAAAhAAEAAAAMAAUAAAAhAAIAAAAMAAUAAAAhAAMAAAAMAAUAAAAhAAQAAAAMAAUAAAAhAAUAAAAMAAUAAAAhAAYAAAAKAAYAAAAhAAcAAAAMAAUAAAAhAAgAAAAMAAUAAAAhAAkAAAAMAAUAAAAhAAoAAAAMAAUAAAAhAAsAAAAMAAUAAAAhAAwAAAAMAAYAAAAiAP//AAAMAAQAAAAiAAAAAAAMAAUAAAAiAAEAAAAMAAUAAAAiAAIAAAAMAAUAAAAiAAMAAAAMAAUAAAAiAAQAAAAMAAUAAAAiAAUAAAAMAAUAAAAiAAYAAAAMAAUAAAAiAAcAAAAMAAUAAAAiAAgAAAAKAAYAAAAiAAkAAAAKAAYAAAAiAAoAAAAMAAUAAAAiAAsAAAAMAAUAAAAiAAwAAAAMAAYAAAAjAP//AAAMAAQAAAAjAAAAAAAMAAUAAAAjAAEAAAAMAAUAAAAjAAIAAAAMAAUAAAAjAAMAAAAMAAUAAAAjAAQAAAAMAAUAAAAjAAUAAAAMAAUAAAAjAAYAAAAMAAUAAAAjAAcAAAAMAAUAAAAjAAgAAAAMAAUAAAAjAAkAAAAMAAUAAAAjAAoAAAAMAAUAAAAjAAsAAAAMAAUAAAAjAAwAAAAMAAYAAAAkAP//AAAMAAQAAAAkAAAAAAAMAAUAAAAkAAEAAAAMAAUAAAAkAAIAAAAJAAYAAAAkAAMAAAAKAAYAAAAkAAQAAAAKAAYAAAAkAAUAAAAMAAUAAAAkAAYAAAAMAAUAAAAkAAcAAAAMAAUAAAAkAAgAAAAMAAUAAAAkAAkAAAAMAAUAAAAkAAoAAAAMAAUAAAAkAAsAAAAKAAYAAAAkAAwAAAAMAAYAAAAlAP//AAAMAAQAAAAlAAAAAAAMAAUAAAAlAAEAAAAMAAUAAAAlAAIAAAAMAAUAAAAlAAMAAAAMAAUAAAAlAAQAAAAMAAUAAAAlAAUAAAAMAAUAAAAlAAYAAAAMAAUAAAAlAAcAAAAMAAUAAAAlAAgAAAAMAAUAAAAlAAkAAAAMAAUAAAAlAAoAAAAMAAUAAAAlAAsAAAAMAAUAAAAlAAwAAAAMAAYAAAAmAP//AAANAAQAAAAmAAAAAAANAAUAAAAmAAEAAAANAAUAAAAmAAIAAAANAAUAAAAmAAMAAAANAAUAAAAmAAQAAAANAAUAAAAmAAUAAAANAAUAAAAmAAYAAAANAAUAAAAmAAcAAAANAAUAAAAmAAgAAAANAAUAAAAmAAkAAAANAAUAAAAmAAoAAAANAAUAAAAmAAsAAAANAAUAAAAmAAwAAAANAAYAAAAnAP7/AAALAAQAAAAnAP//AAALAAUAAAAnAAAAAAALAAUAAAAnAAEAAAALAAUAAAAnAAIAAAALAAUAAAAnAAMAAAALAAUAAAAnAAQAAAALAAUAAAAnAAUAAAALAAUAAAAnAAYAAAALAAUAAAAnAAcAAAALAAUAAAAnAAgAAAALAAUAAAAnAAkAAAALAAUAAAAnAAoAAAALAAUAAAAnAAsAAAALAAYAAAAoAP7/AAAMAAQAAAAoAP//AAAMAAUAAAAoAAAAAAAKAAYAAAAoAAEAAAAMAAUAAAAoAAIAAAAMAAUAAAAoAAMAAAAMAAUAAAAoAAQAAAAMAAUAAAAoAAUAAAAMAAUAAAAoAAYAAAAMAAUAAAAoAAcAAAAMAAUAAAAoAAgAAAAMAAUAAAAoAAkAAAAKAAYAAAAoAAoAAAAMAAUAAAAoAAsAAAAMAAYAAAApAP7/AAAMAAQAAAApAP//AAAMAAUAAAApAAAAAAAMAAUAAAApAAEAAAAMAAUAAAApAAIAAAAMAAUAAAApAAMAAAAMAAUAAAApAAQAAAAMAAUAAAApAAUAAAAMAAUAAAApAAYAAAAMAAUAAAApAAcAAAAMAAUAAAApAAgAAAAMAAUAAAApAAkAAAAMAAUAAAApAAoAAAAMAAUAAAApAAsAAAAMAAYAAAAqAP7/AAAMAAQAAAAqAP//AAAMAAUAAAAqAAAAAAAMAAUAAAAqAAEAAAAJAAYAAAAqAAIAAAAKAAYAAAAqAAMAAAAKAAYAAAAqAAQAAAAMAAUAAAAqAAUAAAAMAAUAAAAqAAYAAAAMAAUAAAAqAAcAAAAMAAUAAAAqAAgAAAAMAAUAAAAqAAkAAAAMAAUAAAAqAAoAAAAKAAYAAAAqAAsAAAAMAAYAAAArAPb/AAALAAQAAAArAPf/AAALAAUAAAArAPj/AAALAAUAAAArAPn/AAALAAUAAAArAPr/AAALAAUAAAArAPv/AAALAAUAAAArAPz/AAALAAUAAAArAP3/AAALAAYAAAAsAPb/AAAMAAQAAAAsAPf/AAAMAAUAAAAsAPj/AAAKAAYAAAAsAPn/AAAMAAUAAAAsAPr/AAAMAAUAAAAsAPv/AAAMAAUAAAAsAPz/AAAMAAUAAAAsAP3/AAAMAAYAAAAtAPb/AAAMAAQAAAAtAPf/AAAMAAUAAAAtAPj/AAAMAAUAAAAtAPn/AAAJAAYAAAAtAPr/AAAMAAUAAAAtAPv/AAAMAAUAAAAtAPz/AAAMAAUAAAAtAP3/AAAMAAYAAAAuAPb/AAAMAAQAAAAuAPf/AAAMAAUAAAAuAPj/AAAMAAUAAAAuAPn/AAAMAAUAAAAuAPr/AAAMAAUAAAAuAPv/AAAMAAUAAAAuAPz/AAAMAAUAAAAuAP3/AAAMAAYAAAAvAPb/AAAMAAQAAAAvAPf/AAAMAAUAAAAvAPj/AAAMAAUAAAAvAPn/AAAMAAUAAAAvAPr/AAAMAAUAAAAvAPv/AAAMAAUAAAAvAPz/AAAMAAUAAAAvAP3/AAAMAAYAAAAwAPb/AAAMAAQAAAAwAPf/AAAMAAUAAAAwAPj/AAAMAAUAAAAwAPn/AAAMAAUAAAAwAPr/AAAMAAUAAAAwAPv/AAAMAAUAAAAwAPz/AAAMAAUAAAAwAP3/AAAMAAYAAAAxAPb/AAAMAAQAAAAxAPf/AAAMAAUAAAAxAPj/AAAMAAUAAAAxAPn/AAAMAAUAAAAxAPr/AAAMAAUAAAAxAPv/AAAMAAUAAAAxAPz/AAAMAAUAAAAxAP3/AAAMAAYAAAAyAPb/AAAMAAQAAAAyAPf/AAAMAAUAAAAyAPj/AAAMAAUAAAAyAPn/AAAMAAUAAAAyAPr/AAAMAAUAAAAyAPv/AAAMAAUAAAAyAPz/AAAMAAUAAAAyAP3/AAAMAAUAAAArAP7/AAANAAQAAAArAP//AAANAAUAAAArAAAAAAANAAUAAAArAAEAAAANAAUAAAArAAIAAAANAAUAAAArAAMAAAANAAUAAAArAAQAAAANAAUAAAArAAUAAAANAAUAAAArAAYAAAANAAUAAAArAAcAAAANAAUAAAArAAgAAAANAAUAAAArAAkAAAANAAUAAAArAAoAAAANAAUAAAArAAsAAAANAAYAAAA=")
+tile_set = SubResource("TileSet_eyojy")
[node name="UI" type="CanvasLayer" parent="."]
visible = false
[node name="Camera2D" type="Camera2D" parent="."]
-position = Vector2(374, -216)
+physics_interpolation_mode = 1
+position = Vector2(374, -190)
zoom = Vector2(1.5, 1.5)
+process_callback = 0
[node name="PhantomCameraHost" type="Node" parent="Camera2D"]
+process_priority = 300
+process_physics_priority = 300
script = ExtResource("4_w0rat")
[node name="Label" type="Label" parent="."]
[node name="PlayerPhantomCamera2D" type="Node2D" parent="." node_paths=PackedStringArray("follow_target", "follow_path")]
unique_name_in_owner = true
-position = Vector2(374, -216)
+top_level = true
+position = Vector2(374, -190)
script = ExtResource("6_y6hoa")
priority = 10
follow_mode = 4
zoom = Vector2(1.5, 1.5)
tween_resource = ExtResource("7_wd55r")
tween_on_load = false
+follow_damping = true
draw_limits = true
[node name="Path2D" type="Path2D" parent="."]
-position = Vector2(152, -216)
+position = Vector2(152, -190)
curve = SubResource("Curve2D_usrhf")
[node name="CharacterBody2D" parent="." instance=ExtResource("8_fy81j")]
-[gd_scene load_steps=17 format=3 uid="uid://0ox7hgdpwpqp"]
+[gd_scene load_steps=17 format=4 uid="uid://0ox7hgdpwpqp"]
[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/2D/2d_room_limit_tween_4.3.gd" id="1_bwr3f"]
[ext_resource type="Texture2D" uid="uid://c77npili4pel4" path="res://addons/phantom_camera/examples/textures/2D/level_spritesheet.png" id="2_f03of"]
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_easgx"]
texture = ExtResource("2_f03of")
0:0/0 = 0
-0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-0:0/0/physics_layer_0/angular_velocity = 0.0
-0:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-0:0/0/physics_layer_1/angular_velocity = 0.0
1:0/0 = 0
-1:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-1:0/0/physics_layer_0/angular_velocity = 0.0
-1:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-1:0/0/physics_layer_1/angular_velocity = 0.0
2:0/0 = 0
-2:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-2:0/0/physics_layer_0/angular_velocity = 0.0
-2:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-2:0/0/physics_layer_1/angular_velocity = 0.0
3:0/0 = 0
-3:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:0/0/physics_layer_0/angular_velocity = 0.0
-3:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:0/0/physics_layer_1/angular_velocity = 0.0
4:0/0 = 0
-4:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:0/0/physics_layer_0/angular_velocity = 0.0
-4:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:0/0/physics_layer_1/angular_velocity = 0.0
5:0/0 = 0
-5:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:0/0/physics_layer_0/angular_velocity = 0.0
-5:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:0/0/physics_layer_1/angular_velocity = 0.0
6:0/0 = 0
-6:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-6:0/0/physics_layer_0/angular_velocity = 0.0
-6:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-6:0/0/physics_layer_1/angular_velocity = 0.0
7:0/0 = 0
-7:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:0/0/physics_layer_0/angular_velocity = 0.0
7:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-7:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:0/0/physics_layer_1/angular_velocity = 0.0
0:1/0 = 0
-0:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-0:1/0/physics_layer_0/angular_velocity = 0.0
-0:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-0:1/0/physics_layer_1/angular_velocity = 0.0
1:1/0 = 0
-1:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-1:1/0/physics_layer_0/angular_velocity = 0.0
-1:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-1:1/0/physics_layer_1/angular_velocity = 0.0
2:1/0 = 0
-2:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-2:1/0/physics_layer_0/angular_velocity = 0.0
-2:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-2:1/0/physics_layer_1/angular_velocity = 0.0
3:1/0 = 0
-3:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:1/0/physics_layer_0/angular_velocity = 0.0
-3:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:1/0/physics_layer_1/angular_velocity = 0.0
4:1/0 = 0
-4:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:1/0/physics_layer_0/angular_velocity = 0.0
-4:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:1/0/physics_layer_1/angular_velocity = 0.0
5:1/0 = 0
-5:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:1/0/physics_layer_0/angular_velocity = 0.0
-5:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:1/0/physics_layer_1/angular_velocity = 0.0
7:1/0 = 0
-7:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:1/0/physics_layer_0/angular_velocity = 0.0
7:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-7:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:1/0/physics_layer_1/angular_velocity = 0.0
2:2/0 = 0
-2:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-2:2/0/physics_layer_0/angular_velocity = 0.0
-2:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-2:2/0/physics_layer_1/angular_velocity = 0.0
3:2/0 = 0
-3:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:2/0/physics_layer_0/angular_velocity = 0.0
-3:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:2/0/physics_layer_1/angular_velocity = 0.0
4:2/0 = 0
-4:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:2/0/physics_layer_0/angular_velocity = 0.0
-4:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:2/0/physics_layer_1/angular_velocity = 0.0
7:2/0 = 0
-7:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:2/0/physics_layer_0/angular_velocity = 0.0
7:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-7:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:2/0/physics_layer_1/angular_velocity = 0.0
3:3/0 = 0
-3:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:3/0/physics_layer_0/angular_velocity = 0.0
-3:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:3/0/physics_layer_1/angular_velocity = 0.0
4:3/0 = 0
-4:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:3/0/physics_layer_0/angular_velocity = 0.0
-4:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:3/0/physics_layer_1/angular_velocity = 0.0
5:3/0 = 0
-5:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:3/0/physics_layer_0/angular_velocity = 0.0
-5:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:3/0/physics_layer_1/angular_velocity = 0.0
7:3/0 = 0
-7:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:3/0/physics_layer_0/angular_velocity = 0.0
7:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-7:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:3/0/physics_layer_1/angular_velocity = 0.0
3:4/0 = 0
-3:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:4/0/physics_layer_0/angular_velocity = 0.0
-3:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:4/0/physics_layer_1/angular_velocity = 0.0
4:4/0 = 0
-4:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:4/0/physics_layer_0/angular_velocity = 0.0
-4:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:4/0/physics_layer_1/angular_velocity = 0.0
5:4/0 = 0
-5:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:4/0/physics_layer_0/angular_velocity = 0.0
-5:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:4/0/physics_layer_1/angular_velocity = 0.0
7:4/0 = 0
-7:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:4/0/physics_layer_0/angular_velocity = 0.0
-7:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:4/0/physics_layer_1/angular_velocity = 0.0
3:5/0 = 0
-3:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:5/0/physics_layer_0/angular_velocity = 0.0
-3:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:5/0/physics_layer_1/angular_velocity = 0.0
4:5/0 = 0
-4:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:5/0/physics_layer_0/angular_velocity = 0.0
-4:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:5/0/physics_layer_1/angular_velocity = 0.0
7:5/0 = 0
-7:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:5/0/physics_layer_0/angular_velocity = 0.0
-7:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:5/0/physics_layer_1/angular_velocity = 0.0
3:6/0 = 0
-3:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:6/0/physics_layer_0/angular_velocity = 0.0
-3:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:6/0/physics_layer_1/angular_velocity = 0.0
4:6/0 = 0
-4:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:6/0/physics_layer_0/angular_velocity = 0.0
-4:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:6/0/physics_layer_1/angular_velocity = 0.0
7:6/0 = 0
-7:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:6/0/physics_layer_0/angular_velocity = 0.0
-7:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:6/0/physics_layer_1/angular_velocity = 0.0
2:7/0 = 0
-2:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-2:7/0/physics_layer_0/angular_velocity = 0.0
-2:7/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-2:7/0/physics_layer_1/angular_velocity = 0.0
3:7/0 = 0
-3:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:7/0/physics_layer_0/angular_velocity = 0.0
-3:7/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:7/0/physics_layer_1/angular_velocity = 0.0
4:7/0 = 0
-4:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:7/0/physics_layer_0/angular_velocity = 0.0
-4:7/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:7/0/physics_layer_1/angular_velocity = 0.0
5:7/0 = 0
-5:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:7/0/physics_layer_0/angular_velocity = 0.0
-5:7/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:7/0/physics_layer_1/angular_velocity = 0.0
8:0/0 = 0
-8:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:0/0/physics_layer_0/angular_velocity = 0.0
8:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-8:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:0/0/physics_layer_1/angular_velocity = 0.0
9:0/0 = 0
-9:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:0/0/physics_layer_0/angular_velocity = 0.0
9:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-9:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:0/0/physics_layer_1/angular_velocity = 0.0
10:0/0 = 0
-10:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:0/0/physics_layer_0/angular_velocity = 0.0
10:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-10:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:0/0/physics_layer_1/angular_velocity = 0.0
11:0/0 = 0
-11:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:0/0/physics_layer_0/angular_velocity = 0.0
11:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-11:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:0/0/physics_layer_1/angular_velocity = 0.0
12:0/0 = 0
-12:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:0/0/physics_layer_0/angular_velocity = 0.0
12:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:0/0/physics_layer_1/angular_velocity = 0.0
13:0/0 = 0
-13:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:0/0/physics_layer_0/angular_velocity = 0.0
13:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:0/0/physics_layer_1/angular_velocity = 0.0
14:0/0 = 0
-14:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:0/0/physics_layer_0/angular_velocity = 0.0
-14:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:0/0/physics_layer_1/angular_velocity = 0.0
14:0/0/physics_layer_1/polygon_0/points = PackedVector2Array(8, -8, 8, 8, -8, 8)
14:0/0/custom_data_0 = &"Sign"
15:0/0 = 0
-15:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:0/0/physics_layer_0/angular_velocity = 0.0
-15:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:0/0/physics_layer_1/angular_velocity = 0.0
16:0/0 = 0
-16:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:0/0/physics_layer_0/angular_velocity = 0.0
-16:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:0/0/physics_layer_1/angular_velocity = 0.0
8:1/0 = 0
-8:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:1/0/physics_layer_0/angular_velocity = 0.0
8:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-8:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:1/0/physics_layer_1/angular_velocity = 0.0
9:1/0 = 0
-9:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:1/0/physics_layer_0/angular_velocity = 0.0
9:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-9:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:1/0/physics_layer_1/angular_velocity = 0.0
10:1/0 = 0
-10:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:1/0/physics_layer_0/angular_velocity = 0.0
10:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-10:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:1/0/physics_layer_1/angular_velocity = 0.0
11:1/0 = 0
-11:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:1/0/physics_layer_0/angular_velocity = 0.0
11:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-11:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:1/0/physics_layer_1/angular_velocity = 0.0
12:1/0 = 0
-12:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:1/0/physics_layer_0/angular_velocity = 0.0
12:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:1/0/physics_layer_1/angular_velocity = 0.0
13:1/0 = 0
-13:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:1/0/physics_layer_0/angular_velocity = 0.0
13:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:1/0/physics_layer_1/angular_velocity = 0.0
14:1/0 = 0
-14:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:1/0/physics_layer_0/angular_velocity = 0.0
-14:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:1/0/physics_layer_1/angular_velocity = 0.0
15:1/0 = 0
-15:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:1/0/physics_layer_0/angular_velocity = 0.0
-15:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:1/0/physics_layer_1/angular_velocity = 0.0
16:1/0 = 0
-16:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:1/0/physics_layer_0/angular_velocity = 0.0
-16:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:1/0/physics_layer_1/angular_velocity = 0.0
8:2/0 = 0
-8:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:2/0/physics_layer_0/angular_velocity = 0.0
8:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-8:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:2/0/physics_layer_1/angular_velocity = 0.0
9:2/0 = 0
-9:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:2/0/physics_layer_0/angular_velocity = 0.0
9:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-9:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:2/0/physics_layer_1/angular_velocity = 0.0
10:2/0 = 0
-10:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:2/0/physics_layer_0/angular_velocity = 0.0
10:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-10:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:2/0/physics_layer_1/angular_velocity = 0.0
11:2/0 = 0
-11:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:2/0/physics_layer_0/angular_velocity = 0.0
11:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-11:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:2/0/physics_layer_1/angular_velocity = 0.0
12:2/0 = 0
-12:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:2/0/physics_layer_0/angular_velocity = 0.0
12:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:2/0/physics_layer_1/angular_velocity = 0.0
13:2/0 = 0
-13:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:2/0/physics_layer_0/angular_velocity = 0.0
13:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:2/0/physics_layer_1/angular_velocity = 0.0
14:2/0 = 0
-14:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:2/0/physics_layer_0/angular_velocity = 0.0
-14:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:2/0/physics_layer_1/angular_velocity = 0.0
15:2/0 = 0
-15:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:2/0/physics_layer_0/angular_velocity = 0.0
-15:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:2/0/physics_layer_1/angular_velocity = 0.0
16:2/0 = 0
-16:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:2/0/physics_layer_0/angular_velocity = 0.0
-16:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:2/0/physics_layer_1/angular_velocity = 0.0
8:3/0 = 0
-8:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:3/0/physics_layer_0/angular_velocity = 0.0
8:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-8:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:3/0/physics_layer_1/angular_velocity = 0.0
9:3/0 = 0
-9:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:3/0/physics_layer_0/angular_velocity = 0.0
9:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-9:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:3/0/physics_layer_1/angular_velocity = 0.0
10:3/0 = 0
-10:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:3/0/physics_layer_0/angular_velocity = 0.0
10:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-10:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:3/0/physics_layer_1/angular_velocity = 0.0
11:3/0 = 0
-11:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:3/0/physics_layer_0/angular_velocity = 0.0
-11:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:3/0/physics_layer_1/angular_velocity = 0.0
12:3/0 = 0
-12:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:3/0/physics_layer_0/angular_velocity = 0.0
12:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:3/0/physics_layer_1/angular_velocity = 0.0
13:3/0 = 0
-13:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:3/0/physics_layer_0/angular_velocity = 0.0
13:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:3/0/physics_layer_1/angular_velocity = 0.0
14:3/0 = 0
-14:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:3/0/physics_layer_0/angular_velocity = 0.0
-14:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:3/0/physics_layer_1/angular_velocity = 0.0
15:3/0 = 0
-15:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:3/0/physics_layer_0/angular_velocity = 0.0
-15:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:3/0/physics_layer_1/angular_velocity = 0.0
16:3/0 = 0
-16:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:3/0/physics_layer_0/angular_velocity = 0.0
-16:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:3/0/physics_layer_1/angular_velocity = 0.0
8:4/0 = 0
-8:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:4/0/physics_layer_0/angular_velocity = 0.0
-8:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:4/0/physics_layer_1/angular_velocity = 0.0
9:4/0 = 0
-9:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:4/0/physics_layer_0/angular_velocity = 0.0
-9:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:4/0/physics_layer_1/angular_velocity = 0.0
10:4/0 = 0
-10:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:4/0/physics_layer_0/angular_velocity = 0.0
-10:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:4/0/physics_layer_1/angular_velocity = 0.0
11:4/0 = 0
-11:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:4/0/physics_layer_0/angular_velocity = 0.0
11:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-7, 2.5, -5, -2, -2.5, -5, 2, -7, 8, -8, 8, 8, -8, 8)
-11:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:4/0/physics_layer_1/angular_velocity = 0.0
12:4/0 = 0
-12:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:4/0/physics_layer_0/angular_velocity = 0.0
12:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:4/0/physics_layer_1/angular_velocity = 0.0
13:4/0 = 0
-13:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:4/0/physics_layer_0/angular_velocity = 0.0
13:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 0, -6, 4, -1.5, 6.5, 1.5, 8, 8, -8, 8)
-13:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:4/0/physics_layer_1/angular_velocity = 0.0
14:4/0 = 0
-14:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:4/0/physics_layer_0/angular_velocity = 0.0
-14:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:4/0/physics_layer_1/angular_velocity = 0.0
14:4/0/physics_layer_1/polygon_0/points = PackedVector2Array(-8, -8, -8, 8, 8, 8, 8, -8)
14:4/0/custom_data_0 = &"Inventory"
15:4/0 = 0
-15:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:4/0/physics_layer_0/angular_velocity = 0.0
-15:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:4/0/physics_layer_1/angular_velocity = 0.0
16:4/0 = 0
-16:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:4/0/physics_layer_0/angular_velocity = 0.0
-16:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:4/0/physics_layer_1/angular_velocity = 0.0
8:5/0 = 0
-8:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:5/0/physics_layer_0/angular_velocity = 0.0
-8:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:5/0/physics_layer_1/angular_velocity = 0.0
9:5/0 = 0
-9:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:5/0/physics_layer_0/angular_velocity = 0.0
-9:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:5/0/physics_layer_1/angular_velocity = 0.0
10:5/0 = 0
-10:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:5/0/physics_layer_0/angular_velocity = 0.0
-10:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:5/0/physics_layer_1/angular_velocity = 0.0
11:5/0 = 0
-11:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:5/0/physics_layer_0/angular_velocity = 0.0
11:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-11:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:5/0/physics_layer_1/angular_velocity = 0.0
12:5/0 = 0
-12:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:5/0/physics_layer_0/angular_velocity = 0.0
12:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:5/0/physics_layer_1/angular_velocity = 0.0
13:5/0 = 0
-13:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:5/0/physics_layer_0/angular_velocity = 0.0
13:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:5/0/physics_layer_1/angular_velocity = 0.0
14:5/0 = 0
-14:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:5/0/physics_layer_0/angular_velocity = 0.0
-14:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:5/0/physics_layer_1/angular_velocity = 0.0
15:5/0 = 0
-15:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:5/0/physics_layer_0/angular_velocity = 0.0
-15:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:5/0/physics_layer_1/angular_velocity = 0.0
16:5/0 = 0
-16:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:5/0/physics_layer_0/angular_velocity = 0.0
-16:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:5/0/physics_layer_1/angular_velocity = 0.0
8:6/0 = 0
-8:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:6/0/physics_layer_0/angular_velocity = 0.0
-8:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:6/0/physics_layer_1/angular_velocity = 0.0
9:6/0 = 0
-9:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:6/0/physics_layer_0/angular_velocity = 0.0
-9:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:6/0/physics_layer_1/angular_velocity = 0.0
10:6/0 = 0
-10:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:6/0/physics_layer_0/angular_velocity = 0.0
-10:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:6/0/physics_layer_1/angular_velocity = 0.0
11:6/0 = 0
-11:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:6/0/physics_layer_0/angular_velocity = 0.0
11:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, 1, 6.5, -3, 3, -6.5, -1.5)
-11:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:6/0/physics_layer_1/angular_velocity = 0.0
12:6/0 = 0
-12:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:6/0/physics_layer_0/angular_velocity = 0.0
12:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:6/0/physics_layer_1/angular_velocity = 0.0
13:6/0 = 0
-13:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:6/0/physics_layer_0/angular_velocity = 0.0
13:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 6, -0.5, 3, 3.5, -1.5, 6.5, -8, 8)
-13:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:6/0/physics_layer_1/angular_velocity = 0.0
14:6/0 = 0
-14:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:6/0/physics_layer_0/angular_velocity = 0.0
-14:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:6/0/physics_layer_1/angular_velocity = 0.0
15:6/0 = 0
-15:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:6/0/physics_layer_0/angular_velocity = 0.0
-15:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:6/0/physics_layer_1/angular_velocity = 0.0
16:6/0 = 0
-16:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:6/0/physics_layer_0/angular_velocity = 0.0
-16:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:6/0/physics_layer_1/angular_velocity = 0.0
[sub_resource type="TileSet" id="TileSet_kf7eg"]
physics_layer_0/collision_layer = 1
layer = -3
[node name="ColorRect" type="ColorRect" parent="Background"]
+auto_translate_mode = 2
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_bottom = 548.0
grow_horizontal = 2
grow_vertical = 2
-auto_translate = false
localize_numeral_system = false
color = Color(0.137255, 0.14902, 0.196078, 1)
metadata/_edit_lock_ = true
-[node name="TileMap" type="TileMap" parent="."]
-z_index = -1
+[node name="StartingTerrain" type="TileMapLayer" parent="."]
+z_index = 1
+use_parent_material = true
position = Vector2(-97, 0)
scale = Vector2(3, 3)
+tile_map_data = PackedByteArray("AAD9/wAAAAALAAAAAAD+/wAAAAALAAAAAAD//wAAAAALAAAAAAAAAAAAAAALAAAAAAABAAAAAAALAAAAAAACAAAAAAALAAAAAAADAAAAAAALAAAAAAAEAAAAAAALAAAAAAAFAAAAAAALAAAAAAAGAAAAAAALAAAAAAAHAAAAAAALAAAAAAAIAAAAAAALAAAAAAAJAAAAAAAMAAAAAAD8/wAAAAALAAAAAAD7/wAAAAAKAAAAAAD7/wEAAAAKAAEAAAD7/wIAAAAKAAEAAAD7/wMAAAAKAAEAAAD7/wQAAAAKAAEAAAD7/wUAAAAKAAEAAAD8/wEAAAALAAEAAAD8/wIAAAALAAEAAAD8/wMAAAALAAEAAAD8/wQAAAALAAEAAAD8/wUAAAALAAEAAAD9/wEAAAALAAEAAAD9/wIAAAALAAEAAAD9/wMAAAALAAEAAAD9/wQAAAALAAEAAAD9/wUAAAALAAEAAAD+/wEAAAALAAEAAAD+/wIAAAALAAEAAAD+/wMAAAALAAEAAAD+/wQAAAALAAEAAAD+/wUAAAALAAEAAAD//wEAAAALAAEAAAD//wIAAAALAAEAAAD//wMAAAALAAEAAAD//wQAAAALAAEAAAD//wUAAAALAAEAAAAAAAEAAAALAAEAAAAAAAIAAAALAAEAAAAAAAMAAAALAAEAAAAAAAQAAAALAAEAAAAAAAUAAAALAAEAAAABAAEAAAALAAEAAAABAAIAAAALAAEAAAABAAMAAAALAAEAAAABAAQAAAALAAEAAAABAAUAAAALAAEAAAACAAEAAAALAAEAAAACAAIAAAALAAEAAAACAAMAAAALAAEAAAACAAQAAAALAAEAAAACAAUAAAALAAEAAAADAAEAAAALAAEAAAADAAIAAAALAAEAAAADAAMAAAALAAEAAAADAAQAAAALAAEAAAADAAUAAAALAAEAAAAEAAEAAAALAAEAAAAEAAIAAAALAAEAAAAEAAMAAAALAAEAAAAEAAQAAAALAAEAAAAEAAUAAAALAAEAAAAFAAEAAAALAAEAAAAFAAIAAAALAAEAAAAFAAMAAAALAAEAAAAFAAQAAAALAAEAAAAFAAUAAAALAAEAAAAGAAEAAAALAAEAAAAGAAIAAAALAAEAAAAGAAMAAAALAAEAAAAGAAQAAAALAAEAAAAGAAUAAAALAAEAAAAHAAEAAAALAAEAAAAHAAIAAAALAAEAAAAHAAMAAAALAAEAAAAHAAQAAAALAAEAAAAHAAUAAAALAAEAAAAIAAEAAAALAAEAAAAIAAIAAAALAAEAAAAIAAMAAAALAAEAAAAIAAQAAAALAAEAAAAIAAUAAAALAAEAAAAJAAEAAAAMAAEAAAAJAAIAAAAMAAEAAAAJAAMAAAAMAAEAAAAJAAQAAAAMAAEAAAAJAAUAAAAMAAEAAAD7//n/AAALAAYAAAD7//j/AAALAAUAAAD7//f/AAALAAUAAAD7//b/AAALAAUAAAD7//X/AAALAAQAAAD8//n/AAAMAAYAAAD9//n/AAAMAAYAAAD+//n/AAAMAAYAAAD///n/AAAMAAYAAAAAAPn/AAAMAAYAAAABAPn/AAAMAAYAAAACAPn/AAAMAAYAAAADAPn/AAAMAAYAAAAEAPn/AAAMAAYAAAAFAPn/AAAMAAYAAAAGAPn/AAAMAAYAAAAHAPn/AAAMAAYAAAAIAPn/AAAMAAYAAAD8//X/AAAMAAQAAAD9//X/AAAMAAQAAAD+//X/AAAMAAQAAAD///X/AAAMAAQAAAAAAPX/AAAMAAQAAAABAPX/AAAMAAQAAAACAPX/AAAMAAQAAAADAPX/AAAMAAQAAAAEAPX/AAAMAAQAAAAFAPX/AAAMAAQAAAAGAPX/AAAMAAQAAAAHAPX/AAAMAAQAAAAIAPX/AAAMAAQAAAAJAPX/AAANAAQAAAAJAPb/AAANAAUAAAAJAPf/AAANAAUAAAAJAPj/AAANAAUAAAAJAPn/AAANAAYAAAD8//b/AAAMAAUAAAD8//f/AAAMAAUAAAD8//j/AAAMAAUAAAD9//b/AAAMAAUAAAD9//f/AAAMAAUAAAD9//j/AAAMAAUAAAD+//b/AAAMAAUAAAD+//f/AAAMAAUAAAD+//j/AAAMAAUAAAD///b/AAAMAAUAAAD///f/AAAMAAUAAAD///j/AAAMAAUAAAAAAPb/AAAMAAUAAAAAAPf/AAAMAAUAAAAAAPj/AAAMAAUAAAABAPb/AAAMAAUAAAABAPf/AAAMAAUAAAABAPj/AAAMAAUAAAACAPb/AAAMAAUAAAACAPf/AAAMAAUAAAACAPj/AAAMAAUAAAADAPb/AAAMAAUAAAADAPf/AAAMAAUAAAADAPj/AAAMAAUAAAAEAPb/AAAMAAUAAAAEAPf/AAAMAAUAAAAEAPj/AAAMAAUAAAAFAPb/AAAMAAUAAAAFAPf/AAAMAAUAAAAFAPj/AAAMAAUAAAAGAPb/AAAMAAUAAAAGAPf/AAAMAAUAAAAGAPj/AAAMAAUAAAAHAPb/AAAMAAUAAAAHAPf/AAAMAAUAAAAHAPj/AAAMAAUAAAAIAPb/AAAMAAUAAAAIAPf/AAAMAAUAAAAIAPj/AAAMAAUAAAA=")
tile_set = SubResource("TileSet_kf7eg")
-format = 2
-layer_0/name = "Background"
-layer_0/tile_data = PackedInt32Array(-458743, 851968, 6, -458744, 786432, 6, -458745, 786432, 6, -458746, 786432, 6, -458747, 786432, 6, -458748, 786432, 6, -458749, 786432, 6, -458750, 786432, 6, -458751, 786432, 6, -393218, 786432, 6, -393219, 786432, 6, -393220, 786432, 6, -393221, 720896, 6, -458752, 786432, 6, -393217, 786432, 6, -524279, 851968, 5, -589815, 851968, 5, -655351, 851968, 5, -720887, 851968, 4, -720888, 786432, 4, -720889, 786432, 4, -720890, 786432, 4, -720891, 786432, 4, -720892, 786432, 4, -720893, 786432, 4, -720894, 786432, 4, -720895, 786432, 4, -720896, 786432, 4, -655361, 786432, 4, -655362, 786432, 4, -655363, 786432, 4, -655364, 786432, 4, -655365, 720896, 4, -589829, 720896, 5, -524293, 720896, 5, -458757, 720896, 5, -589828, 786432, 5, -524292, 786432, 5, -458756, 786432, 5, -589827, 786432, 5, -524291, 786432, 5, -458755, 786432, 5, -589826, 786432, 5, -524290, 786432, 5, -458754, 786432, 5, -589825, 786432, 5, -524289, 786432, 5, -458753, 786432, 5, -655360, 786432, 5, -589824, 786432, 5, -524288, 786432, 5, -655359, 786432, 5, -589823, 786432, 5, -524287, 786432, 5, -655358, 786432, 5, -589822, 786432, 5, -524286, 786432, 5, -655357, 786432, 5, -589821, 786432, 5, -524285, 786432, 5, -655356, 786432, 5, -589820, 786432, 5, -524284, 786432, 5, -655355, 786432, 5, -589819, 786432, 5, -524283, 786432, 5, -655354, 786432, 5, -589818, 786432, 5, -524282, 786432, 5, -655353, 786432, 5, -589817, 786432, 5, -524281, 786432, 5, -655352, 786432, 5, -589816, 786432, 5, -524280, 786432, 5)
-layer_1/name = "Terrain"
-layer_1/z_index = 1
-layer_1/tile_data = PackedInt32Array(65533, 720896, 0, 65534, 720896, 0, 65535, 720896, 0, 0, 720896, 0, 1, 720896, 0, 2, 720896, 0, 3, 720896, 0, 4, 720896, 0, 5, 720896, 0, 6, 720896, 0, 7, 720896, 0, 8, 720896, 0, 9, 786432, 0, 65532, 720896, 0, 65531, 655360, 0, 131067, 655360, 1, 196603, 655360, 1, 262139, 655360, 1, 327675, 655360, 1, 393211, 655360, 1, 131068, 720896, 1, 196604, 720896, 1, 262140, 720896, 1, 327676, 720896, 1, 393212, 720896, 1, 131069, 720896, 1, 196605, 720896, 1, 262141, 720896, 1, 327677, 720896, 1, 393213, 720896, 1, 131070, 720896, 1, 196606, 720896, 1, 262142, 720896, 1, 327678, 720896, 1, 393214, 720896, 1, 131071, 720896, 1, 196607, 720896, 1, 262143, 720896, 1, 327679, 720896, 1, 393215, 720896, 1, 65536, 720896, 1, 131072, 720896, 1, 196608, 720896, 1, 262144, 720896, 1, 327680, 720896, 1, 65537, 720896, 1, 131073, 720896, 1, 196609, 720896, 1, 262145, 720896, 1, 327681, 720896, 1, 65538, 720896, 1, 131074, 720896, 1, 196610, 720896, 1, 262146, 720896, 1, 327682, 720896, 1, 65539, 720896, 1, 131075, 720896, 1, 196611, 720896, 1, 262147, 720896, 1, 327683, 720896, 1, 65540, 720896, 1, 131076, 720896, 1, 196612, 720896, 1, 262148, 720896, 1, 327684, 720896, 1, 65541, 720896, 1, 131077, 720896, 1, 196613, 720896, 1, 262149, 720896, 1, 327685, 720896, 1, 65542, 720896, 1, 131078, 720896, 1, 196614, 720896, 1, 262150, 720896, 1, 327686, 720896, 1, 65543, 720896, 1, 131079, 720896, 1, 196615, 720896, 1, 262151, 720896, 1, 327687, 720896, 1, 65544, 720896, 1, 131080, 720896, 1, 196616, 720896, 1, 262152, 720896, 1, 327688, 720896, 1, 65545, 786432, 1, 131081, 786432, 1, 196617, 786432, 1, 262153, 786432, 1, 327689, 786432, 1)
-[node name="TileMap2" type="TileMap" parent="."]
-z_index = -1
+[node name="OtherTerrain" type="TileMapLayer" parent="."]
+z_index = 1
+use_parent_material = true
scale = Vector2(3, 3)
+tile_map_data = PackedByteArray("AAAIAAAAAAAMAAQAAAAJAAAAAAAMAAQAAAAKAAAAAAAMAAQAAAALAAAAAAAMAAQAAAAMAAAAAAAMAAQAAAANAAAAAAAMAAQAAAAOAAAAAAAMAAQAAAD4/wAAAAANAAUAAAD3/wAAAAAMAAUAAAD2/wAAAAAMAAUAAAD1/wAAAAAMAAUAAAD0/wAAAAAMAAUAAADz/wAAAAAMAAUAAAAIAAEAAAAMAAUAAAAIAAIAAAAMAAUAAAAIAAMAAAAMAAUAAAAIAAQAAAAMAAUAAAAJAAEAAAAMAAUAAAAJAAIAAAAMAAUAAAAJAAMAAAAMAAUAAAAJAAQAAAAMAAUAAAAKAAEAAAAMAAUAAAAKAAIAAAAMAAUAAAAKAAMAAAAMAAUAAAAKAAQAAAAMAAUAAAALAAEAAAAMAAUAAAALAAIAAAAMAAUAAAALAAMAAAAMAAUAAAALAAQAAAAMAAUAAAAMAAEAAAAMAAUAAAAMAAIAAAAMAAUAAAAMAAMAAAAMAAUAAAAMAAQAAAAMAAUAAAANAAEAAAAMAAUAAAANAAIAAAAMAAUAAAANAAMAAAAMAAUAAAANAAQAAAAMAAUAAAAOAAEAAAAMAAUAAAAOAAIAAAAMAAUAAAAOAAMAAAAMAAUAAAAOAAQAAAAMAAUAAAAOAAUAAAAMAAUAAAANAAUAAAAMAAUAAAAMAAUAAAAMAAUAAAALAAUAAAAMAAUAAAAKAAUAAAAMAAUAAAAJAAUAAAAMAAUAAAAIAAUAAAAMAAUAAADv//3/AAALAAUAAADv//7/AAALAAUAAADv////AAALAAUAAADv/wAAAAALAAYAAADw//3/AAAMAAUAAADw//7/AAAMAAUAAADw////AAAMAAUAAADw/wAAAAAMAAUAAADx//3/AAAMAAUAAADx//7/AAAMAAUAAADx////AAAMAAUAAADx/wAAAAAMAAUAAADy//3/AAAMAAUAAADy//7/AAAMAAUAAADy////AAAMAAUAAADy/wAAAAAMAAUAAADz//3/AAAMAAUAAADz//7/AAAMAAUAAADz////AAAMAAUAAAD0//3/AAAMAAUAAAD0//7/AAAMAAUAAAD0////AAAMAAUAAAD1//3/AAAMAAUAAAD1//7/AAAMAAUAAAD1////AAAMAAUAAAD2//3/AAAMAAUAAAD2//7/AAAMAAUAAAD2////AAAMAAUAAAD3//3/AAAMAAUAAAD3//7/AAAMAAUAAAD3////AAAMAAUAAAD4//3/AAANAAUAAAD4//7/AAANAAUAAAD4////AAANAAUAAAD4/wEAAAANAAUAAAD4/wIAAAANAAUAAAD4/wMAAAANAAUAAAD4/wQAAAANAAUAAAD4/wUAAAANAAUAAADw/wEAAAAMAAUAAADw/wIAAAAMAAUAAADw/wMAAAAMAAUAAADw/wQAAAAMAAUAAADw/wUAAAAMAAUAAADx/wEAAAAMAAUAAADx/wIAAAAMAAUAAADx/wMAAAAMAAUAAADx/wQAAAAMAAUAAADx/wUAAAAMAAUAAADy/wEAAAAMAAUAAADy/wIAAAAMAAUAAADy/wMAAAAMAAUAAADy/wQAAAAMAAUAAADy/wUAAAAMAAUAAADz/wEAAAAMAAUAAADz/wIAAAAMAAUAAADz/wMAAAAMAAUAAADz/wQAAAAMAAUAAADz/wUAAAAMAAUAAAD0/wEAAAAMAAUAAAD0/wIAAAAMAAUAAAD0/wMAAAAMAAUAAAD0/wQAAAAMAAUAAAD0/wUAAAAMAAUAAAD1/wEAAAAMAAUAAAD1/wIAAAAMAAUAAAD1/wMAAAAMAAUAAAD1/wQAAAAMAAUAAAD1/wUAAAAMAAUAAAD2/wEAAAAMAAUAAAD2/wIAAAAMAAUAAAD2/wMAAAAMAAUAAAD2/wQAAAAMAAUAAAD2/wUAAAAMAAUAAAD3/wEAAAAMAAUAAAD3/wIAAAAMAAUAAAD3/wMAAAAMAAUAAAD3/wQAAAAMAAUAAAD3/wUAAAAMAAUAAAARAAAAAAAMAAQAAAARAAEAAAAMAAUAAAARAAIAAAAMAAUAAAARAAMAAAAMAAUAAAARAAQAAAAMAAUAAAARAAUAAAAMAAUAAAASAAAAAAAMAAQAAAASAAEAAAAMAAUAAAASAAIAAAAMAAUAAAASAAMAAAAMAAUAAAASAAQAAAAMAAUAAAASAAUAAAAMAAUAAAAPAAAAAAAMAAQAAAAPAAEAAAAMAAUAAAAPAAIAAAAMAAUAAAAPAAMAAAAMAAUAAAAPAAQAAAAMAAUAAAAPAAUAAAAMAAUAAAAQAAAAAAAMAAQAAAAQAAEAAAAMAAUAAAAQAAIAAAAMAAUAAAAQAAMAAAAMAAUAAAAQAAQAAAAMAAUAAAAQAAUAAAAMAAUAAAATAAAAAAAMAAQAAAATAAEAAAAMAAUAAAATAAIAAAAMAAUAAAATAAMAAAAMAAUAAAATAAQAAAAMAAUAAAATAAUAAAAMAAUAAADv//j/AAALAAUAAADv//n/AAALAAUAAADw//j/AAAMAAUAAADw//n/AAAMAAUAAADx//j/AAAMAAUAAADx//n/AAAMAAUAAADy//j/AAAMAAUAAADy//n/AAAMAAUAAADz//j/AAAMAAUAAADz//n/AAAMAAUAAAD0//j/AAAMAAUAAAD0//n/AAAMAAUAAAD1//j/AAAMAAUAAAD1//n/AAAMAAUAAAD2//j/AAAMAAUAAAD2//n/AAAMAAUAAAD3//j/AAAMAAUAAAD3//n/AAAMAAUAAAD4//j/AAANAAUAAAD4//n/AAANAAUAAADv//X/AAALAAQAAADv//b/AAALAAUAAADv//f/AAALAAUAAADw//X/AAAMAAQAAADw//b/AAAMAAUAAADw//f/AAAMAAUAAADx//X/AAAMAAQAAADx//b/AAAMAAUAAADx//f/AAAMAAUAAADy//X/AAAMAAQAAADy//b/AAAMAAUAAADy//f/AAAMAAUAAADz//X/AAAMAAQAAADz//b/AAAMAAUAAADz//f/AAAMAAUAAAD0//X/AAAMAAQAAAD0//b/AAAMAAUAAAD0//f/AAAMAAUAAAD1//X/AAAMAAQAAAD1//b/AAAMAAUAAAD1//f/AAAMAAUAAAD2//X/AAAMAAQAAAD2//b/AAAMAAUAAAD2//f/AAAMAAUAAAD3//X/AAAMAAQAAAD3//b/AAAMAAUAAAD3//f/AAAMAAUAAAD4//X/AAANAAQAAAD4//b/AAANAAUAAAD4//f/AAANAAUAAADv//r/AAALAAUAAADw//r/AAAMAAUAAADx//r/AAAMAAUAAADy//r/AAAMAAUAAADz//r/AAAMAAUAAAD0//r/AAAMAAUAAAD1//r/AAAMAAUAAAD2//r/AAAMAAUAAAD3//r/AAAMAAUAAAD4//r/AAANAAUAAADv//v/AAALAAUAAADw//v/AAAMAAUAAADx//v/AAAMAAUAAADy//v/AAAMAAUAAADz//v/AAAMAAUAAAD0//v/AAAMAAUAAAD1//v/AAAMAAUAAAD2//v/AAAMAAUAAAD3//v/AAAMAAUAAAD4//v/AAANAAUAAADv//z/AAALAAUAAADw//z/AAAMAAUAAADx//z/AAAMAAUAAADy//z/AAAMAAUAAADz//z/AAAMAAUAAAD0//z/AAAMAAUAAAD1//z/AAAMAAUAAAD2//z/AAAMAAUAAAD3//z/AAAMAAUAAAD4//z/AAANAAUAAAAUAAAAAAAMAAQAAAAUAAEAAAAMAAUAAAAUAAIAAAAMAAUAAAAUAAMAAAAMAAUAAAAUAAQAAAAMAAUAAAAUAAUAAAAMAAUAAAAVAAAAAAAMAAQAAAAVAAEAAAAMAAUAAAAVAAIAAAAMAAUAAAAVAAMAAAAMAAUAAAAVAAQAAAAMAAUAAAAVAAUAAAAMAAUAAAAWAAAAAAAMAAQAAAAWAAEAAAAMAAUAAAAWAAIAAAAMAAUAAAAWAAMAAAAMAAUAAAAWAAQAAAAMAAUAAAAWAAUAAAAMAAUAAAAXAAAAAAAMAAQAAAAXAAEAAAAMAAUAAAAXAAIAAAAMAAUAAAAXAAMAAAAMAAUAAAAXAAQAAAAMAAUAAAAXAAUAAAAMAAUAAAAYAAAAAAAMAAQAAAAYAAEAAAAMAAUAAAAYAAIAAAAMAAUAAAAYAAMAAAAMAAUAAAAYAAQAAAAMAAUAAAAYAAUAAAAMAAUAAAAZAAAAAAAMAAQAAAAZAAEAAAAMAAUAAAAZAAIAAAAMAAUAAAAZAAMAAAAMAAUAAAAZAAQAAAAMAAUAAAAZAAUAAAAMAAUAAAAaAAAAAAAMAAQAAAAaAAEAAAAMAAUAAAAaAAIAAAAMAAUAAAAaAAMAAAAMAAUAAAAaAAQAAAAMAAUAAAAaAAUAAAAMAAUAAAAbAAAAAAAMAAQAAAAbAAEAAAAMAAUAAAAbAAIAAAAMAAUAAAAbAAMAAAAMAAUAAAAbAAQAAAAMAAUAAAAbAAUAAAAMAAUAAAAmAAAAAAAMAAQAAAAmAAEAAAAMAAUAAAAmAAIAAAAMAAUAAAAmAAMAAAAMAAUAAAAmAAQAAAAMAAUAAAAmAAUAAAAMAAUAAAAnAAAAAAAMAAQAAAAnAAEAAAAMAAUAAAAnAAIAAAAMAAUAAAAnAAMAAAAMAAUAAAAnAAQAAAAMAAUAAAAnAAUAAAAMAAUAAAAoAAAAAAAMAAQAAAAoAAEAAAAMAAUAAAAoAAIAAAAMAAUAAAAoAAMAAAAMAAUAAAAoAAQAAAAMAAUAAAAoAAUAAAAMAAUAAAApAAAAAAAMAAQAAAApAAEAAAAMAAUAAAApAAIAAAAMAAUAAAApAAMAAAAMAAUAAAApAAQAAAAMAAUAAAApAAUAAAAMAAUAAAAqAAAAAAAMAAQAAAAqAAEAAAAMAAUAAAAqAAIAAAAMAAUAAAAqAAMAAAAMAAUAAAAqAAQAAAAMAAUAAAAqAAUAAAAMAAUAAAArAAAAAAAMAAQAAAArAAEAAAAMAAUAAAArAAIAAAAMAAUAAAArAAMAAAAMAAUAAAArAAQAAAAMAAUAAAArAAUAAAAMAAUAAAAsAAAAAAAMAAQAAAAsAAEAAAAMAAUAAAAsAAIAAAAMAAUAAAAsAAMAAAAMAAUAAAAsAAQAAAAMAAUAAAAsAAUAAAAMAAUAAAAtAAAAAAAMAAQAAAAtAAEAAAAMAAUAAAAtAAIAAAAMAAUAAAAtAAMAAAAMAAUAAAAtAAQAAAAMAAUAAAAtAAUAAAAMAAUAAAAuAAAAAAAMAAQAAAAuAAEAAAAMAAUAAAAuAAIAAAAMAAUAAAAuAAMAAAAMAAUAAAAuAAQAAAAMAAUAAAAuAAUAAAAMAAUAAAAvAAAAAAAMAAQAAAAvAAEAAAAMAAUAAAAvAAIAAAAMAAUAAAAvAAMAAAAMAAUAAAAvAAQAAAAMAAUAAAAvAAUAAAAMAAUAAAAwAAAAAAAMAAQAAAAwAAEAAAAMAAUAAAAwAAIAAAAMAAUAAAAwAAMAAAAMAAUAAAAwAAQAAAAMAAUAAAAwAAUAAAAMAAUAAAAxAAAAAAANAAQAAAAxAAEAAAANAAUAAAAxAAIAAAANAAUAAAAxAAMAAAANAAUAAAAxAAQAAAANAAUAAAAxAAUAAAANAAUAAAAyAPf/AAALAAQAAAAyAPj/AAALAAUAAAAyAPn/AAALAAUAAAAyAPr/AAALAAUAAAAyAPv/AAALAAUAAAAyAPz/AAALAAUAAAAyAP3/AAALAAUAAAAyAP7/AAALAAUAAAAyAP//AAALAAUAAAAyAAAAAAALAAUAAAAyAAEAAAALAAUAAAAyAAIAAAALAAUAAAAyAAMAAAALAAUAAAAyAAQAAAALAAUAAAAyAAUAAAALAAUAAAAzAPf/AAAMAAQAAAAzAPj/AAAMAAUAAAAzAPn/AAAMAAUAAAAzAPr/AAAMAAUAAAAzAPv/AAAMAAUAAAAzAPz/AAAMAAUAAAAzAP3/AAAMAAUAAAAzAP7/AAAMAAUAAAAzAP//AAAMAAUAAAAzAAAAAAAMAAUAAAAzAAEAAAAMAAUAAAAzAAIAAAAMAAUAAAAzAAMAAAAMAAUAAAAzAAQAAAAMAAUAAAAzAAUAAAAMAAUAAAA0APf/AAAMAAQAAAA0APj/AAAMAAUAAAA0APn/AAAMAAUAAAA0APr/AAAMAAUAAAA0APv/AAAMAAUAAAA0APz/AAAMAAUAAAA0AP3/AAAMAAUAAAA0AP7/AAAMAAUAAAA0AP//AAAMAAUAAAA0AAAAAAAMAAUAAAA0AAEAAAAMAAUAAAA0AAIAAAAMAAUAAAA0AAMAAAAMAAUAAAA0AAQAAAAMAAUAAAA0AAUAAAAMAAUAAAA1APf/AAAMAAQAAAA1APj/AAAMAAUAAAA1APn/AAAMAAUAAAA1APr/AAAMAAUAAAA1APv/AAAMAAUAAAA1APz/AAAMAAUAAAA1AP3/AAAMAAUAAAA1AP7/AAAMAAUAAAA1AP//AAAMAAUAAAA1AAAAAAAMAAUAAAA1AAEAAAAMAAUAAAA1AAIAAAAMAAUAAAA1AAMAAAAMAAUAAAA1AAQAAAAMAAUAAAA1AAUAAAAMAAUAAAA2APf/AAAMAAQAAAA2APj/AAAMAAUAAAA2APn/AAAMAAUAAAA2APr/AAAMAAUAAAA2APv/AAAMAAUAAAA2APz/AAAMAAUAAAA2AP3/AAAMAAUAAAA2AP7/AAAMAAUAAAA2AP//AAAMAAUAAAA2AAAAAAAMAAUAAAA2AAEAAAAMAAUAAAA2AAIAAAAMAAUAAAA2AAMAAAAMAAUAAAA2AAQAAAAMAAUAAAA2AAUAAAAMAAUAAAA3APf/AAAMAAQAAAA3APj/AAAMAAUAAAA3APn/AAAMAAUAAAA3APr/AAAMAAUAAAA3APv/AAAMAAUAAAA3APz/AAAMAAUAAAA3AP3/AAAMAAUAAAA3AP7/AAAMAAUAAAA3AP//AAAMAAUAAAA3AAAAAAAMAAUAAAA3AAEAAAAMAAUAAAA3AAIAAAAMAAUAAAA3AAMAAAAMAAUAAAA3AAQAAAAMAAUAAAA3AAUAAAAMAAUAAAA4APf/AAAMAAQAAAA4APj/AAAMAAUAAAA4APn/AAAMAAUAAAA4APr/AAAMAAUAAAA4APv/AAAMAAUAAAA4APz/AAAMAAUAAAA4AP3/AAAMAAUAAAA4AP7/AAAMAAUAAAA4AP//AAAMAAUAAAA4AAAAAAAMAAUAAAA4AAEAAAAMAAUAAAA4AAIAAAAMAAUAAAA4AAMAAAAMAAUAAAA4AAQAAAAMAAUAAAA4AAUAAAAMAAUAAAA5APf/AAAMAAQAAAA5APj/AAAMAAUAAAA5APn/AAAMAAUAAAA5APr/AAAMAAUAAAA5APv/AAAMAAUAAAA5APz/AAAMAAUAAAA5AP3/AAAMAAUAAAA5AP7/AAAMAAUAAAA5AP//AAAMAAUAAAA5AAAAAAAMAAUAAAA5AAEAAAAMAAUAAAA5AAIAAAAMAAUAAAA5AAMAAAAMAAUAAAA5AAQAAAAMAAUAAAA5AAUAAAAMAAUAAAA6APf/AAAMAAQAAAA6APj/AAAMAAUAAAA6APn/AAAMAAUAAAA6APr/AAAMAAUAAAA6APv/AAAMAAUAAAA6APz/AAAMAAUAAAA6AP3/AAAMAAUAAAA6AP7/AAAMAAUAAAA6AP//AAAMAAUAAAA6AAAAAAAMAAUAAAA6AAEAAAAMAAUAAAA6AAIAAAAMAAUAAAA6AAMAAAAMAAUAAAA6AAQAAAAMAAUAAAA6AAUAAAAMAAUAAAA7APf/AAANAAQAAAA7APj/AAANAAUAAAA7APn/AAANAAUAAAA7APr/AAANAAUAAAA7APv/AAANAAUAAAA7APz/AAANAAUAAAA7AP3/AAANAAUAAAA7AP7/AAANAAUAAAA7AP//AAANAAUAAAA7AAAAAAANAAUAAAA7AAEAAAANAAUAAAA7AAIAAAANAAUAAAA7AAMAAAANAAUAAAA7AAQAAAANAAUAAAA7AAUAAAANAAUAAAAcAAAAAAAMAAQAAAAcAAEAAAAMAAUAAAAcAAIAAAAMAAUAAAAcAAMAAAAMAAUAAAAcAAQAAAAMAAUAAAAcAAUAAAAMAAUAAAAdAAAAAAAMAAQAAAAdAAEAAAAMAAUAAAAdAAIAAAAMAAUAAAAdAAMAAAAMAAUAAAAdAAQAAAAMAAUAAAAdAAUAAAAMAAUAAAAeAAAAAAAMAAQAAAAeAAEAAAAMAAUAAAAeAAIAAAAMAAUAAAAeAAMAAAAMAAUAAAAeAAQAAAAMAAUAAAAeAAUAAAAMAAUAAAAfAAAAAAAMAAQAAAAfAAEAAAAMAAUAAAAfAAIAAAAMAAUAAAAfAAMAAAAMAAUAAAAfAAQAAAAMAAUAAAAfAAUAAAAMAAUAAAAgAAAAAAAMAAQAAAAgAAEAAAAMAAUAAAAgAAIAAAAMAAUAAAAgAAMAAAAMAAUAAAAgAAQAAAAMAAUAAAAgAAUAAAAMAAUAAAAhAAAAAAAMAAQAAAAhAAEAAAAMAAUAAAAhAAIAAAAMAAUAAAAhAAMAAAAMAAUAAAAhAAQAAAAMAAUAAAAhAAUAAAAMAAUAAAAiAAAAAAAMAAQAAAAiAAEAAAAMAAUAAAAiAAIAAAAMAAUAAAAiAAMAAAAMAAUAAAAiAAQAAAAMAAUAAAAiAAUAAAAMAAUAAAAjAAAAAAAMAAQAAAAjAAEAAAAMAAUAAAAjAAIAAAAMAAUAAAAjAAMAAAAMAAUAAAAjAAQAAAAMAAUAAAAjAAUAAAAMAAUAAAAkAAAAAAAMAAQAAAAkAAEAAAAMAAUAAAAkAAIAAAAMAAUAAAAkAAMAAAAMAAUAAAAkAAQAAAAMAAUAAAAkAAUAAAAMAAUAAAAlAAAAAAAMAAQAAAAlAAEAAAAMAAUAAAAlAAIAAAAMAAUAAAAlAAMAAAAMAAUAAAAlAAQAAAAMAAUAAAAlAAUAAAAMAAUAAAAmAP//AAAOAAMAAAAnAP//AAAPAAMAAAAoAP//AAAPAAMAAAApAP//AAAPAAMAAAAqAP//AAAPAAMAAAArAP//AAAPAAMAAAAsAP//AAAPAAMAAAAtAP//AAAPAAMAAAAuAP//AAAPAAMAAAAvAP//AAAPAAMAAAAwAP//AAAQAAMAAAAxAPf/AAAHAAQAAAAxAPj/AAAHAAUAAAAxAPn/AAAHAAUAAAAxAPr/AAAHAAUAAAAxAPv/AAAHAAUAAAAxAPz/AAAHAAUAAAAxAP3/AAAHAAUAAAAxAP7/AAAHAAUAAAAxAP//AAAHAAYAAAA=")
tile_set = SubResource("TileSet_kf7eg")
-format = 2
-layer_0/name = "Background"
-layer_1/name = "Terrain"
-layer_1/z_index = 1
-layer_1/tile_data = PackedInt32Array(8, 786432, 4, 9, 786432, 4, 10, 786432, 4, 11, 786432, 4, 12, 786432, 4, 13, 786432, 4, 14, 786432, 4, 65528, 851968, 5, 65527, 786432, 5, 65526, 786432, 5, 65525, 786432, 5, 65524, 786432, 5, 65523, 786432, 5, 65544, 786432, 5, 131080, 786432, 5, 196616, 786432, 5, 262152, 786432, 5, 65545, 786432, 5, 131081, 786432, 5, 196617, 786432, 5, 262153, 786432, 5, 65546, 786432, 5, 131082, 786432, 5, 196618, 786432, 5, 262154, 786432, 5, 65547, 786432, 5, 131083, 786432, 5, 196619, 786432, 5, 262155, 786432, 5, 65548, 786432, 5, 131084, 786432, 5, 196620, 786432, 5, 262156, 786432, 5, 65549, 786432, 5, 131085, 786432, 5, 196621, 786432, 5, 262157, 786432, 5, 65550, 786432, 5, 131086, 786432, 5, 196622, 786432, 5, 262158, 786432, 5, 327694, 786432, 5, 327693, 786432, 5, 327692, 786432, 5, 327691, 786432, 5, 327690, 786432, 5, 327689, 786432, 5, 327688, 786432, 5, -131089, 720896, 5, -65553, 720896, 5, -17, 720896, 5, 65519, 720896, 6, -131088, 786432, 5, -65552, 786432, 5, -16, 786432, 5, 65520, 786432, 5, -131087, 786432, 5, -65551, 786432, 5, -15, 786432, 5, 65521, 786432, 5, -131086, 786432, 5, -65550, 786432, 5, -14, 786432, 5, 65522, 786432, 5, -131085, 786432, 5, -65549, 786432, 5, -13, 786432, 5, -131084, 786432, 5, -65548, 786432, 5, -12, 786432, 5, -131083, 786432, 5, -65547, 786432, 5, -11, 786432, 5, -131082, 786432, 5, -65546, 786432, 5, -10, 786432, 5, -131081, 786432, 5, -65545, 786432, 5, -9, 786432, 5, -131080, 851968, 5, -65544, 851968, 5, -8, 851968, 5, 131064, 851968, 5, 196600, 851968, 5, 262136, 851968, 5, 327672, 851968, 5, 393208, 851968, 5, 131056, 786432, 5, 196592, 786432, 5, 262128, 786432, 5, 327664, 786432, 5, 393200, 786432, 5, 131057, 786432, 5, 196593, 786432, 5, 262129, 786432, 5, 327665, 786432, 5, 393201, 786432, 5, 131058, 786432, 5, 196594, 786432, 5, 262130, 786432, 5, 327666, 786432, 5, 393202, 786432, 5, 131059, 786432, 5, 196595, 786432, 5, 262131, 786432, 5, 327667, 786432, 5, 393203, 786432, 5, 131060, 786432, 5, 196596, 786432, 5, 262132, 786432, 5, 327668, 786432, 5, 393204, 786432, 5, 131061, 786432, 5, 196597, 786432, 5, 262133, 786432, 5, 327669, 786432, 5, 393205, 786432, 5, 131062, 786432, 5, 196598, 786432, 5, 262134, 786432, 5, 327670, 786432, 5, 393206, 786432, 5, 131063, 786432, 5, 196599, 786432, 5, 262135, 786432, 5, 327671, 786432, 5, 393207, 786432, 5, 17, 786432, 4, 65553, 786432, 5, 131089, 786432, 5, 196625, 786432, 5, 262161, 786432, 5, 327697, 786432, 5, 18, 786432, 4, 65554, 786432, 5, 131090, 786432, 5, 196626, 786432, 5, 262162, 786432, 5, 327698, 786432, 5, 15, 786432, 4, 65551, 786432, 5, 131087, 786432, 5, 196623, 786432, 5, 262159, 786432, 5, 327695, 786432, 5, 16, 786432, 4, 65552, 786432, 5, 131088, 786432, 5, 196624, 786432, 5, 262160, 786432, 5, 327696, 786432, 5, 19, 786432, 4, 65555, 786432, 5, 131091, 786432, 5, 196627, 786432, 5, 262163, 786432, 5, 327699, 786432, 5, -458769, 720896, 5, -393233, 720896, 5, -458768, 786432, 5, -393232, 786432, 5, -458767, 786432, 5, -393231, 786432, 5, -458766, 786432, 5, -393230, 786432, 5, -458765, 786432, 5, -393229, 786432, 5, -458764, 786432, 5, -393228, 786432, 5, -458763, 786432, 5, -393227, 786432, 5, -458762, 786432, 5, -393226, 786432, 5, -458761, 786432, 5, -393225, 786432, 5, -458760, 851968, 5, -393224, 851968, 5, -655377, 720896, 4, -589841, 720896, 5, -524305, 720896, 5, -655376, 786432, 4, -589840, 786432, 5, -524304, 786432, 5, -655375, 786432, 4, -589839, 786432, 5, -524303, 786432, 5, -655374, 786432, 4, -589838, 786432, 5, -524302, 786432, 5, -655373, 786432, 4, -589837, 786432, 5, -524301, 786432, 5, -655372, 786432, 4, -589836, 786432, 5, -524300, 786432, 5, -655371, 786432, 4, -589835, 786432, 5, -524299, 786432, 5, -655370, 786432, 4, -589834, 786432, 5, -524298, 786432, 5, -655369, 786432, 4, -589833, 786432, 5, -524297, 786432, 5, -655368, 851968, 4, -589832, 851968, 5, -524296, 851968, 5, -327697, 720896, 5, -327696, 786432, 5, -327695, 786432, 5, -327694, 786432, 5, -327693, 786432, 5, -327692, 786432, 5, -327691, 786432, 5, -327690, 786432, 5, -327689, 786432, 5, -327688, 851968, 5, -262161, 720896, 5, -262160, 786432, 5, -262159, 786432, 5, -262158, 786432, 5, -262157, 786432, 5, -262156, 786432, 5, -262155, 786432, 5, -262154, 786432, 5, -262153, 786432, 5, -262152, 851968, 5, -196625, 720896, 5, -196624, 786432, 5, -196623, 786432, 5, -196622, 786432, 5, -196621, 786432, 5, -196620, 786432, 5, -196619, 786432, 5, -196618, 786432, 5, -196617, 786432, 5, -196616, 851968, 5, 20, 786432, 4, 65556, 786432, 5, 131092, 786432, 5, 196628, 786432, 5, 262164, 786432, 5, 327700, 786432, 5, 21, 786432, 4, 65557, 786432, 5, 131093, 786432, 5, 196629, 786432, 5, 262165, 786432, 5, 327701, 786432, 5, 22, 786432, 4, 65558, 786432, 5, 131094, 786432, 5, 196630, 786432, 5, 262166, 786432, 5, 327702, 786432, 5, 23, 786432, 4, 65559, 786432, 5, 131095, 786432, 5, 196631, 786432, 5, 262167, 786432, 5, 327703, 786432, 5, 24, 786432, 4, 65560, 786432, 5, 131096, 786432, 5, 196632, 786432, 5, 262168, 786432, 5, 327704, 786432, 5, 25, 786432, 4, 65561, 786432, 5, 131097, 786432, 5, 196633, 786432, 5, 262169, 786432, 5, 327705, 786432, 5, 26, 786432, 4, 65562, 786432, 5, 131098, 786432, 5, 196634, 786432, 5, 262170, 786432, 5, 327706, 786432, 5, 27, 786432, 4, 65563, 786432, 5, 131099, 786432, 5, 196635, 786432, 5, 262171, 786432, 5, 327707, 786432, 5, -65498, 917504, 3, 38, 786432, 4, 65574, 786432, 5, 131110, 786432, 5, 196646, 786432, 5, 262182, 786432, 5, 327718, 786432, 5, 39, 786432, 4, 65575, 786432, 5, 131111, 786432, 5, 196647, 786432, 5, 262183, 786432, 5, 327719, 786432, 5, -65496, 983040, 3, 40, 786432, 4, 65576, 786432, 5, 131112, 786432, 5, 196648, 786432, 5, 262184, 786432, 5, 327720, 786432, 5, -65495, 983040, 3, 41, 786432, 4, 65577, 786432, 5, 131113, 786432, 5, 196649, 786432, 5, 262185, 786432, 5, 327721, 786432, 5, -65494, 983040, 3, 42, 786432, 4, 65578, 786432, 5, 131114, 786432, 5, 196650, 786432, 5, 262186, 786432, 5, 327722, 786432, 5, -65493, 983040, 3, 43, 786432, 4, 65579, 786432, 5, 131115, 786432, 5, 196651, 786432, 5, 262187, 786432, 5, 327723, 786432, 5, -65492, 983040, 3, 44, 786432, 4, 65580, 786432, 5, 131116, 786432, 5, 196652, 786432, 5, 262188, 786432, 5, 327724, 786432, 5, -65491, 983040, 3, 45, 786432, 4, 65581, 786432, 5, 131117, 786432, 5, 196653, 786432, 5, 262189, 786432, 5, 327725, 786432, 5, -65490, 983040, 3, 46, 786432, 4, 65582, 786432, 5, 131118, 786432, 5, 196654, 786432, 5, 262190, 786432, 5, 327726, 786432, 5, -65489, 983040, 3, 47, 786432, 4, 65583, 786432, 5, 131119, 786432, 5, 196655, 786432, 5, 262191, 786432, 5, 327727, 786432, 5, -65488, 1048576, 3, 48, 786432, 4, 65584, 786432, 5, 131120, 786432, 5, 196656, 786432, 5, 262192, 786432, 5, 327728, 786432, 5, 49, 851968, 4, 65585, 851968, 5, 131121, 851968, 5, 196657, 851968, 5, 262193, 851968, 5, 327729, 851968, 5, -65497, 983040, 3, -589774, 720896, 4, -524238, 720896, 5, -458702, 720896, 5, -393166, 720896, 5, -327630, 720896, 5, -262094, 720896, 5, -196558, 720896, 5, -131022, 720896, 5, -65486, 720896, 5, 50, 720896, 5, 65586, 720896, 5, 131122, 720896, 5, 196658, 720896, 5, 262194, 720896, 5, 327730, 720896, 5, -589773, 786432, 4, -524237, 786432, 5, -458701, 786432, 5, -393165, 786432, 5, -327629, 786432, 5, -262093, 786432, 5, -196557, 786432, 5, -131021, 786432, 5, -65485, 786432, 5, 51, 786432, 5, 65587, 786432, 5, 131123, 786432, 5, 196659, 786432, 5, 262195, 786432, 5, 327731, 786432, 5, -589772, 786432, 4, -524236, 786432, 5, -458700, 786432, 5, -393164, 786432, 5, -327628, 786432, 5, -262092, 786432, 5, -196556, 786432, 5, -131020, 786432, 5, -65484, 786432, 5, 52, 786432, 5, 65588, 786432, 5, 131124, 786432, 5, 196660, 786432, 5, 262196, 786432, 5, 327732, 786432, 5, -589771, 786432, 4, -524235, 786432, 5, -458699, 786432, 5, -393163, 786432, 5, -327627, 786432, 5, -262091, 786432, 5, -196555, 786432, 5, -131019, 786432, 5, -65483, 786432, 5, 53, 786432, 5, 65589, 786432, 5, 131125, 786432, 5, 196661, 786432, 5, 262197, 786432, 5, 327733, 786432, 5, -589770, 786432, 4, -524234, 786432, 5, -458698, 786432, 5, -393162, 786432, 5, -327626, 786432, 5, -262090, 786432, 5, -196554, 786432, 5, -131018, 786432, 5, -65482, 786432, 5, 54, 786432, 5, 65590, 786432, 5, 131126, 786432, 5, 196662, 786432, 5, 262198, 786432, 5, 327734, 786432, 5, -589769, 786432, 4, -524233, 786432, 5, -458697, 786432, 5, -393161, 786432, 5, -327625, 786432, 5, -262089, 786432, 5, -196553, 786432, 5, -131017, 786432, 5, -65481, 786432, 5, 55, 786432, 5, 65591, 786432, 5, 131127, 786432, 5, 196663, 786432, 5, 262199, 786432, 5, 327735, 786432, 5, -589768, 786432, 4, -524232, 786432, 5, -458696, 786432, 5, -393160, 786432, 5, -327624, 786432, 5, -262088, 786432, 5, -196552, 786432, 5, -131016, 786432, 5, -65480, 786432, 5, 56, 786432, 5, 65592, 786432, 5, 131128, 786432, 5, 196664, 786432, 5, 262200, 786432, 5, 327736, 786432, 5, -589767, 786432, 4, -524231, 786432, 5, -458695, 786432, 5, -393159, 786432, 5, -327623, 786432, 5, -262087, 786432, 5, -196551, 786432, 5, -131015, 786432, 5, -65479, 786432, 5, 57, 786432, 5, 65593, 786432, 5, 131129, 786432, 5, 196665, 786432, 5, 262201, 786432, 5, 327737, 786432, 5, -589766, 786432, 4, -524230, 786432, 5, -458694, 786432, 5, -393158, 786432, 5, -327622, 786432, 5, -262086, 786432, 5, -196550, 786432, 5, -131014, 786432, 5, -65478, 786432, 5, 58, 786432, 5, 65594, 786432, 5, 131130, 786432, 5, 196666, 786432, 5, 262202, 786432, 5, 327738, 786432, 5, -589765, 851968, 4, -524229, 851968, 5, -458693, 851968, 5, -393157, 851968, 5, -327621, 851968, 5, -262085, 851968, 5, -196549, 851968, 5, -131013, 851968, 5, -65477, 851968, 5, 59, 851968, 5, 65595, 851968, 5, 131131, 851968, 5, 196667, 851968, 5, 262203, 851968, 5, 327739, 851968, 5, 28, 786432, 4, 65564, 786432, 5, 131100, 786432, 5, 196636, 786432, 5, 262172, 786432, 5, 327708, 786432, 5, 29, 786432, 4, 65565, 786432, 5, 131101, 786432, 5, 196637, 786432, 5, 262173, 786432, 5, 327709, 786432, 5, 30, 786432, 4, 65566, 786432, 5, 131102, 786432, 5, 196638, 786432, 5, 262174, 786432, 5, 327710, 786432, 5, 31, 786432, 4, 65567, 786432, 5, 131103, 786432, 5, 196639, 786432, 5, 262175, 786432, 5, 327711, 786432, 5, 32, 786432, 4, 65568, 786432, 5, 131104, 786432, 5, 196640, 786432, 5, 262176, 786432, 5, 327712, 786432, 5, 33, 786432, 4, 65569, 786432, 5, 131105, 786432, 5, 196641, 786432, 5, 262177, 786432, 5, 327713, 786432, 5, 34, 786432, 4, 65570, 786432, 5, 131106, 786432, 5, 196642, 786432, 5, 262178, 786432, 5, 327714, 786432, 5, 35, 786432, 4, 65571, 786432, 5, 131107, 786432, 5, 196643, 786432, 5, 262179, 786432, 5, 327715, 786432, 5, 36, 786432, 4, 65572, 786432, 5, 131108, 786432, 5, 196644, 786432, 5, 262180, 786432, 5, 327716, 786432, 5, 37, 786432, 4, 65573, 786432, 5, 131109, 786432, 5, 196645, 786432, 5, 262181, 786432, 5, 327717, 786432, 5, -65487, 458752, 6, -131023, 458752, 5, -196559, 458752, 5, -262095, 458752, 5, -327631, 458752, 5, -393167, 458752, 5, -458703, 458752, 5, -524239, 458752, 5, -589775, 458752, 4)
[node name="UI" type="CanvasLayer" parent="."]
[node name="CharacterBody2D" parent="." instance=ExtResource("5_yv8tn")]
unique_name_in_owner = true
-position = Vector2(66, -50)
+z_index = 1
+position = Vector2(66, -28)
script = ExtResource("6_68ewj")
[node name="RoomLeftPhantomCamera2D" type="Node2D" parent="." node_paths=PackedStringArray("follow_target")]
unique_name_in_owner = true
-position = Vector2(66, -113.205)
+top_level = true
+position = Vector2(66, -91.205)
script = ExtResource("6_2n5r1")
priority = 5
follow_mode = 2
follow_offset = Vector2(0, -63.205)
follow_damping = true
draw_limits = true
-limit_target = NodePath("../TileMap")
+limit_target = NodePath("../StartingTerrain")
limit_margin = Vector4i(-50, 0, -50, 0)
[node name="RoomLeftArea2D" type="Area2D" parent="."]
[node name="RoomCentrePhantomCamera2D" type="Node2D" parent="."]
unique_name_in_owner = true
-position = Vector2(1474, -149)
+top_level = true
+position = Vector2(1218, -217)
script = ExtResource("6_2n5r1")
follow_mode = 2
zoom = Vector2(1.5, 1.5)
[node name="RoomRightPhantomCamera2D" type="Node2D" parent="."]
unique_name_in_owner = true
+top_level = true
position = Vector2(2347, -156)
scale = Vector2(1.0024, 1)
script = ExtResource("6_2n5r1")
draw_limits = true
[node name="Camera2D" type="Camera2D" parent="."]
-position = Vector2(66, -113.205)
+physics_interpolation_mode = 1
+position = Vector2(66, -91.205)
zoom = Vector2(2, 2)
+process_callback = 0
limit_left = -387
limit_top = -528
limit_right = 433
editor_draw_limits = true
[node name="PhantomCameraHost" type="Node" parent="Camera2D"]
+process_priority = 300
+process_physics_priority = 300
script = ExtResource("8_hulu3")
--- /dev/null
+[gd_scene load_steps=16 format=4 uid="uid://chw6g32u86uve"]
+
+[ext_resource type="Texture2D" uid="uid://c77npili4pel4" path="res://addons/phantom_camera/examples/textures/2D/level_spritesheet.png" id="1_2m0x8"]
+[ext_resource type="PackedScene" uid="uid://dg7rhrymsrrrm" path="res://addons/phantom_camera/examples/ui/ui_inventory.tscn" id="2_4bfy0"]
+[ext_resource type="PackedScene" uid="uid://iq5xd1ob1res" path="res://addons/phantom_camera/examples/ui/ui_sign.tscn" id="3_vdqsb"]
+[ext_resource type="FontFile" uid="uid://c4mm3of2mc8o5" path="res://addons/phantom_camera/fonts/Nunito-Black.ttf" id="4_w2gh7"]
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="5_d6fcf"]
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_2d.gd" id="6_bdmii"]
+[ext_resource type="Resource" uid="uid://euybd2w0bax" path="res://addons/phantom_camera/examples/resources/tween/player_phantom_camera_2d_tween.tres" id="7_dpnkg"]
+[ext_resource type="PackedScene" uid="uid://7kh0xydx0b1o" path="res://addons/phantom_camera/examples/example_scenes/2D/sub_scenes/playable_character_2d.tscn" id="8_u5o87"]
+[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/2D/player_character_body_2d_4.3.gd" id="9_suxld"]
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_noise_emitter_2d.gd" id="10_p43w0"]
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/phantom_camera_noise_2d.gd" id="11_d6abr"]
+
+[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_lvmak"]
+texture = ExtResource("1_2m0x8")
+0:0/0 = 0
+1:0/0 = 0
+2:0/0 = 0
+3:0/0 = 0
+4:0/0 = 0
+5:0/0 = 0
+6:0/0 = 0
+7:0/0 = 0
+7:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
+0:1/0 = 0
+1:1/0 = 0
+2:1/0 = 0
+3:1/0 = 0
+4:1/0 = 0
+5:1/0 = 0
+7:1/0 = 0
+7:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
+2:2/0 = 0
+3:2/0 = 0
+4:2/0 = 0
+7:2/0 = 0
+7:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
+3:3/0 = 0
+4:3/0 = 0
+5:3/0 = 0
+7:3/0 = 0
+7:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
+3:4/0 = 0
+4:4/0 = 0
+5:4/0 = 0
+7:4/0 = 0
+3:5/0 = 0
+4:5/0 = 0
+7:5/0 = 0
+3:6/0 = 0
+4:6/0 = 0
+7:6/0 = 0
+2:7/0 = 0
+3:7/0 = 0
+4:7/0 = 0
+5:7/0 = 0
+8:0/0 = 0
+8:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
+9:0/0 = 0
+9:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
+10:0/0 = 0
+10:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
+11:0/0 = 0
+11:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
+12:0/0 = 0
+12:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
+13:0/0 = 0
+13:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
+14:0/0 = 0
+14:0/0/physics_layer_1/polygon_0/points = PackedVector2Array(8, -8, 8, 8, -8, 8)
+14:0/0/custom_data_0 = &"Sign"
+15:0/0 = 0
+16:0/0 = 0
+8:1/0 = 0
+8:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
+9:1/0 = 0
+9:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
+10:1/0 = 0
+10:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
+11:1/0 = 0
+11:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
+12:1/0 = 0
+12:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
+13:1/0 = 0
+13:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
+14:1/0 = 0
+15:1/0 = 0
+16:1/0 = 0
+8:2/0 = 0
+8:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
+9:2/0 = 0
+9:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
+10:2/0 = 0
+10:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
+11:2/0 = 0
+11:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
+12:2/0 = 0
+12:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
+13:2/0 = 0
+13:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
+14:2/0 = 0
+15:2/0 = 0
+16:2/0 = 0
+8:3/0 = 0
+8:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
+9:3/0 = 0
+9:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
+10:3/0 = 0
+10:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
+11:3/0 = 0
+12:3/0 = 0
+12:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
+13:3/0 = 0
+13:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
+14:3/0 = 0
+15:3/0 = 0
+16:3/0 = 0
+8:4/0 = 0
+9:4/0 = 0
+10:4/0 = 0
+11:4/0 = 0
+11:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-7, 2.5, -5, -2, -2.5, -5, 2, -7, 8, -8, 8, 8, -8, 8)
+12:4/0 = 0
+12:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
+13:4/0 = 0
+13:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 0, -6, 4, -1.5, 6.5, 1.5, 8, 8, -8, 8)
+14:4/0 = 0
+14:4/0/physics_layer_1/polygon_0/points = PackedVector2Array(-8, -8, -8, 8, 8, 8, 8, -8)
+14:4/0/custom_data_0 = &"Inventory"
+15:4/0 = 0
+16:4/0 = 0
+8:5/0 = 0
+9:5/0 = 0
+10:5/0 = 0
+11:5/0 = 0
+11:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
+12:5/0 = 0
+12:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
+13:5/0 = 0
+13:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
+14:5/0 = 0
+15:5/0 = 0
+16:5/0 = 0
+8:6/0 = 0
+9:6/0 = 0
+10:6/0 = 0
+11:6/0 = 0
+11:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, 1, 6.5, -3, 3, -6.5, -1.5)
+12:6/0 = 0
+12:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
+13:6/0 = 0
+13:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 6, -0.5, 3, 3.5, -1.5, 6.5, -8, 8)
+14:6/0 = 0
+15:6/0 = 0
+16:6/0 = 0
+
+[sub_resource type="TileSet" id="TileSet_kf7eg"]
+physics_layer_0/collision_layer = 1
+physics_layer_1/collision_layer = 2
+physics_layer_1/collision_mask = 2
+custom_data_layer_0/name = "Type"
+custom_data_layer_0/type = 21
+sources/0 = SubResource("TileSetAtlasSource_lvmak")
+
+[sub_resource type="Resource" id="Resource_87ddr"]
+script = ExtResource("11_d6abr")
+amplitude = 30.0
+frequency = 0.5
+randomize_noise_seed = 1
+noise_seed = 0
+positional_noise = true
+rotational_noise = false
+positional_multiplier_x = 1.0
+positional_multiplier_y = 1.0
+rotational_multiplier = 1.0
+
+[sub_resource type="Resource" id="Resource_rmnw1"]
+script = ExtResource("11_d6abr")
+amplitude = 20.0
+frequency = 10.0
+randomize_noise_seed = 1
+noise_seed = 96
+positional_noise = true
+rotational_noise = false
+positional_multiplier_x = 1.0
+positional_multiplier_y = 1.0
+rotational_multiplier = 1.0
+
+[node name="Root" type="Node2D"]
+
+[node name="Background" type="CanvasLayer" parent="."]
+layer = -3
+
+[node name="ColorRect" type="ColorRect" parent="Background"]
+auto_translate_mode = 2
+anchors_preset = 15
+anchor_right = 1.0
+anchor_bottom = 1.0
+offset_left = -311.0
+offset_top = -173.0
+offset_right = 981.0
+offset_bottom = 548.0
+grow_horizontal = 2
+grow_vertical = 2
+localize_numeral_system = false
+color = Color(0.137255, 0.14902, 0.196078, 1)
+
+[node name="Pillar" type="TileMapLayer" parent="."]
+use_parent_material = true
+scale = Vector2(3, 3)
+tile_map_data = PackedByteArray("AAAAAPr/AAAKAAIAAAAAAPv/AAAKAAMAAAAAAPz/AAAKAAMAAAAAAP3/AAAKAAMAAAAAAP7/AAAKAAMAAAAAAP//AAAKAAMAAAABAPr/AAALAAIAAAABAPv/AAALAAEAAAABAPz/AAALAAEAAAABAP3/AAALAAEAAAABAP7/AAALAAEAAAABAP//AAALAAEAAAACAPr/AAAMAAIAAAACAPv/AAAMAAMAAAACAPz/AAAMAAMAAAACAP3/AAAMAAMAAAACAP7/AAAMAAMAAAACAP//AAAMAAMAAAA=")
+tile_set = SubResource("TileSet_kf7eg")
+collision_enabled = false
+navigation_enabled = false
+
+[node name="Terrain" type="TileMapLayer" parent="."]
+z_index = 1
+use_parent_material = true
+scale = Vector2(3, 3)
+tile_map_data = PackedByteArray("AAABAAAAAAALAAAAAAACAAAAAAALAAAAAAADAAAAAAALAAAAAAAEAAAAAAALAAAAAAAFAAAAAAALAAAAAAAGAAAAAAALAAAAAAAHAAAAAAALAAAAAAAIAAAAAAALAAAAAAAJAAAAAAAMAAAAAAAJAAEAAAAMAAEAAAAJAAIAAAAMAAEAAAAJAAMAAAAMAAEAAAAJAAQAAAAMAAEAAAAJAAUAAAAMAAEAAAAJAAYAAAAMAAEAAAABAAEAAAALAAEAAAABAAIAAAALAAEAAAABAAMAAAALAAEAAAABAAQAAAAHAAEAAAABAAUAAAALAAEAAAABAAYAAAALAAEAAAACAAEAAAALAAEAAAACAAIAAAALAAEAAAACAAMAAAALAAEAAAACAAQAAAALAAEAAAACAAUAAAALAAEAAAACAAYAAAALAAEAAAADAAEAAAALAAEAAAADAAIAAAALAAEAAAADAAMAAAALAAEAAAADAAQAAAALAAEAAAADAAUAAAALAAEAAAADAAYAAAALAAEAAAAEAAEAAAAHAAEAAAAEAAIAAAALAAEAAAAEAAMAAAALAAEAAAAEAAQAAAALAAEAAAAEAAUAAAALAAEAAAAEAAYAAAALAAEAAAAFAAEAAAALAAEAAAAFAAIAAAALAAEAAAAFAAMAAAALAAEAAAAFAAQAAAAHAAEAAAAFAAUAAAALAAEAAAAFAAYAAAALAAEAAAAGAAEAAAALAAEAAAAGAAIAAAALAAEAAAAGAAMAAAALAAEAAAAGAAQAAAALAAEAAAAGAAUAAAALAAEAAAAGAAYAAAALAAEAAAAHAAEAAAALAAEAAAAHAAIAAAALAAEAAAAHAAMAAAALAAEAAAAHAAQAAAALAAEAAAAHAAUAAAALAAEAAAAHAAYAAAAHAAEAAAAIAAEAAAALAAEAAAAIAAIAAAALAAEAAAAIAAMAAAAHAAEAAAAIAAQAAAALAAEAAAAIAAUAAAALAAEAAAAIAAYAAAALAAEAAAAKAAEAAAAIAAUAAAALAAEAAAAIAAUAAAAMAAEAAAAIAAUAAAANAAEAAAAIAAUAAAAKAAIAAAAIAAYAAAALAAIAAAAIAAYAAAAMAAIAAAAIAAYAAAANAAIAAAAIAAYAAAAKAAMAAAALAAEAAAAKAAQAAAALAAEAAAALAAMAAAALAAEAAAALAAQAAAALAAEAAAAMAAMAAAALAAEAAAAMAAQAAAALAAEAAAANAAMAAAALAAEAAAANAAQAAAALAAEAAAAOAAEAAAAIAAUAAAAPAAEAAAAIAAUAAAAQAAEAAAAIAAUAAAAOAAIAAAAIAAYAAAAPAAIAAAAIAAYAAAAQAAIAAAAIAAYAAAAOAAMAAAALAAEAAAAPAAMAAAALAAEAAAAPAAQAAAALAAEAAAAQAAQAAAALAAEAAAAQAAMAAAALAAEAAAAOAAQAAAALAAEAAAARAAAAAAALAAQAAAARAAEAAAALAAUAAAARAAIAAAALAAUAAAARAAMAAAALAAUAAAARAAQAAAALAAUAAAASAAAAAAAMAAQAAAATAAAAAAAMAAQAAAAUAAAAAAAMAAQAAAAVAAAAAAAMAAQAAAAWAAAAAAAMAAQAAAAXAAAAAAAMAAQAAAASAAEAAAAMAAUAAAASAAIAAAAMAAUAAAASAAMAAAAMAAUAAAASAAQAAAAMAAUAAAATAAEAAAAMAAUAAAATAAIAAAAJAAYAAAATAAMAAAAMAAUAAAATAAQAAAAMAAUAAAAUAAEAAAAMAAUAAAAUAAIAAAAMAAUAAAAUAAMAAAAMAAUAAAAUAAQAAAAMAAUAAAAVAAEAAAAMAAUAAAAVAAIAAAAMAAUAAAAVAAMAAAAMAAUAAAAVAAQAAAAMAAUAAAAWAAEAAAAMAAUAAAAWAAIAAAAMAAUAAAAWAAMAAAAMAAUAAAAWAAQAAAAKAAYAAAAXAAEAAAAMAAUAAAAXAAIAAAAMAAUAAAAXAAMAAAAMAAUAAAAXAAQAAAAMAAUAAAARAAUAAAALAAUAAAARAAYAAAALAAUAAAASAAUAAAAJAAYAAAASAAYAAAAMAAUAAAATAAUAAAAMAAUAAAATAAYAAAAMAAUAAAAUAAUAAAAMAAUAAAAUAAYAAAAMAAUAAAAVAAUAAAAMAAUAAAAVAAYAAAAMAAUAAAAWAAUAAAAMAAUAAAAWAAYAAAAMAAUAAAAXAAUAAAAMAAUAAAAXAAYAAAAMAAUAAAAKAP7/AAALAAQAAAALAP7/AAAMAAQAAAAMAP7/AAAMAAQAAAAKAP//AAALAAYAAAALAP//AAAMAAYAAAAMAP//AAAMAAYAAAAQAP7/AAANAAQAAAAQAP//AAANAAYAAAANAP7/AAAMAAQAAAAOAP7/AAAMAAQAAAAPAP7/AAAMAAQAAAANAP//AAAMAAYAAAAOAP//AAAMAAYAAAAPAP//AAAMAAYAAAAMAP3/AAAOAAAAAAADAP//AAAOAAIAAAAEAP//AAAPAAIAAAAFAP//AAAQAAIAAAAGAP//AAAOAAIAAAAHAP//AAAPAAIAAAAIAP//AAAQAAIAAAD//wAAAAAKAAAAAAD//wEAAAAKAAEAAAD//wIAAAAKAAEAAAD//wMAAAAKAAEAAAD//wQAAAAKAAEAAAD//wUAAAAKAAEAAAD//wYAAAAKAAEAAAD//wcAAAAKAAEAAAD//wgAAAAKAAEAAAAAAAAAAAALAAAAAAAAAAEAAAALAAEAAAAAAAIAAAALAAEAAAAAAAMAAAALAAEAAAAAAAQAAAALAAEAAAAAAAUAAAALAAEAAAAAAAYAAAALAAEAAAAAAAcAAAALAAEAAAAAAAgAAAALAAEAAAABAAgAAAALAAEAAAACAAgAAAALAAEAAAADAAgAAAALAAEAAAAEAAgAAAALAAEAAAAFAAgAAAALAAEAAAAGAAgAAAALAAEAAAAHAAgAAAALAAEAAAAIAAgAAAALAAEAAAAJAAgAAAAMAAEAAAAJAAcAAAAMAAEAAAAIAAcAAAALAAEAAAAHAAcAAAALAAEAAAAGAAcAAAAHAAEAAAAFAAcAAAALAAEAAAAEAAcAAAALAAEAAAADAAcAAAALAAEAAAACAAcAAAALAAEAAAABAAcAAAALAAEAAAD///v/AAANAAQAAAD///z/AAANAAUAAAD///3/AAANAAUAAAD///7/AAANAAUAAAD/////AAANAAYAAAD+//v/AAAMAAQAAAD9//v/AAAMAAQAAAD+//z/AAAJAAYAAAD9//z/AAAMAAUAAAD6////AAAMAAUAAAD7////AAAMAAUAAAD8////AAAMAAUAAAD9////AAAMAAUAAAD+////AAAMAAUAAAD+//7/AAAMAAUAAAD+//3/AAAMAAUAAAD9//3/AAAMAAUAAAD9//7/AAAKAAYAAAD+/wAAAAANAAUAAAD+/wEAAAANAAUAAAD+/wIAAAANAAUAAAD+/wMAAAANAAUAAAD+/wQAAAANAAUAAAD+/wUAAAANAAUAAAD+/wYAAAANAAUAAAD9/wAAAAAMAAUAAAD8/wAAAAAMAAUAAAD7/wAAAAAMAAUAAAD6/wAAAAAMAAUAAAD5/wAAAAALAAUAAAD6/wEAAAAMAAUAAAD6/wIAAAAMAAUAAAD6/wMAAAAMAAUAAAD7/wMAAAAMAAUAAAD7/wQAAAAMAAUAAAD8/wEAAAAMAAUAAAD9/wEAAAAMAAUAAAD9/wIAAAAMAAUAAAD9/wMAAAAMAAUAAAD9/wQAAAAMAAUAAAD9/wUAAAAMAAUAAAD9/wYAAAAMAAUAAAD8/wUAAAAMAAUAAAD7/wUAAAAMAAUAAAD8/wYAAAAMAAUAAAD8/wQAAAAKAAYAAAD8/wMAAAAMAAUAAAD8/wIAAAAMAAUAAAD7/wEAAAAMAAUAAAD7/wIAAAAJAAYAAAD7/wYAAAAMAAUAAAD6/wYAAAAMAAUAAAD6/wUAAAAMAAUAAAD6/wQAAAAMAAUAAAD5////AAALAAUAAAD5/wEAAAALAAUAAAD5/wIAAAALAAUAAAD5/wMAAAALAAUAAAD5/wQAAAALAAUAAAD5/wUAAAALAAUAAAD5/wYAAAALAAUAAAD8//r/AAALAAMAAAAOAP3/AAALAAMAAAALAP3/AAALAAMAAAASAP//AAALAAMAAAAUAP//AAALAAMAAAD6//r/AAAQAAUAAAD7//r/AAALAAMAAAANAP3/AAAOAAYAAAAWAP//AAAPAAYAAAD9//r/AAAPAAUAAAAXAP//AAAQAAUAAAD5//v/AAALAAQAAAD5//z/AAALAAUAAAD5//3/AAALAAUAAAD5//7/AAALAAUAAAD6//v/AAAMAAQAAAD6//z/AAAKAAYAAAD6//3/AAAMAAUAAAD6//7/AAAMAAUAAAD7//v/AAAMAAQAAAD7//z/AAAMAAUAAAD7//3/AAAMAAUAAAD7//7/AAAMAAUAAAD8//v/AAAMAAQAAAD8//z/AAAMAAUAAAD8//3/AAAMAAUAAAD8//7/AAAMAAUAAAARAAcAAAALAAUAAAARAAgAAAALAAYAAAAXAAcAAAAMAAUAAAAWAAcAAAAMAAUAAAAVAAcAAAAMAAUAAAAUAAcAAAAMAAUAAAATAAcAAAAMAAUAAAASAAcAAAAMAAUAAAASAAgAAAAMAAYAAAATAAgAAAAMAAYAAAAUAAgAAAAMAAYAAAAVAAgAAAAMAAYAAAAWAAgAAAAMAAYAAAAXAAgAAAAMAAYAAAAKAAUAAAALAAEAAAAKAAYAAAALAAEAAAAKAAcAAAALAAEAAAAKAAgAAAALAAEAAAALAAUAAAALAAEAAAALAAYAAAALAAEAAAALAAcAAAALAAEAAAALAAgAAAALAAEAAAAMAAUAAAALAAEAAAAMAAYAAAALAAEAAAAMAAcAAAALAAEAAAAMAAgAAAALAAEAAAANAAUAAAALAAEAAAANAAYAAAALAAEAAAANAAcAAAALAAEAAAANAAgAAAALAAEAAAAOAAUAAAALAAEAAAAOAAYAAAALAAEAAAAOAAcAAAALAAEAAAAOAAgAAAALAAEAAAAPAAUAAAALAAEAAAAPAAYAAAALAAEAAAAPAAcAAAALAAEAAAAPAAgAAAALAAEAAAAQAAUAAAALAAEAAAAQAAYAAAALAAEAAAAQAAcAAAALAAEAAAAQAAgAAAALAAEAAAAdAAAAAAANAAQAAAAdAAEAAAANAAUAAAAdAAIAAAANAAUAAAAdAAMAAAANAAUAAAAdAAQAAAANAAUAAAAdAAUAAAANAAUAAAAdAAYAAAANAAUAAAAdAAcAAAANAAUAAAAdAAgAAAANAAYAAAAZAP//AAAOAAQAAAAYAAAAAAAMAAQAAAAZAAAAAAAMAAQAAAAaAAAAAAAMAAQAAAAbAAAAAAAMAAQAAAAcAAAAAAAMAAQAAAAYAAEAAAAMAAUAAAAZAAEAAAAMAAUAAAAaAAEAAAAMAAUAAAAbAAEAAAAMAAUAAAAcAAEAAAAMAAUAAAAcAAIAAAAMAAUAAAAcAAMAAAAJAAYAAAAbAAIAAAAMAAUAAAAaAAIAAAAMAAUAAAAZAAIAAAAMAAUAAAAYAAIAAAAMAAUAAAAYAAMAAAAMAAUAAAAYAAQAAAAMAAUAAAAYAAUAAAAMAAUAAAAYAAYAAAAMAAUAAAAYAAcAAAAMAAUAAAAYAAgAAAAMAAYAAAAZAAMAAAAMAAUAAAAZAAQAAAAMAAUAAAAZAAUAAAAMAAUAAAAZAAYAAAAMAAUAAAAZAAcAAAAMAAUAAAAZAAgAAAAMAAYAAAAaAAMAAAAMAAUAAAAaAAQAAAAMAAUAAAAaAAUAAAAMAAUAAAAaAAYAAAAKAAYAAAAaAAcAAAAMAAUAAAAaAAgAAAAMAAYAAAAbAAMAAAAMAAUAAAAbAAQAAAAMAAUAAAAbAAUAAAAMAAUAAAAbAAYAAAAMAAUAAAAbAAcAAAAMAAUAAAAbAAgAAAAMAAYAAAAcAAQAAAAMAAUAAAAcAAUAAAAMAAUAAAAcAAYAAAAMAAUAAAAcAAcAAAAMAAUAAAAcAAgAAAAMAAYAAAAPAP3/AAAQAAYAAAAiAPr/AAAQAAYAAAAfAPr/AAAOAAYAAAAkAPr/AAAPAAYAAAAgAPr/AAAPAAUAAAAbAP//AAALAAMAAAAaAP//AAALAAMAAAAjAPr/AAALAAMAAAAhAPr/AAALAAMAAAATAP//AAALAAMAAAAVAP//AAALAAMAAAAeAPv/AAALAAQAAAAeAPz/AAALAAUAAAAeAP3/AAALAAUAAAAeAP7/AAALAAUAAAAeAP//AAALAAUAAAAmAP//AAANAAUAAAAmAP7/AAANAAUAAAAmAP3/AAANAAUAAAAmAPv/AAANAAQAAAAfAPv/AAAMAAQAAAAgAPv/AAAMAAQAAAAhAPv/AAAMAAQAAAAiAPv/AAAMAAQAAAAjAPv/AAAMAAQAAAAkAPv/AAAMAAQAAAAlAPv/AAAMAAQAAAAmAPz/AAANAAUAAAAlAP//AAAMAAUAAAAlAP7/AAAMAAUAAAAlAP3/AAAMAAUAAAAlAPz/AAAMAAUAAAAkAPz/AAAMAAUAAAAjAPz/AAAMAAUAAAAiAPz/AAAMAAUAAAAhAPz/AAAMAAUAAAAgAPz/AAAMAAUAAAAfAPz/AAAMAAUAAAAfAP3/AAAKAAYAAAAfAP7/AAAMAAUAAAAfAP//AAAMAAUAAAAkAP//AAAKAAYAAAAkAP7/AAAJAAYAAAAkAP3/AAAMAAUAAAAjAP3/AAAMAAUAAAAiAP3/AAAMAAUAAAAhAP3/AAAMAAUAAAAgAP3/AAAMAAUAAAAgAP7/AAAJAAYAAAAgAP//AAAMAAUAAAAjAP//AAAMAAUAAAAjAP7/AAAMAAUAAAAiAP7/AAAMAAUAAAAhAP7/AAAMAAUAAAAhAP//AAAMAAUAAAAiAP//AAAMAAUAAAAeAAgAAAALAAYAAAAeAAcAAAALAAUAAAAeAAYAAAALAAUAAAAeAAUAAAALAAUAAAAeAAQAAAALAAUAAAAeAAMAAAALAAUAAAAeAAIAAAALAAUAAAAeAAEAAAALAAUAAAAeAAAAAAALAAUAAAAfAAgAAAAMAAYAAAAgAAgAAAAMAAYAAAAhAAgAAAAMAAYAAAAiAAgAAAAMAAYAAAAjAAgAAAAMAAYAAAAkAAgAAAAMAAYAAAAlAAgAAAAMAAYAAAAmAAgAAAANAAYAAAAmAAAAAAANAAUAAAAmAAEAAAANAAUAAAAmAAIAAAANAAUAAAAmAAMAAAANAAUAAAAmAAQAAAANAAUAAAAmAAUAAAANAAUAAAAmAAYAAAANAAUAAAAmAAcAAAANAAUAAAAfAAAAAAAMAAUAAAAfAAEAAAAMAAUAAAAfAAIAAAAMAAUAAAAfAAMAAAAMAAUAAAAfAAQAAAAMAAUAAAAfAAUAAAAMAAUAAAAfAAYAAAAKAAYAAAAfAAcAAAAMAAUAAAAgAAAAAAAMAAUAAAAgAAEAAAAMAAUAAAAgAAIAAAAMAAUAAAAgAAMAAAAMAAUAAAAgAAQAAAAMAAUAAAAgAAUAAAAMAAUAAAAgAAYAAAAMAAUAAAAgAAcAAAAMAAUAAAAhAAAAAAAMAAUAAAAhAAEAAAAMAAUAAAAhAAIAAAAKAAYAAAAhAAMAAAAMAAUAAAAhAAQAAAAMAAUAAAAhAAUAAAAMAAUAAAAhAAYAAAAMAAUAAAAhAAcAAAAMAAUAAAAiAAAAAAAMAAUAAAAiAAEAAAAMAAUAAAAiAAIAAAAMAAUAAAAiAAMAAAAMAAUAAAAiAAQAAAAKAAYAAAAiAAUAAAAKAAYAAAAiAAYAAAAMAAUAAAAiAAcAAAAMAAUAAAAjAAAAAAAMAAUAAAAjAAEAAAAMAAUAAAAjAAIAAAAMAAUAAAAjAAMAAAAMAAUAAAAjAAQAAAAMAAUAAAAjAAUAAAAMAAUAAAAjAAYAAAAMAAUAAAAjAAcAAAAMAAUAAAAkAAAAAAAKAAYAAAAkAAEAAAAMAAUAAAAkAAIAAAAMAAUAAAAkAAMAAAAMAAUAAAAkAAQAAAAMAAUAAAAkAAUAAAAMAAUAAAAkAAYAAAAMAAUAAAAkAAcAAAAKAAYAAAAlAAAAAAAMAAUAAAAlAAEAAAAMAAUAAAAlAAIAAAAMAAUAAAAlAAMAAAAMAAUAAAAlAAQAAAAMAAUAAAAlAAUAAAAMAAUAAAAlAAYAAAAMAAUAAAAlAAcAAAAMAAUAAAD6/wcAAAAMAAUAAAD7/wcAAAAMAAUAAAD8/wcAAAAMAAUAAAD9/wcAAAAMAAUAAAD5/wcAAAALAAUAAAD+/wcAAAANAAUAAAD5/wgAAAALAAYAAAD6/wgAAAAMAAYAAAD7/wgAAAAMAAYAAAD8/wgAAAAMAAYAAAD9/wgAAAAMAAYAAAD+/wgAAAANAAYAAAA=")
+tile_set = SubResource("TileSet_kf7eg")
+
+[node name="UI" type="CanvasLayer" parent="."]
+
+[node name="UIInventory" parent="UI" instance=ExtResource("2_4bfy0")]
+unique_name_in_owner = true
+visible = false
+
+[node name="UISign" parent="UI" instance=ExtResource("3_vdqsb")]
+unique_name_in_owner = true
+visible = false
+
+[node name="Controls" type="Label" parent="."]
+offset_left = 167.0
+offset_top = -145.0
+offset_right = 332.0
+offset_bottom = -81.0
+theme_override_colors/font_color = Color(0.294118, 1, 0.631373, 1)
+theme_override_fonts/font = ExtResource("4_w2gh7")
+text = "[WASD] to move
+[Space] to jump
+[Q] to trigger noise"
+
+[node name="Camera2D" type="Camera2D" parent="."]
+physics_interpolation_mode = 1
+position = Vector2(227, -28)
+offset = Vector2(-0.0537988, 2.87179)
+ignore_rotation = false
+zoom = Vector2(1.5, 1.5)
+process_callback = 0
+editor_draw_limits = true
+
+[node name="PhantomCameraHost" type="Node" parent="Camera2D"]
+process_priority = 300
+process_physics_priority = 300
+script = ExtResource("5_d6fcf")
+
+[node name="Player" type="Node" parent="."]
+
+[node name="PlayerPhantomCamera2D" type="Node2D" parent="Player" node_paths=PackedStringArray("follow_target")]
+unique_name_in_owner = true
+process_priority = -1
+top_level = true
+position = Vector2(227, -28)
+script = ExtResource("6_bdmii")
+priority = 10
+follow_mode = 2
+follow_target = NodePath("../CharacterBody2D")
+zoom = Vector2(1.5, 1.5)
+frame_preview = false
+tween_resource = ExtResource("7_dpnkg")
+tween_on_load = false
+follow_damping = true
+draw_limits = true
+noise = SubResource("Resource_87ddr")
+noise_emitter_layer = 1
+
+[node name="PlayerPhantomCameraNoiseEmitter2D" type="Node2D" parent="Player"]
+unique_name_in_owner = true
+script = ExtResource("10_p43w0")
+noise = SubResource("Resource_rmnw1")
+duration = 0.1
+decay_time = 0.1
+
+[node name="CharacterBody2D" parent="Player" instance=ExtResource("8_u5o87")]
+z_index = 2
+position = Vector2(227, -28)
+script = ExtResource("9_suxld")
-[gd_scene load_steps=20 format=3 uid="uid://bvpp5na5054jd"]
+[gd_scene load_steps=20 format=4 uid="uid://bvpp5na5054jd"]
[ext_resource type="Texture2D" uid="uid://c77npili4pel4" path="res://addons/phantom_camera/examples/textures/2D/level_spritesheet.png" id="1_h1rbo"]
[ext_resource type="PackedScene" uid="uid://dg7rhrymsrrrm" path="res://addons/phantom_camera/examples/ui/ui_inventory.tscn" id="2_1f2t2"]
[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/2D/player_character_body_2d_4.3.gd" id="9_5jy5e"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="10_guf2v"]
-[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_easgx"]
+[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_cvmao"]
texture = ExtResource("1_h1rbo")
0:0/0 = 0
-0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-0:0/0/physics_layer_0/angular_velocity = 0.0
-0:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-0:0/0/physics_layer_1/angular_velocity = 0.0
1:0/0 = 0
-1:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-1:0/0/physics_layer_0/angular_velocity = 0.0
-1:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-1:0/0/physics_layer_1/angular_velocity = 0.0
2:0/0 = 0
-2:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-2:0/0/physics_layer_0/angular_velocity = 0.0
-2:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-2:0/0/physics_layer_1/angular_velocity = 0.0
3:0/0 = 0
-3:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:0/0/physics_layer_0/angular_velocity = 0.0
-3:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:0/0/physics_layer_1/angular_velocity = 0.0
4:0/0 = 0
-4:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:0/0/physics_layer_0/angular_velocity = 0.0
-4:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:0/0/physics_layer_1/angular_velocity = 0.0
5:0/0 = 0
-5:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:0/0/physics_layer_0/angular_velocity = 0.0
-5:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:0/0/physics_layer_1/angular_velocity = 0.0
6:0/0 = 0
-6:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-6:0/0/physics_layer_0/angular_velocity = 0.0
-6:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-6:0/0/physics_layer_1/angular_velocity = 0.0
7:0/0 = 0
-7:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:0/0/physics_layer_0/angular_velocity = 0.0
7:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-7:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:0/0/physics_layer_1/angular_velocity = 0.0
0:1/0 = 0
-0:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-0:1/0/physics_layer_0/angular_velocity = 0.0
-0:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-0:1/0/physics_layer_1/angular_velocity = 0.0
1:1/0 = 0
-1:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-1:1/0/physics_layer_0/angular_velocity = 0.0
-1:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-1:1/0/physics_layer_1/angular_velocity = 0.0
2:1/0 = 0
-2:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-2:1/0/physics_layer_0/angular_velocity = 0.0
-2:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-2:1/0/physics_layer_1/angular_velocity = 0.0
3:1/0 = 0
-3:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:1/0/physics_layer_0/angular_velocity = 0.0
-3:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:1/0/physics_layer_1/angular_velocity = 0.0
4:1/0 = 0
-4:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:1/0/physics_layer_0/angular_velocity = 0.0
-4:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:1/0/physics_layer_1/angular_velocity = 0.0
5:1/0 = 0
-5:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:1/0/physics_layer_0/angular_velocity = 0.0
-5:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:1/0/physics_layer_1/angular_velocity = 0.0
7:1/0 = 0
-7:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:1/0/physics_layer_0/angular_velocity = 0.0
7:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-7:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:1/0/physics_layer_1/angular_velocity = 0.0
2:2/0 = 0
-2:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-2:2/0/physics_layer_0/angular_velocity = 0.0
-2:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-2:2/0/physics_layer_1/angular_velocity = 0.0
3:2/0 = 0
-3:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:2/0/physics_layer_0/angular_velocity = 0.0
-3:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:2/0/physics_layer_1/angular_velocity = 0.0
4:2/0 = 0
-4:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:2/0/physics_layer_0/angular_velocity = 0.0
-4:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:2/0/physics_layer_1/angular_velocity = 0.0
7:2/0 = 0
-7:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:2/0/physics_layer_0/angular_velocity = 0.0
7:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-7:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:2/0/physics_layer_1/angular_velocity = 0.0
3:3/0 = 0
-3:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:3/0/physics_layer_0/angular_velocity = 0.0
-3:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:3/0/physics_layer_1/angular_velocity = 0.0
4:3/0 = 0
-4:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:3/0/physics_layer_0/angular_velocity = 0.0
-4:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:3/0/physics_layer_1/angular_velocity = 0.0
+5:3/0 = 0
7:3/0 = 0
-7:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:3/0/physics_layer_0/angular_velocity = 0.0
7:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-7:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:3/0/physics_layer_1/angular_velocity = 0.0
3:4/0 = 0
-3:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:4/0/physics_layer_0/angular_velocity = 0.0
-3:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:4/0/physics_layer_1/angular_velocity = 0.0
4:4/0 = 0
-4:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:4/0/physics_layer_0/angular_velocity = 0.0
-4:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:4/0/physics_layer_1/angular_velocity = 0.0
5:4/0 = 0
-5:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:4/0/physics_layer_0/angular_velocity = 0.0
-5:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:4/0/physics_layer_1/angular_velocity = 0.0
7:4/0 = 0
-7:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:4/0/physics_layer_0/angular_velocity = 0.0
-7:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:4/0/physics_layer_1/angular_velocity = 0.0
3:5/0 = 0
-3:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:5/0/physics_layer_0/angular_velocity = 0.0
-3:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:5/0/physics_layer_1/angular_velocity = 0.0
4:5/0 = 0
-4:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:5/0/physics_layer_0/angular_velocity = 0.0
-4:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:5/0/physics_layer_1/angular_velocity = 0.0
7:5/0 = 0
-7:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:5/0/physics_layer_0/angular_velocity = 0.0
-7:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:5/0/physics_layer_1/angular_velocity = 0.0
3:6/0 = 0
-3:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:6/0/physics_layer_0/angular_velocity = 0.0
-3:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:6/0/physics_layer_1/angular_velocity = 0.0
4:6/0 = 0
-4:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:6/0/physics_layer_0/angular_velocity = 0.0
-4:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:6/0/physics_layer_1/angular_velocity = 0.0
7:6/0 = 0
-7:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:6/0/physics_layer_0/angular_velocity = 0.0
-7:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:6/0/physics_layer_1/angular_velocity = 0.0
2:7/0 = 0
-2:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-2:7/0/physics_layer_0/angular_velocity = 0.0
-2:7/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-2:7/0/physics_layer_1/angular_velocity = 0.0
3:7/0 = 0
-3:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:7/0/physics_layer_0/angular_velocity = 0.0
-3:7/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:7/0/physics_layer_1/angular_velocity = 0.0
4:7/0 = 0
-4:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:7/0/physics_layer_0/angular_velocity = 0.0
-4:7/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:7/0/physics_layer_1/angular_velocity = 0.0
5:7/0 = 0
-5:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:7/0/physics_layer_0/angular_velocity = 0.0
-5:7/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:7/0/physics_layer_1/angular_velocity = 0.0
8:0/0 = 0
-8:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:0/0/physics_layer_0/angular_velocity = 0.0
8:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-8:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:0/0/physics_layer_1/angular_velocity = 0.0
9:0/0 = 0
-9:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:0/0/physics_layer_0/angular_velocity = 0.0
9:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-9:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:0/0/physics_layer_1/angular_velocity = 0.0
10:0/0 = 0
-10:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:0/0/physics_layer_0/angular_velocity = 0.0
10:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-10:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:0/0/physics_layer_1/angular_velocity = 0.0
11:0/0 = 0
-11:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:0/0/physics_layer_0/angular_velocity = 0.0
11:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-11:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:0/0/physics_layer_1/angular_velocity = 0.0
12:0/0 = 0
-12:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:0/0/physics_layer_0/angular_velocity = 0.0
12:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:0/0/physics_layer_1/angular_velocity = 0.0
13:0/0 = 0
-13:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:0/0/physics_layer_0/angular_velocity = 0.0
13:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:0/0/physics_layer_1/angular_velocity = 0.0
14:0/0 = 0
-14:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:0/0/physics_layer_0/angular_velocity = 0.0
-14:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:0/0/physics_layer_1/angular_velocity = 0.0
14:0/0/physics_layer_1/polygon_0/points = PackedVector2Array(8, -8, 8, 8, -8, 8)
14:0/0/custom_data_0 = &"Sign"
15:0/0 = 0
-15:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:0/0/physics_layer_0/angular_velocity = 0.0
-15:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:0/0/physics_layer_1/angular_velocity = 0.0
16:0/0 = 0
-16:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:0/0/physics_layer_0/angular_velocity = 0.0
-16:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:0/0/physics_layer_1/angular_velocity = 0.0
8:1/0 = 0
-8:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:1/0/physics_layer_0/angular_velocity = 0.0
8:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-8:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:1/0/physics_layer_1/angular_velocity = 0.0
9:1/0 = 0
-9:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:1/0/physics_layer_0/angular_velocity = 0.0
9:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-9:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:1/0/physics_layer_1/angular_velocity = 0.0
10:1/0 = 0
-10:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:1/0/physics_layer_0/angular_velocity = 0.0
10:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-10:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:1/0/physics_layer_1/angular_velocity = 0.0
11:1/0 = 0
-11:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:1/0/physics_layer_0/angular_velocity = 0.0
11:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-11:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:1/0/physics_layer_1/angular_velocity = 0.0
12:1/0 = 0
-12:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:1/0/physics_layer_0/angular_velocity = 0.0
12:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:1/0/physics_layer_1/angular_velocity = 0.0
13:1/0 = 0
-13:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:1/0/physics_layer_0/angular_velocity = 0.0
13:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:1/0/physics_layer_1/angular_velocity = 0.0
14:1/0 = 0
-14:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:1/0/physics_layer_0/angular_velocity = 0.0
-14:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:1/0/physics_layer_1/angular_velocity = 0.0
15:1/0 = 0
-15:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:1/0/physics_layer_0/angular_velocity = 0.0
-15:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:1/0/physics_layer_1/angular_velocity = 0.0
16:1/0 = 0
-16:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:1/0/physics_layer_0/angular_velocity = 0.0
-16:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:1/0/physics_layer_1/angular_velocity = 0.0
8:2/0 = 0
-8:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:2/0/physics_layer_0/angular_velocity = 0.0
8:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-8:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:2/0/physics_layer_1/angular_velocity = 0.0
9:2/0 = 0
-9:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:2/0/physics_layer_0/angular_velocity = 0.0
9:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-9:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:2/0/physics_layer_1/angular_velocity = 0.0
10:2/0 = 0
-10:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:2/0/physics_layer_0/angular_velocity = 0.0
10:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-10:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:2/0/physics_layer_1/angular_velocity = 0.0
11:2/0 = 0
-11:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:2/0/physics_layer_0/angular_velocity = 0.0
11:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-11:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:2/0/physics_layer_1/angular_velocity = 0.0
12:2/0 = 0
-12:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:2/0/physics_layer_0/angular_velocity = 0.0
12:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:2/0/physics_layer_1/angular_velocity = 0.0
13:2/0 = 0
-13:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:2/0/physics_layer_0/angular_velocity = 0.0
13:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:2/0/physics_layer_1/angular_velocity = 0.0
14:2/0 = 0
-14:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:2/0/physics_layer_0/angular_velocity = 0.0
-14:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:2/0/physics_layer_1/angular_velocity = 0.0
15:2/0 = 0
-15:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:2/0/physics_layer_0/angular_velocity = 0.0
-15:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:2/0/physics_layer_1/angular_velocity = 0.0
16:2/0 = 0
-16:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:2/0/physics_layer_0/angular_velocity = 0.0
-16:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:2/0/physics_layer_1/angular_velocity = 0.0
8:3/0 = 0
-8:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:3/0/physics_layer_0/angular_velocity = 0.0
8:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-8:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:3/0/physics_layer_1/angular_velocity = 0.0
9:3/0 = 0
-9:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:3/0/physics_layer_0/angular_velocity = 0.0
9:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-9:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:3/0/physics_layer_1/angular_velocity = 0.0
10:3/0 = 0
-10:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:3/0/physics_layer_0/angular_velocity = 0.0
10:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-10:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:3/0/physics_layer_1/angular_velocity = 0.0
11:3/0 = 0
-11:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:3/0/physics_layer_0/angular_velocity = 0.0
-11:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:3/0/physics_layer_1/angular_velocity = 0.0
12:3/0 = 0
-12:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:3/0/physics_layer_0/angular_velocity = 0.0
12:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:3/0/physics_layer_1/angular_velocity = 0.0
13:3/0 = 0
-13:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:3/0/physics_layer_0/angular_velocity = 0.0
13:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:3/0/physics_layer_1/angular_velocity = 0.0
14:3/0 = 0
-14:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:3/0/physics_layer_0/angular_velocity = 0.0
-14:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:3/0/physics_layer_1/angular_velocity = 0.0
15:3/0 = 0
-15:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:3/0/physics_layer_0/angular_velocity = 0.0
-15:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:3/0/physics_layer_1/angular_velocity = 0.0
16:3/0 = 0
-16:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:3/0/physics_layer_0/angular_velocity = 0.0
-16:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:3/0/physics_layer_1/angular_velocity = 0.0
8:4/0 = 0
-8:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:4/0/physics_layer_0/angular_velocity = 0.0
-8:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:4/0/physics_layer_1/angular_velocity = 0.0
9:4/0 = 0
-9:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:4/0/physics_layer_0/angular_velocity = 0.0
-9:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:4/0/physics_layer_1/angular_velocity = 0.0
10:4/0 = 0
-10:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:4/0/physics_layer_0/angular_velocity = 0.0
-10:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:4/0/physics_layer_1/angular_velocity = 0.0
11:4/0 = 0
-11:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:4/0/physics_layer_0/angular_velocity = 0.0
11:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-7, 2.5, -5, -2, -2.5, -5, 2, -7, 8, -8, 8, 8, -8, 8)
-11:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:4/0/physics_layer_1/angular_velocity = 0.0
12:4/0 = 0
-12:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:4/0/physics_layer_0/angular_velocity = 0.0
12:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:4/0/physics_layer_1/angular_velocity = 0.0
13:4/0 = 0
-13:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:4/0/physics_layer_0/angular_velocity = 0.0
13:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 0, -6, 4, -1.5, 6.5, 1.5, 8, 8, -8, 8)
-13:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:4/0/physics_layer_1/angular_velocity = 0.0
14:4/0 = 0
-14:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:4/0/physics_layer_0/angular_velocity = 0.0
-14:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:4/0/physics_layer_1/angular_velocity = 0.0
14:4/0/physics_layer_1/polygon_0/points = PackedVector2Array(-8, -8, -8, 8, 8, 8, 8, -8)
14:4/0/custom_data_0 = &"Inventory"
15:4/0 = 0
-15:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:4/0/physics_layer_0/angular_velocity = 0.0
-15:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:4/0/physics_layer_1/angular_velocity = 0.0
16:4/0 = 0
-16:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:4/0/physics_layer_0/angular_velocity = 0.0
-16:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:4/0/physics_layer_1/angular_velocity = 0.0
8:5/0 = 0
-8:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:5/0/physics_layer_0/angular_velocity = 0.0
-8:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:5/0/physics_layer_1/angular_velocity = 0.0
9:5/0 = 0
-9:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:5/0/physics_layer_0/angular_velocity = 0.0
-9:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:5/0/physics_layer_1/angular_velocity = 0.0
10:5/0 = 0
-10:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:5/0/physics_layer_0/angular_velocity = 0.0
-10:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:5/0/physics_layer_1/angular_velocity = 0.0
11:5/0 = 0
-11:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:5/0/physics_layer_0/angular_velocity = 0.0
11:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-11:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:5/0/physics_layer_1/angular_velocity = 0.0
12:5/0 = 0
-12:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:5/0/physics_layer_0/angular_velocity = 0.0
12:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:5/0/physics_layer_1/angular_velocity = 0.0
13:5/0 = 0
-13:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:5/0/physics_layer_0/angular_velocity = 0.0
13:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:5/0/physics_layer_1/angular_velocity = 0.0
14:5/0 = 0
-14:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:5/0/physics_layer_0/angular_velocity = 0.0
-14:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:5/0/physics_layer_1/angular_velocity = 0.0
15:5/0 = 0
-15:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:5/0/physics_layer_0/angular_velocity = 0.0
-15:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:5/0/physics_layer_1/angular_velocity = 0.0
16:5/0 = 0
-16:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:5/0/physics_layer_0/angular_velocity = 0.0
-16:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:5/0/physics_layer_1/angular_velocity = 0.0
8:6/0 = 0
-8:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:6/0/physics_layer_0/angular_velocity = 0.0
-8:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:6/0/physics_layer_1/angular_velocity = 0.0
9:6/0 = 0
-9:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:6/0/physics_layer_0/angular_velocity = 0.0
-9:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:6/0/physics_layer_1/angular_velocity = 0.0
10:6/0 = 0
-10:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:6/0/physics_layer_0/angular_velocity = 0.0
-10:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:6/0/physics_layer_1/angular_velocity = 0.0
11:6/0 = 0
-11:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:6/0/physics_layer_0/angular_velocity = 0.0
11:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, 1, 6.5, -3, 3, -6.5, -1.5)
-11:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:6/0/physics_layer_1/angular_velocity = 0.0
12:6/0 = 0
-12:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:6/0/physics_layer_0/angular_velocity = 0.0
12:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:6/0/physics_layer_1/angular_velocity = 0.0
13:6/0 = 0
-13:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:6/0/physics_layer_0/angular_velocity = 0.0
13:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 6, -0.5, 3, 3.5, -1.5, 6.5, -8, 8)
-13:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:6/0/physics_layer_1/angular_velocity = 0.0
14:6/0 = 0
-14:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:6/0/physics_layer_0/angular_velocity = 0.0
-14:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:6/0/physics_layer_1/angular_velocity = 0.0
15:6/0 = 0
-15:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:6/0/physics_layer_0/angular_velocity = 0.0
-15:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:6/0/physics_layer_1/angular_velocity = 0.0
16:6/0 = 0
-16:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:6/0/physics_layer_0/angular_velocity = 0.0
-16:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:6/0/physics_layer_1/angular_velocity = 0.0
-5:3/0 = 0
-5:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:3/0/physics_layer_0/angular_velocity = 0.0
-5:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:3/0/physics_layer_1/angular_velocity = 0.0
-[sub_resource type="TileSet" id="TileSet_kf7eg"]
+[sub_resource type="TileSet" id="TileSet_na7gm"]
physics_layer_0/collision_layer = 1
physics_layer_1/collision_layer = 2
physics_layer_1/collision_mask = 2
custom_data_layer_0/name = "Type"
custom_data_layer_0/type = 21
-sources/0 = SubResource("TileSetAtlasSource_easgx")
+sources/0 = SubResource("TileSetAtlasSource_cvmao")
[sub_resource type="RectangleShape2D" id="RectangleShape2D_tgk1y"]
size = Vector2(140, 160)
transition = 10
ease = 2
-[node name="ExampleScene2D" type="Node2D"]
+[node name="Root" type="Node2D"]
[node name="Background" type="CanvasLayer" parent="."]
layer = -3
[node name="ColorRect" type="ColorRect" parent="Background"]
+auto_translate_mode = 2
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_bottom = 548.0
grow_horizontal = 2
grow_vertical = 2
-auto_translate = false
localize_numeral_system = false
color = Color(0.137255, 0.14902, 0.196078, 1)
-[node name="TileMap" type="TileMap" parent="."]
-z_index = -1
+[node name="Pillar" type="TileMapLayer" parent="."]
+use_parent_material = true
+scale = Vector2(3, 3)
+tile_map_data = PackedByteArray("AAAAAPr/AAAKAAIAAAAAAPv/AAAKAAMAAAAAAPz/AAAKAAMAAAAAAP3/AAAKAAMAAAAAAP7/AAAKAAMAAAAAAP//AAAKAAMAAAABAPr/AAALAAIAAAABAPv/AAALAAEAAAABAPz/AAALAAEAAAABAP3/AAALAAEAAAABAP7/AAALAAEAAAABAP//AAALAAEAAAACAPr/AAAMAAIAAAACAPv/AAAMAAMAAAACAPz/AAAMAAMAAAACAP3/AAAMAAMAAAACAP7/AAAMAAMAAAACAP//AAAMAAMAAAA=")
+tile_set = SubResource("TileSet_na7gm")
+collision_enabled = false
+navigation_enabled = false
+
+[node name="Terrain" type="TileMapLayer" parent="."]
+use_parent_material = true
scale = Vector2(3, 3)
-tile_set = SubResource("TileSet_kf7eg")
-format = 2
-layer_0/name = "Background"
-layer_0/tile_data = PackedInt32Array(-393216, 655360, 2, -327680, 655360, 3, -262144, 655360, 3, -196608, 655360, 3, -131072, 655360, 3, -65536, 655360, 3, -393215, 720896, 2, -327679, 720896, 1, -262143, 720896, 1, -196607, 720896, 1, -131071, 720896, 1, -65535, 720896, 1, -393214, 786432, 2, -327678, 786432, 3, -262142, 786432, 3, -196606, 786432, 3, -131070, 786432, 3, -65534, 786432, 3)
-layer_1/name = "Terrain"
-layer_1/z_index = 1
-layer_1/tile_data = PackedInt32Array(1, 720896, 0, 2, 720896, 0, 3, 720896, 0, 4, 720896, 0, 5, 720896, 0, 6, 720896, 0, 7, 720896, 0, 8, 720896, 0, 9, 786432, 0, 65545, 786432, 1, 131081, 786432, 1, 196617, 786432, 1, 262153, 786432, 1, 327689, 786432, 1, 393225, 786432, 1, 65537, 720896, 1, 131073, 720896, 1, 196609, 720896, 1, 262145, 458752, 1, 327681, 720896, 1, 393217, 720896, 1, 65538, 720896, 1, 131074, 720896, 1, 196610, 720896, 1, 262146, 720896, 1, 327682, 720896, 1, 393218, 720896, 1, 65539, 720896, 1, 131075, 720896, 1, 196611, 720896, 1, 262147, 720896, 1, 327683, 720896, 1, 393219, 720896, 1, 65540, 458752, 1, 131076, 720896, 1, 196612, 720896, 1, 262148, 720896, 1, 327684, 720896, 1, 393220, 720896, 1, 65541, 720896, 1, 131077, 720896, 1, 196613, 720896, 1, 262149, 458752, 1, 327685, 720896, 1, 393221, 720896, 1, 65542, 720896, 1, 131078, 720896, 1, 196614, 720896, 1, 262150, 720896, 1, 327686, 720896, 1, 393222, 720896, 1, 65543, 720896, 1, 131079, 720896, 1, 196615, 720896, 1, 262151, 720896, 1, 327687, 720896, 1, 393223, 458752, 1, 65544, 720896, 1, 131080, 720896, 1, 196616, 458752, 1, 262152, 720896, 1, 327688, 720896, 1, 393224, 720896, 1, 65546, 524288, 5, 65547, 524288, 5, 65548, 524288, 5, 65549, 524288, 5, 131082, 524288, 6, 131083, 524288, 6, 131084, 524288, 6, 131085, 524288, 6, 196618, 720896, 1, 262154, 720896, 1, 196619, 720896, 1, 262155, 720896, 1, 196620, 720896, 1, 262156, 720896, 1, 196621, 720896, 1, 262157, 720896, 1, 65550, 524288, 5, 65551, 524288, 5, 65552, 524288, 5, 131086, 524288, 6, 131087, 524288, 6, 131088, 524288, 6, 196622, 720896, 1, 196623, 720896, 1, 262159, 720896, 1, 262160, 720896, 1, 196624, 720896, 1, 262158, 720896, 1, 17, 720896, 4, 65553, 720896, 5, 131089, 720896, 5, 196625, 720896, 5, 262161, 720896, 5, 18, 786432, 4, 19, 786432, 4, 20, 786432, 4, 21, 786432, 4, 22, 786432, 4, 23, 786432, 4, 65554, 786432, 5, 131090, 786432, 5, 196626, 786432, 5, 262162, 786432, 5, 65555, 786432, 5, 131091, 589824, 6, 196627, 786432, 5, 262163, 786432, 5, 65556, 786432, 5, 131092, 786432, 5, 196628, 786432, 5, 262164, 786432, 5, 65557, 786432, 5, 131093, 786432, 5, 196629, 786432, 5, 262165, 786432, 5, 65558, 786432, 5, 131094, 786432, 5, 196630, 786432, 5, 262166, 655360, 6, 65559, 786432, 5, 131095, 786432, 5, 196631, 786432, 5, 262167, 786432, 5, 327697, 720896, 5, 393233, 720896, 5, 327698, 589824, 6, 393234, 786432, 5, 327699, 786432, 5, 393235, 786432, 5, 327700, 786432, 5, 393236, 786432, 5, 327701, 786432, 5, 393237, 786432, 5, 327702, 786432, 5, 393238, 786432, 5, 327703, 786432, 5, 393239, 786432, 5, -131062, 720896, 4, -131061, 786432, 4, -131060, 786432, 4, -65526, 720896, 6, -65525, 786432, 6, -65524, 786432, 6, -131056, 851968, 4, -65520, 851968, 6, -131059, 786432, 4, -131058, 786432, 4, -131057, 786432, 4, -65523, 786432, 6, -65522, 786432, 6, -65521, 786432, 6, -65536, 917504, 2, -65535, 983040, 2, -65534, 1048576, 2, -65533, 917504, 2, -65532, 983040, 2, -65531, 1048576, 2, -65530, 917504, 2, -65529, 983040, 2, -65528, 1048576, 2, 65535, 655360, 0, 131071, 655360, 1, 196607, 655360, 1, 262143, 655360, 1, 327679, 655360, 1, 393215, 655360, 1, 458751, 655360, 1, 524287, 655360, 1, 589823, 655360, 1, 0, 720896, 0, 65536, 720896, 1, 131072, 720896, 1, 196608, 720896, 1, 262144, 720896, 1, 327680, 720896, 1, 393216, 720896, 1, 458752, 720896, 1, 524288, 720896, 1, 524289, 720896, 1, 524290, 720896, 1, 524291, 720896, 1, 524292, 720896, 1, 524293, 720896, 1, 524294, 720896, 1, 524295, 720896, 1, 524296, 720896, 1, 524297, 786432, 1, 458761, 786432, 1, 458760, 720896, 1, 458759, 720896, 1, 458758, 458752, 1, 458757, 720896, 1, 458756, 720896, 1, 458755, 720896, 1, 458754, 720896, 1, 458753, 720896, 1, -262145, 851968, 4, -196609, 851968, 5, -131073, 851968, 5, -65537, 851968, 5, -1, 851968, 6, -262146, 786432, 4, -262147, 786432, 4, -196610, 589824, 6, -196611, 786432, 5, -6, 786432, 5, -5, 786432, 5, -4, 786432, 5, -3, 786432, 5, -2, 786432, 5, -65538, 786432, 5, -131074, 786432, 5, -131075, 786432, 5, -65539, 655360, 6, 65534, 851968, 5, 131070, 851968, 5, 196606, 851968, 5, 262142, 851968, 5, 327678, 851968, 5, 393214, 851968, 5, 458750, 851968, 5, 65533, 786432, 5, 65532, 786432, 5, 65531, 786432, 5, 65530, 786432, 5, 65529, 720896, 5, 131066, 786432, 5, 196602, 786432, 5, 262138, 786432, 5, 262139, 786432, 5, 327675, 786432, 5, 131068, 786432, 5, 131069, 786432, 5, 196605, 786432, 5, 262141, 786432, 5, 327677, 786432, 5, 393213, 786432, 5, 458749, 786432, 5, 393212, 786432, 5, 393211, 786432, 5, 458748, 786432, 5, 327676, 655360, 6, 262140, 786432, 5, 196604, 786432, 5, 131067, 786432, 5, 196603, 589824, 6, 458747, 786432, 5, 458746, 786432, 5, 393210, 786432, 5, 327674, 786432, 5, -7, 720896, 5, 131065, 720896, 5, 196601, 720896, 5, 262137, 720896, 5, 327673, 720896, 5, 393209, 720896, 5, 458745, 720896, 5, -327684, 720896, 3, -196594, 720896, 3, -196597, 720896, 3, -65518, 720896, 3, -65516, 720896, 3, -327686, 1048576, 5, -327685, 720896, 3, -196595, 917504, 6, -65514, 983040, 6, -327683, 983040, 5, -65513, 1048576, 5, -262151, 720896, 4, -196615, 720896, 5, -131079, 720896, 5, -65543, 720896, 5, -262150, 786432, 4, -196614, 655360, 6, -131078, 786432, 5, -65542, 786432, 5, -262149, 786432, 4, -196613, 786432, 5, -131077, 786432, 5, -65541, 786432, 5, -262148, 786432, 4, -196612, 786432, 5, -131076, 786432, 5, -65540, 786432, 5, 458769, 720896, 5, 458775, 786432, 5, 458774, 786432, 5, 458773, 786432, 5, 458772, 786432, 5, 458771, 786432, 5, 458770, 786432, 5, 327690, 720896, 1, 393226, 720896, 1, 458762, 720896, 1, 524298, 720896, 1, 327691, 720896, 1, 393227, 720896, 1, 458763, 720896, 1, 524299, 720896, 1, 327692, 720896, 1, 393228, 720896, 1, 458764, 720896, 1, 524300, 720896, 1, 327693, 720896, 1, 393229, 720896, 1, 458765, 720896, 1, 524301, 720896, 1, 327694, 720896, 1, 393230, 720896, 1, 458766, 720896, 1, 524302, 720896, 1, 327695, 720896, 1, 393231, 720896, 1, 458767, 720896, 1, 524303, 720896, 1, 327696, 720896, 1, 393232, 720896, 1, 458768, 720896, 1, 524304, 720896, 1, 29, 851968, 4, 65565, 851968, 5, 131101, 851968, 5, 196637, 851968, 5, 262173, 851968, 5, 327709, 851968, 5, 393245, 851968, 5, 458781, 851968, 5, 24, 786432, 4, 25, 786432, 4, 26, 786432, 4, 27, 786432, 4, 28, 786432, 4, 65560, 786432, 5, 65561, 786432, 5, 65562, 786432, 5, 65563, 786432, 5, 65564, 786432, 5, 131100, 786432, 5, 196636, 589824, 6, 131099, 786432, 5, 131098, 786432, 5, 131097, 786432, 5, 131096, 786432, 5, 196632, 786432, 5, 262168, 786432, 5, 327704, 786432, 5, 393240, 786432, 5, 458776, 786432, 5, 196633, 786432, 5, 262169, 786432, 5, 327705, 786432, 5, 393241, 786432, 5, 458777, 786432, 5, 196634, 786432, 5, 262170, 786432, 5, 327706, 786432, 5, 393242, 655360, 6, 458778, 786432, 5, 196635, 786432, 5, 262171, 786432, 5, 327707, 786432, 5, 393243, 786432, 5, 458779, 786432, 5, 262172, 786432, 5, 327708, 786432, 5, 393244, 786432, 5, 458780, 786432, 5, -196593, 1048576, 6, -393182, 1048576, 6, -393185, 917504, 6, -393180, 983040, 6, -393184, 983040, 5, -65509, 720896, 3, -65510, 720896, 3, -393181, 720896, 3, -393183, 720896, 3, -65517, 720896, 3, -65515, 720896, 3, -327650, 720896, 4, -262114, 720896, 5, -196578, 720896, 5, -131042, 720896, 5, -65506, 720896, 5, -327649, 786432, 4, -327648, 786432, 4, -327647, 786432, 4, -327646, 786432, 4, -327645, 786432, 4, -327644, 786432, 4, -327643, 786432, 4, -65499, 786432, 5, -131035, 786432, 5, -196571, 786432, 5, -262107, 655360, 6, -262108, 786432, 5, -262109, 786432, 5, -262110, 786432, 5, -262111, 786432, 5, -262112, 786432, 5, -262113, 786432, 5, -196577, 655360, 6, -131041, 786432, 5, -65505, 786432, 5, -65500, 655360, 6, -131036, 589824, 6, -196572, 786432, 5, -196573, 786432, 5, -196574, 786432, 5, -196575, 786432, 5, -196576, 786432, 5, -131040, 589824, 6, -65504, 786432, 5, -65501, 786432, 5, -131037, 786432, 5, -131038, 786432, 5, -131039, 786432, 5, -65503, 786432, 5, -65502, 786432, 5, 524318, 720896, 6, 458782, 720896, 5, 393246, 720896, 5, 327710, 720896, 5, 262174, 720896, 5, 196638, 720896, 5, 131102, 720896, 5, 65566, 720896, 5, 30, 720896, 5, 524319, 786432, 6, 524320, 786432, 6, 524321, 786432, 6, 524322, 786432, 6, 524323, 786432, 6, 524324, 786432, 6, 524325, 786432, 6, 31, 786432, 5, 65567, 786432, 5, 131103, 786432, 5, 196639, 786432, 5, 262175, 786432, 5, 327711, 786432, 5, 393247, 655360, 6, 458783, 786432, 5, 32, 786432, 5, 65568, 786432, 5, 131104, 786432, 5, 196640, 786432, 5, 262176, 786432, 5, 327712, 786432, 5, 393248, 786432, 5, 458784, 786432, 5, 33, 786432, 5, 65569, 786432, 5, 131105, 655360, 6, 196641, 786432, 5, 262177, 786432, 5, 327713, 786432, 5, 393249, 786432, 5, 458785, 786432, 5, 34, 786432, 5, 65570, 786432, 5, 131106, 786432, 5, 196642, 786432, 5, 262178, 655360, 6, 327714, 655360, 6, 393250, 786432, 5, 458786, 786432, 5, 35, 786432, 5, 65571, 786432, 5, 131107, 786432, 5, 196643, 786432, 5, 262179, 786432, 5, 327715, 786432, 5, 393251, 786432, 5, 458787, 786432, 5, 36, 655360, 6, 65572, 786432, 5, 131108, 786432, 5, 196644, 786432, 5, 262180, 786432, 5, 327716, 786432, 5, 393252, 786432, 5, 458788, 655360, 6, 37, 786432, 5, 65573, 786432, 5, 131109, 786432, 5, 196645, 786432, 5, 262181, 655360, 6, 327717, 786432, 5, 393253, 786432, 5, 458789, 786432, 5, 524281, 720896, 5, 524285, 786432, 5, 524284, 786432, 5, 524283, 786432, 5, 524282, 786432, 5, 589818, 786432, 5, 589819, 786432, 5, 589820, 786432, 5, 655356, 786432, 5, 655357, 786432, 5, 589821, 786432, 5, 655355, 786432, 5, 655354, 786432, 5, 720890, 786432, 5, 720891, 786432, 5, 720892, 786432, 5, 720893, 786432, 5, 720894, 851968, 5, 786429, 786432, 5, 786428, 786432, 5, 786427, 786432, 5, 786426, 786432, 5, 851962, 786432, 5, 917498, 786432, 5, 917499, 786432, 5, 851964, 786432, 5, 851965, 786432, 5, 917501, 786432, 5, 917500, 786432, 5, 851963, 786432, 5, 589817, 720896, 5, 655353, 720896, 5, 720889, 720896, 5, 786425, 720896, 5, 851961, 720896, 5, 917497, 720896, 5, 524286, 851968, 5, 589822, 851968, 5, 655358, 851968, 5, 786430, 851968, 5, 851966, 851968, 5, 917502, 851968, 5, 589824, 720896, 1, 655360, 720896, 1, 720896, 720896, 1, 786432, 720896, 1, 851968, 720896, 1, 589825, 720896, 1, 655361, 720896, 1, 720897, 720896, 1, 786433, 720896, 1, 851969, 720896, 1, 589826, 720896, 1, 655362, 720896, 1, 720898, 720896, 1, 786434, 720896, 1, 851970, 720896, 1, 589827, 720896, 1, 655363, 720896, 1, 720899, 720896, 1, 786435, 720896, 1, 851971, 720896, 1, 589828, 720896, 1, 655364, 720896, 1, 720900, 720896, 1, 786436, 720896, 1, 851972, 720896, 1, 589829, 720896, 1, 655365, 720896, 1, 720901, 720896, 1, 786437, 720896, 1, 851973, 720896, 1, 589830, 720896, 1, 655366, 720896, 1, 720902, 720896, 1, 786438, 720896, 1, 851974, 720896, 1, 589831, 720896, 1, 655367, 720896, 1, 720903, 720896, 1, 786439, 720896, 1, 851975, 720896, 1, 589832, 720896, 1, 655368, 720896, 1, 720904, 720896, 1, 786440, 720896, 1, 851976, 720896, 1, 589833, 786432, 1, 655369, 786432, 1, 720905, 786432, 1, 786441, 786432, 1, 851977, 786432, 1, 655359, 655360, 1, 720895, 655360, 1, 786431, 655360, 1, 851967, 655360, 1, 917503, 655360, 1, 589834, 720896, 1, 655370, 720896, 1, 720906, 720896, 1, 786442, 720896, 1, 851978, 720896, 1, 589835, 720896, 1, 655371, 720896, 1, 720907, 720896, 1, 786443, 720896, 1, 851979, 720896, 1, 589836, 720896, 1, 655372, 720896, 1, 720908, 720896, 1, 786444, 720896, 1, 851980, 720896, 1, 589837, 720896, 1, 655373, 720896, 1, 720909, 720896, 1, 786445, 720896, 1, 851981, 720896, 1, 589838, 720896, 1, 655374, 720896, 1, 720910, 720896, 1, 786446, 720896, 1, 851982, 720896, 1, 589839, 720896, 1, 655375, 720896, 1, 720911, 720896, 1, 786447, 720896, 1, 851983, 720896, 1, 589840, 720896, 1, 655376, 720896, 1, 720912, 720896, 1, 786448, 720896, 1, 851984, 720896, 1, 851985, 720896, 6, 851986, 786432, 6, 851987, 786432, 6, 851988, 786432, 6, 851989, 786432, 6, 851990, 786432, 6, 851991, 786432, 6, 851992, 786432, 6, 851993, 786432, 6, 851994, 786432, 6, 851995, 786432, 6, 851996, 786432, 6, 851997, 851968, 6, 524306, 786432, 5, 589842, 786432, 5, 655378, 786432, 5, 720914, 786432, 5, 786450, 786432, 5, 524307, 786432, 5, 589843, 786432, 5, 655379, 786432, 5, 720915, 786432, 5, 786451, 786432, 5, 524308, 786432, 5, 589844, 786432, 5, 655380, 786432, 5, 720916, 786432, 5, 786452, 786432, 5, 524309, 786432, 5, 589845, 786432, 5, 655381, 786432, 5, 720917, 786432, 5, 786453, 786432, 5, 524310, 786432, 5, 589846, 786432, 5, 655382, 786432, 5, 720918, 786432, 5, 786454, 786432, 5, 524311, 786432, 5, 589847, 786432, 5, 655383, 786432, 5, 720919, 786432, 5, 786455, 786432, 5, 524312, 786432, 5, 589848, 786432, 5, 655384, 786432, 5, 720920, 786432, 5, 786456, 786432, 5, 524313, 786432, 5, 589849, 786432, 5, 655385, 786432, 5, 720921, 786432, 5, 786457, 786432, 5, 524314, 786432, 5, 589850, 786432, 5, 655386, 786432, 5, 720922, 786432, 5, 786458, 786432, 5, 524315, 786432, 5, 589851, 786432, 5, 655387, 786432, 5, 720923, 786432, 5, 786459, 786432, 5, 524316, 786432, 5, 589852, 786432, 5, 655388, 786432, 5, 720924, 786432, 5, 786460, 786432, 5, 524305, 720896, 5, 589841, 720896, 5, 655377, 720896, 5, 720913, 720896, 5, 786449, 720896, 5, 524317, 851968, 5, 589853, 851968, 5, 655389, 851968, 5, 720925, 851968, 5, 786461, 851968, 5, -262106, 786432, 5, -196570, 786432, 5, -131034, 786432, 5, -65498, 786432, 5, 38, 786432, 5, 65574, 786432, 5, 131110, 655360, 6, 196646, 786432, 5, 262182, 786432, 5, 327718, 786432, 5, 393254, 786432, 5, 458790, 786432, 5, -262105, 786432, 5, -196569, 786432, 5, -131033, 786432, 5, -65497, 786432, 5, 39, 786432, 5, 65575, 786432, 5, 131111, 786432, 5, 196647, 786432, 5, 262183, 786432, 5, 327719, 786432, 5, 393255, 655360, 6, 458791, 786432, 5, -262104, 786432, 5, -196568, 786432, 5, -131032, 786432, 5, -65496, 786432, 5, 40, 655360, 6, 65576, 786432, 5, 131112, 786432, 5, 196648, 786432, 5, 262184, 655360, 6, 327720, 786432, 5, 393256, 786432, 5, 458792, 786432, 5, -262103, 786432, 5, -196567, 655360, 6, -131031, 786432, 5, -65495, 786432, 5, 41, 786432, 5, 65577, 786432, 5, 131113, 786432, 5, 196649, 786432, 5, 262185, 786432, 5, 327721, 786432, 5, 393257, 786432, 5, 458793, 786432, 5, -262102, 786432, 5, -196566, 786432, 5, -131030, 786432, 5, -65494, 786432, 5, 42, 786432, 5, 65578, 786432, 5, 131114, 655360, 6, 196650, 786432, 5, 262186, 786432, 5, 327722, 786432, 5, 393258, 786432, 5, 458794, 655360, 6, 524326, 786432, 6, 524327, 786432, 6, 524328, 786432, 6, 524329, 786432, 6, 524330, 786432, 6, -327642, 786432, 4, -327641, 786432, 4, -327640, 786432, 4, -327639, 786432, 4, -327638, 786432, 4, -327632, 851968, 4, -262096, 851968, 5, -196560, 851968, 5, -131024, 851968, 5, -65488, 851968, 5, 48, 851968, 5, 65584, 851968, 5, 131120, 851968, 5, 196656, 851968, 5, 262192, 851968, 5, 327728, 851968, 5, 393264, 851968, 5, 458800, 851968, 5, 524336, 851968, 6, -327637, 786432, 4, -327636, 786432, 4, -327635, 786432, 4, -327634, 786432, 4, -327633, 786432, 4, -262101, 786432, 5, -196565, 786432, 5, -131029, 655360, 6, -65493, 786432, 5, 43, 786432, 5, 65579, 786432, 5, 131115, 786432, 5, 196651, 786432, 5, 262187, 786432, 5, 327723, 655360, 6, 393259, 786432, 5, 458795, 786432, 5, -262100, 786432, 5, -196564, 786432, 5, -131028, 786432, 5, -65492, 786432, 5, 44, 655360, 6, 65580, 786432, 5, 131116, 786432, 5, 196652, 786432, 5, 262188, 786432, 5, 327724, 786432, 5, 393260, 786432, 5, 458796, 786432, 5, -262099, 786432, 5, -196563, 786432, 5, -131027, 786432, 5, -65491, 786432, 5, 45, 786432, 5, 65581, 655360, 6, 131117, 786432, 5, 196653, 786432, 5, 262189, 786432, 5, 327725, 786432, 5, 393261, 786432, 5, 458797, 786432, 5, -262098, 655360, 6, -196562, 786432, 5, -131026, 786432, 5, -65490, 786432, 5, 46, 786432, 5, 65582, 786432, 5, 131118, 786432, 5, 196654, 655360, 6, 262190, 786432, 5, 327726, 786432, 5, 393262, 786432, 5, 458798, 655360, 6, -262097, 786432, 5, -196561, 786432, 5, -131025, 786432, 5, -65489, 786432, 5, 47, 786432, 5, 65583, 786432, 5, 131119, 786432, 5, 196655, 786432, 5, 262191, 786432, 5, 327727, 786432, 5, 393263, 786432, 5, 458799, 786432, 5, 524331, 786432, 6, 524332, 786432, 6, 524333, 786432, 6, 524334, 786432, 6, 524335, 786432, 6)
+tile_map_data = PackedByteArray("AAABAAAAAAALAAAAAAACAAAAAAALAAAAAAADAAAAAAALAAAAAAAEAAAAAAALAAAAAAAFAAAAAAALAAAAAAAGAAAAAAALAAAAAAAHAAAAAAALAAAAAAAIAAAAAAALAAAAAAAJAAAAAAAMAAAAAAAJAAEAAAAMAAEAAAAJAAIAAAAMAAEAAAAJAAMAAAAMAAEAAAAJAAQAAAAMAAEAAAAJAAUAAAAMAAEAAAAJAAYAAAAMAAEAAAABAAEAAAALAAEAAAABAAIAAAALAAEAAAABAAMAAAALAAEAAAABAAQAAAAHAAEAAAABAAUAAAALAAEAAAABAAYAAAALAAEAAAACAAEAAAALAAEAAAACAAIAAAALAAEAAAACAAMAAAALAAEAAAACAAQAAAALAAEAAAACAAUAAAALAAEAAAACAAYAAAALAAEAAAADAAEAAAALAAEAAAADAAIAAAALAAEAAAADAAMAAAALAAEAAAADAAQAAAALAAEAAAADAAUAAAALAAEAAAADAAYAAAALAAEAAAAEAAEAAAAHAAEAAAAEAAIAAAALAAEAAAAEAAMAAAALAAEAAAAEAAQAAAALAAEAAAAEAAUAAAALAAEAAAAEAAYAAAALAAEAAAAFAAEAAAALAAEAAAAFAAIAAAALAAEAAAAFAAMAAAALAAEAAAAFAAQAAAAHAAEAAAAFAAUAAAALAAEAAAAFAAYAAAALAAEAAAAGAAEAAAALAAEAAAAGAAIAAAALAAEAAAAGAAMAAAALAAEAAAAGAAQAAAALAAEAAAAGAAUAAAALAAEAAAAGAAYAAAALAAEAAAAHAAEAAAALAAEAAAAHAAIAAAALAAEAAAAHAAMAAAALAAEAAAAHAAQAAAALAAEAAAAHAAUAAAALAAEAAAAHAAYAAAAHAAEAAAAIAAEAAAALAAEAAAAIAAIAAAALAAEAAAAIAAMAAAAHAAEAAAAIAAQAAAALAAEAAAAIAAUAAAALAAEAAAAIAAYAAAALAAEAAAAKAAEAAAAIAAUAAAALAAEAAAAIAAUAAAAMAAEAAAAIAAUAAAANAAEAAAAIAAUAAAAKAAIAAAAIAAYAAAALAAIAAAAIAAYAAAAMAAIAAAAIAAYAAAANAAIAAAAIAAYAAAAKAAMAAAALAAEAAAAKAAQAAAALAAEAAAALAAMAAAALAAEAAAALAAQAAAALAAEAAAAMAAMAAAALAAEAAAAMAAQAAAALAAEAAAANAAMAAAALAAEAAAANAAQAAAALAAEAAAAOAAEAAAAIAAUAAAAPAAEAAAAIAAUAAAAQAAEAAAAIAAUAAAAOAAIAAAAIAAYAAAAPAAIAAAAIAAYAAAAQAAIAAAAIAAYAAAAOAAMAAAALAAEAAAAPAAMAAAALAAEAAAAPAAQAAAALAAEAAAAQAAQAAAALAAEAAAAQAAMAAAALAAEAAAAOAAQAAAALAAEAAAARAAAAAAALAAQAAAARAAEAAAALAAUAAAARAAIAAAALAAUAAAARAAMAAAALAAUAAAARAAQAAAALAAUAAAASAAAAAAAMAAQAAAATAAAAAAAMAAQAAAAUAAAAAAAMAAQAAAAVAAAAAAAMAAQAAAAWAAAAAAAMAAQAAAAXAAAAAAAMAAQAAAASAAEAAAAMAAUAAAASAAIAAAAMAAUAAAASAAMAAAAMAAUAAAASAAQAAAAMAAUAAAATAAEAAAAMAAUAAAATAAIAAAAJAAYAAAATAAMAAAAMAAUAAAATAAQAAAAMAAUAAAAUAAEAAAAMAAUAAAAUAAIAAAAMAAUAAAAUAAMAAAAMAAUAAAAUAAQAAAAMAAUAAAAVAAEAAAAMAAUAAAAVAAIAAAAMAAUAAAAVAAMAAAAMAAUAAAAVAAQAAAAMAAUAAAAWAAEAAAAMAAUAAAAWAAIAAAAMAAUAAAAWAAMAAAAMAAUAAAAWAAQAAAAKAAYAAAAXAAEAAAAMAAUAAAAXAAIAAAAMAAUAAAAXAAMAAAAMAAUAAAAXAAQAAAAMAAUAAAARAAUAAAALAAUAAAARAAYAAAALAAUAAAASAAUAAAAJAAYAAAASAAYAAAAMAAUAAAATAAUAAAAMAAUAAAATAAYAAAAMAAUAAAAUAAUAAAAMAAUAAAAUAAYAAAAMAAUAAAAVAAUAAAAMAAUAAAAVAAYAAAAMAAUAAAAWAAUAAAAMAAUAAAAWAAYAAAAMAAUAAAAXAAUAAAAMAAUAAAAXAAYAAAAMAAUAAAAKAP7/AAALAAQAAAALAP7/AAAMAAQAAAAMAP7/AAAMAAQAAAAKAP//AAALAAYAAAALAP//AAAMAAYAAAAMAP//AAAMAAYAAAAQAP7/AAANAAQAAAAQAP//AAANAAYAAAANAP7/AAAMAAQAAAAOAP7/AAAMAAQAAAAPAP7/AAAMAAQAAAANAP//AAAMAAYAAAAOAP//AAAMAAYAAAAPAP//AAAMAAYAAAADAP//AAAOAAIAAAAEAP//AAAPAAIAAAAFAP//AAAQAAIAAAAGAP//AAAOAAIAAAAHAP//AAAPAAIAAAAIAP//AAAQAAIAAAD//wAAAAAKAAAAAAD//wEAAAAKAAEAAAD//wIAAAAKAAEAAAD//wMAAAAKAAEAAAD//wQAAAAKAAEAAAD//wUAAAAKAAEAAAD//wYAAAAKAAEAAAD//wcAAAAKAAEAAAD//wgAAAAKAAEAAAAAAAAAAAALAAAAAAAAAAEAAAALAAEAAAAAAAIAAAALAAEAAAAAAAMAAAALAAEAAAAAAAQAAAALAAEAAAAAAAUAAAALAAEAAAAAAAYAAAALAAEAAAAAAAcAAAALAAEAAAAAAAgAAAALAAEAAAABAAgAAAALAAEAAAACAAgAAAALAAEAAAADAAgAAAALAAEAAAAEAAgAAAALAAEAAAAFAAgAAAALAAEAAAAGAAgAAAALAAEAAAAHAAgAAAALAAEAAAAIAAgAAAALAAEAAAAJAAgAAAAMAAEAAAAJAAcAAAAMAAEAAAAIAAcAAAALAAEAAAAHAAcAAAALAAEAAAAGAAcAAAAHAAEAAAAFAAcAAAALAAEAAAAEAAcAAAALAAEAAAADAAcAAAALAAEAAAACAAcAAAALAAEAAAABAAcAAAALAAEAAAD///v/AAANAAQAAAD///z/AAANAAUAAAD///3/AAANAAUAAAD///7/AAANAAUAAAD/////AAANAAYAAAD+//v/AAAMAAQAAAD9//v/AAAMAAQAAAD+//z/AAAJAAYAAAD9//z/AAAMAAUAAAD6////AAAMAAUAAAD7////AAAMAAUAAAD8////AAAMAAUAAAD9////AAAMAAUAAAD+////AAAMAAUAAAD+//7/AAAMAAUAAAD+//3/AAAMAAUAAAD9//3/AAAMAAUAAAD9//7/AAAKAAYAAAD+/wAAAAANAAUAAAD+/wEAAAANAAUAAAD+/wIAAAANAAUAAAD+/wMAAAANAAUAAAD+/wQAAAANAAUAAAD+/wUAAAANAAUAAAD+/wYAAAANAAUAAAD9/wAAAAAMAAUAAAD8/wAAAAAMAAUAAAD7/wAAAAAMAAUAAAD6/wAAAAAMAAUAAAD5/wAAAAALAAUAAAD6/wEAAAAMAAUAAAD6/wIAAAAMAAUAAAD6/wMAAAAMAAUAAAD7/wMAAAAMAAUAAAD7/wQAAAAMAAUAAAD8/wEAAAAMAAUAAAD9/wEAAAAMAAUAAAD9/wIAAAAMAAUAAAD9/wMAAAAMAAUAAAD9/wQAAAAMAAUAAAD9/wUAAAAMAAUAAAD9/wYAAAAMAAUAAAD8/wUAAAAMAAUAAAD7/wUAAAAMAAUAAAD8/wYAAAAMAAUAAAD8/wQAAAAKAAYAAAD8/wMAAAAMAAUAAAD8/wIAAAAMAAUAAAD7/wEAAAAMAAUAAAD7/wIAAAAJAAYAAAD7/wYAAAAMAAUAAAD6/wYAAAAMAAUAAAD6/wUAAAAMAAUAAAD6/wQAAAAMAAUAAAD5////AAALAAUAAAD5/wEAAAALAAUAAAD5/wIAAAALAAUAAAD5/wMAAAALAAUAAAD5/wQAAAALAAUAAAD5/wUAAAALAAUAAAD5/wYAAAALAAUAAAD8//r/AAALAAMAAAAOAP3/AAALAAMAAAALAP3/AAALAAMAAAASAP//AAALAAMAAAAUAP//AAALAAMAAAD6//r/AAAQAAUAAAD7//r/AAALAAMAAAANAP3/AAAOAAYAAAAWAP//AAAPAAYAAAD9//r/AAAPAAUAAAAXAP//AAAQAAUAAAD5//v/AAALAAQAAAD5//z/AAALAAUAAAD5//3/AAALAAUAAAD5//7/AAALAAUAAAD6//v/AAAMAAQAAAD6//z/AAAKAAYAAAD6//3/AAAMAAUAAAD6//7/AAAMAAUAAAD7//v/AAAMAAQAAAD7//z/AAAMAAUAAAD7//3/AAAMAAUAAAD7//7/AAAMAAUAAAD8//v/AAAMAAQAAAD8//z/AAAMAAUAAAD8//3/AAAMAAUAAAD8//7/AAAMAAUAAAARAAcAAAALAAUAAAARAAgAAAALAAYAAAAXAAcAAAAMAAUAAAAWAAcAAAAMAAUAAAAVAAcAAAAMAAUAAAAUAAcAAAAMAAUAAAATAAcAAAAMAAUAAAASAAcAAAAMAAUAAAASAAgAAAAMAAYAAAATAAgAAAAMAAYAAAAUAAgAAAAMAAYAAAAVAAgAAAAMAAYAAAAWAAgAAAAMAAYAAAAXAAgAAAAMAAYAAAAKAAUAAAALAAEAAAAKAAYAAAALAAEAAAAKAAcAAAALAAEAAAAKAAgAAAALAAEAAAALAAUAAAALAAEAAAALAAYAAAALAAEAAAALAAcAAAALAAEAAAALAAgAAAALAAEAAAAMAAUAAAALAAEAAAAMAAYAAAALAAEAAAAMAAcAAAALAAEAAAAMAAgAAAALAAEAAAANAAUAAAALAAEAAAANAAYAAAALAAEAAAANAAcAAAALAAEAAAANAAgAAAALAAEAAAAOAAUAAAALAAEAAAAOAAYAAAALAAEAAAAOAAcAAAALAAEAAAAOAAgAAAALAAEAAAAPAAUAAAALAAEAAAAPAAYAAAALAAEAAAAPAAcAAAALAAEAAAAPAAgAAAALAAEAAAAQAAUAAAALAAEAAAAQAAYAAAALAAEAAAAQAAcAAAALAAEAAAAQAAgAAAALAAEAAAAdAAAAAAANAAQAAAAdAAEAAAANAAUAAAAdAAIAAAANAAUAAAAdAAMAAAANAAUAAAAdAAQAAAANAAUAAAAdAAUAAAANAAUAAAAdAAYAAAANAAUAAAAdAAcAAAANAAUAAAAdAAgAAAANAAYAAAAYAAAAAAAMAAQAAAAZAAAAAAAMAAQAAAAaAAAAAAAMAAQAAAAbAAAAAAAMAAQAAAAcAAAAAAAMAAQAAAAYAAEAAAAMAAUAAAAZAAEAAAAMAAUAAAAaAAEAAAAMAAUAAAAbAAEAAAAMAAUAAAAcAAEAAAAMAAUAAAAcAAIAAAAMAAUAAAAcAAMAAAAJAAYAAAAbAAIAAAAMAAUAAAAaAAIAAAAMAAUAAAAZAAIAAAAMAAUAAAAYAAIAAAAMAAUAAAAYAAMAAAAMAAUAAAAYAAQAAAAMAAUAAAAYAAUAAAAMAAUAAAAYAAYAAAAMAAUAAAAYAAcAAAAMAAUAAAAYAAgAAAAMAAYAAAAZAAMAAAAMAAUAAAAZAAQAAAAMAAUAAAAZAAUAAAAMAAUAAAAZAAYAAAAMAAUAAAAZAAcAAAAMAAUAAAAZAAgAAAAMAAYAAAAaAAMAAAAMAAUAAAAaAAQAAAAMAAUAAAAaAAUAAAAMAAUAAAAaAAYAAAAKAAYAAAAaAAcAAAAMAAUAAAAaAAgAAAAMAAYAAAAbAAMAAAAMAAUAAAAbAAQAAAAMAAUAAAAbAAUAAAAMAAUAAAAbAAYAAAAMAAUAAAAbAAcAAAAMAAUAAAAbAAgAAAAMAAYAAAAcAAQAAAAMAAUAAAAcAAUAAAAMAAUAAAAcAAYAAAAMAAUAAAAcAAcAAAAMAAUAAAAcAAgAAAAMAAYAAAAPAP3/AAAQAAYAAAAiAPr/AAAQAAYAAAAfAPr/AAAOAAYAAAAkAPr/AAAPAAYAAAAgAPr/AAAPAAUAAAAbAP//AAALAAMAAAAaAP//AAALAAMAAAAjAPr/AAALAAMAAAAhAPr/AAALAAMAAAATAP//AAALAAMAAAAVAP//AAALAAMAAAAeAPv/AAALAAQAAAAeAPz/AAALAAUAAAAeAP3/AAALAAUAAAAeAP7/AAALAAUAAAAeAP//AAALAAUAAAAmAP//AAANAAUAAAAmAP7/AAANAAUAAAAmAP3/AAANAAUAAAAmAPv/AAANAAQAAAAfAPv/AAAMAAQAAAAgAPv/AAAMAAQAAAAhAPv/AAAMAAQAAAAiAPv/AAAMAAQAAAAjAPv/AAAMAAQAAAAkAPv/AAAMAAQAAAAlAPv/AAAMAAQAAAAmAPz/AAANAAUAAAAlAP//AAAMAAUAAAAlAP7/AAAMAAUAAAAlAP3/AAAMAAUAAAAlAPz/AAAMAAUAAAAkAPz/AAAMAAUAAAAjAPz/AAAMAAUAAAAiAPz/AAAMAAUAAAAhAPz/AAAMAAUAAAAgAPz/AAAMAAUAAAAfAPz/AAAMAAUAAAAfAP3/AAAKAAYAAAAfAP7/AAAMAAUAAAAfAP//AAAMAAUAAAAkAP//AAAKAAYAAAAkAP7/AAAJAAYAAAAkAP3/AAAMAAUAAAAjAP3/AAAMAAUAAAAiAP3/AAAMAAUAAAAhAP3/AAAMAAUAAAAgAP3/AAAMAAUAAAAgAP7/AAAJAAYAAAAgAP//AAAMAAUAAAAjAP//AAAMAAUAAAAjAP7/AAAMAAUAAAAiAP7/AAAMAAUAAAAhAP7/AAAMAAUAAAAhAP//AAAMAAUAAAAiAP//AAAMAAUAAAAeAAgAAAALAAYAAAAeAAcAAAALAAUAAAAeAAYAAAALAAUAAAAeAAUAAAALAAUAAAAeAAQAAAALAAUAAAAeAAMAAAALAAUAAAAeAAIAAAALAAUAAAAeAAEAAAALAAUAAAAeAAAAAAALAAUAAAAfAAgAAAAMAAYAAAAgAAgAAAAMAAYAAAAhAAgAAAAMAAYAAAAiAAgAAAAMAAYAAAAjAAgAAAAMAAYAAAAkAAgAAAAMAAYAAAAlAAgAAAAMAAYAAAAmAAgAAAANAAYAAAAmAAAAAAANAAUAAAAmAAEAAAANAAUAAAAmAAIAAAANAAUAAAAmAAMAAAANAAUAAAAmAAQAAAANAAUAAAAmAAUAAAANAAUAAAAmAAYAAAANAAUAAAAmAAcAAAANAAUAAAAfAAAAAAAMAAUAAAAfAAEAAAAMAAUAAAAfAAIAAAAMAAUAAAAfAAMAAAAMAAUAAAAfAAQAAAAMAAUAAAAfAAUAAAAMAAUAAAAfAAYAAAAKAAYAAAAfAAcAAAAMAAUAAAAgAAAAAAAMAAUAAAAgAAEAAAAMAAUAAAAgAAIAAAAMAAUAAAAgAAMAAAAMAAUAAAAgAAQAAAAMAAUAAAAgAAUAAAAMAAUAAAAgAAYAAAAMAAUAAAAgAAcAAAAMAAUAAAAhAAAAAAAMAAUAAAAhAAEAAAAMAAUAAAAhAAIAAAAKAAYAAAAhAAMAAAAMAAUAAAAhAAQAAAAMAAUAAAAhAAUAAAAMAAUAAAAhAAYAAAAMAAUAAAAhAAcAAAAMAAUAAAAiAAAAAAAMAAUAAAAiAAEAAAAMAAUAAAAiAAIAAAAMAAUAAAAiAAMAAAAMAAUAAAAiAAQAAAAKAAYAAAAiAAUAAAAKAAYAAAAiAAYAAAAMAAUAAAAiAAcAAAAMAAUAAAAjAAAAAAAMAAUAAAAjAAEAAAAMAAUAAAAjAAIAAAAMAAUAAAAjAAMAAAAMAAUAAAAjAAQAAAAMAAUAAAAjAAUAAAAMAAUAAAAjAAYAAAAMAAUAAAAjAAcAAAAMAAUAAAAkAAAAAAAKAAYAAAAkAAEAAAAMAAUAAAAkAAIAAAAMAAUAAAAkAAMAAAAMAAUAAAAkAAQAAAAMAAUAAAAkAAUAAAAMAAUAAAAkAAYAAAAMAAUAAAAkAAcAAAAKAAYAAAAlAAAAAAAMAAUAAAAlAAEAAAAMAAUAAAAlAAIAAAAMAAUAAAAlAAMAAAAMAAUAAAAlAAQAAAAMAAUAAAAlAAUAAAAMAAUAAAAlAAYAAAAMAAUAAAAlAAcAAAAMAAUAAAD6/wcAAAAMAAUAAAD7/wcAAAAMAAUAAAD8/wcAAAAMAAUAAAD9/wcAAAAMAAUAAAD5/wcAAAALAAUAAAD+/wcAAAANAAUAAAD5/wgAAAALAAYAAAD6/wgAAAAMAAYAAAD7/wgAAAAMAAYAAAD8/wgAAAAMAAYAAAD9/wgAAAAMAAYAAAD+/wgAAAANAAYAAAA=")
+tile_set = SubResource("TileSet_na7gm")
[node name="UI" type="CanvasLayer" parent="."]
visible = false
[node name="Camera2D" type="Camera2D" parent="."]
+physics_interpolation_mode = 1
position = Vector2(227, -28)
+process_callback = 0
position_smoothing_speed = 10.0
[node name="PhantomCameraHost" type="Node" parent="Camera2D"]
+process_priority = 300
+process_physics_priority = 300
script = ExtResource("4_j7670")
[node name="Player" type="Node" parent="."]
[node name="PlayerPhantomCamera2D" type="Node2D" parent="Player" node_paths=PackedStringArray("follow_target")]
unique_name_in_owner = true
+top_level = true
position = Vector2(227, -28)
script = ExtResource("5_gvv7r")
priority = 5
follow_mode = 2
-follow_target = NodePath("../CharacterBody2D/PlayerVisuals")
+follow_target = NodePath("../CharacterBody2D")
tween_resource = ExtResource("6_rwobr")
tween_on_load = false
follow_damping = true
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_easgx"]
texture = ExtResource("1_1utlo")
0:0/0 = 0
-0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-0:0/0/physics_layer_0/angular_velocity = 0.0
-0:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-0:0/0/physics_layer_1/angular_velocity = 0.0
1:0/0 = 0
-1:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-1:0/0/physics_layer_0/angular_velocity = 0.0
-1:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-1:0/0/physics_layer_1/angular_velocity = 0.0
2:0/0 = 0
-2:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-2:0/0/physics_layer_0/angular_velocity = 0.0
-2:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-2:0/0/physics_layer_1/angular_velocity = 0.0
3:0/0 = 0
-3:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:0/0/physics_layer_0/angular_velocity = 0.0
-3:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:0/0/physics_layer_1/angular_velocity = 0.0
4:0/0 = 0
-4:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:0/0/physics_layer_0/angular_velocity = 0.0
-4:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:0/0/physics_layer_1/angular_velocity = 0.0
5:0/0 = 0
-5:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:0/0/physics_layer_0/angular_velocity = 0.0
-5:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:0/0/physics_layer_1/angular_velocity = 0.0
6:0/0 = 0
-6:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-6:0/0/physics_layer_0/angular_velocity = 0.0
-6:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-6:0/0/physics_layer_1/angular_velocity = 0.0
7:0/0 = 0
-7:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:0/0/physics_layer_0/angular_velocity = 0.0
7:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-7:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:0/0/physics_layer_1/angular_velocity = 0.0
0:1/0 = 0
-0:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-0:1/0/physics_layer_0/angular_velocity = 0.0
-0:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-0:1/0/physics_layer_1/angular_velocity = 0.0
1:1/0 = 0
-1:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-1:1/0/physics_layer_0/angular_velocity = 0.0
-1:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-1:1/0/physics_layer_1/angular_velocity = 0.0
2:1/0 = 0
-2:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-2:1/0/physics_layer_0/angular_velocity = 0.0
-2:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-2:1/0/physics_layer_1/angular_velocity = 0.0
3:1/0 = 0
-3:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:1/0/physics_layer_0/angular_velocity = 0.0
-3:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:1/0/physics_layer_1/angular_velocity = 0.0
4:1/0 = 0
-4:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:1/0/physics_layer_0/angular_velocity = 0.0
-4:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:1/0/physics_layer_1/angular_velocity = 0.0
5:1/0 = 0
-5:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:1/0/physics_layer_0/angular_velocity = 0.0
-5:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:1/0/physics_layer_1/angular_velocity = 0.0
7:1/0 = 0
-7:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:1/0/physics_layer_0/angular_velocity = 0.0
7:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-7:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:1/0/physics_layer_1/angular_velocity = 0.0
2:2/0 = 0
-2:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-2:2/0/physics_layer_0/angular_velocity = 0.0
-2:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-2:2/0/physics_layer_1/angular_velocity = 0.0
3:2/0 = 0
-3:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:2/0/physics_layer_0/angular_velocity = 0.0
-3:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:2/0/physics_layer_1/angular_velocity = 0.0
4:2/0 = 0
-4:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:2/0/physics_layer_0/angular_velocity = 0.0
-4:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:2/0/physics_layer_1/angular_velocity = 0.0
7:2/0 = 0
-7:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:2/0/physics_layer_0/angular_velocity = 0.0
7:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-7:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:2/0/physics_layer_1/angular_velocity = 0.0
3:3/0 = 0
-3:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:3/0/physics_layer_0/angular_velocity = 0.0
-3:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:3/0/physics_layer_1/angular_velocity = 0.0
4:3/0 = 0
-4:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:3/0/physics_layer_0/angular_velocity = 0.0
-4:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:3/0/physics_layer_1/angular_velocity = 0.0
5:3/0 = 0
-5:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:3/0/physics_layer_0/angular_velocity = 0.0
-5:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:3/0/physics_layer_1/angular_velocity = 0.0
7:3/0 = 0
-7:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:3/0/physics_layer_0/angular_velocity = 0.0
7:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-7:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:3/0/physics_layer_1/angular_velocity = 0.0
3:4/0 = 0
-3:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:4/0/physics_layer_0/angular_velocity = 0.0
-3:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:4/0/physics_layer_1/angular_velocity = 0.0
4:4/0 = 0
-4:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:4/0/physics_layer_0/angular_velocity = 0.0
-4:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:4/0/physics_layer_1/angular_velocity = 0.0
5:4/0 = 0
-5:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:4/0/physics_layer_0/angular_velocity = 0.0
-5:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:4/0/physics_layer_1/angular_velocity = 0.0
7:4/0 = 0
-7:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:4/0/physics_layer_0/angular_velocity = 0.0
-7:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:4/0/physics_layer_1/angular_velocity = 0.0
3:5/0 = 0
-3:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:5/0/physics_layer_0/angular_velocity = 0.0
-3:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:5/0/physics_layer_1/angular_velocity = 0.0
4:5/0 = 0
-4:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:5/0/physics_layer_0/angular_velocity = 0.0
-4:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:5/0/physics_layer_1/angular_velocity = 0.0
7:5/0 = 0
-7:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:5/0/physics_layer_0/angular_velocity = 0.0
-7:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:5/0/physics_layer_1/angular_velocity = 0.0
3:6/0 = 0
-3:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:6/0/physics_layer_0/angular_velocity = 0.0
-3:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:6/0/physics_layer_1/angular_velocity = 0.0
4:6/0 = 0
-4:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:6/0/physics_layer_0/angular_velocity = 0.0
-4:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:6/0/physics_layer_1/angular_velocity = 0.0
7:6/0 = 0
-7:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:6/0/physics_layer_0/angular_velocity = 0.0
-7:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:6/0/physics_layer_1/angular_velocity = 0.0
2:7/0 = 0
-2:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-2:7/0/physics_layer_0/angular_velocity = 0.0
-2:7/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-2:7/0/physics_layer_1/angular_velocity = 0.0
3:7/0 = 0
-3:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:7/0/physics_layer_0/angular_velocity = 0.0
-3:7/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:7/0/physics_layer_1/angular_velocity = 0.0
4:7/0 = 0
-4:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:7/0/physics_layer_0/angular_velocity = 0.0
-4:7/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:7/0/physics_layer_1/angular_velocity = 0.0
5:7/0 = 0
-5:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:7/0/physics_layer_0/angular_velocity = 0.0
-5:7/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:7/0/physics_layer_1/angular_velocity = 0.0
8:0/0 = 0
-8:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:0/0/physics_layer_0/angular_velocity = 0.0
8:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-8:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:0/0/physics_layer_1/angular_velocity = 0.0
9:0/0 = 0
-9:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:0/0/physics_layer_0/angular_velocity = 0.0
9:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-9:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:0/0/physics_layer_1/angular_velocity = 0.0
10:0/0 = 0
-10:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:0/0/physics_layer_0/angular_velocity = 0.0
10:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-10:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:0/0/physics_layer_1/angular_velocity = 0.0
11:0/0 = 0
-11:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:0/0/physics_layer_0/angular_velocity = 0.0
11:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-11:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:0/0/physics_layer_1/angular_velocity = 0.0
12:0/0 = 0
-12:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:0/0/physics_layer_0/angular_velocity = 0.0
12:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:0/0/physics_layer_1/angular_velocity = 0.0
13:0/0 = 0
-13:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:0/0/physics_layer_0/angular_velocity = 0.0
13:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:0/0/physics_layer_1/angular_velocity = 0.0
14:0/0 = 0
-14:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:0/0/physics_layer_0/angular_velocity = 0.0
-14:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:0/0/physics_layer_1/angular_velocity = 0.0
14:0/0/physics_layer_1/polygon_0/points = PackedVector2Array(8, -8, 8, 8, -8, 8)
14:0/0/custom_data_0 = &"Sign"
15:0/0 = 0
-15:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:0/0/physics_layer_0/angular_velocity = 0.0
-15:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:0/0/physics_layer_1/angular_velocity = 0.0
16:0/0 = 0
-16:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:0/0/physics_layer_0/angular_velocity = 0.0
-16:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:0/0/physics_layer_1/angular_velocity = 0.0
8:1/0 = 0
-8:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:1/0/physics_layer_0/angular_velocity = 0.0
8:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-8:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:1/0/physics_layer_1/angular_velocity = 0.0
9:1/0 = 0
-9:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:1/0/physics_layer_0/angular_velocity = 0.0
9:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-9:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:1/0/physics_layer_1/angular_velocity = 0.0
10:1/0 = 0
-10:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:1/0/physics_layer_0/angular_velocity = 0.0
10:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-10:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:1/0/physics_layer_1/angular_velocity = 0.0
11:1/0 = 0
-11:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:1/0/physics_layer_0/angular_velocity = 0.0
11:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-11:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:1/0/physics_layer_1/angular_velocity = 0.0
12:1/0 = 0
-12:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:1/0/physics_layer_0/angular_velocity = 0.0
12:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:1/0/physics_layer_1/angular_velocity = 0.0
13:1/0 = 0
-13:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:1/0/physics_layer_0/angular_velocity = 0.0
13:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:1/0/physics_layer_1/angular_velocity = 0.0
14:1/0 = 0
-14:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:1/0/physics_layer_0/angular_velocity = 0.0
-14:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:1/0/physics_layer_1/angular_velocity = 0.0
15:1/0 = 0
-15:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:1/0/physics_layer_0/angular_velocity = 0.0
-15:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:1/0/physics_layer_1/angular_velocity = 0.0
16:1/0 = 0
-16:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:1/0/physics_layer_0/angular_velocity = 0.0
-16:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:1/0/physics_layer_1/angular_velocity = 0.0
8:2/0 = 0
-8:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:2/0/physics_layer_0/angular_velocity = 0.0
8:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-8:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:2/0/physics_layer_1/angular_velocity = 0.0
9:2/0 = 0
-9:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:2/0/physics_layer_0/angular_velocity = 0.0
9:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-9:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:2/0/physics_layer_1/angular_velocity = 0.0
10:2/0 = 0
-10:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:2/0/physics_layer_0/angular_velocity = 0.0
10:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-10:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:2/0/physics_layer_1/angular_velocity = 0.0
11:2/0 = 0
-11:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:2/0/physics_layer_0/angular_velocity = 0.0
11:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-11:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:2/0/physics_layer_1/angular_velocity = 0.0
12:2/0 = 0
-12:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:2/0/physics_layer_0/angular_velocity = 0.0
12:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:2/0/physics_layer_1/angular_velocity = 0.0
13:2/0 = 0
-13:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:2/0/physics_layer_0/angular_velocity = 0.0
13:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:2/0/physics_layer_1/angular_velocity = 0.0
14:2/0 = 0
-14:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:2/0/physics_layer_0/angular_velocity = 0.0
-14:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:2/0/physics_layer_1/angular_velocity = 0.0
15:2/0 = 0
-15:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:2/0/physics_layer_0/angular_velocity = 0.0
-15:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:2/0/physics_layer_1/angular_velocity = 0.0
16:2/0 = 0
-16:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:2/0/physics_layer_0/angular_velocity = 0.0
-16:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:2/0/physics_layer_1/angular_velocity = 0.0
8:3/0 = 0
-8:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:3/0/physics_layer_0/angular_velocity = 0.0
8:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-8:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:3/0/physics_layer_1/angular_velocity = 0.0
9:3/0 = 0
-9:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:3/0/physics_layer_0/angular_velocity = 0.0
9:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-9:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:3/0/physics_layer_1/angular_velocity = 0.0
10:3/0 = 0
-10:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:3/0/physics_layer_0/angular_velocity = 0.0
10:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-10:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:3/0/physics_layer_1/angular_velocity = 0.0
11:3/0 = 0
-11:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:3/0/physics_layer_0/angular_velocity = 0.0
-11:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:3/0/physics_layer_1/angular_velocity = 0.0
12:3/0 = 0
-12:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:3/0/physics_layer_0/angular_velocity = 0.0
12:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:3/0/physics_layer_1/angular_velocity = 0.0
13:3/0 = 0
-13:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:3/0/physics_layer_0/angular_velocity = 0.0
13:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:3/0/physics_layer_1/angular_velocity = 0.0
14:3/0 = 0
-14:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:3/0/physics_layer_0/angular_velocity = 0.0
-14:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:3/0/physics_layer_1/angular_velocity = 0.0
15:3/0 = 0
-15:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:3/0/physics_layer_0/angular_velocity = 0.0
-15:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:3/0/physics_layer_1/angular_velocity = 0.0
16:3/0 = 0
-16:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:3/0/physics_layer_0/angular_velocity = 0.0
-16:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:3/0/physics_layer_1/angular_velocity = 0.0
8:4/0 = 0
-8:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:4/0/physics_layer_0/angular_velocity = 0.0
-8:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:4/0/physics_layer_1/angular_velocity = 0.0
9:4/0 = 0
-9:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:4/0/physics_layer_0/angular_velocity = 0.0
-9:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:4/0/physics_layer_1/angular_velocity = 0.0
10:4/0 = 0
-10:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:4/0/physics_layer_0/angular_velocity = 0.0
-10:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:4/0/physics_layer_1/angular_velocity = 0.0
11:4/0 = 0
-11:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:4/0/physics_layer_0/angular_velocity = 0.0
11:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-7, 2.5, -5, -2, -2.5, -5, 2, -7, 8, -8, 8, 8, -8, 8)
-11:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:4/0/physics_layer_1/angular_velocity = 0.0
12:4/0 = 0
-12:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:4/0/physics_layer_0/angular_velocity = 0.0
12:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:4/0/physics_layer_1/angular_velocity = 0.0
13:4/0 = 0
-13:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:4/0/physics_layer_0/angular_velocity = 0.0
13:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 0, -6, 4, -1.5, 6.5, 1.5, 8, 8, -8, 8)
-13:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:4/0/physics_layer_1/angular_velocity = 0.0
14:4/0 = 0
-14:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:4/0/physics_layer_0/angular_velocity = 0.0
-14:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:4/0/physics_layer_1/angular_velocity = 0.0
14:4/0/physics_layer_1/polygon_0/points = PackedVector2Array(-8, -8, -8, 8, 8, 8, 8, -8)
14:4/0/custom_data_0 = &"Inventory"
15:4/0 = 0
-15:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:4/0/physics_layer_0/angular_velocity = 0.0
-15:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:4/0/physics_layer_1/angular_velocity = 0.0
16:4/0 = 0
-16:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:4/0/physics_layer_0/angular_velocity = 0.0
-16:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:4/0/physics_layer_1/angular_velocity = 0.0
8:5/0 = 0
-8:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:5/0/physics_layer_0/angular_velocity = 0.0
-8:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:5/0/physics_layer_1/angular_velocity = 0.0
9:5/0 = 0
-9:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:5/0/physics_layer_0/angular_velocity = 0.0
-9:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:5/0/physics_layer_1/angular_velocity = 0.0
10:5/0 = 0
-10:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:5/0/physics_layer_0/angular_velocity = 0.0
-10:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:5/0/physics_layer_1/angular_velocity = 0.0
11:5/0 = 0
-11:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:5/0/physics_layer_0/angular_velocity = 0.0
11:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-11:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:5/0/physics_layer_1/angular_velocity = 0.0
12:5/0 = 0
-12:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:5/0/physics_layer_0/angular_velocity = 0.0
12:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:5/0/physics_layer_1/angular_velocity = 0.0
13:5/0 = 0
-13:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:5/0/physics_layer_0/angular_velocity = 0.0
13:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:5/0/physics_layer_1/angular_velocity = 0.0
14:5/0 = 0
-14:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:5/0/physics_layer_0/angular_velocity = 0.0
-14:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:5/0/physics_layer_1/angular_velocity = 0.0
15:5/0 = 0
-15:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:5/0/physics_layer_0/angular_velocity = 0.0
-15:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:5/0/physics_layer_1/angular_velocity = 0.0
16:5/0 = 0
-16:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:5/0/physics_layer_0/angular_velocity = 0.0
-16:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:5/0/physics_layer_1/angular_velocity = 0.0
8:6/0 = 0
-8:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:6/0/physics_layer_0/angular_velocity = 0.0
-8:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:6/0/physics_layer_1/angular_velocity = 0.0
9:6/0 = 0
-9:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:6/0/physics_layer_0/angular_velocity = 0.0
-9:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:6/0/physics_layer_1/angular_velocity = 0.0
10:6/0 = 0
-10:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:6/0/physics_layer_0/angular_velocity = 0.0
-10:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:6/0/physics_layer_1/angular_velocity = 0.0
11:6/0 = 0
-11:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:6/0/physics_layer_0/angular_velocity = 0.0
11:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, 1, 6.5, -3, 3, -6.5, -1.5)
-11:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:6/0/physics_layer_1/angular_velocity = 0.0
12:6/0 = 0
-12:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:6/0/physics_layer_0/angular_velocity = 0.0
12:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:6/0/physics_layer_1/angular_velocity = 0.0
13:6/0 = 0
-13:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:6/0/physics_layer_0/angular_velocity = 0.0
13:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 6, -0.5, 3, 3.5, -1.5, 6.5, -8, 8)
-13:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:6/0/physics_layer_1/angular_velocity = 0.0
14:6/0 = 0
-14:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:6/0/physics_layer_0/angular_velocity = 0.0
-14:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:6/0/physics_layer_1/angular_velocity = 0.0
15:6/0 = 0
-15:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:6/0/physics_layer_0/angular_velocity = 0.0
-15:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:6/0/physics_layer_1/angular_velocity = 0.0
16:6/0 = 0
-16:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:6/0/physics_layer_0/angular_velocity = 0.0
-16:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:6/0/physics_layer_1/angular_velocity = 0.0
[sub_resource type="TileSet" id="TileSet_kf7eg"]
physics_layer_0/collision_layer = 1
layer = -3
[node name="ColorRect" type="ColorRect" parent="Background"]
+auto_translate_mode = 2
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_bottom = 548.0
grow_horizontal = 2
grow_vertical = 2
-auto_translate = false
localize_numeral_system = false
color = Color(0.137255, 0.14902, 0.196078, 1)
layer_0/tile_data = PackedInt32Array(-393216, 655360, 2, -327680, 655360, 3, -262144, 655360, 3, -196608, 655360, 3, -131072, 655360, 3, -65536, 655360, 3, -393215, 720896, 2, -327679, 720896, 1, -262143, 720896, 1, -196607, 720896, 1, -131071, 720896, 1, -65535, 720896, 1, -393214, 786432, 2, -327678, 786432, 3, -262142, 786432, 3, -196606, 786432, 3, -131070, 786432, 3, -65534, 786432, 3)
layer_1/name = "Terrain"
layer_1/z_index = 1
-layer_1/tile_data = PackedInt32Array(1, 720896, 0, 2, 720896, 0, 3, 720896, 0, 4, 720896, 0, 5, 720896, 0, 6, 720896, 0, 7, 720896, 0, 8, 720896, 0, 9, 786432, 0, 65545, 786432, 1, 131081, 786432, 1, 196617, 786432, 1, 262153, 786432, 1, 327689, 786432, 1, 393225, 786432, 1, 65537, 720896, 1, 131073, 720896, 1, 196609, 720896, 1, 262145, 458752, 1, 327681, 720896, 1, 393217, 720896, 1, 65538, 720896, 1, 131074, 720896, 1, 196610, 720896, 1, 262146, 720896, 1, 327682, 720896, 1, 393218, 720896, 1, 65539, 720896, 1, 131075, 720896, 1, 196611, 720896, 1, 262147, 720896, 1, 327683, 720896, 1, 393219, 720896, 1, 65540, 458752, 1, 131076, 720896, 1, 196612, 720896, 1, 262148, 720896, 1, 327684, 720896, 1, 393220, 720896, 1, 65541, 720896, 1, 131077, 720896, 1, 196613, 720896, 1, 262149, 458752, 1, 327685, 720896, 1, 393221, 720896, 1, 65542, 720896, 1, 131078, 720896, 1, 196614, 720896, 1, 262150, 720896, 1, 327686, 720896, 1, 393222, 720896, 1, 65543, 720896, 1, 131079, 720896, 1, 196615, 720896, 1, 262151, 720896, 1, 327687, 720896, 1, 393223, 458752, 1, 65544, 720896, 1, 131080, 720896, 1, 196616, 458752, 1, 262152, 720896, 1, 327688, 720896, 1, 393224, 720896, 1, 65546, 524288, 5, 65547, 524288, 5, 65548, 524288, 5, 65549, 524288, 5, 131082, 524288, 6, 131083, 524288, 6, 131084, 524288, 6, 131085, 524288, 6, 196618, 720896, 1, 262154, 720896, 1, 196619, 720896, 1, 262155, 720896, 1, 196620, 720896, 1, 262156, 720896, 1, 196621, 720896, 1, 262157, 720896, 1, 65550, 524288, 5, 65551, 524288, 5, 65552, 524288, 5, 131086, 524288, 6, 131087, 524288, 6, 131088, 524288, 6, 196622, 720896, 1, 196623, 720896, 1, 262159, 720896, 1, 262160, 720896, 1, 196624, 720896, 1, 262158, 720896, 1, 17, 720896, 4, 65553, 720896, 5, 131089, 720896, 5, 196625, 720896, 5, 262161, 720896, 5, 18, 786432, 4, 19, 786432, 4, 20, 786432, 4, 21, 786432, 4, 22, 786432, 4, 23, 786432, 4, 65554, 786432, 5, 131090, 786432, 5, 196626, 786432, 5, 262162, 786432, 5, 65555, 786432, 5, 131091, 589824, 6, 196627, 786432, 5, 262163, 786432, 5, 65556, 786432, 5, 131092, 786432, 5, 196628, 786432, 5, 262164, 786432, 5, 65557, 786432, 5, 131093, 786432, 5, 196629, 786432, 5, 262165, 786432, 5, 65558, 786432, 5, 131094, 786432, 5, 196630, 786432, 5, 262166, 655360, 6, 65559, 786432, 5, 131095, 786432, 5, 196631, 786432, 5, 262167, 786432, 5, 327697, 720896, 5, 393233, 720896, 5, 327698, 589824, 6, 393234, 786432, 5, 327699, 786432, 5, 393235, 786432, 5, 327700, 786432, 5, 393236, 786432, 5, 327701, 786432, 5, 393237, 786432, 5, 327702, 786432, 5, 393238, 786432, 5, 327703, 786432, 5, 393239, 786432, 5, -131062, 720896, 4, -131061, 786432, 4, -131060, 786432, 4, -65526, 720896, 6, -65525, 786432, 6, -65524, 786432, 6, -131056, 851968, 4, -65520, 851968, 6, -131059, 786432, 4, -131058, 786432, 4, -131057, 786432, 4, -65523, 786432, 6, -65522, 786432, 6, -65521, 786432, 6, -196596, 917504, 0, -65536, 917504, 2, -65535, 983040, 2, -65534, 1048576, 2, -65533, 917504, 2, -65532, 983040, 2, -65531, 1048576, 2, -65530, 917504, 2, -65529, 983040, 2, -65528, 1048576, 2, 65535, 655360, 0, 131071, 655360, 1, 196607, 655360, 1, 262143, 655360, 1, 327679, 655360, 1, 393215, 655360, 1, 458751, 655360, 1, 524287, 655360, 1, 589823, 655360, 1, 0, 720896, 0, 65536, 720896, 1, 131072, 720896, 1, 196608, 720896, 1, 262144, 720896, 1, 327680, 720896, 1, 393216, 720896, 1, 458752, 720896, 1, 524288, 720896, 1, 524289, 720896, 1, 524290, 720896, 1, 524291, 720896, 1, 524292, 720896, 1, 524293, 720896, 1, 524294, 720896, 1, 524295, 720896, 1, 524296, 720896, 1, 524297, 786432, 1, 458761, 786432, 1, 458760, 720896, 1, 458759, 720896, 1, 458758, 458752, 1, 458757, 720896, 1, 458756, 720896, 1, 458755, 720896, 1, 458754, 720896, 1, 458753, 720896, 1, -262145, 851968, 4, -196609, 851968, 5, -131073, 851968, 5, -65537, 851968, 5, -1, 851968, 6, -262146, 786432, 4, -262147, 786432, 4, -196610, 589824, 6, -196611, 786432, 5, -6, 786432, 5, -5, 786432, 5, -4, 786432, 5, -3, 786432, 5, -2, 786432, 5, -65538, 786432, 5, -131074, 786432, 5, -131075, 786432, 5, -65539, 655360, 6, 65534, 851968, 5, 131070, 851968, 5, 196606, 851968, 5, 262142, 851968, 5, 327678, 851968, 5, 393214, 851968, 5, 458750, 851968, 5, 65533, 786432, 5, 65532, 786432, 5, 65531, 786432, 5, 65530, 786432, 5, 65529, 720896, 5, 131066, 786432, 5, 196602, 786432, 5, 262138, 786432, 5, 262139, 786432, 5, 327675, 786432, 5, 131068, 786432, 5, 131069, 786432, 5, 196605, 786432, 5, 262141, 786432, 5, 327677, 786432, 5, 393213, 786432, 5, 458749, 786432, 5, 393212, 786432, 5, 393211, 786432, 5, 458748, 786432, 5, 327676, 655360, 6, 262140, 786432, 5, 196604, 786432, 5, 131067, 786432, 5, 196603, 589824, 6, 458747, 786432, 5, 458746, 786432, 5, 393210, 786432, 5, 327674, 786432, 5, -7, 720896, 5, 131065, 720896, 5, 196601, 720896, 5, 262137, 720896, 5, 327673, 720896, 5, 393209, 720896, 5, 458745, 720896, 5, -327684, 720896, 3, -196594, 720896, 3, -196597, 720896, 3, -65518, 720896, 3, -65516, 720896, 3, -327686, 1048576, 5, -327685, 720896, 3, -196595, 917504, 6, -65514, 983040, 6, -327683, 983040, 5, -65513, 1048576, 5, -262151, 720896, 4, -196615, 720896, 5, -131079, 720896, 5, -65543, 720896, 5, -262150, 786432, 4, -196614, 655360, 6, -131078, 786432, 5, -65542, 786432, 5, -262149, 786432, 4, -196613, 786432, 5, -131077, 786432, 5, -65541, 786432, 5, -262148, 786432, 4, -196612, 786432, 5, -131076, 786432, 5, -65540, 786432, 5, 458769, 720896, 5, 524305, 720896, 6, 458775, 786432, 5, 458774, 786432, 5, 458773, 786432, 5, 458772, 786432, 5, 458771, 786432, 5, 458770, 786432, 5, 524306, 786432, 6, 524307, 786432, 6, 524308, 786432, 6, 524309, 786432, 6, 524310, 786432, 6, 524311, 786432, 6, 327690, 720896, 1, 393226, 720896, 1, 458762, 720896, 1, 524298, 720896, 1, 327691, 720896, 1, 393227, 720896, 1, 458763, 720896, 1, 524299, 720896, 1, 327692, 720896, 1, 393228, 720896, 1, 458764, 720896, 1, 524300, 720896, 1, 327693, 720896, 1, 393229, 720896, 1, 458765, 720896, 1, 524301, 720896, 1, 327694, 720896, 1, 393230, 720896, 1, 458766, 720896, 1, 524302, 720896, 1, 327695, 720896, 1, 393231, 720896, 1, 458767, 720896, 1, 524303, 720896, 1, 327696, 720896, 1, 393232, 720896, 1, 458768, 720896, 1, 524304, 720896, 1, 29, 851968, 4, 65565, 851968, 5, 131101, 851968, 5, 196637, 851968, 5, 262173, 851968, 5, 327709, 851968, 5, 393245, 851968, 5, 458781, 851968, 5, 524317, 851968, 6, -65511, 917504, 4, 24, 786432, 4, 25, 786432, 4, 26, 786432, 4, 27, 786432, 4, 28, 786432, 4, 65560, 786432, 5, 65561, 786432, 5, 65562, 786432, 5, 65563, 786432, 5, 65564, 786432, 5, 131100, 786432, 5, 196636, 589824, 6, 131099, 786432, 5, 131098, 786432, 5, 131097, 786432, 5, 131096, 786432, 5, 196632, 786432, 5, 262168, 786432, 5, 327704, 786432, 5, 393240, 786432, 5, 458776, 786432, 5, 524312, 786432, 6, 196633, 786432, 5, 262169, 786432, 5, 327705, 786432, 5, 393241, 786432, 5, 458777, 786432, 5, 524313, 786432, 6, 196634, 786432, 5, 262170, 786432, 5, 327706, 786432, 5, 393242, 655360, 6, 458778, 786432, 5, 524314, 786432, 6, 196635, 786432, 5, 262171, 786432, 5, 327707, 786432, 5, 393243, 786432, 5, 458779, 786432, 5, 524315, 786432, 6, 262172, 786432, 5, 327708, 786432, 5, 393244, 786432, 5, 458780, 786432, 5, 524316, 786432, 6, -196593, 1048576, 6, -393182, 1048576, 6, -393185, 917504, 6, -393180, 983040, 6, -393184, 983040, 5, -65509, 720896, 3, -65510, 720896, 3, -393181, 720896, 3, -393183, 720896, 3, -65517, 720896, 3, -65515, 720896, 3, -327650, 720896, 4, -262114, 720896, 5, -196578, 720896, 5, -131042, 720896, 5, -65506, 720896, 5, -65498, 851968, 5, -131034, 851968, 5, -196570, 851968, 5, -327642, 851968, 4, -327649, 786432, 4, -327648, 786432, 4, -327647, 786432, 4, -327646, 786432, 4, -327645, 786432, 4, -327644, 786432, 4, -327643, 786432, 4, -262106, 851968, 5, -65499, 786432, 5, -131035, 786432, 5, -196571, 786432, 5, -262107, 786432, 5, -262108, 786432, 5, -262109, 786432, 5, -262110, 786432, 5, -262111, 786432, 5, -262112, 786432, 5, -262113, 786432, 5, -196577, 655360, 6, -131041, 786432, 5, -65505, 786432, 5, -65500, 655360, 6, -131036, 589824, 6, -196572, 786432, 5, -196573, 786432, 5, -196574, 786432, 5, -196575, 786432, 5, -196576, 786432, 5, -131040, 589824, 6, -65504, 786432, 5, -65501, 786432, 5, -131037, 786432, 5, -131038, 786432, 5, -131039, 786432, 5, -65503, 786432, 5, -65502, 786432, 5, 524318, 720896, 6, 458782, 720896, 5, 393246, 720896, 5, 327710, 720896, 5, 262174, 720896, 5, 196638, 720896, 5, 131102, 720896, 5, 65566, 720896, 5, 30, 720896, 5, 524319, 786432, 6, 524320, 786432, 6, 524321, 786432, 6, 524322, 786432, 6, 524323, 786432, 6, 524324, 786432, 6, 524325, 786432, 6, 524326, 851968, 6, 38, 851968, 5, 65574, 851968, 5, 131110, 851968, 5, 196646, 851968, 5, 262182, 851968, 5, 327718, 851968, 5, 393254, 851968, 5, 458790, 851968, 5, 31, 786432, 5, 65567, 786432, 5, 131103, 786432, 5, 196639, 786432, 5, 262175, 786432, 5, 327711, 786432, 5, 393247, 655360, 6, 458783, 786432, 5, 32, 786432, 5, 65568, 786432, 5, 131104, 786432, 5, 196640, 786432, 5, 262176, 786432, 5, 327712, 786432, 5, 393248, 786432, 5, 458784, 786432, 5, 33, 786432, 5, 65569, 786432, 5, 131105, 655360, 6, 196641, 786432, 5, 262177, 786432, 5, 327713, 786432, 5, 393249, 786432, 5, 458785, 786432, 5, 34, 786432, 5, 65570, 786432, 5, 131106, 786432, 5, 196642, 786432, 5, 262178, 655360, 6, 327714, 655360, 6, 393250, 786432, 5, 458786, 786432, 5, 35, 786432, 5, 65571, 786432, 5, 131107, 786432, 5, 196643, 786432, 5, 262179, 786432, 5, 327715, 786432, 5, 393251, 786432, 5, 458787, 786432, 5, 36, 655360, 6, 65572, 786432, 5, 131108, 786432, 5, 196644, 786432, 5, 262180, 786432, 5, 327716, 786432, 5, 393252, 786432, 5, 458788, 655360, 6, 37, 786432, 5, 65573, 786432, 5, 131109, 786432, 5, 196645, 786432, 5, 262181, 786432, 5, 327717, 786432, 5, 393253, 786432, 5, 458789, 786432, 5, 524282, 786432, 5, 524283, 786432, 5, 524284, 786432, 5, 524285, 786432, 5, 524281, 720896, 5, 524286, 851968, 5, 589817, 720896, 6, 589818, 786432, 6, 589819, 786432, 6, 589820, 786432, 6, 589821, 786432, 6, 589822, 851968, 6)
+layer_1/tile_data = PackedInt32Array(1, 720896, 0, 2, 720896, 0, 3, 720896, 0, 4, 720896, 0, 5, 720896, 0, 6, 720896, 0, 7, 720896, 0, 8, 720896, 0, 9, 786432, 0, 65545, 786432, 1, 131081, 786432, 1, 196617, 786432, 1, 262153, 786432, 1, 327689, 786432, 1, 393225, 786432, 1, 65537, 720896, 1, 131073, 720896, 1, 196609, 720896, 1, 262145, 458752, 1, 327681, 720896, 1, 393217, 720896, 1, 65538, 720896, 1, 131074, 720896, 1, 196610, 720896, 1, 262146, 720896, 1, 327682, 720896, 1, 393218, 720896, 1, 65539, 720896, 1, 131075, 720896, 1, 196611, 720896, 1, 262147, 720896, 1, 327683, 720896, 1, 393219, 720896, 1, 65540, 458752, 1, 131076, 720896, 1, 196612, 720896, 1, 262148, 720896, 1, 327684, 720896, 1, 393220, 720896, 1, 65541, 720896, 1, 131077, 720896, 1, 196613, 720896, 1, 262149, 458752, 1, 327685, 720896, 1, 393221, 720896, 1, 65542, 720896, 1, 131078, 720896, 1, 196614, 720896, 1, 262150, 720896, 1, 327686, 720896, 1, 393222, 720896, 1, 65543, 720896, 1, 131079, 720896, 1, 196615, 720896, 1, 262151, 720896, 1, 327687, 720896, 1, 393223, 458752, 1, 65544, 720896, 1, 131080, 720896, 1, 196616, 458752, 1, 262152, 720896, 1, 327688, 720896, 1, 393224, 720896, 1, 65546, 524288, 5, 65547, 524288, 5, 65548, 524288, 5, 65549, 524288, 5, 131082, 524288, 6, 131083, 524288, 6, 131084, 524288, 6, 131085, 524288, 6, 196618, 720896, 1, 262154, 720896, 1, 196619, 720896, 1, 262155, 720896, 1, 196620, 720896, 1, 262156, 720896, 1, 196621, 720896, 1, 262157, 720896, 1, 65550, 524288, 5, 65551, 524288, 5, 65552, 524288, 5, 131086, 524288, 6, 131087, 524288, 6, 131088, 524288, 6, 196622, 720896, 1, 196623, 720896, 1, 262159, 720896, 1, 262160, 720896, 1, 196624, 720896, 1, 262158, 720896, 1, 17, 720896, 4, 65553, 720896, 5, 131089, 720896, 5, 196625, 720896, 5, 262161, 720896, 5, 18, 786432, 4, 19, 786432, 4, 20, 786432, 4, 21, 786432, 4, 22, 786432, 4, 23, 786432, 4, 65554, 786432, 5, 131090, 786432, 5, 196626, 786432, 5, 262162, 786432, 5, 65555, 786432, 5, 131091, 589824, 6, 196627, 786432, 5, 262163, 786432, 5, 65556, 786432, 5, 131092, 786432, 5, 196628, 786432, 5, 262164, 786432, 5, 65557, 786432, 5, 131093, 786432, 5, 196629, 786432, 5, 262165, 786432, 5, 65558, 786432, 5, 131094, 786432, 5, 196630, 786432, 5, 262166, 655360, 6, 65559, 786432, 5, 131095, 786432, 5, 196631, 786432, 5, 262167, 786432, 5, 327697, 720896, 5, 393233, 720896, 5, 327698, 589824, 6, 393234, 786432, 5, 327699, 786432, 5, 393235, 786432, 5, 327700, 786432, 5, 393236, 786432, 5, 327701, 786432, 5, 393237, 786432, 5, 327702, 786432, 5, 393238, 786432, 5, 327703, 786432, 5, 393239, 786432, 5, -131062, 720896, 4, -131061, 786432, 4, -131060, 786432, 4, -65526, 720896, 6, -65525, 786432, 6, -65524, 786432, 6, -131056, 851968, 4, -65520, 851968, 6, -131059, 786432, 4, -131058, 786432, 4, -131057, 786432, 4, -65523, 786432, 6, -65522, 786432, 6, -65521, 786432, 6, -65536, 917504, 2, -65535, 983040, 2, -65534, 1048576, 2, -65533, 917504, 2, -65532, 983040, 2, -65531, 1048576, 2, -65530, 917504, 2, -65529, 983040, 2, -65528, 1048576, 2, 65535, 655360, 0, 131071, 655360, 1, 196607, 655360, 1, 262143, 655360, 1, 327679, 655360, 1, 393215, 655360, 1, 458751, 655360, 1, 524287, 655360, 1, 589823, 655360, 1, 0, 720896, 0, 65536, 720896, 1, 131072, 720896, 1, 196608, 720896, 1, 262144, 720896, 1, 327680, 720896, 1, 393216, 720896, 1, 458752, 720896, 1, 524288, 720896, 1, 524289, 720896, 1, 524290, 720896, 1, 524291, 720896, 1, 524292, 720896, 1, 524293, 720896, 1, 524294, 720896, 1, 524295, 720896, 1, 524296, 720896, 1, 524297, 786432, 1, 458761, 786432, 1, 458760, 720896, 1, 458759, 720896, 1, 458758, 458752, 1, 458757, 720896, 1, 458756, 720896, 1, 458755, 720896, 1, 458754, 720896, 1, 458753, 720896, 1, -262145, 851968, 4, -196609, 851968, 5, -131073, 851968, 5, -65537, 851968, 5, -1, 851968, 6, -262146, 786432, 4, -262147, 786432, 4, -196610, 589824, 6, -196611, 786432, 5, -6, 786432, 5, -5, 786432, 5, -4, 786432, 5, -3, 786432, 5, -2, 786432, 5, -65538, 786432, 5, -131074, 786432, 5, -131075, 786432, 5, -65539, 655360, 6, 65534, 851968, 5, 131070, 851968, 5, 196606, 851968, 5, 262142, 851968, 5, 327678, 851968, 5, 393214, 851968, 5, 458750, 851968, 5, 65533, 786432, 5, 65532, 786432, 5, 65531, 786432, 5, 65530, 786432, 5, 65529, 720896, 5, 131066, 786432, 5, 196602, 786432, 5, 262138, 786432, 5, 262139, 786432, 5, 327675, 786432, 5, 131068, 786432, 5, 131069, 786432, 5, 196605, 786432, 5, 262141, 786432, 5, 327677, 786432, 5, 393213, 786432, 5, 458749, 786432, 5, 393212, 786432, 5, 393211, 786432, 5, 458748, 786432, 5, 327676, 655360, 6, 262140, 786432, 5, 196604, 786432, 5, 131067, 786432, 5, 196603, 589824, 6, 458747, 786432, 5, 458746, 786432, 5, 393210, 786432, 5, 327674, 786432, 5, -7, 720896, 5, 131065, 720896, 5, 196601, 720896, 5, 262137, 720896, 5, 327673, 720896, 5, 393209, 720896, 5, 458745, 720896, 5, -327684, 720896, 3, -196594, 720896, 3, -196597, 720896, 3, -65518, 720896, 3, -65516, 720896, 3, -327686, 1048576, 5, -327685, 720896, 3, -196595, 917504, 6, -65514, 983040, 6, -327683, 983040, 5, -65513, 1048576, 5, -262151, 720896, 4, -196615, 720896, 5, -131079, 720896, 5, -65543, 720896, 5, -262150, 786432, 4, -196614, 655360, 6, -131078, 786432, 5, -65542, 786432, 5, -262149, 786432, 4, -196613, 786432, 5, -131077, 786432, 5, -65541, 786432, 5, -262148, 786432, 4, -196612, 786432, 5, -131076, 786432, 5, -65540, 786432, 5, 458769, 720896, 5, 524305, 720896, 6, 458775, 786432, 5, 458774, 786432, 5, 458773, 786432, 5, 458772, 786432, 5, 458771, 786432, 5, 458770, 786432, 5, 524306, 786432, 6, 524307, 786432, 6, 524308, 786432, 6, 524309, 786432, 6, 524310, 786432, 6, 524311, 786432, 6, 327690, 720896, 1, 393226, 720896, 1, 458762, 720896, 1, 524298, 720896, 1, 327691, 720896, 1, 393227, 720896, 1, 458763, 720896, 1, 524299, 720896, 1, 327692, 720896, 1, 393228, 720896, 1, 458764, 720896, 1, 524300, 720896, 1, 327693, 720896, 1, 393229, 720896, 1, 458765, 720896, 1, 524301, 720896, 1, 327694, 720896, 1, 393230, 720896, 1, 458766, 720896, 1, 524302, 720896, 1, 327695, 720896, 1, 393231, 720896, 1, 458767, 720896, 1, 524303, 720896, 1, 327696, 720896, 1, 393232, 720896, 1, 458768, 720896, 1, 524304, 720896, 1, 29, 851968, 4, 65565, 851968, 5, 131101, 851968, 5, 196637, 851968, 5, 262173, 851968, 5, 327709, 851968, 5, 393245, 851968, 5, 458781, 851968, 5, 524317, 851968, 6, -65511, 917504, 4, 24, 786432, 4, 25, 786432, 4, 26, 786432, 4, 27, 786432, 4, 28, 786432, 4, 65560, 786432, 5, 65561, 786432, 5, 65562, 786432, 5, 65563, 786432, 5, 65564, 786432, 5, 131100, 786432, 5, 196636, 589824, 6, 131099, 786432, 5, 131098, 786432, 5, 131097, 786432, 5, 131096, 786432, 5, 196632, 786432, 5, 262168, 786432, 5, 327704, 786432, 5, 393240, 786432, 5, 458776, 786432, 5, 524312, 786432, 6, 196633, 786432, 5, 262169, 786432, 5, 327705, 786432, 5, 393241, 786432, 5, 458777, 786432, 5, 524313, 786432, 6, 196634, 786432, 5, 262170, 786432, 5, 327706, 786432, 5, 393242, 655360, 6, 458778, 786432, 5, 524314, 786432, 6, 196635, 786432, 5, 262171, 786432, 5, 327707, 786432, 5, 393243, 786432, 5, 458779, 786432, 5, 524315, 786432, 6, 262172, 786432, 5, 327708, 786432, 5, 393244, 786432, 5, 458780, 786432, 5, 524316, 786432, 6, -196593, 1048576, 6, -393182, 1048576, 6, -393185, 917504, 6, -393180, 983040, 6, -393184, 983040, 5, -65509, 720896, 3, -65510, 720896, 3, -393181, 720896, 3, -393183, 720896, 3, -65517, 720896, 3, -65515, 720896, 3, -327650, 720896, 4, -262114, 720896, 5, -196578, 720896, 5, -131042, 720896, 5, -65506, 720896, 5, -65498, 851968, 5, -131034, 851968, 5, -196570, 851968, 5, -327642, 851968, 4, -327649, 786432, 4, -327648, 786432, 4, -327647, 786432, 4, -327646, 786432, 4, -327645, 786432, 4, -327644, 786432, 4, -327643, 786432, 4, -262106, 851968, 5, -65499, 786432, 5, -131035, 786432, 5, -196571, 786432, 5, -262107, 786432, 5, -262108, 786432, 5, -262109, 786432, 5, -262110, 786432, 5, -262111, 786432, 5, -262112, 786432, 5, -262113, 786432, 5, -196577, 655360, 6, -131041, 786432, 5, -65505, 786432, 5, -65500, 655360, 6, -131036, 589824, 6, -196572, 786432, 5, -196573, 786432, 5, -196574, 786432, 5, -196575, 786432, 5, -196576, 786432, 5, -131040, 589824, 6, -65504, 786432, 5, -65501, 786432, 5, -131037, 786432, 5, -131038, 786432, 5, -131039, 786432, 5, -65503, 786432, 5, -65502, 786432, 5, 524318, 720896, 6, 458782, 720896, 5, 393246, 720896, 5, 327710, 720896, 5, 262174, 720896, 5, 196638, 720896, 5, 131102, 720896, 5, 65566, 720896, 5, 30, 720896, 5, 524319, 786432, 6, 524320, 786432, 6, 524321, 786432, 6, 524322, 786432, 6, 524323, 786432, 6, 524324, 786432, 6, 524325, 786432, 6, 524326, 851968, 6, 38, 851968, 5, 65574, 851968, 5, 131110, 851968, 5, 196646, 851968, 5, 262182, 851968, 5, 327718, 851968, 5, 393254, 851968, 5, 458790, 851968, 5, 31, 786432, 5, 65567, 786432, 5, 131103, 786432, 5, 196639, 786432, 5, 262175, 786432, 5, 327711, 786432, 5, 393247, 655360, 6, 458783, 786432, 5, 32, 786432, 5, 65568, 786432, 5, 131104, 786432, 5, 196640, 786432, 5, 262176, 786432, 5, 327712, 786432, 5, 393248, 786432, 5, 458784, 786432, 5, 33, 786432, 5, 65569, 786432, 5, 131105, 655360, 6, 196641, 786432, 5, 262177, 786432, 5, 327713, 786432, 5, 393249, 786432, 5, 458785, 786432, 5, 34, 786432, 5, 65570, 786432, 5, 131106, 786432, 5, 196642, 786432, 5, 262178, 655360, 6, 327714, 655360, 6, 393250, 786432, 5, 458786, 786432, 5, 35, 786432, 5, 65571, 786432, 5, 131107, 786432, 5, 196643, 786432, 5, 262179, 786432, 5, 327715, 786432, 5, 393251, 786432, 5, 458787, 786432, 5, 36, 655360, 6, 65572, 786432, 5, 131108, 786432, 5, 196644, 786432, 5, 262180, 786432, 5, 327716, 786432, 5, 393252, 786432, 5, 458788, 655360, 6, 37, 786432, 5, 65573, 786432, 5, 131109, 786432, 5, 196645, 786432, 5, 262181, 786432, 5, 327717, 786432, 5, 393253, 786432, 5, 458789, 786432, 5, 524282, 786432, 5, 524283, 786432, 5, 524284, 786432, 5, 524285, 786432, 5, 524281, 720896, 5, 524286, 851968, 5, 589817, 720896, 6, 589818, 786432, 6, 589819, 786432, 6, 589820, 786432, 6, 589821, 786432, 6, 589822, 851968, 6, -196596, 917504, 0)
[node name="UI" type="CanvasLayer" parent="."]
[node name="Camera2D" type="Camera2D" parent="."]
position = Vector2(227, -28)
zoom = Vector2(1.5, 1.5)
+process_callback = 0
editor_draw_limits = true
[node name="PhantomCameraHost" type="Node" parent="Camera2D"]
+process_priority = 300
+process_physics_priority = 300
script = ExtResource("4_54fc4")
[node name="Player" type="Node" parent="."]
[node name="PlayerPhantomCamera2D" type="Node2D" parent="Player" node_paths=PackedStringArray("follow_target")]
unique_name_in_owner = true
process_priority = -1
+top_level = true
position = Vector2(227, -28)
script = ExtResource("2_mgsut")
priority = 10
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_easgx"]
texture = ExtResource("1_27o77")
0:0/0 = 0
-0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-0:0/0/physics_layer_0/angular_velocity = 0.0
-0:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-0:0/0/physics_layer_1/angular_velocity = 0.0
1:0/0 = 0
-1:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-1:0/0/physics_layer_0/angular_velocity = 0.0
-1:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-1:0/0/physics_layer_1/angular_velocity = 0.0
2:0/0 = 0
-2:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-2:0/0/physics_layer_0/angular_velocity = 0.0
-2:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-2:0/0/physics_layer_1/angular_velocity = 0.0
3:0/0 = 0
-3:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:0/0/physics_layer_0/angular_velocity = 0.0
-3:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:0/0/physics_layer_1/angular_velocity = 0.0
4:0/0 = 0
-4:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:0/0/physics_layer_0/angular_velocity = 0.0
-4:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:0/0/physics_layer_1/angular_velocity = 0.0
5:0/0 = 0
-5:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:0/0/physics_layer_0/angular_velocity = 0.0
-5:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:0/0/physics_layer_1/angular_velocity = 0.0
6:0/0 = 0
-6:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-6:0/0/physics_layer_0/angular_velocity = 0.0
-6:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-6:0/0/physics_layer_1/angular_velocity = 0.0
7:0/0 = 0
-7:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:0/0/physics_layer_0/angular_velocity = 0.0
7:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-7:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:0/0/physics_layer_1/angular_velocity = 0.0
0:1/0 = 0
-0:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-0:1/0/physics_layer_0/angular_velocity = 0.0
-0:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-0:1/0/physics_layer_1/angular_velocity = 0.0
1:1/0 = 0
-1:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-1:1/0/physics_layer_0/angular_velocity = 0.0
-1:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-1:1/0/physics_layer_1/angular_velocity = 0.0
2:1/0 = 0
-2:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-2:1/0/physics_layer_0/angular_velocity = 0.0
-2:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-2:1/0/physics_layer_1/angular_velocity = 0.0
3:1/0 = 0
-3:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:1/0/physics_layer_0/angular_velocity = 0.0
-3:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:1/0/physics_layer_1/angular_velocity = 0.0
4:1/0 = 0
-4:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:1/0/physics_layer_0/angular_velocity = 0.0
-4:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:1/0/physics_layer_1/angular_velocity = 0.0
5:1/0 = 0
-5:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:1/0/physics_layer_0/angular_velocity = 0.0
-5:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:1/0/physics_layer_1/angular_velocity = 0.0
7:1/0 = 0
-7:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:1/0/physics_layer_0/angular_velocity = 0.0
7:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-7:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:1/0/physics_layer_1/angular_velocity = 0.0
2:2/0 = 0
-2:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-2:2/0/physics_layer_0/angular_velocity = 0.0
-2:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-2:2/0/physics_layer_1/angular_velocity = 0.0
3:2/0 = 0
-3:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:2/0/physics_layer_0/angular_velocity = 0.0
-3:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:2/0/physics_layer_1/angular_velocity = 0.0
4:2/0 = 0
-4:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:2/0/physics_layer_0/angular_velocity = 0.0
-4:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:2/0/physics_layer_1/angular_velocity = 0.0
7:2/0 = 0
-7:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:2/0/physics_layer_0/angular_velocity = 0.0
7:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-7:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:2/0/physics_layer_1/angular_velocity = 0.0
3:3/0 = 0
-3:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:3/0/physics_layer_0/angular_velocity = 0.0
-3:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:3/0/physics_layer_1/angular_velocity = 0.0
4:3/0 = 0
-4:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:3/0/physics_layer_0/angular_velocity = 0.0
-4:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:3/0/physics_layer_1/angular_velocity = 0.0
5:3/0 = 0
-5:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:3/0/physics_layer_0/angular_velocity = 0.0
-5:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:3/0/physics_layer_1/angular_velocity = 0.0
7:3/0 = 0
-7:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:3/0/physics_layer_0/angular_velocity = 0.0
7:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-7:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:3/0/physics_layer_1/angular_velocity = 0.0
3:4/0 = 0
-3:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:4/0/physics_layer_0/angular_velocity = 0.0
-3:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:4/0/physics_layer_1/angular_velocity = 0.0
4:4/0 = 0
-4:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:4/0/physics_layer_0/angular_velocity = 0.0
-4:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:4/0/physics_layer_1/angular_velocity = 0.0
5:4/0 = 0
-5:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:4/0/physics_layer_0/angular_velocity = 0.0
-5:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:4/0/physics_layer_1/angular_velocity = 0.0
7:4/0 = 0
-7:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:4/0/physics_layer_0/angular_velocity = 0.0
-7:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:4/0/physics_layer_1/angular_velocity = 0.0
3:5/0 = 0
-3:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:5/0/physics_layer_0/angular_velocity = 0.0
-3:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:5/0/physics_layer_1/angular_velocity = 0.0
4:5/0 = 0
-4:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:5/0/physics_layer_0/angular_velocity = 0.0
-4:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:5/0/physics_layer_1/angular_velocity = 0.0
7:5/0 = 0
-7:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:5/0/physics_layer_0/angular_velocity = 0.0
-7:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:5/0/physics_layer_1/angular_velocity = 0.0
3:6/0 = 0
-3:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:6/0/physics_layer_0/angular_velocity = 0.0
-3:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:6/0/physics_layer_1/angular_velocity = 0.0
4:6/0 = 0
-4:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:6/0/physics_layer_0/angular_velocity = 0.0
-4:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:6/0/physics_layer_1/angular_velocity = 0.0
7:6/0 = 0
-7:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:6/0/physics_layer_0/angular_velocity = 0.0
-7:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:6/0/physics_layer_1/angular_velocity = 0.0
2:7/0 = 0
-2:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-2:7/0/physics_layer_0/angular_velocity = 0.0
-2:7/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-2:7/0/physics_layer_1/angular_velocity = 0.0
3:7/0 = 0
-3:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:7/0/physics_layer_0/angular_velocity = 0.0
-3:7/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:7/0/physics_layer_1/angular_velocity = 0.0
4:7/0 = 0
-4:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:7/0/physics_layer_0/angular_velocity = 0.0
-4:7/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:7/0/physics_layer_1/angular_velocity = 0.0
5:7/0 = 0
-5:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:7/0/physics_layer_0/angular_velocity = 0.0
-5:7/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:7/0/physics_layer_1/angular_velocity = 0.0
8:0/0 = 0
-8:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:0/0/physics_layer_0/angular_velocity = 0.0
8:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-8:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:0/0/physics_layer_1/angular_velocity = 0.0
9:0/0 = 0
-9:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:0/0/physics_layer_0/angular_velocity = 0.0
9:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-9:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:0/0/physics_layer_1/angular_velocity = 0.0
10:0/0 = 0
-10:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:0/0/physics_layer_0/angular_velocity = 0.0
10:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-10:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:0/0/physics_layer_1/angular_velocity = 0.0
11:0/0 = 0
-11:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:0/0/physics_layer_0/angular_velocity = 0.0
11:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-11:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:0/0/physics_layer_1/angular_velocity = 0.0
12:0/0 = 0
-12:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:0/0/physics_layer_0/angular_velocity = 0.0
12:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:0/0/physics_layer_1/angular_velocity = 0.0
13:0/0 = 0
-13:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:0/0/physics_layer_0/angular_velocity = 0.0
13:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:0/0/physics_layer_1/angular_velocity = 0.0
14:0/0 = 0
-14:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:0/0/physics_layer_0/angular_velocity = 0.0
-14:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:0/0/physics_layer_1/angular_velocity = 0.0
14:0/0/physics_layer_1/polygon_0/points = PackedVector2Array(8, -8, 8, 8, -8, 8)
14:0/0/custom_data_0 = &"Sign"
15:0/0 = 0
-15:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:0/0/physics_layer_0/angular_velocity = 0.0
-15:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:0/0/physics_layer_1/angular_velocity = 0.0
16:0/0 = 0
-16:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:0/0/physics_layer_0/angular_velocity = 0.0
-16:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:0/0/physics_layer_1/angular_velocity = 0.0
8:1/0 = 0
-8:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:1/0/physics_layer_0/angular_velocity = 0.0
8:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-8:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:1/0/physics_layer_1/angular_velocity = 0.0
9:1/0 = 0
-9:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:1/0/physics_layer_0/angular_velocity = 0.0
9:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-9:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:1/0/physics_layer_1/angular_velocity = 0.0
10:1/0 = 0
-10:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:1/0/physics_layer_0/angular_velocity = 0.0
10:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-10:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:1/0/physics_layer_1/angular_velocity = 0.0
11:1/0 = 0
-11:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:1/0/physics_layer_0/angular_velocity = 0.0
11:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-11:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:1/0/physics_layer_1/angular_velocity = 0.0
12:1/0 = 0
-12:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:1/0/physics_layer_0/angular_velocity = 0.0
12:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:1/0/physics_layer_1/angular_velocity = 0.0
13:1/0 = 0
-13:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:1/0/physics_layer_0/angular_velocity = 0.0
13:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:1/0/physics_layer_1/angular_velocity = 0.0
14:1/0 = 0
-14:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:1/0/physics_layer_0/angular_velocity = 0.0
-14:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:1/0/physics_layer_1/angular_velocity = 0.0
15:1/0 = 0
-15:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:1/0/physics_layer_0/angular_velocity = 0.0
-15:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:1/0/physics_layer_1/angular_velocity = 0.0
16:1/0 = 0
-16:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:1/0/physics_layer_0/angular_velocity = 0.0
-16:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:1/0/physics_layer_1/angular_velocity = 0.0
8:2/0 = 0
-8:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:2/0/physics_layer_0/angular_velocity = 0.0
8:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-8:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:2/0/physics_layer_1/angular_velocity = 0.0
9:2/0 = 0
-9:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:2/0/physics_layer_0/angular_velocity = 0.0
9:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-9:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:2/0/physics_layer_1/angular_velocity = 0.0
10:2/0 = 0
-10:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:2/0/physics_layer_0/angular_velocity = 0.0
10:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-10:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:2/0/physics_layer_1/angular_velocity = 0.0
11:2/0 = 0
-11:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:2/0/physics_layer_0/angular_velocity = 0.0
11:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-11:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:2/0/physics_layer_1/angular_velocity = 0.0
12:2/0 = 0
-12:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:2/0/physics_layer_0/angular_velocity = 0.0
12:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:2/0/physics_layer_1/angular_velocity = 0.0
13:2/0 = 0
-13:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:2/0/physics_layer_0/angular_velocity = 0.0
13:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:2/0/physics_layer_1/angular_velocity = 0.0
14:2/0 = 0
-14:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:2/0/physics_layer_0/angular_velocity = 0.0
-14:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:2/0/physics_layer_1/angular_velocity = 0.0
15:2/0 = 0
-15:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:2/0/physics_layer_0/angular_velocity = 0.0
-15:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:2/0/physics_layer_1/angular_velocity = 0.0
16:2/0 = 0
-16:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:2/0/physics_layer_0/angular_velocity = 0.0
-16:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:2/0/physics_layer_1/angular_velocity = 0.0
8:3/0 = 0
-8:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:3/0/physics_layer_0/angular_velocity = 0.0
8:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-8:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:3/0/physics_layer_1/angular_velocity = 0.0
9:3/0 = 0
-9:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:3/0/physics_layer_0/angular_velocity = 0.0
9:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-9:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:3/0/physics_layer_1/angular_velocity = 0.0
10:3/0 = 0
-10:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:3/0/physics_layer_0/angular_velocity = 0.0
10:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-10:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:3/0/physics_layer_1/angular_velocity = 0.0
11:3/0 = 0
-11:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:3/0/physics_layer_0/angular_velocity = 0.0
-11:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:3/0/physics_layer_1/angular_velocity = 0.0
12:3/0 = 0
-12:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:3/0/physics_layer_0/angular_velocity = 0.0
12:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:3/0/physics_layer_1/angular_velocity = 0.0
13:3/0 = 0
-13:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:3/0/physics_layer_0/angular_velocity = 0.0
13:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:3/0/physics_layer_1/angular_velocity = 0.0
14:3/0 = 0
-14:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:3/0/physics_layer_0/angular_velocity = 0.0
-14:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:3/0/physics_layer_1/angular_velocity = 0.0
15:3/0 = 0
-15:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:3/0/physics_layer_0/angular_velocity = 0.0
-15:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:3/0/physics_layer_1/angular_velocity = 0.0
16:3/0 = 0
-16:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:3/0/physics_layer_0/angular_velocity = 0.0
-16:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:3/0/physics_layer_1/angular_velocity = 0.0
8:4/0 = 0
-8:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:4/0/physics_layer_0/angular_velocity = 0.0
-8:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:4/0/physics_layer_1/angular_velocity = 0.0
9:4/0 = 0
-9:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:4/0/physics_layer_0/angular_velocity = 0.0
-9:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:4/0/physics_layer_1/angular_velocity = 0.0
10:4/0 = 0
-10:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:4/0/physics_layer_0/angular_velocity = 0.0
-10:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:4/0/physics_layer_1/angular_velocity = 0.0
11:4/0 = 0
-11:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:4/0/physics_layer_0/angular_velocity = 0.0
11:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-7, 2.5, -5, -2, -2.5, -5, 2, -7, 8, -8, 8, 8, -8, 8)
-11:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:4/0/physics_layer_1/angular_velocity = 0.0
12:4/0 = 0
-12:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:4/0/physics_layer_0/angular_velocity = 0.0
12:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:4/0/physics_layer_1/angular_velocity = 0.0
13:4/0 = 0
-13:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:4/0/physics_layer_0/angular_velocity = 0.0
13:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 0, -6, 4, -1.5, 6.5, 1.5, 8, 8, -8, 8)
-13:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:4/0/physics_layer_1/angular_velocity = 0.0
14:4/0 = 0
-14:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:4/0/physics_layer_0/angular_velocity = 0.0
-14:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:4/0/physics_layer_1/angular_velocity = 0.0
14:4/0/physics_layer_1/polygon_0/points = PackedVector2Array(-8, -8, -8, 8, 8, 8, 8, -8)
14:4/0/custom_data_0 = &"Inventory"
15:4/0 = 0
-15:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:4/0/physics_layer_0/angular_velocity = 0.0
-15:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:4/0/physics_layer_1/angular_velocity = 0.0
16:4/0 = 0
-16:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:4/0/physics_layer_0/angular_velocity = 0.0
-16:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:4/0/physics_layer_1/angular_velocity = 0.0
8:5/0 = 0
-8:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:5/0/physics_layer_0/angular_velocity = 0.0
-8:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:5/0/physics_layer_1/angular_velocity = 0.0
9:5/0 = 0
-9:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:5/0/physics_layer_0/angular_velocity = 0.0
-9:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:5/0/physics_layer_1/angular_velocity = 0.0
10:5/0 = 0
-10:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:5/0/physics_layer_0/angular_velocity = 0.0
-10:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:5/0/physics_layer_1/angular_velocity = 0.0
11:5/0 = 0
-11:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:5/0/physics_layer_0/angular_velocity = 0.0
11:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-11:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:5/0/physics_layer_1/angular_velocity = 0.0
12:5/0 = 0
-12:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:5/0/physics_layer_0/angular_velocity = 0.0
12:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:5/0/physics_layer_1/angular_velocity = 0.0
13:5/0 = 0
-13:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:5/0/physics_layer_0/angular_velocity = 0.0
13:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:5/0/physics_layer_1/angular_velocity = 0.0
14:5/0 = 0
-14:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:5/0/physics_layer_0/angular_velocity = 0.0
-14:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:5/0/physics_layer_1/angular_velocity = 0.0
15:5/0 = 0
-15:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:5/0/physics_layer_0/angular_velocity = 0.0
-15:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:5/0/physics_layer_1/angular_velocity = 0.0
16:5/0 = 0
-16:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:5/0/physics_layer_0/angular_velocity = 0.0
-16:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:5/0/physics_layer_1/angular_velocity = 0.0
8:6/0 = 0
-8:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:6/0/physics_layer_0/angular_velocity = 0.0
-8:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:6/0/physics_layer_1/angular_velocity = 0.0
9:6/0 = 0
-9:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:6/0/physics_layer_0/angular_velocity = 0.0
-9:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:6/0/physics_layer_1/angular_velocity = 0.0
10:6/0 = 0
-10:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:6/0/physics_layer_0/angular_velocity = 0.0
-10:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:6/0/physics_layer_1/angular_velocity = 0.0
11:6/0 = 0
-11:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:6/0/physics_layer_0/angular_velocity = 0.0
11:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, 1, 6.5, -3, 3, -6.5, -1.5)
-11:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:6/0/physics_layer_1/angular_velocity = 0.0
12:6/0 = 0
-12:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:6/0/physics_layer_0/angular_velocity = 0.0
12:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:6/0/physics_layer_1/angular_velocity = 0.0
13:6/0 = 0
-13:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:6/0/physics_layer_0/angular_velocity = 0.0
13:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 6, -0.5, 3, 3.5, -1.5, 6.5, -8, 8)
-13:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:6/0/physics_layer_1/angular_velocity = 0.0
14:6/0 = 0
-14:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:6/0/physics_layer_0/angular_velocity = 0.0
-14:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:6/0/physics_layer_1/angular_velocity = 0.0
15:6/0 = 0
-15:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:6/0/physics_layer_0/angular_velocity = 0.0
-15:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:6/0/physics_layer_1/angular_velocity = 0.0
16:6/0 = 0
-16:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:6/0/physics_layer_0/angular_velocity = 0.0
-16:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:6/0/physics_layer_1/angular_velocity = 0.0
[sub_resource type="TileSet" id="TileSet_kf7eg"]
physics_layer_0/collision_layer = 1
layer = -3
[node name="ColorRect" type="ColorRect" parent="Background"]
+auto_translate_mode = 2
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_bottom = 578.0
grow_horizontal = 2
grow_vertical = 2
-auto_translate = false
localize_numeral_system = false
color = Color(0.137255, 0.14902, 0.196078, 1)
[node name="Camera2D" type="Camera2D" parent="."]
position = Vector2(282, -29)
zoom = Vector2(2, 2)
+process_callback = 0
[node name="PhantomCameraHost" type="Node" parent="Camera2D"]
+process_priority = 300
+process_physics_priority = 300
script = ExtResource("4_mylkx")
[node name="Player" type="Node" parent="."]
[node name="PlayerPhantomCamera2D" type="Node2D" parent="Player" node_paths=PackedStringArray("follow_target")]
unique_name_in_owner = true
+top_level = true
position = Vector2(282, -29)
script = ExtResource("5_lwx5e")
priority = 5
tween_resource = ExtResource("6_tju6r")
tween_on_load = false
follow_damping = true
-dead_zone_width = 0.416
-dead_zone_height = 0.63
+dead_zone_width = 0.4
+dead_zone_height = 0.8
show_viewfinder_in_play = true
draw_limits = true
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_easgx"]
texture = ExtResource("1_5kqbp")
0:0/0 = 0
-0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-0:0/0/physics_layer_0/angular_velocity = 0.0
-0:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-0:0/0/physics_layer_1/angular_velocity = 0.0
1:0/0 = 0
-1:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-1:0/0/physics_layer_0/angular_velocity = 0.0
-1:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-1:0/0/physics_layer_1/angular_velocity = 0.0
2:0/0 = 0
-2:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-2:0/0/physics_layer_0/angular_velocity = 0.0
-2:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-2:0/0/physics_layer_1/angular_velocity = 0.0
3:0/0 = 0
-3:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:0/0/physics_layer_0/angular_velocity = 0.0
-3:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:0/0/physics_layer_1/angular_velocity = 0.0
4:0/0 = 0
-4:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:0/0/physics_layer_0/angular_velocity = 0.0
-4:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:0/0/physics_layer_1/angular_velocity = 0.0
5:0/0 = 0
-5:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:0/0/physics_layer_0/angular_velocity = 0.0
-5:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:0/0/physics_layer_1/angular_velocity = 0.0
6:0/0 = 0
-6:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-6:0/0/physics_layer_0/angular_velocity = 0.0
-6:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-6:0/0/physics_layer_1/angular_velocity = 0.0
7:0/0 = 0
-7:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:0/0/physics_layer_0/angular_velocity = 0.0
7:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-7:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:0/0/physics_layer_1/angular_velocity = 0.0
0:1/0 = 0
-0:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-0:1/0/physics_layer_0/angular_velocity = 0.0
-0:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-0:1/0/physics_layer_1/angular_velocity = 0.0
1:1/0 = 0
-1:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-1:1/0/physics_layer_0/angular_velocity = 0.0
-1:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-1:1/0/physics_layer_1/angular_velocity = 0.0
2:1/0 = 0
-2:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-2:1/0/physics_layer_0/angular_velocity = 0.0
-2:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-2:1/0/physics_layer_1/angular_velocity = 0.0
3:1/0 = 0
-3:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:1/0/physics_layer_0/angular_velocity = 0.0
-3:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:1/0/physics_layer_1/angular_velocity = 0.0
4:1/0 = 0
-4:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:1/0/physics_layer_0/angular_velocity = 0.0
-4:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:1/0/physics_layer_1/angular_velocity = 0.0
5:1/0 = 0
-5:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:1/0/physics_layer_0/angular_velocity = 0.0
-5:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:1/0/physics_layer_1/angular_velocity = 0.0
7:1/0 = 0
-7:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:1/0/physics_layer_0/angular_velocity = 0.0
7:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-7:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:1/0/physics_layer_1/angular_velocity = 0.0
2:2/0 = 0
-2:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-2:2/0/physics_layer_0/angular_velocity = 0.0
-2:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-2:2/0/physics_layer_1/angular_velocity = 0.0
3:2/0 = 0
-3:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:2/0/physics_layer_0/angular_velocity = 0.0
-3:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:2/0/physics_layer_1/angular_velocity = 0.0
4:2/0 = 0
-4:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:2/0/physics_layer_0/angular_velocity = 0.0
-4:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:2/0/physics_layer_1/angular_velocity = 0.0
7:2/0 = 0
-7:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:2/0/physics_layer_0/angular_velocity = 0.0
7:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-7:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:2/0/physics_layer_1/angular_velocity = 0.0
3:3/0 = 0
-3:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:3/0/physics_layer_0/angular_velocity = 0.0
-3:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:3/0/physics_layer_1/angular_velocity = 0.0
4:3/0 = 0
-4:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:3/0/physics_layer_0/angular_velocity = 0.0
-4:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:3/0/physics_layer_1/angular_velocity = 0.0
5:3/0 = 0
-5:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:3/0/physics_layer_0/angular_velocity = 0.0
-5:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:3/0/physics_layer_1/angular_velocity = 0.0
7:3/0 = 0
-7:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:3/0/physics_layer_0/angular_velocity = 0.0
7:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-7:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:3/0/physics_layer_1/angular_velocity = 0.0
3:4/0 = 0
-3:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:4/0/physics_layer_0/angular_velocity = 0.0
-3:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:4/0/physics_layer_1/angular_velocity = 0.0
4:4/0 = 0
-4:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:4/0/physics_layer_0/angular_velocity = 0.0
-4:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:4/0/physics_layer_1/angular_velocity = 0.0
5:4/0 = 0
-5:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:4/0/physics_layer_0/angular_velocity = 0.0
-5:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:4/0/physics_layer_1/angular_velocity = 0.0
7:4/0 = 0
-7:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:4/0/physics_layer_0/angular_velocity = 0.0
-7:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:4/0/physics_layer_1/angular_velocity = 0.0
3:5/0 = 0
-3:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:5/0/physics_layer_0/angular_velocity = 0.0
-3:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:5/0/physics_layer_1/angular_velocity = 0.0
4:5/0 = 0
-4:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:5/0/physics_layer_0/angular_velocity = 0.0
-4:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:5/0/physics_layer_1/angular_velocity = 0.0
7:5/0 = 0
-7:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:5/0/physics_layer_0/angular_velocity = 0.0
-7:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:5/0/physics_layer_1/angular_velocity = 0.0
3:6/0 = 0
-3:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:6/0/physics_layer_0/angular_velocity = 0.0
-3:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:6/0/physics_layer_1/angular_velocity = 0.0
4:6/0 = 0
-4:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:6/0/physics_layer_0/angular_velocity = 0.0
-4:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:6/0/physics_layer_1/angular_velocity = 0.0
7:6/0 = 0
-7:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:6/0/physics_layer_0/angular_velocity = 0.0
-7:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:6/0/physics_layer_1/angular_velocity = 0.0
2:7/0 = 0
-2:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-2:7/0/physics_layer_0/angular_velocity = 0.0
-2:7/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-2:7/0/physics_layer_1/angular_velocity = 0.0
3:7/0 = 0
-3:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:7/0/physics_layer_0/angular_velocity = 0.0
-3:7/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:7/0/physics_layer_1/angular_velocity = 0.0
4:7/0 = 0
-4:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:7/0/physics_layer_0/angular_velocity = 0.0
-4:7/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:7/0/physics_layer_1/angular_velocity = 0.0
5:7/0 = 0
-5:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:7/0/physics_layer_0/angular_velocity = 0.0
-5:7/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:7/0/physics_layer_1/angular_velocity = 0.0
8:0/0 = 0
-8:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:0/0/physics_layer_0/angular_velocity = 0.0
8:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-8:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:0/0/physics_layer_1/angular_velocity = 0.0
9:0/0 = 0
-9:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:0/0/physics_layer_0/angular_velocity = 0.0
9:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-9:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:0/0/physics_layer_1/angular_velocity = 0.0
10:0/0 = 0
-10:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:0/0/physics_layer_0/angular_velocity = 0.0
10:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-10:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:0/0/physics_layer_1/angular_velocity = 0.0
11:0/0 = 0
-11:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:0/0/physics_layer_0/angular_velocity = 0.0
11:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-11:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:0/0/physics_layer_1/angular_velocity = 0.0
12:0/0 = 0
-12:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:0/0/physics_layer_0/angular_velocity = 0.0
12:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:0/0/physics_layer_1/angular_velocity = 0.0
13:0/0 = 0
-13:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:0/0/physics_layer_0/angular_velocity = 0.0
13:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:0/0/physics_layer_1/angular_velocity = 0.0
14:0/0 = 0
-14:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:0/0/physics_layer_0/angular_velocity = 0.0
-14:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:0/0/physics_layer_1/angular_velocity = 0.0
14:0/0/physics_layer_1/polygon_0/points = PackedVector2Array(8, -8, 8, 8, -8, 8)
14:0/0/custom_data_0 = &"Sign"
15:0/0 = 0
-15:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:0/0/physics_layer_0/angular_velocity = 0.0
-15:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:0/0/physics_layer_1/angular_velocity = 0.0
16:0/0 = 0
-16:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:0/0/physics_layer_0/angular_velocity = 0.0
-16:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:0/0/physics_layer_1/angular_velocity = 0.0
8:1/0 = 0
-8:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:1/0/physics_layer_0/angular_velocity = 0.0
8:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-8:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:1/0/physics_layer_1/angular_velocity = 0.0
9:1/0 = 0
-9:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:1/0/physics_layer_0/angular_velocity = 0.0
9:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-9:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:1/0/physics_layer_1/angular_velocity = 0.0
10:1/0 = 0
-10:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:1/0/physics_layer_0/angular_velocity = 0.0
10:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-10:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:1/0/physics_layer_1/angular_velocity = 0.0
11:1/0 = 0
-11:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:1/0/physics_layer_0/angular_velocity = 0.0
11:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-11:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:1/0/physics_layer_1/angular_velocity = 0.0
12:1/0 = 0
-12:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:1/0/physics_layer_0/angular_velocity = 0.0
12:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:1/0/physics_layer_1/angular_velocity = 0.0
13:1/0 = 0
-13:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:1/0/physics_layer_0/angular_velocity = 0.0
13:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:1/0/physics_layer_1/angular_velocity = 0.0
14:1/0 = 0
-14:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:1/0/physics_layer_0/angular_velocity = 0.0
-14:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:1/0/physics_layer_1/angular_velocity = 0.0
15:1/0 = 0
-15:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:1/0/physics_layer_0/angular_velocity = 0.0
-15:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:1/0/physics_layer_1/angular_velocity = 0.0
16:1/0 = 0
-16:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:1/0/physics_layer_0/angular_velocity = 0.0
-16:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:1/0/physics_layer_1/angular_velocity = 0.0
8:2/0 = 0
-8:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:2/0/physics_layer_0/angular_velocity = 0.0
8:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-8:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:2/0/physics_layer_1/angular_velocity = 0.0
9:2/0 = 0
-9:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:2/0/physics_layer_0/angular_velocity = 0.0
9:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-9:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:2/0/physics_layer_1/angular_velocity = 0.0
10:2/0 = 0
-10:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:2/0/physics_layer_0/angular_velocity = 0.0
10:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-10:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:2/0/physics_layer_1/angular_velocity = 0.0
11:2/0 = 0
-11:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:2/0/physics_layer_0/angular_velocity = 0.0
11:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-11:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:2/0/physics_layer_1/angular_velocity = 0.0
12:2/0 = 0
-12:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:2/0/physics_layer_0/angular_velocity = 0.0
12:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:2/0/physics_layer_1/angular_velocity = 0.0
13:2/0 = 0
-13:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:2/0/physics_layer_0/angular_velocity = 0.0
13:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:2/0/physics_layer_1/angular_velocity = 0.0
14:2/0 = 0
-14:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:2/0/physics_layer_0/angular_velocity = 0.0
-14:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:2/0/physics_layer_1/angular_velocity = 0.0
15:2/0 = 0
-15:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:2/0/physics_layer_0/angular_velocity = 0.0
-15:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:2/0/physics_layer_1/angular_velocity = 0.0
16:2/0 = 0
-16:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:2/0/physics_layer_0/angular_velocity = 0.0
-16:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:2/0/physics_layer_1/angular_velocity = 0.0
8:3/0 = 0
-8:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:3/0/physics_layer_0/angular_velocity = 0.0
8:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-8:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:3/0/physics_layer_1/angular_velocity = 0.0
9:3/0 = 0
-9:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:3/0/physics_layer_0/angular_velocity = 0.0
9:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-9:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:3/0/physics_layer_1/angular_velocity = 0.0
10:3/0 = 0
-10:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:3/0/physics_layer_0/angular_velocity = 0.0
10:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-10:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:3/0/physics_layer_1/angular_velocity = 0.0
11:3/0 = 0
-11:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:3/0/physics_layer_0/angular_velocity = 0.0
-11:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:3/0/physics_layer_1/angular_velocity = 0.0
12:3/0 = 0
-12:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:3/0/physics_layer_0/angular_velocity = 0.0
12:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:3/0/physics_layer_1/angular_velocity = 0.0
13:3/0 = 0
-13:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:3/0/physics_layer_0/angular_velocity = 0.0
13:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:3/0/physics_layer_1/angular_velocity = 0.0
14:3/0 = 0
-14:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:3/0/physics_layer_0/angular_velocity = 0.0
-14:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:3/0/physics_layer_1/angular_velocity = 0.0
15:3/0 = 0
-15:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:3/0/physics_layer_0/angular_velocity = 0.0
-15:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:3/0/physics_layer_1/angular_velocity = 0.0
16:3/0 = 0
-16:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:3/0/physics_layer_0/angular_velocity = 0.0
-16:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:3/0/physics_layer_1/angular_velocity = 0.0
8:4/0 = 0
-8:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:4/0/physics_layer_0/angular_velocity = 0.0
-8:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:4/0/physics_layer_1/angular_velocity = 0.0
9:4/0 = 0
-9:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:4/0/physics_layer_0/angular_velocity = 0.0
-9:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:4/0/physics_layer_1/angular_velocity = 0.0
10:4/0 = 0
-10:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:4/0/physics_layer_0/angular_velocity = 0.0
-10:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:4/0/physics_layer_1/angular_velocity = 0.0
11:4/0 = 0
-11:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:4/0/physics_layer_0/angular_velocity = 0.0
11:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-7, 2.5, -5, -2, -2.5, -5, 2, -7, 8, -8, 8, 8, -8, 8)
-11:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:4/0/physics_layer_1/angular_velocity = 0.0
12:4/0 = 0
-12:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:4/0/physics_layer_0/angular_velocity = 0.0
12:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:4/0/physics_layer_1/angular_velocity = 0.0
13:4/0 = 0
-13:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:4/0/physics_layer_0/angular_velocity = 0.0
13:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 0, -6, 4, -1.5, 6.5, 1.5, 8, 8, -8, 8)
-13:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:4/0/physics_layer_1/angular_velocity = 0.0
14:4/0 = 0
-14:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:4/0/physics_layer_0/angular_velocity = 0.0
-14:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:4/0/physics_layer_1/angular_velocity = 0.0
14:4/0/physics_layer_1/polygon_0/points = PackedVector2Array(-8, -8, -8, 8, 8, 8, 8, -8)
14:4/0/custom_data_0 = &"Inventory"
15:4/0 = 0
-15:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:4/0/physics_layer_0/angular_velocity = 0.0
-15:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:4/0/physics_layer_1/angular_velocity = 0.0
16:4/0 = 0
-16:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:4/0/physics_layer_0/angular_velocity = 0.0
-16:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:4/0/physics_layer_1/angular_velocity = 0.0
8:5/0 = 0
-8:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:5/0/physics_layer_0/angular_velocity = 0.0
-8:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:5/0/physics_layer_1/angular_velocity = 0.0
9:5/0 = 0
-9:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:5/0/physics_layer_0/angular_velocity = 0.0
-9:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:5/0/physics_layer_1/angular_velocity = 0.0
10:5/0 = 0
-10:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:5/0/physics_layer_0/angular_velocity = 0.0
-10:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:5/0/physics_layer_1/angular_velocity = 0.0
11:5/0 = 0
-11:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:5/0/physics_layer_0/angular_velocity = 0.0
11:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-11:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:5/0/physics_layer_1/angular_velocity = 0.0
12:5/0 = 0
-12:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:5/0/physics_layer_0/angular_velocity = 0.0
12:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:5/0/physics_layer_1/angular_velocity = 0.0
13:5/0 = 0
-13:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:5/0/physics_layer_0/angular_velocity = 0.0
13:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:5/0/physics_layer_1/angular_velocity = 0.0
14:5/0 = 0
-14:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:5/0/physics_layer_0/angular_velocity = 0.0
-14:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:5/0/physics_layer_1/angular_velocity = 0.0
15:5/0 = 0
-15:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:5/0/physics_layer_0/angular_velocity = 0.0
-15:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:5/0/physics_layer_1/angular_velocity = 0.0
16:5/0 = 0
-16:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:5/0/physics_layer_0/angular_velocity = 0.0
-16:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:5/0/physics_layer_1/angular_velocity = 0.0
8:6/0 = 0
-8:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:6/0/physics_layer_0/angular_velocity = 0.0
-8:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:6/0/physics_layer_1/angular_velocity = 0.0
9:6/0 = 0
-9:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:6/0/physics_layer_0/angular_velocity = 0.0
-9:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:6/0/physics_layer_1/angular_velocity = 0.0
10:6/0 = 0
-10:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:6/0/physics_layer_0/angular_velocity = 0.0
-10:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:6/0/physics_layer_1/angular_velocity = 0.0
11:6/0 = 0
-11:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:6/0/physics_layer_0/angular_velocity = 0.0
11:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, 1, 6.5, -3, 3, -6.5, -1.5)
-11:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:6/0/physics_layer_1/angular_velocity = 0.0
12:6/0 = 0
-12:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:6/0/physics_layer_0/angular_velocity = 0.0
12:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:6/0/physics_layer_1/angular_velocity = 0.0
13:6/0 = 0
-13:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:6/0/physics_layer_0/angular_velocity = 0.0
13:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 6, -0.5, 3, 3.5, -1.5, 6.5, -8, 8)
-13:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:6/0/physics_layer_1/angular_velocity = 0.0
14:6/0 = 0
-14:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:6/0/physics_layer_0/angular_velocity = 0.0
-14:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:6/0/physics_layer_1/angular_velocity = 0.0
15:6/0 = 0
-15:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:6/0/physics_layer_0/angular_velocity = 0.0
-15:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:6/0/physics_layer_1/angular_velocity = 0.0
16:6/0 = 0
-16:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:6/0/physics_layer_0/angular_velocity = 0.0
-16:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:6/0/physics_layer_1/angular_velocity = 0.0
[sub_resource type="TileSet" id="TileSet_kf7eg"]
physics_layer_0/collision_layer = 1
layer = -3
[node name="ColorRect" type="ColorRect" parent="Background"]
+auto_translate_mode = 2
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_bottom = 548.0
grow_horizontal = 2
grow_vertical = 2
-auto_translate = false
localize_numeral_system = false
color = Color(0.137255, 0.14902, 0.196078, 1)
visible = false
[node name="Camera2D" type="Camera2D" parent="."]
-position = Vector2(107, -172.5)
+position = Vector2(186, -172.5)
+zoom = Vector2(1.5, 1.5)
position_smoothing_speed = 8.0
[node name="PhantomCameraHost" type="Node" parent="Camera2D"]
+process_priority = 300
+process_physics_priority = 300
script = ExtResource("4_2efwt")
[node name="Label" type="Label" parent="."]
[Space] to jump"
[node name="PhantomCamera2D" type="Node2D" parent="." node_paths=PackedStringArray("follow_targets")]
-position = Vector2(107, -172.5)
+top_level = true
+position = Vector2(186, -172.5)
script = ExtResource("6_diuy4")
priority = 10
follow_mode = 3
follow_targets = [NodePath("../GroupNPCSprite"), NodePath("../CharacterBody2D/PlayerVisuals")]
+zoom = Vector2(1.5, 1.5)
tween_resource = SubResource("Resource_spy00")
tween_on_load = false
follow_damping = true
auto_zoom = true
+auto_zoom_min = 0.5
+auto_zoom_max = 1.5
auto_zoom_margin = Vector4(200, 0, 200, 0)
draw_limits = true
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_easgx"]
texture = ExtResource("1_17ngo")
0:0/0 = 0
-0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-0:0/0/physics_layer_0/angular_velocity = 0.0
-0:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-0:0/0/physics_layer_1/angular_velocity = 0.0
1:0/0 = 0
-1:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-1:0/0/physics_layer_0/angular_velocity = 0.0
-1:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-1:0/0/physics_layer_1/angular_velocity = 0.0
2:0/0 = 0
-2:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-2:0/0/physics_layer_0/angular_velocity = 0.0
-2:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-2:0/0/physics_layer_1/angular_velocity = 0.0
3:0/0 = 0
-3:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:0/0/physics_layer_0/angular_velocity = 0.0
-3:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:0/0/physics_layer_1/angular_velocity = 0.0
4:0/0 = 0
-4:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:0/0/physics_layer_0/angular_velocity = 0.0
-4:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:0/0/physics_layer_1/angular_velocity = 0.0
5:0/0 = 0
-5:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:0/0/physics_layer_0/angular_velocity = 0.0
-5:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:0/0/physics_layer_1/angular_velocity = 0.0
6:0/0 = 0
-6:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-6:0/0/physics_layer_0/angular_velocity = 0.0
-6:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-6:0/0/physics_layer_1/angular_velocity = 0.0
7:0/0 = 0
-7:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:0/0/physics_layer_0/angular_velocity = 0.0
7:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-7:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:0/0/physics_layer_1/angular_velocity = 0.0
0:1/0 = 0
-0:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-0:1/0/physics_layer_0/angular_velocity = 0.0
-0:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-0:1/0/physics_layer_1/angular_velocity = 0.0
1:1/0 = 0
-1:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-1:1/0/physics_layer_0/angular_velocity = 0.0
-1:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-1:1/0/physics_layer_1/angular_velocity = 0.0
2:1/0 = 0
-2:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-2:1/0/physics_layer_0/angular_velocity = 0.0
-2:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-2:1/0/physics_layer_1/angular_velocity = 0.0
3:1/0 = 0
-3:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:1/0/physics_layer_0/angular_velocity = 0.0
-3:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:1/0/physics_layer_1/angular_velocity = 0.0
4:1/0 = 0
-4:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:1/0/physics_layer_0/angular_velocity = 0.0
-4:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:1/0/physics_layer_1/angular_velocity = 0.0
5:1/0 = 0
-5:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:1/0/physics_layer_0/angular_velocity = 0.0
-5:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:1/0/physics_layer_1/angular_velocity = 0.0
7:1/0 = 0
-7:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:1/0/physics_layer_0/angular_velocity = 0.0
7:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-7:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:1/0/physics_layer_1/angular_velocity = 0.0
2:2/0 = 0
-2:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-2:2/0/physics_layer_0/angular_velocity = 0.0
-2:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-2:2/0/physics_layer_1/angular_velocity = 0.0
3:2/0 = 0
-3:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:2/0/physics_layer_0/angular_velocity = 0.0
-3:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:2/0/physics_layer_1/angular_velocity = 0.0
4:2/0 = 0
-4:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:2/0/physics_layer_0/angular_velocity = 0.0
-4:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:2/0/physics_layer_1/angular_velocity = 0.0
7:2/0 = 0
-7:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:2/0/physics_layer_0/angular_velocity = 0.0
7:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-7:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:2/0/physics_layer_1/angular_velocity = 0.0
3:3/0 = 0
-3:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:3/0/physics_layer_0/angular_velocity = 0.0
-3:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:3/0/physics_layer_1/angular_velocity = 0.0
4:3/0 = 0
-4:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:3/0/physics_layer_0/angular_velocity = 0.0
-4:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:3/0/physics_layer_1/angular_velocity = 0.0
5:3/0 = 0
-5:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:3/0/physics_layer_0/angular_velocity = 0.0
-5:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:3/0/physics_layer_1/angular_velocity = 0.0
7:3/0 = 0
-7:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:3/0/physics_layer_0/angular_velocity = 0.0
7:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-7:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:3/0/physics_layer_1/angular_velocity = 0.0
3:4/0 = 0
-3:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:4/0/physics_layer_0/angular_velocity = 0.0
-3:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:4/0/physics_layer_1/angular_velocity = 0.0
4:4/0 = 0
-4:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:4/0/physics_layer_0/angular_velocity = 0.0
-4:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:4/0/physics_layer_1/angular_velocity = 0.0
5:4/0 = 0
-5:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:4/0/physics_layer_0/angular_velocity = 0.0
-5:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:4/0/physics_layer_1/angular_velocity = 0.0
7:4/0 = 0
-7:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:4/0/physics_layer_0/angular_velocity = 0.0
-7:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:4/0/physics_layer_1/angular_velocity = 0.0
3:5/0 = 0
-3:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:5/0/physics_layer_0/angular_velocity = 0.0
-3:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:5/0/physics_layer_1/angular_velocity = 0.0
4:5/0 = 0
-4:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:5/0/physics_layer_0/angular_velocity = 0.0
-4:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:5/0/physics_layer_1/angular_velocity = 0.0
7:5/0 = 0
-7:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:5/0/physics_layer_0/angular_velocity = 0.0
-7:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:5/0/physics_layer_1/angular_velocity = 0.0
3:6/0 = 0
-3:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:6/0/physics_layer_0/angular_velocity = 0.0
-3:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:6/0/physics_layer_1/angular_velocity = 0.0
4:6/0 = 0
-4:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:6/0/physics_layer_0/angular_velocity = 0.0
-4:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:6/0/physics_layer_1/angular_velocity = 0.0
7:6/0 = 0
-7:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:6/0/physics_layer_0/angular_velocity = 0.0
-7:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:6/0/physics_layer_1/angular_velocity = 0.0
2:7/0 = 0
-2:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-2:7/0/physics_layer_0/angular_velocity = 0.0
-2:7/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-2:7/0/physics_layer_1/angular_velocity = 0.0
3:7/0 = 0
-3:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:7/0/physics_layer_0/angular_velocity = 0.0
-3:7/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:7/0/physics_layer_1/angular_velocity = 0.0
4:7/0 = 0
-4:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:7/0/physics_layer_0/angular_velocity = 0.0
-4:7/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:7/0/physics_layer_1/angular_velocity = 0.0
5:7/0 = 0
-5:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:7/0/physics_layer_0/angular_velocity = 0.0
-5:7/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:7/0/physics_layer_1/angular_velocity = 0.0
8:0/0 = 0
-8:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:0/0/physics_layer_0/angular_velocity = 0.0
8:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-8:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:0/0/physics_layer_1/angular_velocity = 0.0
9:0/0 = 0
-9:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:0/0/physics_layer_0/angular_velocity = 0.0
9:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-9:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:0/0/physics_layer_1/angular_velocity = 0.0
10:0/0 = 0
-10:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:0/0/physics_layer_0/angular_velocity = 0.0
10:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-10:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:0/0/physics_layer_1/angular_velocity = 0.0
11:0/0 = 0
-11:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:0/0/physics_layer_0/angular_velocity = 0.0
11:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-11:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:0/0/physics_layer_1/angular_velocity = 0.0
12:0/0 = 0
-12:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:0/0/physics_layer_0/angular_velocity = 0.0
12:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:0/0/physics_layer_1/angular_velocity = 0.0
13:0/0 = 0
-13:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:0/0/physics_layer_0/angular_velocity = 0.0
13:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:0/0/physics_layer_1/angular_velocity = 0.0
14:0/0 = 0
-14:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:0/0/physics_layer_0/angular_velocity = 0.0
-14:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:0/0/physics_layer_1/angular_velocity = 0.0
14:0/0/physics_layer_1/polygon_0/points = PackedVector2Array(8, -8, 8, 8, -8, 8)
14:0/0/custom_data_0 = &"Sign"
15:0/0 = 0
-15:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:0/0/physics_layer_0/angular_velocity = 0.0
-15:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:0/0/physics_layer_1/angular_velocity = 0.0
16:0/0 = 0
-16:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:0/0/physics_layer_0/angular_velocity = 0.0
-16:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:0/0/physics_layer_1/angular_velocity = 0.0
8:1/0 = 0
-8:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:1/0/physics_layer_0/angular_velocity = 0.0
8:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-8:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:1/0/physics_layer_1/angular_velocity = 0.0
9:1/0 = 0
-9:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:1/0/physics_layer_0/angular_velocity = 0.0
9:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-9:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:1/0/physics_layer_1/angular_velocity = 0.0
10:1/0 = 0
-10:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:1/0/physics_layer_0/angular_velocity = 0.0
10:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-10:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:1/0/physics_layer_1/angular_velocity = 0.0
11:1/0 = 0
-11:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:1/0/physics_layer_0/angular_velocity = 0.0
11:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-11:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:1/0/physics_layer_1/angular_velocity = 0.0
12:1/0 = 0
-12:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:1/0/physics_layer_0/angular_velocity = 0.0
12:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:1/0/physics_layer_1/angular_velocity = 0.0
13:1/0 = 0
-13:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:1/0/physics_layer_0/angular_velocity = 0.0
13:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:1/0/physics_layer_1/angular_velocity = 0.0
14:1/0 = 0
-14:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:1/0/physics_layer_0/angular_velocity = 0.0
-14:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:1/0/physics_layer_1/angular_velocity = 0.0
15:1/0 = 0
-15:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:1/0/physics_layer_0/angular_velocity = 0.0
-15:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:1/0/physics_layer_1/angular_velocity = 0.0
16:1/0 = 0
-16:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:1/0/physics_layer_0/angular_velocity = 0.0
-16:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:1/0/physics_layer_1/angular_velocity = 0.0
8:2/0 = 0
-8:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:2/0/physics_layer_0/angular_velocity = 0.0
8:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-8:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:2/0/physics_layer_1/angular_velocity = 0.0
9:2/0 = 0
-9:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:2/0/physics_layer_0/angular_velocity = 0.0
9:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-9:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:2/0/physics_layer_1/angular_velocity = 0.0
10:2/0 = 0
-10:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:2/0/physics_layer_0/angular_velocity = 0.0
10:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-10:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:2/0/physics_layer_1/angular_velocity = 0.0
11:2/0 = 0
-11:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:2/0/physics_layer_0/angular_velocity = 0.0
11:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-11:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:2/0/physics_layer_1/angular_velocity = 0.0
12:2/0 = 0
-12:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:2/0/physics_layer_0/angular_velocity = 0.0
12:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:2/0/physics_layer_1/angular_velocity = 0.0
13:2/0 = 0
-13:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:2/0/physics_layer_0/angular_velocity = 0.0
13:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:2/0/physics_layer_1/angular_velocity = 0.0
14:2/0 = 0
-14:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:2/0/physics_layer_0/angular_velocity = 0.0
-14:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:2/0/physics_layer_1/angular_velocity = 0.0
15:2/0 = 0
-15:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:2/0/physics_layer_0/angular_velocity = 0.0
-15:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:2/0/physics_layer_1/angular_velocity = 0.0
16:2/0 = 0
-16:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:2/0/physics_layer_0/angular_velocity = 0.0
-16:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:2/0/physics_layer_1/angular_velocity = 0.0
8:3/0 = 0
-8:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:3/0/physics_layer_0/angular_velocity = 0.0
8:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-8:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:3/0/physics_layer_1/angular_velocity = 0.0
9:3/0 = 0
-9:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:3/0/physics_layer_0/angular_velocity = 0.0
9:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-9:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:3/0/physics_layer_1/angular_velocity = 0.0
10:3/0 = 0
-10:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:3/0/physics_layer_0/angular_velocity = 0.0
10:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-10:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:3/0/physics_layer_1/angular_velocity = 0.0
11:3/0 = 0
-11:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:3/0/physics_layer_0/angular_velocity = 0.0
-11:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:3/0/physics_layer_1/angular_velocity = 0.0
12:3/0 = 0
-12:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:3/0/physics_layer_0/angular_velocity = 0.0
12:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:3/0/physics_layer_1/angular_velocity = 0.0
13:3/0 = 0
-13:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:3/0/physics_layer_0/angular_velocity = 0.0
13:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:3/0/physics_layer_1/angular_velocity = 0.0
14:3/0 = 0
-14:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:3/0/physics_layer_0/angular_velocity = 0.0
-14:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:3/0/physics_layer_1/angular_velocity = 0.0
15:3/0 = 0
-15:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:3/0/physics_layer_0/angular_velocity = 0.0
-15:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:3/0/physics_layer_1/angular_velocity = 0.0
16:3/0 = 0
-16:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:3/0/physics_layer_0/angular_velocity = 0.0
-16:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:3/0/physics_layer_1/angular_velocity = 0.0
8:4/0 = 0
-8:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:4/0/physics_layer_0/angular_velocity = 0.0
-8:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:4/0/physics_layer_1/angular_velocity = 0.0
9:4/0 = 0
-9:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:4/0/physics_layer_0/angular_velocity = 0.0
-9:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:4/0/physics_layer_1/angular_velocity = 0.0
10:4/0 = 0
-10:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:4/0/physics_layer_0/angular_velocity = 0.0
-10:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:4/0/physics_layer_1/angular_velocity = 0.0
11:4/0 = 0
-11:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:4/0/physics_layer_0/angular_velocity = 0.0
11:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-7, 2.5, -5, -2, -2.5, -5, 2, -7, 8, -8, 8, 8, -8, 8)
-11:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:4/0/physics_layer_1/angular_velocity = 0.0
12:4/0 = 0
-12:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:4/0/physics_layer_0/angular_velocity = 0.0
12:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:4/0/physics_layer_1/angular_velocity = 0.0
13:4/0 = 0
-13:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:4/0/physics_layer_0/angular_velocity = 0.0
13:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 0, -6, 4, -1.5, 6.5, 1.5, 8, 8, -8, 8)
-13:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:4/0/physics_layer_1/angular_velocity = 0.0
14:4/0 = 0
-14:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:4/0/physics_layer_0/angular_velocity = 0.0
-14:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:4/0/physics_layer_1/angular_velocity = 0.0
14:4/0/physics_layer_1/polygon_0/points = PackedVector2Array(-8, -8, -8, 8, 8, 8, 8, -8)
14:4/0/custom_data_0 = &"Inventory"
15:4/0 = 0
-15:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:4/0/physics_layer_0/angular_velocity = 0.0
-15:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:4/0/physics_layer_1/angular_velocity = 0.0
16:4/0 = 0
-16:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:4/0/physics_layer_0/angular_velocity = 0.0
-16:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:4/0/physics_layer_1/angular_velocity = 0.0
8:5/0 = 0
-8:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:5/0/physics_layer_0/angular_velocity = 0.0
-8:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:5/0/physics_layer_1/angular_velocity = 0.0
9:5/0 = 0
-9:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:5/0/physics_layer_0/angular_velocity = 0.0
-9:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:5/0/physics_layer_1/angular_velocity = 0.0
10:5/0 = 0
-10:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:5/0/physics_layer_0/angular_velocity = 0.0
-10:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:5/0/physics_layer_1/angular_velocity = 0.0
11:5/0 = 0
-11:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:5/0/physics_layer_0/angular_velocity = 0.0
11:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-11:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:5/0/physics_layer_1/angular_velocity = 0.0
12:5/0 = 0
-12:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:5/0/physics_layer_0/angular_velocity = 0.0
12:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:5/0/physics_layer_1/angular_velocity = 0.0
13:5/0 = 0
-13:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:5/0/physics_layer_0/angular_velocity = 0.0
13:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:5/0/physics_layer_1/angular_velocity = 0.0
14:5/0 = 0
-14:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:5/0/physics_layer_0/angular_velocity = 0.0
-14:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:5/0/physics_layer_1/angular_velocity = 0.0
15:5/0 = 0
-15:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:5/0/physics_layer_0/angular_velocity = 0.0
-15:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:5/0/physics_layer_1/angular_velocity = 0.0
16:5/0 = 0
-16:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:5/0/physics_layer_0/angular_velocity = 0.0
-16:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:5/0/physics_layer_1/angular_velocity = 0.0
8:6/0 = 0
-8:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:6/0/physics_layer_0/angular_velocity = 0.0
-8:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:6/0/physics_layer_1/angular_velocity = 0.0
9:6/0 = 0
-9:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:6/0/physics_layer_0/angular_velocity = 0.0
-9:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:6/0/physics_layer_1/angular_velocity = 0.0
10:6/0 = 0
-10:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:6/0/physics_layer_0/angular_velocity = 0.0
-10:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:6/0/physics_layer_1/angular_velocity = 0.0
11:6/0 = 0
-11:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:6/0/physics_layer_0/angular_velocity = 0.0
11:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, 1, 6.5, -3, 3, -6.5, -1.5)
-11:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:6/0/physics_layer_1/angular_velocity = 0.0
12:6/0 = 0
-12:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:6/0/physics_layer_0/angular_velocity = 0.0
12:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:6/0/physics_layer_1/angular_velocity = 0.0
13:6/0 = 0
-13:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:6/0/physics_layer_0/angular_velocity = 0.0
13:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 6, -0.5, 3, 3.5, -1.5, 6.5, -8, 8)
-13:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:6/0/physics_layer_1/angular_velocity = 0.0
14:6/0 = 0
-14:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:6/0/physics_layer_0/angular_velocity = 0.0
-14:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:6/0/physics_layer_1/angular_velocity = 0.0
15:6/0 = 0
-15:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:6/0/physics_layer_0/angular_velocity = 0.0
-15:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:6/0/physics_layer_1/angular_velocity = 0.0
16:6/0 = 0
-16:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:6/0/physics_layer_0/angular_velocity = 0.0
-16:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:6/0/physics_layer_1/angular_velocity = 0.0
[sub_resource type="TileSet" id="TileSet_kf7eg"]
physics_layer_0/collision_layer = 1
layer = -3
[node name="ColorRect" type="ColorRect" parent="Background"]
+auto_translate_mode = 2
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_bottom = 548.0
grow_horizontal = 2
grow_vertical = 2
-auto_translate = false
localize_numeral_system = false
color = Color(0.137255, 0.14902, 0.196078, 1)
[node name="Camera2D" type="Camera2D" parent="."]
position = Vector2(374, -216)
zoom = Vector2(1.5, 1.5)
+process_callback = 0
[node name="PhantomCameraHost" type="Node" parent="Camera2D"]
+process_priority = 300
+process_physics_priority = 300
script = ExtResource("4_yddet")
[node name="Label" type="Label" parent="."]
[node name="PlayerPhantomCamera2D" type="Node2D" parent="." node_paths=PackedStringArray("follow_target", "follow_path")]
unique_name_in_owner = true
+top_level = true
position = Vector2(374, -216)
script = ExtResource("5_x25dj")
priority = 10
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_easgx"]
texture = ExtResource("1_wmhqb")
0:0/0 = 0
-0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-0:0/0/physics_layer_0/angular_velocity = 0.0
-0:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-0:0/0/physics_layer_1/angular_velocity = 0.0
1:0/0 = 0
-1:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-1:0/0/physics_layer_0/angular_velocity = 0.0
-1:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-1:0/0/physics_layer_1/angular_velocity = 0.0
2:0/0 = 0
-2:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-2:0/0/physics_layer_0/angular_velocity = 0.0
-2:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-2:0/0/physics_layer_1/angular_velocity = 0.0
3:0/0 = 0
-3:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:0/0/physics_layer_0/angular_velocity = 0.0
-3:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:0/0/physics_layer_1/angular_velocity = 0.0
4:0/0 = 0
-4:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:0/0/physics_layer_0/angular_velocity = 0.0
-4:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:0/0/physics_layer_1/angular_velocity = 0.0
5:0/0 = 0
-5:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:0/0/physics_layer_0/angular_velocity = 0.0
-5:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:0/0/physics_layer_1/angular_velocity = 0.0
6:0/0 = 0
-6:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-6:0/0/physics_layer_0/angular_velocity = 0.0
-6:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-6:0/0/physics_layer_1/angular_velocity = 0.0
7:0/0 = 0
-7:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:0/0/physics_layer_0/angular_velocity = 0.0
7:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-7:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:0/0/physics_layer_1/angular_velocity = 0.0
0:1/0 = 0
-0:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-0:1/0/physics_layer_0/angular_velocity = 0.0
-0:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-0:1/0/physics_layer_1/angular_velocity = 0.0
1:1/0 = 0
-1:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-1:1/0/physics_layer_0/angular_velocity = 0.0
-1:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-1:1/0/physics_layer_1/angular_velocity = 0.0
2:1/0 = 0
-2:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-2:1/0/physics_layer_0/angular_velocity = 0.0
-2:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-2:1/0/physics_layer_1/angular_velocity = 0.0
3:1/0 = 0
-3:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:1/0/physics_layer_0/angular_velocity = 0.0
-3:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:1/0/physics_layer_1/angular_velocity = 0.0
4:1/0 = 0
-4:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:1/0/physics_layer_0/angular_velocity = 0.0
-4:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:1/0/physics_layer_1/angular_velocity = 0.0
5:1/0 = 0
-5:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:1/0/physics_layer_0/angular_velocity = 0.0
-5:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:1/0/physics_layer_1/angular_velocity = 0.0
7:1/0 = 0
-7:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:1/0/physics_layer_0/angular_velocity = 0.0
7:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-7:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:1/0/physics_layer_1/angular_velocity = 0.0
2:2/0 = 0
-2:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-2:2/0/physics_layer_0/angular_velocity = 0.0
-2:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-2:2/0/physics_layer_1/angular_velocity = 0.0
3:2/0 = 0
-3:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:2/0/physics_layer_0/angular_velocity = 0.0
-3:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:2/0/physics_layer_1/angular_velocity = 0.0
4:2/0 = 0
-4:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:2/0/physics_layer_0/angular_velocity = 0.0
-4:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:2/0/physics_layer_1/angular_velocity = 0.0
7:2/0 = 0
-7:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:2/0/physics_layer_0/angular_velocity = 0.0
7:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-7:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:2/0/physics_layer_1/angular_velocity = 0.0
3:3/0 = 0
-3:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:3/0/physics_layer_0/angular_velocity = 0.0
-3:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:3/0/physics_layer_1/angular_velocity = 0.0
4:3/0 = 0
-4:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:3/0/physics_layer_0/angular_velocity = 0.0
-4:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:3/0/physics_layer_1/angular_velocity = 0.0
5:3/0 = 0
-5:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:3/0/physics_layer_0/angular_velocity = 0.0
-5:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:3/0/physics_layer_1/angular_velocity = 0.0
7:3/0 = 0
-7:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:3/0/physics_layer_0/angular_velocity = 0.0
7:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-7:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:3/0/physics_layer_1/angular_velocity = 0.0
3:4/0 = 0
-3:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:4/0/physics_layer_0/angular_velocity = 0.0
-3:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:4/0/physics_layer_1/angular_velocity = 0.0
4:4/0 = 0
-4:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:4/0/physics_layer_0/angular_velocity = 0.0
-4:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:4/0/physics_layer_1/angular_velocity = 0.0
5:4/0 = 0
-5:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:4/0/physics_layer_0/angular_velocity = 0.0
-5:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:4/0/physics_layer_1/angular_velocity = 0.0
7:4/0 = 0
-7:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:4/0/physics_layer_0/angular_velocity = 0.0
-7:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:4/0/physics_layer_1/angular_velocity = 0.0
3:5/0 = 0
-3:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:5/0/physics_layer_0/angular_velocity = 0.0
-3:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:5/0/physics_layer_1/angular_velocity = 0.0
4:5/0 = 0
-4:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:5/0/physics_layer_0/angular_velocity = 0.0
-4:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:5/0/physics_layer_1/angular_velocity = 0.0
7:5/0 = 0
-7:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:5/0/physics_layer_0/angular_velocity = 0.0
-7:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:5/0/physics_layer_1/angular_velocity = 0.0
3:6/0 = 0
-3:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:6/0/physics_layer_0/angular_velocity = 0.0
-3:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:6/0/physics_layer_1/angular_velocity = 0.0
4:6/0 = 0
-4:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:6/0/physics_layer_0/angular_velocity = 0.0
-4:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:6/0/physics_layer_1/angular_velocity = 0.0
7:6/0 = 0
-7:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:6/0/physics_layer_0/angular_velocity = 0.0
-7:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:6/0/physics_layer_1/angular_velocity = 0.0
2:7/0 = 0
-2:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-2:7/0/physics_layer_0/angular_velocity = 0.0
-2:7/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-2:7/0/physics_layer_1/angular_velocity = 0.0
3:7/0 = 0
-3:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:7/0/physics_layer_0/angular_velocity = 0.0
-3:7/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:7/0/physics_layer_1/angular_velocity = 0.0
4:7/0 = 0
-4:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:7/0/physics_layer_0/angular_velocity = 0.0
-4:7/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:7/0/physics_layer_1/angular_velocity = 0.0
5:7/0 = 0
-5:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:7/0/physics_layer_0/angular_velocity = 0.0
-5:7/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:7/0/physics_layer_1/angular_velocity = 0.0
8:0/0 = 0
-8:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:0/0/physics_layer_0/angular_velocity = 0.0
8:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-8:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:0/0/physics_layer_1/angular_velocity = 0.0
9:0/0 = 0
-9:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:0/0/physics_layer_0/angular_velocity = 0.0
9:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-9:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:0/0/physics_layer_1/angular_velocity = 0.0
10:0/0 = 0
-10:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:0/0/physics_layer_0/angular_velocity = 0.0
10:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-10:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:0/0/physics_layer_1/angular_velocity = 0.0
11:0/0 = 0
-11:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:0/0/physics_layer_0/angular_velocity = 0.0
11:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-11:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:0/0/physics_layer_1/angular_velocity = 0.0
12:0/0 = 0
-12:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:0/0/physics_layer_0/angular_velocity = 0.0
12:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:0/0/physics_layer_1/angular_velocity = 0.0
13:0/0 = 0
-13:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:0/0/physics_layer_0/angular_velocity = 0.0
13:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:0/0/physics_layer_1/angular_velocity = 0.0
14:0/0 = 0
-14:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:0/0/physics_layer_0/angular_velocity = 0.0
-14:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:0/0/physics_layer_1/angular_velocity = 0.0
14:0/0/physics_layer_1/polygon_0/points = PackedVector2Array(8, -8, 8, 8, -8, 8)
14:0/0/custom_data_0 = &"Sign"
15:0/0 = 0
-15:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:0/0/physics_layer_0/angular_velocity = 0.0
-15:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:0/0/physics_layer_1/angular_velocity = 0.0
16:0/0 = 0
-16:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:0/0/physics_layer_0/angular_velocity = 0.0
-16:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:0/0/physics_layer_1/angular_velocity = 0.0
8:1/0 = 0
-8:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:1/0/physics_layer_0/angular_velocity = 0.0
8:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-8:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:1/0/physics_layer_1/angular_velocity = 0.0
9:1/0 = 0
-9:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:1/0/physics_layer_0/angular_velocity = 0.0
9:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-9:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:1/0/physics_layer_1/angular_velocity = 0.0
10:1/0 = 0
-10:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:1/0/physics_layer_0/angular_velocity = 0.0
10:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-10:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:1/0/physics_layer_1/angular_velocity = 0.0
11:1/0 = 0
-11:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:1/0/physics_layer_0/angular_velocity = 0.0
11:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-11:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:1/0/physics_layer_1/angular_velocity = 0.0
12:1/0 = 0
-12:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:1/0/physics_layer_0/angular_velocity = 0.0
12:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:1/0/physics_layer_1/angular_velocity = 0.0
13:1/0 = 0
-13:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:1/0/physics_layer_0/angular_velocity = 0.0
13:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:1/0/physics_layer_1/angular_velocity = 0.0
14:1/0 = 0
-14:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:1/0/physics_layer_0/angular_velocity = 0.0
-14:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:1/0/physics_layer_1/angular_velocity = 0.0
15:1/0 = 0
-15:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:1/0/physics_layer_0/angular_velocity = 0.0
-15:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:1/0/physics_layer_1/angular_velocity = 0.0
16:1/0 = 0
-16:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:1/0/physics_layer_0/angular_velocity = 0.0
-16:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:1/0/physics_layer_1/angular_velocity = 0.0
8:2/0 = 0
-8:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:2/0/physics_layer_0/angular_velocity = 0.0
8:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-8:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:2/0/physics_layer_1/angular_velocity = 0.0
9:2/0 = 0
-9:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:2/0/physics_layer_0/angular_velocity = 0.0
9:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-9:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:2/0/physics_layer_1/angular_velocity = 0.0
10:2/0 = 0
-10:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:2/0/physics_layer_0/angular_velocity = 0.0
10:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-10:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:2/0/physics_layer_1/angular_velocity = 0.0
11:2/0 = 0
-11:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:2/0/physics_layer_0/angular_velocity = 0.0
11:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-11:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:2/0/physics_layer_1/angular_velocity = 0.0
12:2/0 = 0
-12:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:2/0/physics_layer_0/angular_velocity = 0.0
12:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:2/0/physics_layer_1/angular_velocity = 0.0
13:2/0 = 0
-13:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:2/0/physics_layer_0/angular_velocity = 0.0
13:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:2/0/physics_layer_1/angular_velocity = 0.0
14:2/0 = 0
-14:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:2/0/physics_layer_0/angular_velocity = 0.0
-14:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:2/0/physics_layer_1/angular_velocity = 0.0
15:2/0 = 0
-15:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:2/0/physics_layer_0/angular_velocity = 0.0
-15:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:2/0/physics_layer_1/angular_velocity = 0.0
16:2/0 = 0
-16:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:2/0/physics_layer_0/angular_velocity = 0.0
-16:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:2/0/physics_layer_1/angular_velocity = 0.0
8:3/0 = 0
-8:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:3/0/physics_layer_0/angular_velocity = 0.0
8:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-8:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:3/0/physics_layer_1/angular_velocity = 0.0
9:3/0 = 0
-9:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:3/0/physics_layer_0/angular_velocity = 0.0
9:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-9:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:3/0/physics_layer_1/angular_velocity = 0.0
10:3/0 = 0
-10:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:3/0/physics_layer_0/angular_velocity = 0.0
10:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-10:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:3/0/physics_layer_1/angular_velocity = 0.0
11:3/0 = 0
-11:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:3/0/physics_layer_0/angular_velocity = 0.0
-11:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:3/0/physics_layer_1/angular_velocity = 0.0
12:3/0 = 0
-12:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:3/0/physics_layer_0/angular_velocity = 0.0
12:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:3/0/physics_layer_1/angular_velocity = 0.0
13:3/0 = 0
-13:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:3/0/physics_layer_0/angular_velocity = 0.0
13:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:3/0/physics_layer_1/angular_velocity = 0.0
14:3/0 = 0
-14:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:3/0/physics_layer_0/angular_velocity = 0.0
-14:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:3/0/physics_layer_1/angular_velocity = 0.0
15:3/0 = 0
-15:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:3/0/physics_layer_0/angular_velocity = 0.0
-15:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:3/0/physics_layer_1/angular_velocity = 0.0
16:3/0 = 0
-16:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:3/0/physics_layer_0/angular_velocity = 0.0
-16:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:3/0/physics_layer_1/angular_velocity = 0.0
8:4/0 = 0
-8:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:4/0/physics_layer_0/angular_velocity = 0.0
-8:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:4/0/physics_layer_1/angular_velocity = 0.0
9:4/0 = 0
-9:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:4/0/physics_layer_0/angular_velocity = 0.0
-9:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:4/0/physics_layer_1/angular_velocity = 0.0
10:4/0 = 0
-10:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:4/0/physics_layer_0/angular_velocity = 0.0
-10:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:4/0/physics_layer_1/angular_velocity = 0.0
11:4/0 = 0
-11:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:4/0/physics_layer_0/angular_velocity = 0.0
11:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-7, 2.5, -5, -2, -2.5, -5, 2, -7, 8, -8, 8, 8, -8, 8)
-11:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:4/0/physics_layer_1/angular_velocity = 0.0
12:4/0 = 0
-12:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:4/0/physics_layer_0/angular_velocity = 0.0
12:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:4/0/physics_layer_1/angular_velocity = 0.0
13:4/0 = 0
-13:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:4/0/physics_layer_0/angular_velocity = 0.0
13:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 0, -6, 4, -1.5, 6.5, 1.5, 8, 8, -8, 8)
-13:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:4/0/physics_layer_1/angular_velocity = 0.0
14:4/0 = 0
-14:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:4/0/physics_layer_0/angular_velocity = 0.0
-14:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:4/0/physics_layer_1/angular_velocity = 0.0
14:4/0/physics_layer_1/polygon_0/points = PackedVector2Array(-8, -8, -8, 8, 8, 8, 8, -8)
14:4/0/custom_data_0 = &"Inventory"
15:4/0 = 0
-15:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:4/0/physics_layer_0/angular_velocity = 0.0
-15:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:4/0/physics_layer_1/angular_velocity = 0.0
16:4/0 = 0
-16:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:4/0/physics_layer_0/angular_velocity = 0.0
-16:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:4/0/physics_layer_1/angular_velocity = 0.0
8:5/0 = 0
-8:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:5/0/physics_layer_0/angular_velocity = 0.0
-8:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:5/0/physics_layer_1/angular_velocity = 0.0
9:5/0 = 0
-9:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:5/0/physics_layer_0/angular_velocity = 0.0
-9:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:5/0/physics_layer_1/angular_velocity = 0.0
10:5/0 = 0
-10:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:5/0/physics_layer_0/angular_velocity = 0.0
-10:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:5/0/physics_layer_1/angular_velocity = 0.0
11:5/0 = 0
-11:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:5/0/physics_layer_0/angular_velocity = 0.0
11:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-11:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:5/0/physics_layer_1/angular_velocity = 0.0
12:5/0 = 0
-12:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:5/0/physics_layer_0/angular_velocity = 0.0
12:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:5/0/physics_layer_1/angular_velocity = 0.0
13:5/0 = 0
-13:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:5/0/physics_layer_0/angular_velocity = 0.0
13:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:5/0/physics_layer_1/angular_velocity = 0.0
14:5/0 = 0
-14:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:5/0/physics_layer_0/angular_velocity = 0.0
-14:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:5/0/physics_layer_1/angular_velocity = 0.0
15:5/0 = 0
-15:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:5/0/physics_layer_0/angular_velocity = 0.0
-15:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:5/0/physics_layer_1/angular_velocity = 0.0
16:5/0 = 0
-16:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:5/0/physics_layer_0/angular_velocity = 0.0
-16:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:5/0/physics_layer_1/angular_velocity = 0.0
8:6/0 = 0
-8:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:6/0/physics_layer_0/angular_velocity = 0.0
-8:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:6/0/physics_layer_1/angular_velocity = 0.0
9:6/0 = 0
-9:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:6/0/physics_layer_0/angular_velocity = 0.0
-9:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:6/0/physics_layer_1/angular_velocity = 0.0
10:6/0 = 0
-10:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:6/0/physics_layer_0/angular_velocity = 0.0
-10:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:6/0/physics_layer_1/angular_velocity = 0.0
11:6/0 = 0
-11:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:6/0/physics_layer_0/angular_velocity = 0.0
11:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, 1, 6.5, -3, 3, -6.5, -1.5)
-11:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:6/0/physics_layer_1/angular_velocity = 0.0
12:6/0 = 0
-12:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:6/0/physics_layer_0/angular_velocity = 0.0
12:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:6/0/physics_layer_1/angular_velocity = 0.0
13:6/0 = 0
-13:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:6/0/physics_layer_0/angular_velocity = 0.0
13:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 6, -0.5, 3, 3.5, -1.5, 6.5, -8, 8)
-13:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:6/0/physics_layer_1/angular_velocity = 0.0
14:6/0 = 0
-14:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:6/0/physics_layer_0/angular_velocity = 0.0
-14:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:6/0/physics_layer_1/angular_velocity = 0.0
15:6/0 = 0
-15:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:6/0/physics_layer_0/angular_velocity = 0.0
-15:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:6/0/physics_layer_1/angular_velocity = 0.0
16:6/0 = 0
-16:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:6/0/physics_layer_0/angular_velocity = 0.0
-16:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:6/0/physics_layer_1/angular_velocity = 0.0
[sub_resource type="TileSet" id="TileSet_kf7eg"]
physics_layer_0/collision_layer = 1
layer = -3
[node name="ColorRect" type="ColorRect" parent="Background"]
+auto_translate_mode = 2
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_bottom = 548.0
grow_horizontal = 2
grow_vertical = 2
-auto_translate = false
localize_numeral_system = false
color = Color(0.137255, 0.14902, 0.196078, 1)
metadata/_edit_lock_ = true
[node name="CharacterBody2D" parent="." instance=ExtResource("5_pr2x5")]
unique_name_in_owner = true
-position = Vector2(66, -50)
+position = Vector2(66, -28)
[node name="RoomLeftPhantomCamera2D" type="Node2D" parent="." node_paths=PackedStringArray("follow_target")]
unique_name_in_owner = true
-position = Vector2(66, -113.205)
+top_level = true
+position = Vector2(66, -91.205)
script = ExtResource("4_4b648")
priority = 5
follow_mode = 2
[node name="RoomCentrePhantomCamera2D" type="Node2D" parent="."]
unique_name_in_owner = true
+top_level = true
position = Vector2(1474, -149)
script = ExtResource("4_4b648")
follow_mode = 2
[node name="RoomRightPhantomCamera2D" type="Node2D" parent="."]
unique_name_in_owner = true
+top_level = true
position = Vector2(2347, -156)
scale = Vector2(1.0024, 1)
script = ExtResource("4_4b648")
draw_limits = true
[node name="Camera2D" type="Camera2D" parent="."]
-position = Vector2(66, -113.205)
+position = Vector2(66, -91.205)
zoom = Vector2(2, 2)
+process_callback = 0
limit_left = -387
limit_top = -528
limit_right = 433
editor_draw_limits = true
[node name="PhantomCameraHost" type="Node" parent="Camera2D"]
+process_priority = 300
+process_physics_priority = 300
script = ExtResource("9_w5e16")
[editable path="CharacterBody2D"]
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_easgx"]
texture = ExtResource("1_oo2bo")
0:0/0 = 0
-0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-0:0/0/physics_layer_0/angular_velocity = 0.0
-0:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-0:0/0/physics_layer_1/angular_velocity = 0.0
1:0/0 = 0
-1:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-1:0/0/physics_layer_0/angular_velocity = 0.0
-1:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-1:0/0/physics_layer_1/angular_velocity = 0.0
2:0/0 = 0
-2:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-2:0/0/physics_layer_0/angular_velocity = 0.0
-2:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-2:0/0/physics_layer_1/angular_velocity = 0.0
3:0/0 = 0
-3:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:0/0/physics_layer_0/angular_velocity = 0.0
-3:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:0/0/physics_layer_1/angular_velocity = 0.0
4:0/0 = 0
-4:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:0/0/physics_layer_0/angular_velocity = 0.0
-4:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:0/0/physics_layer_1/angular_velocity = 0.0
5:0/0 = 0
-5:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:0/0/physics_layer_0/angular_velocity = 0.0
-5:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:0/0/physics_layer_1/angular_velocity = 0.0
6:0/0 = 0
-6:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-6:0/0/physics_layer_0/angular_velocity = 0.0
-6:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-6:0/0/physics_layer_1/angular_velocity = 0.0
7:0/0 = 0
-7:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:0/0/physics_layer_0/angular_velocity = 0.0
7:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-7:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:0/0/physics_layer_1/angular_velocity = 0.0
0:1/0 = 0
-0:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-0:1/0/physics_layer_0/angular_velocity = 0.0
-0:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-0:1/0/physics_layer_1/angular_velocity = 0.0
1:1/0 = 0
-1:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-1:1/0/physics_layer_0/angular_velocity = 0.0
-1:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-1:1/0/physics_layer_1/angular_velocity = 0.0
2:1/0 = 0
-2:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-2:1/0/physics_layer_0/angular_velocity = 0.0
-2:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-2:1/0/physics_layer_1/angular_velocity = 0.0
3:1/0 = 0
-3:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:1/0/physics_layer_0/angular_velocity = 0.0
-3:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:1/0/physics_layer_1/angular_velocity = 0.0
4:1/0 = 0
-4:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:1/0/physics_layer_0/angular_velocity = 0.0
-4:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:1/0/physics_layer_1/angular_velocity = 0.0
5:1/0 = 0
-5:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:1/0/physics_layer_0/angular_velocity = 0.0
-5:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:1/0/physics_layer_1/angular_velocity = 0.0
7:1/0 = 0
-7:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:1/0/physics_layer_0/angular_velocity = 0.0
7:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-7:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:1/0/physics_layer_1/angular_velocity = 0.0
2:2/0 = 0
-2:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-2:2/0/physics_layer_0/angular_velocity = 0.0
-2:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-2:2/0/physics_layer_1/angular_velocity = 0.0
3:2/0 = 0
-3:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:2/0/physics_layer_0/angular_velocity = 0.0
-3:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:2/0/physics_layer_1/angular_velocity = 0.0
4:2/0 = 0
-4:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:2/0/physics_layer_0/angular_velocity = 0.0
-4:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:2/0/physics_layer_1/angular_velocity = 0.0
7:2/0 = 0
-7:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:2/0/physics_layer_0/angular_velocity = 0.0
7:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-7:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:2/0/physics_layer_1/angular_velocity = 0.0
3:3/0 = 0
-3:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:3/0/physics_layer_0/angular_velocity = 0.0
-3:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:3/0/physics_layer_1/angular_velocity = 0.0
4:3/0 = 0
-4:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:3/0/physics_layer_0/angular_velocity = 0.0
-4:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:3/0/physics_layer_1/angular_velocity = 0.0
7:3/0 = 0
-7:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:3/0/physics_layer_0/angular_velocity = 0.0
7:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-7:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:3/0/physics_layer_1/angular_velocity = 0.0
3:4/0 = 0
-3:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:4/0/physics_layer_0/angular_velocity = 0.0
-3:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:4/0/physics_layer_1/angular_velocity = 0.0
4:4/0 = 0
-4:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:4/0/physics_layer_0/angular_velocity = 0.0
-4:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:4/0/physics_layer_1/angular_velocity = 0.0
5:4/0 = 0
-5:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:4/0/physics_layer_0/angular_velocity = 0.0
-5:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:4/0/physics_layer_1/angular_velocity = 0.0
7:4/0 = 0
-7:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:4/0/physics_layer_0/angular_velocity = 0.0
-7:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:4/0/physics_layer_1/angular_velocity = 0.0
3:5/0 = 0
-3:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:5/0/physics_layer_0/angular_velocity = 0.0
-3:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:5/0/physics_layer_1/angular_velocity = 0.0
4:5/0 = 0
-4:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:5/0/physics_layer_0/angular_velocity = 0.0
-4:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:5/0/physics_layer_1/angular_velocity = 0.0
7:5/0 = 0
-7:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:5/0/physics_layer_0/angular_velocity = 0.0
-7:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:5/0/physics_layer_1/angular_velocity = 0.0
3:6/0 = 0
-3:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:6/0/physics_layer_0/angular_velocity = 0.0
-3:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:6/0/physics_layer_1/angular_velocity = 0.0
4:6/0 = 0
-4:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:6/0/physics_layer_0/angular_velocity = 0.0
-4:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:6/0/physics_layer_1/angular_velocity = 0.0
7:6/0 = 0
-7:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-7:6/0/physics_layer_0/angular_velocity = 0.0
-7:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-7:6/0/physics_layer_1/angular_velocity = 0.0
2:7/0 = 0
-2:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-2:7/0/physics_layer_0/angular_velocity = 0.0
-2:7/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-2:7/0/physics_layer_1/angular_velocity = 0.0
3:7/0 = 0
-3:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-3:7/0/physics_layer_0/angular_velocity = 0.0
-3:7/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-3:7/0/physics_layer_1/angular_velocity = 0.0
4:7/0 = 0
-4:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-4:7/0/physics_layer_0/angular_velocity = 0.0
-4:7/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-4:7/0/physics_layer_1/angular_velocity = 0.0
5:7/0 = 0
-5:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:7/0/physics_layer_0/angular_velocity = 0.0
-5:7/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:7/0/physics_layer_1/angular_velocity = 0.0
8:0/0 = 0
-8:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:0/0/physics_layer_0/angular_velocity = 0.0
8:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-8:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:0/0/physics_layer_1/angular_velocity = 0.0
9:0/0 = 0
-9:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:0/0/physics_layer_0/angular_velocity = 0.0
9:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-9:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:0/0/physics_layer_1/angular_velocity = 0.0
10:0/0 = 0
-10:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:0/0/physics_layer_0/angular_velocity = 0.0
10:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-10:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:0/0/physics_layer_1/angular_velocity = 0.0
11:0/0 = 0
-11:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:0/0/physics_layer_0/angular_velocity = 0.0
11:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-11:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:0/0/physics_layer_1/angular_velocity = 0.0
12:0/0 = 0
-12:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:0/0/physics_layer_0/angular_velocity = 0.0
12:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:0/0/physics_layer_1/angular_velocity = 0.0
13:0/0 = 0
-13:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:0/0/physics_layer_0/angular_velocity = 0.0
13:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:0/0/physics_layer_1/angular_velocity = 0.0
14:0/0 = 0
-14:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:0/0/physics_layer_0/angular_velocity = 0.0
-14:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:0/0/physics_layer_1/angular_velocity = 0.0
14:0/0/physics_layer_1/polygon_0/points = PackedVector2Array(8, -8, 8, 8, -8, 8)
14:0/0/custom_data_0 = &"Sign"
15:0/0 = 0
-15:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:0/0/physics_layer_0/angular_velocity = 0.0
-15:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:0/0/physics_layer_1/angular_velocity = 0.0
16:0/0 = 0
-16:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:0/0/physics_layer_0/angular_velocity = 0.0
-16:0/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:0/0/physics_layer_1/angular_velocity = 0.0
8:1/0 = 0
-8:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:1/0/physics_layer_0/angular_velocity = 0.0
8:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-8:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:1/0/physics_layer_1/angular_velocity = 0.0
9:1/0 = 0
-9:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:1/0/physics_layer_0/angular_velocity = 0.0
9:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-9:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:1/0/physics_layer_1/angular_velocity = 0.0
10:1/0 = 0
-10:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:1/0/physics_layer_0/angular_velocity = 0.0
10:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-10:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:1/0/physics_layer_1/angular_velocity = 0.0
11:1/0 = 0
-11:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:1/0/physics_layer_0/angular_velocity = 0.0
11:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-11:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:1/0/physics_layer_1/angular_velocity = 0.0
12:1/0 = 0
-12:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:1/0/physics_layer_0/angular_velocity = 0.0
12:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:1/0/physics_layer_1/angular_velocity = 0.0
13:1/0 = 0
-13:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:1/0/physics_layer_0/angular_velocity = 0.0
13:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:1/0/physics_layer_1/angular_velocity = 0.0
14:1/0 = 0
-14:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:1/0/physics_layer_0/angular_velocity = 0.0
-14:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:1/0/physics_layer_1/angular_velocity = 0.0
15:1/0 = 0
-15:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:1/0/physics_layer_0/angular_velocity = 0.0
-15:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:1/0/physics_layer_1/angular_velocity = 0.0
16:1/0 = 0
-16:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:1/0/physics_layer_0/angular_velocity = 0.0
-16:1/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:1/0/physics_layer_1/angular_velocity = 0.0
8:2/0 = 0
-8:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:2/0/physics_layer_0/angular_velocity = 0.0
8:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-8:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:2/0/physics_layer_1/angular_velocity = 0.0
9:2/0 = 0
-9:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:2/0/physics_layer_0/angular_velocity = 0.0
9:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-9:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:2/0/physics_layer_1/angular_velocity = 0.0
10:2/0 = 0
-10:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:2/0/physics_layer_0/angular_velocity = 0.0
10:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-10:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:2/0/physics_layer_1/angular_velocity = 0.0
11:2/0 = 0
-11:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:2/0/physics_layer_0/angular_velocity = 0.0
11:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-11:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:2/0/physics_layer_1/angular_velocity = 0.0
12:2/0 = 0
-12:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:2/0/physics_layer_0/angular_velocity = 0.0
12:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:2/0/physics_layer_1/angular_velocity = 0.0
13:2/0 = 0
-13:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:2/0/physics_layer_0/angular_velocity = 0.0
13:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:2/0/physics_layer_1/angular_velocity = 0.0
14:2/0 = 0
-14:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:2/0/physics_layer_0/angular_velocity = 0.0
-14:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:2/0/physics_layer_1/angular_velocity = 0.0
15:2/0 = 0
-15:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:2/0/physics_layer_0/angular_velocity = 0.0
-15:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:2/0/physics_layer_1/angular_velocity = 0.0
16:2/0 = 0
-16:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:2/0/physics_layer_0/angular_velocity = 0.0
-16:2/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:2/0/physics_layer_1/angular_velocity = 0.0
8:3/0 = 0
-8:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:3/0/physics_layer_0/angular_velocity = 0.0
8:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-8:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:3/0/physics_layer_1/angular_velocity = 0.0
9:3/0 = 0
-9:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:3/0/physics_layer_0/angular_velocity = 0.0
9:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-9:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:3/0/physics_layer_1/angular_velocity = 0.0
10:3/0 = 0
-10:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:3/0/physics_layer_0/angular_velocity = 0.0
10:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-10:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:3/0/physics_layer_1/angular_velocity = 0.0
11:3/0 = 0
-11:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:3/0/physics_layer_0/angular_velocity = 0.0
-11:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:3/0/physics_layer_1/angular_velocity = 0.0
12:3/0 = 0
-12:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:3/0/physics_layer_0/angular_velocity = 0.0
12:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:3/0/physics_layer_1/angular_velocity = 0.0
13:3/0 = 0
-13:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:3/0/physics_layer_0/angular_velocity = 0.0
13:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:3/0/physics_layer_1/angular_velocity = 0.0
14:3/0 = 0
-14:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:3/0/physics_layer_0/angular_velocity = 0.0
-14:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:3/0/physics_layer_1/angular_velocity = 0.0
15:3/0 = 0
-15:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:3/0/physics_layer_0/angular_velocity = 0.0
-15:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:3/0/physics_layer_1/angular_velocity = 0.0
16:3/0 = 0
-16:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:3/0/physics_layer_0/angular_velocity = 0.0
-16:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:3/0/physics_layer_1/angular_velocity = 0.0
8:4/0 = 0
-8:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:4/0/physics_layer_0/angular_velocity = 0.0
-8:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:4/0/physics_layer_1/angular_velocity = 0.0
9:4/0 = 0
-9:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:4/0/physics_layer_0/angular_velocity = 0.0
-9:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:4/0/physics_layer_1/angular_velocity = 0.0
10:4/0 = 0
-10:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:4/0/physics_layer_0/angular_velocity = 0.0
-10:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:4/0/physics_layer_1/angular_velocity = 0.0
11:4/0 = 0
-11:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:4/0/physics_layer_0/angular_velocity = 0.0
11:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-7, 2.5, -5, -2, -2.5, -5, 2, -7, 8, -8, 8, 8, -8, 8)
-11:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:4/0/physics_layer_1/angular_velocity = 0.0
12:4/0 = 0
-12:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:4/0/physics_layer_0/angular_velocity = 0.0
12:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:4/0/physics_layer_1/angular_velocity = 0.0
13:4/0 = 0
-13:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:4/0/physics_layer_0/angular_velocity = 0.0
13:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 0, -6, 4, -1.5, 6.5, 1.5, 8, 8, -8, 8)
-13:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:4/0/physics_layer_1/angular_velocity = 0.0
14:4/0 = 0
-14:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:4/0/physics_layer_0/angular_velocity = 0.0
-14:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:4/0/physics_layer_1/angular_velocity = 0.0
14:4/0/physics_layer_1/polygon_0/points = PackedVector2Array(-8, -8, -8, 8, 8, 8, 8, -8)
14:4/0/custom_data_0 = &"Inventory"
15:4/0 = 0
-15:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:4/0/physics_layer_0/angular_velocity = 0.0
-15:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:4/0/physics_layer_1/angular_velocity = 0.0
16:4/0 = 0
-16:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:4/0/physics_layer_0/angular_velocity = 0.0
-16:4/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:4/0/physics_layer_1/angular_velocity = 0.0
8:5/0 = 0
-8:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:5/0/physics_layer_0/angular_velocity = 0.0
-8:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:5/0/physics_layer_1/angular_velocity = 0.0
9:5/0 = 0
-9:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:5/0/physics_layer_0/angular_velocity = 0.0
-9:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:5/0/physics_layer_1/angular_velocity = 0.0
10:5/0 = 0
-10:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:5/0/physics_layer_0/angular_velocity = 0.0
-10:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:5/0/physics_layer_1/angular_velocity = 0.0
11:5/0 = 0
-11:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:5/0/physics_layer_0/angular_velocity = 0.0
11:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-11:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:5/0/physics_layer_1/angular_velocity = 0.0
12:5/0 = 0
-12:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:5/0/physics_layer_0/angular_velocity = 0.0
12:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:5/0/physics_layer_1/angular_velocity = 0.0
13:5/0 = 0
-13:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:5/0/physics_layer_0/angular_velocity = 0.0
13:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-13:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:5/0/physics_layer_1/angular_velocity = 0.0
14:5/0 = 0
-14:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:5/0/physics_layer_0/angular_velocity = 0.0
-14:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:5/0/physics_layer_1/angular_velocity = 0.0
15:5/0 = 0
-15:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:5/0/physics_layer_0/angular_velocity = 0.0
-15:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:5/0/physics_layer_1/angular_velocity = 0.0
16:5/0 = 0
-16:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:5/0/physics_layer_0/angular_velocity = 0.0
-16:5/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:5/0/physics_layer_1/angular_velocity = 0.0
8:6/0 = 0
-8:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-8:6/0/physics_layer_0/angular_velocity = 0.0
-8:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-8:6/0/physics_layer_1/angular_velocity = 0.0
9:6/0 = 0
-9:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-9:6/0/physics_layer_0/angular_velocity = 0.0
-9:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-9:6/0/physics_layer_1/angular_velocity = 0.0
10:6/0 = 0
-10:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-10:6/0/physics_layer_0/angular_velocity = 0.0
-10:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-10:6/0/physics_layer_1/angular_velocity = 0.0
11:6/0 = 0
-11:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-11:6/0/physics_layer_0/angular_velocity = 0.0
11:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, 1, 6.5, -3, 3, -6.5, -1.5)
-11:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-11:6/0/physics_layer_1/angular_velocity = 0.0
12:6/0 = 0
-12:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-12:6/0/physics_layer_0/angular_velocity = 0.0
12:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-12:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-12:6/0/physics_layer_1/angular_velocity = 0.0
13:6/0 = 0
-13:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-13:6/0/physics_layer_0/angular_velocity = 0.0
13:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 6, -0.5, 3, 3.5, -1.5, 6.5, -8, 8)
-13:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-13:6/0/physics_layer_1/angular_velocity = 0.0
14:6/0 = 0
-14:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-14:6/0/physics_layer_0/angular_velocity = 0.0
-14:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-14:6/0/physics_layer_1/angular_velocity = 0.0
15:6/0 = 0
-15:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-15:6/0/physics_layer_0/angular_velocity = 0.0
-15:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-15:6/0/physics_layer_1/angular_velocity = 0.0
16:6/0 = 0
-16:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-16:6/0/physics_layer_0/angular_velocity = 0.0
-16:6/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-16:6/0/physics_layer_1/angular_velocity = 0.0
5:3/0 = 0
-5:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
-5:3/0/physics_layer_0/angular_velocity = 0.0
-5:3/0/physics_layer_1/linear_velocity = Vector2(0, 0)
-5:3/0/physics_layer_1/angular_velocity = 0.0
[sub_resource type="TileSet" id="TileSet_kf7eg"]
physics_layer_0/collision_layer = 1
layer = -3
[node name="ColorRect" type="ColorRect" parent="Background"]
+auto_translate_mode = 2
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_bottom = 548.0
grow_horizontal = 2
grow_vertical = 2
-auto_translate = false
localize_numeral_system = false
color = Color(0.137255, 0.14902, 0.196078, 1)
[node name="Camera2D" type="Camera2D" parent="."]
position = Vector2(227, -28)
+process_callback = 0
position_smoothing_speed = 10.0
[node name="PhantomCameraHost" type="Node" parent="Camera2D"]
+process_priority = 300
+process_physics_priority = 300
script = ExtResource("4_bb7en")
[node name="Player" type="Node" parent="."]
[node name="PlayerPhantomCamera2D" type="Node2D" parent="Player" node_paths=PackedStringArray("follow_target")]
unique_name_in_owner = true
+top_level = true
position = Vector2(227, -28)
script = ExtResource("5_kikl5")
priority = 5
[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/2D/player_character_body_2d.gd" id="1_jnc14"]
[ext_resource type="FontFile" uid="uid://c4mm3of2mc8o5" path="res://addons/phantom_camera/fonts/Nunito-Black.ttf" id="2_62b2n"]
-[ext_resource type="Texture2D" uid="uid://ci76plsequlrq" path="res://addons/phantom_camera/examples/textures/2D/player_sprite.svg" id="2_yr8cm"]
+[ext_resource type="Texture2D" uid="uid://cscjjt55iw2cu" path="res://addons/phantom_camera/examples/textures/2D/player_sprite.svg" id="2_yr8cm"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_2d.gd" id="4_rloon"]
[ext_resource type="Resource" uid="uid://cecrnq0wnkexh" path="res://addons/phantom_camera/examples/resources/tween/item_focus_phantom_camera_2d_tween.tres" id="5_4iyk1"]
[ext_resource type="Resource" uid="uid://cllveybboaqk5" path="res://addons/phantom_camera/examples/resources/tween/inventory_phantom_camera_2d_tween.tres" id="6_2h6fv"]
--- /dev/null
+[gd_scene load_steps=41 format=3 uid="uid://cypbptekk8etg"]
+
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="1_u86qq"]
+[ext_resource type="PackedScene" uid="uid://bulsh7s0ibmao" path="res://addons/phantom_camera/examples/example_scenes/3D/sub_scenes/playable_character_3d.tscn" id="2_jl1he"]
+[ext_resource type="FontFile" uid="uid://c4mm3of2mc8o5" path="res://addons/phantom_camera/fonts/Nunito-Black.ttf" id="3_an0dt"]
+[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/3D/player_controller_4.4.gd" id="3_yfuq5"]
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_3d.gd" id="4_iy6qn"]
+[ext_resource type="Resource" uid="uid://cptfoggk2ok67" path="res://addons/phantom_camera/examples/resources/tween/player_phantom_camera_3d_tween.tres" id="5_0ku52"]
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/camera_3d_resource.gd" id="6_prr6u"]
+[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/3D/npc.gd" id="7_nl3ax"]
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="8_xvqcg"]
+[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/3D/3d_trigger_area.gd" id="9_hqgwi"]
+[ext_resource type="PackedScene" uid="uid://cixlwqycoox8h" path="res://addons/phantom_camera/examples/models/3d_cube_dark.tscn" id="10_cd0kn"]
+
+[sub_resource type="Resource" id="Resource_jtk1d"]
+script = ExtResource("6_prr6u")
+cull_mask = 1048575
+h_offset = 0.0
+v_offset = 0.0
+projection = 0
+fov = 75.0
+size = 1.0
+frustum_offset = Vector2(0, 0)
+near = 0.05
+far = 4000.0
+
+[sub_resource type="Resource" id="Resource_o161n"]
+script = ExtResource("6_prr6u")
+cull_mask = 1048575
+h_offset = 0.0
+v_offset = 0.0
+projection = 0
+fov = 75.0
+size = 1.0
+frustum_offset = Vector2(0, 0)
+near = 0.05
+far = 4000.0
+
+[sub_resource type="BoxMesh" id="BoxMesh_7tjw4"]
+size = Vector3(2, 0.5, 4)
+
+[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_hpllm"]
+transparency = 1
+albedo_color = Color(0.988235, 0.478431, 0.905882, 0.0901961)
+
+[sub_resource type="BoxShape3D" id="BoxShape3D_65o6h"]
+size = Vector3(2, 0.5, 4)
+
+[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_tpc7d"]
+
+[sub_resource type="CapsuleMesh" id="CapsuleMesh_g0eml"]
+
+[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_v5iy7"]
+albedo_color = Color(0.988235, 0.478431, 0.905882, 1)
+
+[sub_resource type="Resource" id="Resource_tpvee"]
+script = ExtResource("8_xvqcg")
+duration = 0.0
+transition = 0
+ease = 2
+
+[sub_resource type="Resource" id="Resource_bxbnv"]
+script = ExtResource("6_prr6u")
+cull_mask = 1048575
+h_offset = 0.0
+v_offset = 0.0
+projection = 0
+fov = 75.0
+size = 1.0
+frustum_offset = Vector2(0, 0)
+near = 0.05
+far = 4000.0
+
+[sub_resource type="BoxShape3D" id="BoxShape3D_wcrbb"]
+size = Vector3(6.8, 0.1, 5.4)
+
+[sub_resource type="Resource" id="Resource_7ih0k"]
+script = ExtResource("8_xvqcg")
+duration = 0.0
+transition = 0
+ease = 2
+
+[sub_resource type="Resource" id="Resource_4iyps"]
+script = ExtResource("6_prr6u")
+cull_mask = 1048575
+h_offset = 0.0
+v_offset = 0.0
+projection = 0
+fov = 75.0
+size = 1.0
+frustum_offset = Vector2(0, 0)
+near = 0.05
+far = 4000.0
+
+[sub_resource type="BoxShape3D" id="BoxShape3D_ctyr8"]
+size = Vector3(7.4, 0.1, 3.6)
+
+[sub_resource type="Resource" id="Resource_x5y0u"]
+script = ExtResource("8_xvqcg")
+duration = 0.0
+transition = 0
+ease = 2
+
+[sub_resource type="Resource" id="Resource_pgiyx"]
+script = ExtResource("6_prr6u")
+cull_mask = 1048575
+h_offset = 0.0
+v_offset = 0.0
+projection = 0
+fov = 75.0
+size = 1.0
+frustum_offset = Vector2(0, 0)
+near = 0.05
+far = 4000.0
+
+[sub_resource type="BoxShape3D" id="BoxShape3D_ua072"]
+size = Vector3(6.8, 0.1, 3.6)
+
+[sub_resource type="BoxMesh" id="BoxMesh_ugc3s"]
+size = Vector3(1, 1, 2)
+
+[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_68thd"]
+albedo_color = Color(0.34902, 0.862745, 0.854902, 1)
+
+[sub_resource type="BoxMesh" id="BoxMesh_wphly"]
+size = Vector3(1, 0.5, 1)
+
+[sub_resource type="BoxMesh" id="BoxMesh_gyp5s"]
+size = Vector3(20, 40, 30)
+
+[sub_resource type="BoxShape3D" id="BoxShape3D_lfaqs"]
+size = Vector3(20, 40, 30)
+
+[sub_resource type="BoxMesh" id="BoxMesh_n70lt"]
+size = Vector3(14, 40, 6)
+
+[sub_resource type="BoxShape3D" id="BoxShape3D_jxmqm"]
+size = Vector3(14, 40, 6)
+
+[sub_resource type="BoxMesh" id="BoxMesh_x0tgm"]
+size = Vector3(8, 40, 1)
+
+[sub_resource type="BoxShape3D" id="BoxShape3D_t67ef"]
+size = Vector3(50, 40, 1)
+
+[sub_resource type="BoxMesh" id="BoxMesh_rmslh"]
+size = Vector3(0.5, 6, 13.5)
+
+[sub_resource type="BoxMesh" id="BoxMesh_242ij"]
+size = Vector3(2, 3, 3)
+
+[sub_resource type="BoxMesh" id="BoxMesh_niuda"]
+size = Vector3(8, 6, 0.5)
+
+[node name="Root" type="Node3D"]
+
+[node name="MainCamera3D" type="Camera3D" parent="."]
+unique_name_in_owner = true
+transform = Transform3D(1, 0, 0, 0, 0.948876, 0.315649, 0, -0.315649, 0.948876, -2.53871, 2, 9.76232)
+
+[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
+process_priority = 300
+process_physics_priority = 300
+script = ExtResource("1_u86qq")
+
+[node name="PlayerGroup" type="Node" parent="."]
+
+[node name="PlayerCharacterBody3D" parent="PlayerGroup" instance=ExtResource("2_jl1he")]
+unique_name_in_owner = true
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.53871, 0.5, 7.26232)
+script = ExtResource("3_yfuq5")
+
+[node name="MovementInstructionsLabel" type="Label3D" parent="PlayerGroup"]
+transform = Transform3D(1, 0, 0, 0, 0.866025, 0.5, 0, -0.5, 0.866025, -2.47682, -0.0708016, 7.93048)
+modulate = Color(0.294118, 1, 0.631373, 1)
+text = "[WASD] to move"
+font = ExtResource("3_an0dt")
+font_size = 48
+
+[node name="PlayerPhantomCamera3D" type="Node3D" parent="PlayerGroup" node_paths=PackedStringArray("follow_target")]
+unique_name_in_owner = true
+transform = Transform3D(0.999858, 0, 0, 0, 0.94884, 0.315632, 0, -0.315637, 0.948825, -2.53871, 2, 9.76232)
+top_level = true
+script = ExtResource("4_iy6qn")
+priority = 10
+follow_mode = 2
+follow_target = NodePath("../PlayerCharacterBody3D")
+tween_resource = ExtResource("5_0ku52")
+tween_on_load = false
+camera_3d_resource = SubResource("Resource_jtk1d")
+follow_offset = Vector3(0, 1.5, 2.5)
+follow_damping = true
+
+[node name="NPCGroup" type="Node" parent="."]
+
+[node name="NPCPhantomCamera3D" type="Node3D" parent="NPCGroup"]
+unique_name_in_owner = true
+transform = Transform3D(0.616596, -0.109786, 0.779587, -2.23517e-08, 0.990229, 0.13945, -0.78728, -0.0859841, 0.610571, -2.98802, 1.50739, 1.19719)
+script = ExtResource("4_iy6qn")
+tween_resource = ExtResource("5_0ku52")
+camera_3d_resource = SubResource("Resource_o161n")
+
+[node name="NPCDescriptionLabel" type="Label3D" parent="NPCGroup"]
+transform = Transform3D(1, 0, 0, 0, 0.866026, 0.5, 0, -0.5, 0.866025, -3.04693, 0.367287, 0.953757)
+text = "Input Example"
+font = ExtResource("3_an0dt")
+
+[node name="NPCDialogueExampleLabel" type="Label3D" parent="NPCGroup"]
+unique_name_in_owner = true
+transform = Transform3D(1, 4.54671e-10, 1.65487e-10, 4.25644e-10, 0.939693, 0.34202, 0, -0.34202, 0.939693, -4.46738, 1.58641, -0.253679)
+modulate = Color(1, 0.603922, 0.254902, 1)
+text = "Press [ F ] to change camera"
+font = ExtResource("3_an0dt")
+
+[node name="NPCInteractionZoneMesh" type="MeshInstance3D" parent="NPCGroup"]
+transform = Transform3D(0.819152, 4.83851e-10, -0.573576, -3.92481e-09, 1, -6.3473e-09, 0.573576, 7.45058e-09, 0.819152, -3.46138, -0.4, 0.875321)
+mesh = SubResource("BoxMesh_7tjw4")
+skeleton = NodePath("../..")
+surface_material_override/0 = SubResource("StandardMaterial3D_hpllm")
+metadata/_edit_group_ = true
+
+[node name="NPCInteractionArea3D" type="Area3D" parent="NPCGroup/NPCInteractionZoneMesh"]
+unique_name_in_owner = true
+transform = Transform3D(1, -2.68591e-26, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)
+monitorable = false
+
+[node name="NPCInterationCollisionShape3D" type="CollisionShape3D" parent="NPCGroup/NPCInteractionZoneMesh/NPCInteractionArea3D"]
+shape = SubResource("BoxShape3D_65o6h")
+
+[node name="NPC" type="StaticBody3D" parent="NPCGroup"]
+transform = Transform3D(1, 4.83851e-10, 0, 4.25644e-10, 1, -7.45058e-09, 0, 7.45058e-09, 1, -4.56338, 0.5, -0.272679)
+script = ExtResource("7_nl3ax")
+
+[node name="PlayerCollisionShape3D2" type="CollisionShape3D" parent="NPCGroup/NPC"]
+transform = Transform3D(1, -2.68591e-26, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)
+shape = SubResource("CapsuleShape3D_tpc7d")
+
+[node name="NPCMesh" type="MeshInstance3D" parent="NPCGroup/NPC"]
+transform = Transform3D(1, -2.68591e-26, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)
+mesh = SubResource("CapsuleMesh_g0eml")
+skeleton = NodePath("../../..")
+surface_material_override/0 = SubResource("StandardMaterial3D_v5iy7")
+
+[node name="MoveToLocation" type="Node3D" parent="NPCGroup"]
+unique_name_in_owner = true
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.70084, 0.5, 0.962891)
+
+[node name="FixedCameraTriggerZone" type="Node" parent="."]
+
+[node name="FixedCameraLabel" type="Label3D" parent="FixedCameraTriggerZone"]
+unique_name_in_owner = true
+transform = Transform3D(0.939693, 0.280167, -0.196175, 1.49012e-08, 0.573577, 0.819152, 0.34202, -0.769751, 0.538986, -0.538716, -0.247626, 3.13456)
+text = "Fixed Camera
+Example"
+font = ExtResource("3_an0dt")
+
+[node name="NorthRoomPhantomCamera3D" type="Node3D" parent="FixedCameraTriggerZone"]
+transform = Transform3D(0.38357, -0.555836, 0.737507, -0.105898, 0.766851, 0.633027, -0.917417, -0.320912, 0.235279, 6.89638, 4.73986, 0.115512)
+script = ExtResource("4_iy6qn")
+tween_resource = SubResource("Resource_tpvee")
+camera_3d_resource = SubResource("Resource_bxbnv")
+
+[node name="NorthRoomTrigger" type="Area3D" parent="FixedCameraTriggerZone" node_paths=PackedStringArray("area_pcam")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, -0.45, -0.9)
+priority = 5
+script = ExtResource("9_hqgwi")
+area_pcam = NodePath("../NorthRoomPhantomCamera3D")
+metadata/_edit_group_ = true
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="FixedCameraTriggerZone/NorthRoomTrigger"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.6, 0, -0.4)
+shape = SubResource("BoxShape3D_wcrbb")
+
+[node name="EntryRoomPhantomCamera3D" type="Node3D" parent="FixedCameraTriggerZone"]
+transform = Transform3D(0.258818, -0.482963, 0.836515, 1.3027e-15, 0.866025, 0.499999, -0.965924, -0.129409, 0.224143, 6.69741, 4.73364, 4.02374)
+script = ExtResource("4_iy6qn")
+tween_resource = SubResource("Resource_7ih0k")
+camera_3d_resource = SubResource("Resource_4iyps")
+
+[node name="EntryRoomTrigger" type="Area3D" parent="FixedCameraTriggerZone" node_paths=PackedStringArray("area_pcam")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.00003, -0.454982, 3.00572)
+priority = 5
+script = ExtResource("9_hqgwi")
+area_pcam = NodePath("../EntryRoomPhantomCamera3D")
+metadata/_edit_group_ = true
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="FixedCameraTriggerZone/EntryRoomTrigger"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.3, 0, 0.2)
+shape = SubResource("BoxShape3D_ctyr8")
+
+[node name="SouthRoomPhantomCamera3D" type="Node3D" parent="FixedCameraTriggerZone"]
+transform = Transform3D(-0.766043, -0.492403, 0.413175, 0, 0.642787, 0.766043, -0.642786, 0.586825, -0.492403, 6.89741, 4.73364, 5.62374)
+script = ExtResource("4_iy6qn")
+tween_resource = SubResource("Resource_x5y0u")
+camera_3d_resource = SubResource("Resource_pgiyx")
+
+[node name="SouthRoomTrigger" type="Area3D" parent="FixedCameraTriggerZone" node_paths=PackedStringArray("area_pcam")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, -0.45, 6.7)
+priority = 5
+script = ExtResource("9_hqgwi")
+area_pcam = NodePath("../SouthRoomPhantomCamera3D")
+metadata/_edit_group_ = true
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="FixedCameraTriggerZone/SouthRoomTrigger"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.6, 0, 0.1)
+shape = SubResource("BoxShape3D_ua072")
+
+[node name="CSGMesh3D" type="CSGMesh3D" parent="FixedCameraTriggerZone"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.14238, 1.82571, 2.88655)
+mesh = SubResource("BoxMesh_ugc3s")
+material = SubResource("StandardMaterial3D_68thd")
+
+[node name="CSGMesh3D2" type="CSGMesh3D" parent="FixedCameraTriggerZone/CSGMesh3D"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.00192642, -0.0120339, 0.00494432)
+operation = 2
+mesh = SubResource("BoxMesh_wphly")
+material = SubResource("StandardMaterial3D_68thd")
+
+[node name="Environment" type="Node" parent="."]
+
+[node name="DirectionalLight3D" type="DirectionalLight3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0, 8, 0)
+metadata/_edit_lock_ = true
+
+[node name="Environment" type="Node3D" parent="Environment"]
+
+[node name="Floor" parent="Environment/Environment" instance=ExtResource("10_cd0kn")]
+transform = Transform3D(1000, 0, 0, 0, 1, 0, 0, 0, 1000, 0, -1, 0)
+metadata/_edit_lock_ = true
+
+[node name="West Wall" type="StaticBody3D" parent="Environment/Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 0.5, 0)
+metadata/_edit_group_ = true
+metadata/_edit_lock_ = true
+
+[node name="MeshInstance3D2" type="MeshInstance3D" parent="Environment/Environment/West Wall"]
+mesh = SubResource("BoxMesh_gyp5s")
+skeleton = NodePath("")
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Environment/Environment/West Wall"]
+shape = SubResource("BoxShape3D_lfaqs")
+
+[node name="East Wall" type="StaticBody3D" parent="Environment/Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16.999, 0.502, 0)
+metadata/_edit_group_ = true
+metadata/_edit_lock_ = true
+
+[node name="MeshInstance3D2" type="MeshInstance3D" parent="Environment/Environment/East Wall"]
+mesh = SubResource("BoxMesh_gyp5s")
+skeleton = NodePath("")
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Environment/Environment/East Wall"]
+shape = SubResource("BoxShape3D_lfaqs")
+
+[node name="North Wall" type="StaticBody3D" parent="Environment/Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, -6.90828)
+metadata/_edit_group_ = true
+metadata/_edit_lock_ = true
+
+[node name="MeshInstance3D2" type="MeshInstance3D" parent="Environment/Environment/North Wall"]
+mesh = SubResource("BoxMesh_n70lt")
+skeleton = NodePath("")
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Environment/Environment/North Wall"]
+shape = SubResource("BoxShape3D_jxmqm")
+
+[node name="South Wall" type="StaticBody3D" parent="Environment/Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.25, 0.5, 9.087)
+metadata/_edit_group_ = true
+
+[node name="MeshInstance3D3" type="MeshInstance3D" parent="Environment/Environment/South Wall"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 0, 0)
+mesh = SubResource("BoxMesh_x0tgm")
+skeleton = NodePath("")
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Environment/Environment/South Wall"]
+shape = SubResource("BoxShape3D_t67ef")
+
+[node name="FixedCamOuterWall" type="CSGMesh3D" parent="Environment/Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.5, 2)
+use_collision = true
+mesh = SubResource("BoxMesh_rmslh")
+
+[node name="FixedCamOuterDoorway" type="CSGMesh3D" parent="Environment/Environment/FixedCamOuterWall"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1.5, 1)
+operation = 2
+mesh = SubResource("BoxMesh_242ij")
+
+[node name="FixedCamNorthWall" type="CSGMesh3D" parent="Environment/Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 2.5, 1)
+use_collision = true
+mesh = SubResource("BoxMesh_niuda")
+
+[node name="FixedCamNorthDoorway" type="CSGMesh3D" parent="Environment/Environment/FixedCamNorthWall"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1.5, 0)
+operation = 2
+mesh = SubResource("BoxMesh_242ij")
+
+[node name="FixedCamSouthWall" type="CSGMesh3D" parent="Environment/Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 2.5, 5.1)
+use_collision = true
+mesh = SubResource("BoxMesh_niuda")
+
+[node name="FixedCamSouthDoorway" type="CSGMesh3D" parent="Environment/Environment/FixedCamSouthWall"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1.50541, 1.19209e-07)
+operation = 2
+mesh = SubResource("BoxMesh_242ij")
--- /dev/null
+[gd_scene load_steps=11 format=3 uid="uid://cx7x48cpi8gcd"]
+
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="1_6uslv"]
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_3d.gd" id="2_5cpe8"]
+[ext_resource type="Resource" uid="uid://cptfoggk2ok67" path="res://addons/phantom_camera/examples/resources/tween/player_phantom_camera_3d_tween.tres" id="3_422w7"]
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/camera_3d_resource.gd" id="4_4qurp"]
+[ext_resource type="PackedScene" uid="uid://bulsh7s0ibmao" path="res://addons/phantom_camera/examples/example_scenes/3D/sub_scenes/playable_character_3d.tscn" id="5_uw36d"]
+[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/3D/player_controller_4.4.gd" id="6_fcomr"]
+[ext_resource type="PackedScene" uid="uid://cixlwqycoox8h" path="res://addons/phantom_camera/examples/models/3d_cube_dark.tscn" id="6_i060b"]
+[ext_resource type="Texture2D" uid="uid://c7ja4woxol8yc" path="res://addons/phantom_camera/examples/textures/3D/checker_pattern_dark.png" id="7_iyghi"]
+
+[sub_resource type="Resource" id="Resource_wg1pr"]
+script = ExtResource("4_4qurp")
+cull_mask = 1048575
+h_offset = 0.0
+v_offset = 0.0
+projection = 0
+fov = 75.0
+size = 1.0
+frustum_offset = Vector2(0, 0)
+near = 0.05
+far = 4000.0
+
+[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_auy8m"]
+albedo_texture = ExtResource("7_iyghi")
+uv1_triplanar = true
+uv1_world_triplanar = true
+
+[node name="Root" type="Node3D"]
+
+[node name="MainCamera3D" type="Camera3D" parent="."]
+unique_name_in_owner = true
+transform = Transform3D(1, 0, 0, 0, 0.793353, 0.608762, 0, -0.608762, 0.793353, 0.083587, 2.94168, 5.22787)
+
+[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
+process_priority = 300
+process_physics_priority = 300
+script = ExtResource("1_6uslv")
+
+[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
+transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0, 8, 0)
+metadata/_edit_lock_ = true
+
+[node name="Player" type="Node" parent="."]
+
+[node name="PlayerPhantomCamera3D" type="Node3D" parent="Player" node_paths=PackedStringArray("follow_target")]
+unique_name_in_owner = true
+transform = Transform3D(0.99995, 0, 0, 0, 0.79324, 0.608671, 0, -0.608675, 0.793235, 0.083587, 2.94168, 5.22787)
+top_level = true
+script = ExtResource("2_5cpe8")
+follow_mode = 5
+follow_target = NodePath("../PlayerCharacterBody3D2")
+tween_resource = ExtResource("3_422w7")
+tween_on_load = false
+camera_3d_resource = SubResource("Resource_wg1pr")
+follow_damping = true
+follow_distance = 4.0
+dead_zone_width = 0.139
+dead_zone_height = 0.14
+show_viewfinder_in_play = true
+spring_length = 4.0
+
+[node name="PlayerCharacterBody3D2" parent="Player" instance=ExtResource("5_uw36d")]
+script = ExtResource("6_fcomr")
+
+[node name="Environment" type="Node" parent="."]
+
+[node name="Floor" parent="Environment" instance=ExtResource("6_i060b")]
+transform = Transform3D(1000, 0, 0, 0, 1, 0, 0, 0, 1000, 0, -1, 0)
+metadata/_edit_lock_ = true
+
+[node name="CSGCylinder3D" type="CSGCylinder3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.636134, 0.805455, -6.37532)
+use_collision = true
+radius = 1.71971
+height = 2.61091
+sides = 32
+
+[node name="CSGCylinder3D5" type="CSGCylinder3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7.54597, -0.540694, -3.39517)
+use_collision = true
+radius = 1.53269
+height = 2.5036
+sides = 32
+
+[node name="CSGCylinder3D6" type="CSGCylinder3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.64877, -1.50101, 1.22863)
+use_collision = true
+radius = 1.57419
+height = 3.47475
+sides = 32
+
+[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10.4732, 0.805455, -8.78984)
+use_collision = true
+radius = 0.956285
+height = 2.61091
+sides = 32
+
+[node name="CSGSphere3D" type="CSGSphere3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.40027, -1.69814, 3.36997)
+use_collision = true
+radius = 3.34732
+rings = 32
+
+[node name="CSGSphere3D2" type="CSGSphere3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.13768, -0.599204, -1.04651)
+use_collision = true
+radius = 2.65844
+rings = 32
+
+[node name="CSGSphere3D3" type="CSGSphere3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -11.7976, -0.599204, -2.42244)
+use_collision = true
+radius = 2.14606
+rings = 32
+
+[node name="CSGTorus3D2" type="CSGTorus3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.84078, -0.497663, 4.44352)
+use_collision = true
+inner_radius = 0.971543
+outer_radius = 2.15226
+sides = 32
+ring_sides = 18
+
+[node name="CSGBox3D" type="CSGBox3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.52545, 6.53866, -12.6331)
+use_collision = true
+size = Vector3(178.429, 14.0773, 1)
+material = SubResource("StandardMaterial3D_auy8m")
+
+[node name="CSGBox3D2" type="CSGBox3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.88916, 0.760708, -6.1376)
+use_collision = true
+size = Vector3(2.64182, 2.52142, 2.30997)
+
+[node name="CSGBox3D5" type="CSGBox3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.83837, -0.241718, 7.14677)
+use_collision = true
+size = Vector3(3.80964, 1.67049, 0.932048)
+
+[node name="CSGBox3D3" type="CSGBox3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.34377, 0.138478, -4.36159)
+use_collision = true
+size = Vector3(1.53893, 1.27695, 1.80814)
+
+[node name="CSGBox3D6" type="CSGBox3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10.9834, 0.138478, -1.89037)
+use_collision = true
+size = Vector3(4.03502, 1.27695, 5.2198)
+
+[node name="CSGBox3D4" type="CSGBox3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.38147, 0.0440434, 8.36617)
+use_collision = true
+size = Vector3(4.57784, 1.08809, 3.11285)
--- /dev/null
+[gd_scene load_steps=15 format=3 uid="uid://d2lx45noxq685"]
+
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="1_7a3wq"]
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_3d.gd" id="2_158c0"]
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="3_ganw1"]
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/camera_3d_resource.gd" id="4_kig2n"]
+[ext_resource type="PackedScene" uid="uid://bulsh7s0ibmao" path="res://addons/phantom_camera/examples/example_scenes/3D/sub_scenes/playable_character_3d.tscn" id="5_caky3"]
+[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/3D/player_controller_4.4.gd" id="6_b6ic4"]
+[ext_resource type="PackedScene" uid="uid://cixlwqycoox8h" path="res://addons/phantom_camera/examples/models/3d_cube_dark.tscn" id="6_kkbaa"]
+[ext_resource type="Texture2D" uid="uid://c7ja4woxol8yc" path="res://addons/phantom_camera/examples/textures/3D/checker_pattern_dark.png" id="7_i1dbs"]
+
+[sub_resource type="Resource" id="Resource_ucp3e"]
+script = ExtResource("3_ganw1")
+duration = 1.0
+transition = 0
+ease = 2
+
+[sub_resource type="Resource" id="Resource_ab013"]
+script = ExtResource("4_kig2n")
+cull_mask = 1048575
+h_offset = 0.0
+v_offset = 0.0
+projection = 0
+fov = 75.0
+size = 1.0
+frustum_offset = Vector2(0, 0)
+near = 0.05
+far = 4000.0
+
+[sub_resource type="CapsuleMesh" id="CapsuleMesh_2h36r"]
+
+[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_w3olp"]
+albedo_color = Color(0.227451, 0.337255, 0.576471, 1)
+
+[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_cw102"]
+albedo_color = Color(0.227451, 0.337255, 0.576471, 1)
+
+[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_auy8m"]
+albedo_texture = ExtResource("7_i1dbs")
+uv1_triplanar = true
+uv1_world_triplanar = true
+
+[node name="Node3D" type="Node3D"]
+
+[node name="MainCamera3D" type="Camera3D" parent="."]
+unique_name_in_owner = true
+transform = Transform3D(1, 0, 0, 0, 0.638767, 0.7694, 0, -0.7694, 0.638768, 0, 6.39, 7)
+
+[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
+process_priority = 300
+process_physics_priority = 300
+script = ExtResource("1_7a3wq")
+
+[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
+transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0, 8, 0)
+metadata/_edit_lock_ = true
+
+[node name="Player" type="Node" parent="."]
+
+[node name="PlayerPhantomCamera3D" type="Node3D" parent="Player" node_paths=PackedStringArray("follow_target")]
+unique_name_in_owner = true
+transform = Transform3D(0.999954, 0, 0, 0, 0.638683, 0.769345, 0, -0.769298, 0.638723, 0, 6.39, 7)
+top_level = true
+script = ExtResource("2_158c0")
+priority = 5
+follow_mode = 1
+follow_target = NodePath("../PlayerCharacterBody3D")
+tween_resource = SubResource("Resource_ucp3e")
+tween_on_load = false
+camera_3d_resource = SubResource("Resource_ab013")
+follow_damping = true
+follow_damping_value = Vector3(0.3, 0.3, 0.3)
+
+[node name="PlayerCharacterBody3D" parent="Player" instance=ExtResource("5_caky3")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 6.39, 7)
+script = ExtResource("6_b6ic4")
+enable_gravity = false
+
+[node name="PlayerVisual" parent="Player/PlayerCharacterBody3D" index="2"]
+visible = false
+
+[node name="NPCs" type="Node" parent="."]
+
+[node name="PlayerMeshInstance3D" type="MeshInstance3D" parent="NPCs"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.04486, 0.519002, -1.52506)
+mesh = SubResource("CapsuleMesh_2h36r")
+skeleton = NodePath("")
+surface_material_override/0 = SubResource("StandardMaterial3D_w3olp")
+
+[node name="PlayerMeshInstance3D2" type="MeshInstance3D" parent="NPCs"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.51494, 0.519, 4.06618)
+mesh = SubResource("CapsuleMesh_2h36r")
+skeleton = NodePath("")
+surface_material_override/0 = SubResource("StandardMaterial3D_cw102")
+
+[node name="Environment" type="Node" parent="."]
+
+[node name="Floor" parent="Environment" instance=ExtResource("6_kkbaa")]
+transform = Transform3D(1000, 0, 0, 0, 1, 0, 0, 0, 1000, 0, -1, 0)
+metadata/_edit_lock_ = true
+
+[node name="CSGCylinder3D" type="CSGCylinder3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.62737, 0.805455, -6.37532)
+use_collision = true
+radius = 1.71971
+height = 2.61091
+sides = 32
+
+[node name="CSGCylinder3D5" type="CSGCylinder3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24.9378, 0.31181, -5.46661)
+use_collision = true
+radius = 2.77591
+height = 1.62362
+sides = 32
+
+[node name="CSGCylinder3D6" type="CSGCylinder3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.58617, 0.31181, 6.6322)
+use_collision = true
+radius = 1.57419
+height = 3.47475
+sides = 32
+
+[node name="CSGCylinder3D3" type="CSGCylinder3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14.774, 0.201103, 2.71259)
+use_collision = true
+radius = 1.41311
+height = 1.40221
+sides = 32
+
+[node name="CSGCylinder3D4" type="CSGCylinder3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.40488, 0.201101, 11.6804)
+use_collision = true
+radius = 2.21673
+height = 7.88261
+sides = 32
+
+[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.20971, 0.805455, -8.78984)
+use_collision = true
+radius = 0.956285
+height = 2.61091
+sides = 32
+
+[node name="CSGSphere3D" type="CSGSphere3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14.9771, -1.69814, -6.51262)
+use_collision = true
+radius = 3.34732
+rings = 32
+
+[node name="CSGSphere3D2" type="CSGSphere3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.555532, -0.599204, 8.81048)
+use_collision = true
+radius = 2.65844
+rings = 32
+
+[node name="CSGSphere3D3" type="CSGSphere3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14.0611, -0.599204, -2.42244)
+use_collision = true
+radius = 2.14606
+rings = 32
+
+[node name="CSGTorus3D" type="CSGTorus3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.21187, -1.90735e-06, 0.346393)
+use_collision = true
+inner_radius = 1.3
+outer_radius = 2.0
+sides = 32
+ring_sides = 18
+
+[node name="CSGTorus3D2" type="CSGTorus3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21.9283, -1.90735e-06, 7.89765)
+use_collision = true
+inner_radius = 0.971543
+outer_radius = 2.15226
+sides = 32
+ring_sides = 18
+
+[node name="CSGBox3D" type="CSGBox3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9.49828, 6.53866, -12.6331)
+use_collision = true
+size = Vector3(178.429, 14.0773, 1)
+material = SubResource("StandardMaterial3D_auy8m")
+
+[node name="CSGBox3D2" type="CSGBox3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.15267, 0.760708, -6.1376)
+use_collision = true
+size = Vector3(2.64182, 2.52142, 2.30997)
+
+[node name="CSGBox3D5" type="CSGBox3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14.3427, 0.335247, 8.22829)
+use_collision = true
+size = Vector3(3.80964, 1.67049, 0.932048)
+
+[node name="CSGBox3D3" type="CSGBox3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.08027, 0.138478, -4.36159)
+use_collision = true
+size = Vector3(1.53893, 1.27695, 1.80814)
+
+[node name="CSGBox3D6" type="CSGBox3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14.7748, 0.138478, 5.20734)
+use_collision = true
+size = Vector3(4.03502, 1.27695, 5.2198)
+
+[node name="CSGBox3D4" type="CSGBox3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30.1473, 1.78638, -1.60318)
+use_collision = true
+size = Vector3(4.57784, 4.57276, 3.11285)
+
+[editable path="Player/PlayerCharacterBody3D"]
--- /dev/null
+[gd_scene load_steps=14 format=3 uid="uid://cqy81q5p0tsda"]
+
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="1_3iw7y"]
+[ext_resource type="PackedScene" uid="uid://bulsh7s0ibmao" path="res://addons/phantom_camera/examples/example_scenes/3D/sub_scenes/playable_character_3d.tscn" id="2_vcfky"]
+[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/3D/player_controller_4.4.gd" id="3_2idlr"]
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_3d.gd" id="3_65wck"]
+[ext_resource type="Resource" uid="uid://cptfoggk2ok67" path="res://addons/phantom_camera/examples/resources/tween/player_phantom_camera_3d_tween.tres" id="4_b0eay"]
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/camera_3d_resource.gd" id="5_i3ale"]
+[ext_resource type="PackedScene" uid="uid://cixlwqycoox8h" path="res://addons/phantom_camera/examples/models/3d_cube_dark.tscn" id="6_5hq8j"]
+[ext_resource type="Texture2D" uid="uid://c7ja4woxol8yc" path="res://addons/phantom_camera/examples/textures/3D/checker_pattern_dark.png" id="7_7lab4"]
+
+[sub_resource type="Resource" id="Resource_1iman"]
+script = ExtResource("5_i3ale")
+cull_mask = 1048575
+h_offset = 0.0
+v_offset = 0.0
+projection = 0
+fov = 75.0
+size = 1.0
+frustum_offset = Vector2(0, 0)
+near = 0.05
+far = 4000.0
+
+[sub_resource type="CapsuleMesh" id="CapsuleMesh_2h36r"]
+
+[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_w3olp"]
+albedo_color = Color(0.227451, 0.337255, 0.576471, 1)
+
+[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_cw102"]
+albedo_color = Color(0.227451, 0.337255, 0.576471, 1)
+
+[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_auy8m"]
+albedo_texture = ExtResource("7_7lab4")
+uv1_triplanar = true
+uv1_world_triplanar = true
+
+[node name="Node3D" type="Node3D"]
+
+[node name="MainCamera3D" type="Camera3D" parent="."]
+unique_name_in_owner = true
+transform = Transform3D(1, 0, 0, 0, 0.906308, 0.422618, 0, -0.422618, 0.906308, -7.26116, 5.72974, 12.279)
+
+[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
+process_priority = 300
+process_physics_priority = 300
+script = ExtResource("1_3iw7y")
+
+[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
+transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0, 8, 0)
+metadata/_edit_lock_ = true
+
+[node name="Player" type="Node" parent="."]
+
+[node name="PlayerCharacterBody3D2" parent="Player" instance=ExtResource("2_vcfky")]
+script = ExtResource("3_2idlr")
+
+[node name="PlayerPhantomCamera3D" type="Node3D" parent="Player" node_paths=PackedStringArray("follow_targets")]
+unique_name_in_owner = true
+transform = Transform3D(0.999954, 0, 0, 0, 0.906188, 0.422588, 0, -0.422562, 0.906243, -7.26116, 5.72974, 12.279)
+top_level = true
+script = ExtResource("3_65wck")
+priority = 5
+follow_mode = 3
+follow_targets = [NodePath("../PlayerCharacterBody3D2"), NodePath("../../NPCs/PlayerMeshInstance3D"), NodePath("../../NPCs/PlayerMeshInstance3D2")]
+tween_resource = ExtResource("4_b0eay")
+tween_on_load = false
+camera_3d_resource = SubResource("Resource_1iman")
+follow_damping = true
+follow_distance = 5.0
+auto_follow_distance = true
+auto_follow_distance_min = 5.0
+auto_follow_distance_max = 15.0
+auto_follow_distance_divisor = 20.0
+spring_length = 5.0
+
+[node name="NPCs" type="Node" parent="."]
+
+[node name="PlayerMeshInstance3D" type="MeshInstance3D" parent="NPCs"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14.6059, 0.519002, 0.128472)
+mesh = SubResource("CapsuleMesh_2h36r")
+skeleton = NodePath("")
+surface_material_override/0 = SubResource("StandardMaterial3D_w3olp")
+
+[node name="PlayerMeshInstance3D2" type="MeshInstance3D" parent="NPCs"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10.0461, 0.519, 0.249913)
+mesh = SubResource("CapsuleMesh_2h36r")
+skeleton = NodePath("")
+surface_material_override/0 = SubResource("StandardMaterial3D_cw102")
+
+[node name="Environment" type="Node" parent="."]
+
+[node name="Floor" parent="Environment" instance=ExtResource("6_5hq8j")]
+transform = Transform3D(1000, 0, 0, 0, 1, 0, 0, 0, 1000, 0, -1, 0)
+metadata/_edit_lock_ = true
+
+[node name="Wall" type="CSGBox3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.52545, 6.53866, -12.6331)
+use_collision = true
+size = Vector3(178.429, 14.0773, 1)
+material = SubResource("StandardMaterial3D_auy8m")
+
+[node name="CSGCylinder3D" type="CSGCylinder3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -13.6511, 0.805455, -6.37532)
+use_collision = true
+radius = 1.71971
+height = 2.61091
+sides = 32
+
+[node name="CSGCylinder3D5" type="CSGCylinder3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12.9141, 0.31181, -5.46661)
+use_collision = true
+radius = 2.77591
+height = 1.62362
+sides = 32
+
+[node name="CSGCylinder3D6" type="CSGCylinder3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -21.6099, 0.31181, 6.6322)
+use_collision = true
+radius = 1.57419
+height = 3.47475
+sides = 32
+
+[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.81402, 0.805455, -8.78984)
+use_collision = true
+radius = 0.956285
+height = 2.61091
+sides = 32
+
+[node name="CSGSphere3D" type="CSGSphere3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.95333, -1.69814, -6.51262)
+use_collision = true
+radius = 3.34732
+rings = 32
+
+[node name="CSGSphere3D2" type="CSGSphere3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -11.4682, -0.599204, 8.81048)
+use_collision = true
+radius = 2.65844
+rings = 32
+
+[node name="CSGSphere3D3" type="CSGSphere3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26.0848, -0.599204, -2.42244)
+use_collision = true
+radius = 2.14606
+rings = 32
+
+[node name="CSGTorus3D2" type="CSGTorus3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9.90455, -1.90735e-06, 7.89765)
+use_collision = true
+inner_radius = 0.971543
+outer_radius = 2.15226
+sides = 32
+ring_sides = 18
+
+[node name="CSGBox3D2" type="CSGBox3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -21.1764, 0.760708, -6.1376)
+use_collision = true
+size = Vector3(2.64182, 2.52142, 2.30997)
+
+[node name="CSGBox3D5" type="CSGBox3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.31901, 0.335247, 8.22829)
+use_collision = true
+size = Vector3(3.80964, 1.67049, 0.932048)
+
+[node name="CSGBox3D3" type="CSGBox3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.94346, 0.138478, -4.36159)
+use_collision = true
+size = Vector3(1.53893, 1.27695, 1.80814)
+
+[node name="CSGBox3D6" type="CSGBox3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26.7985, 0.138478, 5.20734)
+use_collision = true
+size = Vector3(4.03502, 1.27695, 5.2198)
+
+[node name="CSGBox3D4" type="CSGBox3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18.1236, 1.78638, -1.60318)
+use_collision = true
+size = Vector3(4.57784, 4.57276, 3.11285)
--- /dev/null
+[gd_scene load_steps=25 format=3 uid="uid://oo1y1sjdmr6k"]
+
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="1_p8ccw"]
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_3d.gd" id="2_8itog"]
+[ext_resource type="Resource" uid="uid://cptfoggk2ok67" path="res://addons/phantom_camera/examples/resources/tween/player_phantom_camera_3d_tween.tres" id="3_xqpq0"]
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/camera_3d_resource.gd" id="4_akuuo"]
+[ext_resource type="PackedScene" uid="uid://bulsh7s0ibmao" path="res://addons/phantom_camera/examples/example_scenes/3D/sub_scenes/playable_character_3d.tscn" id="5_0nadx"]
+[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/3D/player_controller_4.4.gd" id="6_7h7mx"]
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="6_mkxip"]
+[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/3D/path_follow.gd" id="7_g1m51"]
+[ext_resource type="PackedScene" uid="uid://cixlwqycoox8h" path="res://addons/phantom_camera/examples/models/3d_cube_dark.tscn" id="8_a1h2k"]
+[ext_resource type="FontFile" uid="uid://c4mm3of2mc8o5" path="res://addons/phantom_camera/fonts/Nunito-Black.ttf" id="9_rk5lh"]
+
+[sub_resource type="Resource" id="Resource_ofv2c"]
+script = ExtResource("4_akuuo")
+cull_mask = 1048575
+h_offset = 0.0
+v_offset = 0.0
+projection = 0
+fov = 75.0
+size = 1.0
+frustum_offset = Vector2(0, 0)
+near = 0.05
+far = 4000.0
+
+[sub_resource type="Resource" id="Resource_01tho"]
+script = ExtResource("6_mkxip")
+duration = 1.2
+transition = 3
+ease = 2
+
+[sub_resource type="Resource" id="Resource_syh5m"]
+script = ExtResource("4_akuuo")
+cull_mask = 1048575
+h_offset = 0.0
+v_offset = 0.0
+projection = 0
+fov = 75.0
+size = 1.0
+frustum_offset = Vector2(0, 0)
+near = 0.05
+far = 4000.0
+
+[sub_resource type="Curve3D" id="Curve3D_b33df"]
+_data = {
+"points": PackedVector3Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10),
+"tilts": PackedFloat32Array(0, 0)
+}
+point_count = 2
+
+[sub_resource type="BoxShape3D" id="BoxShape3D_aovgi"]
+size = Vector3(6, 0.1, 10)
+
+[sub_resource type="BoxMesh" id="BoxMesh_0hdeh"]
+size = Vector3(6, 0.1, 10)
+
+[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_fsm1b"]
+transparency = 1
+albedo_color = Color(0.988235, 0.478431, 0.905882, 0.0901961)
+
+[sub_resource type="Resource" id="Resource_xci4c"]
+script = ExtResource("4_akuuo")
+cull_mask = 1048575
+h_offset = 0.0
+v_offset = 0.0
+projection = 0
+fov = 75.0
+size = 1.0
+frustum_offset = Vector2(0, 0)
+near = 0.05
+far = 4000.0
+
+[sub_resource type="Curve3D" id="Curve3D_8uw2x"]
+_data = {
+"points": PackedVector3Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0),
+"tilts": PackedFloat32Array(0, 0)
+}
+point_count = 2
+
+[sub_resource type="BoxShape3D" id="BoxShape3D_ctnqu"]
+size = Vector3(12, 0.1, 4)
+
+[sub_resource type="BoxMesh" id="BoxMesh_f6dp8"]
+size = Vector3(12, 0.1, 4)
+
+[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_gwnkj"]
+transparency = 1
+albedo_color = Color(0.568403, 0.988235, 0.762724, 0.0901961)
+
+[sub_resource type="BoxMesh" id="BoxMesh_7l3dh"]
+
+[sub_resource type="BoxMesh" id="BoxMesh_as6ok"]
+
+[node name="Root" type="Node3D"]
+
+[node name="MainCamera3D" type="Camera3D" parent="."]
+unique_name_in_owner = true
+transform = Transform3D(0.999996, -0.00216283, 0.00184472, 0, 0.648938, 0.760841, -0.00284268, -0.760838, 0.648936, 0, 2.507, 1.5)
+
+[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
+process_priority = 300
+process_physics_priority = 300
+script = ExtResource("1_p8ccw")
+
+[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
+transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0, 8, 0)
+metadata/_edit_lock_ = true
+
+[node name="PlayerPhantomCamera3D" type="Node3D" parent="." node_paths=PackedStringArray("follow_target")]
+unique_name_in_owner = true
+transform = Transform3D(0.999807, -0.00216249, 0.00184445, 0, 0.648836, 0.760728, -0.00284214, -0.760718, 0.648839, 0, 2.507, 1.5)
+top_level = true
+script = ExtResource("2_8itog")
+priority = 10
+follow_mode = 2
+follow_target = NodePath("../PlayerCharacterBody3D2")
+tween_resource = ExtResource("3_xqpq0")
+tween_on_load = false
+camera_3d_resource = SubResource("Resource_ofv2c")
+follow_offset = Vector3(0, 2, 1.5)
+follow_damping = true
+
+[node name="PlayerCharacterBody3D2" parent="." instance=ExtResource("5_0nadx")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.507, 0)
+script = ExtResource("6_7h7mx")
+
+[node name="Paths" type="Node" parent="."]
+
+[node name="PathPhantomCamera3D" type="Node3D" parent="Paths" node_paths=PackedStringArray("follow_target", "follow_path")]
+transform = Transform3D(-4.37114e-08, -1, -4.37114e-08, 0, -4.37114e-08, 1, -1, 4.37114e-08, 1.91069e-15, -0.31028, 7.9199, -1.60976)
+top_level = true
+script = ExtResource("2_8itog")
+priority = 2
+follow_mode = 4
+follow_target = NodePath("../../PlayerCharacterBody3D2")
+follow_path = NodePath("../FollowPath")
+tween_resource = SubResource("Resource_01tho")
+camera_3d_resource = SubResource("Resource_syh5m")
+follow_damping = true
+
+[node name="FollowPath" type="Path3D" parent="Paths"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.31028, 7.9199, -1.60976)
+curve = SubResource("Curve3D_b33df")
+
+[node name="StraightPathFollowTrigger" type="Area3D" parent="Paths" node_paths=PackedStringArray("path_pcam")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0420399, -0.45, -6.73666)
+priority = 5
+script = ExtResource("7_g1m51")
+path_pcam = NodePath("../PathPhantomCamera3D")
+metadata/_edit_group_ = true
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Paths/StraightPathFollowTrigger"]
+shape = SubResource("BoxShape3D_aovgi")
+
+[node name="NPCInteractionZoneMesh" type="MeshInstance3D" parent="Paths/StraightPathFollowTrigger/CollisionShape3D"]
+mesh = SubResource("BoxMesh_0hdeh")
+skeleton = NodePath("../../../..")
+surface_material_override/0 = SubResource("StandardMaterial3D_fsm1b")
+metadata/_edit_group_ = true
+
+[node name="PathPhantomCamera3D2" type="Node3D" parent="Paths" node_paths=PackedStringArray("follow_target", "follow_path")]
+transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 7.9199, -13.4572)
+top_level = true
+visible = false
+script = ExtResource("2_8itog")
+priority = 2
+follow_mode = 4
+follow_target = NodePath("../../PlayerCharacterBody3D2")
+follow_path = NodePath("../FollowPath2")
+tween_resource = SubResource("Resource_01tho")
+camera_3d_resource = SubResource("Resource_xci4c")
+follow_damping = true
+follow_damping_value = Vector3(0.6, 0.1, 0.1)
+
+[node name="FollowPath2" type="Path3D" parent="Paths"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.97141, 7.9199, -13.4572)
+curve = SubResource("Curve3D_8uw2x")
+
+[node name="StraightPathFollowTrigger2" type="Area3D" parent="Paths" node_paths=PackedStringArray("path_pcam")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0420399, 0, -13.7367)
+priority = 5
+script = ExtResource("7_g1m51")
+path_pcam = NodePath("../PathPhantomCamera3D2")
+metadata/_edit_group_ = true
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Paths/StraightPathFollowTrigger2"]
+shape = SubResource("BoxShape3D_ctnqu")
+
+[node name="NPCInteractionZoneMesh" type="MeshInstance3D" parent="Paths/StraightPathFollowTrigger2/CollisionShape3D"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.45, 0)
+mesh = SubResource("BoxMesh_f6dp8")
+skeleton = NodePath("../../../..")
+surface_material_override/0 = SubResource("StandardMaterial3D_gwnkj")
+metadata/_edit_group_ = true
+
+[node name="Environment" type="Node" parent="."]
+
+[node name="Floor" parent="Environment" instance=ExtResource("8_a1h2k")]
+transform = Transform3D(1000, 0, 0, 0, 1, 0, 0, 0, 1000, 0, -1, 0)
+metadata/_edit_lock_ = true
+
+[node name="Floor3" parent="Environment" instance=ExtResource("8_a1h2k")]
+transform = Transform3D(6, 0, 0, 0, 1, 0, 0, 0, 1, -0.44204, 0, 1.76334)
+
+[node name="Floor2" parent="Environment/Floor3" instance=ExtResource("8_a1h2k")]
+transform = Transform3D(0.166667, 0, 0, 0, 3, 0, 0, 0, 14, -0.516667, 1, -6.5)
+
+[node name="Floor5" parent="Environment/Floor3" instance=ExtResource("8_a1h2k")]
+transform = Transform3D(0.166667, 0, 0, 0, 3, 0, 0, 0, 14, 0.65, 1, -6.5)
+
+[node name="Floor4" parent="Environment/Floor3" instance=ExtResource("8_a1h2k")]
+transform = Transform3D(2, 0, 0, 0, 3, 0, 0, 0, 1, 0.0666667, 1, -18)
+
+[node name="Floor6" parent="Environment/Floor3" instance=ExtResource("8_a1h2k")]
+transform = Transform3D(0.333333, 0, 0, 0, 3, 0, 0, 0, 1, -0.766667, 1, -13)
+mesh = SubResource("BoxMesh_7l3dh")
+
+[node name="Floor8" parent="Environment/Floor3" instance=ExtResource("8_a1h2k")]
+transform = Transform3D(0.166667, 0, 0, 0, 3, 0, 0, 0, 6, -1.01667, 1, -15.5)
+mesh = SubResource("BoxMesh_as6ok")
+
+[node name="Floor9" parent="Environment/Floor3" instance=ExtResource("8_a1h2k")]
+transform = Transform3D(0.166667, 0, 0, 0, 3, 0, 0, 0, 6, 1.15, 1, -15.5)
+mesh = SubResource("BoxMesh_as6ok")
+
+[node name="Floor7" parent="Environment/Floor3" instance=ExtResource("8_a1h2k")]
+transform = Transform3D(0.333333, 0, 0, 0, 3, 0, 0, 0, 1, 0.9, 1, -13)
+mesh = SubResource("BoxMesh_7l3dh")
+
+[node name="NPCDescriptionLabel" type="Label3D" parent="Environment"]
+transform = Transform3D(5.21541e-08, -1, -7.7486e-07, -1.10675e-15, 2.23517e-07, 0.999999, -0.999999, -7.45058e-08, -5.68829e-14, -3.47306, 2.59595, -5.51755)
+text = "Camera follows player while confined to a Path3D"
+font = ExtResource("9_rk5lh")
+font_size = 64
+
+[node name="MovementInstructionsLabel" type="Label3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -0.02174, -0.455369, 0.570585)
+modulate = Color(0.294118, 1, 0.631373, 1)
+text = "[WASD] to move"
+font = ExtResource("9_rk5lh")
+font_size = 48
--- /dev/null
+[gd_scene load_steps=12 format=3 uid="uid://c7uyfhhnrmkbx"]
+
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="1_gt67h"]
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_3d.gd" id="2_4ltlo"]
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="3_hldrt"]
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/camera_3d_resource.gd" id="4_pqibl"]
+[ext_resource type="PackedScene" uid="uid://bulsh7s0ibmao" path="res://addons/phantom_camera/examples/example_scenes/3D/sub_scenes/playable_character_3d.tscn" id="5_o4k7v"]
+[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/3D/player_controller_4.4.gd" id="6_8yuc5"]
+[ext_resource type="PackedScene" uid="uid://cixlwqycoox8h" path="res://addons/phantom_camera/examples/models/3d_cube_dark.tscn" id="6_m6ich"]
+[ext_resource type="Texture2D" uid="uid://c7ja4woxol8yc" path="res://addons/phantom_camera/examples/textures/3D/checker_pattern_dark.png" id="7_pagh0"]
+
+[sub_resource type="Resource" id="Resource_28vpp"]
+script = ExtResource("3_hldrt")
+duration = 1.0
+transition = 0
+ease = 2
+
+[sub_resource type="Resource" id="Resource_axopo"]
+script = ExtResource("4_pqibl")
+cull_mask = 1048575
+h_offset = 0.0
+v_offset = 0.0
+projection = 0
+fov = 75.0
+size = 1.0
+frustum_offset = Vector2(0, 0)
+near = 0.05
+far = 4000.0
+
+[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_auy8m"]
+albedo_texture = ExtResource("7_pagh0")
+uv1_triplanar = true
+uv1_world_triplanar = true
+
+[node name="Node3D2" type="Node3D"]
+
+[node name="MainCamera3D" type="Camera3D" parent="."]
+unique_name_in_owner = true
+transform = Transform3D(1, 0, 0, 0, 0.906308, 0.422618, 0, -0.422618, 0.906308, -13.2122, 2.5, 10.4016)
+
+[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
+process_priority = 300
+process_physics_priority = 300
+script = ExtResource("1_gt67h")
+
+[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
+transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0, 8, 0)
+metadata/_edit_lock_ = true
+
+[node name="Player" type="Node" parent="."]
+
+[node name="PlayerPhantomCamera3D" type="Node3D" parent="Player" node_paths=PackedStringArray("follow_target")]
+unique_name_in_owner = true
+transform = Transform3D(0.999954, 0, 0, 0, 0.906188, 0.422588, 0, -0.422562, 0.906243, -13.2122, 2.5, 10.4016)
+top_level = true
+script = ExtResource("2_4ltlo")
+priority = 10
+follow_mode = 2
+follow_target = NodePath("../PlayerCharacterBody3D")
+tween_resource = SubResource("Resource_28vpp")
+tween_on_load = false
+camera_3d_resource = SubResource("Resource_axopo")
+follow_offset = Vector3(0, 2, 2)
+follow_damping = true
+
+[node name="PlayerCharacterBody3D" parent="Player" instance=ExtResource("5_o4k7v")]
+unique_name_in_owner = true
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -13.2122, 0.5, 8.40162)
+script = ExtResource("6_8yuc5")
+
+[node name="NPCs" type="Node" parent="."]
+
+[node name="Environment" type="Node" parent="."]
+
+[node name="Floor" parent="Environment" instance=ExtResource("6_m6ich")]
+transform = Transform3D(1000, 0, 0, 0, 1, 0, 0, 0, 1000, 0, -1, 0)
+metadata/_edit_lock_ = true
+
+[node name="CSGCylinder3D" type="CSGCylinder3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -13.6511, 0.805455, -6.37532)
+use_collision = true
+radius = 1.71971
+height = 2.61091
+sides = 32
+
+[node name="CSGCylinder3D5" type="CSGCylinder3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -21.8332, -0.540694, -3.39517)
+use_collision = true
+radius = 1.53269
+height = 2.5036
+sides = 32
+
+[node name="CSGCylinder3D6" type="CSGCylinder3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.936, -1.50101, 1.22863)
+use_collision = true
+radius = 1.57419
+height = 3.47475
+sides = 32
+
+[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.81402, 0.805455, -8.78984)
+use_collision = true
+radius = 0.956285
+height = 2.61091
+sides = 32
+
+[node name="CSGSphere3D" type="CSGSphere3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -23.6875, -1.69814, 3.36997)
+use_collision = true
+radius = 3.34732
+rings = 32
+
+[node name="CSGSphere3D2" type="CSGSphere3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.14955, -0.599204, -1.04651)
+use_collision = true
+radius = 2.65844
+rings = 32
+
+[node name="CSGSphere3D3" type="CSGSphere3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26.0848, -0.599204, -2.42244)
+use_collision = true
+radius = 2.14606
+rings = 32
+
+[node name="CSGTorus3D2" type="CSGTorus3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.44645, -0.497663, 4.44352)
+use_collision = true
+inner_radius = 0.971543
+outer_radius = 2.15226
+sides = 32
+ring_sides = 18
+
+[node name="CSGBox3D" type="CSGBox3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.52545, 6.53866, -12.6331)
+use_collision = true
+size = Vector3(178.429, 14.0773, 1)
+material = SubResource("StandardMaterial3D_auy8m")
+
+[node name="CSGBox3D2" type="CSGBox3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -21.1764, 0.760708, -6.1376)
+use_collision = true
+size = Vector3(2.64182, 2.52142, 2.30997)
+
+[node name="CSGBox3D5" type="CSGBox3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18.1256, 0.335247, 7.14677)
+use_collision = true
+size = Vector3(3.80964, 1.67049, 0.932048)
+
+[node name="CSGBox3D3" type="CSGBox3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.94346, 0.138478, -4.36159)
+use_collision = true
+size = Vector3(1.53893, 1.27695, 1.80814)
+
+[node name="CSGBox3D6" type="CSGBox3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.30382, 0.138478, -1.89037)
+use_collision = true
+size = Vector3(4.03502, 1.27695, 5.2198)
+
+[node name="CSGBox3D4" type="CSGBox3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.04727, 0.0440434, 8.36617)
+use_collision = true
+size = Vector3(4.57784, 1.08809, 3.11285)
--- /dev/null
+[gd_scene load_steps=22 format=3 uid="uid://bklrp02eywxsx"]
+
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_3d.gd" id="1_s26cy"]
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="2_m2d6w"]
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/camera_3d_resource.gd" id="3_l7kg8"]
+[ext_resource type="PackedScene" uid="uid://mskcwn1a1v6d" path="res://addons/phantom_camera/examples/example_scenes/3D/sub_scenes/playable_character_third_person_3d.tscn" id="4_qcyfd"]
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="5_8von1"]
+[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/3D/player_controller_third_person_4.4.gd" id="5_tarnu"]
+[ext_resource type="PackedScene" uid="uid://cixlwqycoox8h" path="res://addons/phantom_camera/examples/models/3d_cube_dark.tscn" id="6_o1fj6"]
+[ext_resource type="FontFile" uid="uid://c4mm3of2mc8o5" path="res://addons/phantom_camera/fonts/Nunito-Black.ttf" id="7_amcmx"]
+[ext_resource type="Texture2D" uid="uid://c3mskbmvnpwux" path="res://addons/phantom_camera/examples/textures/3D/target.png" id="8_rjcgw"]
+
+[sub_resource type="Resource" id="Resource_8fhct"]
+script = ExtResource("2_m2d6w")
+duration = 0.3
+transition = 2
+ease = 1
+
+[sub_resource type="Resource" id="Resource_7m0fv"]
+script = ExtResource("3_l7kg8")
+cull_mask = 1048575
+h_offset = 0.0
+v_offset = 0.0
+projection = 0
+fov = 75.0
+size = 1.0
+frustum_offset = Vector2(0, 0)
+near = 0.05
+far = 4000.0
+
+[sub_resource type="CameraAttributesPractical" id="CameraAttributesPractical_i42vj"]
+dof_blur_far_enabled = true
+dof_blur_far_distance = 5.99
+dof_blur_near_enabled = true
+dof_blur_near_distance = 0.05
+dof_blur_amount = 0.21
+
+[sub_resource type="Resource" id="Resource_e7t18"]
+script = ExtResource("2_m2d6w")
+duration = 0.4
+transition = 2
+ease = 1
+
+[sub_resource type="Resource" id="Resource_jogxh"]
+script = ExtResource("3_l7kg8")
+cull_mask = 1048575
+h_offset = 1.0
+v_offset = 0.0
+projection = 0
+fov = 75.0
+size = 1.0
+frustum_offset = Vector2(0, 0)
+near = 0.05
+far = 4000.0
+
+[sub_resource type="CameraAttributesPractical" id="CameraAttributesPractical_fvhx5"]
+dof_blur_far_enabled = true
+dof_blur_far_distance = 31.1
+dof_blur_near_enabled = true
+dof_blur_near_distance = 1.79
+
+[sub_resource type="CameraAttributesPractical" id="CameraAttributesPractical_5mfg2"]
+dof_blur_far_enabled = true
+dof_blur_far_distance = 5.99
+dof_blur_near_enabled = true
+dof_blur_near_distance = 0.05
+dof_blur_amount = 0.21
+
+[sub_resource type="BoxMesh" id="BoxMesh_wsigl"]
+size = Vector3(1, 10, 20)
+
+[sub_resource type="Resource" id="Resource_afrr1"]
+script = ExtResource("2_m2d6w")
+duration = 0.6
+transition = 3
+ease = 1
+
+[sub_resource type="Resource" id="Resource_unpfd"]
+script = ExtResource("3_l7kg8")
+cull_mask = 1048575
+h_offset = 0.0
+v_offset = 0.0
+projection = 0
+fov = 75.0
+size = 1.0
+frustum_offset = Vector2(0, 0)
+near = 0.05
+far = 4000.0
+
+[sub_resource type="CylinderMesh" id="CylinderMesh_sm466"]
+top_radius = 1.51
+height = 0.2
+
+[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_hp48l"]
+transparency = 1
+albedo_texture = ExtResource("8_rjcgw")
+uv1_scale = Vector3(1.91, 1.91, 1.91)
+uv1_offset = Vector3(0.025, -0.927, 0)
+
+[node name="Root" type="Node3D"]
+
+[node name="PlayerPhantomCamera3D" type="Node3D" parent="." node_paths=PackedStringArray("follow_target")]
+unique_name_in_owner = true
+transform = Transform3D(1, 0, 0, 0, 0.866025, 0.499999, 0, -0.5, 0.866023, -0.0194088, 2.25688, 9.63713)
+script = ExtResource("1_s26cy")
+priority = 10
+follow_mode = 6
+follow_target = NodePath("../PlayerCharacterBody3D")
+tween_resource = SubResource("Resource_8fhct")
+tween_on_load = false
+camera_3d_resource = SubResource("Resource_7m0fv")
+attributes = SubResource("CameraAttributesPractical_i42vj")
+follow_damping = true
+follow_distance = 3.5
+spring_length = 3.5
+
+[node name="PlayerAimPhantomCamera3D" type="Node3D" parent="." node_paths=PackedStringArray("follow_target")]
+unique_name_in_owner = true
+transform = Transform3D(0.953716, -0.0418501, 0.297778, 0, 0.990266, 0.139173, -0.300705, -0.132731, 0.944432, 0.427258, 1.68564, 7.6237)
+script = ExtResource("1_s26cy")
+follow_mode = 6
+follow_target = NodePath("../PlayerCharacterBody3D")
+tween_resource = SubResource("Resource_e7t18")
+tween_on_load = false
+camera_3d_resource = SubResource("Resource_jogxh")
+attributes = SubResource("CameraAttributesPractical_fvhx5")
+follow_offset = Vector3(0, 0.97, -0.399)
+follow_damping_value = Vector3(0, 0, 0)
+follow_distance = 1.5
+spring_length = 1.5
+
+[node name="PlayerCharacterBody3D" parent="." instance=ExtResource("4_qcyfd")]
+unique_name_in_owner = true
+transform = Transform3D(0.999903, 0.0139622, 0, -0.0139622, 0.999903, 0, 0, 0, 1, -0.0194088, 0.506884, 6.60605)
+script = ExtResource("5_tarnu")
+
+[node name="MainCamera3D" type="Camera3D" parent="."]
+unique_name_in_owner = true
+transform = Transform3D(1, 0, 0, 0, 0.866025, 0.5, 0, -0.5, 0.866025, -0.0194088, 2.25688, 9.63713)
+attributes = SubResource("CameraAttributesPractical_5mfg2")
+
+[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
+process_priority = 300
+process_physics_priority = 300
+script = ExtResource("5_8von1")
+
+[node name="Environment" type="Node" parent="."]
+
+[node name="Floor" parent="Environment" instance=ExtResource("6_o1fj6")]
+transform = Transform3D(1000, 0, 0, 0, 1, 0, 0, 0, 1000, 0, -1, 0)
+metadata/_edit_lock_ = true
+
+[node name="Wall" parent="Environment" instance=ExtResource("6_o1fj6")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.5, 4.5, 0)
+mesh = SubResource("BoxMesh_wsigl")
+metadata/_edit_lock_ = true
+
+[node name="Wall2" parent="Environment" instance=ExtResource("6_o1fj6")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9.5, 4.5, 0)
+mesh = SubResource("BoxMesh_wsigl")
+metadata/_edit_lock_ = true
+
+[node name="Wall3" parent="Environment" instance=ExtResource("6_o1fj6")]
+transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0, 4.5, 10.5)
+mesh = SubResource("BoxMesh_wsigl")
+metadata/_edit_lock_ = true
+
+[node name="Wall4" parent="Environment" instance=ExtResource("6_o1fj6")]
+transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0, 4.5, -9.5)
+mesh = SubResource("BoxMesh_wsigl")
+metadata/_edit_lock_ = true
+
+[node name="DirectionalLight3D" type="DirectionalLight3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0, 8, 0)
+metadata/_edit_lock_ = true
+
+[node name="CeilingPhantomCamera3D" type="Node3D" parent="."]
+unique_name_in_owner = true
+transform = Transform3D(-4.37114e-08, -1, 2.98023e-08, 0, 2.98023e-08, 1, -1, 4.37114e-08, -1.3027e-15, -0.200665, 13.366, -0.162648)
+script = ExtResource("1_s26cy")
+tween_resource = SubResource("Resource_afrr1")
+camera_3d_resource = SubResource("Resource_unpfd")
+
+[node name="MovementInstructionsLabel" type="Label3D" parent="."]
+transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0.0505604, -0.484909, 1.44357)
+visible = false
+modulate = Color(0.294118, 1, 0.631373, 1)
+text = "[WASD] to move"
+font = ExtResource("7_amcmx")
+font_size = 48
+
+[node name="MovementInstructionsLabel3" type="Label3D" parent="."]
+transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0.0505604, -0.484909, 0.817134)
+visible = false
+modulate = Color(0.294118, 1, 0.631373, 1)
+text = "[Right Mouse Click] to \"aim\""
+font = ExtResource("7_amcmx")
+font_size = 48
+
+[node name="MovementInstructionsLabel2" type="Label3D" parent="."]
+transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -0.0440154, -0.490478, -6.30248)
+visible = false
+modulate = Color(0.294118, 1, 0.631373, 1)
+text = "[Space] to toggle PCam"
+font = ExtResource("7_amcmx")
+font_size = 48
+
+[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
+transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0.260217, 1.60477, -9.07797)
+mesh = SubResource("CylinderMesh_sm466")
+surface_material_override/0 = SubResource("StandardMaterial3D_hp48l")
+
+[node name="MeshInstance3D3" type="MeshInstance3D" parent="."]
+transform = Transform3D(-1, -8.74228e-08, 3.82137e-15, 0, -4.37114e-08, -1, 8.74228e-08, -1, 4.37114e-08, 0.0525861, 1.60477, 9.98156)
+mesh = SubResource("CylinderMesh_sm466")
+surface_material_override/0 = SubResource("StandardMaterial3D_hp48l")
+
+[editable path="PlayerCharacterBody3D"]
--- /dev/null
+[gd_scene load_steps=17 format=3 uid="uid://ceelq6qrb41uf"]
+
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="2_47xf2"]
+[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/3D/player_controller_third_person_4.4.gd" id="2_uhq7m"]
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_3d.gd" id="2_whx47"]
+[ext_resource type="PackedScene" uid="uid://cixlwqycoox8h" path="res://addons/phantom_camera/examples/models/3d_cube_dark.tscn" id="4_lii5s"]
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/camera_3d_resource.gd" id="5_jt2lp"]
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="5_oc4q1"]
+[ext_resource type="FontFile" uid="uid://c4mm3of2mc8o5" path="res://addons/phantom_camera/fonts/Nunito-Black.ttf" id="7_kg7u1"]
+[ext_resource type="PackedScene" uid="uid://mskcwn1a1v6d" path="res://addons/phantom_camera/examples/example_scenes/3D/sub_scenes/playable_character_third_person_3d.tscn" id="7_kut0u"]
+
+[sub_resource type="Resource" id="Resource_8fhct"]
+script = ExtResource("2_47xf2")
+duration = 0.3
+transition = 2
+ease = 1
+
+[sub_resource type="Resource" id="Resource_7m0fv"]
+script = ExtResource("5_jt2lp")
+cull_mask = 1048575
+h_offset = 0.0
+v_offset = 0.0
+projection = 0
+fov = 75.0
+size = 1.0
+frustum_offset = Vector2(0, 0)
+near = 0.05
+far = 4000.0
+
+[sub_resource type="Resource" id="Resource_e7t18"]
+script = ExtResource("2_47xf2")
+duration = 0.4
+transition = 2
+ease = 1
+
+[sub_resource type="Resource" id="Resource_jogxh"]
+script = ExtResource("5_jt2lp")
+cull_mask = 1048575
+h_offset = 1.0
+v_offset = 0.0
+projection = 0
+fov = 75.0
+size = 1.0
+frustum_offset = Vector2(0, 0)
+near = 0.05
+far = 4000.0
+
+[sub_resource type="BoxMesh" id="BoxMesh_wsigl"]
+size = Vector3(1, 10, 20)
+
+[sub_resource type="BoxMesh" id="BoxMesh_bj3re"]
+size = Vector3(1, 7, 7)
+
+[sub_resource type="Resource" id="Resource_afrr1"]
+script = ExtResource("2_47xf2")
+duration = 0.6
+transition = 3
+ease = 1
+
+[sub_resource type="Resource" id="Resource_ioijp"]
+script = ExtResource("5_jt2lp")
+cull_mask = 1048575
+h_offset = 0.0
+v_offset = 0.0
+projection = 0
+fov = 75.0
+size = 1.0
+frustum_offset = Vector2(0, 0)
+near = 0.05
+far = 4000.0
+
+[node name="Root" type="Node3D"]
+
+[node name="PlayerCharacterBody3D" parent="." instance=ExtResource("7_kut0u")]
+unique_name_in_owner = true
+script = ExtResource("2_uhq7m")
+
+[node name="PlayerPhantomCamera3D" type="Node3D" parent="." node_paths=PackedStringArray("follow_target")]
+unique_name_in_owner = true
+transform = Transform3D(1, 0, 0, 0, 0.866023, 0.499997, 0, -0.499999, 0.866021, -0.0194088, 2.25687, 3.01475)
+script = ExtResource("2_whx47")
+priority = 10
+follow_mode = 6
+follow_target = NodePath("../PlayerCharacterBody3D")
+tween_resource = SubResource("Resource_8fhct")
+tween_on_load = false
+camera_3d_resource = SubResource("Resource_7m0fv")
+follow_damping = true
+follow_distance = 3.5
+spring_length = 3.5
+
+[node name="PlayerAimPhantomCamera3D" type="Node3D" parent="." node_paths=PackedStringArray("follow_target")]
+unique_name_in_owner = true
+transform = Transform3D(0.953716, -0.0104945, 0.300522, 0, 0.99939, 0.0348995, -0.300706, -0.0332842, 0.953135, 0.431374, 1.35923, 1.01438)
+script = ExtResource("2_whx47")
+follow_mode = 6
+follow_target = NodePath("../PlayerCharacterBody3D")
+tween_resource = SubResource("Resource_e7t18")
+tween_on_load = false
+camera_3d_resource = SubResource("Resource_jogxh")
+follow_offset = Vector3(0, 0.8, -0.399)
+follow_distance = 1.5
+spring_length = 1.5
+
+[node name="MainCamera3D" type="Camera3D" parent="."]
+unique_name_in_owner = true
+transform = Transform3D(1, 0, 0, 0, 0.866025, 0.5, 0, -0.5, 0.866025, -0.0194088, 2.25687, 3.01475)
+
+[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
+process_priority = 300
+process_physics_priority = 300
+script = ExtResource("5_oc4q1")
+
+[node name="Environment" type="Node" parent="."]
+
+[node name="Floor" parent="Environment" instance=ExtResource("4_lii5s")]
+transform = Transform3D(1000, 0, 0, 0, 1, 0, 0, 0, 1000, 0, -1, 0)
+metadata/_edit_lock_ = true
+
+[node name="Wall" parent="Environment" instance=ExtResource("4_lii5s")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.5, 4.5, 0)
+mesh = SubResource("BoxMesh_wsigl")
+metadata/_edit_lock_ = true
+
+[node name="Wall5" parent="Environment" instance=ExtResource("4_lii5s")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.133, 3, -6.5)
+mesh = SubResource("BoxMesh_bj3re")
+metadata/_edit_lock_ = true
+
+[node name="Wall6" parent="Environment" instance=ExtResource("4_lii5s")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5, 3, 0)
+mesh = SubResource("BoxMesh_bj3re")
+metadata/_edit_lock_ = true
+
+[node name="Wall7" parent="Environment" instance=ExtResource("4_lii5s")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.5, 3, 0)
+mesh = SubResource("BoxMesh_bj3re")
+metadata/_edit_lock_ = true
+
+[node name="Wall2" parent="Environment" instance=ExtResource("4_lii5s")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9.5, 4.5, 0)
+mesh = SubResource("BoxMesh_wsigl")
+metadata/_edit_lock_ = true
+
+[node name="Wall3" parent="Environment" instance=ExtResource("4_lii5s")]
+transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0, 4.5, 10.5)
+mesh = SubResource("BoxMesh_wsigl")
+metadata/_edit_lock_ = true
+
+[node name="Wall4" parent="Environment" instance=ExtResource("4_lii5s")]
+transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0, 4.5, -9.5)
+mesh = SubResource("BoxMesh_wsigl")
+metadata/_edit_lock_ = true
+
+[node name="DirectionalLight3D" type="DirectionalLight3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0, 8, 0)
+metadata/_edit_lock_ = true
+
+[node name="CeilingPhantomCamera3D" type="Node3D" parent="."]
+unique_name_in_owner = true
+transform = Transform3D(-4.37114e-08, -1, 2.98023e-08, 0, 2.98023e-08, 1, -1, 4.37114e-08, -1.3027e-15, -0.200665, 13.366, -0.162648)
+script = ExtResource("2_whx47")
+tween_resource = SubResource("Resource_afrr1")
+camera_3d_resource = SubResource("Resource_ioijp")
+
+[node name="MovementInstructionsLabel" type="Label3D" parent="."]
+transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0.0505604, -0.484909, 1.44357)
+modulate = Color(0.294118, 1, 0.631373, 1)
+text = "[WASD] to move"
+font = ExtResource("7_kg7u1")
+font_size = 48
+
+[node name="MovementInstructionsLabel3" type="Label3D" parent="."]
+transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0.0505604, -0.484909, 0.817134)
+modulate = Color(0.294118, 1, 0.631373, 1)
+text = "[Right Mouse Click] to \"aim\""
+font = ExtResource("7_kg7u1")
+font_size = 48
+
+[node name="MovementInstructionsLabel2" type="Label3D" parent="."]
+transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -0.0440154, -0.490478, -6.30248)
+modulate = Color(0.294118, 1, 0.631373, 1)
+text = "[Space] to toggle PCam"
+font = ExtResource("7_kg7u1")
+font_size = 48
--- /dev/null
+[gd_scene load_steps=15 format=3 uid="uid://dsfixtpa5xwqt"]
+
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="1_jbmnd"]
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_3d.gd" id="2_t3gk2"]
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="3_b2lea"]
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/camera_3d_resource.gd" id="4_mqo2b"]
+[ext_resource type="PackedScene" uid="uid://bulsh7s0ibmao" path="res://addons/phantom_camera/examples/example_scenes/3D/sub_scenes/playable_character_3d.tscn" id="5_pxkua"]
+[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/3D/player_controller_4.4.gd" id="6_3rtu0"]
+[ext_resource type="PackedScene" uid="uid://cixlwqycoox8h" path="res://addons/phantom_camera/examples/models/3d_cube_dark.tscn" id="6_uuxs3"]
+[ext_resource type="Texture2D" uid="uid://c7ja4woxol8yc" path="res://addons/phantom_camera/examples/textures/3D/checker_pattern_dark.png" id="7_0dyt0"]
+
+[sub_resource type="Resource" id="Resource_pwcgo"]
+script = ExtResource("3_b2lea")
+duration = 1.0
+transition = 0
+ease = 2
+
+[sub_resource type="Resource" id="Resource_ft2w3"]
+script = ExtResource("4_mqo2b")
+cull_mask = 1048575
+h_offset = 0.0
+v_offset = 0.0
+projection = 0
+fov = 75.0
+size = 1.0
+frustum_offset = Vector2(0, 0)
+near = 0.05
+far = 4000.0
+
+[sub_resource type="CapsuleMesh" id="CapsuleMesh_2h36r"]
+
+[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_w3olp"]
+albedo_color = Color(0.227451, 0.337255, 0.576471, 1)
+
+[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_cw102"]
+albedo_color = Color(0.227451, 0.337255, 0.576471, 1)
+
+[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_auy8m"]
+albedo_texture = ExtResource("7_0dyt0")
+uv1_triplanar = true
+uv1_world_triplanar = true
+
+[node name="Root" type="Node3D"]
+
+[node name="MainCamera3D" type="Camera3D" parent="."]
+unique_name_in_owner = true
+transform = Transform3D(0.998682, 0.0324725, -0.0397495, 0, 0.774433, 0.632656, 0.0513272, -0.631822, 0.773412, -0.137901, 4.03222, 6.36446)
+
+[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
+process_priority = 300
+process_physics_priority = 300
+script = ExtResource("1_jbmnd")
+
+[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
+transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0, 8, 0)
+metadata/_edit_lock_ = true
+
+[node name="PhantomCamera3D" type="Node3D" parent="." node_paths=PackedStringArray("look_at_target")]
+transform = Transform3D(0.998682, 0.0324725, -0.0397495, 0, 0.774433, 0.632656, 0.0513272, -0.631822, 0.773413, -0.137901, 4.03222, 6.36446)
+script = ExtResource("2_t3gk2")
+priority = 10
+look_at_mode = 2
+look_at_target = NodePath("../PlayerCharacterBody3D2")
+tween_resource = SubResource("Resource_pwcgo")
+tween_on_load = false
+camera_3d_resource = SubResource("Resource_ft2w3")
+look_at_damping = true
+
+[node name="PlayerCharacterBody3D2" parent="." instance=ExtResource("5_pxkua")]
+script = ExtResource("6_3rtu0")
+
+[node name="NPCs" type="Node" parent="."]
+
+[node name="PlayerMeshInstance3D" type="MeshInstance3D" parent="NPCs"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.96028, 0.519002, -1.52506)
+mesh = SubResource("CapsuleMesh_2h36r")
+skeleton = NodePath("")
+surface_material_override/0 = SubResource("StandardMaterial3D_w3olp")
+
+[node name="PlayerMeshInstance3D2" type="MeshInstance3D" parent="NPCs"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.59952, 0.519, 4.06618)
+mesh = SubResource("CapsuleMesh_2h36r")
+skeleton = NodePath("")
+surface_material_override/0 = SubResource("StandardMaterial3D_cw102")
+
+[node name="Environment" type="Node" parent="."]
+
+[node name="Floor" parent="Environment" instance=ExtResource("6_uuxs3")]
+transform = Transform3D(1000, 0, 0, 0, 1, 0, 0, 0, 1000, 0, -1, 0)
+metadata/_edit_lock_ = true
+
+[node name="CSGCylinder3D" type="CSGCylinder3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.00548, 0.805455, -6.37532)
+use_collision = true
+radius = 1.71971
+height = 2.61091
+sides = 32
+
+[node name="CSGCylinder3D5" type="CSGCylinder3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 25.5597, 0.31181, -5.46661)
+use_collision = true
+radius = 2.77591
+height = 1.62362
+sides = 32
+
+[node name="CSGCylinder3D6" type="CSGCylinder3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -8.96428, 0.31181, 6.6322)
+use_collision = true
+radius = 1.57419
+height = 3.47475
+sides = 32
+
+[node name="CSGCylinder3D3" type="CSGCylinder3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15.3959, 0.201103, 2.71259)
+use_collision = true
+radius = 1.41311
+height = 1.40221
+sides = 32
+
+[node name="CSGCylinder3D4" type="CSGCylinder3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.02677, 0.201101, 11.6804)
+use_collision = true
+radius = 2.21673
+height = 7.88261
+sides = 32
+
+[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.8316, 0.805455, -8.78984)
+use_collision = true
+radius = 0.956285
+height = 2.61091
+sides = 32
+
+[node name="CSGSphere3D" type="CSGSphere3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15.5989, -1.69814, -6.51262)
+use_collision = true
+radius = 3.34732
+rings = 32
+
+[node name="CSGSphere3D2" type="CSGSphere3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.17742, -0.599204, 8.81048)
+use_collision = true
+radius = 2.65844
+rings = 32
+
+[node name="CSGSphere3D3" type="CSGSphere3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -13.4392, -0.599204, -2.42244)
+use_collision = true
+radius = 2.14606
+rings = 32
+
+[node name="CSGTorus3D" type="CSGTorus3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.58998, -1.90735e-06, 0.346393)
+use_collision = true
+inner_radius = 1.3
+outer_radius = 2.0
+sides = 32
+ring_sides = 18
+
+[node name="CSGTorus3D2" type="CSGTorus3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22.5502, -1.90735e-06, 7.89765)
+use_collision = true
+inner_radius = 0.971543
+outer_radius = 2.15226
+sides = 32
+ring_sides = 18
+
+[node name="CSGBox3D" type="CSGBox3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10.1202, 6.53866, -12.6331)
+use_collision = true
+size = Vector3(178.429, 14.0773, 1)
+material = SubResource("StandardMaterial3D_auy8m")
+
+[node name="CSGBox3D2" type="CSGBox3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -8.53078, 0.760708, -6.1376)
+use_collision = true
+size = Vector3(2.64182, 2.52142, 2.30997)
+
+[node name="CSGBox3D5" type="CSGBox3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14.9646, 0.335247, 8.22829)
+use_collision = true
+size = Vector3(3.80964, 1.67049, 0.932048)
+
+[node name="CSGBox3D3" type="CSGBox3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.70216, 0.138478, -4.36159)
+use_collision = true
+size = Vector3(1.53893, 1.27695, 1.80814)
+
+[node name="CSGBox3D6" type="CSGBox3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14.1529, 0.138478, 5.20734)
+use_collision = true
+size = Vector3(4.03502, 1.27695, 5.2198)
+
+[node name="CSGBox3D4" type="CSGBox3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30.7692, 1.78638, -1.60318)
+use_collision = true
+size = Vector3(4.57784, 4.57276, 3.11285)
--- /dev/null
+[gd_scene load_steps=21 format=3 uid="uid://d0fyuvesb472p"]
+
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="1_25rmy"]
+[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/3D/player_controller_first_person_4.4.gd" id="2_7nd2u"]
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/phantom_camera_noise_3d.gd" id="3_t4fhv"]
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_3d.gd" id="4_tnm2f"]
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="5_4webr"]
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/camera_3d_resource.gd" id="6_dmm4a"]
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_noise_emitter_3d.gd" id="7_2vtho"]
+[ext_resource type="PackedScene" uid="uid://cixlwqycoox8h" path="res://addons/phantom_camera/examples/models/3d_cube_dark.tscn" id="8_bw5oq"]
+[ext_resource type="Texture2D" uid="uid://c7ja4woxol8yc" path="res://addons/phantom_camera/examples/textures/3D/checker_pattern_dark.png" id="9_jpkpr"]
+[ext_resource type="FontFile" uid="uid://dve7mgsjik4dg" path="res://addons/phantom_camera/fonts/Nunito-Regular.ttf" id="10_8pr3k"]
+[ext_resource type="FontFile" uid="uid://c4mm3of2mc8o5" path="res://addons/phantom_camera/fonts/Nunito-Black.ttf" id="11_vp57v"]
+
+[sub_resource type="CapsuleMesh" id="CapsuleMesh_yvgu3"]
+
+[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_vc6km"]
+albedo_color = Color(0.988235, 0.498039, 0.498039, 1)
+
+[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_lsrh7"]
+radius = 0.269454
+
+[sub_resource type="Resource" id="Resource_lhgur"]
+script = ExtResource("5_4webr")
+duration = 1.0
+transition = 0
+ease = 2
+
+[sub_resource type="Resource" id="Resource_ghjuj"]
+script = ExtResource("6_dmm4a")
+cull_mask = 1048575
+h_offset = 0.0
+v_offset = 0.0
+projection = 0
+fov = 75.0
+size = 1.0
+frustum_offset = Vector2(0, 0)
+near = 0.05
+far = 4000.0
+
+[sub_resource type="Resource" id="Resource_2l4w0"]
+script = ExtResource("3_t4fhv")
+amplitude = 40.0
+frequency = 0.2
+randomize_noise_seed = 0
+noise_seed = 0
+rotational_noise = true
+positional_noise = false
+rotational_multiplier_x = 1.0
+rotational_multiplier_y = 1.0
+rotational_multiplier_z = 0.0
+positional_multiplier_x = 0.1
+positional_multiplier_y = 0.1
+positional_multiplier_z = 0.1
+
+[sub_resource type="Resource" id="Resource_6tnhy"]
+script = ExtResource("3_t4fhv")
+amplitude = 10.0
+frequency = 20.0
+randomize_noise_seed = 0
+noise_seed = 928
+rotational_noise = true
+positional_noise = false
+rotational_multiplier_x = 1.0
+rotational_multiplier_y = 1.0
+rotational_multiplier_z = 0.1
+positional_multiplier_x = 1.0
+positional_multiplier_y = 1.0
+positional_multiplier_z = 1.0
+
+[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_qi01t"]
+albedo_texture = ExtResource("9_jpkpr")
+uv1_triplanar = true
+uv1_world_triplanar = true
+
+[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ey47a"]
+bg_color = Color(0.0784314, 0.109804, 0.129412, 1)
+border_width_right = 4
+border_width_bottom = 4
+border_color = Color(0.227451, 0.72549, 0.603922, 1)
+corner_radius_bottom_right = 20
+expand_margin_bottom = 6.0
+
+[node name="Root" type="Node3D"]
+
+[node name="MainCamera3D" type="Camera3D" parent="."]
+unique_name_in_owner = true
+transform = Transform3D(-0.0642313, 0.122871, 0.990342, 0, 0.992391, -0.123126, -0.997935, -0.00790852, -0.0637426, -16.46, 0.503767, 4.249)
+
+[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
+process_priority = 300
+process_physics_priority = 300
+script = ExtResource("1_25rmy")
+
+[node name="PlayerCharacterBody3D" type="CharacterBody3D" parent="."]
+unique_name_in_owner = true
+transform = Transform3D(0.999897, 0.0143636, 0, -0.0143636, 0.999897, 0, 0, 0, 1, -16.46, 0.503767, 4.249)
+script = ExtResource("2_7nd2u")
+
+[node name="PlayerVisual" type="MeshInstance3D" parent="PlayerCharacterBody3D"]
+unique_name_in_owner = true
+mesh = SubResource("CapsuleMesh_yvgu3")
+surface_material_override/0 = SubResource("StandardMaterial3D_vc6km")
+
+[node name="PlayerArea3D" type="Area3D" parent="PlayerCharacterBody3D"]
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="PlayerCharacterBody3D/PlayerArea3D"]
+shape = SubResource("CapsuleShape3D_lsrh7")
+
+[node name="PlayerCollisionShape3D" type="CollisionShape3D" parent="PlayerCharacterBody3D"]
+shape = SubResource("CapsuleShape3D_lsrh7")
+
+[node name="PlayerPhantomCamera3D" type="Node3D" parent="." node_paths=PackedStringArray("follow_target")]
+unique_name_in_owner = true
+transform = Transform3D(0.00441533, 0, 0.999915, 0, 0.999995, 0, -0.999923, 0, 0.00441529, -16.46, 0.503767, 4.249)
+top_level = true
+script = ExtResource("4_tnm2f")
+priority = 10
+follow_mode = 2
+follow_target = NodePath("../PlayerCharacterBody3D")
+tween_resource = SubResource("Resource_lhgur")
+tween_on_load = false
+camera_3d_resource = SubResource("Resource_ghjuj")
+noise = SubResource("Resource_2l4w0")
+noise_emitter_layer = 1
+
+[node name="PlayerPhantomCameraNoiseEmitter3D" type="Node3D" parent="."]
+unique_name_in_owner = true
+transform = Transform3D(-4.37085e-08, 0, 0.999925, 0, 0.999995, 0, -0.999933, 0, -4.37081e-08, -16.46, 0.503767, 4.249)
+script = ExtResource("7_2vtho")
+noise = SubResource("Resource_6tnhy")
+duration = 0.1
+decay_time = 0.1
+
+[node name="Environment" type="Node" parent="."]
+
+[node name="Floor" parent="Environment" instance=ExtResource("8_bw5oq")]
+transform = Transform3D(1000, 0, 0, 0, 1, 0, 0, 0, 1000, 0, -1, 0)
+metadata/_edit_lock_ = true
+
+[node name="CSGBox3D" type="CSGBox3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.525, 6.539, 2.5)
+use_collision = true
+size = Vector3(178.429, 14.0773, 1)
+material = SubResource("StandardMaterial3D_qi01t")
+
+[node name="CSGBox3D3" type="CSGBox3D" parent="Environment"]
+transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 8.83707, 6.53866, -1.80739)
+use_collision = true
+size = Vector3(178.429, 14.0773, 1)
+material = SubResource("StandardMaterial3D_qi01t")
+
+[node name="CSGBox3D4" type="CSGBox3D" parent="Environment"]
+transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -38.9392, 6.53866, -1.80739)
+use_collision = true
+size = Vector3(178.429, 14.0773, 1)
+material = SubResource("StandardMaterial3D_qi01t")
+
+[node name="CSGBox3D2" type="CSGBox3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.525, 6.539, 6)
+use_collision = true
+size = Vector3(178.429, 14.0773, 1)
+material = SubResource("StandardMaterial3D_qi01t")
+
+[node name="DirectionalLight3D" type="DirectionalLight3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0, 8, 0)
+metadata/_edit_lock_ = true
+
+[node name="EmitterTip" type="Panel" parent="."]
+unique_name_in_owner = true
+visible = false
+anchors_preset = -1
+anchor_right = 0.3
+anchor_bottom = 0.1
+theme_override_styles/panel = SubResource("StyleBoxFlat_ey47a")
+
+[node name="Guidance" type="RichTextLabel" parent="EmitterTip"]
+layout_mode = 1
+anchors_preset = -1
+anchor_top = 0.5
+anchor_right = 1.0
+anchor_bottom = 0.5
+grow_horizontal = 2
+grow_vertical = 2
+size_flags_vertical = 8
+theme_override_fonts/normal_font = ExtResource("10_8pr3k")
+theme_override_fonts/bold_font = ExtResource("11_vp57v")
+theme_override_font_sizes/normal_font_size = 18
+theme_override_font_sizes/bold_font_size = 24
+bbcode_enabled = true
+text = "[center]Press [b]Q[/b] to trigger Noise Emitter"
+fit_content = true
--- /dev/null
+[gd_scene load_steps=23 format=3 uid="uid://cvnbgtbaxwj5p"]
+
+[ext_resource type="PackedScene" uid="uid://cixlwqycoox8h" path="res://addons/phantom_camera/examples/models/3d_cube_dark.tscn" id="1_d55xf"]
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="2_d1opf"]
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_3d.gd" id="3_4whss"]
+[ext_resource type="Resource" uid="uid://cptfoggk2ok67" path="res://addons/phantom_camera/examples/resources/tween/player_phantom_camera_3d_tween.tres" id="4_8ap1e"]
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/camera_3d_resource.gd" id="5_1sgnu"]
+[ext_resource type="PackedScene" uid="uid://bulsh7s0ibmao" path="res://addons/phantom_camera/examples/example_scenes/3D/sub_scenes/playable_character_3d.tscn" id="6_lr46m"]
+[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/3D/3d_trigger_area.gd" id="7_istoq"]
+[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/3D/player_controller_4.4.gd" id="7_x1jex"]
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="8_qepee"]
+[ext_resource type="FontFile" uid="uid://c4mm3of2mc8o5" path="res://addons/phantom_camera/fonts/Nunito-Black.ttf" id="9_ptb3h"]
+
+[sub_resource type="Resource" id="Resource_0dtvs"]
+script = ExtResource("5_1sgnu")
+cull_mask = 1048575
+h_offset = 0.0
+v_offset = 0.0
+projection = 0
+fov = 75.0
+size = 1.0
+frustum_offset = Vector2(0, 0)
+near = 0.05
+far = 4000.0
+
+[sub_resource type="BoxShape3D" id="BoxShape3D_j6fha"]
+size = Vector3(5, 0.1, 4)
+
+[sub_resource type="BoxMesh" id="BoxMesh_xg4en"]
+size = Vector3(5, 0.1, 4)
+
+[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_2dct5"]
+transparency = 1
+albedo_color = Color(0.988235, 0.478431, 0.905882, 0.0901961)
+
+[sub_resource type="Resource" id="Resource_v8ndi"]
+script = ExtResource("8_qepee")
+duration = 0.6
+transition = 0
+ease = 2
+
+[sub_resource type="Resource" id="Resource_kmep1"]
+script = ExtResource("5_1sgnu")
+cull_mask = 1048575
+h_offset = 0.0
+v_offset = 0.0
+projection = 0
+fov = 75.0
+size = 1.0
+frustum_offset = Vector2(0, 0)
+near = 0.05
+far = 4000.0
+
+[sub_resource type="Resource" id="Resource_uxg44"]
+script = ExtResource("8_qepee")
+duration = 0.3
+transition = 1
+ease = 2
+
+[sub_resource type="Resource" id="Resource_eu3bc"]
+script = ExtResource("5_1sgnu")
+cull_mask = 1048575
+h_offset = 0.0
+v_offset = 0.0
+projection = 0
+fov = 75.0
+size = 1.0
+frustum_offset = Vector2(0, 0)
+near = 0.05
+far = 4000.0
+
+[sub_resource type="Resource" id="Resource_0nci0"]
+script = ExtResource("8_qepee")
+duration = 0.3
+transition = 8
+ease = 2
+
+[sub_resource type="Resource" id="Resource_u0lff"]
+script = ExtResource("5_1sgnu")
+cull_mask = 1048575
+h_offset = 0.0
+v_offset = 0.0
+projection = 0
+fov = 75.0
+size = 1.0
+frustum_offset = Vector2(0, 0)
+near = 0.05
+far = 4000.0
+
+[sub_resource type="Resource" id="Resource_50m5g"]
+script = ExtResource("8_qepee")
+duration = 1.2
+transition = 10
+ease = 2
+
+[sub_resource type="Resource" id="Resource_rexf8"]
+script = ExtResource("5_1sgnu")
+cull_mask = 1048575
+h_offset = 0.0
+v_offset = 0.0
+projection = 0
+fov = 75.0
+size = 1.0
+frustum_offset = Vector2(0, 0)
+near = 0.05
+far = 4000.0
+
+[node name="Root" type="Node3D"]
+
+[node name="Environment" type="Node" parent="."]
+
+[node name="DirectionalLight3D" type="DirectionalLight3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0, 8, 0)
+metadata/_edit_lock_ = true
+
+[node name="Floor" parent="Environment" instance=ExtResource("1_d55xf")]
+transform = Transform3D(1000, 0, 0, 0, 1, 0, 0, 0, 1000, 0, -1, 0)
+metadata/_edit_lock_ = true
+
+[node name="MainCamera3D" type="Camera3D" parent="."]
+unique_name_in_owner = true
+transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0.083587, 2.507, 4.05493)
+
+[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
+process_priority = 300
+process_physics_priority = 300
+script = ExtResource("2_d1opf")
+
+[node name="------------------" type="Node" parent="."]
+
+[node name="PlayerPhantomCamera3D" type="Node3D" parent="." node_paths=PackedStringArray("follow_target")]
+unique_name_in_owner = true
+transform = Transform3D(0.999889, 0, 0, 0, 0.707092, 0.707088, 0, -0.707092, 0.707088, 0.083587, 2.507, 4.05493)
+top_level = true
+script = ExtResource("3_4whss")
+priority = 3
+follow_mode = 2
+follow_target = NodePath("../PlayerCharacterBody3D2")
+tween_resource = ExtResource("4_8ap1e")
+tween_on_load = false
+camera_3d_resource = SubResource("Resource_0dtvs")
+follow_offset = Vector3(0, 2, 2)
+follow_damping = true
+
+[node name="PlayerCharacterBody3D2" parent="." instance=ExtResource("6_lr46m")]
+script = ExtResource("7_x1jex")
+
+[node name="-------------------" type="Node" parent="."]
+
+[node name="Tweening Example" type="Node3D" parent="."]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -1.97)
+
+[node name="Linear" type="Node3D" parent="Tweening Example"]
+
+[node name="EntryRoomTrigger" type="Area3D" parent="Tweening Example/Linear" node_paths=PackedStringArray("area_pcam")]
+priority = 5
+script = ExtResource("7_istoq")
+area_pcam = NodePath("../PhantomCamera3D")
+metadata/_edit_group_ = true
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Tweening Example/Linear/EntryRoomTrigger"]
+shape = SubResource("BoxShape3D_j6fha")
+
+[node name="NPCInteractionZoneMesh" type="MeshInstance3D" parent="Tweening Example/Linear/EntryRoomTrigger"]
+mesh = SubResource("BoxMesh_xg4en")
+skeleton = NodePath("../../../../..")
+surface_material_override/0 = SubResource("StandardMaterial3D_2dct5")
+metadata/_edit_group_ = true
+
+[node name="PhantomCamera3D" type="Node3D" parent="Tweening Example/Linear"]
+transform = Transform3D(1, 0, 0, 0, 0.642788, 0.766044, 0, -0.766044, 0.642788, 0, 4.8, 3.3)
+script = ExtResource("3_4whss")
+tween_resource = SubResource("Resource_v8ndi")
+camera_3d_resource = SubResource("Resource_kmep1")
+
+[node name="TweenNameLabel" type="Label3D" parent="Tweening Example/Linear"]
+transform = Transform3D(1, 0, 0, 0, 0.695913, 0.718126, 0, -0.718126, 0.695913, -1.8, 0.5, 0)
+text = "Transition Type:
+Linear
+
+Duration:
+0.6s"
+font = ExtResource("9_ptb3h")
+font_size = 48
+
+[node name="Sine" type="Node3D" parent="Tweening Example"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -7.4)
+
+[node name="EntryRoomTrigger" type="Area3D" parent="Tweening Example/Sine" node_paths=PackedStringArray("area_pcam")]
+priority = 5
+script = ExtResource("7_istoq")
+area_pcam = NodePath("../PhantomCamera3D")
+metadata/_edit_group_ = true
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Tweening Example/Sine/EntryRoomTrigger"]
+shape = SubResource("BoxShape3D_j6fha")
+
+[node name="NPCInteractionZoneMesh" type="MeshInstance3D" parent="Tweening Example/Sine/EntryRoomTrigger"]
+mesh = SubResource("BoxMesh_xg4en")
+skeleton = NodePath("../../../../..")
+surface_material_override/0 = SubResource("StandardMaterial3D_2dct5")
+metadata/_edit_group_ = true
+
+[node name="PhantomCamera3D" type="Node3D" parent="Tweening Example/Sine"]
+transform = Transform3D(1, 0, 0, 0, 0.642788, 0.766044, 0, -0.766044, 0.642788, 0, 4.8, 3.3)
+script = ExtResource("3_4whss")
+tween_resource = SubResource("Resource_uxg44")
+camera_3d_resource = SubResource("Resource_eu3bc")
+
+[node name="TweenNameLabel" type="Label3D" parent="Tweening Example/Sine"]
+transform = Transform3D(1, 0, 0, 0, 0.695913, 0.718126, 0, -0.718126, 0.695913, 1.7, 0.5, 0)
+text = "Transition Type:
+Sine
+
+Duration:
+0.3s"
+font = ExtResource("9_ptb3h")
+font_size = 72
+
+[node name="Circ" type="Node3D" parent="Tweening Example"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -14.1)
+
+[node name="EntryRoomTrigger" type="Area3D" parent="Tweening Example/Circ" node_paths=PackedStringArray("area_pcam")]
+priority = 5
+script = ExtResource("7_istoq")
+area_pcam = NodePath("../PhantomCamera3D")
+metadata/_edit_group_ = true
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Tweening Example/Circ/EntryRoomTrigger"]
+shape = SubResource("BoxShape3D_j6fha")
+
+[node name="NPCInteractionZoneMesh" type="MeshInstance3D" parent="Tweening Example/Circ/EntryRoomTrigger"]
+mesh = SubResource("BoxMesh_xg4en")
+skeleton = NodePath("../../../../..")
+surface_material_override/0 = SubResource("StandardMaterial3D_2dct5")
+metadata/_edit_group_ = true
+
+[node name="PhantomCamera3D" type="Node3D" parent="Tweening Example/Circ"]
+transform = Transform3D(1, 0, 0, 0, 0.642788, 0.766044, 0, -0.766044, 0.642788, 0, 4.8, 3.3)
+script = ExtResource("3_4whss")
+tween_resource = SubResource("Resource_0nci0")
+camera_3d_resource = SubResource("Resource_u0lff")
+
+[node name="TweenNameLabel" type="Label3D" parent="Tweening Example/Circ"]
+transform = Transform3D(1, 0, 0, 0, 0.695913, 0.718126, 0, -0.718126, 0.695913, -1.8, 0.5, 0)
+text = "Transition Type:
+Circ
+
+Duration:
+0.3s"
+font = ExtResource("9_ptb3h")
+font_size = 72
+
+[node name="Back" type="Node3D" parent="Tweening Example"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -21)
+
+[node name="EntryRoomTrigger" type="Area3D" parent="Tweening Example/Back" node_paths=PackedStringArray("area_pcam")]
+priority = 5
+script = ExtResource("7_istoq")
+area_pcam = NodePath("../PhantomCamera3D")
+metadata/_edit_group_ = true
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Tweening Example/Back/EntryRoomTrigger"]
+shape = SubResource("BoxShape3D_j6fha")
+
+[node name="NPCInteractionZoneMesh" type="MeshInstance3D" parent="Tweening Example/Back/EntryRoomTrigger"]
+mesh = SubResource("BoxMesh_xg4en")
+skeleton = NodePath("../../../../..")
+surface_material_override/0 = SubResource("StandardMaterial3D_2dct5")
+metadata/_edit_group_ = true
+
+[node name="PhantomCamera3D" type="Node3D" parent="Tweening Example/Back"]
+transform = Transform3D(1, 0, 0, 0, 0.642788, 0.766044, 0, -0.766044, 0.642788, -0.8, 4.8, 3.3)
+script = ExtResource("3_4whss")
+tween_resource = SubResource("Resource_50m5g")
+camera_3d_resource = SubResource("Resource_rexf8")
+
+[node name="TweenNameLabel" type="Label3D" parent="Tweening Example/Back"]
+transform = Transform3D(1, 0, 0, 0, 0.695913, 0.718126, 0, -0.718126, 0.695913, 1.7, 0.5, 0)
+text = "Transition Type:
+Back
+
+Duration:
+1.2s"
+font = ExtResource("9_ptb3h")
+font_size = 48
--- /dev/null
+[gd_scene load_steps=5 format=3 uid="uid://cb83in8f0tbb1"]
+
+[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/3D/player_controller.gd" id="1_tm04f"]
+
+[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_8efyg"]
+
+[sub_resource type="CapsuleMesh" id="CapsuleMesh_2cfaw"]
+
+[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_r3ldp"]
+albedo_color = Color(0.988235, 0.498039, 0.498039, 1)
+
+[node name="PlayerCharacterBody3D2" type="CharacterBody3D"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.083587, 0.507, 2.05493)
+script = ExtResource("1_tm04f")
+metadata/_edit_group_ = true
+
+[node name="PlayerArea3D" type="Area3D" parent="."]
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="PlayerArea3D"]
+shape = SubResource("CapsuleShape3D_8efyg")
+
+[node name="PlayerCollisionShape3D" type="CollisionShape3D" parent="."]
+shape = SubResource("CapsuleShape3D_8efyg")
+
+[node name="PlayerVisual" type="Node3D" parent="."]
+unique_name_in_owner = true
+
+[node name="PlayerModel" type="MeshInstance3D" parent="PlayerVisual"]
+mesh = SubResource("CapsuleMesh_2cfaw")
+skeleton = NodePath("../..")
+surface_material_override/0 = SubResource("StandardMaterial3D_r3ldp")
--- /dev/null
+[gd_scene load_steps=6 format=3 uid="uid://bhd1kwv2fwj1y"]
+
+[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/3D/player_controller_third_person.gd" id="1_5s24o"]
+
+[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_s61dn"]
+
+[sub_resource type="CapsuleMesh" id="CapsuleMesh_47f0o"]
+
+[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_mv4do"]
+albedo_color = Color(0.988235, 0.498039, 0.498039, 1)
+
+[sub_resource type="PrismMesh" id="PrismMesh_wg1x3"]
+size = Vector3(0.5, 0.5, 0.3)
+
+[node name="PlayerCharacterBody3D" type="CharacterBody3D"]
+transform = Transform3D(0.999903, 0.0139622, 0, -0.0139622, 0.999903, 0, 0, 0, 1, -0.0194088, 0.506884, -0.0163251)
+collision_layer = 2
+script = ExtResource("1_5s24o")
+metadata/_edit_group_ = true
+
+[node name="PlayerArea3D" type="Area3D" parent="."]
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="PlayerArea3D"]
+shape = SubResource("CapsuleShape3D_s61dn")
+
+[node name="PlayerCollisionShape3D" type="CollisionShape3D" parent="."]
+shape = SubResource("CapsuleShape3D_s61dn")
+
+[node name="PlayerVisual" type="Node3D" parent="."]
+unique_name_in_owner = true
+
+[node name="PlayerMeshInstance3D" type="MeshInstance3D" parent="PlayerVisual"]
+transform = Transform3D(1, 0, 0, 0, 1, 4.65661e-10, 0, 0, 1, 0, 0, 0)
+mesh = SubResource("CapsuleMesh_47f0o")
+skeleton = NodePath("../..")
+surface_material_override/0 = SubResource("StandardMaterial3D_mv4do")
+
+[node name="PlayerDirection" type="MeshInstance3D" parent="PlayerVisual"]
+unique_name_in_owner = true
+transform = Transform3D(1, 0, 0, -9.31323e-10, 1, 4.65661e-10, 2.98023e-08, 0, 1, -0.0156226, 1.08631, 0)
+mesh = SubResource("PrismMesh_wg1x3")
+skeleton = NodePath("../..")
+surface_material_override/0 = SubResource("StandardMaterial3D_mv4do")
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
+projection = 0
fov = 75.0
+size = 1.0
+frustum_offset = Vector2(0, 0)
+near = 0.05
+far = 4000.0
[sub_resource type="Resource" id="Resource_o161n"]
script = ExtResource("4_m2vbn")
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
+projection = 0
fov = 75.0
+size = 1.0
+frustum_offset = Vector2(0, 0)
+near = 0.05
+far = 4000.0
[sub_resource type="BoxMesh" id="BoxMesh_7tjw4"]
size = Vector3(2, 0.5, 4)
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
+projection = 0
fov = 75.0
+size = 1.0
+frustum_offset = Vector2(0, 0)
+near = 0.05
+far = 4000.0
[sub_resource type="BoxShape3D" id="BoxShape3D_wcrbb"]
size = Vector3(6.8, 0.1, 5.4)
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
+projection = 0
fov = 75.0
+size = 1.0
+frustum_offset = Vector2(0, 0)
+near = 0.05
+far = 4000.0
[sub_resource type="BoxShape3D" id="BoxShape3D_ctyr8"]
size = Vector3(7.4, 0.1, 3.6)
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
+projection = 0
fov = 75.0
+size = 1.0
+frustum_offset = Vector2(0, 0)
+near = 0.05
+far = 4000.0
[sub_resource type="BoxShape3D" id="BoxShape3D_ua072"]
size = Vector3(6.8, 0.1, 3.6)
[node name="MainCamera3D" type="Camera3D" parent="."]
unique_name_in_owner = true
-transform = Transform3D(0.999858, 0, 0, 0, 0.94884, 0.315632, 0, -0.315637, 0.948825, -2.53871, 2, 9.76232)
+transform = Transform3D(1, 0, 0, 0, 0.948876, 0.315649, 0, -0.315649, 0.948876, -2.53871, 2, 9.76232)
[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
+process_priority = 300
+process_physics_priority = 300
script = ExtResource("1_wn7ww")
[node name="PlayerGroup" type="Node" parent="."]
[node name="PlayerPhantomCamera3D" type="Node3D" parent="PlayerGroup" node_paths=PackedStringArray("follow_target")]
unique_name_in_owner = true
transform = Transform3D(0.999858, 0, 0, 0, 0.94884, 0.315632, 0, -0.315637, 0.948825, -2.53871, 2, 9.76232)
+top_level = true
script = ExtResource("2_y3dy8")
priority = 10
follow_mode = 2
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
+projection = 0
fov = 75.0
+size = 1.0
+frustum_offset = Vector2(0, 0)
+near = 0.05
+far = 4000.0
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_auy8m"]
albedo_texture = ExtResource("5_c0upu")
[node name="MainCamera3D" type="Camera3D" parent="."]
unique_name_in_owner = true
-transform = Transform3D(0.99995, 0, 0, 0, 0.79324, 0.608671, 0, -0.608675, 0.793235, 0.083587, 2.94168, 5.22787)
+transform = Transform3D(1, 0, 0, 0, 0.793353, 0.608762, 0, -0.608762, 0.793353, 0.083587, 2.94168, 5.22787)
[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
+process_priority = 300
+process_physics_priority = 300
script = ExtResource("1_7824u")
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
[node name="PlayerPhantomCamera3D" type="Node3D" parent="Player" node_paths=PackedStringArray("follow_target")]
unique_name_in_owner = true
transform = Transform3D(0.99995, 0, 0, 0, 0.79324, 0.608671, 0, -0.608675, 0.793235, 0.083587, 2.94168, 5.22787)
+top_level = true
script = ExtResource("2_g1bv4")
follow_mode = 5
follow_target = NodePath("../PlayerCharacterBody3D2/PlayerVisual")
camera_3d_resource = SubResource("Resource_wg1pr")
follow_damping = true
follow_distance = 4.0
-dead_zone_width = 0.384
-dead_zone_height = 0.669
+dead_zone_width = 0.161
+dead_zone_height = 0.386
show_viewfinder_in_play = true
spring_length = 4.0
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
+projection = 0
fov = 75.0
+size = 1.0
+frustum_offset = Vector2(0, 0)
+near = 0.05
+far = 4000.0
[sub_resource type="CapsuleMesh" id="CapsuleMesh_2h36r"]
[node name="MainCamera3D" type="Camera3D" parent="."]
unique_name_in_owner = true
-transform = Transform3D(0.999954, 0, 0, 0, 0.638683, 0.769345, 0, -0.769298, 0.638723, -5.60519e-45, 6.39, 7)
+transform = Transform3D(1, 0, 0, 0, 0.638767, 0.7694, 0, -0.7694, 0.638768, 0, 6.39, 7)
[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
+process_priority = 300
+process_physics_priority = 300
script = ExtResource("1_pmeux")
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
[node name="PlayerPhantomCamera3D" type="Node3D" parent="Player" node_paths=PackedStringArray("follow_target")]
unique_name_in_owner = true
-transform = Transform3D(0.999954, 0, 0, 0, 0.638683, 0.769345, 0, -0.769298, 0.638723, -5.60519e-45, 6.39, 7)
+transform = Transform3D(0.999954, 0, 0, 0, 0.638683, 0.769345, 0, -0.769298, 0.638723, 0, 6.39, 7)
+top_level = true
script = ExtResource("2_q1ygp")
priority = 5
follow_mode = 1
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
+projection = 0
fov = 75.0
+size = 1.0
+frustum_offset = Vector2(0, 0)
+near = 0.05
+far = 4000.0
[sub_resource type="CapsuleMesh" id="CapsuleMesh_2h36r"]
[node name="MainCamera3D" type="Camera3D" parent="."]
unique_name_in_owner = true
-transform = Transform3D(0.999954, 0, 0, 0, 0.906188, 0.422588, 0, -0.422562, 0.906243, -7.26116, 5.72974, 12.279)
+transform = Transform3D(1, 0, 0, 0, 0.906308, 0.422618, 0, -0.422618, 0.906308, -7.26116, 5.72974, 12.279)
[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
+process_priority = 300
+process_physics_priority = 300
script = ExtResource("3_wr1tj")
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
[node name="PlayerPhantomCamera3D" type="Node3D" parent="Player" node_paths=PackedStringArray("follow_targets")]
unique_name_in_owner = true
transform = Transform3D(0.999954, 0, 0, 0, 0.906188, 0.422588, 0, -0.422562, 0.906243, -7.26116, 5.72974, 12.279)
+top_level = true
script = ExtResource("2_pi7mp")
priority = 5
follow_mode = 3
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
+projection = 0
fov = 75.0
+size = 1.0
+frustum_offset = Vector2(0, 0)
+near = 0.05
+far = 4000.0
[sub_resource type="Resource" id="Resource_01tho"]
script = ExtResource("4_lfwkm")
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
+projection = 0
fov = 75.0
+size = 1.0
+frustum_offset = Vector2(0, 0)
+near = 0.05
+far = 4000.0
[sub_resource type="Curve3D" id="Curve3D_b33df"]
_data = {
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
+projection = 0
fov = 75.0
+size = 1.0
+frustum_offset = Vector2(0, 0)
+near = 0.05
+far = 4000.0
[sub_resource type="Curve3D" id="Curve3D_8uw2x"]
_data = {
[node name="MainCamera3D" type="Camera3D" parent="."]
unique_name_in_owner = true
-transform = Transform3D(0.999807, -0.00216249, 0.00184445, 0, 0.648836, 0.760728, -0.00284214, -0.760718, 0.648839, 0, 2.507, 1.5)
+transform = Transform3D(0.999996, -0.00216283, 0.00184472, 0, 0.648938, 0.760841, -0.00284268, -0.760838, 0.648936, 0, 2.507, 1.5)
[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
+process_priority = 300
+process_physics_priority = 300
script = ExtResource("1_lm5n8")
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
[node name="PlayerPhantomCamera3D" type="Node3D" parent="." node_paths=PackedStringArray("follow_target")]
unique_name_in_owner = true
transform = Transform3D(0.999807, -0.00216249, 0.00184445, 0, 0.648836, 0.760728, -0.00284214, -0.760718, 0.648839, 0, 2.507, 1.5)
+top_level = true
script = ExtResource("3_bd7x3")
priority = 10
follow_mode = 2
[node name="PathPhantomCamera3D" type="Node3D" parent="Paths" node_paths=PackedStringArray("follow_target", "follow_path")]
transform = Transform3D(-4.37114e-08, -1, -4.37114e-08, 0, -4.37114e-08, 1, -1, 4.37114e-08, 1.91069e-15, -0.31028, 7.9199, -1.60976)
+top_level = true
script = ExtResource("3_bd7x3")
priority = 2
follow_mode = 4
[node name="PathPhantomCamera3D2" type="Node3D" parent="Paths" node_paths=PackedStringArray("follow_target", "follow_path")]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 7.9199, -13.4572)
+top_level = true
visible = false
script = ExtResource("3_bd7x3")
priority = 2
-[gd_scene load_steps=14 format=3 uid="uid://buglvjwpn85ny"]
+[gd_scene load_steps=11 format=3 uid="uid://buglvjwpn85ny"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="1_3tok8"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_3d.gd" id="2_grjck"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="3_j3f4l"]
-[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/3D/player_controller.gd" id="3_uymu2"]
[ext_resource type="PackedScene" uid="uid://cixlwqycoox8h" path="res://addons/phantom_camera/examples/models/3d_cube_dark.tscn" id="4_4u2y6"]
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/camera_3d_resource.gd" id="4_sielv"]
[ext_resource type="Texture2D" uid="uid://c7ja4woxol8yc" path="res://addons/phantom_camera/examples/textures/3D/checker_pattern_dark.png" id="5_1tybo"]
+[ext_resource type="PackedScene" uid="uid://bulsh7s0ibmao" path="res://addons/phantom_camera/examples/example_scenes/3D/sub_scenes/playable_character_3d.tscn" id="5_7ywxt"]
[sub_resource type="Resource" id="Resource_28vpp"]
script = ExtResource("3_j3f4l")
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
+projection = 0
fov = 75.0
-
-[sub_resource type="CapsuleMesh" id="CapsuleMesh_pda7a"]
-
-[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_u74j7"]
-albedo_color = Color(0.988235, 0.498039, 0.498039, 1)
-
-[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_3xplc"]
+size = 1.0
+frustum_offset = Vector2(0, 0)
+near = 0.05
+far = 4000.0
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_auy8m"]
albedo_texture = ExtResource("5_1tybo")
[node name="MainCamera3D" type="Camera3D" parent="."]
unique_name_in_owner = true
-transform = Transform3D(0.999954, 0, 0, 0, 0.906188, 0.422588, 0, -0.422562, 0.906243, -13.1946, 2.34415, 10.4086)
+transform = Transform3D(1, 0, 0, 0, 0.906308, 0.422618, 0, -0.422618, 0.906308, -13.2122, 2.5, 10.4016)
[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
+process_priority = 300
+process_physics_priority = 300
script = ExtResource("1_3tok8")
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
[node name="PlayerPhantomCamera3D" type="Node3D" parent="Player" node_paths=PackedStringArray("follow_target")]
unique_name_in_owner = true
-transform = Transform3D(0.999954, 0, 0, 0, 0.906188, 0.422588, 0, -0.422562, 0.906243, -13.1946, 2.34415, 10.4086)
+transform = Transform3D(0.999954, 0, 0, 0, 0.906188, 0.422588, 0, -0.422562, 0.906243, -13.2122, 2.5, 10.4016)
+top_level = true
script = ExtResource("2_grjck")
priority = 10
follow_mode = 2
-follow_target = NodePath("../PlayerCharacterBody3D2")
+follow_target = NodePath("../PlayerCharacterBody3D/PlayerVisual")
tween_resource = SubResource("Resource_28vpp")
tween_on_load = false
camera_3d_resource = SubResource("Resource_axopo")
follow_offset = Vector3(0, 2, 2)
follow_damping = true
-[node name="PlayerCharacterBody3D2" type="CharacterBody3D" parent="Player"]
-unique_name_in_owner = true
-transform = Transform3D(0.999897, 0.0143636, 0, -0.0143636, 0.999897, 0, 0, 0, 1, -13.1946, 0.344147, 8.40857)
-script = ExtResource("3_uymu2")
-metadata/_edit_group_ = true
-
-[node name="PlayerModel" type="MeshInstance3D" parent="Player/PlayerCharacterBody3D2"]
+[node name="PlayerCharacterBody3D" parent="Player" instance=ExtResource("5_7ywxt")]
unique_name_in_owner = true
-mesh = SubResource("CapsuleMesh_pda7a")
-surface_material_override/0 = SubResource("StandardMaterial3D_u74j7")
-
-[node name="PlayerArea3D" type="Area3D" parent="Player/PlayerCharacterBody3D2"]
-
-[node name="CollisionShape3D" type="CollisionShape3D" parent="Player/PlayerCharacterBody3D2/PlayerArea3D"]
-shape = SubResource("CapsuleShape3D_3xplc")
-
-[node name="PlayerCollisionShape3D" type="CollisionShape3D" parent="Player/PlayerCharacterBody3D2"]
-shape = SubResource("CapsuleShape3D_3xplc")
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -13.2122, 0.5, 8.40162)
[node name="NPCs" type="Node" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.04727, 0.0440434, 8.36617)
use_collision = true
size = Vector3(4.57784, 1.08809, 3.11285)
+
+[editable path="Player/PlayerCharacterBody3D"]
--- /dev/null
+[gd_scene load_steps=21 format=3 uid="uid://5pjtxclcnx4f"]
+
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_3d.gd" id="1_s26cy"]
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="2_m2d6w"]
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/camera_3d_resource.gd" id="3_l7kg8"]
+[ext_resource type="PackedScene" uid="uid://mskcwn1a1v6d" path="res://addons/phantom_camera/examples/example_scenes/3D/sub_scenes/playable_character_third_person_3d.tscn" id="4_qcyfd"]
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="5_8von1"]
+[ext_resource type="PackedScene" uid="uid://cixlwqycoox8h" path="res://addons/phantom_camera/examples/models/3d_cube_dark.tscn" id="6_o1fj6"]
+[ext_resource type="FontFile" uid="uid://c4mm3of2mc8o5" path="res://addons/phantom_camera/fonts/Nunito-Black.ttf" id="7_amcmx"]
+[ext_resource type="Texture2D" uid="uid://c3mskbmvnpwux" path="res://addons/phantom_camera/examples/textures/3D/target.png" id="8_rjcgw"]
+
+[sub_resource type="Resource" id="Resource_8fhct"]
+script = ExtResource("2_m2d6w")
+duration = 0.3
+transition = 2
+ease = 1
+
+[sub_resource type="Resource" id="Resource_7m0fv"]
+script = ExtResource("3_l7kg8")
+cull_mask = 1048575
+h_offset = 0.0
+v_offset = 0.0
+projection = 0
+fov = 75.0
+size = 1.0
+frustum_offset = Vector2(0, 0)
+near = 0.05
+far = 4000.0
+
+[sub_resource type="CameraAttributesPractical" id="CameraAttributesPractical_i42vj"]
+dof_blur_far_enabled = true
+dof_blur_far_distance = 5.99
+dof_blur_near_enabled = true
+dof_blur_near_distance = 0.05
+dof_blur_amount = 0.21
+
+[sub_resource type="Resource" id="Resource_e7t18"]
+script = ExtResource("2_m2d6w")
+duration = 0.4
+transition = 2
+ease = 1
+
+[sub_resource type="Resource" id="Resource_jogxh"]
+script = ExtResource("3_l7kg8")
+cull_mask = 1048575
+h_offset = 1.0
+v_offset = 0.0
+projection = 0
+fov = 75.0
+size = 1.0
+frustum_offset = Vector2(0, 0)
+near = 0.05
+far = 4000.0
+
+[sub_resource type="CameraAttributesPractical" id="CameraAttributesPractical_fvhx5"]
+dof_blur_far_enabled = true
+dof_blur_far_distance = 31.1
+dof_blur_near_enabled = true
+dof_blur_near_distance = 1.79
+
+[sub_resource type="CameraAttributesPractical" id="CameraAttributesPractical_724n8"]
+dof_blur_far_enabled = true
+dof_blur_far_distance = 5.99
+dof_blur_near_enabled = true
+dof_blur_near_distance = 0.05
+dof_blur_amount = 0.21
+
+[sub_resource type="BoxMesh" id="BoxMesh_wsigl"]
+size = Vector3(1, 10, 20)
+
+[sub_resource type="Resource" id="Resource_afrr1"]
+script = ExtResource("2_m2d6w")
+duration = 0.6
+transition = 3
+ease = 1
+
+[sub_resource type="Resource" id="Resource_unpfd"]
+script = ExtResource("3_l7kg8")
+cull_mask = 1048575
+h_offset = 0.0
+v_offset = 0.0
+projection = 0
+fov = 75.0
+size = 1.0
+frustum_offset = Vector2(0, 0)
+near = 0.05
+far = 4000.0
+
+[sub_resource type="CylinderMesh" id="CylinderMesh_sm466"]
+top_radius = 1.51
+height = 0.2
+
+[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_hp48l"]
+transparency = 1
+albedo_texture = ExtResource("8_rjcgw")
+uv1_scale = Vector3(1.91, 1.91, 1.91)
+uv1_offset = Vector3(0.025, -0.927, 0)
+
+[node name="Root" type="Node3D"]
+
+[node name="PlayerPhantomCamera3D" type="Node3D" parent="." node_paths=PackedStringArray("follow_target")]
+unique_name_in_owner = true
+transform = Transform3D(1, 0, 0, 0, 0.866025, 0.499999, 0, -0.5, 0.866023, -0.0194088, 2.25688, 9.63713)
+script = ExtResource("1_s26cy")
+priority = 10
+follow_mode = 6
+follow_target = NodePath("../PlayerCharacterBody3D/PlayerVisual")
+tween_resource = SubResource("Resource_8fhct")
+tween_on_load = false
+camera_3d_resource = SubResource("Resource_7m0fv")
+attributes = SubResource("CameraAttributesPractical_i42vj")
+follow_damping = true
+follow_distance = 3.5
+spring_length = 3.5
+
+[node name="PlayerAimPhantomCamera3D" type="Node3D" parent="." node_paths=PackedStringArray("follow_target")]
+unique_name_in_owner = true
+transform = Transform3D(0.953716, -0.0418501, 0.297778, 0, 0.990266, 0.139173, -0.300705, -0.132731, 0.944432, 0.427258, 1.68564, 7.6237)
+script = ExtResource("1_s26cy")
+follow_mode = 6
+follow_target = NodePath("../PlayerCharacterBody3D/PlayerVisual")
+tween_resource = SubResource("Resource_e7t18")
+tween_on_load = false
+camera_3d_resource = SubResource("Resource_jogxh")
+attributes = SubResource("CameraAttributesPractical_fvhx5")
+follow_offset = Vector3(0, 0.97, -0.399)
+follow_damping_value = Vector3(0, 0, 0)
+follow_distance = 1.5
+spring_length = 1.5
+
+[node name="PlayerCharacterBody3D" parent="." instance=ExtResource("4_qcyfd")]
+unique_name_in_owner = true
+transform = Transform3D(0.999903, 0.0139622, 0, -0.0139622, 0.999903, 0, 0, 0, 1, -0.0194088, 0.506884, 6.60605)
+
+[node name="MainCamera3D" type="Camera3D" parent="."]
+unique_name_in_owner = true
+transform = Transform3D(1, 0, 0, 0, 0.866025, 0.5, 0, -0.5, 0.866025, -0.0194088, 2.25688, 9.63713)
+attributes = SubResource("CameraAttributesPractical_724n8")
+
+[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
+process_priority = 300
+process_physics_priority = 300
+script = ExtResource("5_8von1")
+
+[node name="Environment" type="Node" parent="."]
+
+[node name="Floor" parent="Environment" instance=ExtResource("6_o1fj6")]
+transform = Transform3D(1000, 0, 0, 0, 1, 0, 0, 0, 1000, 0, -1, 0)
+metadata/_edit_lock_ = true
+
+[node name="Wall" parent="Environment" instance=ExtResource("6_o1fj6")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.5, 4.5, 0)
+mesh = SubResource("BoxMesh_wsigl")
+metadata/_edit_lock_ = true
+
+[node name="Wall2" parent="Environment" instance=ExtResource("6_o1fj6")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9.5, 4.5, 0)
+mesh = SubResource("BoxMesh_wsigl")
+metadata/_edit_lock_ = true
+
+[node name="Wall3" parent="Environment" instance=ExtResource("6_o1fj6")]
+transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0, 4.5, 10.5)
+mesh = SubResource("BoxMesh_wsigl")
+metadata/_edit_lock_ = true
+
+[node name="Wall4" parent="Environment" instance=ExtResource("6_o1fj6")]
+transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0, 4.5, -9.5)
+mesh = SubResource("BoxMesh_wsigl")
+metadata/_edit_lock_ = true
+
+[node name="DirectionalLight3D" type="DirectionalLight3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0, 8, 0)
+metadata/_edit_lock_ = true
+
+[node name="CeilingPhantomCamera3D" type="Node3D" parent="."]
+unique_name_in_owner = true
+transform = Transform3D(-4.37114e-08, -1, 2.98023e-08, 0, 2.98023e-08, 1, -1, 4.37114e-08, -1.3027e-15, -0.200665, 13.366, -0.162648)
+script = ExtResource("1_s26cy")
+tween_resource = SubResource("Resource_afrr1")
+camera_3d_resource = SubResource("Resource_unpfd")
+
+[node name="MovementInstructionsLabel" type="Label3D" parent="."]
+transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0.0505604, -0.484909, 1.44357)
+visible = false
+modulate = Color(0.294118, 1, 0.631373, 1)
+text = "[WASD] to move"
+font = ExtResource("7_amcmx")
+font_size = 48
+
+[node name="MovementInstructionsLabel3" type="Label3D" parent="."]
+transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0.0505604, -0.484909, 0.817134)
+visible = false
+modulate = Color(0.294118, 1, 0.631373, 1)
+text = "[Right Mouse Click] to \"aim\""
+font = ExtResource("7_amcmx")
+font_size = 48
+
+[node name="MovementInstructionsLabel2" type="Label3D" parent="."]
+transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -0.0440154, -0.490478, -6.30248)
+visible = false
+modulate = Color(0.294118, 1, 0.631373, 1)
+text = "[Space] to toggle PCam"
+font = ExtResource("7_amcmx")
+font_size = 48
+
+[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
+transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0.260217, 1.60477, -9.07797)
+mesh = SubResource("CylinderMesh_sm466")
+surface_material_override/0 = SubResource("StandardMaterial3D_hp48l")
+
+[node name="MeshInstance3D3" type="MeshInstance3D" parent="."]
+transform = Transform3D(-1, -8.74228e-08, 3.82137e-15, 0, -4.37114e-08, -1, 8.74228e-08, -1, 4.37114e-08, 0.0525861, 1.60477, 9.98156)
+mesh = SubResource("CylinderMesh_sm466")
+surface_material_override/0 = SubResource("StandardMaterial3D_hp48l")
+
+[editable path="PlayerCharacterBody3D"]
[sub_resource type="Resource" id="Resource_8fhct"]
script = ExtResource("2_47xf2")
duration = 0.3
-transition = 3
+transition = 2
ease = 1
[sub_resource type="Resource" id="Resource_7m0fv"]
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
+projection = 0
fov = 75.0
+size = 1.0
+frustum_offset = Vector2(0, 0)
+near = 0.05
+far = 4000.0
[sub_resource type="Resource" id="Resource_e7t18"]
script = ExtResource("2_47xf2")
cull_mask = 1048575
h_offset = 1.0
v_offset = 0.0
+projection = 0
fov = 75.0
+size = 1.0
+frustum_offset = Vector2(0, 0)
+near = 0.05
+far = 4000.0
[sub_resource type="BoxMesh" id="BoxMesh_wsigl"]
size = Vector3(1, 10, 20)
transition = 3
ease = 1
-[sub_resource type="Resource" id="Resource_y5dqe"]
+[sub_resource type="Resource" id="Resource_ioijp"]
script = ExtResource("5_jt2lp")
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
+projection = 0
fov = 75.0
+size = 1.0
+frustum_offset = Vector2(0, 0)
+near = 0.05
+far = 4000.0
[node name="Root" type="Node3D"]
+[node name="PlayerCharacterBody3D" parent="." instance=ExtResource("7_kut0u")]
+unique_name_in_owner = true
+
[node name="PlayerPhantomCamera3D" type="Node3D" parent="." node_paths=PackedStringArray("follow_target")]
unique_name_in_owner = true
-transform = Transform3D(1, 0, 0, 0, 0.866025, 0.499999, 0, -0.5, 0.866023, -0.0194088, 2.25688, 3.01476)
+transform = Transform3D(1, 0, 0, 0, 0.866023, 0.499997, 0, -0.499999, 0.866021, -0.0194088, 2.25687, 3.01475)
script = ExtResource("2_whx47")
priority = 10
follow_mode = 6
follow_target = NodePath("../PlayerCharacterBody3D/PlayerVisual")
tween_resource = SubResource("Resource_8fhct")
-tween_on_load = null
+tween_on_load = false
camera_3d_resource = SubResource("Resource_7m0fv")
follow_damping = true
follow_distance = 3.5
[node name="PlayerAimPhantomCamera3D" type="Node3D" parent="." node_paths=PackedStringArray("follow_target")]
unique_name_in_owner = true
-transform = Transform3D(0.953716, -0.0104945, 0.300522, 0, 0.99939, 0.0348995, -0.300706, -0.0332842, 0.953135, 0.431374, 1.35923, 1.41338)
+transform = Transform3D(0.953716, -0.0104945, 0.300522, 0, 0.99939, 0.0348995, -0.300706, -0.0332842, 0.953135, 0.431374, 1.35923, 1.01438)
script = ExtResource("2_whx47")
follow_mode = 6
follow_target = NodePath("../PlayerCharacterBody3D/PlayerVisual")
tween_resource = SubResource("Resource_e7t18")
-tween_on_load = null
+tween_on_load = false
camera_3d_resource = SubResource("Resource_jogxh")
-follow_offset = Vector3(0, 0.8, 0)
-follow_damping = true
+follow_offset = Vector3(0, 0.8, -0.399)
follow_distance = 1.5
spring_length = 1.5
-[node name="PlayerCharacterBody3D" parent="." instance=ExtResource("7_kut0u")]
-unique_name_in_owner = true
-
[node name="MainCamera3D" type="Camera3D" parent="."]
unique_name_in_owner = true
-transform = Transform3D(1, 0, 0, 0, 0.866025, 0.499999, 0, -0.5, 0.866023, -0.0194088, 2.25688, 3.01476)
-current = true
+transform = Transform3D(1, 0, 0, 0, 0.866025, 0.5, 0, -0.5, 0.866025, -0.0194088, 2.25687, 3.01475)
[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
+process_priority = 300
+process_physics_priority = 300
script = ExtResource("5_oc4q1")
[node name="Environment" type="Node" parent="."]
transform = Transform3D(-4.37114e-08, -1, 2.98023e-08, 0, 2.98023e-08, 1, -1, 4.37114e-08, -1.3027e-15, -0.200665, 13.366, -0.162648)
script = ExtResource("2_whx47")
tween_resource = SubResource("Resource_afrr1")
-tween_on_load = null
-camera_3d_resource = SubResource("Resource_y5dqe")
+camera_3d_resource = SubResource("Resource_ioijp")
[node name="MovementInstructionsLabel" type="Label3D" parent="."]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0.0505604, -0.484909, 1.44357)
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
+projection = 0
fov = 75.0
+size = 1.0
+frustum_offset = Vector2(0, 0)
+near = 0.05
+far = 4000.0
[sub_resource type="CapsuleMesh" id="CapsuleMesh_2h36r"]
uv1_triplanar = true
uv1_world_triplanar = true
-[node name="Node3D" type="Node3D"]
+[node name="Root" type="Node3D"]
[node name="MainCamera3D" type="Camera3D" parent="."]
unique_name_in_owner = true
-transform = Transform3D(0.998682, 0.0324725, -0.0397495, 0, 0.774433, 0.632656, 0.0513272, -0.631822, 0.773413, -0.137901, 4.03222, 6.36446)
+transform = Transform3D(0.998682, 0.0324725, -0.0397495, 0, 0.774433, 0.632656, 0.0513272, -0.631822, 0.773412, -0.137901, 4.03222, 6.36446)
[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
-process_priority = 100
+process_priority = 300
+process_physics_priority = 300
script = ExtResource("1_lldvu")
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0, 8, 0)
metadata/_edit_lock_ = true
-[node name="PhantomCamera3D" type="Node3D" parent="." node_paths=PackedStringArray("look_at_target", "look_at_targets")]
+[node name="PhantomCamera3D" type="Node3D" parent="." node_paths=PackedStringArray("look_at_target")]
transform = Transform3D(0.998682, 0.0324725, -0.0397495, 0, 0.774433, 0.632656, 0.0513272, -0.631822, 0.773413, -0.137901, 4.03222, 6.36446)
script = ExtResource("2_8md3q")
priority = 10
look_at_mode = 2
look_at_target = NodePath("../PlayerCharacterBody3D2/PlayerVisual")
-look_at_targets = [null, NodePath("../NPCs/PlayerMeshInstance3D")]
tween_resource = SubResource("Resource_pwcgo")
tween_on_load = false
camera_3d_resource = SubResource("Resource_ft2w3")
look_at_damping = true
-look_at_damping_value = 0.1
[node name="PlayerCharacterBody3D2" parent="." instance=ExtResource("1_i2pjc")]
--- /dev/null
+[gd_scene load_steps=22 format=3 uid="uid://p7s5t3tthmo"]
+
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="1_ggfbg"]
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_3d.gd" id="2_dreow"]
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="3_f8fcw"]
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/camera_3d_resource.gd" id="4_mjtut"]
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/phantom_camera_noise_3d.gd" id="4_poyyk"]
+[ext_resource type="PackedScene" uid="uid://cixlwqycoox8h" path="res://addons/phantom_camera/examples/models/3d_cube_dark.tscn" id="5_d6uqs"]
+[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/3D/player_controller_first_person.gd" id="6_fbad7"]
+[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_noise_emitter_3d.gd" id="6_n8u0x"]
+[ext_resource type="Texture2D" uid="uid://c7ja4woxol8yc" path="res://addons/phantom_camera/examples/textures/3D/checker_pattern_dark.png" id="6_vpla5"]
+[ext_resource type="FontFile" uid="uid://dve7mgsjik4dg" path="res://addons/phantom_camera/fonts/Nunito-Regular.ttf" id="10_0thai"]
+[ext_resource type="FontFile" uid="uid://c4mm3of2mc8o5" path="res://addons/phantom_camera/fonts/Nunito-Black.ttf" id="11_i8r8q"]
+
+[sub_resource type="Resource" id="Resource_t3bgw"]
+script = ExtResource("4_poyyk")
+amplitude = 30.0
+frequency = 2.0
+randomize_noise_seed = 1
+noise_seed = 0
+rotational_noise = true
+positional_noise = false
+rotational_multiplier_x = 0.1
+rotational_multiplier_y = 0.1
+rotational_multiplier_z = 0.0
+positional_multiplier_x = 0.0
+positional_multiplier_y = 0.0
+positional_multiplier_z = 0.0
+
+[sub_resource type="CapsuleMesh" id="CapsuleMesh_yvgu3"]
+
+[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_vc6km"]
+albedo_color = Color(0.988235, 0.498039, 0.498039, 1)
+
+[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_lsrh7"]
+radius = 0.269454
+
+[sub_resource type="Resource" id="Resource_lhgur"]
+script = ExtResource("3_f8fcw")
+duration = 1.0
+transition = 0
+ease = 2
+
+[sub_resource type="Resource" id="Resource_ghjuj"]
+script = ExtResource("4_mjtut")
+cull_mask = 1048575
+h_offset = 0.0
+v_offset = 0.0
+projection = 0
+fov = 75.0
+size = 1.0
+frustum_offset = Vector2(0, 0)
+near = 0.05
+far = 4000.0
+
+[sub_resource type="Resource" id="Resource_2l4w0"]
+script = ExtResource("4_poyyk")
+amplitude = 40.0
+frequency = 0.2
+randomize_noise_seed = 0
+noise_seed = 0
+rotational_noise = true
+positional_noise = false
+rotational_multiplier_x = 1.0
+rotational_multiplier_y = 1.0
+rotational_multiplier_z = 0.0
+positional_multiplier_x = 0.1
+positional_multiplier_y = 0.1
+positional_multiplier_z = 0.1
+
+[sub_resource type="Resource" id="Resource_6tnhy"]
+script = ExtResource("4_poyyk")
+amplitude = 10.0
+frequency = 4.2
+randomize_noise_seed = 0
+noise_seed = 928
+rotational_noise = true
+positional_noise = false
+rotational_multiplier_x = 1.0
+rotational_multiplier_y = 1.0
+rotational_multiplier_z = 0.1
+positional_multiplier_x = 1.0
+positional_multiplier_y = 1.0
+positional_multiplier_z = 1.0
+
+[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_qi01t"]
+albedo_texture = ExtResource("6_vpla5")
+uv1_triplanar = true
+uv1_world_triplanar = true
+
+[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ey47a"]
+bg_color = Color(0.0784314, 0.109804, 0.129412, 1)
+border_width_right = 4
+border_width_bottom = 4
+border_color = Color(0.227451, 0.72549, 0.603922, 1)
+corner_radius_bottom_right = 20
+expand_margin_bottom = 6.0
+
+[node name="Root" type="Node3D"]
+
+[node name="MainCamera3D" type="Camera3D" parent="."]
+unique_name_in_owner = true
+transform = Transform3D(-0.0348243, 0.0245683, 0.999091, 0, 0.999698, -0.0245832, -0.999393, -0.000856094, -0.0348138, -16.46, 0.503767, 4.249)
+
+[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
+process_priority = 300
+process_physics_priority = 300
+script = ExtResource("1_ggfbg")
+
+[node name="PlayerCharacterBody3D" type="CharacterBody3D" parent="."]
+unique_name_in_owner = true
+transform = Transform3D(0.999897, 0.0143636, 0, -0.0143636, 0.999897, 0, 0, 0, 1, -16.46, 0.503767, 4.249)
+script = ExtResource("6_fbad7")
+run_noise = SubResource("Resource_t3bgw")
+
+[node name="PlayerVisual" type="MeshInstance3D" parent="PlayerCharacterBody3D"]
+unique_name_in_owner = true
+visible = false
+mesh = SubResource("CapsuleMesh_yvgu3")
+surface_material_override/0 = SubResource("StandardMaterial3D_vc6km")
+
+[node name="PlayerArea3D" type="Area3D" parent="PlayerCharacterBody3D"]
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="PlayerCharacterBody3D/PlayerArea3D"]
+shape = SubResource("CapsuleShape3D_lsrh7")
+
+[node name="PlayerCollisionShape3D" type="CollisionShape3D" parent="PlayerCharacterBody3D"]
+shape = SubResource("CapsuleShape3D_lsrh7")
+
+[node name="PlayerPhantomCamera3D" type="Node3D" parent="." node_paths=PackedStringArray("follow_target")]
+unique_name_in_owner = true
+transform = Transform3D(0.00441533, 0, 0.999915, 0, 0.999995, 0, -0.999923, 0, 0.00441529, -16.46, 0.503767, 4.249)
+top_level = true
+script = ExtResource("2_dreow")
+priority = 10
+follow_mode = 2
+follow_target = NodePath("../PlayerCharacterBody3D")
+tween_resource = SubResource("Resource_lhgur")
+tween_on_load = false
+camera_3d_resource = SubResource("Resource_ghjuj")
+noise = SubResource("Resource_2l4w0")
+noise_emitter_layer = 1
+
+[node name="PlayerPhantomCameraNoiseEmitter3D" type="Node3D" parent="."]
+unique_name_in_owner = true
+transform = Transform3D(-4.37085e-08, 0, 0.999925, 0, 0.999995, 0, -0.999933, 0, -4.37081e-08, -16.46, 0.503767, 4.249)
+script = ExtResource("6_n8u0x")
+noise = SubResource("Resource_6tnhy")
+duration = 0.1
+decay_time = 0.1
+
+[node name="Environment" type="Node" parent="."]
+
+[node name="Floor" parent="Environment" instance=ExtResource("5_d6uqs")]
+transform = Transform3D(1000, 0, 0, 0, 1, 0, 0, 0, 1000, 0, -1, 0)
+metadata/_edit_lock_ = true
+
+[node name="CSGBox3D" type="CSGBox3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.525, 6.539, 2.5)
+use_collision = true
+size = Vector3(178.429, 14.0773, 1)
+material = SubResource("StandardMaterial3D_qi01t")
+
+[node name="CSGBox3D3" type="CSGBox3D" parent="Environment"]
+transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 8.83707, 6.53866, -1.80739)
+use_collision = true
+size = Vector3(178.429, 14.0773, 1)
+material = SubResource("StandardMaterial3D_qi01t")
+
+[node name="CSGBox3D4" type="CSGBox3D" parent="Environment"]
+transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -38.9392, 6.53866, -1.80739)
+use_collision = true
+size = Vector3(178.429, 14.0773, 1)
+material = SubResource("StandardMaterial3D_qi01t")
+
+[node name="CSGBox3D2" type="CSGBox3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.525, 6.539, 6)
+use_collision = true
+size = Vector3(178.429, 14.0773, 1)
+material = SubResource("StandardMaterial3D_qi01t")
+
+[node name="DirectionalLight3D" type="DirectionalLight3D" parent="Environment"]
+transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0, 8, 0)
+metadata/_edit_lock_ = true
+
+[node name="EmitterTip" type="Panel" parent="."]
+unique_name_in_owner = true
+visible = false
+anchors_preset = -1
+anchor_right = 0.3
+anchor_bottom = 0.1
+theme_override_styles/panel = SubResource("StyleBoxFlat_ey47a")
+
+[node name="Guidance" type="RichTextLabel" parent="EmitterTip"]
+layout_mode = 1
+anchors_preset = -1
+anchor_top = 0.5
+anchor_right = 1.0
+anchor_bottom = 0.5
+grow_horizontal = 2
+grow_vertical = 2
+size_flags_vertical = 8
+theme_override_fonts/normal_font = ExtResource("10_0thai")
+theme_override_fonts/bold_font = ExtResource("11_i8r8q")
+theme_override_font_sizes/normal_font_size = 18
+theme_override_font_sizes/bold_font_size = 24
+bbcode_enabled = true
+text = "[center]Press [b]Q[/b] to trigger Noise Emitter"
+fit_content = true
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
+projection = 0
fov = 75.0
+size = 1.0
+frustum_offset = Vector2(0, 0)
+near = 0.05
+far = 4000.0
[sub_resource type="BoxShape3D" id="BoxShape3D_j6fha"]
size = Vector3(5, 0.1, 4)
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
+projection = 0
fov = 75.0
+size = 1.0
+frustum_offset = Vector2(0, 0)
+near = 0.05
+far = 4000.0
[sub_resource type="Resource" id="Resource_uxg44"]
script = ExtResource("6_wup4d")
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
+projection = 0
fov = 75.0
+size = 1.0
+frustum_offset = Vector2(0, 0)
+near = 0.05
+far = 4000.0
[sub_resource type="Resource" id="Resource_0nci0"]
script = ExtResource("6_wup4d")
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
+projection = 0
fov = 75.0
+size = 1.0
+frustum_offset = Vector2(0, 0)
+near = 0.05
+far = 4000.0
[sub_resource type="Resource" id="Resource_50m5g"]
script = ExtResource("6_wup4d")
cull_mask = 1048575
h_offset = 0.0
v_offset = 0.0
+projection = 0
fov = 75.0
+size = 1.0
+frustum_offset = Vector2(0, 0)
+near = 0.05
+far = 4000.0
[node name="Root" type="Node3D"]
[node name="MainCamera3D" type="Camera3D" parent="."]
unique_name_in_owner = true
-transform = Transform3D(0.999889, 0, 0, 0, 0.707092, 0.707088, 0, -0.707092, 0.707088, 0.083587, 2.507, 4.05493)
+transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0.083587, 2.507, 4.05493)
[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
+process_priority = 300
+process_physics_priority = 300
script = ExtResource("2_b2yrt")
[node name="------------------" type="Node" parent="."]
[node name="PlayerPhantomCamera3D" type="Node3D" parent="." node_paths=PackedStringArray("follow_target")]
unique_name_in_owner = true
transform = Transform3D(0.999889, 0, 0, 0, 0.707092, 0.707088, 0, -0.707092, 0.707088, 0.083587, 2.507, 4.05493)
+top_level = true
script = ExtResource("3_m2w30")
priority = 3
follow_mode = 2
--- /dev/null
+uid://d4insihf88cqw
--- /dev/null
+uid://cupi3if7b3l2e
--- /dev/null
+uid://b3oiv82uroykv
func _ready() -> void:
- _player_area2d.connect("body_shape_entered", _show_prompt)
- _player_area2d.connect("body_shape_exited", _hide_prompt)
+ _player_area2d.body_shape_entered.connect(_show_prompt)
+ _player_area2d.body_shape_exited.connect(_hide_prompt)
_ui_sign = owner.get_node("%UISign")
_interactive_UI = null
_interactive_object = InteractiveType.NONE
_active_pcam = null
-
--- /dev/null
+uid://7mcexsmtdhmj
@onready var _interaction_prompt: Panel = %InteractionPrompt
@onready var _ui_sign: Control
@onready var _dark_overlay: ColorRect = %DarkOverlay
+@onready var _noise_emitter: PhantomCameraNoiseEmitter2D
const KEY_STRINGNAME: StringName = "Key"
const ACTION_STRINGNAME: StringName = "Action"
func _ready() -> void:
- _player_area2d.connect("body_shape_entered", _show_prompt)
- _player_area2d.connect("body_shape_exited", _hide_prompt)
+ _player_area2d.body_shape_entered.connect(_show_prompt)
+ _player_area2d.body_shape_exited.connect(_hide_prompt)
_ui_sign = owner.get_node("%UISign")
_hide_interactive_node(_interactive_UI)
_interactive_node_logic()
+ if Input.is_physical_key_pressed(KEY_Q):
+ if get_node_or_null("%PlayerPhantomCameraNoiseEmitter2D"):
+ %PlayerPhantomCameraNoiseEmitter2D.emit()
+
func _show_interactive_node(UI: Control) -> void:
UI.modulate.a = 0
func _show_prompt(body_rid: RID, body: Node2D, body_shape_index: int, local_shape: int) -> void:
- if body is TileMap:
- var tile_map: TileMap = body
-
+ if body.is_class("TileMapLayer"): # TODO - Using string reference to support Godot 4.2
+ var tile_map := body
var tile_coords: Vector2i = tile_map.get_coords_for_body_rid(body_rid)
- var cell_data: TileData = tile_map.get_cell_tile_data(1, tile_coords)
+ var cell_data: TileData = tile_map.get_cell_tile_data(tile_coords)
if cell_data:
var cell_data_type: StringName = cell_data.get_custom_data("Type")
func _hide_prompt(body_rid: RID, body: Node2D, body_shape_index: int, local_shape: int) -> void:
- if body is TileMap:
- var tile_map: TileMap = body
+ if body.is_class("TileMapLayer"): # TODO - Using string reference to support Godot 4.2
+ var tile_map := body
var tile_coords: Vector2i = tile_map.get_coords_for_body_rid(body_rid)
- var cell_data: TileData = tile_map.get_cell_tile_data(1, tile_coords)
+ var cell_data: TileData = tile_map.get_cell_tile_data(tile_coords)
if cell_data:
_interaction_prompt.set_visible(false)
_interactive_UI = null
_interactive_object = InteractiveType.NONE
_active_pcam = null
-
--- /dev/null
+uid://c0hw1qepj2ii0
--- /dev/null
+uid://dre5kicdywurd
--- /dev/null
+uid://70uuot7hvdop
--- /dev/null
+uid://c17en7rr4yjwf
--- /dev/null
+uid://cqpmld6a0i40c
--- /dev/null
+extends CharacterBody3D
+
+@export var SPEED: float = 5.0
+@export var JUMP_VELOCITY: float = 4.5
+@export var enable_gravity = true
+
+@onready var _camera: Camera3D
+
+# Get the gravity from the project settings to be synced with RigidBody nodes.
+var gravity: float = 9.8
+
+var movement_enabled: bool = true
+
+const KEY_STRINGNAME: StringName = "Key"
+const ACTION_STRINGNAME: StringName = "Action"
+
+const INPUT_MOVE_UP_STRINGNAME: StringName = "move_up"
+const INPUT_MOVE_DOWM_STRINGNAME: StringName = "move_down"
+const INPUT_MOVE_LEFT_STRINGNAME: StringName = "move_left"
+const INPUT_MOVE_RIGHT_STRINGNAME: StringName = "move_right"
+
+var InputMovementDic: Dictionary = {
+ INPUT_MOVE_UP_STRINGNAME: {
+ KEY_STRINGNAME: KEY_W,
+ ACTION_STRINGNAME: INPUT_MOVE_UP_STRINGNAME
+ },
+ INPUT_MOVE_DOWM_STRINGNAME: {
+ KEY_STRINGNAME: KEY_S,
+ ACTION_STRINGNAME: INPUT_MOVE_DOWM_STRINGNAME
+ },
+ INPUT_MOVE_LEFT_STRINGNAME: {
+ KEY_STRINGNAME: KEY_A,
+ ACTION_STRINGNAME: INPUT_MOVE_LEFT_STRINGNAME
+ },
+ INPUT_MOVE_RIGHT_STRINGNAME: {
+ KEY_STRINGNAME: KEY_D,
+ ACTION_STRINGNAME: INPUT_MOVE_RIGHT_STRINGNAME
+ },
+}
+
+
+func _ready() -> void:
+ for input in InputMovementDic:
+ var key_val = InputMovementDic[input].get(KEY_STRINGNAME)
+ var action_val = InputMovementDic[input].get(ACTION_STRINGNAME)
+
+ _camera = owner.get_node("%MainCamera3D")
+
+ var movement_input = InputEventKey.new()
+ movement_input.physical_keycode = key_val
+ InputMap.add_action(action_val)
+ InputMap.action_add_event(action_val, movement_input)
+
+
+func _physics_process(delta: float) -> void:
+ # Add the gravity.
+ if enable_gravity and not is_on_floor():
+ velocity.y -= gravity * delta
+
+ if not movement_enabled: return
+
+ # Get the input direction and handle the movement/deceleration.
+ # As good practice, you should replace UI actions with custom gameplay actions.
+ var input_dir: Vector2 = Input.get_vector(
+ INPUT_MOVE_LEFT_STRINGNAME,
+ INPUT_MOVE_RIGHT_STRINGNAME,
+ INPUT_MOVE_UP_STRINGNAME,
+ INPUT_MOVE_DOWM_STRINGNAME
+ )
+
+ var direction: Vector3 = (transform.basis * Vector3(input_dir.x, 0, input_dir.y)).normalized()
+ if direction:
+ var move_dir: Vector3 = Vector3.ZERO
+ move_dir.x = direction.x
+ move_dir.z = direction.z
+
+ move_dir = move_dir.rotated(Vector3.UP, _camera.rotation.y).normalized()
+ velocity.x = move_dir.x * SPEED
+ velocity.z = move_dir.z * SPEED
+ else:
+ velocity.x = move_toward(velocity.x, 0, SPEED)
+ velocity.z = move_toward(velocity.z, 0, SPEED)
+
+ move_and_slide()
\ No newline at end of file
--- /dev/null
+uid://dwhk1i10b32ei
--- /dev/null
+extends "player_controller.gd"
+
+@onready var _player_pcam: PhantomCamera3D = %PlayerPhantomCamera3D
+
+@onready var _player_character: CharacterBody3D = %PlayerCharacterBody3D
+
+@export var mouse_sensitivity: float = 0.05
+
+@export var min_pitch: float = -89.9
+@export var max_pitch: float = 50
+
+@export var min_yaw: float = 0
+@export var max_yaw: float = 360
+
+@export var run_noise: PhantomCameraNoise3D
+
+func _ready() -> void:
+ super()
+ Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
+
+ if get_node_or_null("%PlayerPhantomCameraNoiseEmitter3D"):
+ %EmitterTip.visible = true
+
+
+func _physics_process(delta: float) -> void:
+ super(delta)
+
+
+func _unhandled_input(event: InputEvent) -> void:
+ if event is InputEventKey:
+ if get_node_or_null("%PlayerPhantomCameraNoiseEmitter3D"):
+ if event.keycode == KEY_Q and event.is_pressed():
+ %PlayerPhantomCameraNoiseEmitter3D.emit()
+
+ if event is InputEventMouseMotion:
+ var pcam_rotation_degrees: Vector3
+
+ # Assigns the current 3D rotation of the SpringArm3D node - so it starts off where it is in the editor
+ pcam_rotation_degrees = _player_pcam.rotation_degrees
+
+ # Change the X rotation
+ pcam_rotation_degrees.x -= event.relative.y * mouse_sensitivity
+
+ # Clamp the rotation in the X axis so it go over or under the target
+ pcam_rotation_degrees.x = clampf(pcam_rotation_degrees.x, min_pitch, max_pitch)
+
+ # Change the Y rotation value
+ pcam_rotation_degrees.y -= event.relative.x * mouse_sensitivity
+
+ # Sets the rotation to fully loop around its target, but witout going below or exceeding 0 and 360 degrees respectively
+ pcam_rotation_degrees.y = wrapf(pcam_rotation_degrees.y, min_yaw, max_yaw)
+
+ # Change the SpringArm3D node's rotation and rotate around its target
+ _player_pcam.rotation_degrees = pcam_rotation_degrees
--- /dev/null
+uid://1xkmomho8uqo
--- /dev/null
+extends "player_controller_4.4.gd"
+
+@onready var _player_pcam: PhantomCamera3D = %PlayerPhantomCamera3D
+
+@onready var _player_character: CharacterBody3D = %PlayerCharacterBody3D
+
+@export var mouse_sensitivity: float = 0.05
+
+@export var min_pitch: float = -89.9
+@export var max_pitch: float = 50
+
+@export var min_yaw: float = 0
+@export var max_yaw: float = 360
+
+@export var run_noise: PhantomCameraNoise3D
+
+func _ready() -> void:
+ super()
+ Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
+
+ if get_node_or_null("%PlayerPhantomCameraNoiseEmitter3D"):
+ %EmitterTip.visible = true
+
+
+func _physics_process(delta: float) -> void:
+ super(delta)
+
+
+func _unhandled_input(event: InputEvent) -> void:
+ if event is InputEventKey:
+ if get_node_or_null("%PlayerPhantomCameraNoiseEmitter3D"):
+ if event.keycode == KEY_Q and event.is_pressed():
+ %PlayerPhantomCameraNoiseEmitter3D.emit()
+
+ if event is InputEventMouseMotion:
+ var pcam_rotation_degrees: Vector3
+
+ # Assigns the current 3D rotation of the SpringArm3D node - so it starts off where it is in the editor
+ pcam_rotation_degrees = _player_pcam.rotation_degrees
+
+ # Change the X rotation
+ pcam_rotation_degrees.x -= event.relative.y * mouse_sensitivity
+
+ # Clamp the rotation in the X axis so it go over or under the target
+ pcam_rotation_degrees.x = clampf(pcam_rotation_degrees.x, min_pitch, max_pitch)
+
+ # Change the Y rotation value
+ pcam_rotation_degrees.y -= event.relative.x * mouse_sensitivity
+
+ # Sets the rotation to fully loop around its target, but witout going below or exceeding 0 and 360 degrees respectively
+ pcam_rotation_degrees.y = wrapf(pcam_rotation_degrees.y, min_yaw, max_yaw)
+
+ # Change the SpringArm3D node's rotation and rotate around its target
+ _player_pcam.rotation_degrees = pcam_rotation_degrees
--- /dev/null
+uid://6epjre2axgsh
func _ready() -> void:
super()
-
+
_player_pcam = owner.get_node("%PlayerPhantomCamera3D")
_aim_pcam = owner.get_node("%PlayerAimPhantomCamera3D")
_ceiling_pcam = owner.get_node("%CeilingPhantomCamera3D")
-
+
if _player_pcam.get_follow_mode() == _player_pcam.FollowMode.THIRD_PERSON:
Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
if _player_pcam.get_follow_mode() == _player_pcam.FollowMode.THIRD_PERSON:
var active_pcam: PhantomCamera3D
- if is_instance_valid(_aim_pcam):
- _set_pcam_rotation(_player_pcam, event)
- _set_pcam_rotation(_aim_pcam, event)
- if _player_pcam.get_priority() > _aim_pcam.get_priority():
- _toggle_aim_pcam(event)
- else:
- _toggle_aim_pcam(event)
+ _set_pcam_rotation(_player_pcam, event)
+ _set_pcam_rotation(_aim_pcam, event)
+ if _player_pcam.get_priority() > _aim_pcam.get_priority():
+ _toggle_aim_pcam(event)
+ else:
+ _toggle_aim_pcam(event)
if event is InputEventKey and event.pressed:
if event.keycode == KEY_SPACE:
--- /dev/null
+uid://tru1srjkculj
--- /dev/null
+extends "player_controller_4.4.gd"
+
+@onready var _player_pcam: PhantomCamera3D
+@onready var _aim_pcam: PhantomCamera3D
+@onready var _player_direction: Node3D = %PlayerDirection
+@onready var _ceiling_pcam: PhantomCamera3D
+
+@export var mouse_sensitivity: float = 0.05
+
+@export var min_pitch: float = -89.9
+@export var max_pitch: float = 50
+
+@export var min_yaw: float = 0
+@export var max_yaw: float = 360
+
+
+func _ready() -> void:
+ super()
+
+ _player_pcam = owner.get_node("%PlayerPhantomCamera3D")
+ _aim_pcam = owner.get_node("%PlayerAimPhantomCamera3D")
+ _ceiling_pcam = owner.get_node("%CeilingPhantomCamera3D")
+
+ if _player_pcam.get_follow_mode() == _player_pcam.FollowMode.THIRD_PERSON:
+ Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
+
+func _physics_process(delta: float) -> void:
+ super(delta)
+
+ if velocity.length() > 0.2:
+ var look_direction: Vector2 = Vector2(velocity.z, velocity.x)
+ _player_direction.rotation.y = look_direction.angle()
+
+
+func _unhandled_input(event: InputEvent) -> void:
+ if _player_pcam.get_follow_mode() == _player_pcam.FollowMode.THIRD_PERSON:
+ var active_pcam: PhantomCamera3D
+
+ _set_pcam_rotation(_player_pcam, event)
+ _set_pcam_rotation(_aim_pcam, event)
+ if _player_pcam.get_priority() > _aim_pcam.get_priority():
+ _toggle_aim_pcam(event)
+ else:
+ _toggle_aim_pcam(event)
+
+ if event is InputEventKey and event.pressed:
+ if event.keycode == KEY_SPACE:
+ if _ceiling_pcam.get_priority() < 30 and _player_pcam.is_active():
+ _ceiling_pcam.set_priority(30)
+ else:
+ _ceiling_pcam.set_priority(1)
+
+
+func _set_pcam_rotation(pcam: PhantomCamera3D, event: InputEvent) -> void:
+ if event is InputEventMouseMotion:
+ var pcam_rotation_degrees: Vector3
+
+ # Assigns the current 3D rotation of the SpringArm3D node - so it starts off where it is in the editor
+ pcam_rotation_degrees = pcam.get_third_person_rotation_degrees()
+
+ # Change the X rotation
+ pcam_rotation_degrees.x -= event.relative.y * mouse_sensitivity
+
+ # Clamp the rotation in the X axis so it go over or under the target
+ pcam_rotation_degrees.x = clampf(pcam_rotation_degrees.x, min_pitch, max_pitch)
+
+ # Change the Y rotation value
+ pcam_rotation_degrees.y -= event.relative.x * mouse_sensitivity
+
+ # Sets the rotation to fully loop around its target, but witout going below or exceeding 0 and 360 degrees respectively
+ pcam_rotation_degrees.y = wrapf(pcam_rotation_degrees.y, min_yaw, max_yaw)
+
+ # Change the SpringArm3D node's rotation and rotate around its target
+ pcam.set_third_person_rotation_degrees(pcam_rotation_degrees)
+
+
+func _toggle_aim_pcam(event: InputEvent) -> void:
+ if event is InputEventMouseButton \
+ and event.is_pressed() \
+ and event.button_index == 2 \
+ and (_player_pcam.is_active() or _aim_pcam.is_active()):
+ if _player_pcam.get_priority() > _aim_pcam.get_priority():
+ _aim_pcam.set_priority(30)
+ else:
+ _aim_pcam.set_priority(0)
--- /dev/null
+uid://b6luh4c44tv75
importer="texture"
type="CompressedTexture2D"
-uid="uid://ci76plsequlrq"
+uid="uid://cscjjt55iw2cu"
path="res://.godot/imported/player_sprite.svg-8862ecb19e12152eb892607676f3831f.ctex"
metadata={
"vram_texture": false
--- /dev/null
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://c3mskbmvnpwux"
+path.s3tc="res://.godot/imported/target.png-878c5e8d057c8a9a4c2322d4ab88e9ef.s3tc.ctex"
+metadata={
+"imported_formats": ["s3tc_bptc"],
+"vram_texture": true
+}
+
+[deps]
+
+source_file="res://addons/phantom_camera/examples/textures/3D/target.png"
+dest_files=["res://.godot/imported/target.png-878c5e8d057c8a9a4c2322d4ab88e9ef.s3tc.ctex"]
+
+[params]
+
+compress/mode=2
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=true
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=0
force_autohinter=false
hinting=1
subpixel_positioning=1
+keep_rounding_remainders=true
oversampling=0.0
Fallbacks=null
fallbacks=[]
force_autohinter=false
hinting=1
subpixel_positioning=1
+keep_rounding_remainders=true
oversampling=0.0
Fallbacks=null
fallbacks=[]
func _draw_frustum() -> PackedVector3Array:
var lines = PackedVector3Array()
-
+
var dis: float = 0.25
var width: float = dis * 1.25
var len: float = dis * 1.5
# lines.push_back(Vector3(0, 0, 0))
# lines.push_back(Vector3(0, 0, -len))
-
# Trapezoid
lines.push_back(Vector3(0, 0, 0))
lines.push_back(Vector3(-width, dis, -len))
-
+
lines.push_back(Vector3(0, 0, 0))
lines.push_back(Vector3(width, dis, -len))
-
+
lines.push_back(Vector3(0, 0, 0))
lines.push_back(Vector3(-width, -dis, -len))
-
+
lines.push_back(Vector3(0, 0, 0))
lines.push_back(Vector3(width, -dis, -len))
-
-
+
# Square
## Left
lines.push_back(Vector3(-width, dis, -len))
lines.push_back(Vector3(-width, -dis, -len))
-
+
## Bottom
lines.push_back(Vector3(-width, -dis, -len))
lines.push_back(Vector3(width, -dis, -len))
-
+
## Right
lines.push_back(Vector3(width, -dis, -len))
lines.push_back(Vector3(width, dis, -len))
-
+
## Top
lines.push_back(Vector3(width, dis, -len))
lines.push_back(Vector3(-width, dis, -len))
-
+
return lines
var icon: Material = get_material(_gizmo_name, gizmo)
gizmo.add_unscaled_billboard(icon, _gizmo_scale)
-
+
var material = get_material("main", gizmo)
gizmo.add_lines(_draw_frustum(), material)
--- /dev/null
+uid://cl0ecseb1s6ur
set_gizmo_name("PhantomCamera")
set_gizmo_spatial_script(_spatial_script)
set_gizmo_icon(_icon)
+
super()
--- /dev/null
+uid://cwxlqgwnno141
--- /dev/null
+extends EditorNode3DGizmoPlugin
+
+var _spatial_script: Script = preload("res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_noise_emitter_3d.gd")
+var _gizmo_icon: Texture2D = preload("res://addons/phantom_camera/icons/phantom_camera_noise_emitter_gizmo.svg")
+
+var _gizmo_name: StringName = "PhantomCameraNoiseEmitter"
+
+func _init() -> void:
+ create_material("main", Color8(252, 127, 127, 255))
+ create_handle_material("handles")
+ create_icon_material(_gizmo_name, _gizmo_icon, false, Color.WHITE)
+
+
+func _has_gizmo(node: Node3D):
+ return node.get_script() == _spatial_script
+
+
+func _get_gizmo_name() -> String:
+ return _gizmo_name
+
+
+func _redraw(gizmo: EditorNode3DGizmo):
+ gizmo.clear()
+
+ var icon: Material = get_material(_gizmo_name, gizmo)
+ gizmo.add_unscaled_billboard(icon, 0.035)
+
+ #var material = get_material("main", gizmo)
+ #gizmo.add_lines(_draw_frustum(), material)
--- /dev/null
+uid://cdj6uju71x3d3
importer="texture"
type="CompressedTexture2D"
-uid="uid://cmcvv0edbbpv4"
+uid="uid://dchkkx4v3ikpw"
path="res://.godot/imported/phantom_camera_2d.svg-e5483cbc858fc5f95f7210b1649dff0d.ctex"
metadata={
-"has_editor_variant": true,
"vram_texture": false
}
detect_3d/compress_to=1
svg/scale=1.0
editor/scale_with_editor_scale=false
-editor/convert_colors_with_editor_theme=true
+editor/convert_colors_with_editor_theme=false
importer="texture"
type="CompressedTexture2D"
-uid="uid://bf8bxgxx71qki"
+uid="uid://c71drpb8o4prn"
path="res://.godot/imported/phantom_camera_3d.svg-41ed612e834470377fb56eebffa083fe.ctex"
metadata={
-"has_editor_variant": true,
"vram_texture": false
}
detect_3d/compress_to=1
svg/scale=1.0
editor/scale_with_editor_scale=false
-editor/convert_colors_with_editor_theme=true
+editor/convert_colors_with_editor_theme=false
importer="texture"
type="CompressedTexture2D"
-uid="uid://dkpwb4k1bkbvn"
+uid="uid://dnaykbu6ue5lo"
path="res://.godot/imported/phantom_camera_camera_3d_resource.svg-f8bf8d1a5b7442fd6933bfbed999d57d.ctex"
metadata={
"vram_texture": false
--- /dev/null
+<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M4.20737 6.72531C4.07288 7.12565 4 7.55428 4 7.99993V15.4285C4 15.7441 4.25584 15.9999 4.57143 15.9999C4.88702 15.9999 5.14286 15.7441 5.14286 15.4285V14.8571C5.14286 14.5415 5.39869 14.2856 5.71429 14.2856C6.02988 14.2856 6.28571 14.5415 6.28571 14.8571V15.4285C6.28571 15.7441 6.54155 15.9999 6.85714 15.9999C7.17273 15.9999 7.42857 15.7441 7.42857 15.4285V14.8571C7.42857 14.5415 7.68441 14.2856 8 14.2856C8.31559 14.2856 8.57143 14.5415 8.57143 14.8571V15.4285C8.57143 15.7441 8.82727 15.9999 9.14286 15.9999C9.45845 15.9999 9.71429 15.7441 9.71429 15.4285V14.8571C9.71429 14.5415 9.97012 14.2856 10.2857 14.2856C10.6013 14.2856 10.8571 14.5415 10.8571 14.8571V15.4285C10.8571 15.7441 11.113 15.9999 11.4286 15.9999C11.7442 15.9999 12 15.7441 12 15.4285V7.99993C12 7.55428 11.9271 7.12565 11.7926 6.72531C11.3033 6.80803 10.7824 6.68305 10.3737 6.33932C9.94155 5.98919 9.39648 5.71892 8.83174 5.55757C7.96503 5.30994 6.85606 5.28531 5.63888 6.3286C5.22839 6.68046 4.70181 6.80889 4.20737 6.72531ZM6.65714 9.85708C7.13053 9.85708 7.51428 9.21748 7.51428 8.42851C7.51428 7.63953 7.13053 6.99993 6.65714 6.99993C6.18375 6.99993 5.8 7.63953 5.8 8.42851C5.8 9.21748 6.18375 9.85708 6.65714 9.85708ZM10.3714 8.42851C10.3714 9.21748 9.98768 9.85708 9.51429 9.85708C9.0409 9.85708 8.65715 9.21748 8.65715 8.42851C8.65715 7.63953 9.0409 6.99993 9.51429 6.99993C9.98768 6.99993 10.3714 7.63953 10.3714 8.42851Z" fill="#8DA5F3"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M1.91954 3.47492C1.65724 3.15433 1.7045 2.68181 2.02508 2.41952C5.00231 -0.0163955 8.01726 -0.0227006 10.2598 0.588913C11.3704 0.891779 12.2909 1.34435 12.9331 1.71964C13.3946 1.98933 13.5156 2.08203 13.9749 2.41952C14.2955 2.68181 14.3428 3.15433 14.0805 3.47491C13.8214 3.79151 13.3655 3.82367 13.0251 3.58045C12.0606 2.89141 11.015 2.34964 9.86517 2.03606C7.98275 1.52267 5.49771 1.51637 2.97494 3.58045C2.65435 3.84275 2.18183 3.7955 1.91954 3.47492ZM3.93056 5.48808C3.661 5.17359 3.69742 4.70011 4.01191 4.43054C5.99061 2.73452 8.0155 2.7244 9.51855 3.15384C10.2569 3.36479 10.8664 3.67911 11.2901 3.93847C11.5425 4.09305 11.6641 4.17969 11.9881 4.43054C12.3156 4.68411 12.339 5.17359 12.0695 5.48808C11.8004 5.80197 11.3282 5.83885 11.0137 5.57098L11.0126 5.57005L11.0109 5.5686C10.4595 5.11991 9.78652 4.79043 9.10647 4.59613C7.98452 4.27557 6.50941 4.26545 4.9881 5.56943C4.67361 5.839 4.20013 5.80257 3.93056 5.48808Z" fill="#8DA5F3"/>
+</svg>
--- /dev/null
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b2r7mhd780y8d"
+path="res://.godot/imported/phantom_camera_noise_emitter_2d.svg-1b3d37fe36964dc86a6ea6681d0772bb.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/phantom_camera/icons/phantom_camera_noise_emitter_2d.svg"
+dest_files=["res://.godot/imported/phantom_camera_noise_emitter_2d.svg-1b3d37fe36964dc86a6ea6681d0772bb.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=false
+editor/convert_colors_with_editor_theme=false
--- /dev/null
+<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M4.20737 6.72531C4.07288 7.12565 4 7.55428 4 7.99993V15.4285C4 15.7441 4.25584 15.9999 4.57143 15.9999C4.88702 15.9999 5.14286 15.7441 5.14286 15.4285V14.8571C5.14286 14.5415 5.39869 14.2856 5.71429 14.2856C6.02988 14.2856 6.28571 14.5415 6.28571 14.8571V15.4285C6.28571 15.7441 6.54155 15.9999 6.85714 15.9999C7.17273 15.9999 7.42857 15.7441 7.42857 15.4285V14.8571C7.42857 14.5415 7.68441 14.2856 8 14.2856C8.31559 14.2856 8.57143 14.5415 8.57143 14.8571V15.4285C8.57143 15.7441 8.82727 15.9999 9.14286 15.9999C9.45845 15.9999 9.71429 15.7441 9.71429 15.4285V14.8571C9.71429 14.5415 9.97012 14.2856 10.2857 14.2856C10.6013 14.2856 10.8571 14.5415 10.8571 14.8571V15.4285C10.8571 15.7441 11.113 15.9999 11.4286 15.9999C11.7442 15.9999 12 15.7441 12 15.4285V7.99993C12 7.55428 11.9271 7.12565 11.7926 6.72531C11.3033 6.80803 10.7824 6.68305 10.3737 6.33932C9.94155 5.98919 9.39648 5.71892 8.83174 5.55757C7.96503 5.30994 6.85606 5.28531 5.63888 6.3286C5.22839 6.68046 4.70181 6.80889 4.20737 6.72531ZM6.65714 9.85708C7.13053 9.85708 7.51428 9.21748 7.51428 8.42851C7.51428 7.63953 7.13053 6.99993 6.65714 6.99993C6.18375 6.99993 5.8 7.63953 5.8 8.42851C5.8 9.21748 6.18375 9.85708 6.65714 9.85708ZM10.3714 8.42851C10.3714 9.21748 9.98768 9.85708 9.51429 9.85708C9.0409 9.85708 8.65715 9.21748 8.65715 8.42851C8.65715 7.63953 9.0409 6.99993 9.51429 6.99993C9.98768 6.99993 10.3714 7.63953 10.3714 8.42851Z" fill="#FC7F7F"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M1.91954 3.47492C1.65724 3.15433 1.7045 2.68181 2.02508 2.41952C5.00231 -0.0163955 8.01726 -0.0227006 10.2598 0.588913C11.3704 0.891779 12.2909 1.34435 12.9331 1.71964C13.3946 1.98933 13.5156 2.08203 13.9749 2.41952C14.2955 2.68181 14.3428 3.15433 14.0805 3.47491C13.8214 3.79151 13.3655 3.82367 13.0251 3.58045C12.0606 2.89141 11.015 2.34964 9.86517 2.03606C7.98275 1.52267 5.49771 1.51637 2.97494 3.58045C2.65435 3.84275 2.18183 3.7955 1.91954 3.47492ZM3.93056 5.48808C3.661 5.17359 3.69742 4.70011 4.01191 4.43054C5.99061 2.73452 8.0155 2.7244 9.51855 3.15384C10.2569 3.36479 10.8664 3.67911 11.2901 3.93847C11.5425 4.09305 11.6641 4.17969 11.9881 4.43054C12.3156 4.68411 12.339 5.17359 12.0695 5.48808C11.8004 5.80197 11.3282 5.83885 11.0137 5.57098L11.0126 5.57005L11.0109 5.5686C10.4595 5.11991 9.78652 4.79043 9.10647 4.59613C7.98452 4.27557 6.50941 4.26545 4.9881 5.56943C4.67361 5.839 4.20013 5.80257 3.93056 5.48808Z" fill="#FC7F7F"/>
+</svg>
--- /dev/null
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cby76y7m6xn4f"
+path.s3tc="res://.godot/imported/phantom_camera_noise_emitter_3d.svg-9b90fe54aa618f65d52ac94515d41ea4.s3tc.ctex"
+metadata={
+"imported_formats": ["s3tc_bptc"],
+"vram_texture": true
+}
+
+[deps]
+
+source_file="res://addons/phantom_camera/icons/phantom_camera_noise_emitter_3d.svg"
+dest_files=["res://.godot/imported/phantom_camera_noise_emitter_3d.svg-9b90fe54aa618f65d52ac94515d41ea4.s3tc.ctex"]
+
+[params]
+
+compress/mode=2
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=true
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=0
+svg/scale=1.0
+editor/scale_with_editor_scale=false
+editor/convert_colors_with_editor_theme=false
--- /dev/null
+<svg width="128" height="128" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M33.659 53.8034C32.583 57.0062 32 60.4352 32 64.0004V123.429C32 125.954 34.0467 128 36.5714 128C39.0962 128 41.1429 125.954 41.1429 123.429V118.858C41.1429 116.333 43.1896 114.286 45.7143 114.286C48.239 114.286 50.2857 116.333 50.2857 118.858V123.429C50.2857 125.954 52.3324 128 54.8571 128C57.3819 128 59.4286 125.954 59.4286 123.429V118.858C59.4286 116.333 61.4753 114.286 64 114.286C66.5247 114.286 68.5714 116.333 68.5714 118.858V123.429C68.5714 125.954 70.6181 128 73.1429 128C75.6676 128 77.7143 125.954 77.7143 123.429V118.858C77.7143 116.333 79.761 114.286 82.2857 114.286C84.8104 114.286 86.8571 116.333 86.8571 118.858V123.429C86.8571 125.954 88.9038 128 91.4286 128C93.9533 128 96 125.954 96 123.429V64.0004C96 60.4352 95.417 57.0062 94.341 53.8034C90.4261 54.4652 86.2592 53.4654 82.9899 50.7155C79.5324 47.9145 75.1719 45.7524 70.6539 44.4615C63.7202 42.4805 54.8484 42.2835 45.1111 50.6298C41.8271 53.4446 37.6145 54.4721 33.659 53.8034ZM53.2571 78.8576C57.0442 78.8576 60.1143 73.7408 60.1143 67.429C60.1143 61.1172 57.0442 56.0004 53.2571 56.0004C49.47 56.0004 46.4 61.1172 46.4 67.429C46.4 73.7408 49.47 78.8576 53.2571 78.8576ZM82.9715 67.429C82.9715 73.7408 79.9014 78.8576 76.1143 78.8576C72.3272 78.8576 69.2572 73.7408 69.2572 67.429C69.2572 61.1172 72.3272 56.0004 76.1143 56.0004C79.9014 56.0004 82.9715 61.1172 82.9715 67.429Z" fill="#E0E0E0"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M15.3563 27.7993C13.2579 25.2347 13.6359 21.4545 16.2006 19.3561C40.0184 -0.131164 64.138 -0.181605 82.0787 4.7113C90.9628 7.13424 98.3276 10.7548 103.465 13.7572C107.157 15.9146 108.125 16.6562 111.799 19.3561C114.364 21.4545 114.742 25.2346 112.644 27.7993C110.571 30.3321 106.924 30.5894 104.201 28.6436C96.4849 23.1313 88.1197 18.7971 78.9213 16.2885C63.862 12.1814 43.9816 12.1309 23.7994 28.6436C21.2348 30.742 17.4546 30.364 15.3563 27.7993ZM31.4445 43.9046C29.2879 41.3887 29.5793 37.6009 32.0953 35.4444C47.9248 21.8762 64.1239 21.7952 76.1483 25.2307C82.0548 26.9183 86.9314 29.4329 90.3204 31.5078C92.3402 32.7444 93.3125 33.4375 95.9048 35.4443C98.525 37.4729 98.7121 41.3887 96.5556 43.9046C94.4032 46.4158 90.6258 46.7108 88.1098 44.5678L88.1011 44.5604L88.087 44.5488C83.676 40.9593 78.2921 38.3234 72.8517 36.769C63.8761 34.2046 52.0752 34.1236 39.9048 44.5554C37.3888 46.712 33.601 46.4206 31.4445 43.9046Z" fill="#E0E0E0"/>
+</svg>
--- /dev/null
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dw4iy855s0atm"
+path.s3tc="res://.godot/imported/phantom_camera_noise_emitter_gizmo.svg-9a593802655a8d5038c7f55deab3882d.s3tc.ctex"
+metadata={
+"imported_formats": ["s3tc_bptc"],
+"vram_texture": true
+}
+
+[deps]
+
+source_file="res://addons/phantom_camera/icons/phantom_camera_noise_emitter_gizmo.svg"
+dest_files=["res://.godot/imported/phantom_camera_noise_emitter_gizmo.svg-9a593802655a8d5038c7f55deab3882d.s3tc.ctex"]
+
+[params]
+
+compress/mode=2
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=true
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=0
+svg/scale=1.0
+editor/scale_with_editor_scale=false
+editor/convert_colors_with_editor_theme=false
--- /dev/null
+<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M12 6C12 3.79086 10.2091 2 8 2C5.79086 2 4 3.79086 4 6V13.4286C4 13.7442 4.25584 14 4.57143 14C4.88702 14 5.14286 13.7442 5.14286 13.4286V12.8571C5.14286 12.5416 5.39869 12.2857 5.71429 12.2857C6.02988 12.2857 6.28571 12.5416 6.28571 12.8571V13.4286C6.28571 13.7442 6.54155 14 6.85714 14C7.17273 14 7.42857 13.7442 7.42857 13.4286V12.8571C7.42857 12.5416 7.68441 12.2857 8 12.2857C8.31559 12.2857 8.57143 12.5416 8.57143 12.8571V13.4286C8.57143 13.7442 8.82727 14 9.14286 14C9.45845 14 9.71429 13.7442 9.71429 13.4286V12.8571C9.71429 12.5416 9.97012 12.2857 10.2857 12.2857C10.6013 12.2857 10.8571 12.5416 10.8571 12.8571V13.4286C10.8571 13.7442 11.113 14 11.4286 14C11.7442 14 12 13.7442 12 13.4286V6ZM7.51428 6.42857C7.51428 7.21755 7.13053 7.85714 6.65714 7.85714C6.18375 7.85714 5.8 7.21755 5.8 6.42857C5.8 5.63959 6.18375 5 6.65714 5C7.13053 5 7.51428 5.63959 7.51428 6.42857ZM9.51429 7.85714C9.98768 7.85714 10.3714 7.21755 10.3714 6.42857C10.3714 5.63959 9.98768 5 9.51429 5C9.0409 5 8.65715 5.63959 8.65715 6.42857C8.65715 7.21755 9.0409 7.85714 9.51429 7.85714Z" fill="#F5F5F5"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M12.6464 1.64645C12.8417 1.45118 13.1583 1.45118 13.3536 1.64645L14.6464 2.93934C15.2322 3.52513 15.2322 4.47487 14.6464 5.06066L14.0607 5.64645C13.8654 5.84171 13.8654 6.15829 14.0607 6.35355L14.6464 6.93934C15.2322 7.52513 15.2322 8.47487 14.6464 9.06066L14.0607 9.64645C13.8654 9.84171 13.8654 10.1583 14.0607 10.3536L14.6464 10.9393C15.2322 11.5251 15.2322 12.4749 14.6464 13.0607L13.3536 14.3536C13.1583 14.5488 12.8417 14.5488 12.6464 14.3536C12.4512 14.1583 12.4512 13.8417 12.6464 13.6464L13.9393 12.3536C14.1346 12.1583 14.1346 11.8417 13.9393 11.6464L13.3536 11.0607C12.7678 10.4749 12.7678 9.52513 13.3536 8.93934L13.9393 8.35355C14.1346 8.15829 14.1346 7.84171 13.9393 7.64645L13.3536 7.06066C12.7678 6.47487 12.7678 5.52513 13.3536 4.93934L13.9393 4.35355C14.1346 4.15829 14.1346 3.84171 13.9393 3.64645L12.6464 2.35355C12.4512 2.15829 12.4512 1.84171 12.6464 1.64645Z" fill="#F5F5F5"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M3.35355 1.64645C3.15829 1.45118 2.84171 1.45118 2.64645 1.64645L1.35355 2.93934C0.767766 3.52513 0.767767 4.47487 1.35355 5.06066L1.93934 5.64645C2.1346 5.84171 2.1346 6.15829 1.93934 6.35355L1.35355 6.93934C0.767766 7.52513 0.767767 8.47487 1.35355 9.06066L1.93934 9.64645C2.1346 9.84171 2.1346 10.1583 1.93934 10.3536L1.35355 10.9393C0.767766 11.5251 0.767767 12.4749 1.35355 13.0607L2.64645 14.3536C2.84171 14.5488 3.15829 14.5488 3.35355 14.3536C3.54882 14.1583 3.54882 13.8417 3.35355 13.6464L2.06066 12.3536C1.8654 12.1583 1.8654 11.8417 2.06066 11.6464L2.64645 11.0607C3.23223 10.4749 3.23223 9.52513 2.64645 8.93934L2.06066 8.35355C1.8654 8.15829 1.8654 7.84171 2.06066 7.64645L2.64645 7.06066C3.23223 6.47487 3.23223 5.52513 2.64645 4.93934L2.06066 4.35355C1.8654 4.15829 1.8654 3.84171 2.06066 3.64645L3.35355 2.35355C3.54882 2.15829 3.54882 1.84171 3.35355 1.64645Z" fill="#F5F5F5"/>
+</svg>
--- /dev/null
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://fudwitkewe70"
+path="res://.godot/imported/phantom_camera_noise_resource.svg-a81ed223714edd2c0d9cfa00be0c3f58.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/phantom_camera/icons/phantom_camera_noise_resource.svg"
+dest_files=["res://.godot/imported/phantom_camera_noise_resource.svg-a81ed223714edd2c0d9cfa00be0c3f58.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=false
+editor/convert_colors_with_editor_theme=false
--- /dev/null
+uid://5jmqowgdbq3x
--- /dev/null
+uid://cjcpn5ujqpnir
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_obaj6"]
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_fsxik"]
+[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_4b76l"]
+
+[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_yh38y"]
content_margin_left = 10.0
content_margin_top = 10.0
content_margin_right = 10.0
border_width_top = 4
border_width_right = 4
border_width_bottom = 4
-border_color = Color(0.227451, 0.72549, 0.603922, 1)
+border_color = Color(0.552941, 0.647059, 0.952941, 1)
corner_radius_top_left = 10
corner_radius_top_right = 10
corner_radius_bottom_right = 10
corner_radius_bottom_left = 10
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_yh38y"]
+[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_gci88"]
content_margin_left = 10.0
content_margin_top = 10.0
content_margin_right = 10.0
content_margin_bottom = 10.0
-bg_color = Color(0.129412, 0.407843, 0.337255, 1)
-border_width_left = 4
-border_width_top = 4
-border_width_right = 4
-border_width_bottom = 4
-border_color = Color(0.552941, 0.647059, 0.952941, 1)
+bg_color = Color(0.180392, 0.576471, 0.482353, 1)
corner_radius_top_left = 10
corner_radius_top_right = 10
corner_radius_bottom_right = 10
corner_radius_bottom_left = 10
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_gci88"]
+[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_fsxik"]
content_margin_left = 10.0
content_margin_top = 10.0
content_margin_right = 10.0
content_margin_bottom = 10.0
-bg_color = Color(0.180392, 0.576471, 0.482353, 1)
+bg_color = Color(0.129412, 0.407843, 0.337255, 1)
+border_width_left = 4
+border_width_top = 4
+border_width_right = 4
+border_width_bottom = 4
+border_color = Color(0.227451, 0.72549, 0.603922, 1)
corner_radius_top_left = 10
corner_radius_top_right = 10
corner_radius_bottom_right = 10
corner_radius_bottom_left = 10
-[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_4b76l"]
-
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_g5wua"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_x4bx8"]
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_agqdu"]
-bg_color = Color(0.72549, 0.227451, 0.34902, 1)
+[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_840sd"]
+
+[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ja3vm"]
+bg_color = Color(0.53, 0.1643, 0.255725, 1)
border_width_left = 2
border_width_top = 2
border_width_right = 2
corner_radius_bottom_right = 10
corner_radius_bottom_left = 10
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ja3vm"]
-bg_color = Color(0.53, 0.1643, 0.255725, 1)
+[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_mk273"]
+bg_color = Color(0.43, 0.1333, 0.207475, 1)
border_width_left = 2
border_width_top = 2
border_width_right = 2
corner_radius_bottom_right = 10
corner_radius_bottom_left = 10
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_mk273"]
-bg_color = Color(0.43, 0.1333, 0.207475, 1)
+[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_agqdu"]
+bg_color = Color(0.72549, 0.227451, 0.34902, 1)
border_width_left = 2
border_width_top = 2
border_width_right = 2
corner_radius_bottom_right = 10
corner_radius_bottom_left = 10
-[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_840sd"]
-
[node name="ViewfinderPanel" type="Control"]
clip_contents = true
custom_minimum_size = Vector2(0, 300)
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
+mouse_filter = 2
metadata/_edit_lock_ = true
[node name="SubViewportContainer" type="SubViewportContainer" parent="FramedViewfinder"]
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
+mouse_filter = 2
stretch = true
[node name="SubViewport" type="SubViewport" parent="FramedViewfinder/SubViewportContainer"]
unique_name_in_owner = true
handle_input_locally = false
+canvas_item_default_texture_filter = 0
gui_disable_input = true
size = Vector2i(1152, 648)
size_2d_override_stretch = true
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
+mouse_filter = 2
theme_override_constants/separation = 0
[node name="DeadZoneLeftHBoxContainer" type="VBoxContainer" parent="FramedViewfinder/DeadZoneHBoxContainer"]
clip_contents = true
layout_mode = 2
size_flags_horizontal = 3
+mouse_filter = 2
theme_override_constants/separation = 0
[node name="DeadZoneLeftTopPanel" type="Panel" parent="FramedViewfinder/DeadZoneHBoxContainer/DeadZoneLeftHBoxContainer"]
layout_mode = 2
size_flags_vertical = 3
+mouse_filter = 2
theme_override_styles/panel = ExtResource("2_uabt4")
[node name="DeadZoneLeftCenterPanel" type="Panel" parent="FramedViewfinder/DeadZoneHBoxContainer/DeadZoneLeftHBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
+mouse_filter = 2
theme_override_styles/panel = ExtResource("2_uabt4")
[node name="DeadZoneLeftBottomPanel" type="Panel" parent="FramedViewfinder/DeadZoneHBoxContainer/DeadZoneLeftHBoxContainer"]
layout_mode = 2
size_flags_vertical = 3
+mouse_filter = 2
theme_override_styles/panel = ExtResource("2_uabt4")
[node name="DeadZoneCenterHBoxContainer" type="VBoxContainer" parent="FramedViewfinder/DeadZoneHBoxContainer"]
clip_contents = true
layout_mode = 2
size_flags_horizontal = 4
+mouse_filter = 2
theme_override_constants/separation = 0
[node name="DeadZoneCenterTopPanel" type="Panel" parent="FramedViewfinder/DeadZoneHBoxContainer/DeadZoneCenterHBoxContainer"]
layout_mode = 2
size_flags_vertical = 3
+mouse_filter = 2
theme_override_styles/panel = ExtResource("2_uabt4")
[node name="DeadZoneCenterCenterPanel" type="Panel" parent="FramedViewfinder/DeadZoneHBoxContainer/DeadZoneCenterHBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
size_flags_vertical = 4
+mouse_filter = 2
theme_override_styles/panel = SubResource("StyleBoxFlat_fle8t")
[node name="DeadZoneCenterBottomPanel" type="Panel" parent="FramedViewfinder/DeadZoneHBoxContainer/DeadZoneCenterHBoxContainer"]
layout_mode = 2
size_flags_vertical = 3
+mouse_filter = 2
theme_override_styles/panel = ExtResource("2_uabt4")
[node name="DeadZoneRightHBoxContainer" type="VBoxContainer" parent="FramedViewfinder/DeadZoneHBoxContainer"]
clip_contents = true
layout_mode = 2
size_flags_horizontal = 3
+mouse_filter = 2
theme_override_constants/separation = 0
[node name="DeadZoneRightTopPanel" type="Panel" parent="FramedViewfinder/DeadZoneHBoxContainer/DeadZoneRightHBoxContainer"]
layout_mode = 2
size_flags_vertical = 3
+mouse_filter = 2
theme_override_styles/panel = ExtResource("2_uabt4")
[node name="DeadZoneRightCenterPanel" type="Panel" parent="FramedViewfinder/DeadZoneHBoxContainer/DeadZoneRightHBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
+mouse_filter = 2
theme_override_styles/panel = ExtResource("2_uabt4")
[node name="DeadZoneRightBottomPanel" type="Panel" parent="FramedViewfinder/DeadZoneHBoxContainer/DeadZoneRightHBoxContainer"]
layout_mode = 2
size_flags_vertical = 3
+mouse_filter = 2
theme_override_styles/panel = ExtResource("2_uabt4")
[node name="AspectRatioContainer" type="AspectRatioContainer" parent="FramedViewfinder"]
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
+mouse_filter = 2
ratio = 1.77778
[node name="CameraViewportPanel" type="Panel" parent="FramedViewfinder/AspectRatioContainer"]
layout_mode = 2
+mouse_filter = 2
theme_override_styles/panel = SubResource("StyleBoxFlat_xmo1t")
[node name="TargetPoint" type="Panel" parent="FramedViewfinder/AspectRatioContainer/CameraViewportPanel"]
offset_bottom = 3.0
grow_horizontal = 2
grow_vertical = 2
+mouse_filter = 2
theme_override_styles/panel = SubResource("StyleBoxFlat_q7vs4")
[node name="NoSupportMsg" type="Label" parent="."]
theme_override_colors/font_color = Color(1, 1, 1, 1)
theme_override_fonts/font = ExtResource("3_li3i3")
theme_override_font_sizes/font_size = 24
-theme_override_styles/normal = SubResource("StyleBoxFlat_fsxik")
+theme_override_styles/focus = SubResource("StyleBoxEmpty_4b76l")
theme_override_styles/hover = SubResource("StyleBoxFlat_yh38y")
theme_override_styles/pressed = SubResource("StyleBoxFlat_gci88")
-theme_override_styles/focus = SubResource("StyleBoxEmpty_4b76l")
+theme_override_styles/normal = SubResource("StyleBoxFlat_fsxik")
[node name="AddNodeTypeText" type="RichTextLabel" parent="EmptyStateControl/VBoxContainer/AddNodeButton"]
unique_name_in_owner = true
offset_right = 165.0
offset_bottom = 57.0
mouse_default_cursor_shape = 2
-theme_override_styles/normal = SubResource("StyleBoxFlat_agqdu")
+theme_override_styles/focus = SubResource("StyleBoxEmpty_840sd")
theme_override_styles/hover = SubResource("StyleBoxFlat_ja3vm")
theme_override_styles/pressed = SubResource("StyleBoxFlat_mk273")
-theme_override_styles/focus = SubResource("StyleBoxEmpty_840sd")
+theme_override_styles/normal = SubResource("StyleBoxFlat_agqdu")
[node name="PriorityOverrideIcon" type="TextureRect" parent="PriorityOverrideButton"]
layout_mode = 1
name="Phantom Camera"
description="Control the movement and dynamically tween 2D & 3D cameras positions. Built for Godot 4. Inspired by Cinemachine."
author="Marcus Skov"
-version="0.7.2.1"
+version="0.8.2.3"
script="plugin.gd"
const PCAM_HOST: String = "PhantomCameraHost"
const PCAM_2D: String = "PhantomCamera2D"
const PCAM_3D: String = "PhantomCamera3D"
+const PCAM_NOISE_EMITTER_2D: String = "PhantomCameraNoiseEmitter2D"
+const PCAM_NOISE_EMITTER_3D: String = "PhantomCameraNoiseEmitter3D"
-const Pcam3DPlugin = preload("res://addons/phantom_camera/gizmos/phantom_camera_gizmo_plugin_3d.gd")
-
-const EditorPanel = preload("res://addons/phantom_camera/panel/editor.tscn")
-
-const updater_constants := preload("res://addons/phantom_camera/scripts/panel/updater/updater_constants.gd")
-
+const PCam3DPlugin: Script = preload("res://addons/phantom_camera/gizmos/phantom_camera_gizmo_plugin_3d.gd")
+const PCam3DNoiseEmitterPlugin: Script = preload("res://addons/phantom_camera/gizmos/phantom_camera_noise_emitter_gizmo_plugin_3d.gd")
+const EditorPanel: PackedScene = preload("res://addons/phantom_camera/panel/editor.tscn")
+const updater_constants: Script = preload("res://addons/phantom_camera/scripts/panel/updater/updater_constants.gd")
const PHANTOM_CAMERA_MANAGER: StringName = "PhantomCameraManager"
#endregion
#region Variables
-var pcam_3D_gizmo_plugin = Pcam3DPlugin.new()
+var pcam_3d_gizmo_plugin = PCam3DPlugin.new()
+var pcam_3d_noise_emitter_gizmo_plugin = PCam3DNoiseEmitterPlugin.new()
var editor_panel_instance: Control
var panel_button: Button
#region Private Functions
func _enter_tree() -> void:
- add_autoload_singleton(PHANTOM_CAMERA_MANAGER, "res://addons/phantom_camera/scripts/managers/phantom_camera_manager.gd")
+ if not get_tree().root.get_node_or_null(String(PHANTOM_CAMERA_MANAGER)):
+ add_autoload_singleton(PHANTOM_CAMERA_MANAGER, "res://addons/phantom_camera/scripts/managers/phantom_camera_manager.gd")
# Phantom Camera Nodes
add_custom_type(PCAM_2D, "Node2D", preload("res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_2d.gd"), preload("res://addons/phantom_camera/icons/phantom_camera_2d.svg"))
add_custom_type(PCAM_3D, "Node3D", preload("res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_3d.gd"), preload("res://addons/phantom_camera/icons/phantom_camera_2d.svg"))
add_custom_type(PCAM_HOST, "Node", preload("res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd"), preload("res://addons/phantom_camera/icons/phantom_camera_2d.svg"))
-
+ add_custom_type(PCAM_NOISE_EMITTER_2D, "Node2D", preload("res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_noise_emitter_2d.gd"), preload("res://addons/phantom_camera/icons/phantom_camera_noise_emitter_2d.svg"))
+ add_custom_type(PCAM_NOISE_EMITTER_3D, "Node3D", preload("res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_noise_emitter_3d.gd"), preload("res://addons/phantom_camera/icons/phantom_camera_noise_emitter_3d.svg"))
# Phantom Camera 3D Gizmo
- add_node_3d_gizmo_plugin(pcam_3D_gizmo_plugin)
+ add_node_3d_gizmo_plugin(pcam_3d_gizmo_plugin)
+ add_node_3d_gizmo_plugin(pcam_3d_noise_emitter_gizmo_plugin)
# TODO - Should be disabled unless in editor
# Viewfinder
func _exit_tree() -> void:
- remove_custom_type(PCAM_2D)
- remove_custom_type(PCAM_3D)
- remove_custom_type(PCAM_HOST)
-
- remove_node_3d_gizmo_plugin(pcam_3D_gizmo_plugin)
+ panel_button.toggled.disconnect(_btn_toggled)
+ scene_changed.disconnect(editor_panel_instance.viewfinder.scene_changed)
+ scene_changed.disconnect(_scene_changed)
remove_control_from_bottom_panel(editor_panel_instance)
editor_panel_instance.queue_free()
-# if framed_viewfinder_panel_instance:
- scene_changed.disconnect(_scene_changed)
- remove_autoload_singleton(PHANTOM_CAMERA_MANAGER)
+ remove_node_3d_gizmo_plugin(pcam_3d_gizmo_plugin)
+ remove_node_3d_gizmo_plugin(pcam_3d_noise_emitter_gizmo_plugin)
- panel_button.toggled.disconnect(_btn_toggled)
- scene_changed.disconnect(editor_panel_instance.viewfinder.scene_changed)
- scene_changed.disconnect(_scene_changed)
+ remove_custom_type(PCAM_2D)
+ remove_custom_type(PCAM_3D)
+ remove_custom_type(PCAM_HOST)
+ remove_custom_type(PCAM_NOISE_EMITTER_2D)
+ remove_custom_type(PCAM_NOISE_EMITTER_3D)
-#func _has_main_screen():
-# return true;
+ if get_tree().root.get_node_or_null(String(PHANTOM_CAMERA_MANAGER)):
+ remove_autoload_singleton(PHANTOM_CAMERA_MANAGER)
func _make_visible(visible):
--- /dev/null
+uid://cmn6d5bco4fh4
const PHANTOM_CAMERA_CONSTS = preload("res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_constants.gd")
+
+signal noise_2d_emitted(noise_output: Transform2D, emitter_layer: int)
+signal noise_3d_emitted(noise_output: Transform3D, emitter_layer: int)
+
+
var phantom_camera_hosts: Array[PhantomCameraHost]:
get:
return _phantom_camera_host_list
return _phantom_camera_2d_list
var _phantom_camera_2d_list: Array[PhantomCamera2D]
-var phantom_camera_3ds: Array: ## Note: To support disable_3d export templates for 2D projects, this is purposely not strongly typed.
+var phantom_camera_3ds: Array[Node]: ## Note: To support disable_3d export templates for 2D projects, this is purposely not strongly typed.
get:
return _phantom_camera_3d_list
-var _phantom_camera_3d_list: Array ## Note: To support disable_3d export templates for 2D projects, this is purposely not strongly typed.
+var _phantom_camera_3d_list: Array[Node] ## Note: To support disable_3d export templates for 2D projects, this is purposely not strongly typed.
func _enter_tree():
func pcam_added(caller, host_slot: int = 0) -> void:
if is_instance_of(caller, PhantomCamera2D):
_phantom_camera_2d_list.append(caller)
- #print("Added PCam2D to PCamManager")
elif caller.is_class("PhantomCamera3D"): ## Note: To support disable_3d export templates for 2D projects, this is purposely not strongly typed.
_phantom_camera_3d_list.append(caller)
- #print("Added PCam3D to PCamManager")
if not _phantom_camera_host_list.is_empty():
_phantom_camera_host_list[host_slot].pcam_added_to_scene(caller)
--- /dev/null
+uid://bkupm4nr1ijkq
--- /dev/null
+uid://bugf1s8cx3jjv
# Convert a version number to an actually comparable number
func version_to_number(version: String) -> int:
+ var regex = RegEx.new()
+ regex.compile("[a-zA-Z]+")
+ if regex.search(str(version)): return 0
+
var bits = version.split(".")
var version_bit: int
var multiplier: int = 10000
--- /dev/null
+uid://daratdxrl2scr
--- /dev/null
+uid://c20k2jx7tvwt7
var ratio: float = viewport_width / viewport_height
aspect_ratio_container.set_ratio(ratio)
camera_viewport_panel.size.x = viewport_width / (viewport_height / sub_viewport.size.y)
+
+ ## Applies Project Settings to Viewport
+ sub_viewport.canvas_item_default_texture_filter = ProjectSettings.get_setting("rendering/textures/canvas_textures/default_texture_filter")
+
# TODO - Add resizer for Framed Viewfinder
_check_camera(root, camera_2d, true)
elif root is Node3D:
var camera_3d: Camera3D
-
if has_camera:
camera_3d = phantom_camera_host.camera_3d
- else:
- camera_3d = root.get_viewport().get_camera_3d()
+ elif root.get_viewport() != null:
+ if root.get_viewport().get_camera_3d() != null:
+ camera_3d = root.get_viewport().get_camera_3d()
_is_2d = false
is_scene = true
func _get_camera_2d() -> Camera2D:
- var camerasGroupName = "__cameras_%d" % EditorInterface.get_edited_scene_root().get_viewport().get_viewport_rid().get_id()
+ var edited_scene_root = EditorInterface.get_edited_scene_root()
+
+ if edited_scene_root == null: return null
+
+ var viewport = edited_scene_root.get_viewport()
+ if viewport == null: return null
+
+ var viewport_rid = viewport.get_viewport_rid()
+ if viewport_rid == null: return null
+
+ var camerasGroupName = "__cameras_%d" % viewport_rid.get_id()
var cameras = get_tree().get_nodes_in_group(camerasGroupName)
for camera in cameras:
if camera is Camera2D and camera.is_current:
return camera
+
return null
--- /dev/null
+uid://o4atxn3g6ivl
#endregion
-
#region Signals
## Emitted when the [param PhantomCamera2D] becomes active.
signal became_active
+
## Emitted when the [param PhantomCamera2D] becomes inactive.
signal became_inactive
## [b]Note:[/b] Only applicable in [param Framed] [enum FollowMode].
signal dead_zone_changed
+## Emitted when a target touches the edge of the dead zone in [param Framed] [enum FollowMode].
+signal dead_zone_reached(side: Vector2)
+
## Emitted when the [param Camera2D] starts to tween to another [param PhantomCamera2D].
signal tween_started
+
## Emitted when the [param Camera2D] is to tweening towards another [param PhantomCamera2D].
signal is_tweening
+
## Emitted when the tween is interrupted due to another [param PhantomCamera2D]
## becoming active. The argument is the [param PhantomCamera2D] that interrupted
## the tween.
signal tween_interrupted(pcam_2d: PhantomCamera2D)
+
## Emitted when the [param Camera2D] completes its tween to the
## [param PhantomCamera2D].
signal tween_completed
+## Emitted when Noise should be applied to the Camera2D.
+signal noise_emitted(noise_output: Transform2D)
+
+signal physics_target_changed
+
#endregion
#region Enums
-## Determines the positional logic for a given [param PCamPhantomCamera2D]
+## Determines the positional logic for a given [param PhantomCamera2D]
## [br][br]
## The different modes have different functionalities and purposes, so choosing
## the correct one depends on what each [param PhantomCamera2D] is meant to do.
# EXPONENTIALLY,
}
-#endregion
-
-#region Variables
+enum FollowLockAxis {
+ NONE = 0,
+ X = 1,
+ Y = 2,
+ XY = 3,
+}
-var _is_active: bool = false
+#endregion
-## The [PhantomCameraHost] that owns this [param PhantomCamera2D].
-var pcam_host_owner: PhantomCameraHost = null:
- set = set_pcam_host_owner,
- get = get_pcam_host_owner
+#region Exported Properties
## To quickly preview a [param PhantomCamera2D] without adjusting its
## [member priority], this property allows the selected PCam to ignore the
set(value):
follow_mode = value
- if value == FollowMode.FRAMED:
+ if follow_mode == FollowMode.NONE:
+ _should_follow = false
+ top_level = false
+ _is_parents_physics()
+ notify_property_list_changed()
+ return
+
+ match follow_mode:
+ FollowMode.PATH:
+ if is_instance_valid(follow_path):
+ _should_follow_checker()
+ FollowMode.GROUP:
+ _follow_targets_size_check()
+ _:
+ _should_follow_checker()
+
+ if follow_mode == FollowMode.FRAMED:
if _follow_framed_initial_set and follow_target:
_follow_framed_initial_set = false
dead_zone_changed.connect(_on_dead_zone_changed)
if dead_zone_changed.is_connected(_on_dead_zone_changed):
dead_zone_changed.disconnect(_on_dead_zone_changed)
- if follow_mode == FollowMode.NONE:
- _should_follow = false
- elif follow_mode == FollowMode.GROUP and follow_targets or follow_target:
- _should_follow = true
+ top_level = true
notify_property_list_changed()
get:
return follow_mode
-
## Determines which target should be followed.
## The [param Camera2D] will follow the position of the Follow Target
## based on the [member follow_mode] type and its parameters.
@export var follow_target: Node2D = null:
set = set_follow_target,
get = get_follow_target
-var _should_follow: bool = false
-var _follow_framed_offset: Vector2 = Vector2.ZERO
-var _follow_target_physics_based: bool = false
-var _physics_interpolation_enabled = false # NOTE - Enable for Godot 4.3 and when PhysicsInterpolationMode bug is resolved
### Defines the targets that the [param PhantomCamera2D] should be following.
@export var follow_targets: Array[Node2D] = []:
set = set_follow_targets,
get = get_follow_targets
-var _has_multiple_follow_targets: bool = false
-
## Determines the [Path2D] the [param PhantomCamera2D]
## should be bound to.
@export var follow_path: Path2D = null:
set = set_follow_path,
get = get_follow_path
-var _has_follow_path: bool = false
## Applies a zoom level to the [param PhantomCamera2D], which effectively
## overrides the [param zoom] property of the [param Camera2D] node.
@export var tween_resource: PhantomCameraTween = PhantomCameraTween.new():
set = set_tween_resource,
get = get_tween_resource
-var _has_tweened: bool = false
-## If enabled, the moment a [param PhantomCamera3D] is instantiated into
+## If enabled, the moment a [param PhantomCamera2D] is instantiated into
## a scene, and has the highest priority, it will perform its tween transition.
-## This is most obvious if a [param PhantomCamera3D] has a long duration and
+## This is most obvious if a [param PhantomCamera2D] has a long duration and
## is attached to a playable character that can be moved the moment a scene
## is loaded. Disabling the [param tween_on_load] property will
## disable this behaviour and skip the tweening entirely when instantiated.
@export var follow_damping_value: Vector2 = Vector2(0.1, 0.1):
set = set_follow_damping_value,
get = get_follow_damping_value
-var _velocity_ref: Vector2 = Vector2.ZERO # Stores and applies the velocity of the movement
+
+
+## Prevents the [param PhantomCamera2D] from moving in a designated axis.
+## This can be enabled or disabled at runtime or from the editor directly.
+@export var follow_axis_lock: FollowLockAxis = FollowLockAxis.NONE:
+ set = set_lock_axis,
+ get = get_lock_axis
+var _follow_axis_is_locked: bool = false
+var _follow_axis_lock_value: Vector2 = Vector2.ZERO
+
@export_subgroup("Follow Group")
## Enables the [param PhantomCamera2D] to dynamically zoom in and out based on
## [param dead zones] will never be visible in build exports.
@export var show_viewfinder_in_play: bool = false
-## Defines the position of the [member follow_target] within the viewport.[br]
-## This is only used for when [member follow_mode] is set to [param Framed].
-var viewport_position: Vector2
-var _follow_framed_initial_set: bool = false
-
@export_group("Limit")
## Shows the [param Camera2D]'s built-in limit border.[br]
get:
return _draw_limits
-static var _draw_limits: bool
-
-var _limit_sides: Vector4i
-var _limit_sides_default: Vector4i = Vector4i(-10000000, -10000000, 10000000, 10000000)
## Defines the left side of the [param Camera2D] limit.
## The camera will not be able to move past this point.
@export var limit_left: int = -10000000:
set = set_limit_bottom,
get = get_limit_bottom
-## Allows for setting either a [TileMap] or [CollisionShape2D] node to
+## Allows for setting either a [TileMap], [TileMapLayer] or [CollisionShape2D] node to
## automatically apply a limit size instead of manually adjusting the Left,
## Top, Right and Left properties.[br][br]
-## [b]TileMap[/b][br]
-## The Limit will update after the [TileSet] of the [TileMap] has changed.[br]
+## [b]TileMap / TileMapLayer[/b][br]
+## The Limit will update after the [TileSet] of the [TileMap] / [TileMapLayer] has changed.[br]
## [b]Note:[/b] The limit size will only update after closing the TileMap editor
## bottom panel.
## [br][br]
## [b]CollisionShape2D[/b][br]
## The limit will update in realtime as the Shape2D changes its size.
## Note: For performance reasons, resizing the [Shape2D] during runtime will not change the Limits sides.
-@export_node_path("TileMap", "CollisionShape2D") var limit_target = NodePath(""):
+@export_node_path("TileMap", "Node2D", "CollisionShape2D") var limit_target: NodePath = NodePath(""):
set = set_limit_target,
get = get_limit_target
-var _limit_node: Node2D
-## Applies an offset to the [TileMap] Limit or [Shape2D] Limit.
+
+## Applies an offset to the [TileMap]/[TileMapLayer] Limit or [Shape2D] Limit.
## The values goes from [param Left], [param Top], [param Right]
## and [param Bottom].
@export var limit_margin: Vector4i:
#@export var limit_smoothed: bool = false: # TODO - Needs proper support
#set = set_limit_smoothing,
#get = get_limit_smoothing
+
+@export_group("Noise")
+## Applies a noise, or shake, to a [Camera2D].[br]
+## Once set, the noise will run continuously after the tween to the [PhantomCamera2D] is complete.
+@export var noise: PhantomCameraNoise2D:
+ set = set_noise,
+ get = get_noise
+
+## If true, will trigger the noise while in the editor.[br]
+## Useful in cases where you want to temporarily disable the noise in the editor without removing
+## the resource.[br][br]
+## [b]Note:[/b] This property has no effect on runtime behaviour.
+@export var _preview_noise: bool = true:
+ set(value):
+ _preview_noise = value
+ if not value:
+ _transform_noise = Transform2D()
+
+## Enable a corresponding layer for a [member PhantomCameraNoiseEmitter2D.noise_emitter_layer]
+## to make this [PhantomCamera2D] be affect by it.
+@export_flags_2d_render var noise_emitter_layer: int:
+ set = set_noise_emitter_layer,
+ get = get_noise_emitter_layer
+
+#region Private Variables
+
+var _is_active: bool = false
+
+## The [PhantomCameraHost] that owns this [param PhantomCamera2D].
+var pcam_host_owner: PhantomCameraHost = null:
+ set = set_pcam_host_owner,
+ get = get_pcam_host_owner
+
+var _should_follow: bool = false
+var _follow_framed_offset: Vector2 = Vector2.ZERO
+var _follow_target_physics_based: bool = false
+var _physics_interpolation_enabled: bool = false # NOTE - Enable for Godot 4.3 and when PhysicsInterpolationMode bug is resolved
+
+var _has_multiple_follow_targets: bool = false
+var _follow_targets_single_target_index: int = 0
+var _follow_targets: Array[Node2D]
+
+var _follow_velocity_ref: Vector2 = Vector2.ZERO # Stores and applies the velocity of the movement
+
+var _has_follow_path: bool = false
+
+var _tween_skip: bool = false
+
+## Defines the position of the [member follow_target] within the viewport.[br]
+## This is only used for when [member follow_mode] is set to [param Framed].
+var _follow_framed_initial_set: bool = false
+
+static var _draw_limits: bool
+
+var _limit_sides: Vector4i
+var _limit_sides_default: Vector4i = Vector4i(-10000000, -10000000, 10000000, 10000000)
+
+var _limit_node: Node2D
+
var _limit_inactive_pcam: bool
-#endregion
+var _transform_output: Transform2D
+var _transform_noise: Transform2D
+
+var _has_noise_resource: bool = false
# NOTE - Temp solution until Godot has better plugin autoload recognition out-of-the-box.
var _phantom_camera_manager: Node
+#endregion
+
+#region Public Variables
+
+var tween_duration: float:
+ set = set_tween_duration,
+ get = get_tween_duration
+var tween_transition: PhantomCameraTween.TransitionType:
+ set = set_tween_transition,
+ get = get_tween_transition
+var tween_ease: PhantomCameraTween.EaseType:
+ set = set_tween_ease,
+ get = get_tween_ease
+
+var viewport_position: Vector2
+
+#endregion
+
+#region Property Validator
func _validate_property(property: Dictionary) -> void:
################
####################
## Follow Parameters
####################
-
-
if follow_mode == FollowMode.NONE:
match property.name:
"follow_offset", \
"auto_zoom":
property.usage = PROPERTY_USAGE_NO_EDITOR
- if not auto_zoom:
- match property.name:
- "auto_zoom_min", \
- "auto_zoom_max", \
- "auto_zoom_margin":
- property.usage = PROPERTY_USAGE_NO_EDITOR
+ if not auto_zoom or follow_mode != FollowMode.GROUP:
+ match property.name:
+ "auto_zoom_min", \
+ "auto_zoom_max", \
+ "auto_zoom_margin":
+ property.usage = PROPERTY_USAGE_NO_EDITOR
################
## Follow Framed
#######
## Zoom
#######
- if property.name == "zoom" and auto_zoom:
+ if property.name == "zoom" and follow_mode == FollowMode.GROUP and auto_zoom:
property.usage = PROPERTY_USAGE_NO_EDITOR
########
if property.name == "frame_preview" and _is_active:
property.usage |= PROPERTY_USAGE_READ_ONLY
- notify_property_list_changed()
-
#region Private Functions
func _enter_tree() -> void:
+ _should_follow_checker()
+ if follow_mode == FollowMode.GROUP:
+ _follow_targets_size_check()
+ elif follow_mode == FollowMode.NONE:
+ _is_parents_physics()
+
+ if not visibility_changed.is_connected(_check_visibility):
+ visibility_changed.connect(_check_visibility)
+
_phantom_camera_manager = get_tree().root.get_node(_constants.PCAM_MANAGER_NODE_NAME)
_phantom_camera_manager.pcam_added(self)
update_limit_all_sides()
func _exit_tree() -> void:
- _phantom_camera_manager.pcam_removed(self)
+ if is_instance_valid(_phantom_camera_manager):
+ _phantom_camera_manager.pcam_removed(self)
if _has_valid_pcam_owner():
get_pcam_host_owner().pcam_removed_from_scene(self)
+ if not follow_mode == FollowMode.GROUP:
+ follow_targets = []
+
+
+func _ready() -> void:
+ _transform_output = global_transform
+ _phantom_camera_manager.noise_2d_emitted.connect(_noise_emitted)
+
+ if not Engine.is_editor_hint():
+ _preview_noise = true
+
+ if follow_mode == FollowMode.GROUP:
+ _follow_targets_size_check()
+
func _process(delta: float) -> void:
- if _follow_target_physics_based: return
- _process_logic(delta)
+ if _follow_target_physics_based or _is_active: return
+ process_logic(delta)
-func _physics_process(delta: float):
- if not _follow_target_physics_based: return
- _process_logic(delta)
+func _physics_process(delta: float) -> void:
+ if not _follow_target_physics_based or _is_active: return
+ process_logic(delta)
-func _process_logic(delta: float) -> void:
- if not _is_active:
+func process_logic(delta: float) -> void:
+ if _is_active:
+ if _has_noise_resource and _preview_noise:
+ _transform_noise = noise.get_noise_transform(delta)
+ if _transform_noise.get_rotation() != 0:
+ push_warning(pcam_host_owner.camera_2d.name, " has ignore_rotation enabled.")
+ else:
match inactive_update_mode:
InactiveUpdateMode.NEVER: return
InactiveUpdateMode.ALWAYS:
# Only triggers if limit isn't default
if _limit_inactive_pcam:
global_position = _set_limit_clamp_position(global_position)
-# InactiveUpdateMode.EXPONENTIALLY:
-# TODO - Trigger positional updates less frequently as more Pcams gets added
+ # InactiveUpdateMode.EXPONENTIALLY:
+ # TODO - Trigger positional updates less frequently as more PCams gets added
+
_limit_checker()
+# if not Engine.is_editor_hint(): print(_should_follow)
if _should_follow:
_follow(delta)
+ else:
+ _transform_output = global_transform
+
+ if _follow_axis_is_locked:
+ match follow_axis_lock:
+ FollowLockAxis.X:
+ _transform_output.origin.x = _follow_axis_lock_value.x
+ FollowLockAxis.Y:
+ _transform_output.origin.y = _follow_axis_lock_value.y
+ FollowLockAxis.XY:
+ _transform_output.origin.x = _follow_axis_lock_value.x
+ _transform_output.origin.y = _follow_axis_lock_value.y
func _limit_checker() -> void:
## TODO - Needs to see if this can be triggerd only from CollisionShape2D Transform changes
- if Engine.is_editor_hint():
- if draw_limits:
- update_limit_all_sides()
+ if not Engine.is_editor_hint(): return
+ if draw_limits:
+ update_limit_all_sides()
func _follow(delta: float) -> void:
var follow_position: Vector2
-
match follow_mode:
FollowMode.GLUED:
- if follow_target:
- follow_position = follow_target.global_position
+ follow_position = follow_target.global_position
+
FollowMode.SIMPLE:
- if follow_target:
- follow_position = _target_position_with_offset()
+ follow_position = _target_position_with_offset()
+
FollowMode.GROUP:
- if follow_targets.size() == 1:
- follow_position = follow_targets[0].global_position
- elif _has_multiple_follow_targets and follow_targets.size() > 1:
- var rect: Rect2 = Rect2(follow_targets[0].global_position, Vector2.ZERO)
- for node in follow_targets:
- rect = rect.expand(node.global_position)
- if auto_zoom:
- rect = rect.grow_individual(
- auto_zoom_margin.x,
- auto_zoom_margin.y,
- auto_zoom_margin.z,
- auto_zoom_margin.w
- )
-# else:
-# rect = rect.grow_individual(-80, 0, 0, 0)
+ if _has_multiple_follow_targets:
+ var rect: Rect2 = Rect2(_follow_targets[0].global_position, Vector2.ZERO)
+ for target in _follow_targets:
+ rect = rect.expand(target.global_position)
if auto_zoom:
+ rect = rect.grow_individual(
+ auto_zoom_margin.x,
+ auto_zoom_margin.y,
+ auto_zoom_margin.z,
+ auto_zoom_margin.w
+ )
+
var screen_size: Vector2 = get_viewport_rect().size
if rect.size.x > rect.size.y * screen_size.aspect():
zoom = clamp(screen_size.x / rect.size.x, auto_zoom_min, auto_zoom_max) * Vector2.ONE
else:
zoom = clamp(screen_size.y / rect.size.y, auto_zoom_min, auto_zoom_max) * Vector2.ONE
follow_position = rect.get_center()
+ else:
+ follow_position = follow_targets[_follow_targets_single_target_index].global_position
+
FollowMode.PATH:
- if follow_target and follow_path:
- var path_position: Vector2 = follow_path.global_position
+ var path_position: Vector2 = follow_path.global_position
- follow_position = \
- follow_path.curve.get_closest_point(
- _target_position_with_offset() - path_position
- ) + path_position
+ follow_position = \
+ follow_path.curve.get_closest_point(
+ _target_position_with_offset() - path_position
+ ) + path_position
FollowMode.FRAMED:
- if follow_target:
- if not Engine.is_editor_hint():
- viewport_position = (get_follow_target().get_global_transform_with_canvas().get_origin() + follow_offset) / get_viewport_rect().size
-
- if _get_framed_side_offset() != Vector2.ZERO:
- var glo_pos: Vector2
- var target_position: Vector2 = _target_position_with_offset() + _follow_framed_offset
-
- if dead_zone_width == 0 || dead_zone_height == 0:
- if dead_zone_width == 0 && dead_zone_height != 0:
- follow_position = _target_position_with_offset()
- elif dead_zone_width != 0 && dead_zone_height == 0:
- glo_pos = _target_position_with_offset()
- glo_pos.x += target_position.x - global_position.x
- follow_position = glo_pos
- else:
- follow_position = _target_position_with_offset()
+ if not Engine.is_editor_hint():
+ viewport_position = (get_follow_target().get_global_transform_with_canvas().get_origin() + follow_offset) / get_viewport_rect().size
+ var framed_side_offset: Vector2 = _get_framed_side_offset()
+
+ if framed_side_offset != Vector2.ZERO:
+ var glo_pos: Vector2
+ var target_position: Vector2 = _target_position_with_offset() + _follow_framed_offset
+
+ if dead_zone_width == 0 || dead_zone_height == 0:
+ if dead_zone_width == 0 && dead_zone_height != 0:
+ follow_position = _target_position_with_offset()
+ elif dead_zone_width != 0 && dead_zone_height == 0:
+ glo_pos = _target_position_with_offset()
+ glo_pos.x += target_position.x - global_position.x
+ follow_position = glo_pos
else:
- follow_position = target_position
+ follow_position = _target_position_with_offset()
+
+ # If a horizontal dead zone is reached
+ if framed_side_offset.x != 0 and framed_side_offset.y == 0:
+ follow_position.y = _transform_output.origin.y
+ follow_position.x = target_position.x
+ _follow_framed_offset.y = global_position.y - _target_position_with_offset().y
+ dead_zone_reached.emit(Vector2(framed_side_offset.x, 0))
+ # If a vertical dead zone is reached
+ elif framed_side_offset.x == 0 and framed_side_offset.y != 0:
+ follow_position.x = _transform_output.origin.x
+ follow_position.y = target_position.y
+ _follow_framed_offset.x = global_position.x - _target_position_with_offset().x
+ dead_zone_reached.emit(Vector2(0, framed_side_offset.y))
+ # If a deadzone corner is reached
else:
- _follow_framed_offset = global_position - _target_position_with_offset()
- return
+ follow_position = target_position
+ dead_zone_reached.emit(Vector2(framed_side_offset.x, framed_side_offset.y))
else:
- follow_position = _target_position_with_offset()
+ _follow_framed_offset = _transform_output.origin - _target_position_with_offset()
+ return
+ else:
+ follow_position = _target_position_with_offset()
_interpolate_position(follow_position, delta)
-func _set_velocity(index: int, value: float):
- _velocity_ref[index] = value
+func _set_follow_velocity(index: int, value: float):
+ _follow_velocity_ref[index] = value
func _interpolate_position(target_position: Vector2, delta: float) -> void:
- if _limit_inactive_pcam and not _has_tweened:
+ if _limit_inactive_pcam and not _tween_skip:
target_position = _set_limit_clamp_position(target_position)
+ global_position = target_position
if follow_damping:
- for index in 2:
- global_position[index] = \
- _smooth_damp(
- target_position[index],
- global_position[index],
- index,
- _velocity_ref[index],
- _set_velocity,
- follow_damping_value[index],
- delta
- )
+ var output_position: Vector2
+ for i in 2:
+ output_position[i] = _smooth_damp(
+ global_position[i],
+ _transform_output.origin[i],
+ i,
+ _follow_velocity_ref[i],
+ _set_follow_velocity,
+ follow_damping_value[i],
+ delta
+ )
+ _transform_output = Transform2D(global_rotation, output_position)
else:
- global_position = target_position
+ _transform_output = Transform2D(global_rotation, target_position)
func _smooth_damp(target_axis: float, self_axis: float, index: int, current_velocity: float, set_velocity: Callable, damping_time: float, delta: float) -> float:
return value
-func _draw():
+func _draw() -> void:
if not Engine.is_editor_hint(): return
if frame_preview and not _is_active:
if not _is_active: return
get_pcam_host_owner().camera_2d.set_limit(side, limit)
+
+func _check_visibility() -> void:
+ if not is_instance_valid(pcam_host_owner): return
+ pcam_host_owner.refresh_pcam_list_priorty()
+
+
+func _follow_target_tree_exiting(target: Node) -> void:
+ if target == follow_target:
+ _should_follow = false
+ if _follow_targets.has(target):
+ _follow_targets.erase(target)
+
+
+func _should_follow_checker() -> void:
+ if follow_mode == FollowMode.NONE:
+ _should_follow = false
+ return
+
+ if not follow_mode == FollowMode.GROUP:
+ if is_instance_valid(follow_target):
+ _should_follow = true
+ else:
+ _should_follow = false
+
+
+func _follow_targets_size_check() -> void:
+ var targets_size: int = 0
+ _follow_target_physics_based = false
+ _follow_targets = []
+ for i in follow_targets.size():
+ if follow_targets[i] == null: continue
+ if follow_targets[i].is_inside_tree():
+ _follow_targets.append(follow_targets[i])
+ targets_size += 1
+ _follow_targets_single_target_index = i
+ _check_physics_body(follow_targets[i])
+ if not follow_targets[i].tree_exiting.is_connected(_follow_target_tree_exiting):
+ follow_targets[i].tree_exiting.connect(_follow_target_tree_exiting.bind(follow_targets[i]))
+
+ match targets_size:
+ 0:
+ _should_follow = false
+ _has_multiple_follow_targets = false
+ 1:
+ _should_follow = true
+ _has_multiple_follow_targets = false
+ _:
+ _should_follow = true
+ _has_multiple_follow_targets = true
+
+
+func _noise_emitted(emitter_noise_output: Transform2D, emitter_layer: int) -> void:
+ if noise_emitter_layer & emitter_layer != 0:
+ noise_emitted.emit(emitter_noise_output)
+
+ if not pcam_host_owner.camera_2d.ignore_rotation: return
+ if emitter_noise_output.get_rotation() != 0:
+ push_warning(pcam_host_owner.camera_2d.name, " has ignore_rotation enabled.")
+
+
+func _set_layer(current_layers: int, layer_number: int, value: bool) -> int:
+ var mask: int = current_layers
+
+ # From https://github.com/godotengine/godot/blob/51991e20143a39e9ef0107163eaf283ca0a761ea/scene/3d/camera_3d.cpp#L638
+ if layer_number < 1 or layer_number > 20:
+ printerr("Render layer must be between 1 and 20.")
+ else:
+ if value:
+ mask |= 1 << (layer_number - 1)
+ else:
+ mask &= ~(1 << (layer_number - 1))
+
+ return mask
+
+
+func _check_physics_body(target: Node2D) -> void:
+ if target is PhysicsBody2D:
+ ## NOTE - Feature Toggle
+ if Engine.get_version_info().major == 4 and \
+ Engine.get_version_info().minor < 3:
+ if ProjectSettings.get_setting("phantom_camera/tips/show_jitter_tips"):
+ print_rich("Following a [b]PhysicsBody2D[/b] node will likely result in jitter - on lower physics ticks in particular.")
+ print_rich("If possible, will recommend upgrading to Godot 4.3, as it has built-in support for 2D Physics Interpolation, which will mitigate this issue.")
+ print_rich("Otherwise, try following the guide on the [url=https://phantom-camera.dev/support/faq#i-m-seeing-jitter-what-can-i-do]documentation site[/url] for better results.")
+ print_rich("This tip can be disabled from within [code]Project Settings / Phantom Camera / Tips / Show Jitter Tips[/code]")
+ return
+ ## NOTE - Only supported in Godot 4.3 or above
+ elif not ProjectSettings.get_setting("physics/common/physics_interpolation") and ProjectSettings.get_setting("phantom_camera/tips/show_jitter_tips"):
+ printerr("Physics Interpolation is disabled in the Project Settings, recommend enabling it to smooth out physics-based camera movement")
+ print_rich("This tip can be disabled from within [code]Project Settings / Phantom Camera / Tips / Show Jitter Tips[/code]")
+ _follow_target_physics_based = true
+ else:
+ _is_parents_physics(target)
+ physics_target_changed.emit()
+
+
+func _is_parents_physics(target: Node = self) -> void:
+ var current_node: Node = target
+ while current_node:
+ current_node = current_node.get_parent()
+ if not current_node is PhysicsBody2D: continue
+ _follow_target_physics_based = true
+
#endregion
_limit_sides.y = limit_top
_limit_sides.z = limit_right
_limit_sides.w = limit_bottom
- elif _limit_node is TileMap:
- var tile_map: TileMap = _limit_node as TileMap
+ elif _limit_node is TileMap or _limit_node.is_class("TileMapLayer"):
+ var tile_map := _limit_node
+
+ if not tile_map.tile_set: return # TODO: This should be removed once https://github.com/godotengine/godot/issues/96898 is resolved
+
var tile_map_size: Vector2 = Vector2(tile_map.get_used_rect().size) * Vector2(tile_map.tile_set.tile_size) * tile_map.get_scale()
var tile_map_position: Vector2 = tile_map.global_position + Vector2(tile_map.get_used_rect().position) * Vector2(tile_map.tile_set.tile_size) * tile_map.get_scale()
# Bottom
_limit_sides.w = roundi(limit_rect.position.y + limit_rect.size.y)
elif _limit_node is CollisionShape2D:
- var collision_shape_2d = _limit_node as CollisionShape2D
+ var collision_shape_2d: CollisionShape2D = _limit_node as CollisionShape2D
if not collision_shape_2d.get_shape(): return
## Assigns the value of the [param has_tweened] property.
## [b][color=yellow]Important:[/color][/b] This value can only be changed
## from the [PhantomCameraHost] script.
-func set_has_tweened(caller: Node, value: bool) -> void:
+func set_tween_skip(caller: Node, value: bool) -> void:
if is_instance_of(caller, PhantomCameraHost):
- _has_tweened = value
+ _tween_skip = value
else:
printerr("Can only be called PhantomCameraHost class")
## Returns the current [param has_tweened] value.
-func get_has_tweened() -> bool:
- return _has_tweened
+func get_tween_skip() -> bool:
+ return _tween_skip
+
+## Returns the [Transform3D] value based on the [member follow_mode] / [member look_at_mode] target value.
+func get_transform_output() -> Transform2D:
+ return _transform_output
+
+
+## Returns the noise [Transform3D] value.
+func get_noise_transform() -> Transform2D:
+ return _transform_noise
+
+
+## Emits a noise based on a custom [Transform2D] value.[br]
+## Use this function if you wish to make use of external noise patterns from, for example, other addons.
+func emit_noise(value: Transform2D) -> void:
+ noise_emitted.emit(value)
#endregion
func set_is_active(node, value) -> void:
if node is PhantomCameraHost:
_is_active = value
+ if value:
+ _should_follow_checker()
else:
printerr("PCams can only be set from the PhantomCameraHost")
## Assigns a new [Node2D] as the [member follow_target].
func set_follow_target(value: Node2D) -> void:
+ if follow_mode == FollowMode.NONE or follow_mode == FollowMode.GROUP: return
if follow_target == value: return
follow_target = value
_follow_target_physics_based = false
if is_instance_valid(value):
- _should_follow = true
+ if follow_mode == FollowMode.PATH:
+ if is_instance_valid(follow_path):
+ _should_follow = true
+ else:
+ _should_follow = false
+ else:
+ _should_follow = true
_check_physics_body(value)
+ if not follow_target.tree_exiting.is_connected(_follow_target_tree_exiting):
+ follow_target.tree_exiting.connect(_follow_target_tree_exiting.bind(follow_target))
else:
_should_follow = false
follow_target_changed.emit()
## Assigns a new [Path2D] to the [member follow_path].
func set_follow_path(value: Path2D) -> void:
follow_path = value
+ if is_instance_valid(follow_path):
+ _should_follow_checker()
+ else:
+ _should_follow = false
## Erases the current [Path2D] from the [member follow_path] property.
func erase_follow_path() -> void:
## Assigns a new [param follow_targets] array value.
func set_follow_targets(value: Array[Node2D]) -> void:
+ if follow_mode != FollowMode.GROUP: return
if follow_targets == value: return
-
follow_targets = value
-
- if follow_targets.is_empty():
- _should_follow = false
- _has_multiple_follow_targets = false
- return
-
- _follow_target_physics_based = false
- var valid_instances: int = 0
- for target in follow_targets:
- if is_instance_valid(target):
- _should_follow = true
- valid_instances += 1
-
- _check_physics_body(target)
-
- if valid_instances > 1:
- _has_multiple_follow_targets = true
+ _follow_targets_size_check()
## Appends a single [Node2D] to [member follow_targets].
func append_follow_targets(value: Node2D) -> void:
if not is_instance_valid(value):
- printerr(value, " is not a valid Node2D instance.")
+ printerr(value, " is not a valid Node2D instance")
return
+
if not follow_targets.has(value):
follow_targets.append(value)
- _should_follow = true
- _has_multiple_follow_targets = true
- _check_physics_body(value)
+ _follow_targets_size_check()
else:
printerr(value, " is already part of Follow Group")
if not is_instance_valid(target): continue
if not follow_targets.has(target):
follow_targets.append(target)
- _should_follow = true
- _check_physics_body(target)
- if follow_targets.size() > 1:
- _has_multiple_follow_targets = true
+ _follow_targets_size_check()
else:
printerr(value, " is already part of Follow Group")
## Removes a [Node2D] from [member follow_targets] array.
func erase_follow_targets(value: Node2D) -> void:
follow_targets.erase(value)
- _follow_target_physics_based = false
- for target in follow_targets:
- _check_physics_body(target)
- if follow_targets.size() < 2:
- _has_multiple_follow_targets = false
- if follow_targets.size() < 1:
- _should_follow = false
+ _follow_targets_size_check()
## Gets all [Node2D] from [member follow_targets] array.
func get_follow_targets() -> Array[Node2D]:
return follow_targets
-func _check_physics_body(target: Node2D) -> void:
- if target is PhysicsBody2D:
- ## NOTE - Feature Toggle
- if Engine.get_version_info().major == 4 and \
- Engine.get_version_info().minor < 3:
- if ProjectSettings.get_setting("phantom_camera/tips/show_jitter_tips"):
- print_rich("Following a [b]PhysicsBody2D[/b] node will likely result in jitter - on lower physics ticks in particular.")
- print_rich("Once Godot 4.3 is released, will strongly recommend upgrading to that as it has built-in support for 2D Physics Interpolation.")
- print_rich("Until then, try following the guide on the [url=https://phantom-camera.dev/support/faq#i-m-seeing-jitter-what-can-i-do]documentation site[/url] for better results.")
- print_rich("This tip can be disabled from within [code]Project Settings / Phantom Camera / Tips / Show Jitter Tips[/code]")
- return
- ## NOTE - Only supported in Godot 4.3 or above
- elif not ProjectSettings.get_setting("physics/common/physics_interpolation") and ProjectSettings.get_setting("phantom_camera/tips/show_jitter_tips"):
- printerr("Physics Interpolation is disabled in the Project Settings, recommend enabling it to smooth out physics-based camera movement")
- print_rich("This tip can be disabled from within [code]Project Settings / Phantom Camera / Tips / Show Jitter Tips[/code]")
- _follow_target_physics_based = true
-
-
## Assigns a new Vector2 for the Follow Target Offset property.
func set_follow_offset(value: Vector2) -> void:
follow_offset = value
return follow_damping_value
+func set_lock_axis(value: FollowLockAxis) -> void:
+ follow_axis_lock = value
+
+ # Wait for the node to be ready before setting lock
+ if not is_node_ready(): await ready
+
+ # Prevent axis lock from working in the editor
+ if value != FollowLockAxis.NONE and not Engine.is_editor_hint():
+ _follow_axis_is_locked = true
+ match value:
+ FollowLockAxis.X:
+ _follow_axis_lock_value.x = _transform_output.origin.x
+ FollowLockAxis.Y:
+ _follow_axis_lock_value.y = _transform_output.origin.y
+ FollowLockAxis.XY:
+ _follow_axis_lock_value.x = _transform_output.origin.x
+ _follow_axis_lock_value.y = _transform_output.origin.y
+ else:
+ _follow_axis_is_locked = false
+
+func get_lock_axis() -> FollowLockAxis:
+ return follow_axis_lock
+
+
## Enables or disables [member snap_to_pixel].
func set_snap_to_pixel(value: bool) -> void:
snap_to_pixel = value
return snap_to_pixel
-## Returns true if the [param PhantomCamera2D] has more than one member in the
-## [follow_targets] array.
-func get_has_multiple_follow_targets() -> bool:
- return _has_multiple_follow_targets
-
-
## Enables or disables Auto zoom when using Group Follow.
func set_auto_zoom(value: bool) -> void:
auto_zoom = value
var prev_limit_node: Node2D = _limit_node
var new_limit_node: Node2D = get_node(value)
- if prev_limit_node is TileMap:
- if prev_limit_node.changed.is_connected(_on_tile_map_changed):
- prev_limit_node.changed.disconnect(_on_tile_map_changed)
+ if prev_limit_node:
+ if prev_limit_node is TileMap or prev_limit_node.is_class("TileMapLayer"):
+ if prev_limit_node.changed.is_connected(_on_tile_map_changed):
+ prev_limit_node.changed.disconnect(_on_tile_map_changed)
- if new_limit_node is TileMap:
+ if new_limit_node is TileMap or new_limit_node.is_class("TileMapLayer"):
if not new_limit_node.changed.is_connected(_on_tile_map_changed):
new_limit_node.changed.connect(_on_tile_map_changed)
elif new_limit_node is CollisionShape2D:
if col_shape.shape == null:
printerr("No Shape2D in: ", col_shape.name)
reset_limit()
- limit_target = null
+ limit_target = ""
return
else:
- printerr("Limit Target is not a TileMap or CollisionShape2D node")
+ printerr("Limit Target is not a TileMap, TileMapLayer or CollisionShape2D node")
return
elif value == NodePath(""):
reset_limit()
- limit_target = null
+ limit_target = ""
else:
printerr("Limit Target cannot be found")
return
#return limit_smoothed
+## Sets a [PhantomCameraNoise2D] resource.
+func set_noise(value: PhantomCameraNoise2D) -> void:
+ noise = value
+ if value != null:
+ _has_noise_resource = true
+ noise.set_trauma(1)
+ else:
+ _has_noise_resource = false
+ _transform_noise = Transform2D()
+
+## Returns the [PhantomCameraNoise2D] resource.
+func get_noise() -> PhantomCameraNoise2D:
+ return noise
+
+
+## Sets the [member noise_emitter_layer] value.
+func set_noise_emitter_layer(value: int) -> void:
+ noise_emitter_layer = value
+
+## Enables or disables a given layer of the [member noise_emitter_layer] value.
+func set_noise_emitter_layer_value(value: int, enabled: bool) -> void:
+ noise_emitter_layer = _set_layer(noise_emitter_layer, value, enabled)
+
+## Returns the [member noise_emitter_layer]
+func get_noise_emitter_layer() -> int:
+ return noise_emitter_layer
+
+
## Sets [member inactive_update_mode] property.
func set_inactive_update_mode(value: int) -> void:
inactive_update_mode = value
return inactive_update_mode
-func set_follow_target_physics_based(value: bool, caller: Node) -> void:
- if is_instance_of(caller, PhantomCameraHost):
- _follow_target_physics_based = value
- else:
- printerr("set_follow_target_physics_based() is for internal use only.")
func get_follow_target_physics_based() -> bool:
return _follow_target_physics_based
--- /dev/null
+uid://k62o6vxt4go4
## Controls a scene's [Camera3D] and applies logic to it.
##
-## The scene's [param Camera3D] will follow the position of the
+## The scene's [Camera3D] will follow the position of the
## [param PhantomCamera3D] with the highest priority.
## Each instance can have different positional and rotational logic applied
## to them.
## Emitted when the [param PhantomCamera3D] becomes active.
signal became_active
+
## Emitted when the [param PhantomCamera3D] becomes inactive.
signal became_inactive
## [b]Note:[/b] Only applicable in [param Framed] [member FollowMode].
signal dead_zone_changed
+## Emitted when a target touches the edge of the dead zone in [param Framed] [enum FollowMode].
+signal dead_zone_reached
+
## Emitted when the [param Camera3D] starts to tween to another
## [param PhantomCamera3D].
signal tween_started
+
## Emitted when the [param Camera3D] is to tweening towards another
## [param PhantomCamera3D].
signal is_tweening
+
## Emitted when the tween is interrupted due to another [param PhantomCamera3D]
## becoming active. The argument is the [param PhantomCamera3D] that
## interrupted the tween.
signal tween_interrupted(pcam_3d: PhantomCamera3D)
+
## Emitted when the [param Camera3D] completes its tween to the
## [param PhantomCamera3D].
signal tween_completed
+## Emitted when Noise should be applied to the [param Camera3D].
+signal noise_emitted(noise_output: Transform3D)
+
+signal physics_target_changed
+
#endregion
# EXPONENTIALLY,
}
-#endregion
-
+enum FollowLockAxis {
+ NONE = 0,
+ X = 1,
+ Y = 2,
+ Z = 3,
+ XY = 4,
+ XZ = 5,
+ YZ = 6,
+ XYZ = 7,
+}
-#region Variables
+#endregion
-## The [PhantomCameraHost] that owns this [param PhantomCamera2D].
-var pcam_host_owner: PhantomCameraHost = null:
- set = set_pcam_host_owner,
- get = get_pcam_host_owner
-var _is_active: bool = false
+#region Exported Properties
## To quickly preview a [param PhantomCamera3D] without adjusting its
## [member Priority], this property allows the selected [param PhantomCamera3D]
set(value):
follow_mode = value
- if value == FollowMode.FRAMED:
+ if follow_mode == FollowMode.NONE:
+ _should_follow = false
+ top_level = false
+ _is_parents_physics()
+ notify_property_list_changed()
+ return
+
+ match follow_mode:
+ FollowMode.PATH:
+ if is_instance_valid(follow_path):
+ _should_follow_checker()
+ FollowMode.GROUP:
+ _follow_targets_size_check()
+ _:
+ _should_follow_checker()
+
+ if follow_mode == FollowMode.FRAMED:
if _follow_framed_initial_set and follow_target:
_follow_framed_initial_set = false
dead_zone_changed.connect(_on_dead_zone_changed)
if dead_zone_changed.is_connected(_on_dead_zone_changed):
dead_zone_changed.disconnect(_on_dead_zone_changed)
- if follow_mode == FollowMode.NONE:
- _should_follow = false
- elif follow_mode == FollowMode.GROUP and follow_targets or follow_target:
- _should_follow = true
+ if follow_mode == FollowMode.THIRD_PERSON:
+ top_level = false
+ else:
+ top_level = true
notify_property_list_changed()
get:
return follow_mode
-
## Determines which target should be followed.
## The [param Camera3D] will follow the position of the Follow Target based on
## the [member follow_mode] type and its parameters.
@export var follow_target: Node3D = null:
set = set_follow_target,
get = get_follow_target
-var _should_follow: bool = false
-var _follow_target_physics_based: bool = false
-var _physics_interpolation_enabled = false ## TOOD - Should be anbled once toggling physics_interpolation_mode ON, when previously OFF, works in 3D
## Defines the targets that the [param PhantomCamera3D] should be following.
@export var follow_targets: Array[Node3D] = []:
set = set_follow_targets,
get = get_follow_targets
-var _has_multiple_follow_targets: bool = false
-
## Determines the [Path3D] node the [param PhantomCamera3D]
## should be bound to.
set = set_follow_path,
get = get_follow_path
-
## Determines the rotational logic for a given [param PhantomCamera3D].
## The different modes has different functionalities and purposes,
## so choosing the correct mode depends on what each
@export var look_at_mode: LookAtMode = LookAtMode.NONE:
set(value):
look_at_mode = value
- if look_at_target is Node3D:
- _should_look_at = true
if look_at_mode == LookAtMode.NONE:
_should_look_at = false
- elif look_at_mode == LookAtMode.GROUP and look_at_targets or look_at_target:
- _should_look_at = true
+ notify_property_list_changed()
+ return
+ if not look_at_mode == LookAtMode.GROUP:
+ if look_at_target is Node3D:
+ _should_look_at = true
+ else: # If Look At Group
+ _look_at_targets_size_check()
notify_property_list_changed()
get:
return look_at_mode
-var _should_look_at: bool = false
-var _multiple_look_at_targets: bool = false
## Determines which target should be looked at.
## The [param PhantomCamera3D] will update its rotational value as the
@export var look_at_targets: Array[Node3D] = []:
set = set_look_at_targets,
get = get_look_at_targets
-var _valid_look_at_targets: Array[Node3D] = []
## Defines how [param ]PhantomCamera3Ds] transition between one another.
## Changing the tween values for a given [param PhantomCamera3D]
@export var tween_resource: PhantomCameraTween = PhantomCameraTween.new():
set = set_tween_resource,
get = get_tween_resource
-var _has_tweened: bool = false
## If enabled, the moment a [param PhantomCamera3D] is instantiated into
## a scene, and has the highest priority, it will perform its tween transition.
## A resource type that allows for overriding the [param Camera3D] node's
## properties.
-@export var camera_3d_resource: Camera3DResource = Camera3DResource.new():
+@export var camera_3d_resource: Camera3DResource: # = Camera3DResource.new():
set = set_camera_3d_resource,
get = get_camera_3d_resource
+## Overrides the [member Camera3D.attribuets] resource property.
+@export var attributes: CameraAttributes = null:
+ set = set_attributes,
+ get = get_attributes
+
+## Overrides the [member Camera3D.environment] resource property.
+@export var environment: Environment = null:
+ set = set_environment,
+ get = get_environment
+
@export_group("Follow Parameters")
## Offsets the [member follow_target] position.
@export var follow_offset: Vector3 = Vector3.ZERO:
@export var follow_damping_value: Vector3 = Vector3(0.1, 0.1, 0.1):
set = set_follow_damping_value,
get = get_follow_damping_value
-var _follow_velocity_ref: Vector3 = Vector3.ZERO # Stores and applies the velocity of the movement
+
+
+## Prevents the [param PhantomCamera2D] from moving in a designated axis.
+## This can be enabled or disabled at runtime or from the editor directly.
+@export var follow_axis_lock: FollowLockAxis = FollowLockAxis.NONE:
+ set = set_follow_axis_lock,
+ get = get_follow_axis_lock
+var _follow_axis_is_locked: bool = false
+var _follow_axis_lock_value: Vector3 = Vector3.ZERO
+
## Sets a distance offset from the centre of the target's position.
## The distance is applied to the [param PhantomCamera3D]'s local z axis.
## Defines the position of the [member follow_target] within the viewport.[br]
## This is only used for when [member follow_mode] is set to [param Framed].
-var viewport_position: Vector2
-var _follow_framed_initial_set: bool = false
-var _follow_framed_offset: Vector3
@export_subgroup("Spring Arm")
-var _follow_spring_arm: SpringArm3D
## Defines the [member SpringArm3D.spring_length].
@export var spring_length: float = 1:
set = set_look_at_damping,
get = get_look_at_damping
-## Defines the Rotational damping amount. The ideal range is typicall somewhere between 0-1.[br][br]
+## Defines the Rotational damping amount. The ideal range is typically somewhere between 0-1.[br][br]
## The damping amount can be specified in the individual axis.[br][br]
## [b]Lower value[/b] = faster / sharper camera rotation.[br]
## [b]Higher value[/b] = slower / heavier camera rotation.
set = set_look_at_damping_value,
get = get_look_at_damping_value
-var _current_rotation: Vector3
+
+@export_group("Noise")
+## Applies a noise, or shake, to a [Camera3D].[br]
+## Once set, the noise will run continuously after the tween to the [PhantomCamera3D] instance is complete.
+@export var noise: PhantomCameraNoise3D:
+ set = set_noise,
+ get = get_noise
+
+## If true, will trigger the noise while in the editor.[br]
+## Useful in cases where you want to temporarily disalbe the noise in the editor without removing
+## the resource.[br][br]
+## [b]Note:[/b] This property has no effect on runtime behaviour.
+@export var _preview_noise: bool = true:
+ set(value):
+ _preview_noise = value
+ if not value:
+ _transform_noise = Transform3D()
+
+## Enable a corresponding layer for a [member PhantomCameraNoiseEmitter3D.noise_emitter_layer]
+## to make this [PhantomCamera3D] be affect by it.
+@export_flags_3d_render var noise_emitter_layer: int:
+ set = set_noise_emitter_layer,
+ get = get_noise_emitter_layer
#endregion
+#region Private Variables
+
+var _is_active: bool = false
+
+var _is_third_person_follow: bool = false
+
+var _should_follow: bool = false
+var _follow_target_physics_based: bool = false
+var _physics_interpolation_enabled: bool = false ## TOOD - Should be enbled once toggling physics_interpolation_mode ON, when previously OFF, works in 3D
+
+var _has_multiple_follow_targets: bool = false
+var _follow_targets_single_target_index: int = 0
+var _follow_targets: Array[Node3D]
+
+var _should_look_at: bool = false
+var _look_at_target_physics_based: bool = false
+
+var _has_multiple_look_at_targets: bool = false
+var _look_at_targets_single_target_index: int = 0
+
+var _tween_skip: bool = false
+
+var _follow_velocity_ref: Vector3 = Vector3.ZERO # Stores and applies the velocity of the movement
+
+var _follow_framed_initial_set: bool = false
+var _follow_framed_offset: Vector3
+
+var _follow_spring_arm: SpringArm3D
+var _has_follow_spring_arm: bool = false
+
+var _current_rotation: Vector3
+
+var _has_noise_resource: bool = false
+
+var _transform_output: Transform3D
+var _transform_noise: Transform3D
+
# NOTE - Temp solution until Godot has better plugin autoload recognition out-of-the-box.
var _phantom_camera_manager: Node
+#endregion
+
+#region Public Variables
+
+## The [PhantomCameraHost] that owns this [param PhantomCamera2D].
+var pcam_host_owner: PhantomCameraHost = null:
+ set = set_pcam_host_owner,
+ get = get_pcam_host_owner
+
+var tween_duration: float:
+ set = set_tween_duration,
+ get = get_tween_duration
+var tween_transition: PhantomCameraTween.TransitionType:
+ set = set_tween_transition,
+ get = get_tween_transition
+var tween_ease: PhantomCameraTween.EaseType:
+ set = set_tween_ease,
+ get = get_tween_ease
+
+var cull_mask: int:
+ set = set_cull_mask,
+ get = get_cull_mask
+var h_offset: float:
+ set = set_h_offset,
+ get = get_h_offset
+var v_offset: float:
+ set = set_v_offset,
+ get = get_v_offset
+var projection: Camera3DResource.ProjectionType:
+ set = set_projection,
+ get = get_projection
+var fov: float:
+ set = set_fov,
+ get = get_fov
+var size: float:
+ set = set_size,
+ get = get_size
+var frustum_offset: Vector2:
+ set = set_frustum_offset,
+ get = get_frustum_offset
+var far: float:
+ set = set_far,
+ get = get_far
+var near: float:
+ set = set_near,
+ get = get_near
+
+var viewport_position: Vector2
+
+#endregion
+
#region Property Validator
####################
## Follow Parameters
####################
-
if follow_mode == FollowMode.NONE:
match property.name:
"follow_offset", \
if property.name == "follow_damping_value" and not follow_damping:
property.usage = PROPERTY_USAGE_NO_EDITOR
+ if property.name == "follow_offset":
+ if follow_mode == FollowMode.PATH:
+ property.usage = PROPERTY_USAGE_NO_EDITOR
+
if property.name == "follow_distance":
if not follow_mode == FollowMode.FRAMED:
if not follow_mode == FollowMode.GROUP or \
not follow_mode == FollowMode.GROUP:
property.usage = PROPERTY_USAGE_NO_EDITOR
- if not auto_follow_distance:
+ if not auto_follow_distance or not follow_mode == FollowMode.GROUP:
match property.name:
"auto_follow_distance_min", \
"auto_follow_distance_max", \
not look_at_damping:
property.usage = PROPERTY_USAGE_NO_EDITOR
- notify_property_list_changed()
#endregion
#region Private Functions
if not _phantom_camera_manager.get_phantom_camera_hosts().is_empty():
set_pcam_host_owner(_phantom_camera_manager.get_phantom_camera_hosts()[0])
+ if not visibility_changed.is_connected(_check_visibility):
+ visibility_changed.connect(_check_visibility)
+
+ _should_follow_checker()
+ if follow_mode == FollowMode.GROUP:
+ _follow_targets_size_check()
+ elif follow_mode == FollowMode.NONE:
+ _is_parents_physics()
#if not get_parent() is SpringArm3D:
#if look_at_target:
#_look_at_target_node = look_at_target
func _exit_tree() -> void:
- _phantom_camera_manager.pcam_removed(self)
+ if is_instance_valid(_phantom_camera_manager):
+ _phantom_camera_manager.pcam_removed(self)
if _has_valid_pcam_owner():
get_pcam_host_owner().pcam_removed_from_scene(self)
+ if not follow_mode == FollowMode.GROUP:
+ follow_targets = []
func _ready():
- if follow_mode == FollowMode.THIRD_PERSON:
- if not Engine.is_editor_hint():
- if not is_instance_valid(_follow_spring_arm):
- _follow_spring_arm = SpringArm3D.new()
- _follow_spring_arm.top_level = true
- _follow_spring_arm.rotation = global_rotation
- _follow_spring_arm.position = _get_target_position_offset() if is_instance_valid(follow_target) else global_position
- _follow_spring_arm.spring_length = spring_length
- _follow_spring_arm.collision_mask = collision_mask
- _follow_spring_arm.shape = shape
- _follow_spring_arm.margin = margin
- get_parent().add_child.call_deferred(_follow_spring_arm)
- reparent.call_deferred(_follow_spring_arm)
- if follow_mode == FollowMode.FRAMED:
- if not Engine.is_editor_hint():
- _follow_framed_offset = global_position - _get_target_position_offset()
- _current_rotation = global_rotation
+ match follow_mode:
+ FollowMode.THIRD_PERSON:
+ _is_third_person_follow = true
+ if not Engine.is_editor_hint():
+ if not is_instance_valid(_follow_spring_arm):
+ _follow_spring_arm = SpringArm3D.new()
+ _follow_spring_arm.top_level = true
+ _follow_spring_arm.rotation = global_rotation
+ _follow_spring_arm.spring_length = spring_length
+ _follow_spring_arm.collision_mask = collision_mask
+ if shape:
+ _follow_spring_arm.shape = shape
+ else:
+ _follow_spring_arm.shape = _get_camera_shape()
+ _follow_spring_arm.margin = margin
+ _follow_spring_arm.add_excluded_object(follow_target)
+ get_parent().add_child.call_deferred(_follow_spring_arm)
+ reparent.call_deferred(_follow_spring_arm)
+
+ # Waits for the SpringArm3D to be ready and then apply rotation
+ # Resolves an issue most prominent in Godot 4.4
+ await _follow_spring_arm.ready
+ _follow_spring_arm.position = _get_target_position_offset() if is_instance_valid(follow_target) else global_position
+ _follow_spring_arm.global_rotation = global_rotation
+ _has_follow_spring_arm = true
+ FollowMode.FRAMED:
+ if not Engine.is_editor_hint():
+ _follow_framed_offset = global_position - _get_target_position_offset()
+ _current_rotation = global_rotation
+ FollowMode.GROUP:
+ _follow_targets_size_check()
+
+ if not Engine.is_editor_hint():
+ _preview_noise = true
+
+ ## NOTE - Only here to set position for Framed View on startup.
+ ## Should be removed once https://github.com/ramokz/phantom-camera/issues/161 is complete
+ _transform_output = global_transform
+
+ _phantom_camera_manager.noise_3d_emitted.connect(_noise_emitted)
func _process(delta: float) -> void:
- if not _follow_target_physics_based:
- _process_logic(delta)
+ if _follow_target_physics_based or _is_active: return
+ process_logic(delta)
-func _physics_process(delta: float):
- if _follow_target_physics_based:
- _process_logic(delta)
+func _physics_process(delta: float) -> void:
+ if not _follow_target_physics_based or _is_active: return
+ process_logic(delta)
-func _process_logic(delta: float) -> void:
- if not _is_active:
+func process_logic(delta: float) -> void:
+ if _is_active:
+ if _has_noise_resource and _preview_noise:
+ _transform_noise = noise.get_noise_transform(delta)
+ else:
match inactive_update_mode:
- InactiveUpdateMode.NEVER: return
+ InactiveUpdateMode.NEVER: return
# InactiveUpdateMode.EXPONENTIALLY:
- # TODO - Trigger positional updates less frequently as more Pcams gets added
+ # TODO - Trigger positional updates less frequently as more PCams gets added
+
if _should_follow:
_follow(delta)
+ else:
+ _transform_output.origin = global_transform.origin
+
if _should_look_at:
- _look_at() # TODO - Delta needs to be applied, pending Godot's 3D Physics Interpolation to be implemented
+ _look_at(delta)
+ else:
+ _transform_output.basis = global_basis
+
+ if _follow_axis_is_locked:
+ match follow_axis_lock:
+ FollowLockAxis.X:
+ _transform_output.origin.x = _follow_axis_lock_value.x
+ FollowLockAxis.Y:
+ _transform_output.origin.y = _follow_axis_lock_value.y
+ FollowLockAxis.Z:
+ _transform_output.origin.z = _follow_axis_lock_value.z
+ FollowLockAxis.XY:
+ _transform_output.origin.x = _follow_axis_lock_value.x
+ _transform_output.origin.y = _follow_axis_lock_value.y
+ FollowLockAxis.XZ:
+ _transform_output.origin.x = _follow_axis_lock_value.x
+ _transform_output.origin.z = _follow_axis_lock_value.z
+ FollowLockAxis.YZ:
+ _transform_output.origin.y = _follow_axis_lock_value.y
+ _transform_output.origin.z = _follow_axis_lock_value.z
+ FollowLockAxis.XYZ:
+ _transform_output.origin.x = _follow_axis_lock_value.x
+ _transform_output.origin.y = _follow_axis_lock_value.y
+ _transform_output.origin.z = _follow_axis_lock_value.z
func _follow(delta: float) -> void:
var follow_position: Vector3
- var follow_target_node: Node3D = self
+ var follow_target_node: Node3D = self # TODO - Think this can be removed
match follow_mode:
FollowMode.GLUED:
- if follow_target:
- follow_position = follow_target.global_position
+ follow_position = follow_target.global_position
+
FollowMode.SIMPLE:
- if follow_target:
- follow_position = _get_target_position_offset()
+ follow_position = _get_target_position_offset()
+
FollowMode.GROUP:
- if follow_targets:
- if follow_targets.size() == 1:
- follow_position = \
- follow_targets[0].global_position + \
- follow_offset + \
- get_transform().basis.z * \
- Vector3(follow_distance, follow_distance, follow_distance)
-
- elif follow_targets.size() > 1:
- var bounds: AABB = AABB(follow_targets[0].global_position, Vector3.ZERO)
- for node in follow_targets:
- if is_instance_valid(node):
- bounds = bounds.expand(node.global_position)
-
- var distance: float
- if auto_follow_distance:
- distance = lerp(auto_follow_distance_min, auto_follow_distance_max, bounds.get_longest_axis_size() / auto_follow_distance_divisor)
- distance = clamp(distance, auto_follow_distance_min, auto_follow_distance_max)
- else:
- distance = follow_distance
+ if _has_multiple_follow_targets:
+ var bounds: AABB = AABB(_follow_targets[0].global_position, Vector3.ZERO)
+ for target in _follow_targets:
+ bounds = bounds.expand(target.global_position)
+ var distance: float
+ if auto_follow_distance:
+ distance = lerpf(auto_follow_distance_min, auto_follow_distance_max, bounds.get_longest_axis_size() / auto_follow_distance_divisor)
+ distance = clampf(distance, auto_follow_distance_min, auto_follow_distance_max)
+ else:
+ distance = follow_distance
- follow_position = \
- bounds.get_center() + \
- follow_offset + \
- get_transform().basis.z * \
- Vector3(distance, distance, distance)
- FollowMode.PATH:
- if follow_target and follow_path:
- var path_position: Vector3 = follow_path.global_position
follow_position = \
- follow_path.curve.get_closest_point(
- follow_target.global_position - path_position
- ) + path_position
+ bounds.get_center() + \
+ follow_offset + \
+ get_transform().basis.z * \
+ Vector3(distance, distance, distance)
+ else:
+ follow_position = \
+ follow_targets[_follow_targets_single_target_index].global_position + \
+ follow_offset + \
+ get_transform().basis.z * \
+ Vector3(follow_distance, follow_distance, follow_distance)
+
+ FollowMode.PATH:
+ var path_position: Vector3 = follow_path.global_position
+ follow_position = \
+ follow_path.curve.get_closest_point(
+ follow_target.global_position - path_position
+ ) + path_position
+
FollowMode.FRAMED:
- if follow_target:
- if not Engine.is_editor_hint():
- if not _is_active || get_pcam_host_owner().get_trigger_pcam_tween():
- follow_position = _get_position_offset_distance()
- _interpolate_position(follow_position, delta)
- return
-
- viewport_position = get_viewport().get_camera_3d().unproject_position(_get_target_position_offset())
- var visible_rect_size: Vector2 = get_viewport().get_viewport().size
- viewport_position = viewport_position / visible_rect_size
- _current_rotation = global_rotation
+ if not Engine.is_editor_hint():
+ if not _is_active || get_pcam_host_owner().get_trigger_pcam_tween():
+ follow_position = _get_position_offset_distance()
+ _interpolate_position(follow_position, delta)
+ return
+
+ viewport_position = get_viewport().get_camera_3d().unproject_position(_get_target_position_offset())
+ var visible_rect_size: Vector2 = get_viewport().get_visible_rect().size
+ viewport_position = viewport_position / visible_rect_size
+ _current_rotation = global_rotation
- if _current_rotation != global_rotation:
- follow_position = _get_position_offset_distance()
-
- if _get_framed_side_offset() != Vector2.ZERO:
- var target_position: Vector3 = _get_target_position_offset() + _follow_framed_offset
- var glo_pos: Vector3
-
- if dead_zone_width == 0 || dead_zone_height == 0:
- if dead_zone_width == 0 && dead_zone_height != 0:
- glo_pos = _get_position_offset_distance()
- glo_pos.z = target_position.z
- follow_position = glo_pos
- elif dead_zone_width != 0 && dead_zone_height == 0:
- glo_pos = _get_position_offset_distance()
- glo_pos.x = target_position.x
- follow_position = glo_pos
- else:
- follow_position = _get_position_offset_distance()
+ if _current_rotation != global_rotation:
+ follow_position = _get_position_offset_distance()
+
+ if _get_framed_side_offset() != Vector2.ZERO:
+ var target_position: Vector3 = _get_target_position_offset() + _follow_framed_offset
+ var glo_pos: Vector3
+
+ if dead_zone_width == 0 || dead_zone_height == 0:
+ if dead_zone_width == 0 && dead_zone_height != 0:
+ glo_pos = _get_position_offset_distance()
+ glo_pos.z = target_position.z
+ follow_position = glo_pos
+ elif dead_zone_width != 0 && dead_zone_height == 0:
+ glo_pos = _get_position_offset_distance()
+ glo_pos.x = target_position.x
+ follow_position = glo_pos
else:
- if _current_rotation != global_rotation:
- var opposite: float = sin(-global_rotation.x) * follow_distance + _get_target_position_offset().y
- glo_pos.y = _get_target_position_offset().y + opposite
- glo_pos.z = sqrt(pow(follow_distance, 2) - pow(opposite, 2)) + _get_target_position_offset().z
- glo_pos.x = global_position.x
-
- follow_position = glo_pos
- _current_rotation = global_rotation
- else:
- follow_position = target_position
+ follow_position = _get_position_offset_distance()
else:
- _follow_framed_offset = global_position - _get_target_position_offset()
- _current_rotation = global_rotation
- return
+ if _current_rotation != global_rotation:
+ var opposite: float = sin(-global_rotation.x) * follow_distance + _get_target_position_offset().y
+ glo_pos.y = _get_target_position_offset().y + opposite
+ glo_pos.z = sqrt(pow(follow_distance, 2) - pow(opposite, 2)) + _get_target_position_offset().z
+ glo_pos.x = global_position.x
+
+ follow_position = glo_pos
+ _current_rotation = global_rotation
+ else:
+ dead_zone_reached.emit()
+ follow_position = target_position
else:
- follow_position = _get_position_offset_distance()
- var unprojected_position: Vector2 = _get_raw_unprojected_position()
- var viewport_width: float = get_viewport().size.x
- var viewport_height: float = get_viewport().size.y
- var camera_aspect: Camera3D.KeepAspect = get_viewport().get_camera_3d().keep_aspect
- var visible_rect_size: Vector2 = get_viewport().get_viewport().size
-
- unprojected_position = unprojected_position - visible_rect_size / 2
- if camera_aspect == Camera3D.KeepAspect.KEEP_HEIGHT:
-# Landscape View
- var aspect_ratio_scale: float = viewport_width / viewport_height
- unprojected_position.x = (unprojected_position.x / aspect_ratio_scale + 1) / 2
- unprojected_position.y = (unprojected_position.y + 1) / 2
- else:
-# Portrait View
- var aspect_ratio_scale: float = viewport_height / viewport_width
- unprojected_position.x = (unprojected_position.x + 1) / 2
- unprojected_position.y = (unprojected_position.y / aspect_ratio_scale + 1) / 2
+ _follow_framed_offset = global_position - _get_target_position_offset()
+ _current_rotation = global_rotation
+ return
+ else:
+ follow_position = _get_position_offset_distance()
+ var unprojected_position: Vector2 = _get_raw_unprojected_position()
+ var viewport_width: float = get_viewport().size.x
+ var viewport_height: float = get_viewport().size.y
+ var camera_aspect: Camera3D.KeepAspect = get_viewport().get_camera_3d().keep_aspect
+ var visible_rect_size: Vector2 = get_viewport().get_visible_rect().size
+
+ unprojected_position = unprojected_position - visible_rect_size / 2
+ if camera_aspect == Camera3D.KeepAspect.KEEP_HEIGHT:
+ # Landscape View
+ var aspect_ratio_scale: float = viewport_width / viewport_height
+ unprojected_position.x = (unprojected_position.x / aspect_ratio_scale + 1) / 2
+ unprojected_position.y = (unprojected_position.y + 1) / 2
+ else:
+ # Portrait View
+ var aspect_ratio_scale: float = viewport_height / viewport_width
+ unprojected_position.x = (unprojected_position.x + 1) / 2
+ unprojected_position.y = (unprojected_position.y / aspect_ratio_scale + 1) / 2
+
+ viewport_position = unprojected_position
- viewport_position = unprojected_position
FollowMode.THIRD_PERSON:
- if follow_target:
- if not Engine.is_editor_hint():
- if is_instance_valid(follow_target) and is_instance_valid(_follow_spring_arm):
- follow_position = _get_target_position_offset()
- follow_target_node = _follow_spring_arm
- else:
- follow_position = _get_position_offset_distance()
+ if not Engine.is_editor_hint():
+ if not _has_follow_spring_arm: return
+ follow_position = _get_target_position_offset()
+ follow_target_node = _follow_spring_arm
+ else:
+ follow_position = _get_position_offset_distance()
_interpolate_position(follow_position, delta, follow_target_node)
-func _look_at() -> void:
+func _look_at(delta: float) -> void:
match look_at_mode:
LookAtMode.MIMIC:
- global_rotation = look_at_target.global_rotation
+ _interpolate_rotation(
+ global_position - look_at_target.basis.z,
+ delta
+ )
+
LookAtMode.SIMPLE:
- _interpolate_rotation(look_at_target.global_position)
+ _interpolate_rotation(
+ look_at_target.global_position,
+ delta
+ )
+
LookAtMode.GROUP:
- if not _multiple_look_at_targets:
- if look_at_targets.size() == 0: return
- _interpolate_rotation(look_at_targets[0].global_position)
+ if not _has_multiple_look_at_targets:
+ _interpolate_rotation(
+ look_at_targets[_look_at_targets_single_target_index].global_position,
+ delta
+ )
else:
var bounds: AABB = AABB(look_at_targets[0].global_position, Vector3.ZERO)
for node in look_at_targets:
bounds = bounds.expand(node.global_position)
- _interpolate_rotation(bounds.get_center())
+ _interpolate_rotation(
+ bounds.get_center(),
+ delta
+ )
func _get_target_position_offset() -> Vector3:
func _get_position_offset_distance() -> Vector3:
return _get_target_position_offset() + \
- get_transform().basis.z * Vector3(follow_distance, follow_distance, follow_distance)
+ transform.basis.z * Vector3(follow_distance, follow_distance, follow_distance)
func _set_follow_velocity(index: int, value: float) -> void:
_follow_velocity_ref[index] = value
+
+
func _interpolate_position(target_position: Vector3, delta: float, camera_target: Node3D = self) -> void:
if follow_damping:
- for index in 3:
- camera_target.global_position[index] = _smooth_damp(
- target_position[index],
- camera_target.global_position[index],
- index,
- _follow_velocity_ref[index],
- _set_follow_velocity,
- follow_damping_value[index]
- )
+ if not _is_third_person_follow:
+ global_position = target_position
+ for i in 3:
+ _transform_output.origin[i] = _smooth_damp(
+ global_position[i],
+ _transform_output.origin[i],
+ i,
+ _follow_velocity_ref[i],
+ _set_follow_velocity,
+ follow_damping_value[i],
+ delta
+ )
+ else:
+ for i in 3:
+ if _is_third_person_follow:
+ camera_target.global_position[i] = _smooth_damp(
+ target_position[i],
+ camera_target.global_position[i],
+ i,
+ _follow_velocity_ref[i],
+ _set_follow_velocity,
+ follow_damping_value[i],
+ delta
+ )
+ _transform_output.origin = global_position
+ _transform_output.basis = global_basis
else:
camera_target.global_position = target_position
+ _transform_output.origin = global_position
-func _interpolate_rotation(target_trans: Vector3) -> void:
+func _interpolate_rotation(target_trans: Vector3, delta: float) -> void:
var direction: Vector3 = (target_trans - global_position + look_at_offset).normalized()
var target_basis: Basis = Basis().looking_at(direction)
var target_quat: Quaternion = target_basis.get_rotation_quaternion().normalized()
if look_at_damping:
var current_quat: Quaternion = quaternion.normalized()
-
var damping_time: float = max(0.0001, look_at_damping_value)
- var t: float = min(1.0, get_process_delta_time() / damping_time)
+ var t: float = min(1.0, delta / damping_time)
var dot: float = current_quat.dot(target_quat)
var ratio_a: float = cos(theta) - dot * sin_theta / sin_theta_total
var ratio_b: float = sin_theta / sin_theta_total
+ var output: Quaternion = current_quat * ratio_a + target_quat * ratio_b
- quaternion = current_quat * ratio_a + target_quat * ratio_b
+ _transform_output.basis = Basis(output)
+ quaternion = output
else:
+ _transform_output.basis = Basis(target_quat)
quaternion = target_quat
-func _smooth_damp(target_axis: float, self_axis: float, index: int, current_velocity: float, set_velocity: Callable, damping_time: float, rot: bool = false) -> float:
+func _smooth_damp(target_axis: float, self_axis: float, index: int, current_velocity: float, set_velocity: Callable, damping_time: float, delta: float) -> float:
damping_time = maxf(0.0001, damping_time)
var omega: float = 2 / damping_time
- var delta: float = get_process_delta_time()
var x: float = omega * delta
var exponential: float = 1 / (1 + x + 0.48 * x * x + 0.235 * x * x * x)
var diff: float = self_axis - target_axis
return frame_out_bounds
+
func _set_layer(current_layers: int, layer_number: int, value: bool) -> int:
var mask: int = current_layers
return mask
+
func _has_valid_pcam_owner() -> bool:
if not is_instance_valid(get_pcam_host_owner()): return false
if not is_instance_valid(get_pcam_host_owner().camera_3d): return false
return true
+
+func _check_visibility() -> void:
+ if not is_instance_valid(pcam_host_owner): return
+ pcam_host_owner.refresh_pcam_list_priorty()
+
+
+func _follow_target_tree_exiting(target: Node) -> void:
+ if target == follow_target:
+ _should_follow = false
+ if _follow_targets.has(target):
+ _follow_targets.erase(target)
+
+
+func _should_follow_checker() -> void:
+ if follow_mode == FollowMode.NONE:
+ _should_follow = false
+ return
+
+ if not follow_mode == FollowMode.GROUP:
+ if is_instance_valid(follow_target):
+ _should_follow = true
+ else:
+ _should_follow = false
+
+
+func _follow_targets_size_check() -> void:
+ var targets_size: int = 0
+ _follow_target_physics_based = false
+ _follow_targets = []
+ for i in follow_targets.size():
+ if follow_targets[i] == null: continue
+ if follow_targets[i].is_inside_tree():
+ _follow_targets.append(follow_targets[i])
+ targets_size += 1
+ _follow_targets_single_target_index = i
+ _check_physics_body(follow_targets[i])
+ if not follow_targets[i].tree_exiting.is_connected(_follow_target_tree_exiting):
+ follow_targets[i].tree_exiting.connect(_follow_target_tree_exiting.bind(follow_targets[i]))
+
+ match targets_size:
+ 0:
+ _should_follow = false
+ _has_multiple_follow_targets = false
+ 1:
+ _should_follow = true
+ _has_multiple_follow_targets = false
+ _:
+ _should_follow = true
+ _has_multiple_follow_targets = true
+
+
+func _get_camera_shape() -> Shape3D:
+ if not _has_valid_pcam_owner(): return
+
+ var pyramid_shape_data = PhysicsServer3D.shape_get_data(
+ get_pcam_host_owner().camera_3d.get_pyramid_shape_rid()
+ )
+
+ var shape = ConvexPolygonShape3D.new()
+ shape.points = pyramid_shape_data
+
+ return shape
+
+
+func _look_at_target_tree_exiting(target: Node) -> void:
+ if target == look_at_target:
+ _should_look_at = false
+ if look_at_targets.has(target):
+ erase_look_at_targets(target)
+
+
+func _look_at_targets_size_check() -> void:
+ var targets_size: int = 0
+ _look_at_target_physics_based = false
+
+ for i in look_at_targets.size():
+ if is_instance_valid(look_at_targets[i]):
+ targets_size += 1
+ _look_at_targets_single_target_index = i
+ _check_physics_body(look_at_targets[i])
+ if not look_at_targets[i].tree_exiting.is_connected(_look_at_target_tree_exiting):
+ look_at_targets[i].tree_exiting.connect(_look_at_target_tree_exiting.bind(look_at_targets[i]))
+
+ match targets_size:
+ 0:
+ _should_look_at = false
+ _has_multiple_look_at_targets = false
+ 1:
+ _should_look_at = true
+ _has_multiple_look_at_targets = false
+ _:
+ _should_look_at = true
+ _has_multiple_look_at_targets = true
+
+
+func _noise_emitted(emitter_noise_output: Transform3D, emitter_layer: int) -> void:
+ if noise_emitter_layer & emitter_layer != 0:
+ noise_emitted.emit(emitter_noise_output)
+
+
+func _check_physics_body(target: Node3D) -> void:
+ if target is PhysicsBody3D:
+ ## NOTE - Feature Toggle
+ if Engine.get_version_info().major == 4 and \
+ Engine.get_version_info().minor < 4:
+ if ProjectSettings.get_setting("phantom_camera/tips/show_jitter_tips"):
+ print_rich("Following or Looking at a [b]PhysicsBody3D[/b] node will likely result in jitter - on lower physics ticks in particular.")
+ print_rich("If possible, will recommend upgrading to Godot 4.4, as it has built-in support for 3D Physics Interpolation, which will mitigate this issue.")
+ print_rich("Until then, try following the guide on the [url=https://phantom-camera.dev/support/faq#i-m-seeing-jitter-what-can-i-do]documentation site[/url] for better results.")
+ print_rich("This tip can be disabled from within [code]Project Settings / Phantom Camera / Tips / Show Jitter Tips[/code]")
+ return
+ ## NOTE - Only supported in Godot 4.4 or above
+ elif not ProjectSettings.get_setting("physics/common/physics_interpolation"):
+ printerr("Physics Interpolation is disabled in the Project Settings, recommend enabling it to smooth out physics-based camera movement")
+ print_rich("This tip can be disabled from within [code]Project Settings / Phantom Camera / Tips / Show Jitter Tips[/code]")
+ _follow_target_physics_based = true
+ else:
+ _is_parents_physics(target)
+ physics_target_changed.emit()
+
+
+func _is_parents_physics(target: Node = self) -> void:
+ var current_node: Node = target
+ while current_node:
+ current_node = current_node.get_parent()
+ if not current_node is PhysicsBody3D: continue
+ _follow_target_physics_based = true
+
#endregion
+
# TBD
#func get_unprojected_position() -> Vector2:
#var unprojected_position: Vector2 = _get_raw_unprojected_position()
#return unprojected_position
+## Returns the [Transform3D] value based on the [member follow_mode] / [member look_at_mode] target value.
+func get_transform_output() -> Transform3D:
+ return _transform_output
+
+
+## Returns the noise [Transform3D] value.
+func get_noise_transform() -> Transform3D:
+ return _transform_noise
+
+
+## Emits a noise based on a custom [Transform3D] value.[br]
+## Use this function if you wish to make use of external noise patterns from, for example, other addons.
+func emit_noise(value: Transform3D) -> void:
+ noise_emitted.emit(value)
+
#region Setter & Getter Functions
## Assigns the value of the [param has_tweened] property.[br]
## [b][color=yellow]Important:[/color][/b] This value can only be changed
## from the [PhantomCameraHost] script.
-func set_has_tweened(caller: Node, value: bool) -> void:
+func set_tween_skip(caller: Node, value: bool) -> void:
if is_instance_of(caller, PhantomCameraHost):
- _has_tweened = value
+ _tween_skip = value
else:
printerr("Can only be called PhantomCameraHost class")
## Returns the current [param has_tweened] value.
-func get_has_tweened() -> bool:
- return _has_tweened
+func get_tween_skip() -> bool:
+ return _tween_skip
## Assigns the [param PhantomCamera3D] to a new [PhantomCameraHost].[br]
func set_is_active(node: Node, value: bool) -> void:
if node is PhantomCameraHost:
_is_active = value
+ if value:
+ _should_follow_checker()
else:
printerr("PCams can only be set from the PhantomCameraHost")
## Gets current active state of the [param PhantomCamera3D].
## Assigns a new [Node3D] as the [member follow_target].
func set_follow_target(value: Node3D) -> void:
+ if follow_mode == FollowMode.NONE or follow_mode == FollowMode.GROUP: return
if follow_target == value: return
follow_target = value
-
_follow_target_physics_based = false
if is_instance_valid(value):
- _should_follow = true
+ if follow_mode == FollowMode.PATH:
+ if is_instance_valid(follow_path):
+ _should_follow = true
+ else:
+ _should_follow = false
+ else:
+ _should_follow = true
_check_physics_body(value)
+ if not follow_target.tree_exiting.is_connected(_follow_target_tree_exiting):
+ follow_target.tree_exiting.connect(_follow_target_tree_exiting.bind(follow_target))
else:
- _should_follow = false
+ if not follow_mode == FollowMode.GROUP:
+ _should_follow = false
follow_target_changed.emit()
notify_property_list_changed()
## Removes the current [Node3D] [member follow_target].
func erase_follow_target() -> void:
- if follow_target == null: return
- _follow_target_physics_based = false
- _should_follow = false
follow_target = null
- follow_target_changed.emit()
## Gets the current Node3D target.
func get_follow_target() -> Node3D:
return follow_target
## Assigns a new [Path3D] to the [member follow_path] property.
func set_follow_path(value: Path3D) -> void:
follow_path = value
+ if is_instance_valid(follow_path):
+ _should_follow_checker()
+ else:
+ _should_follow = false
+
## Erases the current [Path3D] from [member follow_path] property.
func erase_follow_path() -> void:
follow_path = null
+
## Gets the current [Path3D] from the [member follow_path] property.
func get_follow_path() -> Path3D:
return follow_path
## Assigns a new [param follow_targets] array value.
func set_follow_targets(value: Array[Node3D]) -> void:
+ if not follow_mode == FollowMode.GROUP: return
if follow_targets == value: return
-
follow_targets = value
+ _follow_targets_size_check()
- if follow_targets.is_empty():
- _should_follow = false
- _has_multiple_follow_targets = false
- _follow_target_physics_based = false
- return
-
- var valid_instances: int
- _follow_target_physics_based = false
- for target in follow_targets:
- if is_instance_valid(target):
- _should_follow = true
- valid_instances += 1
-
- _check_physics_body(target)
- if valid_instances > 1:
- _has_multiple_follow_targets = true
## Adds a single [Node3D] to [member follow_targets] array.
func append_follow_targets(value: Node3D) -> void:
if not is_instance_valid(value):
- printerr(value, " is not a valid instance")
+ printerr(value, " is not a valid Node3D instance")
return
if not follow_targets.has(value):
follow_targets.append(value)
- _should_follow = true
- _has_multiple_follow_targets = true
- _check_physics_body(value)
+ _follow_targets_size_check()
else:
printerr(value, " is already part of Follow Group")
+
## Adds an Array of type [Node3D] to [member follow_targets] array.
func append_follow_targets_array(value: Array[Node3D]) -> void:
for target in value:
if not is_instance_valid(target): continue
if not follow_targets.has(target):
follow_targets.append(target)
- _should_follow = true
- _check_physics_body(target)
- if follow_targets.size() > 1:
- _has_multiple_follow_targets = true
+ _follow_targets_size_check()
else:
printerr(value, " is already part of Follow Group")
+
## Removes [Node3D] from [member follow_targets].
func erase_follow_targets(value: Node3D) -> void:
follow_targets.erase(value)
- _follow_target_physics_based = false
- for target in follow_targets:
- _check_physics_body(target)
+ _follow_targets_size_check()
+
- if follow_targets.size() < 2:
- _has_multiple_follow_targets = false
- if follow_targets.size() < 1:
- _should_follow = false
## Gets all [Node3D] from [follow_targets].
func get_follow_targets() -> Array[Node3D]:
return follow_targets
-## Returns true if the [param PhantomCamera3D] has more than one member in the
-## [member follow_targets] array.
-func get_has_multiple_follow_targets() -> bool:
- return _has_multiple_follow_targets
-
-func _check_physics_body(target: Node3D) -> void:
- if target is PhysicsBody3D:
- ## NOTE - Feature Toggle
- #if Engine.get_version_info().major == 4 and \
- #Engine.get_version_info().minor < XX:
- if ProjectSettings.get_setting("phantom_camera/tips/show_jitter_tips"):
- print_rich("Following or Looking at a [b]PhysicsBody3D[/b] node will likely result in jitter - on lower physics ticks in particular.")
- print_rich("Will have proper support once 3D Physics Interpolation becomes part of the core Godot engine.")
- print_rich("Until then, try following the guide on the [url=https://phantom-camera.dev/support/faq#i-m-seeing-jitter-what-can-i-do]documentation site[/url] for better results.")
- print_rich("This tip can be disabled from within [code]Project Settings / Phantom Camera / Tips / Show Jitter Tips[/code]")
- return
- ## TODO - Enable once Godot supports 3D Physics Interpolation
- #elif not ProjectSettings.get_setting("physics/common/physics_interpolation"):
- #printerr("Physics Interpolation is disabled in the Project Settings, recommend enabling it to smooth out physics-based camera movement")
- #_follow_target_physics_based = true
-
## Assigns a new [param Vector3] for the [param follow_offset] property.
func set_follow_offset(value: Vector3) -> void:
func set_shape(value: Shape3D) -> void:
shape = value
if is_instance_valid(_follow_spring_arm):
- _follow_spring_arm.shape = shape
+ if shape:
+ _follow_spring_arm.shape = shape
+ else:
+ _follow_spring_arm.shape = _get_camera_shape()
## Gets [param ThirdPerson] [member SpringArm3D.shape] value.
func get_shape() -> Shape3D:
## Gets the current [member look_at_mode]. Value is based on [enum LookAtMode]
## enum.[br]
-## Note: To set a new [member look_at_mode], a separate [param PhantomCamera3D] should
-## be used.
+## Note: To set a new [member look_at_mode], a separate [param PhantomCamera3D] should be used.
func get_look_at_mode() -> int:
return look_at_mode
## Assigns new [Node3D] as [member look_at_target].
func set_look_at_target(value: Node3D) -> void:
+ if look_at_mode == LookAtMode.NONE: return
+ if look_at_target == value: return
look_at_target = value
- _check_physics_body(value)
- #_look_at_target_node = get_node_or_null(value)
- look_at_target_changed
- if is_instance_valid(look_at_target):
- _should_look_at = true
- else:
+ if not look_at_mode == LookAtMode.GROUP:
+ if is_instance_valid(look_at_target):
+ _should_look_at = true
+ _check_physics_body(value)
+ if not look_at_target.tree_exiting.is_connected(_look_at_target_tree_exiting):
+ look_at_target.tree_exiting.connect(_look_at_target_tree_exiting.bind(look_at_target))
+ else:
+ _should_look_at = false
+ elif look_at_targets.size() == 0:
_should_look_at = false
+
+ look_at_target_changed.emit()
notify_property_list_changed()
## Gets current [Node3D] from [member look_at_target] property.
-func get_look_at_target():
+func get_look_at_target() -> Node3D:
return look_at_target
## Sets an array of type [Node3D] to [member set_look_at_targets].
func set_look_at_targets(value: Array[Node3D]) -> void:
+ if not look_at_mode == LookAtMode.GROUP: return
if look_at_targets == value: return
look_at_targets = value
- if look_at_mode != LookAtMode.GROUP: return
-
- if look_at_targets.is_empty():
- _should_look_at = false
- _multiple_look_at_targets = false
- else:
- var valid_instances: int = 0
- for target in look_at_targets:
- if is_instance_valid(target):
- valid_instances += 1
- _should_look_at = true
- _valid_look_at_targets.append(target)
- _check_physics_body(target)
-
- if valid_instances > 1:
- _multiple_look_at_targets = true
- elif valid_instances == 0:
- _should_look_at = false
- _multiple_look_at_targets = false
+ _look_at_targets_size_check()
notify_property_list_changed()
## Appends a [Node3D] to [member look_at_targets] array.
func append_look_at_target(value: Node3D) -> void:
+ if not is_instance_valid(value):
+ printerr(value, "is an invalid Node3D instance")
+ return
+
if not look_at_targets.has(value):
look_at_targets.append(value)
- _valid_look_at_targets.append(value)
- _check_physics_body(value)
- if look_at_targets.size() > 1:
- _multiple_look_at_targets = true
+ _look_at_targets_size_check()
else:
printerr(value, " is already part of Look At Group")
+
## Appends an array of type [Node3D] to [member look_at_targets] array.
-func append_look_at_targets_array(value: Array[NodePath]) -> void:
+func append_look_at_targets_array(value: Array[Node3D]) -> void:
for val in value:
- if not look_at_targets.has(get_node(val)):
- var node: Node3D = get_node(val)
- look_at_targets.append(node)
- _valid_look_at_targets.append(node)
- _check_physics_body(node)
- if look_at_targets.size() > 1:
- _multiple_look_at_targets = true
+ if not is_instance_valid(val): continue
+ if not look_at_targets.has(val):
+ look_at_targets.append(val)
+ _look_at_targets_size_check()
else:
printerr(val, " is already part of Look At Group")
## Removes [Node3D] from [member look_at_targets] array.
+func erase_look_at_targets(value: Node3D) -> void:
+ if look_at_targets.has(value):
+ look_at_targets.erase(value)
+ _look_at_targets_size_check()
+ else:
+ printerr(value, " is not part of Look At Group")
+
+
+## Removes [Node3D] from [member look_at_targets] array. [br]
+## @deprecated: Use [member erase_look_at_targets] instead.
func erase_look_at_targets_member(value: Node3D) -> void:
- look_at_targets.erase(value)
- _valid_look_at_targets.erase(value)
- _check_physics_body(value)
- if look_at_targets.size() < 1:
- _multiple_look_at_targets = false
+ printerr("erase_look_at_targets_member is deprecated, use erase_look_at_targets instead")
+ erase_look_at_targets(value)
## Gets all the [Node3D] instances in [member look_at_targets].
func get_look_at_targets() -> Array[Node3D]:
return look_at_damping_value
+func set_follow_axis_lock(value: FollowLockAxis) -> void:
+ follow_axis_lock = value
+
+ # Wait for the node to be ready before setting lock
+ if not is_node_ready(): await ready
+
+ # Prevent axis lock from working in the editor
+ if value != FollowLockAxis.NONE and not Engine.is_editor_hint():
+ _follow_axis_is_locked = true
+ match value:
+ FollowLockAxis.X:
+ _follow_axis_lock_value.x = _transform_output.origin.x
+ FollowLockAxis.Y:
+ _follow_axis_lock_value.y = _transform_output.origin.y
+ FollowLockAxis.Z:
+ _follow_axis_lock_value.z = _transform_output.origin.z
+ FollowLockAxis.XY:
+ _follow_axis_lock_value.x = _transform_output.origin.x
+ _follow_axis_lock_value.y = _transform_output.origin.y
+ FollowLockAxis.XZ:
+ _follow_axis_lock_value.x = _transform_output.origin.x
+ _follow_axis_lock_value.z = _transform_output.origin.z
+ FollowLockAxis.YZ:
+ _follow_axis_lock_value.y = _transform_output.origin.y
+ _follow_axis_lock_value.z = _transform_output.origin.z
+ FollowLockAxis.XYZ:
+ _follow_axis_lock_value.x = _transform_output.origin.x
+ _follow_axis_lock_value.y = _transform_output.origin.y
+ _follow_axis_lock_value.z = _transform_output.origin.z
+ else:
+ _follow_axis_is_locked = false
+
+func get_follow_axis_lock() -> FollowLockAxis:
+ return follow_axis_lock
+
+
+## Sets a [PhantomCameraNoise3D] resource
+func set_noise(value: PhantomCameraNoise3D) -> void:
+ noise = value
+ if value != null:
+ _has_noise_resource = true
+ noise.set_trauma(1)
+ else:
+ _has_noise_resource = false
+ _transform_noise = Transform3D()
+
+func get_noise() -> PhantomCameraNoise3D:
+ return noise
+
+
+## Sets the [member noise_emitter_layer] value.
+func set_noise_emitter_layer(value: int) -> void:
+ noise_emitter_layer = value
+
+## Enables or disables a given layer of the [member noise_emitter_layer] value.
+func set_noise_emitter_layer_value(value: int, enabled: bool) -> void:
+ noise_emitter_layer = _set_layer(noise_emitter_layer, value, enabled)
+
+## Returns the [member noise_emitter_layer]
+func get_noise_emitter_layer() -> int:
+ return noise_emitter_layer
+
+
## Sets [member inactive_update_mode] property.
func set_inactive_update_mode(value: int) -> void:
inactive_update_mode = value
return camera_3d_resource.cull_mask
+## Assigns a new [Environment] resource to the [Camera3DResource].
+func set_environment(value: Environment):
+ environment = value
+
+## Gets the [Camera3D.environment] value assigned to the [Camera3DResource].
+func get_environment() -> Environment:
+ return environment
+
+
+## Assigns a new [CameraAttributes] resource to the [Camera3DResource].
+func set_attributes(value: CameraAttributes):
+ attributes = value
+
+## Gets the [Camera3D.attributes] value assigned to the [Camera3DResource].
+func get_attributes() -> CameraAttributes:
+ return attributes
+
+
## Assigns a new [member Camera3D.h_offset] value.[br]
## [b]Note:[/b] This will override and make the [param Camera3DResource] unique to
## this [param PhantomCamera3D].
return camera_3d_resource.far
-func set_follow_target_physics_based(value: bool, caller: Node) -> void:
- if is_instance_of(caller, PhantomCameraHost):
- _follow_target_physics_based = value
- else:
- printerr("set_follow_target_physics_based is for internal use only.")
-
func get_follow_target_physics_based() -> bool:
return _follow_target_physics_based
--- /dev/null
+uid://dx2xjqphsq8th
--- /dev/null
+uid://dr0hukwkwxmdi
--- /dev/null
+@tool
+@icon("res://addons/phantom_camera/icons/phantom_camera_noise_emitter_2d.svg")
+class_name PhantomCameraNoiseEmitter2D
+extends Node2D
+
+## Emits positional and rotational noise to active [PhantomCamera2D]s and its corresponding [Camera2D].
+##
+## Is a node meant to apply positional and rotational noise, also referred to as shake, to the [Camera2D].
+## It is designed for use cases such as when hitting or when being hit, earthquakes or to add a
+## bit of slight movement to the camera to make it feel less static.
+## The emitter can affect multiple [PhantomCamera2D] in a given scene based on which [member noise_emitter_layer]
+## are enabled by calling its [method emit] function. At least one corresponding layer has to be
+## set on the [PhantomCamera2D] and the emitter node.
+
+const _constants = preload("res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_constants.gd")
+
+#region Exported Proerpties
+
+## The [PhantomCameraNoise2D] resource that defines the noise pattern.
+@export var noise: PhantomCameraNoise2D = null:
+ set = set_noise,
+ get = get_noise
+
+## If true, previews the noise in the editor - can be seen in the viewfinder.
+@export var preview: bool = false:
+ set(value):
+ preview = value
+ _play = value
+ get:
+ return preview
+
+## If true, repeats the noise indefinitely once started. Otherwise, it will only be triggered once. [br]
+@export var continuous: bool = false:
+ set = set_continuous,
+ get = get_continuous
+
+## Determines how long the noise should take to reach full [member intensity] once started.[br]
+## The value is set in [b]seconds[/b].
+@export_exp_easing("positive_only", "suffix: s") var growth_time: float = 0:
+ set = set_growth_time,
+ get = get_growth_time
+
+## Sets the duration for the camera noise if [member continuous] is set to [b]false[/b].[br][br]
+## The value is set in [b]seconds[/b].
+@export_range(0, 10, 0.001, "or_greater", "suffix: s") var duration: float = 1.0:
+ set = set_duration,
+ get = get_duration
+
+## Determines how long the noise should take to come to a full stop.[br]
+## The value is set in [b]seconds[/b].
+@export_exp_easing("attenuation", "positive_only", "suffix: s") var decay_time: float = 0:
+ set = set_decay_time,
+ get = get_decay_time
+
+## Enabled layers will affect [PhantomCamera2D] nodes with at least one corresponding layer enabled.[br]
+## Enabling multiple corresponding layers on the same [PhantomCamera2D] causes no additional effect.
+@export_flags_2d_render var noise_emitter_layer: int = 1:
+ set = set_noise_emitter_layer,
+ get = get_noise_emitter_layer
+
+#endregion
+
+
+#region Private Variables
+
+var _play: bool = false:
+ set(value):
+ _play = value
+ if value:
+ _elasped_play_time = 0
+ _decay_countdown = 0
+ _play = true
+ _should_grow = true
+ _start_duration_countdown = false
+ _should_decay = false
+ else:
+ _should_decay = true
+ if noise.randomize_noise_seed:
+ noise.noise_seed = randi() & 1000
+ else:
+ noise.reset_noise_time()
+ get:
+ return _play
+
+var _start_duration_countdown: bool = false
+
+var _decay_countdown: float = 0
+
+var _should_grow: bool = false
+
+var _should_decay: bool = false
+
+var _elasped_play_time: float = 0
+
+var _noise_output: Transform2D = Transform2D()
+
+# NOTE - Temp solution until Godot has better plugin autoload recognition out-of-the-box.
+var _phantom_camera_manager: Node
+
+#endregion
+
+#region Private Functions
+
+func _get_configuration_warnings() -> PackedStringArray:
+ if noise == null:
+ return ["Noise resource is required in order to trigger emitter."]
+ else:
+ return []
+
+
+func _validate_property(property) -> void:
+ if property.name == "duration" and continuous:
+ property.usage = PROPERTY_USAGE_NO_EDITOR
+
+
+func _enter_tree() -> void:
+ _phantom_camera_manager = get_tree().root.get_node(_constants.PCAM_MANAGER_NODE_NAME)
+
+
+func _process(delta: float) -> void:
+ if not _play and not _should_decay: return
+ if noise == null:
+ printerr("Noise resource missing in ", name)
+ _play = false
+ return
+
+ _elasped_play_time += delta
+
+ if _should_grow:
+ noise.set_trauma(minf(_elasped_play_time / growth_time, 1))
+ if _elasped_play_time >= growth_time:
+ _should_grow = false
+ _start_duration_countdown = true
+ noise.set_trauma(1)
+ else:
+ noise.set_trauma(1)
+
+ if not continuous:
+ if _start_duration_countdown:
+ if _elasped_play_time >= duration + growth_time:
+ _should_decay = true
+ _start_duration_countdown = false
+
+ if _should_decay:
+ _decay_countdown += delta
+ noise.set_trauma(maxf(1 - (_decay_countdown / decay_time), 0))
+ if _decay_countdown >= decay_time:
+ noise.set_trauma(0)
+ _play = false
+ preview = false
+ _should_decay = false
+ _elasped_play_time = 0
+ _decay_countdown = 0
+
+ _noise_output = noise.get_noise_transform(delta)
+ _phantom_camera_manager.noise_2d_emitted.emit(_noise_output, noise_emitter_layer)
+
+
+func _set_layer(current_layers: int, layer_number: int, value: bool) -> int:
+ var mask: int = current_layers
+
+ # From https://github.com/godotengine/godot/blob/51991e20143a39e9ef0107163eaf283ca0a761ea/scene/3d/camera_3d.cpp#L638
+ if layer_number < 1 or layer_number > 20:
+ printerr("Layer must be between 1 and 20.")
+ else:
+ if value:
+ mask |= 1 << (layer_number - 1)
+ else:
+ mask &= ~(1 << (layer_number - 1))
+
+ return mask
+
+#endregion
+
+
+#region Public Functions
+
+## Emits noise to the [PhantomCamera2D]s that has at least one matching layers.
+func emit() -> void:
+ if _play: _play = false
+ _play = true
+
+## Returns the state for the emitter. If true, the emitter is currently emitting.
+func is_emitting() -> bool:
+ return _play
+
+## Stops the emitter from emitting noise.
+func stop(should_decay: bool = true) -> void:
+ if should_decay:
+ _should_decay = true
+ else:
+ _play = false
+
+## Toggles the emitter on and off.
+func toggle() -> void:
+ _play = !_play
+
+#endregion
+
+
+#region Setter & Getter Functions
+
+## Sets the [member noise] resource.
+func set_noise(value: PhantomCameraNoise2D) -> void:
+ noise = value
+ update_configuration_warnings()
+
+## Returns the [member noise] resource.
+func get_noise() -> PhantomCameraNoise2D:
+ return noise
+
+
+## Sets the [member continous] value.
+func set_continuous(value: bool) -> void:
+ continuous = value
+ notify_property_list_changed()
+
+## Gets the [member continous] value.
+func get_continuous() -> bool:
+ return continuous
+
+
+## Sets the [member growth_time] value.
+func set_growth_time(value: float) -> void:
+ growth_time = value
+
+## Returns the [member growth_time] value.
+func get_growth_time() -> float:
+ return growth_time
+
+
+## Sets the [member duration] value.
+func set_duration(value: float) -> void:
+ duration = value
+ if duration == 0:
+ duration = 0.001
+
+## Returns the [member duration] value.
+func get_duration() -> float:
+ return duration
+
+
+## Sets the [member decay_time] value.
+func set_decay_time(value: float) -> void:
+ decay_time = value
+
+## Returns the [member decay_time] value.
+func get_decay_time() -> float:
+ return decay_time
+
+
+## Sets the [member noise_emitter_layer] value.
+func set_noise_emitter_layer(value: int) -> void:
+ noise_emitter_layer = value
+
+## Enables or disables a given layer of the [member noise_emitter_layer] value.
+func set_noise_emitter_value(value: int, enabled: bool) -> void:
+ noise_emitter_layer = _set_layer(noise_emitter_layer, value, enabled)
+
+## Returns the [member noise_emitter_layer] value.
+func get_noise_emitter_layer() -> int:
+ return noise_emitter_layer
+
+#endregion
\ No newline at end of file
--- /dev/null
+uid://bw365gklqyl3d
--- /dev/null
+@tool
+@icon("res://addons/phantom_camera/icons/phantom_camera_noise_emitter_3d.svg")
+class_name PhantomCameraNoiseEmitter3D
+extends Node3D
+
+## Emits positional and rotational noise to active [PhantomCamera3D]s and its corresponding [Camera3D].
+##
+## Is a node meant to apply positional and rotational noise, also referred to as shake, to the [Camera3D].
+## It is designed for use cases such as when hitting or when being hit, earthquakes or to add a
+## bit of slight movement to the camera to make it feel less static.
+## The emitter can affect multiple [PhantomCamera3D] in a given scene based on which [member noise_emitter_layer]
+## are enabled by calling its [method emit] function. At least one corresponding layer has to be
+## set on the [PhantomCamera3D] and the emitter node.
+
+const _constants = preload("res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_constants.gd")
+
+#region Exported Properties
+
+## The [PhantomCameraNoise3D] resource that defines the noise pattern.
+@export var noise: PhantomCameraNoise3D = null:
+ set = set_noise,
+ get = get_noise
+
+## If true, previews the noise in the Viewfinder.
+@export var preview: bool = false:
+ set(value):
+ preview = value
+ _play = value
+ get:
+ return preview
+
+## If true, repeats the noise indefinitely once started.Otherwise, it will only be triggered once. [br]
+## [b]Note:[/b] This will always be enabled if the resource is assigned the the [PhantomCamera3D]'s
+## [member PhantomCamera3D.noise] property.
+@export var continuous: bool = false:
+ set = set_continuous,
+ get = get_continuous
+
+## Determines how long the noise should take to reach full [member intensity] once started.[br]
+## The value is set in [b]seconds[/b].
+@export_exp_easing("positive_only", "suffix: s") var growth_time: float = 0:
+ set = set_growth_time,
+ get = get_growth_time
+
+## Sets the duration for the camera noise if [member loop] is set to false.[br]
+## If the duration is [param 0] then [member continous] becomes enabled.[br]
+## The value is set in [b]seconds[/b].
+@export_range(0, 10, 0.001, "or_greater", "suffix: s") var duration: float = 1.0:
+ set = set_duration,
+ get = get_duration
+
+## Determines how long the noise should take to come to a full stop.[br]
+## The value is set in [b]seconds[/b].
+@export_exp_easing("attenuation", "positive_only", "suffix: s") var decay_time: float = 0:
+ set = set_decay_time,
+ get = get_decay_time
+
+## Enabled layers will affect [PhantomCamera3D] nodes with at least one corresponding layer enabled.[br]
+## Enabling multiple corresponding layers on the same [PhantomCamera3D] causes no additional effect.
+@export_flags_3d_render var noise_emitter_layer: int = 1:
+ set = set_noise_emitter_layer,
+ get = get_noise_emitter_layer
+
+#endregion
+
+#region Private Variables
+
+var _play: bool = false:
+ set(value):
+ _play = value
+ if value:
+ _elasped_play_time = 0
+ _decay_countdown = 0
+ _play = true
+ _should_grow = true
+ _start_duration_countdown = false
+ _should_decay = false
+ else:
+ _should_decay = true
+ if noise.randomize_noise_seed:
+ noise.noise_seed = randi() & 1000
+ else:
+ noise.reset_noise_time()
+ get:
+ return _play
+
+var _start_duration_countdown: bool = false
+
+var _decay_countdown: float = 0
+
+var _should_grow: bool = false
+
+var _should_decay: bool = false
+
+var _elasped_play_time: float = 0
+
+var _noise_output: Transform3D = Transform3D()
+
+# NOTE - Temp solution until Godot has better plugin autoload recognition out-of-the-box.
+var _phantom_camera_manager: Node
+
+#endregion
+
+#region Private Functions
+
+func _get_configuration_warnings() -> PackedStringArray:
+ if noise == null:
+ return ["Noise resource is required in order to trigger emitter."]
+ else:
+ return []
+
+
+func _validate_property(property) -> void:
+ if property.name == "duration" and continuous:
+ property.usage = PROPERTY_USAGE_NO_EDITOR
+
+
+func _enter_tree() -> void:
+ _phantom_camera_manager = get_tree().root.get_node(_constants.PCAM_MANAGER_NODE_NAME)
+
+
+func _process(delta: float) -> void:
+ if not _play and not _should_decay: return
+ if noise == null:
+ printerr("Noise resource missing in ", name)
+ _play = false
+ return
+
+ _elasped_play_time += delta
+
+ if _should_grow:
+ noise.set_trauma(minf(_elasped_play_time / growth_time, 1))
+ if _elasped_play_time >= growth_time:
+ _should_grow = false
+ _start_duration_countdown = true
+ noise.set_trauma(1)
+
+ if not continuous:
+ if _start_duration_countdown:
+ if _elasped_play_time >= duration + growth_time:
+ _should_decay = true
+ _start_duration_countdown = false
+
+ if _should_decay:
+ _decay_countdown += delta
+ noise.set_trauma(maxf(1 - (_decay_countdown / decay_time), 0))
+ if _decay_countdown >= decay_time:
+ noise.set_trauma(0)
+ _play = false
+ preview = false
+ _should_decay = false
+ _elasped_play_time = 0
+ _decay_countdown = 0
+
+ _noise_output = noise.get_noise_transform(delta)
+ _phantom_camera_manager.noise_3d_emitted.emit(_noise_output, noise_emitter_layer)
+
+
+func _set_layer(current_layers: int, layer_number: int, value: bool) -> int:
+ var mask: int = current_layers
+
+ # From https://github.com/godotengine/godot/blob/51991e20143a39e9ef0107163eaf283ca0a761ea/scene/3d/camera_3d.cpp#L638
+ if layer_number < 1 or layer_number > 20:
+ printerr("Layer must be between 1 and 20.")
+ else:
+ if value:
+ mask |= 1 << (layer_number - 1)
+ else:
+ mask &= ~(1 << (layer_number - 1))
+
+ return mask
+
+#endregion
+
+#region Public Functions
+
+## Emits noise to the [PhantomCamera3D]s that has at least one matching layers.
+func emit() -> void:
+ if _play: _play = false
+ _play = true
+
+
+## Returns the state for the emitter. If true, the emitter is currently emitting.
+func is_emitting() -> bool:
+ return _play
+
+
+## Stops the emitter from emitting noise.
+func stop(should_decay: bool = true) -> void:
+ if should_decay:
+ _should_decay = true
+ else:
+ _play = false
+
+
+## Toggles the emitter on and off.[br]
+func toggle() -> void:
+ _play = !_play
+
+#endregion
+
+#region Setter & Getter Functions
+
+## Sets the [member noise] resource.
+func set_noise(value: PhantomCameraNoise3D) -> void:
+ noise = value
+ update_configuration_warnings()
+
+## Returns the [member noise] resource.
+func get_noise() -> PhantomCameraNoise3D:
+ return noise
+
+
+## Sets the [member continous] value.
+func set_continuous(value: bool) -> void:
+ continuous = value
+ notify_property_list_changed()
+
+## Gets the [member continous] value.
+func get_continuous() -> bool:
+ return continuous
+
+
+## Sets the [member growth_time] value.
+func set_growth_time(value: float) -> void:
+ growth_time = value
+
+## Returns the [member growth_time] value.
+func get_growth_time() -> float:
+ return growth_time
+
+
+## Sets the [member duration] value.
+func set_duration(value: float) -> void:
+ duration = value
+ if duration == 0:
+ duration = 0.001
+
+## Returns the [member duration] value.
+func get_duration() -> float:
+ return duration
+
+
+## Sets the [member decay_time] value.
+func set_decay_time(value: float) -> void:
+ decay_time = value
+
+## Returns the [member decay_time] value.
+func get_decay_time() -> float:
+ return decay_time
+
+
+## Sets the [member noise_emitter_layer] value.
+func set_noise_emitter_layer(value: int) -> void:
+ noise_emitter_layer = value
+
+## Enables or disables a given layer of the [member noise_emitter_layer] value.
+func set_noise_emitter_value(value: int, enabled: bool) -> void:
+ noise_emitter_layer = _set_layer(noise_emitter_layer, value, enabled)
+
+## Returns the [member noise_emitter_layer] value.
+func get_noise_emitter_layer() -> int:
+ return noise_emitter_layer
+
+ #endregion
+
--- /dev/null
+uid://0qmywjw0komx
#endregion
+#region
+
+## TBD - For when Godot 4.3 becomes the minimum version
+#@export var interpolation_mode: InterpolationMode = InterpolationMode.AUTO:
+ #set = set_interpolation_mode,
+ #get = get_interpolation_mode
+
+#endregion
#region Signals
#endregion
-
#region Variables
enum InterpolationMode {
- AUTO = 0,
- IDLE = 1,
+ AUTO = 0,
+ IDLE = 1,
PHYSICS = 2,
}
-## TBD - For when Godot 4.3 becomes the minimum version
-#@export var interpolation_mode: InterpolationMode = InterpolationMode.AUTO:
- #set = set_interpolation_mode,
- #get = get_interpolation_mode
-
+#endregion
-## For 2D scenes, is the [Camera2D] instance the [param PhantomCameraHost] controls.
-var camera_2d: Camera2D = null
-## For 3D scenes, is the [Camera3D] instance the [param PhantomCameraHost] controls.
-var camera_3d = null ## Note: To support disable_3d export templates for 2D projects, this is purposely not strongly typed.
+#region Private Variables
var _pcam_list: Array[Node] = []
var _active_pcam_2d: PhantomCamera2D = null
-var _active_pcam_3d = null ## Note: To support disable_3d export templates for 2D projects, this is purposely not strongly typed.
+var _active_pcam_3d: Node = null ## Note: To support disable_3d export templates for 2D projects, this is purposely not strongly typed.
var _active_pcam_priority: int = -1
var _active_pcam_missing: bool = true
var _active_pcam_has_damping: bool = false
var _trigger_pcam_tween: bool = false
var _tween_elapsed_time: float = 0
var _tween_duration: float = 0
+var _tween_is_instant: bool = false
var _multiple_pcam_hosts: bool = false
var _is_child_of_camera: bool = false
var _is_2D: bool = false
-
var _viewfinder_node: Control = null
var _viewfinder_needed_check: bool = true
var _camera_zoom: Vector2 = Vector2.ONE
#region Camera3DResource
+
+var _prev_cam_attributes: CameraAttributes = null
+var _cam_attribute_type: int = 0 # 0 = CameraAttributesPractical, 1 = CameraAttributesPhysical
+var _cam_attribute_changed: bool = false
+var _cam_attribute_assigned: bool = false
+
+#region CameraAttributes
+var _prev_cam_auto_exposure_scale: float = 0.4
+var _cam_auto_exposure_scale_changed: bool = false
+
+var _prev_cam_auto_exposure_speed: float = 0.5
+var _cam_auto_exposure_speed_changed: bool = false
+
+var _prev_cam_exposure_multiplier: float = 1.0
+var _cam_exposure_multiplier_changed: bool = false
+
+var _prev_cam_exposure_sensitivity: float = 100.0
+var _cam_exposure_sensitivity_changed: bool = false
+
+#region CameraAttributesPractical
+var _prev_cam_exposure_min_sensitivity: float = 0.0
+var _cam_exposure_min_sensitivity_changed: bool = false
+
+var _prev_cam_exposure_max_sensitivity: float = 800.0
+var _cam_exposure_max_sensitivity_changed: bool = false
+
+var _prev_cam_dof_blur_amount: float = 0.1
+var _cam_dof_blur_amount_changed: bool = false
+
+var _cam_dof_blur_far_distance_default: float = 10
+var _prev_cam_dof_blur_far_distance: float = _cam_dof_blur_far_distance_default
+var _cam_dof_blur_far_distance_changed: bool = false
+
+var _cam_dof_blur_far_transition_default: float = 5
+var _prev_cam_dof_blur_far_transition: float = _cam_dof_blur_far_transition_default
+var _cam_dof_blur_far_transition_changed: bool = false
+
+var _cam_dof_blur_near_distance_default: float = 2
+var _prev_cam_dof_blur_near_distance: float = _cam_dof_blur_near_distance_default
+var _cam_dof_blur_near_distance_changed: bool = false
+
+var _cam_dof_blur_near_transition_default: float = 1
+var _prev_cam_dof_blur_near_transition: float = _cam_dof_blur_near_transition_default
+var _cam_dof_blur_near_transition_changed: bool = false
+#endregion
+
+#region CameraAttributesPhysical
+var _prev_cam_exposure_min_exposure_value: float = 10.0
+var _cam_exposure_min_exposure_value_changed: bool = false
+
+var _prev_cam_exposure_max_exposure_value: float = -8.0
+var _cam_exposure_max_exposure_value_changed: bool = false
+
+var _prev_cam_exposure_aperture: float = 16.0
+var _cam_exposure_aperture_changed: bool = false
+
+var _prev_cam_exposure_shutter_speed: float = 100.0
+var _cam_exposure_shutter_speed_changed: bool = false
+
+var _prev_cam_frustum_far: float = 4000.0
+var _cam_frustum_far_changed: bool = false
+
+var _prev_cam_frustum_focal_length: float = 35.0
+var _cam_frustum_focal_length_changed: bool = false
+
+var _prev_cam_frustum_near: float = 0.05
+var _cam_frustum_near_changed: bool = false
+
+var _prev_cam_frustum_focus_distance: float = 10.0
+var _cam_frustum_focus_distance_changed: bool = false
+
+#endregion
+
var _prev_cam_h_offset: float = 0
var _cam_h_offset_changed: bool = false
var _prev_cam_far: float = 4000
var _cam_far_changed: bool = false
+
#endregion
var _active_pcam_2d_glob_transform: Transform2D = Transform2D()
var _active_pcam_3d_glob_transform: Transform3D = Transform3D()
+var _has_noise_emitted: bool = false
+var _noise_emitted_output_2d: Transform2D = Transform2D()
+var _noise_emitted_output_3d: Transform3D = Transform3D()
+
#endregion
# NOTE - Temp solution until Godot has better plugin autoload recognition out-of-the-box.
var _phantom_camera_manager: Node
+#region Public Variables
+
+## For 2D scenes, is the [Camera2D] instance the [param PhantomCameraHost] controls.
+var camera_2d: Camera2D = null
+## For 3D scenes, is the [Camera3D] instance the [param PhantomCameraHost] controls.
+var camera_3d: Node = null ## Note: To support disable_3d export templates for 2D projects, this is purposely not strongly typed.
+
+#endregion
+
#region Private Functions
## TBD - For when Godot 4.3 becomes a minimum version
func _get_configuration_warnings() -> PackedStringArray:
- var parent = get_parent()
+ var parent: Node = get_parent()
if _is_2D:
if not parent is Camera2D:
func _enter_tree() -> void:
_phantom_camera_manager = get_tree().root.get_node(_constants.PCAM_MANAGER_NODE_NAME)
- var parent = get_parent()
+ var parent: Node = get_parent()
if parent is Camera2D or parent.is_class("Camera3D"): ## Note: To support disable_3d export templates for 2D projects, this is purposely not strongly typed.
_is_child_of_camera = true
func _exit_tree() -> void:
- _phantom_camera_manager.pcam_host_removed(self)
- _check_camera_host_amount()
+ if is_instance_valid(_phantom_camera_manager):
+ _phantom_camera_manager.pcam_host_removed(self)
+ _check_camera_host_amount()
func _ready() -> void:
- if not is_instance_valid(_active_pcam_2d) or is_instance_valid(_active_pcam_3d): return
+ process_priority = 300
+ process_physics_priority = 300
+
if _is_2D:
- _active_pcam_2d_glob_transform = _active_pcam_2d.get_global_transform()
+ camera_2d.offset = Vector2.ZERO
+ if not is_instance_valid(_active_pcam_2d): return
+ _active_pcam_2d_glob_transform = _active_pcam_2d.get_transform_output()
else:
- _active_pcam_3d_glob_transform = _active_pcam_3d.get_global_transform()
+ if not is_instance_valid(_active_pcam_3d): return
+ _active_pcam_3d_glob_transform = _active_pcam_3d.get_transform_output()
func _check_camera_host_amount() -> void:
func _assign_new_active_pcam(pcam: Node) -> void:
+ # Only checks if the scene tree is still present.
+ # Prevents a few errors and checks from happening if the scene is exited.
+ if not is_inside_tree(): return
var no_previous_pcam: bool
-
if is_instance_valid(_active_pcam_2d) or is_instance_valid(_active_pcam_3d):
if _is_2D:
- _prev_active_pcam_2d_transform = camera_2d.get_global_transform()
+ _prev_active_pcam_2d_transform = camera_2d.global_transform
_active_pcam_2d.queue_redraw()
_active_pcam_2d.set_is_active(self, false)
_active_pcam_2d.became_inactive.emit()
+ if _active_pcam_2d.physics_target_changed.is_connected(_check_pcam_physics):
+ _active_pcam_2d.physics_target_changed.disconnect(_check_pcam_physics)
+
+ if _active_pcam_2d.noise_emitted.is_connected(_noise_emitted_2d):
+ _active_pcam_2d.noise_emitted.disconnect(_noise_emitted_2d)
+
if _trigger_pcam_tween:
_active_pcam_2d.tween_interrupted.emit(pcam)
else:
- _prev_active_pcam_3d_transform = camera_3d.get_global_transform()
+ _prev_active_pcam_3d_transform = camera_3d.global_transform
+ _active_pcam_3d.set_is_active(self, false)
+ _active_pcam_3d.became_inactive.emit()
+
+ if _active_pcam_3d.physics_target_changed.is_connected(_check_pcam_physics):
+ _active_pcam_3d.physics_target_changed.disconnect(_check_pcam_physics)
+
+ if _active_pcam_3d.noise_emitted.is_connected(_noise_emitted_3d):
+ _active_pcam_3d.noise_emitted.disconnect(_noise_emitted_3d)
+
+ if _trigger_pcam_tween:
+ _active_pcam_3d.tween_interrupted.emit(pcam)
+
+ if camera_3d.attributes != null:
+ var _attributes: CameraAttributes = camera_3d.attributes
+
+ _prev_cam_exposure_multiplier = _attributes.exposure_multiplier
+ _prev_cam_auto_exposure_scale = _attributes.auto_exposure_scale
+ _prev_cam_auto_exposure_speed = _attributes.auto_exposure_speed
+
+ if camera_3d.attributes is CameraAttributesPractical:
+ _attributes = _attributes as CameraAttributesPractical
+
+ _prev_cam_dof_blur_amount = _attributes.dof_blur_amount
+
+ if _attributes.dof_blur_far_enabled:
+ _prev_cam_dof_blur_far_distance = _attributes.dof_blur_far_distance
+ _prev_cam_dof_blur_far_transition = _attributes.dof_blur_far_transition
+ else:
+ _prev_cam_dof_blur_far_distance = _cam_dof_blur_far_distance_default
+ _prev_cam_dof_blur_far_transition = _cam_dof_blur_far_transition_default
+
+ if _attributes.dof_blur_near_enabled:
+ _prev_cam_dof_blur_near_distance = _attributes.dof_blur_near_distance
+ _prev_cam_dof_blur_near_transition = _attributes.dof_blur_near_transition
+ else:
+ _prev_cam_dof_blur_near_distance = _cam_dof_blur_near_distance_default
+ _prev_cam_dof_blur_near_transition = _cam_dof_blur_near_transition_default
+
+ if _attributes.auto_exposure_enabled:
+ _prev_cam_exposure_max_sensitivity = _attributes.auto_exposure_max_sensitivity
+ _prev_cam_exposure_min_sensitivity = _attributes.auto_exposure_min_sensitivity
+
+ elif camera_3d.attributes is CameraAttributesPhysical:
+ _attributes = _attributes as CameraAttributesPhysical
+
+ _prev_cam_frustum_focus_distance = _attributes.frustum_focus_distance
+ _prev_cam_frustum_focal_length = _attributes.frustum_focal_length
+ _prev_cam_frustum_far = _attributes.frustum_far
+ _prev_cam_frustum_near = _attributes.frustum_near
+ _prev_cam_exposure_aperture = _attributes.exposure_aperture
+ _prev_cam_exposure_shutter_speed = _attributes.exposure_shutter_speed
+
+ if _attributes.auto_exposure_enabled:
+ _prev_cam_exposure_min_exposure_value = _attributes.auto_exposure_min_exposure_value
+ _prev_cam_exposure_max_exposure_value = _attributes.auto_exposure_max_exposure_value
_prev_cam_h_offset = camera_3d.h_offset
_prev_cam_v_offset = camera_3d.v_offset
_prev_cam_near = camera_3d.near
_prev_cam_far = camera_3d.far
- _active_pcam_3d.set_is_active(self, false)
- _active_pcam_3d.became_inactive.emit()
-
- if _trigger_pcam_tween:
- _active_pcam_3d.tween_interrupted.emit(pcam)
else:
no_previous_pcam = true
_active_pcam_2d = pcam
_active_pcam_priority = _active_pcam_2d.priority
_active_pcam_has_damping = _active_pcam_2d.follow_damping
- _tween_duration = _active_pcam_2d.get_tween_duration()
+ _tween_duration = _active_pcam_2d.tween_duration
+
+ if not _active_pcam_2d.physics_target_changed.is_connected(_check_pcam_physics):
+ _active_pcam_2d.physics_target_changed.connect(_check_pcam_physics)
+
+ if not _active_pcam_2d.noise_emitted.is_connected(_noise_emitted_2d):
+ _active_pcam_2d.noise_emitted.connect(_noise_emitted_2d)
else:
_active_pcam_3d = pcam
_active_pcam_priority = _active_pcam_3d.priority
_active_pcam_has_damping = _active_pcam_3d.follow_damping
- _tween_duration = _active_pcam_3d.get_tween_duration()
+ _tween_duration = _active_pcam_3d.tween_duration
+
+ if not _active_pcam_3d.physics_target_changed.is_connected(_check_pcam_physics):
+ _active_pcam_3d.physics_target_changed.connect(_check_pcam_physics)
+
+ if not _active_pcam_3d.noise_emitted.is_connected(_noise_emitted_3d):
+ _active_pcam_3d.noise_emitted.connect(_noise_emitted_3d)
- # Checks if the Camera3DResource has changed from previous Active PCam3D
- if _active_pcam_3d.get_camera_3d_resource():
- if _prev_cam_h_offset != _active_pcam_3d.get_h_offset():
+ # Checks if the Camera3DResource has changed from the previous active PCam3D
+ if _active_pcam_3d.camera_3d_resource:
+ if _prev_cam_h_offset != _active_pcam_3d.h_offset:
_cam_h_offset_changed = true
- if _prev_cam_v_offset != _active_pcam_3d.get_v_offset():
+ if _prev_cam_v_offset != _active_pcam_3d.v_offset:
_cam_v_offset_changed = true
- if _prev_cam_fov != _active_pcam_3d.get_fov():
+ if _prev_cam_fov != _active_pcam_3d.fov:
_cam_fov_changed = true
- if _prev_cam_size != _active_pcam_3d.get_size():
+ if _prev_cam_size != _active_pcam_3d.size:
_cam_size_changed = true
- if _prev_cam_frustum_offset != _active_pcam_3d.get_frustum_offset():
+ if _prev_cam_frustum_offset != _active_pcam_3d.frustum_offset:
_cam_frustum_offset_changed = true
- if _prev_cam_near != _active_pcam_3d.get_near():
+ if _prev_cam_near != _active_pcam_3d.near:
_cam_near_changed = true
- if _prev_cam_far != _active_pcam_3d.get_far():
+ if _prev_cam_far != _active_pcam_3d.far:
_cam_far_changed = true
+ if _active_pcam_3d.attributes == null:
+ _cam_attribute_changed = false
+ else:
+ if _prev_cam_attributes != _active_pcam_3d.attributes:
+ _prev_cam_attributes = _active_pcam_3d.attributes
+ _cam_attribute_changed = true
+ var _attributes: CameraAttributes = _active_pcam_3d.attributes
+
+ if _prev_cam_auto_exposure_scale != _attributes.auto_exposure_scale:
+ _cam_auto_exposure_scale_changed = true
+ if _prev_cam_auto_exposure_speed != _attributes.auto_exposure_speed:
+ _cam_auto_exposure_speed_changed = true
+ if _prev_cam_exposure_multiplier != _attributes.exposure_multiplier:
+ _cam_exposure_multiplier_changed = true
+ if _prev_cam_exposure_sensitivity != _attributes.exposure_sensitivity:
+ _cam_exposure_sensitivity_changed = true
+
+ if _attributes is CameraAttributesPractical:
+ _cam_attribute_type = 0
+
+ if camera_3d.attributes == null:
+ camera_3d.attributes = CameraAttributesPractical.new()
+ camera_3d.attributes = _active_pcam_3d.attributes.duplicate()
+ _cam_attribute_assigned = true
+
+ if _prev_cam_exposure_min_sensitivity != _attributes.auto_exposure_min_sensitivity:
+ _cam_exposure_min_sensitivity_changed = true
+ if _prev_cam_exposure_max_sensitivity != _attributes.auto_exposure_max_sensitivity:
+ _cam_exposure_max_sensitivity_changed = true
+
+ if _prev_cam_dof_blur_amount != _attributes.dof_blur_amount:
+ _cam_dof_blur_amount_changed = true
+
+ if _prev_cam_dof_blur_far_distance != _attributes.dof_blur_far_distance:
+ _cam_dof_blur_far_distance_changed = true
+ camera_3d.attributes.dof_blur_far_enabled = true
+ if _prev_cam_dof_blur_far_transition != _attributes.dof_blur_far_transition:
+ _cam_dof_blur_far_transition_changed = true
+ camera_3d.attributes.dof_blur_far_enabled = true
+
+ if _prev_cam_dof_blur_near_distance != _attributes.dof_blur_near_distance:
+ _cam_dof_blur_near_distance_changed = true
+ camera_3d.attributes.dof_blur_near_enabled = true
+ if _prev_cam_dof_blur_near_transition != _attributes.dof_blur_near_transition:
+ _cam_dof_blur_near_transition_changed = true
+ camera_3d.attributes.dof_blur_near_enabled = true
+ elif _attributes is CameraAttributesPhysical:
+ _cam_attribute_type = 1
+
+ if camera_3d.attributes == null:
+ camera_3d.attributes = CameraAttributesPhysical.new()
+ camera_3d.attributes = _active_pcam_3d.attributes.duplicate()
+
+ if _prev_cam_exposure_min_exposure_value != _attributes.auto_exposure_min_exposure_value:
+ _cam_exposure_min_exposure_value_changed = true
+ if _prev_cam_exposure_max_exposure_value != _attributes.auto_exposure_max_exposure_value:
+ _cam_exposure_max_exposure_value_changed = true
+
+ if _prev_cam_exposure_aperture != _attributes.exposure_aperture:
+ _cam_exposure_aperture_changed = true
+ if _prev_cam_exposure_shutter_speed != _attributes.exposure_shutter_speed:
+ _cam_exposure_shutter_speed_changed = true
+
+ if _prev_cam_frustum_far != _attributes.frustum_far:
+ _cam_frustum_far_changed = true
+
+ if _prev_cam_frustum_focal_length != _attributes.frustum_focal_length:
+ _cam_frustum_focal_length_changed = true
+
+ if _prev_cam_frustum_focus_distance != _attributes.frustum_focus_distance:
+ _cam_frustum_focus_distance_changed = true
+
+ if _prev_cam_frustum_near != _attributes.frustum_near:
+ _cam_frustum_near_changed = true
+
if _is_2D:
if _active_pcam_2d.show_viewfinder_in_play:
_viewfinder_needed_check = true
_active_pcam_2d.set_is_active(self, true)
_active_pcam_2d.became_active.emit()
- _camera_zoom = camera_2d.get_zoom()
- ## TODO - Needs 3D variant once Godot supports physics_interpolation for 3D scenes.
- var _physics_based: bool
+ _camera_zoom = camera_2d.zoom
+ else:
+ if _active_pcam_3d.show_viewfinder_in_play:
+ _viewfinder_needed_check = true
+
+ _active_pcam_3d.set_is_active(self, true)
+ _active_pcam_3d.became_active.emit()
+ if _active_pcam_3d.camera_3d_resource:
+ camera_3d.cull_mask = _active_pcam_3d.cull_mask
+ camera_3d.projection = _active_pcam_3d.projection
+
+ if no_previous_pcam:
+ if _is_2D:
+ _prev_active_pcam_2d_transform = _active_pcam_2d.get_transform_output()
+ else:
+ _prev_active_pcam_3d_transform = _active_pcam_3d.get_transform_output()
+
+ if pcam.get_tween_skip():
+ _tween_elapsed_time = pcam.tween_duration
+ else:
+ _tween_elapsed_time = 0
+
+ if pcam.tween_duration == 0:
+ if Engine.get_version_info().major == 4 and \
+ Engine.get_version_info().minor >= 3:
+ _tween_is_instant = true
- ## NOTE - Only supported in Godot 4.3 or above
+ _check_pcam_physics()
+
+ _trigger_pcam_tween = true
+
+
+func _check_pcam_physics() -> void:
+ if _is_2D:
+ ## NOTE - Only supported in Godot 4.3 or later
if Engine.get_version_info().major == 4 and \
Engine.get_version_info().minor >= 3:
- ## TBD - For when Godot 4.3 becomes the minimum version
- #if interpolation_mode == InterpolationMode.IDLE:
- #_physics_based = false
- #elif interpolation_mode == InterpolationMode.PHYSICS:
- #_physics_based = true
- #else:
- #_physics_based = _active_pcam.follow_target_physics_based
-
- # TBD - REMOVE this line once Godot 4.3 becomes the minimum version
- _physics_based = _active_pcam_2d.get_follow_target_physics_based()
-
- if _physics_based:
+ if _active_pcam_2d.get_follow_target_physics_based():
_follow_target_physics_based = true
- _active_pcam_2d.set_follow_target_physics_based(true, self)
## TODO - Temporary solution to support Godot 4.2
## Remove line below and uncomment the following once Godot 4.3 is min verison.
camera_2d.call("reset_physics_interpolation")
camera_2d.set("physics_interpolation_mode", 1)
#camera_2d.reset_physics_interpolation()
#camera_2d.physics_interpolation_mode = Node.PHYSICS_INTERPOLATION_MODE_ON
+ if ProjectSettings.get_setting("physics/common/physics_interpolation"):
+ camera_2d.process_callback = Camera2D.CAMERA2D_PROCESS_PHYSICS # Prevents a warning
+ else:
+ camera_2d.process_callback = Camera2D.CAMERA2D_PROCESS_IDLE
else:
_follow_target_physics_based = false
- _active_pcam_2d.set_follow_target_physics_based(false, self)
## TODO - Temporary solution to support Godot 4.2
## Remove line below and uncomment the following once Godot 4.3 is min verison.
- camera_2d.set("physics_interpolation_mode", 2)
- #camera_2d.physics_interpolation_mode = Node.PHYSICS_INTERPOLATION_MODE_OFF
- else:
- _follow_target_physics_based = false
- if _active_pcam_3d.show_viewfinder_in_play:
- _viewfinder_needed_check = true
-
- _active_pcam_3d.set_is_active(self, true)
- _active_pcam_3d.became_active.emit()
- if _active_pcam_3d.get_camera_3d_resource():
- camera_3d.cull_mask = _active_pcam_3d.get_cull_mask()
- camera_3d.projection = _active_pcam_3d.get_projection()
-
- if no_previous_pcam:
- if _is_2D:
- _prev_active_pcam_2d_transform = _active_pcam_2d.get_global_transform()
- else:
- _prev_active_pcam_3d_transform = _active_pcam_3d.get_global_transform()
-
- _tween_elapsed_time = 0
- if not pcam.get_has_tweened():
- _trigger_pcam_tween = true
+ camera_2d.set("physics_interpolation_mode", 0)
+ #camera_2d.physics_interpolation_mode = Node.PHYSICS_INTERPOLATION_MODE_INHERIT
+ if get_tree().physics_interpolation:
+ camera_2d.process_callback = Camera2D.CAMERA2D_PROCESS_PHYSICS # Prevents a warning
+ else:
+ camera_2d.process_callback = Camera2D.CAMERA2D_PROCESS_IDLE
else:
- _trigger_pcam_tween = false
+ ## NOTE - Only supported in Godot 4.4 or later
+ if Engine.get_version_info().major == 4 and \
+ Engine.get_version_info().minor >= 4:
+ if get_tree().physics_interpolation or _active_pcam_3d.get_follow_target_physics_based():
+ #if get_tree().physics_interpolation or _active_pcam_3d.get_follow_target_physics_based():
+ _follow_target_physics_based = true
+ ## TODO - Temporary solution to support Godot 4.2
+ ## Remove line below and uncomment the following once Godot 4.3 is min verison.
+ camera_3d.call("reset_physics_interpolation")
+ camera_3d.set("physics_interpolation_mode", 1)
+ #camera_3d.reset_physics_interpolation()
+ #camera_3d.physics_interpolation_mode = Node.PHYSICS_INTERPOLATION_MODE_ON
+ else:
+ _follow_target_physics_based = false
+ ## TODO - Temporary solution to support Godot 4.2
+ ## Remove line below and uncomment the following once Godot 4.3 is min verison.
+ camera_3d.set("physics_interpolation_mode", 0)
func _find_pcam_with_highest_priority() -> void:
for pcam in _pcam_list:
+ if not pcam.visible: continue # Prevents hidden PCams from becoming active
if pcam.get_priority() > _active_pcam_priority:
_assign_new_active_pcam(pcam)
+ pcam.set_tween_skip(self, false)
+ _active_pcam_missing = false
- pcam.set_has_tweened(self, false)
- _active_pcam_missing = false
+## TODO - For 0.8 release
+#func _find_pcam_with_highest_priority() -> void:
+ #var highest_priority_pcam: Node
+ #for pcam in _pcam_list:
+ #if not pcam.visible: continue # Prevents hidden PCams from becoming active
+ #if pcam.priority > _active_pcam_priority:
+ #_active_pcam_priority = pcam.priority
+ #highest_priority_pcam = pcam
+ #pcam.set_has_tweened(self, false)
+#
+ #_active_pcam_missing = false
+#
+ #if is_instance_valid(highest_priority_pcam):
+ #_assign_new_active_pcam(highest_priority_pcam)
+ #else:
+ #_active_pcam_missing = true
-func _process(delta: float):
- if _follow_target_physics_based or _active_pcam_missing: return
+func _process(delta: float) -> void:
+ if _active_pcam_missing: return
+ if not _follow_target_physics_based: _tween_follow_checker(delta)
+
+ if not _has_noise_emitted: return
if _is_2D:
- _active_pcam_2d_glob_transform = _active_pcam_2d.get_global_transform()
+ camera_2d.offset += _noise_emitted_output_2d.origin
+ camera_2d.rotation += _noise_emitted_output_2d.get_rotation() # + _noise_emitted_output_2d.get_rotation()
else:
- _active_pcam_3d_glob_transform = _active_pcam_3d.get_global_transform()
+ camera_3d.global_transform *= _noise_emitted_output_3d
+ _has_noise_emitted = false
- if _trigger_pcam_tween:
- _pcam_tween(delta)
- else:
- _pcam_follow(delta)
+func _physics_process(delta: float) -> void:
+ if _active_pcam_missing or not _follow_target_physics_based: return
+ _tween_follow_checker(delta)
-func _physics_process(delta: float):
- if not _follow_target_physics_based or _active_pcam_missing: return
+func _tween_follow_checker(delta: float) -> void:
if _is_2D:
- _active_pcam_2d_glob_transform = _active_pcam_2d.get_global_transform()
+ _active_pcam_2d.process_logic(delta)
+ _active_pcam_2d_glob_transform = _active_pcam_2d.get_transform_output()
+ else:
+ _active_pcam_3d.process_logic(delta)
+ _active_pcam_3d_glob_transform = _active_pcam_3d.get_transform_output()
+
+ if not _trigger_pcam_tween:
+ # Rechecks physics target if PCam transitioned with an isntant tween
+ if _tween_is_instant:
+ _check_pcam_physics()
+ _tween_is_instant = false
+ _pcam_follow(delta)
else:
- _active_pcam_3d_glob_transform = _active_pcam_3d.get_global_transform()
-
- if _trigger_pcam_tween:
_pcam_tween(delta)
+
+ if _is_2D:
+ camera_2d.offset = Vector2.ZERO
+ camera_2d.offset = _active_pcam_2d.get_noise_transform().origin # + _noise_emitted_output_2d.origin
+ camera_2d.rotation += _active_pcam_2d.get_noise_transform().get_rotation() # + _noise_emitted_output_2d.get_rotation()
else:
- _pcam_follow(delta)
+ camera_3d.global_transform *= _active_pcam_3d.get_noise_transform()
-func _pcam_follow(delta: float) -> void:
+func _pcam_follow(_delta: float) -> void:
if _is_2D:
if not is_instance_valid(_active_pcam_2d): return
else:
if not is_instance_valid(_active_pcam_3d): return
if _active_pcam_missing or not _is_child_of_camera: return
- # When following
- _pcam_set_position(delta)
- if _viewfinder_needed_check:
- _show_viewfinder_in_play()
- _viewfinder_needed_check = false
-
- # TODO - Should be able to find a more efficient way using signals
- if Engine.is_editor_hint():
- if not _is_2D:
- if _active_pcam_3d.get_camera_3d_resource():
- camera_3d.cull_mask = _active_pcam_3d.get_cull_mask()
- camera_3d.h_offset = _active_pcam_3d.get_h_offset()
- camera_3d.v_offset = _active_pcam_3d.get_v_offset()
- camera_3d.projection = _active_pcam_3d.get_projection()
- camera_3d.fov = _active_pcam_3d.get_fov()
- camera_3d.size = _active_pcam_3d.get_size()
- camera_3d.frustum_offset = _active_pcam_3d.get_frustum_offset()
- camera_3d.near = _active_pcam_3d.get_near()
- camera_3d.far = _active_pcam_3d.get_far()
-
-
-func _pcam_set_position(delta: float) -> void:
if _is_2D:
if _active_pcam_2d.snap_to_pixel:
var snap_to_pixel_glob_transform: Transform2D = _active_pcam_2d_glob_transform
snap_to_pixel_glob_transform.origin = snap_to_pixel_glob_transform.origin.round()
camera_2d.global_transform = snap_to_pixel_glob_transform
else:
- camera_2d.global_transform =_active_pcam_2d_glob_transform
+ camera_2d.global_transform = _active_pcam_2d_glob_transform
camera_2d.zoom = _active_pcam_2d.zoom
else:
camera_3d.global_transform = _active_pcam_3d_glob_transform
+ if _viewfinder_needed_check:
+ _show_viewfinder_in_play()
+ _viewfinder_needed_check = false
-func _pcam_tween(delta: float) -> void:
- if _tween_elapsed_time < _tween_duration:
- _pcam_tween_properties(delta)
- else: # First frame when tweening completes
- _tween_elapsed_time = 0
- _trigger_pcam_tween = false
- #_show_viewfinder_in_play() # NOTE - Likely not needed
- _pcam_follow(delta)
+ # TODO - Should be able to find a more efficient way using signals
+ if Engine.is_editor_hint():
+ if not _is_2D:
+ if _active_pcam_3d.camera_3d_resource != null:
+ camera_3d.cull_mask = _active_pcam_3d.cull_mask
+ camera_3d.h_offset = _active_pcam_3d.h_offset
+ camera_3d.v_offset = _active_pcam_3d.v_offset
+ camera_3d.projection = _active_pcam_3d.projection
+ camera_3d.fov = _active_pcam_3d.fov
+ camera_3d.size = _active_pcam_3d.size
+ camera_3d.frustum_offset = _active_pcam_3d.frustum_offset
+ camera_3d.near = _active_pcam_3d.near
+ camera_3d.far = _active_pcam_3d.far
+
+ if _active_pcam_3d.attributes != null:
+ camera_3d.attributes = _active_pcam_3d.attributes.duplicate()
+
+ if _active_pcam_3d.environment != null:
+ camera_3d.environment = _active_pcam_3d.environment.duplicate()
+
+
+func _noise_emitted_2d(noise_output: Transform2D) -> void:
+ _noise_emitted_output_2d = noise_output
+ _has_noise_emitted = true
- if _is_2D:
- _active_pcam_2d.update_limit_all_sides()
- _active_pcam_2d.tween_completed.emit()
- if Engine.is_editor_hint():
- _active_pcam_2d.queue_redraw()
- else:
- _cam_h_offset_changed = false
- _cam_v_offset_changed = false
- _cam_fov_changed = false
- _cam_size_changed = false
- _cam_frustum_offset_changed = false
- _cam_near_changed = false
- _cam_far_changed = false
- _active_pcam_3d.tween_completed.emit()
+func _noise_emitted_3d(noise_output: Transform3D) -> void:
+ _noise_emitted_output_3d = noise_output
+ _has_noise_emitted = true
-func _pcam_tween_properties(delta: float) -> void:
+func _pcam_tween(delta: float) -> void:
# Run at the first tween frame
if _tween_elapsed_time == 0:
if _is_2D:
else:
_active_pcam_3d.tween_started.emit()
+ # Forcefully disables physics interpolation when tweens are instant
+ if _tween_is_instant:
+ if _is_2D:
+ camera_2d.set("physics_interpolation_mode", 2)
+ else:
+ camera_3d.set("physics_interpolation_mode", 2)
+
_tween_elapsed_time = min(_tween_duration, _tween_elapsed_time + delta)
if _is_2D:
var interpolation_destination: Vector2 = _tween_interpolate_value(
_prev_active_pcam_2d_transform.origin,
_active_pcam_2d_glob_transform.origin,
- _active_pcam_2d.get_tween_duration(),
- _active_pcam_2d.get_tween_transition(),
- _active_pcam_2d.get_tween_ease()
+ _active_pcam_2d.tween_duration,
+ _active_pcam_2d.tween_transition,
+ _active_pcam_2d.tween_ease
)
if _active_pcam_2d.snap_to_pixel:
camera_2d.rotation = _tween_interpolate_value(
_prev_active_pcam_2d_transform.get_rotation(),
_active_pcam_2d_glob_transform.get_rotation(),
- _active_pcam_2d.get_tween_duration(),
- _active_pcam_2d.get_tween_transition(),
- _active_pcam_2d.get_tween_ease()
+ _active_pcam_2d.tween_duration,
+ _active_pcam_2d.tween_transition,
+ _active_pcam_2d.tween_ease
)
camera_2d.zoom = _tween_interpolate_value(
_camera_zoom,
_active_pcam_2d.zoom,
- _active_pcam_2d.get_tween_duration(),
- _active_pcam_2d.get_tween_transition(),
- _active_pcam_2d.get_tween_ease()
+ _active_pcam_2d.tween_duration,
+ _active_pcam_2d.tween_transition,
+ _active_pcam_2d.tween_ease
)
else:
_active_pcam_3d.is_tweening.emit()
camera_3d.global_position = _tween_interpolate_value(
_prev_active_pcam_3d_transform.origin,
_active_pcam_3d_glob_transform.origin,
- _active_pcam_3d.get_tween_duration(),
- _active_pcam_3d.get_tween_transition(),
- _active_pcam_3d.get_tween_ease()
+ _active_pcam_3d.tween_duration,
+ _active_pcam_3d.tween_transition,
+ _active_pcam_3d.tween_ease
)
var prev_active_pcam_3d_quat: Quaternion = Quaternion(_prev_active_pcam_3d_transform.basis.orthonormalized())
prev_active_pcam_3d_quat, \
prev_active_pcam_3d_quat.inverse() * Quaternion(_active_pcam_3d_glob_transform.basis.orthonormalized()),
_tween_elapsed_time, \
- _active_pcam_3d.get_tween_duration(), \
- _active_pcam_3d.get_tween_transition(),
- _active_pcam_3d.get_tween_ease()
+ _active_pcam_3d.tween_duration, \
+ _active_pcam_3d.tween_transition,
+ _active_pcam_3d.tween_ease
)
+ if _cam_attribute_changed:
+ if _active_pcam_3d.attributes.auto_exposure_enabled:
+ if _cam_auto_exposure_scale_changed:
+ camera_3d.attributes.auto_exposure_scale = \
+ _tween_interpolate_value(
+ _prev_cam_auto_exposure_scale,
+ _active_pcam_3d.attributes.auto_exposure_scale,
+ _active_pcam_3d.tween_duration,
+ _active_pcam_3d.tween_transition,
+ _active_pcam_3d.tween_ease
+ )
+ if _cam_auto_exposure_speed_changed:
+ camera_3d.attributes.auto_exposure_speed = \
+ _tween_interpolate_value(
+ _prev_cam_auto_exposure_scale,
+ _active_pcam_3d.attributes.auto_exposure_scale,
+ _active_pcam_3d.tween_duration,
+ _active_pcam_3d.tween_transition,
+ _active_pcam_3d.tween_ease
+ )
+
+ if _cam_attribute_type == 0: # CameraAttributePractical
+ if _active_pcam_3d.attributes.auto_exposure_enabled:
+ if _cam_exposure_min_sensitivity_changed:
+ camera_3d.attributes.auto_exposure_min_sensitivity = \
+ _tween_interpolate_value(
+ _prev_cam_exposure_min_sensitivity,
+ _active_pcam_3d.attributes.auto_exposure_min_sensitivity,
+ _active_pcam_3d.tween_duration,
+ _active_pcam_3d.tween_transition,
+ _active_pcam_3d.tween_ease
+ )
+ if _cam_exposure_max_sensitivity_changed:
+ camera_3d.attributes.auto_exposure_max_sensitivity = \
+ _tween_interpolate_value(
+ _prev_cam_exposure_max_sensitivity,
+ _active_pcam_3d.attributes.auto_exposure_max_sensitivity,
+ _active_pcam_3d.tween_duration,
+ _active_pcam_3d.tween_transition,
+ _active_pcam_3d.tween_ease
+ )
+ if _cam_dof_blur_amount_changed:
+ camera_3d.attributes.dof_blur_amount = \
+ _tween_interpolate_value(
+ _prev_cam_dof_blur_amount,
+ _active_pcam_3d.attributes.dof_blur_amount,
+ _active_pcam_3d.tween_duration,
+ _active_pcam_3d.tween_transition,
+ _active_pcam_3d.tween_ease
+ )
+ if _cam_dof_blur_far_distance_changed:
+ camera_3d.attributes.dof_blur_far_distance = \
+ _tween_interpolate_value(
+ _prev_cam_dof_blur_far_distance,
+ _active_pcam_3d.attributes.dof_blur_far_distance,
+ _active_pcam_3d.tween_duration,
+ _active_pcam_3d.tween_transition,
+ _active_pcam_3d.tween_ease
+ )
+ if _cam_dof_blur_far_transition_changed:
+ camera_3d.attributes.dof_blur_far_transition = \
+ _tween_interpolate_value(
+ _prev_cam_dof_blur_far_transition,
+ _active_pcam_3d.attributes.dof_blur_far_transition,
+ _active_pcam_3d.tween_duration,
+ _active_pcam_3d.tween_transition,
+ _active_pcam_3d.tween_ease
+ )
+ if _cam_dof_blur_near_distance_changed:
+ camera_3d.attributes.dof_blur_near_distance = \
+ _tween_interpolate_value(
+ _prev_cam_dof_blur_near_distance,
+ _active_pcam_3d.attributes.dof_blur_near_distance,
+ _active_pcam_3d.tween_duration,
+ _active_pcam_3d.tween_transition,
+ _active_pcam_3d.tween_ease
+ )
+ if _cam_dof_blur_near_transition_changed:
+ camera_3d.attributes.dof_blur_near_transition = \
+ _tween_interpolate_value(
+ _prev_cam_dof_blur_near_transition,
+ _active_pcam_3d.attributes.dof_blur_near_transition,
+ _active_pcam_3d.tween_duration,
+ _active_pcam_3d.tween_transition,
+ _active_pcam_3d.tween_ease
+ )
+ elif _cam_attribute_type == 1: # CameraAttributePhysical
+ if _cam_dof_blur_near_transition_changed:
+ camera_3d.attributes.auto_exposure_max_exposure_value = \
+ _tween_interpolate_value(
+ _prev_cam_exposure_max_exposure_value,
+ _active_pcam_3d.attributes.auto_exposure_max_exposure_value,
+ _active_pcam_3d.tween_duration,
+ _active_pcam_3d.tween_transition,
+ _active_pcam_3d.tween_ease
+ )
+ if _cam_exposure_min_exposure_value_changed:
+ camera_3d.attributes.auto_exposure_min_exposure_value = \
+ _tween_interpolate_value(
+ _prev_cam_exposure_min_exposure_value,
+ _active_pcam_3d.attributes.auto_exposure_min_exposure_value,
+ _active_pcam_3d.tween_duration,
+ _active_pcam_3d.tween_transition,
+ _active_pcam_3d.tween_ease
+ )
+ if _cam_exposure_aperture_changed:
+ camera_3d.attributes.exposure_aperture = \
+ _tween_interpolate_value(
+ _prev_cam_exposure_aperture,
+ _active_pcam_3d.attributes.exposure_aperture,
+ _active_pcam_3d.tween_duration,
+ _active_pcam_3d.tween_transition,
+ _active_pcam_3d.tween_ease
+ )
+ if _cam_exposure_shutter_speed_changed:
+ camera_3d.attributes.exposure_shutter_speed = \
+ _tween_interpolate_value(
+ _prev_cam_exposure_shutter_speed,
+ _active_pcam_3d.attributes.exposure_shutter_speed,
+ _active_pcam_3d.tween_duration,
+ _active_pcam_3d.tween_transition,
+ _active_pcam_3d.tween_ease
+ )
+ if _cam_frustum_far_changed:
+ camera_3d.attributes.frustum_far = \
+ _tween_interpolate_value(
+ _prev_cam_frustum_far,
+ _active_pcam_3d.attributes.frustum_far,
+ _active_pcam_3d.tween_duration(),
+ _active_pcam_3d.tween_transition(),
+ _active_pcam_3d.tween_ease
+ )
+ if _cam_frustum_near_changed:
+ camera_3d.attributes.frustum_near = \
+ _tween_interpolate_value(
+ _prev_cam_frustum_far,
+ _active_pcam_3d.attributes.frustum_near,
+ _active_pcam_3d.tween_duration,
+ _active_pcam_3d.tween_transition,
+ _active_pcam_3d.tween_ease
+ )
+ if _cam_frustum_focal_length_changed:
+ camera_3d.attributes.frustum_focal_length = \
+ _tween_interpolate_value(
+ _prev_cam_frustum_focal_length,
+ _active_pcam_3d.attributes.frustum_focal_length,
+ _active_pcam_3d.tween_duration,
+ _active_pcam_3d.tween_transition,
+ _active_pcam_3d.tween_ease
+ )
+ if _cam_frustum_focus_distance_changed:
+ camera_3d.attributes.frustum_focus_distance = \
+ _tween_interpolate_value(
+ _prev_cam_frustum_focus_distance,
+ _active_pcam_3d.attributes.frustum_focus_distance,
+ _active_pcam_3d.tween_duration,
+ _active_pcam_3d.tween_transition,
+ _active_pcam_3d.tween_ease
+ )
+
+ if _cam_h_offset_changed:
+ camera_3d.h_offset = \
+ _tween_interpolate_value(
+ _prev_cam_h_offset,
+ _active_pcam_3d.h_offset,
+ _active_pcam_3d.tween_duration,
+ _active_pcam_3d.tween_transition,
+ _active_pcam_3d.tween_ease
+ )
+
+ if _cam_v_offset_changed:
+ camera_3d.v_offset = \
+ _tween_interpolate_value(
+ _prev_cam_v_offset,
+ _active_pcam_3d.v_offset,
+ _active_pcam_3d.tween_duration,
+ _active_pcam_3d.tween_transition,
+ _active_pcam_3d.tween_ease
+ )
+
if _cam_fov_changed:
camera_3d.fov = \
_tween_interpolate_value(
_prev_cam_fov,
- _active_pcam_3d.get_fov(),
- _active_pcam_3d.get_tween_duration(),
- _active_pcam_3d.get_tween_transition(),
- _active_pcam_3d.get_tween_ease()
+ _active_pcam_3d.fov,
+ _active_pcam_3d.tween_duration,
+ _active_pcam_3d.tween_transition,
+ _active_pcam_3d.tween_ease
)
if _cam_size_changed:
camera_3d.size = \
_tween_interpolate_value(
_prev_cam_size,
- _active_pcam_3d.get_size(),
- _active_pcam_3d.get_tween_duration(),
- _active_pcam_3d.get_tween_transition(),
- _active_pcam_3d.get_tween_ease()
+ _active_pcam_3d.size,
+ _active_pcam_3d.tween_duration,
+ _active_pcam_3d.tween_transition,
+ _active_pcam_3d.tween_ease
)
if _cam_frustum_offset_changed:
camera_3d.frustum_offset = \
_tween_interpolate_value(
_prev_cam_frustum_offset,
- _active_pcam_3d.get_frustum_offset(),
- _active_pcam_3d.get_tween_duration(),
- _active_pcam_3d.get_tween_transition(),
- _active_pcam_3d.get_tween_ease()
+ _active_pcam_3d.frustum_offset,
+ _active_pcam_3d.tween_duration,
+ _active_pcam_3d.tween_transition,
+ _active_pcam_3d.tween_ease
)
- if _cam_h_offset_changed:
- camera_3d.h_offset = \
- _tween_interpolate_value(
- _prev_cam_h_offset,
- _active_pcam_3d.get_h_offset(),
- _active_pcam_3d.get_tween_duration(),
- _active_pcam_3d.get_tween_transition(),
- _active_pcam_3d.get_tween_ease()
- )
-
- if _cam_v_offset_changed:
- camera_3d.v_offset = \
- _tween_interpolate_value(
- _prev_cam_v_offset,
- _active_pcam_3d.get_v_offset(),
- _active_pcam_3d.get_tween_duration(),
- _active_pcam_3d.get_tween_transition(),
- _active_pcam_3d.get_tween_ease()
- )
if _cam_near_changed:
camera_3d.near = \
_tween_interpolate_value(
_prev_cam_near,
- _active_pcam_3d.get_near(),
- _active_pcam_3d.get_tween_duration(),
- _active_pcam_3d.get_tween_transition(),
- _active_pcam_3d.get_tween_ease()
+ _active_pcam_3d.near,
+ _active_pcam_3d.tween_duration,
+ _active_pcam_3d.tween_transition,
+ _active_pcam_3d.tween_ease
)
if _cam_far_changed:
camera_3d.far = \
_tween_interpolate_value(
_prev_cam_far,
- _active_pcam_3d.get_far(),
- _active_pcam_3d.get_tween_duration(),
- _active_pcam_3d.get_tween_transition(),
- _active_pcam_3d.get_tween_ease()
+ _active_pcam_3d.far,
+ _active_pcam_3d.tween_duration,
+ _active_pcam_3d.tween_transition,
+ _active_pcam_3d.tween_ease
)
+ if _tween_elapsed_time < _tween_duration: return
+ _trigger_pcam_tween = false
+ _tween_elapsed_time = 0
+ if _is_2D:
+ _active_pcam_2d.update_limit_all_sides()
+ _active_pcam_2d.tween_completed.emit()
+ if Engine.is_editor_hint():
+ _active_pcam_2d.queue_redraw()
+ else:
+ if _active_pcam_3d.attributes != null:
+ if _cam_attribute_type == 0:
+ if not _active_pcam_3d.attributes.dof_blur_far_enabled:
+ camera_3d.attributes.dof_blur_far_enabled = false
+ if not _active_pcam_3d.attributes.dof_blur_near_enabled:
+ camera_3d.attributes.dof_blur_near_enabled = false
+ _cam_h_offset_changed = false
+ _cam_v_offset_changed = false
+ _cam_fov_changed = false
+ _cam_size_changed = false
+ _cam_frustum_offset_changed = false
+ _cam_near_changed = false
+ _cam_far_changed = false
+ _cam_attribute_changed = false
+
+ _active_pcam_3d.tween_completed.emit()
+
func _tween_interpolate_value(from: Variant, to: Variant, duration: float, transition_type: int, ease_type: int) -> Variant:
return Tween.interpolate_value(
ease_type,
)
-#endregion
-
-
-#region Public Functions
-
func _show_viewfinder_in_play() -> void:
# Don't show the viewfinder in the actual editor or project builds
if Engine.is_editor_hint() or !OS.has_feature("editor"): return
_viewfinder_node.visible = true
_viewfinder_node.update_dead_zone()
+#endregion
+
+#region Public Functions
## Called when a [param PhantomCamera] is added to the scene.[br]
## [b]Note:[/b] This can only be called internally from a
if not _pcam_list.has(pcam):
_pcam_list.append(pcam)
if not pcam.tween_on_load:
- pcam.set_has_tweened(self, true) # Skips its tween if it has the highest priority on load
+ pcam.set_tween_skip(self, true) # Skips its tween if it has the highest priority on load
+ if not pcam.is_node_ready(): await pcam.ready
_find_pcam_with_highest_priority()
else:
printerr("This function should only be called from PhantomCamera scripts")
if not is_instance_valid(pcam): return
- var current_pcam_priority: int = pcam.get_priority()
+ var current_pcam_priority: int = pcam.priority
if current_pcam_priority >= _active_pcam_priority:
if _is_2D:
func get_trigger_pcam_tween() -> bool:
return _trigger_pcam_tween
+
+## Refreshes the [param PhantomCamera] list and checks for the highest priority. [br]
+## [b]Note:[/b] This should [b]not[/b] be necessary to call manually.
+func refresh_pcam_list_priorty() -> void:
+ _active_pcam_priority = -1
+ _find_pcam_with_highest_priority()
+
+
#func set_interpolation_mode(value: int) -> void:
#interpolation_mode = value
#func get_interpolation_mode() -> int:
--- /dev/null
+uid://cnchgl1rj5wu3
--- /dev/null
+uid://dd2v4dcpaj47b
--- /dev/null
+@tool
+@icon("res://addons/phantom_camera/icons/phantom_camera_noise_resource.svg")
+class_name PhantomCameraNoise2D
+extends Resource
+
+## A resource type used to apply noise, or shake, to [Camera2D]s that have a [PhantomCameraHost] as a child.
+##
+## Is a resource type that defines, calculates and outputs the noise values to a [Camera2D] through active
+## [PhantomCamera3D].[br]
+## It can be applied to either [PhantomCameraNoiseEmitter2D] or a [PhantomCamera2D] noise property directly
+
+#region Exported Properties
+
+## Defines the size of the noise pattern.[br]
+## Higher values will increase the range the noise can reach.
+@export_range(0, 1000, 0.001, "or_greater") var amplitude: float = 10:
+ set = set_amplitude,
+ get = get_amplitude
+
+## Sets the density of the noise pattern.[br]
+## Higher values will result in more erratic noise.
+@export_range(0, 10, 0.001, "or_greater") var frequency: float = 0.5:
+ set = set_frequency,
+ get = get_frequency
+
+## If true, randomizes the noise pattern every time the noise is run.[br]
+## If disabled, [member seed] can be used to define a fixed noise pattern.
+@export var randomize_noise_seed: bool = true:
+ set = set_randomize_noise_seed,
+ get = get_randomize_noise_seed
+
+## Sets a predetermined seed noise value.[br]
+## Useful if wanting to achieve a persistent noise pattern every time the noise is emitted.
+@export var noise_seed: int = 0:
+ set = set_noise_seed,
+ get = get_noise_seed
+
+## Enables noise changes to the [member Camera2D.offset] position.
+@export var positional_noise: bool = true:
+ set = set_positional_noise,
+ get = get_positional_noise
+
+## Enables noise changes to the [Camera2D]'s rotation.
+@export var rotational_noise: bool = false:
+ set = set_rotational_noise,
+ get = get_rotational_noise
+
+@export_group("Positional Multiplier")
+## Multiplies positional noise amount in the X-axis.[br]
+## Set the value to [param 0] to disable noise in the axis.
+@export_range(0, 1, 0.001, "or_greater") var positional_multiplier_x: float = 1:
+ set = set_positional_multiplier_x,
+ get = get_positional_multiplier_x
+
+## Multiplies positional noise amount in the Y-axis.[br]
+## Set the value to [param 0] to disable noise in the axis.
+@export_range(0, 1, 0.001, "or_greater") var positional_multiplier_y: float = 1:
+ set = set_positional_multiplier_y,
+ get = get_positional_multiplier_y
+
+@export_group("Rotational Multiplier")
+## Multiplies rotational noise amount.
+@export_range(0, 1, 0.001, "or_greater") var rotational_multiplier: float = 1:
+ set = set_rotational_multiplier,
+ get = get_rotational_multiplier
+
+#endregion
+
+#region Private Variables
+
+var _noise_algorithm: FastNoiseLite = FastNoiseLite.new()
+
+var _noise_positional_multiplier: Vector2 = Vector2(
+ positional_multiplier_x,
+ positional_multiplier_y
+)
+
+var _trauma: float = 0.0:
+ set(value):
+ _trauma = value
+
+var _noise_time: float = 0.0
+
+#endregion
+
+#region Private Functions
+
+func _init():
+ _noise_algorithm.noise_type = FastNoiseLite.TYPE_PERLIN
+ if randomize_noise_seed: _noise_algorithm.seed = randi()
+ _noise_algorithm.frequency = frequency
+
+
+func _validate_property(property: Dictionary) -> void:
+ if randomize_noise_seed and property.name == "noise_seed":
+ property.usage = PROPERTY_USAGE_NO_EDITOR
+
+ if not rotational_noise and property.name == "rotational_multiplier":
+ property.usage = PROPERTY_USAGE_NO_EDITOR
+
+ if not positional_noise:
+ match property.name:
+ "positional_multiplier_x", \
+ "positional_multiplier_y":
+ property.usage = PROPERTY_USAGE_NO_EDITOR
+
+
+func _get_noise_from_seed(noise_seed: int) -> float:
+ return _noise_algorithm.get_noise_2d(noise_seed, _noise_time) * amplitude
+
+
+func set_trauma(value: float) -> void:
+ _trauma = value
+
+#endregion
+
+#region Public Functions
+
+func get_noise_transform(delta: float) -> Transform2D:
+ var output_position: Vector2 = Vector2.ZERO
+ var output_rotation: float = 0.0
+ _noise_time += delta
+ _trauma = maxf(_trauma, 0.0)
+
+ if positional_noise:
+ for i in 2:
+ output_position[i] = _noise_positional_multiplier[i] * pow(_trauma, 2) * _get_noise_from_seed(i + noise_seed)
+ if rotational_noise:
+ output_rotation = rotational_multiplier / 100 * pow(_trauma, 2) * _get_noise_from_seed(noise_seed)
+
+ return Transform2D(output_rotation, output_position)
+
+
+func reset_noise_time() -> void:
+ _noise_time = 0
+
+#endregion
+
+#region Setters & Getters
+
+## Sets the [member amplitude] value.
+func set_amplitude(value: float) -> void:
+ amplitude =value
+
+## Returns the [member amplitude] value.
+func get_amplitude() -> float:
+ return amplitude
+
+
+## Sets the [member frequency] value.
+func set_frequency(value: float) -> void:
+ frequency = value
+ _noise_algorithm.frequency = value
+
+## Returns the [member frequency] value.
+func get_frequency() -> float:
+ return frequency
+
+
+## Sets the [member randomize_seed] value.
+func set_randomize_noise_seed(value: int) -> void:
+ randomize_noise_seed = value
+ if value: _noise_algorithm.seed = randi()
+ notify_property_list_changed()
+
+## Returns the [member randomize_seed] value.
+func get_randomize_noise_seed() -> int:
+ return randomize_noise_seed
+
+
+## Sets the [member randomize_seed] value.
+func set_noise_seed(value: int) -> void:
+ noise_seed = value
+
+## Returns the [member seed] value.
+func get_noise_seed() -> int:
+ return noise_seed
+
+
+## Sets the [member positional_noise] value.
+func set_positional_noise(value: bool) -> void:
+ positional_noise = value
+ notify_property_list_changed()
+
+## Returns the [member positional_noise] value.
+func get_positional_noise() -> bool:
+ return positional_noise
+
+
+## Sets the [member rotational_noise] value.
+func set_rotational_noise(value: bool) -> void:
+ rotational_noise = value
+ notify_property_list_changed()
+
+## Returns the [member rotational_noise] value.
+func get_rotational_noise() -> bool:
+ return rotational_noise
+
+
+## Sets the [member positional_multiplier_x] value.
+func set_positional_multiplier_x(value: float) -> void:
+ positional_multiplier_x = value
+ _noise_positional_multiplier.x = value
+
+## Returns the [member positional_multiplier_x] value.
+func get_positional_multiplier_x() -> float:
+ return positional_multiplier_x
+
+
+## Sets the [member positional_multiplier_y] value.
+func set_positional_multiplier_y(value: float) -> void:
+ positional_multiplier_y = value
+ _noise_positional_multiplier.y = value
+
+## Returns the [member positional_multiplier_y] value.
+func get_positional_multiplier_y() -> float:
+ return positional_multiplier_y
+
+
+## Sets the [member rotational_multiplier] value.
+func set_rotational_multiplier(value: float) -> void:
+ rotational_multiplier = value
+
+## Returns the [member rotational_multiplier] value.
+func get_rotational_multiplier() -> float:
+ return rotational_multiplier
+
+#endregion
--- /dev/null
+uid://cuqo27utt645a
--- /dev/null
+@tool
+@icon("res://addons/phantom_camera/icons/phantom_camera_noise_resource.svg")
+class_name PhantomCameraNoise3D
+extends Resource
+
+## A resource type used to apply noise, or shake, to [Camera3D]s that have a [PhantomCameraHost] as a child.
+##
+## Is a resource type that defines, calculates and outputs the noise values to a [Camera3D] through active
+## [PhantomCamera3D].[br]
+## It can be applied to either [PhantomCameraNoiseEmitter3D] or a [PhantomCamera3D] noise property directly
+
+#region Exported Properties
+
+## Defines the size of the noise pattern.[br]
+## Higher values will increase the range the noise can reach.
+@export_range(0, 100, 0.001, "or_greater") var amplitude: float = 10:
+ set = set_amplitude,
+ get = get_amplitude
+
+## Sets the density of the noise pattern.[br]
+## Higher values will result in more erratic noise.
+@export_range(0, 10, 0.001, "or_greater") var frequency: float = 0.2:
+ set = set_frequency,
+ get = get_frequency
+
+## If true, randomizes the noise pattern every time the noise is run.[br]
+## If disabled, [member seed] can be used to define a fixed noise pattern.
+@export var randomize_noise_seed: bool = true:
+ set = set_randomize_noise_seed,
+ get = get_randomize_noise_seed
+
+## Sets a predetermined seed noise value.[br]
+## Useful if wanting to achieve a persistent noise pattern every time the noise is emitted.
+@export var noise_seed: int = 0:
+ set = set_noise_seed,
+ get = get_noise_seed
+
+## Enables noise changes to the [Camera3D]'s rotation.
+@export var rotational_noise: bool = true:
+ set = set_rotational_noise,
+ get = get_rotational_noise
+
+## Enables noise changes to the camera's position.[br][br]
+## [b]Important[/b][br]This can cause geometry clipping if the camera gets too close while this is active.
+@export var positional_noise: bool = false:
+ set = set_positional_noise,
+ get = get_positional_noise
+
+@export_group("Rotational Multiplier")
+## Multiplies rotational noise amount in the X-axis.[br]
+## Set the value to [param 0] to disable noise in the axis.
+@export_range(0, 1, 0.001, "or_greater") var rotational_multiplier_x: float = 1:
+ set = set_rotational_multiplier_x,
+ get = get_rotational_multiplier_x
+
+## Multiplies rotational noise amount in the Y-axis.[br]
+## Set the value to [param 0] to disable noise in the axis.
+@export_range(0, 1, 0.001, "or_greater") var rotational_multiplier_y: float = 1:
+ set = set_rotational_multiplier_y,
+ get = get_rotational_multiplier_y
+
+## Multiplies rotational noise amount in the Z-axis.[br]
+## Set the value to [param 0] to disable noise in the axis.
+@export_range(0, 1, 0.001, "or_greater") var rotational_multiplier_z: float = 1:
+ set = set_rotational_multiplier_z,
+ get = get_rotational_multiplier_z
+
+@export_group("Positional Multiplier")
+## Multiplies positional noise amount in the X-axis.[br]
+## Set the value to [param 0] to disable noise in the axis.[br]
+## [b]Note:[/b] Rotational Offset is recommended to avoid potential camera clipping with the environment.
+@export_range(0, 1, 0.001, "or_greater") var positional_multiplier_x: float = 1:
+ set = set_positional_multiplier_x,
+ get = get_positional_multiplier_x
+
+## Multiplies positional noise amount in the Y-axis.[br]
+## Set the value to [param 0] to disable noise in the axis.[br]
+## [b]Note:[/b] Rotational Offset is recommended to avoid potential camera clipping with the environment.
+@export_range(0, 1, 0.001, "or_greater") var positional_multiplier_y: float = 1:
+ set = set_positional_multiplier_y,
+ get = get_positional_multiplier_y
+
+## Multiplies positional noise amount in the Z-axis.[br]
+## Set the value to [param 0] to disable noise in the axis.[br]
+## [b]Note:[/b] Rotational Offset is recommended to avoid potential camera clipping with the environment.
+@export_range(0, 1, 0.001, "or_greater") var positional_multiplier_z: float = 1:
+ set = set_positional_multiplier_z,
+ get = get_positional_multiplier_z
+
+#endregion
+
+#region Private Variables
+
+var _noise_algorithm: FastNoiseLite = FastNoiseLite.new()
+
+var _noise_rotational_multiplier: Vector3 = Vector3(
+ rotational_multiplier_x,
+ rotational_multiplier_y,
+ rotational_multiplier_z,
+)
+
+var _noise_positional_multiplier: Vector3 = Vector3(
+ positional_multiplier_x,
+ positional_multiplier_y,
+ positional_multiplier_z,
+)
+
+var _trauma: float = 0.0:
+ set(value):
+ _trauma = value
+ if _trauma == 0.0:
+ _noise_time = 0.0
+
+var _noise_time: float = 0.0
+
+#endregion
+
+#region Private Functions
+
+func _init():
+ _noise_algorithm.noise_type = FastNoiseLite.TYPE_PERLIN
+
+ if randomize_noise_seed: _noise_algorithm.seed = randi()
+ _noise_algorithm.frequency = frequency
+
+
+func _validate_property(property: Dictionary) -> void:
+ if randomize_noise_seed and property.name == "noise_seed":
+ property.usage = PROPERTY_USAGE_NO_EDITOR
+
+ if not rotational_noise:
+ match property.name:
+ "rotational_multiplier_x", \
+ "rotational_multiplier_y", \
+ "rotational_multiplier_z":
+ property.usage = PROPERTY_USAGE_NO_EDITOR
+
+ if not positional_noise:
+ match property.name:
+ "positional_multiplier_x", \
+ "positional_multiplier_y", \
+ "positional_multiplier_z":
+ property.usage = PROPERTY_USAGE_NO_EDITOR
+
+
+func _get_noise_from_seed(noise_seed: int) -> float:
+ return _noise_algorithm.get_noise_2d(noise_seed, _noise_time) * amplitude
+
+
+func set_trauma(value: float) -> void:
+ _trauma = value
+
+#endregion
+
+#region Public Functions
+
+func get_noise_transform(delta: float) -> Transform3D:
+ var output_rotation: Vector3 = Vector3.ZERO
+ var output_position: Vector3 = Vector3.ZERO
+ _noise_time += delta
+ _trauma = maxf(_trauma, 0.0)
+
+ for i in 3:
+ if rotational_noise:
+ output_rotation[i] = deg_to_rad(
+ _noise_rotational_multiplier[i] * pow(_trauma, 2) * _get_noise_from_seed(i + noise_seed)
+ )
+
+ if positional_noise:
+ output_position[i] += _noise_positional_multiplier[i] / 10 * \
+ pow(_trauma, 2) * _get_noise_from_seed(i + noise_seed)
+
+ return Transform3D(Quaternion.from_euler(output_rotation), output_position)
+
+
+func reset_noise_time() -> void:
+ _noise_time = 0
+
+#endregion
+
+#region Setters & Getters
+
+## Sets the [member amplitude] value.
+func set_amplitude(value: float) -> void:
+ amplitude =value
+
+## Returns the [member amplitude] value.
+func get_amplitude() -> float:
+ return amplitude
+
+
+## Sets the [member frequency] value.
+func set_frequency(value: float) -> void:
+ frequency = value
+ _noise_algorithm.frequency = value
+
+## Returns the [member frequency] value.
+func get_frequency() -> float:
+ return frequency
+
+
+## Sets the [member randomize_seed] value.
+func set_randomize_noise_seed(value: int) -> void:
+ randomize_noise_seed = value
+ if value: _noise_algorithm.seed = randi()
+ notify_property_list_changed()
+
+## Returns the [member randomize_seed] value.
+func get_randomize_noise_seed() -> int:
+ return randomize_noise_seed
+
+
+## Sets the [member randomize_seed] value.
+func set_noise_seed(value: int) -> void:
+ noise_seed = value
+
+## Returns the [member seed] value.
+func get_noise_seed() -> int:
+ return noise_seed
+
+
+## Sets the [member positional_noise] value.
+func set_positional_noise(value: bool) -> void:
+ positional_noise = value
+ notify_property_list_changed()
+
+## Returns the [member positional_noise] value.
+func get_positional_noise() -> bool:
+ return positional_noise
+
+
+## Sets the [member rotational_noise] value.
+func set_rotational_noise(value: bool) -> void:
+ rotational_noise = value
+ notify_property_list_changed()
+
+## Returns the [member rotational_noise] value.
+func get_rotational_noise() -> bool:
+ return rotational_noise
+
+
+## Sets the [member positional_multiplier_x] value.
+func set_positional_multiplier_x(value: float) -> void:
+ positional_multiplier_x = value
+ _noise_positional_multiplier.x = value
+
+## Returns the [member positional_multiplier_x] value.
+func get_positional_multiplier_x() -> float:
+ return positional_multiplier_x
+
+
+## Sets the [member positional_multiplier_y] value.
+func set_positional_multiplier_y(value: float) -> void:
+ positional_multiplier_y = value
+ _noise_positional_multiplier.y = value
+
+## Returns the [member positional_multiplier_y] value.
+func get_positional_multiplier_y() -> float:
+ return positional_multiplier_y
+
+
+## Sets the [member positional_multiplier_z] value.
+func set_positional_multiplier_z(value: float) -> void:
+ positional_multiplier_z = value
+ _noise_positional_multiplier.z = value
+
+## Returns the [member positional_multiplier_z] value.
+func get_positional_multiplier_z() -> float:
+ return positional_multiplier_z
+
+
+## Sets the [member rotational_multiplier_x] value.
+func set_rotational_multiplier_x(value: float) -> void:
+ rotational_multiplier_x = value
+ _noise_rotational_multiplier.x = value
+
+## Returns the [member rotational_multiplier_x] value.
+func get_rotational_multiplier_x() -> float:
+ return rotational_multiplier_x
+
+
+## Sets the [member rotational_multiplier_y] value.
+func set_rotational_multiplier_y(value: float) -> void:
+ rotational_multiplier_y = value
+ _noise_rotational_multiplier.y = value
+
+## Returns the [member rotational_multiplier_y] value.
+func get_rotational_multiplier_y() -> float:
+ return rotational_multiplier_y
+
+
+## Sets the [member rotational_multiplier_z] value.
+func set_rotational_multiplier_z(value: float) -> void:
+ rotational_multiplier_z = value
+ _noise_rotational_multiplier.z = value
+
+## Returns the [member rotational_multiplier_z] value.
+func get_rotational_multiplier_z() -> float:
+ return rotational_multiplier_z
+
+ #endregion
--- /dev/null
+uid://b2bewtm8tt7ne
--- /dev/null
+uid://p5nds274fd3w
--- /dev/null
+uid://dwek6054ld8kx
--- /dev/null
+uid://cha22mm6xirll
--- /dev/null
+uid://m1ru50i8xl3l
--- /dev/null
+uid://c3fdpim6xnpfx
--- /dev/null
+uid://wugxwqk5h3yb
--- /dev/null
+uid://3a2kr7wshlbh
+++ /dev/null
-The MIT License (MIT)
-
-Copyright © 2021 GlassBrick
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
var SingletonNameProperty = load('res://addons/scene_manager/SingletonNameProperty.gd')
-func _can_handle(object: Variant):
+func _can_handle(object: Object) -> bool:
return object is Node
--- /dev/null
+uid://bhpt3n7somycn
+++ /dev/null
-# Godot Scene Manager
-
-
-
-Plugin for managing transitions and Node references between scenes. Expect more features to be added in the future!
-
-
-
----
-
-All the README info has been moved to the new wiki!
-
-- [Wiki](https://github.com/glass-brick/Scene-Manager/wiki)
- - [Getting Started](https://github.com/glass-brick/Scene-Manager/wiki/Getting-started)
- - [Features](https://github.com/glass-brick/Scene-Manager/wiki/Features)
- - [API docs](<https://github.com/glass-brick/Scene-Manager/wiki/API-(Godot-4)>)
_previous_scene = _tree.current_scene
func change_scene(path: Variant, setted_options: Dictionary = {}) -> void:
- assert(path == null or path is String, 'Path must be a string')
+ assert(path == null or path is String or path is PackedScene, 'Path must be a string or a PackedScene')
var options = _get_final_options(setted_options)
if not options["skip_fade_out"]:
await fade_out(setted_options)
_current_scene = _tree.current_scene
func fade_in_place(setted_options: Dictionary = {}) -> void:
- setted_options["no_scene_change"] = true
+ setted_options["skip_scene_change"] = true
await change_scene(null, setted_options)
-func _replace_scene(path: String, options: Dictionary) -> void:
+func _replace_scene(path: Variant, options: Dictionary) -> void:
_current_scene.queue_free()
scene_unloaded.emit()
- var following_scene: PackedScene = ResourceLoader.load(path, "PackedScene", 0)
+ var following_scene: PackedScene = _load_scene_resource(path)
_current_scene = following_scene.instantiate()
_current_scene.tree_entered.connect(options["on_tree_enter"].bind(_current_scene))
_current_scene.ready.connect(options["on_ready"].bind(_current_scene))
_root.add_child(_current_scene)
_tree.set_current_scene(_current_scene)
+func _load_scene_resource(path: Variant) -> Resource:
+ if path is PackedScene:
+ return path
+ return ResourceLoader.load(path, "PackedScene", 0)
+
func fade_out(setted_options: Dictionary= {}) -> void:
var options = _get_final_options(setted_options)
is_transitioning = true
--- /dev/null
+uid://duwg1qpxqtora
-[gd_scene load_steps=5 format=3 uid="uid://j20v4cg7v8m1"]
+[gd_scene load_steps=6 format=3 uid="uid://j20v4cg7v8m1"]
-[ext_resource type="Script" path="res://addons/scene_manager/SceneManager.gd" id="1_22br8"]
-[ext_resource type="Shader" path="res://addons/scene_manager/Dissolve2d.gdshader" id="2_853wq"]
+[ext_resource type="Script" uid="uid://duwg1qpxqtora" path="res://addons/scene_manager/SceneManager.gd" id="1_22br8"]
+[ext_resource type="Shader" uid="uid://3a2kr7wshlbh" path="res://addons/scene_manager/Dissolve2d.gdshader" id="2_853wq"]
[ext_resource type="Animation" uid="uid://dxr1r78uxitcq" path="res://addons/scene_manager/ShaderFade.tres" id="5_anecj"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_0imdi"]
-shader = ExtResource( "2_853wq" )
+shader = ExtResource("2_853wq")
shader_parameter/dissolve_amount = 0.0
shader_parameter/fade_color = Color(0, 0, 0, 1)
-shader_parameter/fade = null
-shader_parameter/inverted = null
+shader_parameter/fade = false
+shader_parameter/inverted = false
+
+[sub_resource type="AnimationLibrary" id="AnimationLibrary_bdiyj"]
+_data = {
+&"ShaderFade": ExtResource("5_anecj")
+}
[node name="SceneManager" type="Node2D"]
-script = ExtResource( "1_22br8" )
+script = ExtResource("1_22br8")
[node name="CanvasLayer" type="CanvasLayer" parent="."]
layer = 3
[node name="ColorRect" type="ColorRect" parent="CanvasLayer"]
-material = SubResource( "ShaderMaterial_0imdi" )
+material = SubResource("ShaderMaterial_0imdi")
+anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
mouse_filter = 2
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
-anims/ShaderFade = ExtResource( "5_anecj" )
+libraries = {
+&"": SubResource("AnimationLibrary_bdiyj")
+}
--- /dev/null
+uid://bc22b8bkcvwui
--- /dev/null
+uid://bh0jt2lnuuumc
--- /dev/null
+uid://2tcteb2i71wj
--- /dev/null
+uid://bp0or4a1m7exs
name="Scene Manager"
description="Scene Manager"
author="GlassBrick"
-version="1.0.1"
+version="1.1.1"
script="SceneManagerPlugin.gd"
--- /dev/null
+uid://bc5lev5pxek3p
--- /dev/null
+uid://bt8kmdymyokoe
--- /dev/null
+uid://lqen07q05vbw
[gd_resource type="Resource" script_class="SaveResource" load_steps=2 format=3 uid="uid://ci0v1u7i67vvu"]
-[ext_resource type="Script" path="res://assets/resources/save_resource.gd" id="1_ohq41"]
+[ext_resource type="Script" uid="uid://lqen07q05vbw" path="res://assets/resources/save_resource.gd" id="1_ohq41"]
[resource]
script = ExtResource("1_ohq41")
+++ /dev/null
-// source: https://godotshaders.com/shader/pixel-art-water/
-shader_type canvas_item;
-
-uniform float aspectRatio = 1.0f;
-uniform float pixelization = 2048.0f;
-
-uniform sampler2D waterDepthGradient : hint_default_black;
-
-uniform vec4 causticColor = vec4(0.455f, 0.773f, 0.765f, 1.0f);
-uniform vec4 causticHighlightColor = vec4(0.741f, 0.894f, 0.898f, 1.0f);
-uniform sampler2D causticTexture : hint_default_white, repeat_enable;
-uniform sampler2D causticHighlightTexture : hint_default_white, repeat_enable;
-uniform sampler2D causticNoiseTexture : hint_default_white, repeat_enable;
-uniform sampler2D causticFadeNoiseTexture : hint_default_white, repeat_enable;
-uniform float causticScale = 12.0f;
-uniform float causticSpeed = 0.005f;
-uniform float causticMovementAmount = 0.15f;
-uniform float causticFaderMultiplier = 1.45f;
-
-uniform vec4 specularColor = vec4(1.0f, 1.0f, 1.0f, 1.0f);
-uniform sampler2D specularNoiseTexture : hint_default_white, repeat_enable;
-uniform sampler2D specularMovementLeftNoiseTexture : hint_default_white, repeat_enable;
-uniform sampler2D specularMovementRightNoiseTexture : hint_default_white, repeat_enable;
-uniform float specularThreshold = 0.35f;
-uniform float specularSpeed = 0.025f;
-uniform float specularScale = 15.0f;
-
-uniform vec4 foamColor = vec4(1.0f, 1.0f, 1.0f, 1.0f);
-uniform sampler2D foamTexture : hint_default_white, repeat_enable;
-uniform float foamIntensity = 0.2f;
-uniform float foamScale = 15.0f;
-
-uniform vec4 outlineColor = vec4(0.675f, 0.86f, 1.0f, 1.0f);
-uniform float generalTransparency = 1.0f;
-
-
-// ------------------------------------------------------------------------------------
-// Helper functions
-
-// Blends two vec2's by subtracting them. Compare this to Photoshop blend mode "Subtract".
-// Source:
-vec2 blendSubtract_vec2(vec2 base, vec2 blend, float opacity)
-{
- vec2 result = base - blend;
- return mix(base, result, opacity);
-}
-
-// Blends two floats by subtracting them. Compare this to Photoshop blend mode "Subtract".
-// Source:
-float blendSubtract_float(float base, float blend, float opacity)
-{
- float result = base - blend;
- return mix(base, result, opacity);
-}
-
-// Blends two vec2's by overlaying them. Compare this to Photoshop blend mode "Overlay".
-// Source:
-float blendOverlay_float(float base, float blend, float opacity)
-{
- float result1 = 1.0f - 2.0f * (1.0f - base) * (1.0f - blend);
- float result2 = 2.0f * base * blend;
- float zeroOrOne = step(0.5f, base);
- float res = result2 * zeroOrOne + (1.0 - zeroOrOne) * result1;
- return mix(base, res, opacity);
-}
-
-// Pixelizes the given coordinate.
-vec2 pixelizeCoordinates(vec2 coordinates)
-{
- return floor(coordinates * pixelization) / pixelization;
-}
-
-// Applies the aspect ratio to the coordinates.
-vec2 applyAspectRatio(vec2 coordinates)
-{
- return vec2(coordinates.x, coordinates.y * aspectRatio);
-}
-
-// ------------------------------------------------------------------------------------
-// Shader layers
-
-vec4 caustics(vec2 pixelizedCoordinates)
-{
- vec4 causticNoise = texture(causticNoiseTexture, TIME * causticSpeed + pixelizedCoordinates);
- vec2 noiseCoordinates = blendSubtract_vec2(pixelizedCoordinates * causticScale, causticNoise.rg, causticMovementAmount);
- vec4 causticHighlight = texture(causticHighlightTexture, noiseCoordinates) * causticHighlightColor;
- vec4 caustic = texture(causticTexture, noiseCoordinates) * causticColor;
- vec4 interpolatedCaustics = mix(caustic, causticHighlight, causticHighlight.a);
- float fadeNoise = texture(causticFadeNoiseTexture, noiseCoordinates).r * causticFaderMultiplier;
- return vec4(interpolatedCaustics.r, interpolatedCaustics.g, interpolatedCaustics.b, clamp(interpolatedCaustics.a - fadeNoise, 0.0, 1.0));
-}
-
-vec4 specular(vec2 pixelizedCoordinates)
-{
- vec2 scaledCoordinates = pixelizedCoordinates * specularScale;
- float specularNoise = texture(specularNoiseTexture, scaledCoordinates).r;
- float leftScrollingNoise = texture(specularMovementLeftNoiseTexture, scaledCoordinates + vec2(TIME * specularSpeed, 0.0f)).r;
- float rightScrollingNoise = texture(specularMovementRightNoiseTexture, scaledCoordinates + vec2(TIME * specularSpeed * -1.0f, 0.0f)).r;
- return step(specularThreshold, blendSubtract_float(blendOverlay_float(leftScrollingNoise, rightScrollingNoise, 1.0f), specularNoise, 1.0f)) * specularColor;
-}
-
-vec4 foam(vec2 pixelizedCoordinates, vec4 mainTexColor)
-{
- vec4 colorizedFoam = texture(foamTexture, pixelizedCoordinates * foamScale) * foamColor;
- float intensity = clamp(mainTexColor.g * mainTexColor.a - foamIntensity, 0.0f, 1.0f);
- return vec4(colorizedFoam.r, colorizedFoam.g, colorizedFoam.b, colorizedFoam.a * intensity);
-}
-
-// ------------------------------------------------------------------------------------
-// Fragment Shader code
-
-void fragment()
-{
- vec2 pixelizedCoordinates = pixelizeCoordinates(applyAspectRatio(UV));
- vec4 mainTex = texture(TEXTURE, UV);
- vec4 depthBasedWaterColor = texture(waterDepthGradient, vec2(1.0f - mainTex.b, 1.0f));
-
- vec4 finalCaustics = caustics(pixelizedCoordinates);
- vec4 finalSpecular = specular(pixelizedCoordinates);
- vec4 finalFoam = foam(pixelizedCoordinates, mainTex);
-
- vec4 waterWithCausticLayer = mix(depthBasedWaterColor, finalCaustics, finalCaustics.a);
- vec4 waterWithCausticAndSpecularLayer = mix(waterWithCausticLayer, finalSpecular, ceil(finalCaustics.a) * finalSpecular.a);
- vec4 waterWithCausticAndSpecularAndFoamLayer = mix(waterWithCausticAndSpecularLayer, finalFoam, finalFoam.a);
-
- float outline = mainTex.a * mainTex.r;
- vec4 finalOutlineColor = outline * outlineColor;
-
- vec4 finalRGBColor = mix(waterWithCausticAndSpecularAndFoamLayer, finalOutlineColor, outline);
- COLOR = vec4(finalRGBColor.r, finalRGBColor.g, finalRGBColor.b, mainTex.b * generalTransparency);
-}
\ No newline at end of file
--- /dev/null
+{
+ "deck_of_cards": {
+ "stack_size": 52,
+ "max_stack_size": 52
+ },
+
+ "base_item": {
+ "description": "An example item used as a base to create other items.",
+ "_comment": "Stack Based Inventory",
+ "stack_size": 10,
+ "weight": 1.0,
+ },
+
+ "grid_item": {
+ "description": "An example item used as a base to create other items.",
+ "image": "res://assets/textures/book.png",
+ "_comment": "Grid Based Inventory",
+ "width": 2,
+ "height": 2,
+ },
+}
--- /dev/null
+[gd_resource type="Resource" format=3 uid="uid://djhhxwo6oave4"]
+
+[resource]
[application]
config/name="RPG template"
-run/main_scene="res://scenes/main_level.tscn"
-config/features=PackedStringArray("4.3", "Forward Plus")
+run/main_scene="res://scenes/level/main_level.tscn"
+config/features=PackedStringArray("4.4", "Forward Plus")
config/icon="res://icon.svg"
[autoload]
Constants="*res://scripts/constants.gd"
SaveSystem="*res://addons/save_system/save_system.gd"
-SceneManager="*res://addons/scene_manager/SceneManager.tscn"
PhantomCameraManager="*res://addons/phantom_camera/scripts/managers/phantom_camera_manager.gd"
+SceneManager="*res://addons/scene_manager/SceneManager.tscn"
+Events="*res://scripts/events.gd"
Globals="*res://scripts/globals.gd"
[editor_plugins]
enabled=PackedStringArray("res://addons/gloot/plugin.cfg", "res://addons/label_font_auto_sizer/plugin.cfg", "res://addons/phantom_camera/plugin.cfg", "res://addons/save_system/plugin.cfg", "res://addons/scene_manager/plugin.cfg", "res://addons/script-ide/plugin.cfg")
+[gloot]
+
+inspector_control_height=200
+
[input]
ui_left={
]
}
+[internationalization]
+
+locale/translations=PackedStringArray("res://i18n/en.po", "res://i18n/es_ES.po", "res://i18n/es_MX.po")
+
[rendering]
textures/canvas_textures/default_texture_filter=0
+++ /dev/null
-[
- {
- "id": "base_item",
- "name": "Base Item",
- "description": "An example item used as a base to create other items.",
-
- "_comment": "Stack Based Inventory",
- "stack_size": 10,
- "weight": 1.0,
-
- "_comment": "Grid Based Inventory",
- "width": 2,
- "height": 2,
- }
-]
+++ /dev/null
-[gd_resource type="Resource" script_class="ItemProtoset" load_steps=2 format=3 uid="uid://djhhxwo6oave4"]
-
-[ext_resource type="Script" path="res://addons/gloot/core/item_protoset.gd" id="1_gt6d6"]
-
-[resource]
-script = ExtResource("1_gt6d6")
-json_data = "[
- {
- \"_comment\": \"Grid Based Inventory\",
- \"description\": \"An example item used as a base to create other items.\",
- \"height\": 2,
- \"id\": \"base_item\",
- \"name\": \"Base Item\",
- \"stack_size\": 10,
- \"weight\": 1,
- \"width\": 2
- }
-]"
[gd_scene load_steps=3 format=3 uid="uid://da1uex028xkv1"]
-[ext_resource type="Script" path="res://scripts/door_scene_manager.gd" id="1_ph76m"]
+[ext_resource type="Script" uid="uid://b5wo0m62qrv44" path="res://scripts/door_scene_manager.gd" id="1_ph76m"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_sglud"]
size = Vector2(14, 20)
[gd_scene load_steps=4 format=3 uid="uid://k76535tjepm3"]
-[ext_resource type="Script" path="res://scripts/player.gd" id="1_1webx"]
+[ext_resource type="Script" uid="uid://dx15rxub22ius" path="res://scripts/player.gd" id="1_1webx"]
[ext_resource type="SpriteFrames" uid="uid://dum0mxk5oajvu" path="res://assets/animations/player_animation.tres" id="1_qf5ok"]
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_geqid"]
+++ /dev/null
-[gd_scene load_steps=8 format=4 uid="uid://bk4h1frr4r8tq"]
-
-[ext_resource type="Script" path="res://scripts/house_template.gd" id="1_1vs50"]
-[ext_resource type="Texture2D" uid="uid://d4j4ulftsvn5c" path="res://assets/textures/Inner.png" id="1_w2ggh"]
-[ext_resource type="PackedScene" uid="uid://d11oo2pxcah1g" path="res://scenes/interfaces/pause_menu.tscn" id="1_yi287"]
-[ext_resource type="PackedScene" uid="uid://k76535tjepm3" path="res://scenes/elements/player.tscn" id="2_07rl6"]
-[ext_resource type="PackedScene" uid="uid://da1uex028xkv1" path="res://scenes/elements/door_scene_manager.tscn" id="3_3eu8f"]
-
-[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_q4fiy"]
-texture = ExtResource("1_w2ggh")
-0:0/0 = 0
-1:0/0 = 0
-1:0/0/z_index = -1
-2:0/0 = 0
-2:0/0/z_index = -1
-3:0/0 = 0
-3:0/0/z_index = -1
-4:0/0 = 0
-4:0/0/z_index = -1
-5:0/0 = 0
-5:0/0/z_index = -1
-6:0/0 = 0
-6:0/0/z_index = -1
-7:0/0 = 0
-7:0/0/z_index = -1
-8:0/0 = 0
-8:0/0/z_index = -1
-9:0/0 = 0
-10:0/0 = 0
-11:0/0 = 0
-12:0/0 = 0
-12:0/0/z_index = 1
-13:0/0 = 0
-13:0/0/z_index = 1
-14:0/0 = 0
-14:0/0/z_index = 1
-15:0/0 = 0
-15:0/0/z_index = 1
-16:0/0 = 0
-16:0/0/z_index = 1
-17:0/0 = 0
-17:0/0/z_index = 1
-0:1/0 = 0
-0:1/0/z_index = -1
-1:1/0 = 0
-1:1/0/z_index = -1
-2:1/0 = 0
-2:1/0/z_index = -1
-3:1/0 = 0
-3:1/0/z_index = -1
-4:1/0 = 0
-4:1/0/z_index = -1
-5:1/0 = 0
-5:1/0/z_index = -1
-6:1/0 = 0
-6:1/0/z_index = -1
-7:1/0 = 0
-7:1/0/z_index = -1
-8:1/0 = 0
-8:1/0/z_index = -1
-9:1/0 = 0
-16:1/0 = 0
-16:1/0/z_index = 1
-17:1/0 = 0
-17:1/0/z_index = 1
-18:1/0 = 0
-18:1/0/z_index = 1
-19:1/0 = 0
-19:1/0/z_index = 1
-20:1/0 = 0
-20:1/0/z_index = 1
-21:1/0 = 0
-21:1/0/z_index = 1
-0:2/0 = 0
-0:2/0/z_index = -1
-1:2/0 = 0
-1:2/0/z_index = -1
-2:2/0 = 0
-2:2/0/z_index = -1
-3:2/0 = 0
-3:2/0/z_index = -1
-4:2/0 = 0
-5:2/0 = 0
-5:2/0/z_index = -1
-6:2/0 = 0
-6:2/0/z_index = -1
-7:2/0 = 0
-7:2/0/z_index = -1
-8:2/0 = 0
-8:2/0/z_index = -1
-9:2/0 = 0
-9:2/0/z_index = -1
-16:2/0 = 0
-16:2/0/z_index = 1
-17:2/0 = 0
-17:2/0/z_index = 1
-18:2/0 = 0
-18:2/0/z_index = 1
-19:2/0 = 0
-19:2/0/z_index = 1
-20:2/0 = 0
-20:2/0/z_index = 1
-21:2/0 = 0
-21:2/0/z_index = 1
-0:3/0 = 0
-0:3/0/z_index = -1
-1:3/0 = 0
-1:3/0/z_index = -1
-2:3/0 = 0
-2:3/0/z_index = -1
-3:3/0 = 0
-3:3/0/z_index = -1
-4:3/0 = 0
-5:3/0 = 0
-5:3/0/z_index = -1
-6:3/0 = 0
-6:3/0/z_index = -1
-7:3/0 = 0
-7:3/0/z_index = -1
-8:3/0 = 0
-8:3/0/z_index = -1
-9:3/0 = 0
-9:3/0/z_index = -1
-16:3/0 = 0
-16:3/0/z_index = 1
-17:3/0 = 0
-17:3/0/z_index = 1
-18:3/0 = 0
-18:3/0/z_index = 1
-19:3/0 = 0
-19:3/0/z_index = 1
-20:3/0 = 0
-20:3/0/z_index = 1
-21:3/0 = 0
-21:3/0/z_index = 1
-0:4/0 = 0
-0:4/0/z_index = -1
-1:4/0 = 0
-1:4/0/z_index = -1
-2:4/0 = 0
-2:4/0/z_index = -1
-3:4/0 = 0
-3:4/0/z_index = -1
-4:4/0 = 0
-5:4/0 = 0
-5:4/0/z_index = -1
-6:4/0 = 0
-6:4/0/z_index = -1
-7:4/0 = 0
-8:4/0 = 0
-9:4/0 = 0
-9:4/0/z_index = 1
-10:4/0 = 0
-10:4/0/z_index = 1
-11:4/0 = 0
-11:4/0/z_index = 1
-12:4/0 = 0
-12:4/0/z_index = 1
-13:4/0 = 0
-13:4/0/z_index = 1
-14:4/0 = 0
-14:4/0/z_index = 1
-0:5/0 = 0
-0:5/0/z_index = -1
-1:5/0 = 0
-1:5/0/z_index = -1
-2:5/0 = 0
-2:5/0/z_index = -1
-3:5/0 = 0
-3:5/0/z_index = -1
-4:5/0 = 0
-5:5/0 = 0
-5:5/0/z_index = -1
-6:5/0 = 0
-6:5/0/z_index = -1
-7:5/0 = 0
-8:5/0 = 0
-9:5/0 = 0
-9:5/0/z_index = 1
-10:5/0 = 0
-10:5/0/z_index = 1
-11:5/0 = 0
-11:5/0/z_index = 1
-12:5/0 = 0
-12:5/0/z_index = 1
-13:5/0 = 0
-13:5/0/z_index = 1
-14:5/0 = 0
-14:5/0/z_index = 1
-0:6/0 = 0
-2:6/0 = 0
-3:6/0 = 0
-4:6/0 = 0
-5:6/0 = 0
-6:6/0 = 0
-7:6/0 = 0
-8:6/0 = 0
-9:6/0 = 0
-10:6/0 = 0
-10:6/0/z_index = 1
-11:6/0 = 0
-11:6/0/z_index = 1
-12:6/0 = 0
-12:6/0/z_index = 1
-13:6/0 = 0
-13:6/0/z_index = 1
-14:6/0 = 0
-14:6/0/z_index = 1
-0:7/0 = 0
-0:7/0/z_index = 1
-1:7/0 = 0
-1:7/0/z_index = 1
-2:7/0 = 0
-2:7/0/z_index = 1
-3:7/0 = 0
-3:7/0/z_index = 1
-4:7/0 = 0
-4:7/0/z_index = 1
-5:7/0 = 0
-5:7/0/z_index = 1
-6:7/0 = 0
-6:7/0/z_index = 1
-7:7/0 = 0
-7:7/0/z_index = 1
-8:7/0 = 0
-8:7/0/z_index = 1
-9:7/0 = 0
-9:7/0/z_index = 1
-10:7/0 = 0
-10:7/0/z_index = 1
-11:7/0 = 0
-11:7/0/z_index = 1
-12:7/0 = 0
-12:7/0/z_index = 1
-13:7/0 = 0
-13:7/0/z_index = 1
-14:7/0 = 0
-14:7/0/z_index = 1
-15:7/0 = 0
-15:7/0/z_index = 1
-16:7/0 = 0
-16:7/0/z_index = 1
-0:8/0 = 0
-0:8/0/z_index = 1
-1:8/0 = 0
-1:8/0/z_index = 1
-2:8/0 = 0
-2:8/0/z_index = 1
-3:8/0 = 0
-3:8/0/z_index = 1
-4:8/0 = 0
-4:8/0/z_index = 1
-5:8/0 = 0
-5:8/0/z_index = 1
-6:8/0 = 0
-6:8/0/z_index = 1
-7:8/0 = 0
-7:8/0/z_index = 1
-8:8/0 = 0
-8:8/0/z_index = 1
-9:8/0 = 0
-9:8/0/z_index = 1
-10:8/0 = 0
-10:8/0/z_index = 1
-11:8/0 = 0
-11:8/0/z_index = 1
-12:8/0 = 0
-12:8/0/z_index = 1
-13:8/0 = 0
-13:8/0/z_index = 1
-14:8/0 = 0
-14:8/0/z_index = 1
-15:8/0 = 0
-15:8/0/z_index = 1
-16:8/0 = 0
-0:9/0 = 0
-0:9/0/z_index = 1
-1:9/0 = 0
-1:9/0/z_index = 1
-2:9/0 = 0
-2:9/0/z_index = 1
-3:9/0 = 0
-3:9/0/z_index = 1
-4:9/0 = 0
-4:9/0/z_index = 1
-5:9/0 = 0
-5:9/0/z_index = 1
-6:9/0 = 0
-6:9/0/z_index = 1
-7:9/0 = 0
-7:9/0/z_index = 1
-8:9/0 = 0
-8:9/0/z_index = 1
-9:9/0 = 0
-10:9/0 = 0
-10:9/0/z_index = 1
-11:9/0 = 0
-12:9/0 = 0
-12:9/0/z_index = 1
-13:9/0 = 0
-13:9/0/z_index = 1
-14:9/0 = 0
-14:9/0/z_index = 1
-15:9/0 = 0
-15:9/0/z_index = 1
-16:9/0 = 0
-16:9/0/z_index = 1
-0:10/0 = 0
-0:10/0/z_index = 1
-1:10/0 = 0
-1:10/0/z_index = 1
-2:10/0 = 0
-2:10/0/z_index = 1
-3:10/0 = 0
-3:10/0/z_index = 1
-4:10/0 = 0
-4:10/0/z_index = 1
-5:10/0 = 0
-5:10/0/z_index = 1
-6:10/0 = 0
-6:10/0/z_index = 1
-7:10/0 = 0
-7:10/0/z_index = 1
-8:10/0 = 0
-8:10/0/z_index = 1
-9:10/0 = 0
-9:10/0/z_index = 1
-10:10/0 = 0
-10:10/0/z_index = 1
-11:10/0 = 0
-12:10/0 = 0
-12:10/0/z_index = 1
-13:10/0 = 0
-13:10/0/z_index = 1
-0:11/0 = 0
-0:11/0/z_index = 1
-1:11/0 = 0
-1:11/0/z_index = 1
-2:11/0 = 0
-2:11/0/z_index = 1
-3:11/0 = 0
-3:11/0/z_index = 1
-4:11/0 = 0
-4:11/0/z_index = 1
-5:11/0 = 0
-5:11/0/z_index = 1
-6:11/0 = 0
-6:11/0/z_index = 1
-7:11/0 = 0
-7:11/0/z_index = 1
-8:11/0 = 0
-8:11/0/z_index = 1
-9:11/0 = 0
-9:11/0/z_index = 1
-10:11/0 = 0
-10:11/0/z_index = 1
-11:11/0 = 0
-11:11/0/z_index = 1
-12:11/0 = 0
-12:11/0/z_index = 1
-13:11/0 = 0
-13:11/0/z_index = 1
-0:12/0 = 0
-0:12/0/z_index = 1
-1:12/0 = 0
-1:12/0/z_index = 1
-2:12/0 = 0
-2:12/0/z_index = 1
-3:12/0 = 0
-3:12/0/z_index = 1
-4:12/0 = 0
-4:12/0/z_index = 1
-5:12/0 = 0
-5:12/0/z_index = 1
-6:12/0 = 0
-6:12/0/z_index = 1
-7:12/0 = 0
-7:12/0/z_index = 1
-8:12/0 = 0
-8:12/0/z_index = 1
-9:12/0 = 0
-9:12/0/z_index = 1
-10:12/0 = 0
-10:12/0/z_index = 1
-11:12/0 = 0
-11:12/0/z_index = 1
-12:12/0 = 0
-12:12/0/z_index = 1
-13:12/0 = 0
-13:12/0/z_index = 1
-0:13/0 = 0
-0:13/0/z_index = 1
-1:13/0 = 0
-1:13/0/z_index = 1
-2:13/0 = 0
-2:13/0/z_index = 1
-3:13/0 = 0
-3:13/0/z_index = 1
-4:13/0 = 0
-4:13/0/z_index = 1
-5:13/0 = 0
-5:13/0/z_index = 1
-6:13/0 = 0
-6:13/0/z_index = 1
-7:13/0 = 0
-7:13/0/z_index = 1
-8:13/0 = 0
-8:13/0/z_index = 1
-0:14/0 = 0
-0:14/0/z_index = 1
-1:14/0 = 0
-1:14/0/z_index = 1
-2:14/0 = 0
-2:14/0/z_index = 1
-3:14/0 = 0
-3:14/0/z_index = 1
-4:14/0 = 0
-4:14/0/z_index = 1
-6:14/0 = 0
-6:14/0/z_index = 1
-7:14/0 = 0
-7:14/0/z_index = 1
-0:15/0 = 0
-1:15/0 = 0
-1:15/0/z_index = 1
-2:15/0 = 0
-2:15/0/z_index = 1
-3:15/0 = 0
-3:15/0/z_index = 1
-4:15/0 = 0
-4:15/0/z_index = 1
-6:15/0 = 0
-6:15/0/z_index = 1
-7:15/0 = 0
-7:15/0/z_index = 1
-0:16/0 = 0
-0:16/0/z_index = 1
-1:16/0 = 0
-1:16/0/z_index = 1
-2:16/0 = 0
-2:16/0/z_index = 1
-3:16/0 = 0
-3:16/0/z_index = 1
-4:16/0 = 0
-4:16/0/z_index = 1
-2:17/0 = 0
-2:17/0/z_index = 1
-3:17/0 = 0
-3:17/0/z_index = 1
-10:1/size_in_atlas = Vector2i(3, 3)
-10:1/0 = 0
-13:1/size_in_atlas = Vector2i(3, 3)
-13:1/0 = 0
-16:4/size_in_atlas = Vector2i(1, 3)
-16:4/0 = 0
-15:4/size_in_atlas = Vector2i(1, 3)
-15:4/0 = 0
-17:4/size_in_atlas = Vector2i(1, 3)
-17:4/0 = 0
-18:4/size_in_atlas = Vector2i(1, 3)
-18:4/0 = 0
-
-[sub_resource type="TileSet" id="TileSet_5bd38"]
-physics_layer_0/collision_layer = 1
-navigation_layer_0/layers = 1
-sources/0 = SubResource("TileSetAtlasSource_q4fiy")
-
-[node name="HouseTemplate" type="Node2D"]
-script = ExtResource("1_1vs50")
-
-[node name="TileMapLayer" type="TileMapLayer" parent="."]
-rotation = -0.000322629
-tile_map_data = PackedByteArray("AAAIAAIAAAACAAEAAAAIAAMAAAACAAEAAAAIAAQAAAACAAEAAAAIAAUAAAACAAEAAAAIAAYAAAACAAEAAAAIAAcAAAACAAEAAAAIAAgAAAACAAEAAAAIAAkAAAACAAEAAAAJAAoAAAACAAEAAAAJAAsAAAACAAEAAAAJAAwAAAACAAEAAAAKAA0AAAACAAEAAAALAA4AAAACAAEAAAAMAA8AAAACAAEAAAANAA8AAAACAAEAAAANABAAAAACAAEAAAAOABAAAAACAAEAAAAPABAAAAACAAEAAAAQABAAAAACAAEAAAARABAAAAACAAEAAAASABAAAAACAAEAAAATABAAAAACAAEAAAAUABAAAAACAAEAAAAVABAAAAACAAEAAAAWABAAAAACAAEAAAAWAA8AAAACAAEAAAAWAAwAAAACAAEAAAAWAAsAAAACAAEAAAAVAAoAAAACAAEAAAAUAAoAAAACAAEAAAATAAkAAAACAAEAAAASAAkAAAACAAEAAAARAAgAAAACAAEAAAAQAAgAAAACAAEAAAAPAAgAAAACAAEAAAAOAAgAAAACAAEAAAANAAcAAAACAAEAAAAMAAcAAAACAAEAAAALAAcAAAACAAEAAAAKAAcAAAACAAEAAAAJAAcAAAACAAEAAAAHAAkAAAACAAEAAAAHAAoAAAACAAEAAAAHAAsAAAACAAEAAAAHAAwAAAACAAEAAAAHAA0AAAACAAEAAAAHAA4AAAACAAEAAAAHAA8AAAACAAEAAAAIABAAAAACAAEAAAAJABAAAAACAAEAAAAKABEAAAACAAEAAAALABIAAAACAAEAAAAMABMAAAACAAEAAAANABMAAAACAAEAAAAOABMAAAACAAEAAAAPABMAAAACAAEAAAAQABQAAAACAAEAAAARABQAAAACAAEAAAASABQAAAACAAEAAAATABQAAAACAAEAAAAUABQAAAACAAEAAAAVABQAAAACAAEAAAAWABQAAAACAAEAAAAVAAwAAAACAAEAAAAUAA0AAAACAAEAAAAUAA4AAAACAAEAAAATAA8AAAACAAEAAAATABEAAAACAAEAAAATABIAAAACAAEAAAAUABMAAAACAAEAAAAWABUAAAACAAEAAAAAAAAAAAACAAEAAAAAAAEAAAACAAEAAAAAAAIAAAACAAEAAAAAAAMAAAACAAEAAAAAAAQAAAACAAEAAAAAAAUAAAACAAEAAAAAAAYAAAACAAEAAAAAAAcAAAACAAEAAAAAAAgAAAACAAEAAAAAAAkAAAACAAEAAAAAAAoAAAACAAEAAAAAAAsAAAACAAEAAAAAAAwAAAACAAEAAAAAAA0AAAACAAEAAAAAAA4AAAACAAEAAAAAAA8AAAACAAEAAAAAABAAAAACAAEAAAAAABEAAAACAAEAAAAAABIAAAACAAEAAAAAABMAAAACAAEAAAAAABQAAAACAAEAAAAAABUAAAACAAEAAAAAABYAAAACAAEAAAAAABcAAAACAAEAAAAAABgAAAACAAEAAAAAABkAAAACAAEAAAAAABoAAAACAAEAAAAAABsAAAACAAEAAAAAABwAAAACAAEAAAAAAB0AAAACAAEAAAAAAB4AAAACAAEAAAAAAB8AAAACAAEAAAAAACAAAAACAAEAAAAAACEAAAACAAEAAAAAACIAAAACAAEAAAAAACMAAAACAAEAAAAAACQAAAACAAEAAAAAACUAAAACAAEAAAAAACYAAAACAAEAAAAAACcAAAACAAEAAAAAACgAAAACAAEAAAABAAAAAAACAAEAAAABAAEAAAACAAEAAAABAAIAAAACAAEAAAABAAMAAAACAAEAAAABAAQAAAACAAEAAAABAAUAAAACAAEAAAABAAYAAAACAAEAAAABAAcAAAACAAEAAAABAAgAAAACAAEAAAABAAkAAAACAAEAAAABAAoAAAACAAEAAAABAAsAAAACAAEAAAABAAwAAAACAAEAAAABAA0AAAACAAEAAAABAA4AAAACAAEAAAABAA8AAAACAAEAAAABABAAAAACAAEAAAABABEAAAACAAEAAAABABIAAAACAAEAAAABABMAAAACAAEAAAABABQAAAACAAEAAAABABUAAAACAAEAAAABABYAAAACAAEAAAABABcAAAACAAEAAAABABgAAAACAAEAAAABABkAAAACAAEAAAABABoAAAACAAEAAAABABsAAAACAAEAAAABABwAAAACAAEAAAABAB0AAAACAAEAAAABAB4AAAACAAEAAAABAB8AAAACAAEAAAABACAAAAACAAEAAAABACEAAAACAAEAAAABACIAAAACAAEAAAABACMAAAACAAEAAAABACQAAAACAAEAAAABACUAAAACAAEAAAABACYAAAACAAEAAAABACcAAAACAAEAAAABACgAAAACAAEAAAACAAAAAAACAAEAAAACAAEAAAACAAEAAAACAAIAAAACAAEAAAACAAMAAAACAAEAAAACAAQAAAACAAEAAAACAAUAAAACAAEAAAACAAYAAAACAAEAAAACAAcAAAACAAEAAAACAAgAAAACAAEAAAACAAkAAAACAAEAAAACAAoAAAACAAEAAAACAAsAAAACAAEAAAACAAwAAAACAAEAAAACAA0AAAACAAEAAAACAA4AAAACAAEAAAACAA8AAAACAAEAAAACABAAAAACAAEAAAACABEAAAACAAEAAAACABIAAAACAAEAAAACABMAAAACAAEAAAACABQAAAACAAEAAAACABUAAAACAAEAAAACABYAAAACAAEAAAACABcAAAACAAEAAAACABgAAAACAAEAAAACABkAAAACAAEAAAACABoAAAACAAEAAAACABsAAAACAAEAAAACABwAAAACAAEAAAACAB0AAAACAAEAAAACAB4AAAACAAEAAAACAB8AAAACAAEAAAACACAAAAACAAEAAAACACEAAAACAAEAAAACACIAAAACAAEAAAACACMAAAACAAEAAAACACQAAAACAAEAAAACACUAAAACAAEAAAACACYAAAACAAEAAAACACcAAAACAAEAAAACACgAAAACAAEAAAADAAAAAAACAAEAAAADAAEAAAACAAEAAAADAAIAAAACAAEAAAADAAMAAAACAAEAAAADAAQAAAACAAEAAAADAAUAAAACAAEAAAADAAYAAAACAAEAAAADAAcAAAACAAEAAAADAAgAAAACAAEAAAADAAkAAAACAAEAAAADAAoAAAACAAEAAAADAAsAAAACAAEAAAADAAwAAAACAAEAAAADAA0AAAACAAEAAAADAA4AAAACAAEAAAADAA8AAAACAAEAAAADABAAAAACAAEAAAADABEAAAACAAEAAAADABIAAAACAAEAAAADABMAAAACAAEAAAADABQAAAACAAEAAAADABUAAAACAAEAAAADABYAAAACAAEAAAADABcAAAACAAEAAAADABgAAAACAAEAAAADABkAAAACAAEAAAADABoAAAACAAEAAAADABsAAAACAAEAAAADABwAAAACAAEAAAADAB0AAAACAAEAAAADAB4AAAACAAEAAAADAB8AAAACAAEAAAADACAAAAACAAEAAAADACEAAAACAAEAAAADACIAAAACAAEAAAADACMAAAACAAEAAAADACQAAAACAAEAAAADACUAAAACAAEAAAADACYAAAACAAEAAAADACcAAAACAAEAAAADACgAAAACAAEAAAAEAAAAAAACAAEAAAAEAAEAAAACAAEAAAAEAAIAAAACAAEAAAAEAAMAAAACAAEAAAAEAAQAAAACAAEAAAAEAAUAAAACAAEAAAAEAAYAAAACAAEAAAAEAAcAAAACAAEAAAAEAAgAAAACAAEAAAAEAAkAAAACAAEAAAAEAAoAAAACAAEAAAAEAAsAAAACAAEAAAAEAAwAAAACAAEAAAAEAA0AAAACAAEAAAAEAA4AAAACAAEAAAAEAA8AAAACAAEAAAAEABAAAAACAAEAAAAEABEAAAACAAEAAAAEABIAAAACAAEAAAAEABMAAAACAAEAAAAEABQAAAACAAEAAAAEABUAAAACAAEAAAAEABYAAAACAAEAAAAEABcAAAACAAEAAAAEABgAAAACAAEAAAAEABkAAAACAAEAAAAEABoAAAACAAEAAAAEABsAAAACAAEAAAAEABwAAAACAAEAAAAEAB0AAAACAAEAAAAEAB4AAAACAAEAAAAEAB8AAAACAAEAAAAEACAAAAACAAEAAAAEACEAAAACAAEAAAAEACIAAAACAAEAAAAEACMAAAACAAEAAAAEACQAAAACAAEAAAAEACUAAAACAAEAAAAEACYAAAACAAEAAAAEACcAAAACAAEAAAAEACgAAAACAAEAAAAFAAAAAAACAAEAAAAFAAEAAAACAAEAAAAFAAIAAAACAAEAAAAFAAMAAAACAAEAAAAFAAQAAAACAAEAAAAFAAUAAAACAAEAAAAFAAYAAAACAAEAAAAFAAcAAAACAAEAAAAFAAgAAAACAAEAAAAFAAkAAAACAAEAAAAFAAoAAAACAAEAAAAFAAsAAAACAAEAAAAFAAwAAAACAAEAAAAFAA0AAAACAAEAAAAFAA4AAAACAAEAAAAFAA8AAAACAAEAAAAFABAAAAACAAEAAAAFABEAAAACAAEAAAAFABIAAAACAAEAAAAFABMAAAACAAEAAAAFABQAAAACAAEAAAAFABUAAAACAAEAAAAFABYAAAACAAEAAAAFABcAAAACAAEAAAAFABgAAAACAAEAAAAFABkAAAACAAEAAAAFABoAAAACAAEAAAAFABsAAAACAAEAAAAFABwAAAACAAEAAAAFAB0AAAACAAEAAAAFAB4AAAACAAEAAAAFAB8AAAACAAEAAAAFACAAAAACAAEAAAAFACEAAAACAAEAAAAFACIAAAACAAEAAAAFACMAAAACAAEAAAAFACQAAAACAAEAAAAFACUAAAACAAEAAAAFACYAAAACAAEAAAAFACcAAAACAAEAAAAFACgAAAACAAEAAAAGAAAAAAACAAEAAAAGAAEAAAACAAEAAAAGAAIAAAACAAEAAAAGAAMAAAACAAEAAAAGAAQAAAACAAEAAAAGAAUAAAACAAEAAAAGAAYAAAACAAEAAAAGAAcAAAACAAEAAAAGAAgAAAACAAEAAAAGAAkAAAACAAEAAAAGAAoAAAACAAEAAAAGAAsAAAACAAEAAAAGAAwAAAACAAEAAAAGAA0AAAACAAEAAAAGAA4AAAACAAEAAAAGAA8AAAACAAEAAAAGABAAAAACAAEAAAAGABEAAAACAAEAAAAGABIAAAACAAEAAAAGABMAAAACAAEAAAAGABQAAAACAAEAAAAGABUAAAACAAEAAAAGABYAAAACAAEAAAAGABcAAAACAAEAAAAGABgAAAACAAEAAAAGABkAAAACAAEAAAAGABoAAAACAAEAAAAGABsAAAACAAEAAAAGABwAAAACAAEAAAAGAB0AAAACAAEAAAAGAB4AAAACAAEAAAAGAB8AAAACAAEAAAAGACAAAAACAAEAAAAGACEAAAACAAEAAAAGACIAAAACAAEAAAAGACMAAAACAAEAAAAGACQAAAACAAEAAAAGACUAAAACAAEAAAAGACYAAAACAAEAAAAGACcAAAACAAEAAAAGACgAAAACAAEAAAAHAAAAAAACAAEAAAAHAAEAAAACAAEAAAAHAAIAAAACAAEAAAAHAAMAAAACAAEAAAAHAAQAAAACAAEAAAAHAAUAAAACAAEAAAAHAAYAAAACAAEAAAAHAAcAAAACAAEAAAAHAAgAAAACAAEAAAAHABAAAAACAAEAAAAHABEAAAACAAEAAAAHABIAAAACAAEAAAAHABMAAAACAAEAAAAHABQAAAACAAEAAAAHABUAAAACAAEAAAAHABYAAAACAAEAAAAHABcAAAACAAEAAAAHABgAAAACAAEAAAAHABkAAAACAAEAAAAHABoAAAACAAEAAAAHABsAAAACAAEAAAAHABwAAAACAAEAAAAHAB0AAAACAAEAAAAHAB4AAAACAAEAAAAHAB8AAAACAAEAAAAHACAAAAACAAEAAAAHACEAAAACAAEAAAAHACIAAAACAAEAAAAHACMAAAACAAEAAAAHACQAAAACAAEAAAAHACUAAAACAAEAAAAHACYAAAACAAEAAAAHACcAAAACAAEAAAAHACgAAAACAAEAAAAIAAAAAAACAAEAAAAIAAEAAAACAAEAAAAIAAoAAAACAAEAAAAIAAsAAAACAAEAAAAIAAwAAAACAAEAAAAIAA0AAAACAAEAAAAIAA4AAAACAAEAAAAIAA8AAAACAAEAAAAIABEAAAACAAEAAAAIABIAAAACAAEAAAAIABMAAAACAAEAAAAIABQAAAACAAEAAAAIABUAAAACAAEAAAAIABYAAAACAAEAAAAIABcAAAACAAEAAAAIABgAAAACAAEAAAAIABkAAAACAAEAAAAIABoAAAACAAEAAAAIABsAAAACAAEAAAAIABwAAAACAAEAAAAIAB0AAAACAAEAAAAIAB4AAAACAAEAAAAIAB8AAAACAAEAAAAIACAAAAACAAEAAAAIACEAAAACAAEAAAAIACIAAAACAAEAAAAIACMAAAACAAEAAAAIACQAAAACAAEAAAAIACUAAAACAAEAAAAIACYAAAACAAEAAAAIACcAAAACAAEAAAAIACgAAAACAAEAAAAJAAAAAAACAAEAAAAJAAEAAAACAAEAAAAJAAIAAAACAAEAAAAJAAMAAAACAAEAAAAJAAQAAAACAAEAAAAJAAUAAAACAAEAAAAJAAYAAAACAAEAAAAJAAgAAAACAAEAAAAJAAkAAAACAAEAAAAJAA0AAAACAAEAAAAJAA4AAAACAAEAAAAJAA8AAAACAAEAAAAJABEAAAACAAEAAAAJABIAAAACAAEAAAAJABMAAAACAAEAAAAJABQAAAACAAEAAAAJABUAAAACAAEAAAAJABYAAAACAAEAAAAJABcAAAACAAEAAAAJABgAAAACAAEAAAAJABkAAAACAAEAAAAJABoAAAACAAEAAAAJABsAAAACAAEAAAAJABwAAAACAAEAAAAJAB0AAAACAAEAAAAJAB4AAAACAAEAAAAJAB8AAAACAAEAAAAJACAAAAACAAEAAAAJACEAAAACAAEAAAAJACIAAAACAAEAAAAJACMAAAACAAEAAAAJACQAAAACAAEAAAAJACUAAAACAAEAAAAJACYAAAACAAEAAAAJACcAAAACAAEAAAAJACgAAAACAAEAAAAKAAAAAAACAAEAAAAKAAEAAAACAAEAAAAKAAIAAAACAAEAAAAKAAMAAAACAAEAAAAKAAQAAAACAAEAAAAKAAUAAAACAAEAAAAKAAYAAAACAAEAAAAKAAgAAAACAAEAAAAKAAkAAAACAAEAAAAKAAoAAAACAAEAAAAKAAsAAAACAAEAAAAKAAwAAAACAAEAAAAKAA4AAAACAAEAAAAKAA8AAAACAAEAAAAKABAAAAACAAEAAAAKABIAAAACAAEAAAAKABMAAAACAAEAAAAKABQAAAACAAEAAAAKABUAAAACAAEAAAAKABYAAAACAAEAAAAKABcAAAACAAEAAAAKABgAAAACAAEAAAAKABkAAAACAAEAAAAKABoAAAACAAEAAAAKABsAAAACAAEAAAAKABwAAAACAAEAAAAKAB0AAAACAAEAAAAKAB4AAAACAAEAAAAKAB8AAAACAAEAAAAKACAAAAACAAEAAAAKACEAAAACAAEAAAAKACIAAAACAAEAAAAKACMAAAACAAEAAAAKACQAAAACAAEAAAAKACUAAAACAAEAAAAKACYAAAACAAEAAAAKACcAAAACAAEAAAAKACgAAAACAAEAAAALAAAAAAACAAEAAAALAAEAAAACAAEAAAALAAIAAAACAAEAAAALAAMAAAACAAEAAAALAAQAAAACAAEAAAALAAUAAAACAAEAAAALAAYAAAACAAEAAAALAAgAAAACAAEAAAALAAkAAAACAAEAAAALAAoAAAACAAEAAAALAAsAAAACAAEAAAALAAwAAAACAAEAAAALAA0AAAACAAEAAAALAA8AAAACAAEAAAALABAAAAACAAEAAAALABEAAAACAAEAAAALABMAAAACAAEAAAALABQAAAACAAEAAAALABUAAAACAAEAAAALABYAAAACAAEAAAALABcAAAACAAEAAAALABgAAAACAAEAAAALABkAAAACAAEAAAALABoAAAACAAEAAAALABsAAAACAAEAAAALABwAAAACAAEAAAALAB0AAAACAAEAAAALAB4AAAACAAEAAAALAB8AAAACAAEAAAALACAAAAACAAEAAAALACEAAAACAAEAAAALACIAAAACAAEAAAALACMAAAACAAEAAAALACQAAAACAAEAAAALACUAAAACAAEAAAALACYAAAACAAEAAAALACcAAAACAAEAAAALACgAAAACAAEAAAAMAAAAAAACAAEAAAAMAAEAAAACAAEAAAAMAAIAAAACAAEAAAAMAAMAAAACAAEAAAAMAAQAAAACAAEAAAAMAAUAAAACAAEAAAAMAAYAAAACAAEAAAAMAAgAAAACAAEAAAAMAAkAAAACAAEAAAAMAAoAAAACAAEAAAAMAAsAAAACAAEAAAAMAAwAAAACAAEAAAAMAA0AAAACAAEAAAAMAA4AAAACAAEAAAAMABAAAAACAAEAAAAMABEAAAACAAEAAAAMABIAAAACAAEAAAAMABQAAAACAAEAAAAMABUAAAACAAEAAAAMABYAAAACAAEAAAAMABcAAAACAAEAAAAMABgAAAACAAEAAAAMABkAAAACAAEAAAAMABoAAAACAAEAAAAMABsAAAACAAEAAAAMABwAAAACAAEAAAAMAB0AAAACAAEAAAAMAB4AAAACAAEAAAAMAB8AAAACAAEAAAAMACAAAAACAAEAAAAMACEAAAACAAEAAAAMACIAAAACAAEAAAAMACMAAAACAAEAAAAMACQAAAACAAEAAAAMACUAAAACAAEAAAAMACYAAAACAAEAAAAMACcAAAACAAEAAAAMACgAAAACAAEAAAANAAAAAAACAAEAAAANAAEAAAACAAEAAAANAAIAAAACAAEAAAANAAMAAAACAAEAAAANAAQAAAACAAEAAAANAAUAAAACAAEAAAANAAYAAAACAAEAAAANAAgAAAACAAEAAAANAAkAAAACAAEAAAANAAoAAAACAAEAAAANAAsAAAACAAEAAAANAAwAAAACAAEAAAANAA0AAAACAAEAAAANAA4AAAACAAEAAAANABEAAAACAAEAAAANABIAAAACAAEAAAANABQAAAACAAEAAAANABUAAAACAAEAAAANABYAAAACAAEAAAANABcAAAACAAEAAAANABgAAAACAAEAAAANABkAAAACAAEAAAANABoAAAACAAEAAAANABsAAAACAAEAAAANABwAAAACAAEAAAANAB0AAAACAAEAAAANAB4AAAACAAEAAAANAB8AAAACAAEAAAANACAAAAACAAEAAAANACEAAAACAAEAAAANACIAAAACAAEAAAANACMAAAACAAEAAAANACQAAAACAAEAAAANACUAAAACAAEAAAANACYAAAACAAEAAAANACcAAAACAAEAAAANACgAAAACAAEAAAAOAAAAAAACAAEAAAAOAAEAAAACAAEAAAAOAAIAAAACAAEAAAAOAAMAAAACAAEAAAAOAAQAAAACAAEAAAAOAAUAAAACAAEAAAAOAAYAAAACAAEAAAAOAAcAAAACAAEAAAAOAAkAAAACAAEAAAAOAAoAAAACAAEAAAAOAAsAAAACAAEAAAAOAAwAAAACAAEAAAAOAA0AAAACAAEAAAAOAA4AAAACAAEAAAAOAA8AAAACAAEAAAAOABEAAAACAAEAAAAOABIAAAACAAEAAAAOABQAAAACAAEAAAAOABUAAAACAAEAAAAOABYAAAACAAEAAAAOABcAAAACAAEAAAAOABgAAAACAAEAAAAOABkAAAACAAEAAAAOABoAAAACAAEAAAAOABsAAAACAAEAAAAOABwAAAACAAEAAAAOAB0AAAACAAEAAAAOAB4AAAACAAEAAAAOAB8AAAACAAEAAAAOACAAAAACAAEAAAAOACEAAAACAAEAAAAOACIAAAACAAEAAAAOACMAAAACAAEAAAAOACQAAAACAAEAAAAOACUAAAACAAEAAAAOACYAAAACAAEAAAAOACcAAAACAAEAAAAOACgAAAACAAEAAAAPAAAAAAACAAEAAAAPAAEAAAACAAEAAAAPAAIAAAACAAEAAAAPAAMAAAACAAEAAAAPAAQAAAACAAEAAAAPAAUAAAACAAEAAAAPAAYAAAACAAEAAAAPAAcAAAACAAEAAAAPAAkAAAACAAEAAAAPAAoAAAACAAEAAAAPAAsAAAACAAEAAAAPAAwAAAACAAEAAAAPAA0AAAACAAEAAAAPAA4AAAACAAEAAAAPAA8AAAACAAEAAAAPABEAAAACAAEAAAAPABIAAAACAAEAAAAPABQAAAACAAEAAAAPABUAAAACAAEAAAAPABYAAAACAAEAAAAPABcAAAACAAEAAAAPABgAAAACAAEAAAAPABkAAAACAAEAAAAPABoAAAACAAEAAAAPABsAAAACAAEAAAAPABwAAAACAAEAAAAPAB0AAAACAAEAAAAPAB4AAAACAAEAAAAPAB8AAAACAAEAAAAPACAAAAACAAEAAAAPACEAAAACAAEAAAAPACIAAAACAAEAAAAPACMAAAACAAEAAAAPACQAAAACAAEAAAAPACUAAAACAAEAAAAPACYAAAACAAEAAAAPACcAAAACAAEAAAAPACgAAAACAAEAAAAQAAAAAAACAAEAAAAQAAEAAAACAAEAAAAQAAIAAAACAAEAAAAQAAMAAAACAAEAAAAQAAQAAAACAAEAAAAQAAUAAAACAAEAAAAQAAYAAAACAAEAAAAQAAcAAAACAAEAAAAQAAkAAAACAAEAAAAQAAoAAAACAAEAAAAQAAsAAAACAAEAAAAQAAwAAAACAAEAAAAQAA0AAAACAAEAAAAQAA4AAAACAAEAAAAQAA8AAAACAAEAAAAQABEAAAACAAEAAAAQABIAAAACAAEAAAAQABMAAAACAAEAAAAQABUAAAACAAEAAAAQABYAAAACAAEAAAAQABcAAAACAAEAAAAQABgAAAACAAEAAAAQABkAAAACAAEAAAAQABoAAAACAAEAAAAQABsAAAACAAEAAAAQABwAAAACAAEAAAAQAB0AAAACAAEAAAAQAB4AAAACAAEAAAAQAB8AAAACAAEAAAAQACAAAAACAAEAAAAQACEAAAACAAEAAAAQACIAAAACAAEAAAAQACMAAAACAAEAAAAQACQAAAACAAEAAAAQACUAAAACAAEAAAAQACYAAAACAAEAAAAQACcAAAACAAEAAAAQACgAAAACAAEAAAARAAAAAAACAAEAAAARAAEAAAACAAEAAAARAAIAAAACAAEAAAARAAMAAAACAAEAAAARAAQAAAACAAEAAAARAAUAAAACAAEAAAARAAYAAAACAAEAAAARAAcAAAACAAEAAAARAAkAAAACAAEAAAARAAoAAAACAAEAAAARAAsAAAACAAEAAAARAAwAAAACAAEAAAARAA0AAAACAAEAAAARAA4AAAACAAEAAAARAA8AAAACAAEAAAARABEAAAACAAEAAAARABIAAAACAAEAAAARABMAAAACAAEAAAARABUAAAACAAEAAAARABYAAAACAAEAAAARABcAAAACAAEAAAARABgAAAACAAEAAAARABkAAAACAAEAAAARABoAAAACAAEAAAARABsAAAACAAEAAAARABwAAAACAAEAAAARAB0AAAACAAEAAAARAB4AAAACAAEAAAARAB8AAAACAAEAAAARACAAAAACAAEAAAARACEAAAACAAEAAAARACIAAAACAAEAAAARACMAAAACAAEAAAARACQAAAACAAEAAAARACUAAAACAAEAAAARACYAAAACAAEAAAARACcAAAACAAEAAAARACgAAAACAAEAAAASAAAAAAACAAEAAAASAAEAAAACAAEAAAASAAIAAAACAAEAAAASAAMAAAACAAEAAAASAAQAAAACAAEAAAASAAUAAAACAAEAAAASAAYAAAACAAEAAAASAAcAAAACAAEAAAASAAgAAAACAAEAAAASAAoAAAACAAEAAAASAAsAAAACAAEAAAASAAwAAAACAAEAAAASAA0AAAACAAEAAAASAA4AAAACAAEAAAASAA8AAAACAAEAAAASABEAAAACAAEAAAASABIAAAACAAEAAAASABMAAAACAAEAAAASABUAAAACAAEAAAASABYAAAACAAEAAAASABcAAAACAAEAAAASABgAAAACAAEAAAASABkAAAACAAEAAAASABoAAAACAAEAAAASABsAAAACAAEAAAASABwAAAACAAEAAAASAB0AAAACAAEAAAASAB4AAAACAAEAAAASAB8AAAACAAEAAAASACAAAAACAAEAAAASACEAAAACAAEAAAASACIAAAACAAEAAAASACMAAAACAAEAAAASACQAAAACAAEAAAASACUAAAACAAEAAAASACYAAAACAAEAAAASACcAAAACAAEAAAASACgAAAACAAEAAAATAAAAAAACAAEAAAATAAEAAAACAAEAAAATAAIAAAACAAEAAAATAAMAAAACAAEAAAATAAQAAAACAAEAAAATAAUAAAACAAEAAAATAAYAAAACAAEAAAATAAcAAAACAAEAAAATAAgAAAACAAEAAAATAAoAAAACAAEAAAATAAsAAAACAAEAAAATAAwAAAACAAEAAAATAA0AAAACAAEAAAATAA4AAAACAAEAAAATABMAAAACAAEAAAATABUAAAACAAEAAAATABYAAAACAAEAAAATABcAAAACAAEAAAATABgAAAACAAEAAAATABkAAAACAAEAAAATABoAAAACAAEAAAATABsAAAACAAEAAAATABwAAAACAAEAAAATAB0AAAACAAEAAAATAB4AAAACAAEAAAATAB8AAAACAAEAAAATACAAAAACAAEAAAATACEAAAACAAEAAAATACIAAAACAAEAAAATACMAAAACAAEAAAATACQAAAACAAEAAAATACUAAAACAAEAAAATACYAAAACAAEAAAATACcAAAACAAEAAAATACgAAAACAAEAAAAUAAAAAAACAAEAAAAUAAEAAAACAAEAAAAUAAIAAAACAAEAAAAUAAMAAAACAAEAAAAUAAQAAAACAAEAAAAUAAUAAAACAAEAAAAUAAYAAAACAAEAAAAUAAcAAAACAAEAAAAUAAgAAAACAAEAAAAUAAkAAAACAAEAAAAUAAsAAAACAAEAAAAUAAwAAAACAAEAAAAUAA8AAAACAAEAAAAUABEAAAACAAEAAAAUABIAAAACAAEAAAAUABUAAAACAAEAAAAUABYAAAACAAEAAAAUABcAAAACAAEAAAAUABgAAAACAAEAAAAUABkAAAACAAEAAAAUABoAAAACAAEAAAAUABsAAAACAAEAAAAUABwAAAACAAEAAAAUAB0AAAACAAEAAAAUAB4AAAACAAEAAAAUAB8AAAACAAEAAAAUACAAAAACAAEAAAAUACEAAAACAAEAAAAUACIAAAACAAEAAAAUACMAAAACAAEAAAAUACQAAAACAAEAAAAUACUAAAACAAEAAAAUACYAAAACAAEAAAAUACcAAAACAAEAAAAUACgAAAACAAEAAAAVAAAAAAACAAEAAAAVAAEAAAACAAEAAAAVAAIAAAACAAEAAAAVAAMAAAACAAEAAAAVAAQAAAACAAEAAAAVAAUAAAACAAEAAAAVAAYAAAACAAEAAAAVAAcAAAACAAEAAAAVAAgAAAACAAEAAAAVAAkAAAACAAEAAAAVAAsAAAACAAEAAAAVAA0AAAACAAEAAAAVAA4AAAACAAEAAAAVAA8AAAACAAEAAAAVABEAAAACAAEAAAAVABIAAAACAAEAAAAVABMAAAACAAEAAAAVABUAAAACAAEAAAAVABYAAAACAAEAAAAVABcAAAACAAEAAAAVABgAAAACAAEAAAAVABkAAAACAAEAAAAVABoAAAACAAEAAAAVABsAAAACAAEAAAAVABwAAAACAAEAAAAVAB0AAAACAAEAAAAVAB4AAAACAAEAAAAVAB8AAAACAAEAAAAVACAAAAACAAEAAAAVACEAAAACAAEAAAAVACIAAAACAAEAAAAVACMAAAACAAEAAAAVACQAAAACAAEAAAAVACUAAAACAAEAAAAVACYAAAACAAEAAAAVACcAAAACAAEAAAAVACgAAAACAAEAAAAWAAAAAAACAAEAAAAWAAEAAAACAAEAAAAWAAIAAAACAAEAAAAWAAMAAAACAAEAAAAWAAQAAAACAAEAAAAWAAUAAAACAAEAAAAWAAYAAAACAAEAAAAWAAcAAAACAAEAAAAWAAgAAAACAAEAAAAWAAkAAAACAAEAAAAWAAoAAAACAAEAAAAWAA0AAAACAAEAAAAWAA4AAAACAAEAAAAWABEAAAACAAEAAAAWABIAAAACAAEAAAAWABMAAAACAAEAAAAWABYAAAACAAEAAAAWABcAAAACAAEAAAAWABgAAAACAAEAAAAWABkAAAACAAEAAAAWABoAAAACAAEAAAAWABsAAAACAAEAAAAWABwAAAACAAEAAAAWAB0AAAACAAEAAAAWAB4AAAACAAEAAAAWAB8AAAACAAEAAAAWACAAAAACAAEAAAAWACEAAAACAAEAAAAWACIAAAACAAEAAAAWACMAAAACAAEAAAAWACQAAAACAAEAAAAWACUAAAACAAEAAAAWACYAAAACAAEAAAAWACcAAAACAAEAAAAWACgAAAACAAEAAAAXAAAAAAACAAEAAAAXAAEAAAACAAEAAAAXAAIAAAACAAEAAAAXAAMAAAACAAEAAAAXAAQAAAACAAEAAAAXAAUAAAACAAEAAAAXABkAAAACAAEAAAAXABoAAAACAAEAAAAXABsAAAACAAEAAAAXABwAAAACAAEAAAAXAB0AAAACAAEAAAAXAB4AAAACAAEAAAAXAB8AAAACAAEAAAAXACAAAAACAAEAAAAXACEAAAACAAEAAAAXACIAAAACAAEAAAAXACMAAAACAAEAAAAXACQAAAACAAEAAAAXACUAAAACAAEAAAAXACYAAAACAAEAAAAXACcAAAACAAEAAAAXACgAAAACAAEAAAAYAAAAAAACAAEAAAAYAAEAAAACAAEAAAAYAAIAAAACAAEAAAAYAAMAAAACAAEAAAAYAAQAAAACAAEAAAAYAAUAAAACAAEAAAAYABkAAAACAAEAAAAYABoAAAACAAEAAAAYABsAAAACAAEAAAAYABwAAAACAAEAAAAYAB0AAAACAAEAAAAYAB4AAAACAAEAAAAYAB8AAAACAAEAAAAYACAAAAACAAEAAAAYACEAAAACAAEAAAAYACIAAAACAAEAAAAYACMAAAACAAEAAAAYACQAAAACAAEAAAAYACUAAAACAAEAAAAYACYAAAACAAEAAAAYACcAAAACAAEAAAAYACgAAAACAAEAAAAZAAAAAAACAAEAAAAZAAEAAAACAAEAAAAZAAIAAAACAAEAAAAZAAMAAAACAAEAAAAZAAQAAAACAAEAAAAZAAUAAAACAAEAAAAZABkAAAACAAEAAAAZABoAAAACAAEAAAAZABsAAAACAAEAAAAZABwAAAACAAEAAAAZAB0AAAACAAEAAAAZAB4AAAACAAEAAAAZAB8AAAACAAEAAAAZACAAAAACAAEAAAAZACEAAAACAAEAAAAZACIAAAACAAEAAAAZACMAAAACAAEAAAAZACQAAAACAAEAAAAZACUAAAACAAEAAAAZACYAAAACAAEAAAAZACcAAAACAAEAAAAZACgAAAACAAEAAAAaAAAAAAACAAEAAAAaAAEAAAACAAEAAAAaAAIAAAACAAEAAAAaAAMAAAACAAEAAAAaAAQAAAACAAEAAAAaAAUAAAACAAEAAAAaABkAAAACAAEAAAAaABoAAAACAAEAAAAaABsAAAACAAEAAAAaABwAAAACAAEAAAAaAB0AAAACAAEAAAAaAB4AAAACAAEAAAAaAB8AAAACAAEAAAAaACAAAAACAAEAAAAaACEAAAACAAEAAAAaACIAAAACAAEAAAAaACMAAAACAAEAAAAaACQAAAACAAEAAAAaACUAAAACAAEAAAAaACYAAAACAAEAAAAaACcAAAACAAEAAAAaACgAAAACAAEAAAAbAAAAAAACAAEAAAAbAAEAAAACAAEAAAAbAAIAAAACAAEAAAAbAAMAAAACAAEAAAAbAAQAAAACAAEAAAAbAAUAAAACAAEAAAAbABkAAAACAAEAAAAbABoAAAACAAEAAAAbABsAAAACAAEAAAAbABwAAAACAAEAAAAbAB0AAAACAAEAAAAbAB4AAAACAAEAAAAbAB8AAAACAAEAAAAbACAAAAACAAEAAAAbACEAAAACAAEAAAAbACIAAAACAAEAAAAbACMAAAACAAEAAAAbACQAAAACAAEAAAAbACUAAAACAAEAAAAbACYAAAACAAEAAAAbACcAAAACAAEAAAAbACgAAAACAAEAAAAcAAAAAAACAAEAAAAcAAEAAAACAAEAAAAcAAIAAAACAAEAAAAcAAMAAAACAAEAAAAcAAQAAAACAAEAAAAcAAUAAAACAAEAAAAcABkAAAABAAEAAAAcABoAAAABAAEAAAAcABsAAAABAAEAAAAcABwAAAABAAIAAAAcAB0AAAACAAEAAAAcAB4AAAACAAEAAAAcAB8AAAACAAEAAAAcACAAAAACAAEAAAAcACEAAAACAAEAAAAcACIAAAACAAEAAAAcACMAAAACAAEAAAAcACQAAAACAAEAAAAcACUAAAACAAEAAAAcACYAAAACAAEAAAAcACcAAAACAAEAAAAcACgAAAACAAEAAAAdAAAAAAACAAEAAAAdAAEAAAACAAEAAAAdAAIAAAACAAEAAAAdAAMAAAACAAEAAAAdAAQAAAACAAEAAAAdAAUAAAACAAEAAAAdABkAAAAAAAIAAAAdABoAAAAAAAIAAAAdABsAAAAAAAIAAAAdABwAAAACAAIAAAAdAB0AAAACAAEAAAAdAB4AAAACAAEAAAAdAB8AAAACAAEAAAAdACAAAAACAAEAAAAdACEAAAACAAEAAAAdACIAAAACAAEAAAAdACMAAAACAAEAAAAdACQAAAACAAEAAAAdACUAAAACAAEAAAAdACYAAAACAAEAAAAdACcAAAACAAEAAAAdACgAAAACAAEAAAAeAAAAAAACAAEAAAAeAAEAAAACAAEAAAAeAAIAAAACAAEAAAAeAAMAAAACAAEAAAAeAAQAAAACAAEAAAAeAAUAAAACAAEAAAAeABkAAAAAAAIAAAAeABoAAAAAAAIAAAAeABsAAAAAAAIAAAAeABwAAAACAAIAAAAeAB0AAAACAAEAAAAeAB4AAAACAAEAAAAeAB8AAAACAAEAAAAeACAAAAACAAEAAAAeACEAAAACAAEAAAAeACIAAAACAAEAAAAeACMAAAACAAEAAAAeACQAAAACAAEAAAAeACUAAAACAAEAAAAeACYAAAACAAEAAAAeACcAAAACAAEAAAAeACgAAAACAAEAAAAfAAAAAAACAAEAAAAfAAEAAAACAAEAAAAfAAIAAAACAAEAAAAfAAMAAAACAAEAAAAfAAQAAAACAAEAAAAfAAUAAAACAAEAAAAfABkAAAAAAAIAAAAfABoAAAAAAAIAAAAfABsAAAAAAAIAAAAfABwAAAACAAIAAAAfAB0AAAACAAEAAAAfAB4AAAACAAEAAAAfAB8AAAACAAEAAAAfACAAAAACAAEAAAAfACEAAAACAAEAAAAfACIAAAACAAEAAAAfACMAAAACAAEAAAAfACQAAAACAAEAAAAfACUAAAACAAEAAAAfACYAAAACAAEAAAAfACcAAAACAAEAAAAfACgAAAACAAEAAAAgAAAAAAACAAEAAAAgAAEAAAACAAEAAAAgAAIAAAACAAEAAAAgAAMAAAACAAEAAAAgAAQAAAACAAEAAAAgAAUAAAACAAEAAAAgABkAAAAAAAIAAAAgABoAAAAAAAIAAAAgABsAAAAAAAIAAAAgABwAAAACAAIAAAAgAB0AAAACAAEAAAAgAB4AAAACAAEAAAAgAB8AAAACAAEAAAAgACAAAAACAAEAAAAgACEAAAACAAEAAAAgACIAAAACAAEAAAAgACMAAAACAAEAAAAgACQAAAACAAEAAAAgACUAAAACAAEAAAAgACYAAAACAAEAAAAgACcAAAACAAEAAAAgACgAAAACAAEAAAAhAAAAAAACAAEAAAAhAAEAAAACAAEAAAAhAAIAAAACAAEAAAAhAAMAAAACAAEAAAAhAAQAAAACAAEAAAAhAAUAAAACAAEAAAAhABkAAAAAAAIAAAAhABoAAAAAAAIAAAAhABsAAAAAAAIAAAAhABwAAAACAAIAAAAhAB0AAAACAAEAAAAhAB4AAAACAAEAAAAhAB8AAAACAAEAAAAhACAAAAACAAEAAAAhACEAAAACAAEAAAAhACIAAAACAAEAAAAhACMAAAACAAEAAAAhACQAAAACAAEAAAAhACUAAAACAAEAAAAhACYAAAACAAEAAAAhACcAAAACAAEAAAAhACgAAAACAAEAAAAiAAAAAAACAAEAAAAiAAEAAAACAAEAAAAiAAIAAAACAAEAAAAiAAMAAAACAAEAAAAiAAQAAAACAAEAAAAiAAUAAAACAAEAAAAiABkAAAAAAAIAAAAiABoAAAAAAAIAAAAiABsAAAAAAAIAAAAiABwAAAACAAIAAAAiAB0AAAACAAEAAAAiAB4AAAACAAEAAAAiAB8AAAACAAEAAAAiACAAAAACAAEAAAAiACEAAAACAAEAAAAiACIAAAACAAEAAAAiACMAAAACAAEAAAAiACQAAAACAAEAAAAiACUAAAACAAEAAAAiACYAAAACAAEAAAAiACcAAAACAAEAAAAiACgAAAACAAEAAAAjAAAAAAACAAEAAAAjAAEAAAACAAEAAAAjAAIAAAACAAEAAAAjAAMAAAACAAEAAAAjAAQAAAACAAEAAAAjAAUAAAACAAEAAAAjABkAAAAAAAIAAAAjABoAAAAAAAIAAAAjABsAAAAAAAIAAAAjABwAAAAAAAAAAAAjAB0AAAACAAEAAAAjAB4AAAACAAEAAAAjAB8AAAACAAEAAAAjACAAAAACAAEAAAAjACEAAAACAAEAAAAjACIAAAACAAEAAAAjACMAAAACAAEAAAAjACQAAAACAAEAAAAjACUAAAACAAEAAAAjACYAAAACAAEAAAAjACcAAAACAAEAAAAjACgAAAACAAEAAAAkAAAAAAACAAEAAAAkAAEAAAACAAEAAAAkAAIAAAACAAEAAAAkAAMAAAACAAEAAAAkAAQAAAACAAEAAAAkAAUAAAACAAEAAAAkABkAAAAAAAIAAAAkABoAAAAAAAIAAAAkABsAAAAAAAIAAAAkABwAAAAAAAAAAAAkAB0AAAACAAEAAAAkAB4AAAACAAEAAAAkAB8AAAACAAEAAAAkACAAAAACAAEAAAAkACEAAAACAAEAAAAkACIAAAACAAEAAAAkACMAAAACAAEAAAAkACQAAAACAAEAAAAkACUAAAACAAEAAAAkACYAAAACAAEAAAAkACcAAAACAAEAAAAkACgAAAACAAEAAAAlAAAAAAACAAEAAAAlAAEAAAACAAEAAAAlAAIAAAACAAEAAAAlAAMAAAACAAEAAAAlAAQAAAACAAEAAAAlAAUAAAACAAEAAAAlABkAAAAAAAIAAAAlABoAAAAAAAIAAAAlABsAAAAAAAIAAAAlABwAAAAAAAAAAAAlAB0AAAACAAEAAAAlAB4AAAACAAEAAAAlAB8AAAACAAEAAAAlACAAAAACAAEAAAAlACEAAAACAAEAAAAlACIAAAACAAEAAAAlACMAAAACAAEAAAAlACQAAAACAAEAAAAlACUAAAACAAEAAAAlACYAAAACAAEAAAAlACcAAAACAAEAAAAlACgAAAACAAEAAAAmAAAAAAACAAEAAAAmAAEAAAACAAEAAAAmAAIAAAACAAEAAAAmAAMAAAACAAEAAAAmAAQAAAACAAEAAAAmAAUAAAACAAEAAAAmABkAAAAAAAIAAAAmABoAAAAAAAIAAAAmABsAAAAAAAIAAAAmABwAAAACAAIAAAAmAB0AAAACAAEAAAAmAB4AAAACAAEAAAAmAB8AAAACAAEAAAAmACAAAAACAAEAAAAmACEAAAACAAEAAAAmACIAAAACAAEAAAAmACMAAAACAAEAAAAmACQAAAACAAEAAAAmACUAAAACAAEAAAAmACYAAAACAAEAAAAmACcAAAACAAEAAAAmACgAAAACAAEAAAAnAAAAAAACAAEAAAAnAAEAAAACAAEAAAAnAAIAAAACAAEAAAAnAAMAAAACAAEAAAAnAAQAAAACAAEAAAAnAAUAAAACAAEAAAAnABkAAAAAAAIAAAAnABoAAAAAAAIAAAAnABsAAAAAAAIAAAAnABwAAAACAAIAAAAnAB0AAAACAAEAAAAnAB4AAAACAAEAAAAnAB8AAAACAAEAAAAnACAAAAACAAEAAAAnACEAAAACAAEAAAAnACIAAAACAAEAAAAnACMAAAACAAEAAAAnACQAAAACAAEAAAAnACUAAAACAAEAAAAnACYAAAACAAEAAAAnACcAAAACAAEAAAAnACgAAAACAAEAAAAoAAAAAAACAAEAAAAoAAEAAAACAAEAAAAoAAIAAAACAAEAAAAoAAMAAAACAAEAAAAoAAQAAAACAAEAAAAoAAUAAAACAAEAAAAoABkAAAAAAAIAAAAoABoAAAAAAAIAAAAoABsAAAAAAAIAAAAoABwAAAACAAIAAAAoAB0AAAACAAEAAAAoAB4AAAACAAEAAAAoAB8AAAACAAEAAAAoACAAAAACAAEAAAAoACEAAAACAAEAAAAoACIAAAACAAEAAAAoACMAAAACAAEAAAAoACQAAAACAAEAAAAoACUAAAACAAEAAAAoACYAAAACAAEAAAAoACcAAAACAAEAAAAoACgAAAACAAEAAAApAAAAAAACAAEAAAApAAEAAAACAAEAAAApAAIAAAACAAEAAAApAAMAAAACAAEAAAApAAQAAAACAAEAAAApAAUAAAACAAEAAAApABkAAAAAAAIAAAApABoAAAAAAAIAAAApABsAAAAAAAIAAAApABwAAAACAAIAAAApAB0AAAACAAEAAAApAB4AAAACAAEAAAApAB8AAAACAAEAAAApACAAAAACAAEAAAApACEAAAACAAEAAAApACIAAAACAAEAAAApACMAAAACAAEAAAApACQAAAACAAEAAAApACUAAAACAAEAAAApACYAAAACAAEAAAApACcAAAACAAEAAAApACgAAAACAAEAAAAqAAAAAAACAAEAAAAqAAEAAAACAAEAAAAqAAIAAAACAAEAAAAqAAMAAAACAAEAAAAqAAQAAAACAAEAAAAqAAUAAAACAAEAAAAqAAYAAAACAAEAAAAqAAcAAAACAAEAAAAqAAgAAAACAAEAAAAqAAkAAAACAAEAAAAqAAoAAAACAAEAAAAqAAsAAAACAAEAAAAqAAwAAAACAAMAAAAqAA0AAAACAAQAAAAqAA4AAAACAAUAAAAqAA8AAAAAAAIAAAAqABAAAAAAAAIAAAAqABEAAAAAAAIAAAAqABIAAAAAAAIAAAAqABMAAAAAAAIAAAAqABQAAAAAAAIAAAAqABUAAAAAAAIAAAAqABYAAAAAAAIAAAAqABcAAAAAAAIAAAAqABgAAAAAAAIAAAAqABkAAAAAAAIAAAAqABoAAAAAAAIAAAAqABsAAAAAAAIAAAAqABwAAAACAAIAAAAqAB0AAAACAAEAAAAqAB4AAAACAAEAAAAqAB8AAAACAAEAAAAqACAAAAACAAEAAAAqACEAAAACAAEAAAAqACIAAAACAAEAAAAqACMAAAACAAEAAAAqACQAAAACAAEAAAAqACUAAAACAAEAAAAqACYAAAACAAEAAAAqACcAAAACAAEAAAAqACgAAAACAAEAAAArAAAAAAACAAEAAAArAAEAAAACAAEAAAArAAIAAAACAAEAAAArAAMAAAACAAEAAAArAAQAAAACAAEAAAArAAUAAAACAAEAAAArAAYAAAACAAEAAAArAAcAAAACAAEAAAArAAgAAAACAAEAAAArAAkAAAACAAEAAAArAAoAAAACAAEAAAArAAsAAAACAAEAAAArAAwAAAADAAMAAAArAA0AAAADAAQAAAArAA4AAAADAAUAAAArAA8AAAAAAAIAAAArABAAAAAAAAIAAAArABEAAAAAAAIAAAArABIAAAAAAAIAAAArABMAAAAAAAIAAAArABQAAAAAAAIAAAArABYAAAAAAAIAAAArABcAAAAAAAIAAAArABgAAAAAAAIAAAArABkAAAAAAAIAAAArABoAAAAAAAIAAAArABsAAAAAAAIAAAArABwAAAACAAIAAAArAB0AAAACAAEAAAArAB4AAAACAAEAAAArAB8AAAACAAEAAAArACAAAAACAAEAAAArACEAAAACAAEAAAArACIAAAACAAEAAAArACMAAAACAAEAAAArACQAAAACAAEAAAArACUAAAACAAEAAAArACYAAAACAAEAAAArACcAAAACAAEAAAArACgAAAACAAEAAAAsAAAAAAACAAEAAAAsAAEAAAACAAEAAAAsAAIAAAACAAEAAAAsAAMAAAACAAEAAAAsAAQAAAACAAEAAAAsAAUAAAACAAEAAAAsAAYAAAACAAEAAAAsAAcAAAACAAEAAAAsAAgAAAACAAEAAAAsAAkAAAACAAEAAAAsAAoAAAACAAEAAAAsAAsAAAACAAEAAAAsAAwAAAACAAEAAAAsAA0AAAACAAEAAAAsAA4AAAADAAAAAAAsABAAAAADAAEAAAAsABEAAAADAAEAAAAsABIAAAADAAEAAAAsABMAAAADAAEAAAAsABQAAAADAAEAAAAsABUAAAADAAEAAAAsABYAAAADAAEAAAAsABcAAAADAAEAAAAsABgAAAADAAEAAAAsABkAAAADAAEAAAAsABoAAAADAAEAAAAsABsAAAADAAEAAAAsABwAAAADAAIAAAAsAB0AAAACAAEAAAAsAB4AAAACAAEAAAAsAB8AAAACAAEAAAAsACAAAAACAAEAAAAsACEAAAACAAEAAAAsACIAAAACAAEAAAAsACMAAAACAAEAAAAsACQAAAACAAEAAAAsACUAAAACAAEAAAAsACYAAAACAAEAAAAsACcAAAACAAEAAAAsACgAAAACAAEAAAAtAAAAAAACAAEAAAAtAAEAAAACAAEAAAAtAAIAAAACAAEAAAAtAAMAAAACAAEAAAAtAAQAAAACAAEAAAAtAAUAAAACAAEAAAAtAAYAAAACAAEAAAAtAAcAAAACAAEAAAAtAAgAAAACAAEAAAAtAAkAAAACAAEAAAAtAAoAAAACAAEAAAAtAAsAAAACAAEAAAAtAAwAAAACAAEAAAAtAA0AAAACAAEAAAAtAA4AAAACAAEAAAAtAA8AAAACAAEAAAAtABAAAAACAAEAAAAtABEAAAACAAEAAAAtABIAAAACAAEAAAAtABMAAAACAAEAAAAtABQAAAACAAEAAAAtABUAAAACAAEAAAAtABYAAAACAAEAAAAtABcAAAACAAEAAAAtABgAAAACAAEAAAAtABkAAAACAAEAAAAtABoAAAACAAEAAAAtABsAAAACAAEAAAAtABwAAAACAAEAAAAtAB0AAAACAAEAAAAtAB4AAAACAAEAAAAtAB8AAAACAAEAAAAtACAAAAACAAEAAAAtACEAAAACAAEAAAAtACIAAAACAAEAAAAtACMAAAACAAEAAAAtACQAAAACAAEAAAAtACUAAAACAAEAAAAtACYAAAACAAEAAAAtACcAAAACAAEAAAAtACgAAAACAAEAAAAuAAAAAAACAAEAAAAuAAEAAAACAAEAAAAuAAIAAAACAAEAAAAuAAMAAAACAAEAAAAuAAQAAAACAAEAAAAuAAUAAAACAAEAAAAuAAYAAAACAAEAAAAuAAcAAAACAAEAAAAuAAgAAAACAAEAAAAuAAkAAAACAAEAAAAuAAoAAAACAAEAAAAuAAsAAAACAAEAAAAuAAwAAAACAAEAAAAuAA0AAAACAAEAAAAuAA4AAAACAAEAAAAuAA8AAAACAAEAAAAuABAAAAACAAEAAAAuABEAAAACAAEAAAAuABIAAAACAAEAAAAuABMAAAACAAEAAAAuABQAAAACAAEAAAAuABUAAAACAAEAAAAuABYAAAACAAEAAAAuABcAAAACAAEAAAAuABgAAAACAAEAAAAuABkAAAACAAEAAAAuABoAAAACAAEAAAAuABsAAAACAAEAAAAuABwAAAACAAEAAAAuAB0AAAACAAEAAAAuAB4AAAACAAEAAAAuAB8AAAACAAEAAAAuACAAAAACAAEAAAAuACEAAAACAAEAAAAuACIAAAACAAEAAAAuACMAAAACAAEAAAAuACQAAAACAAEAAAAuACUAAAACAAEAAAAuACYAAAACAAEAAAAuACcAAAACAAEAAAAuACgAAAACAAEAAAAvAAAAAAACAAEAAAAvAAEAAAACAAEAAAAvAAIAAAACAAEAAAAvAAMAAAACAAEAAAAvAAQAAAACAAEAAAAvAAUAAAACAAEAAAAvAAYAAAACAAEAAAAvAAcAAAACAAEAAAAvAAgAAAACAAEAAAAvAAkAAAACAAEAAAAvAAoAAAACAAEAAAAvAAsAAAACAAEAAAAvAAwAAAACAAEAAAAvAA0AAAACAAEAAAAvAA4AAAACAAEAAAAvAA8AAAACAAEAAAAvABAAAAACAAEAAAAvABEAAAACAAEAAAAvABIAAAACAAEAAAAvABMAAAACAAEAAAAvABQAAAACAAEAAAAvABUAAAACAAEAAAAvABYAAAACAAEAAAAvABcAAAACAAEAAAAvABgAAAACAAEAAAAvABkAAAACAAEAAAAvABoAAAACAAEAAAAvABsAAAACAAEAAAAvABwAAAACAAEAAAAvAB0AAAACAAEAAAAvAB4AAAACAAEAAAAvAB8AAAACAAEAAAAvACAAAAACAAEAAAAvACEAAAACAAEAAAAvACIAAAACAAEAAAAvACMAAAACAAEAAAAvACQAAAACAAEAAAAvACUAAAACAAEAAAAvACYAAAACAAEAAAAvACcAAAACAAEAAAAvACgAAAACAAEAAAAwAAAAAAACAAEAAAAwAAEAAAACAAEAAAAwAAIAAAACAAEAAAAwAAMAAAACAAEAAAAwAAQAAAACAAEAAAAwAAUAAAACAAEAAAAwAAYAAAACAAEAAAAwAAcAAAACAAEAAAAwAAgAAAACAAEAAAAwAAkAAAACAAEAAAAwAAoAAAACAAEAAAAwAAsAAAACAAEAAAAwAAwAAAACAAEAAAAwAA0AAAACAAEAAAAwAA4AAAACAAEAAAAwAA8AAAACAAEAAAAwABAAAAACAAEAAAAwABEAAAACAAEAAAAwABIAAAACAAEAAAAwABMAAAACAAEAAAAwABQAAAACAAEAAAAwABUAAAACAAEAAAAwABYAAAACAAEAAAAwABcAAAACAAEAAAAwABgAAAACAAEAAAAwABkAAAACAAEAAAAwABoAAAACAAEAAAAwABsAAAACAAEAAAAwABwAAAACAAEAAAAwAB0AAAACAAEAAAAwAB4AAAACAAEAAAAwAB8AAAACAAEAAAAwACAAAAACAAEAAAAwACEAAAACAAEAAAAwACIAAAACAAEAAAAwACMAAAACAAEAAAAwACQAAAACAAEAAAAwACUAAAACAAEAAAAwACYAAAACAAEAAAAwACcAAAACAAEAAAAwACgAAAACAAEAAAAxAAAAAAACAAEAAAAxAAEAAAACAAEAAAAxAAIAAAACAAEAAAAxAAMAAAACAAEAAAAxAAQAAAACAAEAAAAxAAUAAAACAAEAAAAxAAYAAAACAAEAAAAxAAcAAAACAAEAAAAxAAgAAAACAAEAAAAxAAkAAAACAAEAAAAxAAoAAAACAAEAAAAxAAsAAAACAAEAAAAxAAwAAAACAAEAAAAxAA0AAAACAAEAAAAxAA4AAAACAAEAAAAxAA8AAAACAAEAAAAxABAAAAACAAEAAAAxABEAAAACAAEAAAAxABIAAAACAAEAAAAxABMAAAACAAEAAAAxABQAAAACAAEAAAAxABUAAAACAAEAAAAxABYAAAACAAEAAAAxABcAAAACAAEAAAAxABgAAAACAAEAAAAxABkAAAACAAEAAAAxABoAAAACAAEAAAAxABsAAAACAAEAAAAxABwAAAACAAEAAAAxAB0AAAACAAEAAAAxAB4AAAACAAEAAAAxAB8AAAACAAEAAAAxACAAAAACAAEAAAAxACEAAAACAAEAAAAxACIAAAACAAEAAAAxACMAAAACAAEAAAAxACQAAAACAAEAAAAxACUAAAACAAEAAAAxACYAAAACAAEAAAAxACcAAAACAAEAAAAxACgAAAACAAEAAAAyAAAAAAACAAEAAAAyAAEAAAACAAEAAAAyAAIAAAACAAEAAAAyAAMAAAACAAEAAAAyAAQAAAACAAEAAAAyAAUAAAACAAEAAAAyAAYAAAACAAEAAAAyAAcAAAACAAEAAAAyAAgAAAACAAEAAAAyAAkAAAACAAEAAAAyAAoAAAACAAEAAAAyAAsAAAACAAEAAAAyAAwAAAACAAEAAAAyAA0AAAACAAEAAAAyAA4AAAACAAEAAAAyAA8AAAACAAEAAAAyABAAAAACAAEAAAAyABEAAAACAAEAAAAyABIAAAACAAEAAAAyABMAAAACAAEAAAAyABQAAAACAAEAAAAyABUAAAACAAEAAAAyABYAAAACAAEAAAAyABcAAAACAAEAAAAyABgAAAACAAEAAAAyABkAAAACAAEAAAAyABoAAAACAAEAAAAyABsAAAACAAEAAAAyABwAAAACAAEAAAAyAB0AAAACAAEAAAAyAB4AAAACAAEAAAAyAB8AAAACAAEAAAAyACAAAAACAAEAAAAyACEAAAACAAEAAAAyACIAAAACAAEAAAAyACMAAAACAAEAAAAyACQAAAACAAEAAAAyACUAAAACAAEAAAAyACYAAAACAAEAAAAyACcAAAACAAEAAAAyACgAAAACAAEAAAAzAAAAAAACAAEAAAAzAAEAAAACAAEAAAAzAAIAAAACAAEAAAAzAAMAAAACAAEAAAAzAAQAAAACAAEAAAAzAAUAAAACAAEAAAAzAAYAAAACAAEAAAAzAAcAAAACAAEAAAAzAAgAAAACAAEAAAAzAAkAAAACAAEAAAAzAAoAAAACAAEAAAAzAAsAAAACAAEAAAAzAAwAAAACAAEAAAAzAA0AAAACAAEAAAAzAA4AAAACAAEAAAAzAA8AAAACAAEAAAAzABAAAAACAAEAAAAzABEAAAACAAEAAAAzABIAAAACAAEAAAAzABMAAAACAAEAAAAzABQAAAACAAEAAAAzABUAAAACAAEAAAAzABYAAAACAAEAAAAzABcAAAACAAEAAAAzABgAAAACAAEAAAAzABkAAAACAAEAAAAzABoAAAACAAEAAAAzABsAAAACAAEAAAAzABwAAAACAAEAAAAzAB0AAAACAAEAAAAzAB4AAAACAAEAAAAzAB8AAAACAAEAAAAzACAAAAACAAEAAAAzACEAAAACAAEAAAAzACIAAAACAAEAAAAzACMAAAACAAEAAAAzACQAAAACAAEAAAAzACUAAAACAAEAAAAzACYAAAACAAEAAAAzACcAAAACAAEAAAAzACgAAAACAAEAAAA0AAAAAAACAAEAAAA0AAEAAAACAAEAAAA0AAIAAAACAAEAAAA0AAMAAAACAAEAAAA0AAQAAAACAAEAAAA0AAUAAAACAAEAAAA0AAYAAAACAAEAAAA0AAcAAAACAAEAAAA0AAgAAAACAAEAAAA0AAkAAAACAAEAAAA0AAoAAAACAAEAAAA0AAsAAAACAAEAAAA0AAwAAAACAAEAAAA0AA0AAAACAAEAAAA0AA4AAAACAAEAAAA0AA8AAAACAAEAAAA0ABAAAAACAAEAAAA0ABEAAAACAAEAAAA0ABIAAAACAAEAAAA0ABMAAAACAAEAAAA0ABQAAAACAAEAAAA0ABUAAAACAAEAAAA0ABYAAAACAAEAAAA0ABcAAAACAAEAAAA0ABgAAAACAAEAAAA0ABkAAAACAAEAAAA0ABoAAAACAAEAAAA0ABsAAAACAAEAAAA0ABwAAAACAAEAAAA0AB0AAAACAAEAAAA0AB4AAAACAAEAAAA0AB8AAAACAAEAAAA0ACAAAAACAAEAAAA0ACEAAAACAAEAAAA0ACIAAAACAAEAAAA0ACMAAAACAAEAAAA0ACQAAAACAAEAAAA0ACUAAAACAAEAAAA0ACYAAAACAAEAAAA0ACcAAAACAAEAAAA0ACgAAAACAAEAAAA1AAAAAAACAAEAAAA1AAEAAAACAAEAAAA1AAIAAAACAAEAAAA1AAMAAAACAAEAAAA1AAQAAAACAAEAAAA1AAUAAAACAAEAAAA1AAYAAAACAAEAAAA1AAcAAAACAAEAAAA1AAgAAAACAAEAAAA1AAkAAAACAAEAAAA1AAoAAAACAAEAAAA1AAsAAAACAAEAAAA1AAwAAAACAAEAAAA1AA0AAAACAAEAAAA1AA4AAAACAAEAAAA1AA8AAAACAAEAAAA1ABAAAAACAAEAAAA1ABEAAAACAAEAAAA1ABIAAAACAAEAAAA1ABMAAAACAAEAAAA1ABQAAAACAAEAAAA1ABUAAAACAAEAAAA1ABYAAAACAAEAAAA1ABcAAAACAAEAAAA1ABgAAAACAAEAAAA1ABkAAAACAAEAAAA1ABoAAAACAAEAAAA1ABsAAAACAAEAAAA1ABwAAAACAAEAAAA1AB0AAAACAAEAAAA1AB4AAAACAAEAAAA1AB8AAAACAAEAAAA1ACAAAAACAAEAAAA1ACEAAAACAAEAAAA1ACIAAAACAAEAAAA1ACMAAAACAAEAAAA1ACQAAAACAAEAAAA1ACUAAAACAAEAAAA1ACYAAAACAAEAAAA1ACcAAAACAAEAAAA1ACgAAAACAAEAAAA2AAAAAAACAAEAAAA2AAEAAAACAAEAAAA2AAIAAAACAAEAAAA2AAMAAAACAAEAAAA2AAQAAAACAAEAAAA2AAUAAAACAAEAAAA2AAYAAAACAAEAAAA2AAcAAAACAAEAAAA2AAgAAAACAAEAAAA2AAkAAAACAAEAAAA2AAoAAAACAAEAAAA2AAsAAAACAAEAAAA2AAwAAAACAAEAAAA2AA0AAAACAAEAAAA2AA4AAAACAAEAAAA2AA8AAAACAAEAAAA2ABAAAAACAAEAAAA2ABEAAAACAAEAAAA2ABIAAAACAAEAAAA2ABMAAAACAAEAAAA2ABQAAAACAAEAAAA2ABUAAAACAAEAAAA2ABYAAAACAAEAAAA2ABcAAAACAAEAAAA2ABgAAAACAAEAAAA2ABkAAAACAAEAAAA2ABoAAAACAAEAAAA2ABsAAAACAAEAAAA2ABwAAAACAAEAAAA2AB0AAAACAAEAAAA2AB4AAAACAAEAAAA2AB8AAAACAAEAAAA2ACAAAAACAAEAAAA2ACEAAAACAAEAAAA2ACIAAAACAAEAAAA2ACMAAAACAAEAAAA2ACQAAAACAAEAAAA2ACUAAAACAAEAAAA2ACYAAAACAAEAAAA2ACcAAAACAAEAAAA2ACgAAAACAAEAAAA3AAAAAAACAAEAAAA3AAEAAAACAAEAAAA3AAIAAAACAAEAAAA3AAMAAAACAAEAAAA3AAQAAAACAAEAAAA3AAUAAAACAAEAAAA3AAYAAAACAAEAAAA3AAcAAAACAAEAAAA3AAgAAAACAAEAAAA3AAkAAAACAAEAAAA3AAoAAAACAAEAAAA3AAsAAAACAAEAAAA3AAwAAAACAAEAAAA3AA0AAAACAAEAAAA3AA4AAAACAAEAAAA3AA8AAAACAAEAAAA3ABAAAAACAAEAAAA3ABEAAAACAAEAAAA3ABIAAAACAAEAAAA3ABMAAAACAAEAAAA3ABQAAAACAAEAAAA3ABUAAAACAAEAAAA3ABYAAAACAAEAAAA3ABcAAAACAAEAAAA3ABgAAAACAAEAAAA3ABkAAAACAAEAAAA3ABoAAAACAAEAAAA3ABsAAAACAAEAAAA3ABwAAAACAAEAAAA3AB0AAAACAAEAAAA3AB4AAAACAAEAAAA3AB8AAAACAAEAAAA3ACAAAAACAAEAAAA3ACEAAAACAAEAAAA3ACIAAAACAAEAAAA3ACMAAAACAAEAAAA3ACQAAAACAAEAAAA3ACUAAAACAAEAAAA3ACYAAAACAAEAAAA3ACcAAAACAAEAAAA3ACgAAAACAAEAAAA4AAAAAAACAAEAAAA4AAEAAAACAAEAAAA4AAIAAAACAAEAAAA4AAMAAAACAAEAAAA4AAQAAAACAAEAAAA4AAUAAAACAAEAAAA4AAYAAAACAAEAAAA4AAcAAAACAAEAAAA4AAgAAAACAAEAAAA4AAkAAAACAAEAAAA4AAoAAAACAAEAAAA4AAsAAAACAAEAAAA4AAwAAAACAAEAAAA4AA0AAAACAAEAAAA4AA4AAAACAAEAAAA4AA8AAAACAAEAAAA4ABAAAAACAAEAAAA4ABEAAAACAAEAAAA4ABIAAAACAAEAAAA4ABMAAAACAAEAAAA4ABQAAAACAAEAAAA4ABUAAAACAAEAAAA4ABYAAAACAAEAAAA4ABcAAAACAAEAAAA4ABgAAAACAAEAAAA4ABkAAAACAAEAAAA4ABoAAAACAAEAAAA4ABsAAAACAAEAAAA4ABwAAAACAAEAAAA4AB0AAAACAAEAAAA4AB4AAAACAAEAAAA4AB8AAAACAAEAAAA4ACAAAAACAAEAAAA4ACEAAAACAAEAAAA4ACIAAAACAAEAAAA4ACMAAAACAAEAAAA4ACQAAAACAAEAAAA4ACUAAAACAAEAAAA4ACYAAAACAAEAAAA4ACcAAAACAAEAAAA4ACgAAAACAAEAAAA5AAAAAAACAAEAAAA5AAEAAAACAAEAAAA5AAIAAAACAAEAAAA5AAMAAAACAAEAAAA5AAQAAAACAAEAAAA5AAUAAAACAAEAAAA5AAYAAAACAAEAAAA5AAcAAAACAAEAAAA5AAgAAAACAAEAAAA5AAkAAAACAAEAAAA5AAoAAAACAAEAAAA5AAsAAAACAAEAAAA5AAwAAAACAAEAAAA5AA0AAAACAAEAAAA5AA4AAAACAAEAAAA5AA8AAAACAAEAAAA5ABAAAAACAAEAAAA5ABEAAAACAAEAAAA5ABIAAAACAAEAAAA5ABMAAAACAAEAAAA5ABQAAAACAAEAAAA5ABUAAAACAAEAAAA5ABYAAAACAAEAAAA5ABcAAAACAAEAAAA5ABgAAAACAAEAAAA5ABkAAAACAAEAAAA5ABoAAAACAAEAAAA5ABsAAAACAAEAAAA5ABwAAAACAAEAAAA5AB0AAAACAAEAAAA5AB4AAAACAAEAAAA5AB8AAAACAAEAAAA5ACAAAAACAAEAAAA5ACEAAAACAAEAAAA5ACIAAAACAAEAAAA5ACMAAAACAAEAAAA5ACQAAAACAAEAAAA5ACUAAAACAAEAAAA5ACYAAAACAAEAAAA5ACcAAAACAAEAAAA5ACgAAAACAAEAAAA6AAAAAAACAAEAAAA6AAEAAAACAAEAAAA6AAIAAAACAAEAAAA6AAMAAAACAAEAAAA6AAQAAAACAAEAAAA6AAUAAAACAAEAAAA6AAYAAAACAAEAAAA6AAcAAAACAAEAAAA6AAgAAAACAAEAAAA6AAkAAAACAAEAAAA6AAoAAAACAAEAAAA6AAsAAAACAAEAAAA6AAwAAAACAAEAAAA6AA0AAAACAAEAAAA6AA4AAAACAAEAAAA6AA8AAAACAAEAAAA6ABAAAAACAAEAAAA6ABEAAAACAAEAAAA6ABIAAAACAAEAAAA6ABMAAAACAAEAAAA6ABQAAAACAAEAAAA6ABUAAAACAAEAAAA6ABYAAAACAAEAAAA6ABcAAAACAAEAAAA6ABgAAAACAAEAAAA6ABkAAAACAAEAAAA6ABoAAAACAAEAAAA6ABsAAAACAAEAAAA6ABwAAAACAAEAAAA6AB0AAAACAAEAAAA6AB4AAAACAAEAAAA6AB8AAAACAAEAAAA6ACAAAAACAAEAAAA6ACEAAAACAAEAAAA6ACIAAAACAAEAAAA6ACMAAAACAAEAAAA6ACQAAAACAAEAAAA6ACUAAAACAAEAAAA6ACYAAAACAAEAAAA6ACcAAAACAAEAAAA6ACgAAAACAAEAAAA7AAAAAAACAAEAAAA7AAEAAAACAAEAAAA7AAIAAAACAAEAAAA7AAMAAAACAAEAAAA7AAQAAAACAAEAAAA7AAUAAAACAAEAAAA7AAYAAAACAAEAAAA7AAcAAAACAAEAAAA7AAgAAAACAAEAAAA7AAkAAAACAAEAAAA7AAoAAAACAAEAAAA7AAsAAAACAAEAAAA7AAwAAAACAAEAAAA7AA0AAAACAAEAAAA7AA4AAAACAAEAAAA7AA8AAAACAAEAAAA7ABAAAAACAAEAAAA7ABEAAAACAAEAAAA7ABIAAAACAAEAAAA7ABMAAAACAAEAAAA7ABQAAAACAAEAAAA7ABUAAAACAAEAAAA7ABYAAAACAAEAAAA7ABcAAAACAAEAAAA7ABgAAAACAAEAAAA7ABkAAAACAAEAAAA7ABoAAAACAAEAAAA7ABsAAAACAAEAAAA7ABwAAAACAAEAAAA7AB0AAAACAAEAAAA7AB4AAAACAAEAAAA7AB8AAAACAAEAAAA7ACAAAAACAAEAAAA7ACEAAAACAAEAAAA7ACIAAAACAAEAAAA7ACMAAAACAAEAAAA7ACQAAAACAAEAAAA7ACUAAAACAAEAAAA7ACYAAAACAAEAAAA7ACcAAAACAAEAAAA7ACgAAAACAAEAAAA8AAAAAAACAAEAAAA8AAEAAAACAAEAAAA8AAIAAAACAAEAAAA8AAMAAAACAAEAAAA8AAQAAAACAAEAAAA8AAUAAAACAAEAAAA8AAYAAAACAAEAAAA8AAcAAAACAAEAAAA8AAgAAAACAAEAAAA8AAkAAAACAAEAAAA8AAoAAAACAAEAAAA8AAsAAAACAAEAAAA8AAwAAAACAAEAAAA8AA0AAAACAAEAAAA8AA4AAAACAAEAAAA8AA8AAAACAAEAAAA8ABAAAAACAAEAAAA8ABEAAAACAAEAAAA8ABIAAAACAAEAAAA8ABMAAAACAAEAAAA8ABQAAAACAAEAAAA8ABUAAAACAAEAAAA8ABYAAAACAAEAAAA8ABcAAAACAAEAAAA8ABgAAAACAAEAAAA8ABkAAAACAAEAAAA8ABoAAAACAAEAAAA8ABsAAAACAAEAAAA8ABwAAAACAAEAAAA8AB0AAAACAAEAAAA8AB4AAAACAAEAAAA8AB8AAAACAAEAAAA8ACAAAAACAAEAAAA8ACEAAAACAAEAAAA8ACIAAAACAAEAAAA8ACMAAAACAAEAAAA8ACQAAAACAAEAAAA8ACUAAAACAAEAAAA8ACYAAAACAAEAAAA8ACcAAAACAAEAAAA8ACgAAAACAAEAAAA9AAAAAAACAAEAAAA9AAEAAAACAAEAAAA9AAIAAAACAAEAAAA9AAMAAAACAAEAAAA9AAQAAAACAAEAAAA9AAUAAAACAAEAAAA9AAYAAAACAAEAAAA9AAcAAAACAAEAAAA9AAgAAAACAAEAAAA9AAkAAAACAAEAAAA9AAoAAAACAAEAAAA9AAsAAAACAAEAAAA9AAwAAAACAAEAAAA9AA0AAAACAAEAAAA9AA4AAAACAAEAAAA9AA8AAAACAAEAAAA9ABAAAAACAAEAAAA9ABEAAAACAAEAAAA9ABIAAAACAAEAAAA9ABMAAAACAAEAAAA9ABQAAAACAAEAAAA9ABUAAAACAAEAAAA9ABYAAAACAAEAAAA9ABcAAAACAAEAAAA9ABgAAAACAAEAAAA9ABkAAAACAAEAAAA9ABoAAAACAAEAAAA9ABsAAAACAAEAAAA9ABwAAAACAAEAAAA9AB0AAAACAAEAAAA9AB4AAAACAAEAAAA9AB8AAAACAAEAAAA9ACAAAAACAAEAAAA9ACEAAAACAAEAAAA9ACIAAAACAAEAAAA9ACMAAAACAAEAAAA9ACQAAAACAAEAAAA9ACUAAAACAAEAAAA9ACYAAAACAAEAAAA9ACcAAAACAAEAAAA9ACgAAAACAAEAAAA+AAAAAAACAAEAAAA+AAEAAAACAAEAAAA+AAIAAAACAAEAAAA+AAMAAAACAAEAAAA+AAQAAAACAAEAAAA+AAUAAAACAAEAAAA+AAYAAAACAAEAAAA+AAcAAAACAAEAAAA+AAgAAAACAAEAAAA+AAkAAAACAAEAAAA+AAoAAAACAAEAAAA+AAsAAAACAAEAAAA+AAwAAAACAAEAAAA+AA0AAAACAAEAAAA+AA4AAAACAAEAAAA+AA8AAAACAAEAAAA+ABAAAAACAAEAAAA+ABEAAAACAAEAAAA+ABIAAAACAAEAAAA+ABMAAAACAAEAAAA+ABQAAAACAAEAAAA+ABUAAAACAAEAAAA+ABYAAAACAAEAAAA+ABcAAAACAAEAAAA+ABgAAAACAAEAAAA+ABkAAAACAAEAAAA+ABoAAAACAAEAAAA+ABsAAAACAAEAAAA+ABwAAAACAAEAAAA+AB0AAAACAAEAAAA+AB4AAAACAAEAAAA+AB8AAAACAAEAAAA+ACAAAAACAAEAAAA+ACEAAAACAAEAAAA+ACIAAAACAAEAAAA+ACMAAAACAAEAAAA+ACQAAAACAAEAAAA+ACUAAAACAAEAAAA+ACYAAAACAAEAAAA+ACcAAAACAAEAAAA+ACgAAAACAAEAAAA/AAAAAAACAAEAAAA/AAEAAAACAAEAAAA/AAIAAAACAAEAAAA/AAMAAAACAAEAAAA/AAQAAAACAAEAAAA/AAUAAAACAAEAAAA/AAYAAAACAAEAAAA/AAcAAAACAAEAAAA/AAgAAAACAAEAAAA/AAkAAAACAAEAAAA/AAoAAAACAAEAAAA/AAsAAAACAAEAAAA/AAwAAAACAAEAAAA/AA0AAAACAAEAAAA/AA4AAAACAAEAAAA/AA8AAAACAAEAAAA/ABAAAAACAAEAAAA/ABEAAAACAAEAAAA/ABIAAAACAAEAAAA/ABMAAAACAAEAAAA/ABQAAAACAAEAAAA/ABUAAAACAAEAAAA/ABYAAAACAAEAAAA/ABcAAAACAAEAAAA/ABgAAAACAAEAAAA/ABkAAAACAAEAAAA/ABoAAAACAAEAAAA/ABsAAAACAAEAAAA/ABwAAAACAAEAAAA/AB0AAAACAAEAAAA/AB4AAAACAAEAAAA/AB8AAAACAAEAAAA/ACAAAAACAAEAAAA/ACEAAAACAAEAAAA/ACIAAAACAAEAAAA/ACMAAAACAAEAAAA/ACQAAAACAAEAAAA/ACUAAAACAAEAAAA/ACYAAAACAAEAAAA/ACcAAAACAAEAAAA/ACgAAAACAAEAAABAAAAAAAACAAEAAABAAAEAAAACAAEAAABAAAIAAAACAAEAAABAAAMAAAACAAEAAABAAAQAAAACAAEAAABAAAUAAAACAAEAAABAAAYAAAACAAEAAABAAAcAAAACAAEAAABAAAgAAAACAAEAAABAAAkAAAACAAEAAABAAAoAAAACAAEAAABAAAsAAAACAAEAAABAAAwAAAACAAEAAABAAA0AAAACAAEAAABAAA4AAAACAAEAAABAAA8AAAACAAEAAABAABAAAAACAAEAAABAABEAAAACAAEAAABAABIAAAACAAEAAABAABMAAAACAAEAAABAABQAAAACAAEAAABAABUAAAACAAEAAABAABYAAAACAAEAAABAABcAAAACAAEAAABAABgAAAACAAEAAABAABkAAAACAAEAAABAABoAAAACAAEAAABAABsAAAACAAEAAABAABwAAAACAAEAAABAAB0AAAACAAEAAABAAB4AAAACAAEAAABAAB8AAAACAAEAAABAACAAAAACAAEAAABAACEAAAACAAEAAABAACIAAAACAAEAAABAACMAAAACAAEAAABAACQAAAACAAEAAABAACUAAAACAAEAAABAACYAAAACAAEAAABAACcAAAACAAEAAABAACgAAAACAAEAAABBAAAAAAACAAEAAABBAAEAAAACAAEAAABBAAIAAAACAAEAAABBAAMAAAACAAEAAABBAAQAAAACAAEAAABBAAUAAAACAAEAAABBAAYAAAACAAEAAABBAAcAAAACAAEAAABBAAgAAAACAAEAAABBAAkAAAACAAEAAABBAAoAAAACAAEAAABBAAsAAAACAAEAAABBAAwAAAACAAEAAABBAA0AAAACAAEAAABBAA4AAAACAAEAAABBAA8AAAACAAEAAABBABAAAAACAAEAAABBABEAAAACAAEAAABBABIAAAACAAEAAABBABMAAAACAAEAAABBABQAAAACAAEAAABBABUAAAACAAEAAABBABYAAAACAAEAAABBABcAAAACAAEAAABBABgAAAACAAEAAABBABkAAAACAAEAAABBABoAAAACAAEAAABBABsAAAACAAEAAABBABwAAAACAAEAAABBAB0AAAACAAEAAABBAB4AAAACAAEAAABBAB8AAAACAAEAAABBACAAAAACAAEAAABBACEAAAACAAEAAABBACIAAAACAAEAAABBACMAAAACAAEAAABBACQAAAACAAEAAABBACUAAAACAAEAAABBACYAAAACAAEAAABBACcAAAACAAEAAABBACgAAAACAAEAAABCAAAAAAACAAEAAABCAAEAAAACAAEAAABCAAIAAAACAAEAAABCAAMAAAACAAEAAABCAAQAAAACAAEAAABCAAUAAAACAAEAAABCAAYAAAACAAEAAABCAAcAAAACAAEAAABCAAgAAAACAAEAAABCAAkAAAACAAEAAABCAAoAAAACAAEAAABCAAsAAAACAAEAAABCAAwAAAACAAEAAABCAA0AAAACAAEAAABCAA4AAAACAAEAAABCAA8AAAACAAEAAABCABAAAAACAAEAAABCABEAAAACAAEAAABCABIAAAACAAEAAABCABMAAAACAAEAAABCABQAAAACAAEAAABCABUAAAACAAEAAABCABYAAAACAAEAAABCABcAAAACAAEAAABCABgAAAACAAEAAABCABkAAAACAAEAAABCABoAAAACAAEAAABCABsAAAACAAEAAABCABwAAAACAAEAAABCAB0AAAACAAEAAABCAB4AAAACAAEAAABCAB8AAAACAAEAAABCACAAAAACAAEAAABCACEAAAACAAEAAABCACIAAAACAAEAAABCACMAAAACAAEAAABCACQAAAACAAEAAABCACUAAAACAAEAAABCACYAAAACAAEAAABCACcAAAACAAEAAABCACgAAAACAAEAAABDAAAAAAACAAEAAABDAAEAAAACAAEAAABDAAIAAAACAAEAAABDAAMAAAACAAEAAABDAAQAAAACAAEAAABDAAUAAAACAAEAAABDAAYAAAACAAEAAABDAAcAAAACAAEAAABDAAgAAAACAAEAAABDAAkAAAACAAEAAABDAAoAAAACAAEAAABDAAsAAAACAAEAAABDAAwAAAACAAEAAABDAA0AAAACAAEAAABDAA4AAAACAAEAAABDAA8AAAACAAEAAABDABAAAAACAAEAAABDABEAAAACAAEAAABDABIAAAACAAEAAABDABMAAAACAAEAAABDABQAAAACAAEAAABDABUAAAACAAEAAABDABYAAAACAAEAAABDABcAAAACAAEAAABDABgAAAACAAEAAABDABkAAAACAAEAAABDABoAAAACAAEAAABDABsAAAACAAEAAABDABwAAAACAAEAAABDAB0AAAACAAEAAABDAB4AAAACAAEAAABDAB8AAAACAAEAAABDACAAAAACAAEAAABDACEAAAACAAEAAABDACIAAAACAAEAAABDACMAAAACAAEAAABDACQAAAACAAEAAABDACUAAAACAAEAAABDACYAAAACAAEAAABDACcAAAACAAEAAABDACgAAAACAAEAAABEAAAAAAACAAEAAABEAAEAAAACAAEAAABEAAIAAAACAAEAAABEAAMAAAACAAEAAABEAAQAAAACAAEAAABEAAUAAAACAAEAAABEAAYAAAACAAEAAABEAAcAAAACAAEAAABEAAgAAAACAAEAAABEAAkAAAACAAEAAABEAAoAAAACAAEAAABEAAsAAAACAAEAAABEAAwAAAACAAEAAABEAA0AAAACAAEAAABEAA4AAAACAAEAAABEAA8AAAACAAEAAABEABAAAAACAAEAAABEABEAAAACAAEAAABEABIAAAACAAEAAABEABMAAAACAAEAAABEABQAAAACAAEAAABEABUAAAACAAEAAABEABYAAAACAAEAAABEABcAAAACAAEAAABEABgAAAACAAEAAABEABkAAAACAAEAAABEABoAAAACAAEAAABEABsAAAACAAEAAABEABwAAAACAAEAAABEAB0AAAACAAEAAABEAB4AAAACAAEAAABEAB8AAAACAAEAAABEACAAAAACAAEAAABEACEAAAACAAEAAABEACIAAAACAAEAAABEACMAAAACAAEAAABEACQAAAACAAEAAABEACUAAAACAAEAAABEACYAAAACAAEAAABEACcAAAACAAEAAABEACgAAAACAAEAAABFAAAAAAACAAEAAABFAAEAAAACAAEAAABFAAIAAAACAAEAAABFAAMAAAACAAEAAABFAAQAAAACAAEAAABFAAUAAAACAAEAAABFAAYAAAACAAEAAABFAAcAAAACAAEAAABFAAgAAAACAAEAAABFAAkAAAACAAEAAABFAAoAAAACAAEAAABFAAsAAAACAAEAAABFAAwAAAACAAEAAABFAA0AAAACAAEAAABFAA4AAAACAAEAAABFAA8AAAACAAEAAABFABAAAAACAAEAAABFABEAAAACAAEAAABFABIAAAACAAEAAABFABMAAAACAAEAAABFABQAAAACAAEAAABFABUAAAACAAEAAABFABYAAAACAAEAAABFABcAAAACAAEAAABFABgAAAACAAEAAABFABkAAAACAAEAAABFABoAAAACAAEAAABFABsAAAACAAEAAABFABwAAAACAAEAAABFAB0AAAACAAEAAABFAB4AAAACAAEAAABFAB8AAAACAAEAAABFACAAAAACAAEAAABFACEAAAACAAEAAABFACIAAAACAAEAAABFACMAAAACAAEAAABFACQAAAACAAEAAABFACUAAAACAAEAAABFACYAAAACAAEAAABFACcAAAACAAEAAABFACgAAAACAAEAAABGAAAAAAACAAEAAABGAAEAAAACAAEAAABGAAIAAAACAAEAAABGAAMAAAACAAEAAABGAAQAAAACAAEAAABGAAUAAAACAAEAAABGAAYAAAACAAEAAABGAAcAAAACAAEAAABGAAgAAAACAAEAAABGAAkAAAACAAEAAABGAAoAAAACAAEAAABGAAsAAAACAAEAAABGAAwAAAACAAEAAABGAA0AAAACAAEAAABGAA4AAAACAAEAAABGAA8AAAACAAEAAABGABAAAAACAAEAAABGABEAAAACAAEAAABGABIAAAACAAEAAABGABMAAAACAAEAAABGABQAAAACAAEAAABGABUAAAACAAEAAABGABYAAAACAAEAAABGABcAAAACAAEAAABGABgAAAACAAEAAABGABkAAAACAAEAAABGABoAAAACAAEAAABGABsAAAACAAEAAABGABwAAAACAAEAAABGAB0AAAACAAEAAABGAB4AAAACAAEAAABGAB8AAAACAAEAAABGACAAAAACAAEAAABGACEAAAACAAEAAABGACIAAAACAAEAAABGACMAAAACAAEAAABGACQAAAACAAEAAABGACUAAAACAAEAAABGACYAAAACAAEAAABGACcAAAACAAEAAABGACgAAAACAAEAAABHAAAAAAACAAEAAABHAAEAAAACAAEAAABHAAIAAAACAAEAAABHAAMAAAACAAEAAABHAAQAAAACAAEAAABHAAUAAAACAAEAAABHAAYAAAACAAEAAABHAAcAAAACAAEAAABHAAgAAAACAAEAAABHAAkAAAACAAEAAABHAAoAAAACAAEAAABHAAsAAAACAAEAAABHAAwAAAACAAEAAABHAA0AAAACAAEAAABHAA4AAAACAAEAAABHAA8AAAACAAEAAABHABAAAAACAAEAAABHABEAAAACAAEAAABHABIAAAACAAEAAABHABMAAAACAAEAAABHABQAAAACAAEAAABHABUAAAACAAEAAABHABYAAAACAAEAAABHABcAAAACAAEAAABHABgAAAACAAEAAABHABkAAAACAAEAAABHABoAAAACAAEAAABHABsAAAACAAEAAABHABwAAAACAAEAAABHAB0AAAACAAEAAABHAB4AAAACAAEAAABHAB8AAAACAAEAAABHACAAAAACAAEAAABHACEAAAACAAEAAABHACIAAAACAAEAAABHACMAAAACAAEAAABHACQAAAACAAEAAABHACUAAAACAAEAAABHACYAAAACAAEAAABHACcAAAACAAEAAABHACgAAAACAAEAAAAsAA8AAAADAAEAAAArABUAAAAAAAIAAAAbAAsAAAACAAEAAAAbAAwAAAACAAEAAAAbAA0AAAACAAEAAAAbAA4AAAACAAEAAAAbAA8AAAACAAEAAAAbABAAAAACAAEAAAAbABEAAAACAAEAAAAbABIAAAACAAEAAAAbABMAAAACAAEAAAAbABQAAAACAAEAAAAbABUAAAACAAEAAAAbABYAAAACAAEAAAAbABcAAAACAAEAAAAbABgAAAACAAEAAAAcAAsAAAACAAEAAAAcAAwAAAACAAEAAAAcAA0AAAACAAEAAAAcAA4AAAABAAAAAAAcAA8AAAABAAEAAAAcABAAAAABAAEAAAAcABEAAAABAAEAAAAcABIAAAABAAEAAAAcABMAAAABAAEAAAAcABQAAAABAAEAAAAcABUAAAABAAEAAAAcABYAAAABAAEAAAAcABcAAAABAAEAAAAcABgAAAABAAEAAAAdAAsAAAACAAEAAAAdAAwAAAABAAMAAAAdAA0AAAABAAQAAAAdAA4AAAABAAUAAAAdAA8AAAAAAAIAAAAdABAAAAAAAAIAAAAdABEAAAAAAAIAAAAdABIAAAAAAAIAAAAdABMAAAAAAAIAAAAdABQAAAAAAAIAAAAdABUAAAAAAAIAAAAdABYAAAAAAAIAAAAdABcAAAAAAAIAAAAdABgAAAAAAAIAAAAeAAsAAAACAAEAAAAeAAwAAAACAAMAAAAeAA0AAAAMAAAAAAAeAA4AAAACAAUAAAAeAA8AAAAAAAIAAAAeABAAAAAAAAIAAAAeABEAAAAAAAIAAAAeABIAAAAAAAIAAAAeABMAAAAAAAIAAAAeABQAAAAAAAIAAAAeABUAAAAAAAIAAAAeABYAAAAAAAIAAAAeABcAAAAAAAIAAAAeABgAAAAAAAIAAAAfAAsAAAACAAEAAAAfAAwAAAADAAMAAAAfAA0AAAANAAAAAAAfAA4AAAADAAUAAAAfAA8AAAAAAAIAAAAfABAAAAAAAAIAAAAfABEAAAAAAAIAAAAfABIAAAAAAAIAAAAfABMAAAAAAAIAAAAfABQAAAAAAAIAAAAfABUAAAAAAAIAAAAfABYAAAAAAAIAAAAfABcAAAAAAAIAAAAfABgAAAAAAAIAAAAgAAsAAAACAAEAAAAgAAwAAAABAAMAAAAgAA0AAAACAAQAAAAgAA4AAAABAAUAAAAgAA8AAAAAAAIAAAAgABAAAAAAAAIAAAAgABEAAAAAAAIAAAAgABIAAAAAAAIAAAAgABMAAAAAAAIAAAAgABQAAAAAAAIAAAAgABUAAAAAAAIAAAAgABYAAAAAAAIAAAAgABcAAAAAAAIAAAAgABgAAAAAAAIAAAAhAAsAAAACAAEAAAAhAAwAAAACAAMAAAAhAA0AAAACAAQAAAAhAA4AAAACAAUAAAAhAA8AAAAAAAIAAAAhABAAAAAAAAIAAAAhABEAAAAAAAIAAAAhABIAAAAAAAIAAAAhABMAAAAAAAIAAAAhABQAAAAAAAIAAAAhABUAAAAAAAIAAAAhABYAAAAAAAIAAAAhABcAAAAAAAIAAAAhABgAAAAAAAIAAAAiAAsAAAACAAEAAAAiAAwAAAADAAMAAAAiAA0AAAAMAAoAAAAiAA4AAAAMAAsAAAAiAA8AAAAMAAwAAAAiABAAAAAAAAIAAAAiABEAAAAAAAIAAAAiABIAAAAAAAIAAAAiABMAAAAAAAIAAAAiABQAAAAAAAIAAAAiABUAAAAAAAIAAAAiABYAAAAAAAIAAAAiABcAAAAQAAQAAAAiABgAAAAAAAIAAAAjAAsAAAACAAEAAAAjAAwAAAACAAMAAAAjAA0AAAANAAoAAAAjAA4AAAANAAsAAAAjAA8AAAANAAwAAAAjABAAAAAAAAIAAAAjABEAAAAAAAIAAAAjABIAAAAAAAIAAAAjABMAAAAAAAIAAAAjABQAAAAAAAIAAAAjABUAAAAAAAIAAAAjABYAAAAAAAIAAAAjABcAAAAAAAIAAAAjABgAAAAAAAIAAAAkAAsAAAACAAEAAAAkAAwAAAACAAMAAAAkAA0AAAACAAQAAAAkAA4AAAACAAUAAAAkAA8AAAAAAAIAAAAkABAAAAAAAAIAAAAkABEAAAAAAAIAAAAkABIAAAAAAAIAAAAkABMAAAAAAAIAAAAkABQAAAAAAAIAAAAkABUAAAAPAAQAAAAkABYAAAAAAAIAAAAkABcAAAANAAEAAAAkABgAAAARAAQAAAAlAAsAAAACAAEAAAAlAAwAAAADAAMAAAAlAA0AAAADAAQAAAAlAA4AAAADAAUAAAAlAA8AAAAAAAIAAAAlABAAAAAAAAIAAAAlABEAAAAAAAIAAAAlABIAAAAAAAIAAAAlABMAAAAAAAIAAAAlABQAAAAAAAIAAAAlABUAAAAAAAIAAAAlABYAAAAAAAIAAAAlABcAAAAAAAIAAAAlABgAAAAAAAIAAAAmAAsAAAACAAEAAAAmAAwAAAABAAMAAAAmAA0AAAABAAQAAAAmAA4AAAABAAUAAAAmAA8AAAAAAAIAAAAmABAAAAAAAAIAAAAmABEAAAAAAAcAAAAmABIAAAAAAAgAAAAmABMAAAAAAAkAAAAmABQAAAAAAAIAAAAmABUAAAAAAAIAAAAmABYAAAAAAAIAAAAmABcAAAASAAQAAAAmABgAAAAAAAIAAAAnAAsAAAACAAEAAAAnAAwAAAACAAMAAAAnAA0AAAACAAQAAAAnAA4AAAACAAUAAAAnAA8AAAAAAAIAAAAnABAAAAAAAAIAAAAnABEAAAABAAcAAAAnABIAAAABAAgAAAAnABMAAAABAAkAAAAnABQAAAAAAAIAAAAnABUAAAAAAAIAAAAnABYAAAAAAAIAAAAnABcAAAAAAAIAAAAnABgAAAAAAAIAAAAoAAsAAAACAAEAAAAoAAwAAAADAAMAAAAoAA0AAAADAAQAAAAoAA4AAAADAAUAAAAoAA8AAAAAAAIAAAAoABAAAAAAAAIAAAAoABEAAAACAAcAAAAoABIAAAACAAgAAAAoABMAAAACAAkAAAAoABQAAAAAAAIAAAAoABUAAAAAAAIAAAAoABYAAAAAAAIAAAAoABcAAAAAAAIAAAAoABgAAAAAAAIAAAApAAsAAAACAAEAAAApAAwAAAABAAMAAAApAA0AAAABAAQAAAApAA4AAAABAAUAAAApAA8AAAATAAEAAAApABAAAAATAAIAAAApABEAAAATAAMAAAApABIAAAAAAAIAAAApABMAAAAAAAIAAAApABQAAAAAAAIAAAApABUAAAAAAAIAAAApABYAAAAAAAIAAAApABcAAAAAAAIAAAApABgAAAAAAAIAAAAXAAYAAAACAAEAAAAXAAcAAAACAAEAAAAXAAgAAAACAAEAAAAXAAkAAAACAAEAAAAXAAoAAAACAAEAAAAXAAsAAAACAAEAAAAXAAwAAAACAAEAAAAXAA0AAAACAAEAAAAXAA4AAAACAAEAAAAXAA8AAAACAAEAAAAXABAAAAACAAEAAAAXABEAAAACAAEAAAAXABIAAAACAAEAAAAYAAYAAAACAAEAAAAYAAcAAAACAAEAAAAYAAgAAAACAAEAAAAYAAkAAAACAAEAAAAYAAoAAAACAAEAAAAYAAsAAAACAAEAAAAYAAwAAAACAAEAAAAYAA0AAAACAAEAAAAYAA4AAAACAAEAAAAYAA8AAAACAAEAAAAYABAAAAACAAEAAAAYABEAAAACAAEAAAAYABIAAAACAAEAAAAZAAYAAAACAAEAAAAZAAcAAAACAAEAAAAZAAgAAAACAAEAAAAZAAkAAAACAAEAAAAZAAoAAAACAAEAAAAZAAsAAAACAAEAAAAZAAwAAAACAAEAAAAZAA0AAAACAAEAAAAZAA4AAAACAAEAAAAZAA8AAAACAAEAAAAZABAAAAACAAEAAAAZABEAAAACAAEAAAAZABIAAAACAAEAAAAaAAYAAAACAAEAAAAaAAcAAAACAAEAAAAaAAgAAAACAAEAAAAaAAkAAAACAAEAAAAaAAoAAAACAAEAAAAaAAsAAAACAAEAAAAaAAwAAAACAAEAAAAaAA0AAAACAAEAAAAaAA4AAAACAAEAAAAaAA8AAAACAAEAAAAaABAAAAACAAEAAAAaABEAAAACAAEAAAAaABIAAAACAAEAAAAbAAYAAAACAAEAAAAbAAcAAAACAAEAAAAbAAgAAAACAAEAAAAbAAkAAAACAAEAAAAbAAoAAAACAAEAAAAXABMAAAACAAEAAAAXABQAAAACAAEAAAAXABUAAAACAAEAAAAXABYAAAACAAEAAAAXABcAAAACAAEAAAAXABgAAAACAAEAAAAYABMAAAACAAEAAAAYABQAAAACAAEAAAAYABUAAAACAAEAAAAYABYAAAACAAEAAAAYABcAAAACAAEAAAAYABgAAAACAAEAAAAZABMAAAACAAEAAAAZABQAAAACAAEAAAAZABUAAAACAAEAAAAZABYAAAACAAEAAAAZABcAAAACAAEAAAAZABgAAAACAAEAAAAaABMAAAACAAEAAAAaABQAAAACAAEAAAAaABUAAAACAAEAAAAaABYAAAACAAEAAAAaABcAAAACAAEAAAAaABgAAAACAAEAAAAcAAYAAAACAAEAAAAcAAcAAAACAAEAAAAcAAgAAAACAAEAAAAcAAkAAAACAAEAAAAcAAoAAAACAAEAAAAdAAYAAAACAAEAAAAdAAcAAAACAAEAAAAdAAgAAAACAAEAAAAdAAkAAAACAAEAAAAdAAoAAAACAAEAAAAeAAYAAAACAAEAAAAeAAcAAAACAAEAAAAeAAgAAAACAAEAAAAeAAkAAAACAAEAAAAeAAoAAAACAAEAAAAfAAYAAAACAAEAAAAfAAcAAAACAAEAAAAfAAgAAAACAAEAAAAfAAkAAAACAAEAAAAfAAoAAAACAAEAAAAgAAYAAAACAAEAAAAgAAcAAAACAAEAAAAgAAgAAAACAAEAAAAgAAkAAAACAAEAAAAgAAoAAAACAAEAAAAhAAYAAAACAAEAAAAhAAcAAAACAAEAAAAhAAgAAAACAAEAAAAhAAkAAAACAAEAAAAhAAoAAAACAAEAAAAiAAYAAAACAAEAAAAiAAcAAAACAAEAAAAiAAgAAAACAAEAAAAiAAkAAAACAAEAAAAiAAoAAAACAAEAAAAjAAYAAAACAAEAAAAjAAcAAAACAAEAAAAjAAgAAAACAAEAAAAjAAkAAAACAAEAAAAjAAoAAAACAAEAAAAkAAYAAAACAAEAAAAkAAcAAAACAAEAAAAkAAgAAAACAAEAAAAkAAkAAAACAAEAAAAkAAoAAAACAAEAAAAlAAYAAAACAAEAAAAlAAcAAAACAAEAAAAlAAgAAAACAAEAAAAlAAkAAAACAAEAAAAlAAoAAAACAAEAAAAmAAYAAAACAAEAAAAmAAcAAAACAAEAAAAmAAgAAAACAAEAAAAmAAkAAAACAAEAAAAmAAoAAAACAAEAAAAnAAYAAAACAAEAAAAnAAcAAAACAAEAAAAnAAgAAAACAAEAAAAnAAkAAAACAAEAAAAnAAoAAAACAAEAAAAoAAYAAAACAAEAAAAoAAcAAAACAAEAAAAoAAgAAAACAAEAAAAoAAkAAAACAAEAAAAoAAoAAAACAAEAAAApAAYAAAACAAEAAAApAAcAAAACAAEAAAApAAgAAAACAAEAAAApAAkAAAACAAEAAAApAAoAAAACAAEAAAD0////AAACAAEAAAD1////AAACAAEAAAD1/wAAAAACAAEAAAD2/wAAAAACAAEAAAD2/wEAAAACAAEAAAD3/wIAAAACAAEAAAD4/wMAAAACAAEAAAD4/wQAAAACAAEAAAD5/wUAAAACAAEAAAD6/wYAAAACAAEAAAD6/wcAAAACAAEAAAD7/wgAAAACAAEAAAD8/wkAAAACAAEAAAD9/woAAAACAAEAAAD+/wsAAAACAAEAAAD+/wwAAAACAAEAAAD//w0AAAACAAEAAADl//T/AAACAAEAAADl//X/AAACAAEAAADl//b/AAACAAEAAADl//f/AAACAAEAAADl//j/AAACAAEAAADl//n/AAACAAEAAADl//r/AAACAAEAAADl//v/AAACAAEAAADl//z/AAACAAEAAADl//3/AAACAAEAAADl//7/AAACAAEAAADl////AAACAAEAAADl/wAAAAACAAEAAADl/wEAAAACAAEAAADl/wIAAAACAAEAAADl/wMAAAACAAEAAADl/wQAAAACAAEAAADl/wUAAAACAAEAAADl/wYAAAACAAEAAADl/wcAAAACAAEAAADl/wgAAAACAAEAAADl/wkAAAACAAEAAADl/woAAAACAAEAAADl/wsAAAACAAEAAADl/wwAAAACAAEAAADl/w0AAAACAAEAAADl/w4AAAACAAEAAADl/w8AAAACAAEAAADl/xAAAAACAAEAAADl/xEAAAACAAEAAADl/xIAAAACAAEAAADl/xMAAAACAAEAAADl/xQAAAACAAEAAADl/xUAAAACAAEAAADl/xYAAAACAAEAAADl/xcAAAACAAEAAADl/xgAAAACAAEAAADl/xkAAAACAAEAAADl/xoAAAACAAEAAADl/xsAAAACAAEAAADl/xwAAAACAAEAAADl/x0AAAACAAEAAADl/x4AAAACAAEAAADl/x8AAAACAAEAAADl/yAAAAACAAEAAADl/yEAAAACAAEAAADl/yIAAAACAAEAAADl/yMAAAACAAEAAADl/yQAAAACAAEAAADl/yUAAAACAAEAAADl/yYAAAACAAEAAADl/ycAAAACAAEAAADl/ygAAAACAAEAAADl/ykAAAACAAEAAADl/yoAAAACAAEAAADl/ysAAAACAAEAAADl/ywAAAACAAEAAADl/y0AAAACAAEAAADl/y4AAAACAAEAAADl/y8AAAACAAEAAADl/zAAAAACAAEAAADl/zEAAAACAAEAAADl/zIAAAACAAEAAADl/zMAAAACAAEAAADl/zQAAAACAAEAAADl/zUAAAACAAEAAADl/zYAAAACAAEAAADl/zcAAAACAAEAAADl/zgAAAACAAEAAADm//T/AAACAAEAAADm//X/AAACAAEAAADm//b/AAACAAEAAADm//f/AAACAAEAAADm//j/AAACAAEAAADm//n/AAACAAEAAADm//r/AAACAAEAAADm//v/AAACAAEAAADm//z/AAACAAEAAADm//3/AAACAAEAAADm//7/AAACAAEAAADm////AAACAAEAAADm/wAAAAACAAEAAADm/wEAAAACAAEAAADm/wIAAAACAAEAAADm/wMAAAACAAEAAADm/wQAAAACAAEAAADm/wUAAAACAAEAAADm/wYAAAACAAEAAADm/wcAAAACAAEAAADm/wgAAAACAAEAAADm/wkAAAACAAEAAADm/woAAAACAAEAAADm/wsAAAACAAEAAADm/wwAAAACAAEAAADm/w0AAAACAAEAAADm/w4AAAACAAEAAADm/w8AAAACAAEAAADm/xAAAAACAAEAAADm/xEAAAACAAEAAADm/xIAAAACAAEAAADm/xMAAAACAAEAAADm/xQAAAACAAEAAADm/xUAAAACAAEAAADm/xYAAAACAAEAAADm/xcAAAACAAEAAADm/xgAAAACAAEAAADm/xkAAAACAAEAAADm/xoAAAACAAEAAADm/xsAAAACAAEAAADm/xwAAAACAAEAAADm/x0AAAACAAEAAADm/x4AAAACAAEAAADm/x8AAAACAAEAAADm/yAAAAACAAEAAADm/yEAAAACAAEAAADm/yIAAAACAAEAAADm/yMAAAACAAEAAADm/yQAAAACAAEAAADm/yUAAAACAAEAAADm/yYAAAACAAEAAADm/ycAAAACAAEAAADm/ygAAAACAAEAAADm/ykAAAACAAEAAADm/yoAAAACAAEAAADm/ysAAAACAAEAAADm/ywAAAACAAEAAADm/y0AAAACAAEAAADm/y4AAAACAAEAAADm/y8AAAACAAEAAADm/zAAAAACAAEAAADm/zEAAAACAAEAAADm/zIAAAACAAEAAADm/zMAAAACAAEAAADm/zQAAAACAAEAAADm/zUAAAACAAEAAADm/zYAAAACAAEAAADm/zcAAAACAAEAAADm/zgAAAACAAEAAADn//T/AAACAAEAAADn//X/AAACAAEAAADn//b/AAACAAEAAADn//f/AAACAAEAAADn//j/AAACAAEAAADn//n/AAACAAEAAADn//r/AAACAAEAAADn//v/AAACAAEAAADn//z/AAACAAEAAADn//3/AAACAAEAAADn//7/AAACAAEAAADn////AAACAAEAAADn/wAAAAACAAEAAADn/wEAAAACAAEAAADn/wIAAAACAAEAAADn/wMAAAACAAEAAADn/wQAAAACAAEAAADn/wUAAAACAAEAAADn/wYAAAACAAEAAADn/wcAAAACAAEAAADn/wgAAAACAAEAAADn/wkAAAACAAEAAADn/woAAAACAAEAAADn/wsAAAACAAEAAADn/wwAAAACAAEAAADn/w0AAAACAAEAAADn/w4AAAACAAEAAADn/w8AAAACAAEAAADn/xAAAAACAAEAAADn/xEAAAACAAEAAADn/xIAAAACAAEAAADn/xMAAAACAAEAAADn/xQAAAACAAEAAADn/xUAAAACAAEAAADn/xYAAAACAAEAAADn/xcAAAACAAEAAADn/xgAAAACAAEAAADn/xkAAAACAAEAAADn/xoAAAACAAEAAADn/xsAAAACAAEAAADn/xwAAAACAAEAAADn/x0AAAACAAEAAADn/x4AAAACAAEAAADn/x8AAAACAAEAAADn/yAAAAACAAEAAADn/yEAAAACAAEAAADn/yIAAAACAAEAAADn/yMAAAACAAEAAADn/yQAAAACAAEAAADn/yUAAAACAAEAAADn/yYAAAACAAEAAADn/ycAAAACAAEAAADn/ygAAAACAAEAAADn/ykAAAACAAEAAADn/yoAAAACAAEAAADn/ysAAAACAAEAAADn/ywAAAACAAEAAADn/y0AAAACAAEAAADn/y4AAAACAAEAAADn/y8AAAACAAEAAADn/zAAAAACAAEAAADn/zEAAAACAAEAAADn/zIAAAACAAEAAADn/zMAAAACAAEAAADn/zQAAAACAAEAAADn/zUAAAACAAEAAADn/zYAAAACAAEAAADn/zcAAAACAAEAAADn/zgAAAACAAEAAADo//T/AAACAAEAAADo//X/AAACAAEAAADo//b/AAACAAEAAADo//f/AAACAAEAAADo//j/AAACAAEAAADo//n/AAACAAEAAADo//r/AAACAAEAAADo//v/AAACAAEAAADo//z/AAACAAEAAADo//3/AAACAAEAAADo//7/AAACAAEAAADo////AAACAAEAAADo/wAAAAACAAEAAADo/wEAAAACAAEAAADo/wIAAAACAAEAAADo/wMAAAACAAEAAADo/wQAAAACAAEAAADo/wUAAAACAAEAAADo/wYAAAACAAEAAADo/wcAAAACAAEAAADo/wgAAAACAAEAAADo/wkAAAACAAEAAADo/woAAAACAAEAAADo/wsAAAACAAEAAADo/wwAAAACAAEAAADo/w0AAAACAAEAAADo/w4AAAACAAEAAADo/w8AAAACAAEAAADo/xAAAAACAAEAAADo/xEAAAACAAEAAADo/xIAAAACAAEAAADo/xMAAAACAAEAAADo/xQAAAACAAEAAADo/xUAAAACAAEAAADo/xYAAAACAAEAAADo/xcAAAACAAEAAADo/xgAAAACAAEAAADo/xkAAAACAAEAAADo/xoAAAACAAEAAADo/xsAAAACAAEAAADo/xwAAAACAAEAAADo/x0AAAACAAEAAADo/x4AAAACAAEAAADo/x8AAAACAAEAAADo/yAAAAACAAEAAADo/yEAAAACAAEAAADo/yIAAAACAAEAAADo/yMAAAACAAEAAADo/yQAAAACAAEAAADo/yUAAAACAAEAAADo/yYAAAACAAEAAADo/ycAAAACAAEAAADo/ygAAAACAAEAAADo/ykAAAACAAEAAADo/yoAAAACAAEAAADo/ysAAAACAAEAAADo/ywAAAACAAEAAADo/y0AAAACAAEAAADo/y4AAAACAAEAAADo/y8AAAACAAEAAADo/zAAAAACAAEAAADo/zEAAAACAAEAAADo/zIAAAACAAEAAADo/zMAAAACAAEAAADo/zQAAAACAAEAAADo/zUAAAACAAEAAADo/zYAAAACAAEAAADo/zcAAAACAAEAAADo/zgAAAACAAEAAADp//T/AAACAAEAAADp//X/AAACAAEAAADp//b/AAACAAEAAADp//f/AAACAAEAAADp//j/AAACAAEAAADp//n/AAACAAEAAADp//r/AAACAAEAAADp//v/AAACAAEAAADp//z/AAACAAEAAADp//3/AAACAAEAAADp//7/AAACAAEAAADp////AAACAAEAAADp/wAAAAACAAEAAADp/wEAAAACAAEAAADp/wIAAAACAAEAAADp/wMAAAACAAEAAADp/wQAAAACAAEAAADp/wUAAAACAAEAAADp/wYAAAACAAEAAADp/wcAAAACAAEAAADp/wgAAAACAAEAAADp/wkAAAACAAEAAADp/woAAAACAAEAAADp/wsAAAACAAEAAADp/wwAAAACAAEAAADp/w0AAAACAAEAAADp/w4AAAACAAEAAADp/w8AAAACAAEAAADp/xAAAAACAAEAAADp/xEAAAACAAEAAADp/xIAAAACAAEAAADp/xMAAAACAAEAAADp/xQAAAACAAEAAADp/xUAAAACAAEAAADp/xYAAAACAAEAAADp/xcAAAACAAEAAADp/xgAAAACAAEAAADp/xkAAAACAAEAAADp/xoAAAACAAEAAADp/xsAAAACAAEAAADp/xwAAAACAAEAAADp/x0AAAACAAEAAADp/x4AAAACAAEAAADp/x8AAAACAAEAAADp/yAAAAACAAEAAADp/yEAAAACAAEAAADp/yIAAAACAAEAAADp/yMAAAACAAEAAADp/yQAAAACAAEAAADp/yUAAAACAAEAAADp/yYAAAACAAEAAADp/ycAAAACAAEAAADp/ygAAAACAAEAAADp/ykAAAACAAEAAADp/yoAAAACAAEAAADp/ysAAAACAAEAAADp/ywAAAACAAEAAADp/y0AAAACAAEAAADp/y4AAAACAAEAAADp/y8AAAACAAEAAADp/zAAAAACAAEAAADp/zEAAAACAAEAAADp/zIAAAACAAEAAADp/zMAAAACAAEAAADp/zQAAAACAAEAAADp/zUAAAACAAEAAADp/zYAAAACAAEAAADp/zcAAAACAAEAAADp/zgAAAACAAEAAADq//T/AAACAAEAAADq//X/AAACAAEAAADq//b/AAACAAEAAADq//f/AAACAAEAAADq//j/AAACAAEAAADq//n/AAACAAEAAADq//r/AAACAAEAAADq//v/AAACAAEAAADq//z/AAACAAEAAADq//3/AAACAAEAAADq//7/AAACAAEAAADq////AAACAAEAAADq/wAAAAACAAEAAADq/wEAAAACAAEAAADq/wIAAAACAAEAAADq/wMAAAACAAEAAADq/wQAAAACAAEAAADq/wUAAAACAAEAAADq/wYAAAACAAEAAADq/wcAAAACAAEAAADq/wgAAAACAAEAAADq/wkAAAACAAEAAADq/woAAAACAAEAAADq/wsAAAACAAEAAADq/wwAAAACAAEAAADq/w0AAAACAAEAAADq/w4AAAACAAEAAADq/w8AAAACAAEAAADq/xAAAAACAAEAAADq/xEAAAACAAEAAADq/xIAAAACAAEAAADq/xMAAAACAAEAAADq/xQAAAACAAEAAADq/xUAAAACAAEAAADq/xYAAAACAAEAAADq/xcAAAACAAEAAADq/xgAAAACAAEAAADq/xkAAAACAAEAAADq/xoAAAACAAEAAADq/xsAAAACAAEAAADq/xwAAAACAAEAAADq/x0AAAACAAEAAADq/x4AAAACAAEAAADq/x8AAAACAAEAAADq/yAAAAACAAEAAADq/yEAAAACAAEAAADq/yIAAAACAAEAAADq/yMAAAACAAEAAADq/yQAAAACAAEAAADq/yUAAAACAAEAAADq/yYAAAACAAEAAADq/ycAAAACAAEAAADq/ygAAAACAAEAAADq/ykAAAACAAEAAADq/yoAAAACAAEAAADq/ysAAAACAAEAAADq/ywAAAACAAEAAADq/y0AAAACAAEAAADq/y4AAAACAAEAAADq/y8AAAACAAEAAADq/zAAAAACAAEAAADq/zEAAAACAAEAAADq/zIAAAACAAEAAADq/zMAAAACAAEAAADq/zQAAAACAAEAAADq/zUAAAACAAEAAADq/zYAAAACAAEAAADq/zcAAAACAAEAAADq/zgAAAACAAEAAADr//T/AAACAAEAAADr//X/AAACAAEAAADr//b/AAACAAEAAADr//f/AAACAAEAAADr//j/AAACAAEAAADr//n/AAACAAEAAADr//r/AAACAAEAAADr//v/AAACAAEAAADr//z/AAACAAEAAADr//3/AAACAAEAAADr//7/AAACAAEAAADr////AAACAAEAAADr/wAAAAACAAEAAADr/wEAAAACAAEAAADr/wIAAAACAAEAAADr/wMAAAACAAEAAADr/wQAAAACAAEAAADr/wUAAAACAAEAAADr/wYAAAACAAEAAADr/wcAAAACAAEAAADr/wgAAAACAAEAAADr/wkAAAACAAEAAADr/woAAAACAAEAAADr/wsAAAACAAEAAADr/wwAAAACAAEAAADr/w0AAAACAAEAAADr/w4AAAACAAEAAADr/w8AAAACAAEAAADr/xAAAAACAAEAAADr/xEAAAACAAEAAADr/xIAAAACAAEAAADr/xMAAAACAAEAAADr/xQAAAACAAEAAADr/xUAAAACAAEAAADr/xYAAAACAAEAAADr/xcAAAACAAEAAADr/xgAAAACAAEAAADr/xkAAAACAAEAAADr/xoAAAACAAEAAADr/xsAAAACAAEAAADr/xwAAAACAAEAAADr/x0AAAACAAEAAADr/x4AAAACAAEAAADr/x8AAAACAAEAAADr/yAAAAACAAEAAADr/yEAAAACAAEAAADr/yIAAAACAAEAAADr/yMAAAACAAEAAADr/yQAAAACAAEAAADr/yUAAAACAAEAAADr/yYAAAACAAEAAADr/ycAAAACAAEAAADr/ygAAAACAAEAAADr/ykAAAACAAEAAADr/yoAAAACAAEAAADr/ysAAAACAAEAAADr/ywAAAACAAEAAADr/y0AAAACAAEAAADr/y4AAAACAAEAAADr/y8AAAACAAEAAADr/zAAAAACAAEAAADr/zEAAAACAAEAAADr/zIAAAACAAEAAADr/zMAAAACAAEAAADr/zQAAAACAAEAAADr/zUAAAACAAEAAADr/zYAAAACAAEAAADr/zcAAAACAAEAAADr/zgAAAACAAEAAADs//T/AAACAAEAAADs//X/AAACAAEAAADs//b/AAACAAEAAADs//f/AAACAAEAAADs//j/AAACAAEAAADs//n/AAACAAEAAADs//r/AAACAAEAAADs//v/AAACAAEAAADs//z/AAACAAEAAADs//3/AAACAAEAAADs//7/AAACAAEAAADs////AAACAAEAAADs/wAAAAACAAEAAADs/wEAAAACAAEAAADs/wIAAAACAAEAAADs/wMAAAACAAEAAADs/wQAAAACAAEAAADs/wUAAAACAAEAAADs/wYAAAACAAEAAADs/wcAAAACAAEAAADs/wgAAAACAAEAAADs/wkAAAACAAEAAADs/woAAAACAAEAAADs/wsAAAACAAEAAADs/wwAAAACAAEAAADs/w0AAAACAAEAAADs/w4AAAACAAEAAADs/w8AAAACAAEAAADs/xAAAAACAAEAAADs/xEAAAACAAEAAADs/xIAAAACAAEAAADs/xMAAAACAAEAAADs/xQAAAACAAEAAADs/xUAAAACAAEAAADs/xYAAAACAAEAAADs/xcAAAACAAEAAADs/xgAAAACAAEAAADs/xkAAAACAAEAAADs/xoAAAACAAEAAADs/xsAAAACAAEAAADs/xwAAAACAAEAAADs/x0AAAACAAEAAADs/x4AAAACAAEAAADs/x8AAAACAAEAAADs/yAAAAACAAEAAADs/yEAAAACAAEAAADs/yIAAAACAAEAAADs/yMAAAACAAEAAADs/yQAAAACAAEAAADs/yUAAAACAAEAAADs/yYAAAACAAEAAADs/ycAAAACAAEAAADs/ygAAAACAAEAAADs/ykAAAACAAEAAADs/yoAAAACAAEAAADs/ysAAAACAAEAAADs/ywAAAACAAEAAADs/y0AAAACAAEAAADs/y4AAAACAAEAAADs/y8AAAACAAEAAADs/zAAAAACAAEAAADs/zEAAAACAAEAAADs/zIAAAACAAEAAADs/zMAAAACAAEAAADs/zQAAAACAAEAAADs/zUAAAACAAEAAADs/zYAAAACAAEAAADs/zcAAAACAAEAAADs/zgAAAACAAEAAADt//T/AAACAAEAAADt//X/AAACAAEAAADt//b/AAACAAEAAADt//f/AAACAAEAAADt//j/AAACAAEAAADt//n/AAACAAEAAADt//r/AAACAAEAAADt//v/AAACAAEAAADt//z/AAACAAEAAADt//3/AAACAAEAAADt//7/AAACAAEAAADt////AAACAAEAAADt/wAAAAACAAEAAADt/wEAAAACAAEAAADt/wIAAAACAAEAAADt/wMAAAACAAEAAADt/wQAAAACAAEAAADt/wUAAAACAAEAAADt/wYAAAACAAEAAADt/wcAAAACAAEAAADt/wgAAAACAAEAAADt/wkAAAACAAEAAADt/woAAAACAAEAAADt/wsAAAACAAEAAADt/wwAAAACAAEAAADt/w0AAAACAAEAAADt/w4AAAACAAEAAADt/w8AAAACAAEAAADt/xAAAAACAAEAAADt/xEAAAACAAEAAADt/xIAAAACAAEAAADt/xMAAAACAAEAAADt/xQAAAACAAEAAADt/xUAAAACAAEAAADt/xYAAAACAAEAAADt/xcAAAACAAEAAADt/xgAAAACAAEAAADt/xkAAAACAAEAAADt/xoAAAACAAEAAADt/xsAAAACAAEAAADt/xwAAAACAAEAAADt/x0AAAACAAEAAADt/x4AAAACAAEAAADt/x8AAAACAAEAAADt/yAAAAACAAEAAADt/yEAAAACAAEAAADt/yIAAAACAAEAAADt/yMAAAACAAEAAADt/yQAAAACAAEAAADt/yUAAAACAAEAAADt/yYAAAACAAEAAADt/ycAAAACAAEAAADt/ygAAAACAAEAAADt/ykAAAACAAEAAADt/yoAAAACAAEAAADt/ysAAAACAAEAAADt/ywAAAACAAEAAADt/y0AAAACAAEAAADt/y4AAAACAAEAAADt/y8AAAACAAEAAADt/zAAAAACAAEAAADt/zEAAAACAAEAAADt/zIAAAACAAEAAADt/zMAAAACAAEAAADt/zQAAAACAAEAAADt/zUAAAACAAEAAADt/zYAAAACAAEAAADt/zcAAAACAAEAAADt/zgAAAACAAEAAADu//T/AAACAAEAAADu//X/AAACAAEAAADu//b/AAACAAEAAADu//f/AAACAAEAAADu//j/AAACAAEAAADu//n/AAACAAEAAADu//r/AAACAAEAAADu//v/AAACAAEAAADu//z/AAACAAEAAADu//3/AAACAAEAAADu//7/AAACAAEAAADu////AAACAAEAAADu/wAAAAACAAEAAADu/wEAAAACAAEAAADu/wIAAAACAAEAAADu/wMAAAACAAEAAADu/wQAAAACAAEAAADu/wUAAAACAAEAAADu/wYAAAACAAEAAADu/wcAAAACAAEAAADu/wgAAAACAAEAAADu/wkAAAACAAEAAADu/woAAAACAAEAAADu/wsAAAACAAEAAADu/wwAAAACAAEAAADu/w0AAAACAAEAAADu/w4AAAACAAEAAADu/w8AAAACAAEAAADu/xAAAAACAAEAAADu/xEAAAACAAEAAADu/xIAAAACAAEAAADu/xMAAAACAAEAAADu/xQAAAACAAEAAADu/xUAAAACAAEAAADu/xYAAAACAAEAAADu/xcAAAACAAEAAADu/xgAAAACAAEAAADu/xkAAAACAAEAAADu/xoAAAACAAEAAADu/xsAAAACAAEAAADu/xwAAAACAAEAAADu/x0AAAACAAEAAADu/x4AAAACAAEAAADu/x8AAAACAAEAAADu/yAAAAACAAEAAADu/yEAAAACAAEAAADu/yIAAAACAAEAAADu/yMAAAACAAEAAADu/yQAAAACAAEAAADu/yUAAAACAAEAAADu/yYAAAACAAEAAADu/ycAAAACAAEAAADu/ygAAAACAAEAAADu/ykAAAACAAEAAADu/yoAAAACAAEAAADu/ysAAAACAAEAAADu/ywAAAACAAEAAADu/y0AAAACAAEAAADu/y4AAAACAAEAAADu/y8AAAACAAEAAADu/zAAAAACAAEAAADu/zEAAAACAAEAAADu/zIAAAACAAEAAADu/zMAAAACAAEAAADu/zQAAAACAAEAAADu/zUAAAACAAEAAADu/zYAAAACAAEAAADu/zcAAAACAAEAAADu/zgAAAACAAEAAADv//T/AAACAAEAAADv//X/AAACAAEAAADv//b/AAACAAEAAADv//f/AAACAAEAAADv//j/AAACAAEAAADv//n/AAACAAEAAADv//r/AAACAAEAAADv//v/AAACAAEAAADv//z/AAACAAEAAADv//3/AAACAAEAAADv//7/AAACAAEAAADv////AAACAAEAAADv/wAAAAACAAEAAADv/wEAAAACAAEAAADv/wIAAAACAAEAAADv/wMAAAACAAEAAADv/wQAAAACAAEAAADv/wUAAAACAAEAAADv/wYAAAACAAEAAADv/wcAAAACAAEAAADv/wgAAAACAAEAAADv/wkAAAACAAEAAADv/woAAAACAAEAAADv/wsAAAACAAEAAADv/wwAAAACAAEAAADv/w0AAAACAAEAAADv/w4AAAACAAEAAADv/w8AAAACAAEAAADv/xAAAAACAAEAAADv/xEAAAACAAEAAADv/xIAAAACAAEAAADv/xMAAAACAAEAAADv/xQAAAACAAEAAADv/xUAAAACAAEAAADv/xYAAAACAAEAAADv/xcAAAACAAEAAADv/xgAAAACAAEAAADv/xkAAAACAAEAAADv/xoAAAACAAEAAADv/xsAAAACAAEAAADv/xwAAAACAAEAAADv/x0AAAACAAEAAADv/x4AAAACAAEAAADv/x8AAAACAAEAAADv/yAAAAACAAEAAADv/yEAAAACAAEAAADv/yIAAAACAAEAAADv/yMAAAACAAEAAADv/yQAAAACAAEAAADv/yUAAAACAAEAAADv/yYAAAACAAEAAADv/ycAAAACAAEAAADv/ygAAAACAAEAAADv/ykAAAACAAEAAADv/yoAAAACAAEAAADv/ysAAAACAAEAAADv/ywAAAACAAEAAADv/y0AAAACAAEAAADv/y4AAAACAAEAAADv/y8AAAACAAEAAADv/zAAAAACAAEAAADv/zEAAAACAAEAAADv/zIAAAACAAEAAADv/zMAAAACAAEAAADv/zQAAAACAAEAAADv/zUAAAACAAEAAADv/zYAAAACAAEAAADv/zcAAAACAAEAAADv/zgAAAACAAEAAADw//T/AAACAAEAAADw//X/AAACAAEAAADw//b/AAACAAEAAADw//f/AAACAAEAAADw//j/AAACAAEAAADw//n/AAACAAEAAADw//r/AAACAAEAAADw//v/AAACAAEAAADw//z/AAACAAEAAADw//3/AAACAAEAAADw//7/AAACAAEAAADw////AAACAAEAAADw/wAAAAACAAEAAADw/wEAAAACAAEAAADw/wIAAAACAAEAAADw/wMAAAACAAEAAADw/wQAAAACAAEAAADw/wUAAAACAAEAAADw/wYAAAACAAEAAADw/wcAAAACAAEAAADw/wgAAAACAAEAAADw/wkAAAACAAEAAADw/woAAAACAAEAAADw/wsAAAACAAEAAADw/wwAAAACAAEAAADw/w0AAAACAAEAAADw/w4AAAACAAEAAADw/w8AAAACAAEAAADw/xAAAAACAAEAAADw/xEAAAACAAEAAADw/xIAAAACAAEAAADw/xMAAAACAAEAAADw/xQAAAACAAEAAADw/xUAAAACAAEAAADw/xYAAAACAAEAAADw/xcAAAACAAEAAADw/xgAAAACAAEAAADw/xkAAAACAAEAAADw/xoAAAACAAEAAADw/xsAAAACAAEAAADw/xwAAAACAAEAAADw/x0AAAACAAEAAADw/x4AAAACAAEAAADw/x8AAAACAAEAAADw/yAAAAACAAEAAADw/yEAAAACAAEAAADw/yIAAAACAAEAAADw/yMAAAACAAEAAADw/yQAAAACAAEAAADw/yUAAAACAAEAAADw/yYAAAACAAEAAADw/ycAAAACAAEAAADw/ygAAAACAAEAAADw/ykAAAACAAEAAADw/yoAAAACAAEAAADw/ysAAAACAAEAAADw/ywAAAACAAEAAADw/y0AAAACAAEAAADw/y4AAAACAAEAAADw/y8AAAACAAEAAADw/zAAAAACAAEAAADw/zEAAAACAAEAAADw/zIAAAACAAEAAADw/zMAAAACAAEAAADw/zQAAAACAAEAAADw/zUAAAACAAEAAADw/zYAAAACAAEAAADw/zcAAAACAAEAAADw/zgAAAACAAEAAADx//T/AAACAAEAAADx//X/AAACAAEAAADx//b/AAACAAEAAADx//f/AAACAAEAAADx//j/AAACAAEAAADx//n/AAACAAEAAADx//r/AAACAAEAAADx//v/AAACAAEAAADx//z/AAACAAEAAADx//3/AAACAAEAAADx//7/AAACAAEAAADx////AAACAAEAAADx/wAAAAACAAEAAADx/wEAAAACAAEAAADx/wIAAAACAAEAAADx/wMAAAACAAEAAADx/wQAAAACAAEAAADx/wUAAAACAAEAAADx/wYAAAACAAEAAADx/wcAAAACAAEAAADx/wgAAAACAAEAAADx/wkAAAACAAEAAADx/woAAAACAAEAAADx/wsAAAACAAEAAADx/wwAAAACAAEAAADx/w0AAAACAAEAAADx/w4AAAACAAEAAADx/w8AAAACAAEAAADx/xAAAAACAAEAAADx/xEAAAACAAEAAADx/xIAAAACAAEAAADx/xMAAAACAAEAAADx/xQAAAACAAEAAADx/xUAAAACAAEAAADx/xYAAAACAAEAAADx/xcAAAACAAEAAADx/xgAAAACAAEAAADx/xkAAAACAAEAAADx/xoAAAACAAEAAADx/xsAAAACAAEAAADx/xwAAAACAAEAAADx/x0AAAACAAEAAADx/x4AAAACAAEAAADx/x8AAAACAAEAAADx/yAAAAACAAEAAADx/yEAAAACAAEAAADx/yIAAAACAAEAAADx/yMAAAACAAEAAADx/yQAAAACAAEAAADx/yUAAAACAAEAAADx/yYAAAACAAEAAADx/ycAAAACAAEAAADx/ygAAAACAAEAAADx/ykAAAACAAEAAADx/yoAAAACAAEAAADx/ysAAAACAAEAAADx/ywAAAACAAEAAADx/y0AAAACAAEAAADx/y4AAAACAAEAAADx/y8AAAACAAEAAADx/zAAAAACAAEAAADx/zEAAAACAAEAAADx/zIAAAACAAEAAADx/zMAAAACAAEAAADx/zQAAAACAAEAAADx/zUAAAACAAEAAADx/zYAAAACAAEAAADx/zcAAAACAAEAAADx/zgAAAACAAEAAADy//T/AAACAAEAAADy//X/AAACAAEAAADy//b/AAACAAEAAADy//f/AAACAAEAAADy//j/AAACAAEAAADy//n/AAACAAEAAADy//r/AAACAAEAAADy//v/AAACAAEAAADy//z/AAACAAEAAADy//3/AAACAAEAAADy//7/AAACAAEAAADy////AAACAAEAAADy/wAAAAACAAEAAADy/wEAAAACAAEAAADy/wIAAAACAAEAAADy/wMAAAACAAEAAADy/wQAAAACAAEAAADy/wUAAAACAAEAAADy/wYAAAACAAEAAADy/wcAAAACAAEAAADy/wgAAAACAAEAAADy/wkAAAACAAEAAADy/woAAAACAAEAAADy/wsAAAACAAEAAADy/wwAAAACAAEAAADy/w0AAAACAAEAAADy/w4AAAACAAEAAADy/w8AAAACAAEAAADy/xAAAAACAAEAAADy/xEAAAACAAEAAADy/xIAAAACAAEAAADy/xMAAAACAAEAAADy/xQAAAACAAEAAADy/xUAAAACAAEAAADy/xYAAAACAAEAAADy/xcAAAACAAEAAADy/xgAAAACAAEAAADy/xkAAAACAAEAAADy/xoAAAACAAEAAADy/xsAAAACAAEAAADy/xwAAAACAAEAAADy/x0AAAACAAEAAADy/x4AAAACAAEAAADy/x8AAAACAAEAAADy/yAAAAACAAEAAADy/yEAAAACAAEAAADy/yIAAAACAAEAAADy/yMAAAACAAEAAADy/yQAAAACAAEAAADy/yUAAAACAAEAAADy/yYAAAACAAEAAADy/ycAAAACAAEAAADy/ygAAAACAAEAAADy/ykAAAACAAEAAADy/yoAAAACAAEAAADy/ysAAAACAAEAAADy/ywAAAACAAEAAADy/y0AAAACAAEAAADy/y4AAAACAAEAAADy/y8AAAACAAEAAADy/zAAAAACAAEAAADy/zEAAAACAAEAAADy/zIAAAACAAEAAADy/zMAAAACAAEAAADy/zQAAAACAAEAAADy/zUAAAACAAEAAADy/zYAAAACAAEAAADy/zcAAAACAAEAAADy/zgAAAACAAEAAADz//T/AAACAAEAAADz//X/AAACAAEAAADz//b/AAACAAEAAADz//f/AAACAAEAAADz//j/AAACAAEAAADz//n/AAACAAEAAADz//r/AAACAAEAAADz//v/AAACAAEAAADz//z/AAACAAEAAADz//3/AAACAAEAAADz//7/AAACAAEAAADz////AAACAAEAAADz/wAAAAACAAEAAADz/wEAAAACAAEAAADz/wIAAAACAAEAAADz/wMAAAACAAEAAADz/wQAAAACAAEAAADz/wUAAAACAAEAAADz/wYAAAACAAEAAADz/wcAAAACAAEAAADz/wgAAAACAAEAAADz/wkAAAACAAEAAADz/woAAAACAAEAAADz/wsAAAACAAEAAADz/wwAAAACAAEAAADz/w0AAAACAAEAAADz/w4AAAACAAEAAADz/w8AAAACAAEAAADz/xAAAAACAAEAAADz/xEAAAACAAEAAADz/xIAAAACAAEAAADz/xMAAAACAAEAAADz/xQAAAACAAEAAADz/xUAAAACAAEAAADz/xYAAAACAAEAAADz/xcAAAACAAEAAADz/xgAAAACAAEAAADz/xkAAAACAAEAAADz/xoAAAACAAEAAADz/xsAAAACAAEAAADz/xwAAAACAAEAAADz/x0AAAACAAEAAADz/x4AAAACAAEAAADz/x8AAAACAAEAAADz/yAAAAACAAEAAADz/yEAAAACAAEAAADz/yIAAAACAAEAAADz/yMAAAACAAEAAADz/yQAAAACAAEAAADz/yUAAAACAAEAAADz/yYAAAACAAEAAADz/ycAAAACAAEAAADz/ygAAAACAAEAAADz/ykAAAACAAEAAADz/yoAAAACAAEAAADz/ysAAAACAAEAAADz/ywAAAACAAEAAADz/y0AAAACAAEAAADz/y4AAAACAAEAAADz/y8AAAACAAEAAADz/zAAAAACAAEAAADz/zEAAAACAAEAAADz/zIAAAACAAEAAADz/zMAAAACAAEAAADz/zQAAAACAAEAAADz/zUAAAACAAEAAADz/zYAAAACAAEAAADz/zcAAAACAAEAAADz/zgAAAACAAEAAAD0//T/AAACAAEAAAD0//X/AAACAAEAAAD0//b/AAACAAEAAAD0//f/AAACAAEAAAD0//j/AAACAAEAAAD0//n/AAACAAEAAAD0//r/AAACAAEAAAD0//v/AAACAAEAAAD0//z/AAACAAEAAAD0//3/AAACAAEAAAD0//7/AAACAAEAAAD0/wAAAAACAAEAAAD0/wEAAAACAAEAAAD0/wIAAAACAAEAAAD0/wMAAAACAAEAAAD0/wQAAAACAAEAAAD0/wUAAAACAAEAAAD0/wYAAAACAAEAAAD0/wcAAAACAAEAAAD0/wgAAAACAAEAAAD0/wkAAAACAAEAAAD0/woAAAACAAEAAAD0/wsAAAACAAEAAAD0/wwAAAACAAEAAAD0/w0AAAACAAEAAAD0/w4AAAACAAEAAAD0/w8AAAACAAEAAAD0/xAAAAACAAEAAAD0/xEAAAACAAEAAAD0/xIAAAACAAEAAAD0/xMAAAACAAEAAAD0/xQAAAACAAEAAAD0/xUAAAACAAEAAAD0/xYAAAACAAEAAAD0/xcAAAACAAEAAAD0/xgAAAACAAEAAAD0/xkAAAACAAEAAAD0/xoAAAACAAEAAAD0/xsAAAACAAEAAAD0/xwAAAACAAEAAAD0/x0AAAACAAEAAAD0/x4AAAACAAEAAAD0/x8AAAACAAEAAAD0/yAAAAACAAEAAAD0/yEAAAACAAEAAAD0/yIAAAACAAEAAAD0/yMAAAACAAEAAAD0/yQAAAACAAEAAAD0/yUAAAACAAEAAAD0/yYAAAACAAEAAAD0/ycAAAACAAEAAAD0/ygAAAACAAEAAAD0/ykAAAACAAEAAAD0/yoAAAACAAEAAAD0/ysAAAACAAEAAAD0/ywAAAACAAEAAAD0/y0AAAACAAEAAAD0/y4AAAACAAEAAAD0/y8AAAACAAEAAAD0/zAAAAACAAEAAAD0/zEAAAACAAEAAAD0/zIAAAACAAEAAAD0/zMAAAACAAEAAAD0/zQAAAACAAEAAAD0/zUAAAACAAEAAAD0/zYAAAACAAEAAAD0/zcAAAACAAEAAAD0/zgAAAACAAEAAAD1//T/AAACAAEAAAD1//X/AAACAAEAAAD1//b/AAACAAEAAAD1//f/AAACAAEAAAD1//j/AAACAAEAAAD1//n/AAACAAEAAAD1//r/AAACAAEAAAD1//v/AAACAAEAAAD1//z/AAACAAEAAAD1//3/AAACAAEAAAD1//7/AAACAAEAAAD1/wEAAAACAAEAAAD1/wIAAAACAAEAAAD1/wMAAAACAAEAAAD1/wQAAAACAAEAAAD1/wUAAAACAAEAAAD1/wYAAAACAAEAAAD1/wcAAAACAAEAAAD1/wgAAAACAAEAAAD1/wkAAAACAAEAAAD1/woAAAACAAEAAAD1/wsAAAACAAEAAAD1/wwAAAACAAEAAAD1/w0AAAACAAEAAAD1/w4AAAACAAEAAAD1/w8AAAACAAEAAAD1/xAAAAACAAEAAAD1/xEAAAACAAEAAAD1/xIAAAACAAEAAAD1/xMAAAACAAEAAAD1/xQAAAACAAEAAAD1/xUAAAACAAEAAAD1/xYAAAACAAEAAAD1/xcAAAACAAEAAAD1/xgAAAACAAEAAAD1/xkAAAACAAEAAAD1/xoAAAACAAEAAAD1/xsAAAACAAEAAAD1/xwAAAACAAEAAAD1/x0AAAACAAEAAAD1/x4AAAACAAEAAAD1/x8AAAACAAEAAAD1/yAAAAACAAEAAAD1/yEAAAACAAEAAAD1/yIAAAACAAEAAAD1/yMAAAACAAEAAAD1/yQAAAACAAEAAAD1/yUAAAACAAEAAAD1/yYAAAACAAEAAAD1/ycAAAACAAEAAAD1/ygAAAACAAEAAAD1/ykAAAACAAEAAAD1/yoAAAACAAEAAAD1/ysAAAACAAEAAAD1/ywAAAACAAEAAAD1/y0AAAACAAEAAAD1/y4AAAACAAEAAAD1/y8AAAACAAEAAAD1/zAAAAACAAEAAAD1/zEAAAACAAEAAAD1/zIAAAACAAEAAAD1/zMAAAACAAEAAAD1/zQAAAACAAEAAAD1/zUAAAACAAEAAAD1/zYAAAACAAEAAAD1/zcAAAACAAEAAAD1/zgAAAACAAEAAAD2//T/AAACAAEAAAD2//X/AAACAAEAAAD2//b/AAACAAEAAAD2//f/AAACAAEAAAD2//j/AAACAAEAAAD2//n/AAACAAEAAAD2//r/AAACAAEAAAD2//v/AAACAAEAAAD2//z/AAACAAEAAAD2//3/AAACAAEAAAD2//7/AAACAAEAAAD2////AAACAAEAAAD2/wIAAAACAAEAAAD2/wMAAAACAAEAAAD2/wQAAAACAAEAAAD2/wUAAAACAAEAAAD2/wYAAAACAAEAAAD2/wcAAAACAAEAAAD2/wgAAAACAAEAAAD2/wkAAAACAAEAAAD2/woAAAACAAEAAAD2/wsAAAACAAEAAAD2/wwAAAACAAEAAAD2/w0AAAACAAEAAAD2/w4AAAACAAEAAAD2/w8AAAACAAEAAAD2/xAAAAACAAEAAAD2/xEAAAACAAEAAAD2/xIAAAACAAEAAAD2/xMAAAACAAEAAAD2/xQAAAACAAEAAAD2/xUAAAACAAEAAAD2/xYAAAACAAEAAAD2/xcAAAACAAEAAAD2/xgAAAACAAEAAAD2/xkAAAACAAEAAAD2/xoAAAACAAEAAAD2/xsAAAACAAEAAAD2/xwAAAACAAEAAAD2/x0AAAACAAEAAAD2/x4AAAACAAEAAAD2/x8AAAACAAEAAAD2/yAAAAACAAEAAAD2/yEAAAACAAEAAAD2/yIAAAACAAEAAAD2/yMAAAACAAEAAAD2/yQAAAACAAEAAAD2/yUAAAACAAEAAAD2/yYAAAACAAEAAAD2/ycAAAACAAEAAAD2/ygAAAACAAEAAAD2/ykAAAACAAEAAAD2/yoAAAACAAEAAAD2/ysAAAACAAEAAAD2/ywAAAACAAEAAAD2/y0AAAACAAEAAAD2/y4AAAACAAEAAAD2/y8AAAACAAEAAAD2/zAAAAACAAEAAAD2/zEAAAACAAEAAAD2/zIAAAACAAEAAAD2/zMAAAACAAEAAAD2/zQAAAACAAEAAAD2/zUAAAACAAEAAAD2/zYAAAACAAEAAAD2/zcAAAACAAEAAAD2/zgAAAACAAEAAAD3//T/AAACAAEAAAD3//X/AAACAAEAAAD3//b/AAACAAEAAAD3//f/AAACAAEAAAD3//j/AAACAAEAAAD3//n/AAACAAEAAAD3//r/AAACAAEAAAD3//v/AAACAAEAAAD3//z/AAACAAEAAAD3//3/AAACAAEAAAD3//7/AAACAAEAAAD3////AAACAAEAAAD3/wAAAAACAAEAAAD3/wEAAAACAAEAAAD3/wMAAAACAAEAAAD3/wQAAAACAAEAAAD3/wUAAAACAAEAAAD3/wYAAAACAAEAAAD3/wcAAAACAAEAAAD3/wgAAAACAAEAAAD3/wkAAAACAAEAAAD3/woAAAACAAEAAAD3/wsAAAACAAEAAAD3/wwAAAACAAEAAAD3/w0AAAACAAEAAAD3/w4AAAACAAEAAAD3/w8AAAACAAEAAAD3/xAAAAACAAEAAAD3/xEAAAACAAEAAAD3/xIAAAACAAEAAAD3/xMAAAACAAEAAAD3/xQAAAACAAEAAAD3/xUAAAACAAEAAAD3/xYAAAACAAEAAAD3/xcAAAACAAEAAAD3/xgAAAACAAEAAAD3/xkAAAACAAEAAAD3/xoAAAACAAEAAAD3/xsAAAACAAEAAAD3/xwAAAACAAEAAAD3/x0AAAACAAEAAAD3/x4AAAACAAEAAAD3/x8AAAACAAEAAAD3/yAAAAACAAEAAAD3/yEAAAACAAEAAAD3/yIAAAACAAEAAAD3/yMAAAACAAEAAAD3/yQAAAACAAEAAAD3/yUAAAACAAEAAAD3/yYAAAACAAEAAAD3/ycAAAACAAEAAAD3/ygAAAACAAEAAAD3/ykAAAACAAEAAAD3/yoAAAACAAEAAAD3/ysAAAACAAEAAAD3/ywAAAACAAEAAAD3/y0AAAACAAEAAAD3/y4AAAACAAEAAAD3/y8AAAACAAEAAAD3/zAAAAACAAEAAAD3/zEAAAACAAEAAAD3/zIAAAACAAEAAAD3/zMAAAACAAEAAAD3/zQAAAACAAEAAAD3/zUAAAACAAEAAAD3/zYAAAACAAEAAAD3/zcAAAACAAEAAAD3/zgAAAACAAEAAAD4//T/AAACAAEAAAD4//X/AAACAAEAAAD4//b/AAACAAEAAAD4//f/AAACAAEAAAD4//j/AAACAAEAAAD4//n/AAACAAEAAAD4//r/AAACAAEAAAD4//v/AAACAAEAAAD4//z/AAACAAEAAAD4//3/AAACAAEAAAD4//7/AAACAAEAAAD4////AAACAAEAAAD4/wAAAAACAAEAAAD4/wEAAAACAAEAAAD4/wIAAAACAAEAAAD4/wUAAAACAAEAAAD4/wYAAAACAAEAAAD4/wcAAAACAAEAAAD4/wgAAAACAAEAAAD4/wkAAAACAAEAAAD4/woAAAACAAEAAAD4/wsAAAACAAEAAAD4/wwAAAACAAEAAAD4/w0AAAACAAEAAAD4/w4AAAACAAEAAAD4/w8AAAACAAEAAAD4/xAAAAACAAEAAAD4/xEAAAACAAEAAAD4/xIAAAACAAEAAAD4/xMAAAACAAEAAAD4/xQAAAACAAEAAAD4/xUAAAACAAEAAAD4/xYAAAACAAEAAAD4/xcAAAACAAEAAAD4/xgAAAACAAEAAAD4/xkAAAACAAEAAAD4/xoAAAACAAEAAAD4/xsAAAACAAEAAAD4/xwAAAACAAEAAAD4/x0AAAACAAEAAAD4/x4AAAACAAEAAAD4/x8AAAACAAEAAAD4/yAAAAACAAEAAAD4/yEAAAACAAEAAAD4/yIAAAACAAEAAAD4/yMAAAACAAEAAAD4/yQAAAACAAEAAAD4/yUAAAACAAEAAAD4/yYAAAACAAEAAAD4/ycAAAACAAEAAAD4/ygAAAACAAEAAAD4/ykAAAACAAEAAAD4/yoAAAACAAEAAAD4/ysAAAACAAEAAAD4/ywAAAACAAEAAAD4/y0AAAACAAEAAAD4/y4AAAACAAEAAAD4/y8AAAACAAEAAAD4/zAAAAACAAEAAAD4/zEAAAACAAEAAAD4/zIAAAACAAEAAAD4/zMAAAACAAEAAAD4/zQAAAACAAEAAAD4/zUAAAACAAEAAAD4/zYAAAACAAEAAAD4/zcAAAACAAEAAAD4/zgAAAACAAEAAAD5//T/AAACAAEAAAD5//X/AAACAAEAAAD5//b/AAACAAEAAAD5//f/AAACAAEAAAD5//j/AAACAAEAAAD5//n/AAACAAEAAAD5//r/AAACAAEAAAD5//v/AAACAAEAAAD5//z/AAACAAEAAAD5//3/AAACAAEAAAD5//7/AAACAAEAAAD5////AAACAAEAAAD5/wAAAAACAAEAAAD5/wEAAAACAAEAAAD5/wIAAAACAAEAAAD5/wMAAAACAAEAAAD5/wQAAAACAAEAAAD5/wYAAAACAAEAAAD5/wcAAAACAAEAAAD5/wgAAAACAAEAAAD5/wkAAAACAAEAAAD5/woAAAACAAEAAAD5/wsAAAACAAEAAAD5/wwAAAACAAEAAAD5/w0AAAACAAEAAAD5/w4AAAACAAEAAAD5/w8AAAACAAEAAAD5/xAAAAACAAEAAAD5/xEAAAACAAEAAAD5/xIAAAACAAEAAAD5/xMAAAACAAEAAAD5/xQAAAACAAEAAAD5/xUAAAACAAEAAAD5/xYAAAACAAEAAAD5/xcAAAACAAEAAAD5/xgAAAACAAEAAAD5/xkAAAACAAEAAAD5/xoAAAACAAEAAAD5/xsAAAACAAEAAAD5/xwAAAACAAEAAAD5/x0AAAACAAEAAAD5/x4AAAACAAEAAAD5/x8AAAACAAEAAAD5/yAAAAACAAEAAAD5/yEAAAACAAEAAAD5/yIAAAACAAEAAAD5/yMAAAACAAEAAAD5/yQAAAACAAEAAAD5/yUAAAACAAEAAAD5/yYAAAACAAEAAAD5/ycAAAACAAEAAAD5/ygAAAACAAEAAAD5/ykAAAACAAEAAAD5/yoAAAACAAEAAAD5/ysAAAACAAEAAAD5/ywAAAACAAEAAAD5/y0AAAACAAEAAAD5/y4AAAACAAEAAAD5/y8AAAACAAEAAAD5/zAAAAACAAEAAAD5/zEAAAACAAEAAAD5/zIAAAACAAEAAAD5/zMAAAACAAEAAAD5/zQAAAACAAEAAAD5/zUAAAACAAEAAAD5/zYAAAACAAEAAAD5/zcAAAACAAEAAAD5/zgAAAACAAEAAAD6//T/AAACAAEAAAD6//X/AAACAAEAAAD6//b/AAACAAEAAAD6//f/AAACAAEAAAD6//j/AAACAAEAAAD6//n/AAACAAEAAAD6//r/AAACAAEAAAD6//v/AAACAAEAAAD6//z/AAACAAEAAAD6//3/AAACAAEAAAD6//7/AAACAAEAAAD6////AAACAAEAAAD6/wAAAAACAAEAAAD6/wEAAAACAAEAAAD6/wIAAAACAAEAAAD6/wMAAAACAAEAAAD6/wQAAAACAAEAAAD6/wUAAAACAAEAAAD6/wgAAAACAAEAAAD6/wkAAAACAAEAAAD6/woAAAACAAEAAAD6/wsAAAACAAEAAAD6/wwAAAACAAEAAAD6/w0AAAACAAEAAAD6/w4AAAACAAEAAAD6/w8AAAACAAEAAAD6/xAAAAACAAEAAAD6/xEAAAACAAEAAAD6/xIAAAACAAEAAAD6/xMAAAACAAEAAAD6/xQAAAACAAEAAAD6/xUAAAACAAEAAAD6/xYAAAACAAEAAAD6/xcAAAACAAEAAAD6/xgAAAACAAEAAAD6/xkAAAACAAEAAAD6/xoAAAACAAEAAAD6/xsAAAACAAEAAAD6/xwAAAACAAEAAAD6/x0AAAACAAEAAAD6/x4AAAACAAEAAAD6/x8AAAACAAEAAAD6/yAAAAACAAEAAAD6/yEAAAACAAEAAAD6/yIAAAACAAEAAAD6/yMAAAACAAEAAAD6/yQAAAACAAEAAAD6/yUAAAACAAEAAAD6/yYAAAACAAEAAAD6/ycAAAACAAEAAAD6/ygAAAACAAEAAAD6/ykAAAACAAEAAAD6/yoAAAACAAEAAAD6/ysAAAACAAEAAAD6/ywAAAACAAEAAAD6/y0AAAACAAEAAAD6/y4AAAACAAEAAAD6/y8AAAACAAEAAAD6/zAAAAACAAEAAAD6/zEAAAACAAEAAAD6/zIAAAACAAEAAAD6/zMAAAACAAEAAAD6/zQAAAACAAEAAAD6/zUAAAACAAEAAAD6/zYAAAACAAEAAAD6/zcAAAACAAEAAAD6/zgAAAACAAEAAAD7//T/AAACAAEAAAD7//X/AAACAAEAAAD7//b/AAACAAEAAAD7//f/AAACAAEAAAD7//j/AAACAAEAAAD7//n/AAACAAEAAAD7//r/AAACAAEAAAD7//v/AAACAAEAAAD7//z/AAACAAEAAAD7//3/AAACAAEAAAD7//7/AAACAAEAAAD7////AAACAAEAAAD7/wAAAAACAAEAAAD7/wEAAAACAAEAAAD7/wIAAAACAAEAAAD7/wMAAAACAAEAAAD7/wQAAAACAAEAAAD7/wUAAAACAAEAAAD7/wYAAAACAAEAAAD7/wcAAAACAAEAAAD7/wkAAAACAAEAAAD7/woAAAACAAEAAAD7/wsAAAACAAEAAAD7/wwAAAACAAEAAAD7/w0AAAACAAEAAAD7/w4AAAACAAEAAAD7/w8AAAACAAEAAAD7/xAAAAACAAEAAAD7/xEAAAACAAEAAAD7/xIAAAACAAEAAAD7/xMAAAACAAEAAAD7/xQAAAACAAEAAAD7/xUAAAACAAEAAAD7/xYAAAACAAEAAAD7/xcAAAACAAEAAAD7/xgAAAACAAEAAAD7/xkAAAACAAEAAAD7/xoAAAACAAEAAAD7/xsAAAACAAEAAAD7/xwAAAACAAEAAAD7/x0AAAACAAEAAAD7/x4AAAACAAEAAAD7/x8AAAACAAEAAAD7/yAAAAACAAEAAAD7/yEAAAACAAEAAAD7/yIAAAACAAEAAAD7/yMAAAACAAEAAAD7/yQAAAACAAEAAAD7/yUAAAACAAEAAAD7/yYAAAACAAEAAAD7/ycAAAACAAEAAAD7/ygAAAACAAEAAAD7/ykAAAACAAEAAAD7/yoAAAACAAEAAAD7/ysAAAACAAEAAAD7/ywAAAACAAEAAAD7/y0AAAACAAEAAAD7/y4AAAACAAEAAAD7/y8AAAACAAEAAAD7/zAAAAACAAEAAAD7/zEAAAACAAEAAAD7/zIAAAACAAEAAAD7/zMAAAACAAEAAAD7/zQAAAACAAEAAAD7/zUAAAACAAEAAAD7/zYAAAACAAEAAAD7/zcAAAACAAEAAAD7/zgAAAACAAEAAAD8//T/AAACAAEAAAD8//X/AAACAAEAAAD8//b/AAACAAEAAAD8//f/AAACAAEAAAD8//j/AAACAAEAAAD8//n/AAACAAEAAAD8//r/AAACAAEAAAD8//v/AAACAAEAAAD8//z/AAACAAEAAAD8//3/AAACAAEAAAD8//7/AAACAAEAAAD8////AAACAAEAAAD8/wAAAAACAAEAAAD8/wEAAAACAAEAAAD8/wIAAAACAAEAAAD8/wMAAAACAAEAAAD8/wQAAAACAAEAAAD8/wUAAAACAAEAAAD8/wYAAAACAAEAAAD8/wcAAAACAAEAAAD8/wgAAAACAAEAAAD8/woAAAACAAEAAAD8/wsAAAACAAEAAAD8/wwAAAACAAEAAAD8/w0AAAACAAEAAAD8/w4AAAACAAEAAAD8/w8AAAACAAEAAAD8/xAAAAACAAEAAAD8/xEAAAACAAEAAAD8/xIAAAACAAEAAAD8/xMAAAACAAEAAAD8/xQAAAACAAEAAAD8/xUAAAACAAEAAAD8/xYAAAACAAEAAAD8/xcAAAACAAEAAAD8/xgAAAACAAEAAAD8/xkAAAACAAEAAAD8/xoAAAACAAEAAAD8/xsAAAACAAEAAAD8/xwAAAACAAEAAAD8/x0AAAACAAEAAAD8/x4AAAACAAEAAAD8/x8AAAACAAEAAAD8/yAAAAACAAEAAAD8/yEAAAACAAEAAAD8/yIAAAACAAEAAAD8/yMAAAACAAEAAAD8/yQAAAACAAEAAAD8/yUAAAACAAEAAAD8/yYAAAACAAEAAAD8/ycAAAACAAEAAAD8/ygAAAACAAEAAAD8/ykAAAACAAEAAAD8/yoAAAACAAEAAAD8/ysAAAACAAEAAAD8/ywAAAACAAEAAAD8/y0AAAACAAEAAAD8/y4AAAACAAEAAAD8/y8AAAACAAEAAAD8/zAAAAACAAEAAAD8/zEAAAACAAEAAAD8/zIAAAACAAEAAAD8/zMAAAACAAEAAAD8/zQAAAACAAEAAAD8/zUAAAACAAEAAAD8/zYAAAACAAEAAAD8/zcAAAACAAEAAAD8/zgAAAACAAEAAAD9//T/AAACAAEAAAD9//X/AAACAAEAAAD9//b/AAACAAEAAAD9//f/AAACAAEAAAD9//j/AAACAAEAAAD9//n/AAACAAEAAAD9//r/AAACAAEAAAD9//v/AAACAAEAAAD9//z/AAACAAEAAAD9//3/AAACAAEAAAD9//7/AAACAAEAAAD9////AAACAAEAAAD9/wAAAAACAAEAAAD9/wEAAAACAAEAAAD9/wIAAAACAAEAAAD9/wMAAAACAAEAAAD9/wQAAAACAAEAAAD9/wUAAAACAAEAAAD9/wYAAAACAAEAAAD9/wcAAAACAAEAAAD9/wgAAAACAAEAAAD9/wkAAAACAAEAAAD9/wsAAAACAAEAAAD9/wwAAAACAAEAAAD9/w0AAAACAAEAAAD9/w4AAAACAAEAAAD9/w8AAAACAAEAAAD9/xAAAAACAAEAAAD9/xEAAAACAAEAAAD9/xIAAAACAAEAAAD9/xMAAAACAAEAAAD9/xQAAAACAAEAAAD9/xUAAAACAAEAAAD9/xYAAAACAAEAAAD9/xcAAAACAAEAAAD9/xgAAAACAAEAAAD9/xkAAAACAAEAAAD9/xoAAAACAAEAAAD9/xsAAAACAAEAAAD9/xwAAAACAAEAAAD9/x0AAAACAAEAAAD9/x4AAAACAAEAAAD9/x8AAAACAAEAAAD9/yAAAAACAAEAAAD9/yEAAAACAAEAAAD9/yIAAAACAAEAAAD9/yMAAAACAAEAAAD9/yQAAAACAAEAAAD9/yUAAAACAAEAAAD9/yYAAAACAAEAAAD9/ycAAAACAAEAAAD9/ygAAAACAAEAAAD9/ykAAAACAAEAAAD9/yoAAAACAAEAAAD9/ysAAAACAAEAAAD9/ywAAAACAAEAAAD9/y0AAAACAAEAAAD9/y4AAAACAAEAAAD9/y8AAAACAAEAAAD9/zAAAAACAAEAAAD9/zEAAAACAAEAAAD9/zIAAAACAAEAAAD9/zMAAAACAAEAAAD9/zQAAAACAAEAAAD9/zUAAAACAAEAAAD9/zYAAAACAAEAAAD9/zcAAAACAAEAAAD9/zgAAAACAAEAAAD+//T/AAACAAEAAAD+//X/AAACAAEAAAD+//b/AAACAAEAAAD+//f/AAACAAEAAAD+//j/AAACAAEAAAD+//n/AAACAAEAAAD+//r/AAACAAEAAAD+//v/AAACAAEAAAD+//z/AAACAAEAAAD+//3/AAACAAEAAAD+//7/AAACAAEAAAD+////AAACAAEAAAD+/wAAAAACAAEAAAD+/wEAAAACAAEAAAD+/wIAAAACAAEAAAD+/wMAAAACAAEAAAD+/wQAAAACAAEAAAD+/wUAAAACAAEAAAD+/wYAAAACAAEAAAD+/wcAAAACAAEAAAD+/wgAAAACAAEAAAD+/wkAAAACAAEAAAD+/woAAAACAAEAAAD+/w0AAAACAAEAAAD+/w4AAAACAAEAAAD+/w8AAAACAAEAAAD+/xAAAAACAAEAAAD+/xEAAAACAAEAAAD+/xIAAAACAAEAAAD+/xMAAAACAAEAAAD+/xQAAAACAAEAAAD+/xUAAAACAAEAAAD+/xYAAAACAAEAAAD+/xcAAAACAAEAAAD+/xgAAAACAAEAAAD+/xkAAAACAAEAAAD+/xoAAAACAAEAAAD+/xsAAAACAAEAAAD+/xwAAAACAAEAAAD+/x0AAAACAAEAAAD+/x4AAAACAAEAAAD+/x8AAAACAAEAAAD+/yAAAAACAAEAAAD+/yEAAAACAAEAAAD+/yIAAAACAAEAAAD+/yMAAAACAAEAAAD+/yQAAAACAAEAAAD+/yUAAAACAAEAAAD+/yYAAAACAAEAAAD+/ycAAAACAAEAAAD+/ygAAAACAAEAAAD+/ykAAAACAAEAAAD+/yoAAAACAAEAAAD+/ysAAAACAAEAAAD+/ywAAAACAAEAAAD+/y0AAAACAAEAAAD+/y4AAAACAAEAAAD+/y8AAAACAAEAAAD+/zAAAAACAAEAAAD+/zEAAAACAAEAAAD+/zIAAAACAAEAAAD+/zMAAAACAAEAAAD+/zQAAAACAAEAAAD+/zUAAAACAAEAAAD+/zYAAAACAAEAAAD+/zcAAAACAAEAAAD+/zgAAAACAAEAAAD///T/AAACAAEAAAD///X/AAACAAEAAAD///b/AAACAAEAAAD///f/AAACAAEAAAD///j/AAACAAEAAAD///n/AAACAAEAAAD///r/AAACAAEAAAD///v/AAACAAEAAAD///z/AAACAAEAAAD///3/AAACAAEAAAD///7/AAACAAEAAAD/////AAACAAEAAAD//wAAAAACAAEAAAD//wEAAAACAAEAAAD//wIAAAACAAEAAAD//wMAAAACAAEAAAD//wQAAAACAAEAAAD//wUAAAACAAEAAAD//wYAAAACAAEAAAD//wcAAAACAAEAAAD//wgAAAACAAEAAAD//wkAAAACAAEAAAD//woAAAACAAEAAAD//wsAAAACAAEAAAD//wwAAAACAAEAAAD//w4AAAACAAEAAAD//w8AAAACAAEAAAD//xAAAAACAAEAAAD//xEAAAACAAEAAAD//xIAAAACAAEAAAD//xMAAAACAAEAAAD//xQAAAACAAEAAAD//xUAAAACAAEAAAD//xYAAAACAAEAAAD//xcAAAACAAEAAAD//xgAAAACAAEAAAD//xkAAAACAAEAAAD//xoAAAACAAEAAAD//xsAAAACAAEAAAD//xwAAAACAAEAAAD//x0AAAACAAEAAAD//x4AAAACAAEAAAD//x8AAAACAAEAAAD//yAAAAACAAEAAAD//yEAAAACAAEAAAD//yIAAAACAAEAAAD//yMAAAACAAEAAAD//yQAAAACAAEAAAD//yUAAAACAAEAAAD//yYAAAACAAEAAAD//ycAAAACAAEAAAD//ygAAAACAAEAAAD//ykAAAACAAEAAAD//yoAAAACAAEAAAD//ysAAAACAAEAAAD//ywAAAACAAEAAAD//y0AAAACAAEAAAD//y4AAAACAAEAAAD//y8AAAACAAEAAAD//zAAAAACAAEAAAD//zEAAAACAAEAAAD//zIAAAACAAEAAAD//zMAAAACAAEAAAD//zQAAAACAAEAAAD//zUAAAACAAEAAAD//zYAAAACAAEAAAD//zcAAAACAAEAAAD//zgAAAACAAEAAAAAAPT/AAACAAEAAAAAAPX/AAACAAEAAAAAAPb/AAACAAEAAAAAAPf/AAACAAEAAAAAAPj/AAACAAEAAAAAAPn/AAACAAEAAAAAAPr/AAACAAEAAAAAAPv/AAACAAEAAAAAAPz/AAACAAEAAAAAAP3/AAACAAEAAAAAAP7/AAACAAEAAAAAAP//AAACAAEAAAAAACkAAAACAAEAAAAAACoAAAACAAEAAAAAACsAAAACAAEAAAAAACwAAAACAAEAAAAAAC0AAAACAAEAAAAAAC4AAAACAAEAAAAAAC8AAAACAAEAAAAAADAAAAACAAEAAAAAADEAAAACAAEAAAAAADIAAAACAAEAAAAAADMAAAACAAEAAAAAADQAAAACAAEAAAAAADUAAAACAAEAAAAAADYAAAACAAEAAAAAADcAAAACAAEAAAAAADgAAAACAAEAAAABAPT/AAACAAEAAAABAPX/AAACAAEAAAABAPb/AAACAAEAAAABAPf/AAACAAEAAAABAPj/AAACAAEAAAABAPn/AAACAAEAAAABAPr/AAACAAEAAAABAPv/AAACAAEAAAABAPz/AAACAAEAAAABAP3/AAACAAEAAAABAP7/AAACAAEAAAABAP//AAACAAEAAAABACkAAAACAAEAAAABACoAAAACAAEAAAABACsAAAACAAEAAAABACwAAAACAAEAAAABAC0AAAACAAEAAAABAC4AAAACAAEAAAABAC8AAAACAAEAAAABADAAAAACAAEAAAABADEAAAACAAEAAAABADIAAAACAAEAAAABADMAAAACAAEAAAABADQAAAACAAEAAAABADUAAAACAAEAAAABADYAAAACAAEAAAABADcAAAACAAEAAAABADgAAAACAAEAAAACAPT/AAACAAEAAAACAPX/AAACAAEAAAACAPb/AAACAAEAAAACAPf/AAACAAEAAAACAPj/AAACAAEAAAACAPn/AAACAAEAAAACAPr/AAACAAEAAAACAPv/AAACAAEAAAACAPz/AAACAAEAAAACAP3/AAACAAEAAAACAP7/AAACAAEAAAACAP//AAACAAEAAAACACkAAAACAAEAAAACACoAAAACAAEAAAACACsAAAACAAEAAAACACwAAAACAAEAAAACAC0AAAACAAEAAAACAC4AAAACAAEAAAACAC8AAAACAAEAAAACADAAAAACAAEAAAACADEAAAACAAEAAAACADIAAAACAAEAAAACADMAAAACAAEAAAACADQAAAACAAEAAAACADUAAAACAAEAAAACADYAAAACAAEAAAACADcAAAACAAEAAAACADgAAAACAAEAAAADAPT/AAACAAEAAAADAPX/AAACAAEAAAADAPb/AAACAAEAAAADAPf/AAACAAEAAAADAPj/AAACAAEAAAADAPn/AAACAAEAAAADAPr/AAACAAEAAAADAPv/AAACAAEAAAADAPz/AAACAAEAAAADAP3/AAACAAEAAAADAP7/AAACAAEAAAADAP//AAACAAEAAAADACkAAAACAAEAAAADACoAAAACAAEAAAADACsAAAACAAEAAAADACwAAAACAAEAAAADAC0AAAACAAEAAAADAC4AAAACAAEAAAADAC8AAAACAAEAAAADADAAAAACAAEAAAADADEAAAACAAEAAAADADIAAAACAAEAAAADADMAAAACAAEAAAADADQAAAACAAEAAAADADUAAAACAAEAAAADADYAAAACAAEAAAADADcAAAACAAEAAAADADgAAAACAAEAAAAEAPT/AAACAAEAAAAEAPX/AAACAAEAAAAEAPb/AAACAAEAAAAEAPf/AAACAAEAAAAEAPj/AAACAAEAAAAEAPn/AAACAAEAAAAEAPr/AAACAAEAAAAEAPv/AAACAAEAAAAEAPz/AAACAAEAAAAEAP3/AAACAAEAAAAEAP7/AAACAAEAAAAEAP//AAACAAEAAAAEACkAAAACAAEAAAAEACoAAAACAAEAAAAEACsAAAACAAEAAAAEACwAAAACAAEAAAAEAC0AAAACAAEAAAAEAC4AAAACAAEAAAAEAC8AAAACAAEAAAAEADAAAAACAAEAAAAEADEAAAACAAEAAAAEADIAAAACAAEAAAAEADMAAAACAAEAAAAEADQAAAACAAEAAAAEADUAAAACAAEAAAAEADYAAAACAAEAAAAEADcAAAACAAEAAAAEADgAAAACAAEAAAAFAPT/AAACAAEAAAAFAPX/AAACAAEAAAAFAPb/AAACAAEAAAAFAPf/AAACAAEAAAAFAPj/AAACAAEAAAAFAPn/AAACAAEAAAAFAPr/AAACAAEAAAAFAPv/AAACAAEAAAAFAPz/AAACAAEAAAAFAP3/AAACAAEAAAAFAP7/AAACAAEAAAAFAP//AAACAAEAAAAFACkAAAACAAEAAAAFACoAAAACAAEAAAAFACsAAAACAAEAAAAFACwAAAACAAEAAAAFAC0AAAACAAEAAAAFAC4AAAACAAEAAAAFAC8AAAACAAEAAAAFADAAAAACAAEAAAAFADEAAAACAAEAAAAFADIAAAACAAEAAAAFADMAAAACAAEAAAAFADQAAAACAAEAAAAFADUAAAACAAEAAAAFADYAAAACAAEAAAAFADcAAAACAAEAAAAFADgAAAACAAEAAAAGAPT/AAACAAEAAAAGAPX/AAACAAEAAAAGAPb/AAACAAEAAAAGAPf/AAACAAEAAAAGAPj/AAACAAEAAAAGAPn/AAACAAEAAAAGAPr/AAACAAEAAAAGAPv/AAACAAEAAAAGAPz/AAACAAEAAAAGAP3/AAACAAEAAAAGAP7/AAACAAEAAAAGAP//AAACAAEAAAAGACkAAAACAAEAAAAGACoAAAACAAEAAAAGACsAAAACAAEAAAAGACwAAAACAAEAAAAGAC0AAAACAAEAAAAGAC4AAAACAAEAAAAGAC8AAAACAAEAAAAGADAAAAACAAEAAAAGADEAAAACAAEAAAAGADIAAAACAAEAAAAGADMAAAACAAEAAAAGADQAAAACAAEAAAAGADUAAAACAAEAAAAGADYAAAACAAEAAAAGADcAAAACAAEAAAAGADgAAAACAAEAAAAHAPT/AAACAAEAAAAHAPX/AAACAAEAAAAHAPb/AAACAAEAAAAHAPf/AAACAAEAAAAHAPj/AAACAAEAAAAHAPn/AAACAAEAAAAHAPr/AAACAAEAAAAHAPv/AAACAAEAAAAHAPz/AAACAAEAAAAHAP3/AAACAAEAAAAHAP7/AAACAAEAAAAHAP//AAACAAEAAAAHACkAAAACAAEAAAAHACoAAAACAAEAAAAHACsAAAACAAEAAAAHACwAAAACAAEAAAAHAC0AAAACAAEAAAAHAC4AAAACAAEAAAAHAC8AAAACAAEAAAAHADAAAAACAAEAAAAHADEAAAACAAEAAAAHADIAAAACAAEAAAAHADMAAAACAAEAAAAHADQAAAACAAEAAAAHADUAAAACAAEAAAAHADYAAAACAAEAAAAHADcAAAACAAEAAAAHADgAAAACAAEAAAAIACkAAAACAAEAAAAIACoAAAACAAEAAAAIACsAAAACAAEAAAAIACwAAAACAAEAAAAIAC0AAAACAAEAAAAIAC4AAAACAAEAAAAIAC8AAAACAAEAAAAIADAAAAACAAEAAAAIADEAAAACAAEAAAAIADIAAAACAAEAAAAIADMAAAACAAEAAAAIADQAAAACAAEAAAAIADUAAAACAAEAAAAIADYAAAACAAEAAAAIADcAAAACAAEAAAAIADgAAAACAAEAAAAJACkAAAACAAEAAAAJACoAAAACAAEAAAAJACsAAAACAAEAAAAJACwAAAACAAEAAAAJAC0AAAACAAEAAAAJAC4AAAACAAEAAAAJAC8AAAACAAEAAAAJADAAAAACAAEAAAAJADEAAAACAAEAAAAJADIAAAACAAEAAAAJADMAAAACAAEAAAAJADQAAAACAAEAAAAJADUAAAACAAEAAAAJADYAAAACAAEAAAAJADcAAAACAAEAAAAJADgAAAACAAEAAAAKACkAAAACAAEAAAAKACoAAAACAAEAAAAKACsAAAACAAEAAAAKACwAAAACAAEAAAAKAC0AAAACAAEAAAAKAC4AAAACAAEAAAAKAC8AAAACAAEAAAAKADAAAAACAAEAAAAKADEAAAACAAEAAAAKADIAAAACAAEAAAAKADMAAAACAAEAAAAKADQAAAACAAEAAAAKADUAAAACAAEAAAAKADYAAAACAAEAAAAKADcAAAACAAEAAAAKADgAAAACAAEAAAALACkAAAACAAEAAAALACoAAAACAAEAAAALACsAAAACAAEAAAALACwAAAACAAEAAAALAC0AAAACAAEAAAALAC4AAAACAAEAAAALAC8AAAACAAEAAAALADAAAAACAAEAAAALADEAAAACAAEAAAALADIAAAACAAEAAAALADMAAAACAAEAAAALADQAAAACAAEAAAALADUAAAACAAEAAAALADYAAAACAAEAAAALADcAAAACAAEAAAALADgAAAACAAEAAAAMACkAAAACAAEAAAAMACoAAAACAAEAAAAMACsAAAACAAEAAAAMACwAAAACAAEAAAAMAC0AAAACAAEAAAAMAC4AAAACAAEAAAAMAC8AAAACAAEAAAAMADAAAAACAAEAAAAMADEAAAACAAEAAAAMADIAAAACAAEAAAAMADMAAAACAAEAAAAMADQAAAACAAEAAAAMADUAAAACAAEAAAAMADYAAAACAAEAAAAMADcAAAACAAEAAAAMADgAAAACAAEAAAANACkAAAACAAEAAAANACoAAAACAAEAAAANACsAAAACAAEAAAANACwAAAACAAEAAAANAC0AAAACAAEAAAANAC4AAAACAAEAAAANAC8AAAACAAEAAAANADAAAAACAAEAAAANADEAAAACAAEAAAANADIAAAACAAEAAAANADMAAAACAAEAAAANADQAAAACAAEAAAANADUAAAACAAEAAAANADYAAAACAAEAAAANADcAAAACAAEAAAANADgAAAACAAEAAAAOACkAAAACAAEAAAAOACoAAAACAAEAAAAOACsAAAACAAEAAAAOACwAAAACAAEAAAAOAC0AAAACAAEAAAAOAC4AAAACAAEAAAAOAC8AAAACAAEAAAAOADAAAAACAAEAAAAOADEAAAACAAEAAAAOADIAAAACAAEAAAAOADMAAAACAAEAAAAOADQAAAACAAEAAAAOADUAAAACAAEAAAAOADYAAAACAAEAAAAOADcAAAACAAEAAAAOADgAAAACAAEAAAAPACkAAAACAAEAAAAPACoAAAACAAEAAAAPACsAAAACAAEAAAAPACwAAAACAAEAAAAPAC0AAAACAAEAAAAPAC4AAAACAAEAAAAPAC8AAAACAAEAAAAPADAAAAACAAEAAAAPADEAAAACAAEAAAAPADIAAAACAAEAAAAPADMAAAACAAEAAAAPADQAAAACAAEAAAAPADUAAAACAAEAAAAPADYAAAACAAEAAAAPADcAAAACAAEAAAAPADgAAAACAAEAAAAQACkAAAACAAEAAAAQACoAAAACAAEAAAAQACsAAAACAAEAAAAQACwAAAACAAEAAAAQAC0AAAACAAEAAAAQAC4AAAACAAEAAAAQAC8AAAACAAEAAAAQADAAAAACAAEAAAAQADEAAAACAAEAAAAQADIAAAACAAEAAAAQADMAAAACAAEAAAAQADQAAAACAAEAAAAQADUAAAACAAEAAAAQADYAAAACAAEAAAAQADcAAAACAAEAAAAQADgAAAACAAEAAAARACkAAAACAAEAAAARACoAAAACAAEAAAARACsAAAACAAEAAAARACwAAAACAAEAAAARAC0AAAACAAEAAAARAC4AAAACAAEAAAARAC8AAAACAAEAAAARADAAAAACAAEAAAARADEAAAACAAEAAAARADIAAAACAAEAAAARADMAAAACAAEAAAARADQAAAACAAEAAAARADUAAAACAAEAAAARADYAAAACAAEAAAARADcAAAACAAEAAAARADgAAAACAAEAAAASACkAAAACAAEAAAASACoAAAACAAEAAAASACsAAAACAAEAAAASACwAAAACAAEAAAASAC0AAAACAAEAAAASAC4AAAACAAEAAAASAC8AAAACAAEAAAASADAAAAACAAEAAAASADEAAAACAAEAAAASADIAAAACAAEAAAASADMAAAACAAEAAAASADQAAAACAAEAAAASADUAAAACAAEAAAASADYAAAACAAEAAAASADcAAAACAAEAAAASADgAAAACAAEAAAATACkAAAACAAEAAAATACoAAAACAAEAAAATACsAAAACAAEAAAATACwAAAACAAEAAAATAC0AAAACAAEAAAATAC4AAAACAAEAAAATAC8AAAACAAEAAAATADAAAAACAAEAAAATADEAAAACAAEAAAATADIAAAACAAEAAAATADMAAAACAAEAAAATADQAAAACAAEAAAATADUAAAACAAEAAAATADYAAAACAAEAAAATADcAAAACAAEAAAATADgAAAACAAEAAAAUACkAAAACAAEAAAAUACoAAAACAAEAAAAUACsAAAACAAEAAAAUACwAAAACAAEAAAAUAC0AAAACAAEAAAAUAC4AAAACAAEAAAAUAC8AAAACAAEAAAAUADAAAAACAAEAAAAUADEAAAACAAEAAAAUADIAAAACAAEAAAAUADMAAAACAAEAAAAUADQAAAACAAEAAAAUADUAAAACAAEAAAAUADYAAAACAAEAAAAUADcAAAACAAEAAAAUADgAAAACAAEAAAAVACkAAAACAAEAAAAVACoAAAACAAEAAAAVACsAAAACAAEAAAAVACwAAAACAAEAAAAVAC0AAAACAAEAAAAVAC4AAAACAAEAAAAVAC8AAAACAAEAAAAVADAAAAACAAEAAAAVADEAAAACAAEAAAAVADIAAAACAAEAAAAVADMAAAACAAEAAAAVADQAAAACAAEAAAAVADUAAAACAAEAAAAVADYAAAACAAEAAAAVADcAAAACAAEAAAAVADgAAAACAAEAAAAWACkAAAACAAEAAAAWACoAAAACAAEAAAAWACsAAAACAAEAAAAWACwAAAACAAEAAAAWAC0AAAACAAEAAAAWAC4AAAACAAEAAAAWAC8AAAACAAEAAAAWADAAAAACAAEAAAAWADEAAAACAAEAAAAWADIAAAACAAEAAAAWADMAAAACAAEAAAAWADQAAAACAAEAAAAWADUAAAACAAEAAAAWADYAAAACAAEAAAAWADcAAAACAAEAAAAWADgAAAACAAEAAAAXACkAAAACAAEAAAAXACoAAAACAAEAAAAXACsAAAACAAEAAAAXACwAAAACAAEAAAAXAC0AAAACAAEAAAAXAC4AAAACAAEAAAAXAC8AAAACAAEAAAAXADAAAAACAAEAAAAXADEAAAACAAEAAAAXADIAAAACAAEAAAAXADMAAAACAAEAAAAXADQAAAACAAEAAAAXADUAAAACAAEAAAAXADYAAAACAAEAAAAXADcAAAACAAEAAAAXADgAAAACAAEAAAAYACkAAAACAAEAAAAYACoAAAACAAEAAAAYACsAAAACAAEAAAAYACwAAAACAAEAAAAYAC0AAAACAAEAAAAYAC4AAAACAAEAAAAYAC8AAAACAAEAAAAYADAAAAACAAEAAAAYADEAAAACAAEAAAAYADIAAAACAAEAAAAYADMAAAACAAEAAAAYADQAAAACAAEAAAAYADUAAAACAAEAAAAYADYAAAACAAEAAAAYADcAAAACAAEAAAAYADgAAAACAAEAAAAZACkAAAACAAEAAAAZACoAAAACAAEAAAAZACsAAAACAAEAAAAZACwAAAACAAEAAAAZAC0AAAACAAEAAAAZAC4AAAACAAEAAAAZAC8AAAACAAEAAAAZADAAAAACAAEAAAAZADEAAAACAAEAAAAZADIAAAACAAEAAAAZADMAAAACAAEAAAAZADQAAAACAAEAAAAZADUAAAACAAEAAAAZADYAAAACAAEAAAAZADcAAAACAAEAAAAZADgAAAACAAEAAAAaACkAAAACAAEAAAAaACoAAAACAAEAAAAaACsAAAACAAEAAAAaACwAAAACAAEAAAAaAC0AAAACAAEAAAAaAC4AAAACAAEAAAAaAC8AAAACAAEAAAAaADAAAAACAAEAAAAaADEAAAACAAEAAAAaADIAAAACAAEAAAAaADMAAAACAAEAAAAaADQAAAACAAEAAAAaADUAAAACAAEAAAAaADYAAAACAAEAAAAaADcAAAACAAEAAAAaADgAAAACAAEAAAAbACkAAAACAAEAAAAbACoAAAACAAEAAAAbACsAAAACAAEAAAAbACwAAAACAAEAAAAbAC0AAAACAAEAAAAbAC4AAAACAAEAAAAbAC8AAAACAAEAAAAbADAAAAACAAEAAAAbADEAAAACAAEAAAAbADIAAAACAAEAAAAbADMAAAACAAEAAAAbADQAAAACAAEAAAAbADUAAAACAAEAAAAbADYAAAACAAEAAAAbADcAAAACAAEAAAAbADgAAAACAAEAAAAcACkAAAACAAEAAAAcACoAAAACAAEAAAAcACsAAAACAAEAAAAcACwAAAACAAEAAAAcAC0AAAACAAEAAAAcAC4AAAACAAEAAAAcAC8AAAACAAEAAAAcADAAAAACAAEAAAAcADEAAAACAAEAAAAcADIAAAACAAEAAAAcADMAAAACAAEAAAAcADQAAAACAAEAAAAcADUAAAACAAEAAAAcADYAAAACAAEAAAAcADcAAAACAAEAAAAcADgAAAACAAEAAAAdACkAAAACAAEAAAAdACoAAAACAAEAAAAdACsAAAACAAEAAAAdACwAAAACAAEAAAAdAC0AAAACAAEAAAAdAC4AAAACAAEAAAAdAC8AAAACAAEAAAAdADAAAAACAAEAAAAdADEAAAACAAEAAAAdADIAAAACAAEAAAAdADMAAAACAAEAAAAdADQAAAACAAEAAAAdADUAAAACAAEAAAAdADYAAAACAAEAAAAdADcAAAACAAEAAAAdADgAAAACAAEAAAAeACkAAAACAAEAAAAeACoAAAACAAEAAAAeACsAAAACAAEAAAAeACwAAAACAAEAAAAeAC0AAAACAAEAAAAeAC4AAAACAAEAAAAeAC8AAAACAAEAAAAeADAAAAACAAEAAAAeADEAAAACAAEAAAAeADIAAAACAAEAAAAeADMAAAACAAEAAAAeADQAAAACAAEAAAAeADUAAAACAAEAAAAeADYAAAACAAEAAAAeADcAAAACAAEAAAAeADgAAAACAAEAAAAfACkAAAACAAEAAAAfACoAAAACAAEAAAAfACsAAAACAAEAAAAfACwAAAACAAEAAAAfAC0AAAACAAEAAAAfAC4AAAACAAEAAAAfAC8AAAACAAEAAAAfADAAAAACAAEAAAAfADEAAAACAAEAAAAfADIAAAACAAEAAAAfADMAAAACAAEAAAAfADQAAAACAAEAAAAfADUAAAACAAEAAAAfADYAAAACAAEAAAAfADcAAAACAAEAAAAfADgAAAACAAEAAAAgACkAAAACAAEAAAAgACoAAAACAAEAAAAgACsAAAACAAEAAAAgACwAAAACAAEAAAAgAC0AAAACAAEAAAAgAC4AAAACAAEAAAAgAC8AAAACAAEAAAAgADAAAAACAAEAAAAgADEAAAACAAEAAAAgADIAAAACAAEAAAAgADMAAAACAAEAAAAgADQAAAACAAEAAAAgADUAAAACAAEAAAAgADYAAAACAAEAAAAgADcAAAACAAEAAAAgADgAAAACAAEAAAAhACkAAAACAAEAAAAhACoAAAACAAEAAAAhACsAAAACAAEAAAAhACwAAAACAAEAAAAhAC0AAAACAAEAAAAhAC4AAAACAAEAAAAhAC8AAAACAAEAAAAhADAAAAACAAEAAAAhADEAAAACAAEAAAAhADIAAAACAAEAAAAhADMAAAACAAEAAAAhADQAAAACAAEAAAAhADUAAAACAAEAAAAhADYAAAACAAEAAAAhADcAAAACAAEAAAAhADgAAAACAAEAAAAiACkAAAACAAEAAAAiACoAAAACAAEAAAAiACsAAAACAAEAAAAiACwAAAACAAEAAAAiAC0AAAACAAEAAAAiAC4AAAACAAEAAAAiAC8AAAACAAEAAAAiADAAAAACAAEAAAAiADEAAAACAAEAAAAiADIAAAACAAEAAAAiADMAAAACAAEAAAAiADQAAAACAAEAAAAiADUAAAACAAEAAAAiADYAAAACAAEAAAAiADcAAAACAAEAAAAiADgAAAACAAEAAAAjACkAAAACAAEAAAAjACoAAAACAAEAAAAjACsAAAACAAEAAAAjACwAAAACAAEAAAAjAC0AAAACAAEAAAAjAC4AAAACAAEAAAAjAC8AAAACAAEAAAAjADAAAAACAAEAAAAjADEAAAACAAEAAAAjADIAAAACAAEAAAAjADMAAAACAAEAAAAjADQAAAACAAEAAAAjADUAAAACAAEAAAAjADYAAAACAAEAAAAjADcAAAACAAEAAAAjADgAAAACAAEAAAAkACkAAAACAAEAAAAkACoAAAACAAEAAAAkACsAAAACAAEAAAAkACwAAAACAAEAAAAkAC0AAAACAAEAAAAkAC4AAAACAAEAAAAkAC8AAAACAAEAAAAkADAAAAACAAEAAAAkADEAAAACAAEAAAAkADIAAAACAAEAAAAkADMAAAACAAEAAAAkADQAAAACAAEAAAAkADUAAAACAAEAAAAkADYAAAACAAEAAAAkADcAAAACAAEAAAAkADgAAAACAAEAAAAlACkAAAACAAEAAAAlACoAAAACAAEAAAAlACsAAAACAAEAAAAlACwAAAACAAEAAAAlAC0AAAACAAEAAAAlAC4AAAACAAEAAAAlAC8AAAACAAEAAAAlADAAAAACAAEAAAAlADEAAAACAAEAAAAlADIAAAACAAEAAAAlADMAAAACAAEAAAAlADQAAAACAAEAAAAlADUAAAACAAEAAAAlADYAAAACAAEAAAAlADcAAAACAAEAAAAlADgAAAACAAEAAAAmACkAAAACAAEAAAAmACoAAAACAAEAAAAmACsAAAACAAEAAAAmACwAAAACAAEAAAAmAC0AAAACAAEAAAAmAC4AAAACAAEAAAAmAC8AAAACAAEAAAAmADAAAAACAAEAAAAmADEAAAACAAEAAAAmADIAAAACAAEAAAAmADMAAAACAAEAAAAmADQAAAACAAEAAAAmADUAAAACAAEAAAAmADYAAAACAAEAAAAmADcAAAACAAEAAAAmADgAAAACAAEAAAAnACkAAAACAAEAAAAnACoAAAACAAEAAAAnACsAAAACAAEAAAAnACwAAAACAAEAAAAnAC0AAAACAAEAAAAnAC4AAAACAAEAAAAnAC8AAAACAAEAAAAnADAAAAACAAEAAAAnADEAAAACAAEAAAAnADIAAAACAAEAAAAnADMAAAACAAEAAAAnADQAAAACAAEAAAAnADUAAAACAAEAAAAnADYAAAACAAEAAAAnADcAAAACAAEAAAAnADgAAAACAAEAAAAoACkAAAACAAEAAAAoACoAAAACAAEAAAAoACsAAAACAAEAAAAoACwAAAACAAEAAAAoAC0AAAACAAEAAAAoAC4AAAACAAEAAAAoAC8AAAACAAEAAAAoADAAAAACAAEAAAAoADEAAAACAAEAAAAoADIAAAACAAEAAAAoADMAAAACAAEAAAAoADQAAAACAAEAAAAoADUAAAACAAEAAAAoADYAAAACAAEAAAAoADcAAAACAAEAAAAoADgAAAACAAEAAAApACkAAAACAAEAAAApACoAAAACAAEAAAApACsAAAACAAEAAAApACwAAAACAAEAAAApAC0AAAACAAEAAAApAC4AAAACAAEAAAApAC8AAAACAAEAAAApADAAAAACAAEAAAApADEAAAACAAEAAAApADIAAAACAAEAAAApADMAAAACAAEAAAApADQAAAACAAEAAAApADUAAAACAAEAAAApADYAAAACAAEAAAApADcAAAACAAEAAAApADgAAAACAAEAAAAqACkAAAACAAEAAAAqACoAAAACAAEAAAAqACsAAAACAAEAAAAqACwAAAACAAEAAAAqAC0AAAACAAEAAAAqAC4AAAACAAEAAAAqAC8AAAACAAEAAAAqADAAAAACAAEAAAAqADEAAAACAAEAAAAqADIAAAACAAEAAAAqADMAAAACAAEAAAAqADQAAAACAAEAAAAqADUAAAACAAEAAAAqADYAAAACAAEAAAAqADcAAAACAAEAAAAqADgAAAACAAEAAAArACkAAAACAAEAAAArACoAAAACAAEAAAArACsAAAACAAEAAAArACwAAAACAAEAAAArAC0AAAACAAEAAAArAC4AAAACAAEAAAArAC8AAAACAAEAAAArADAAAAACAAEAAAArADEAAAACAAEAAAArADIAAAACAAEAAAArADMAAAACAAEAAAArADQAAAACAAEAAAArADUAAAACAAEAAAArADYAAAACAAEAAAArADcAAAACAAEAAAArADgAAAACAAEAAAAsACkAAAACAAEAAAAsACoAAAACAAEAAAAsACsAAAACAAEAAAAsACwAAAACAAEAAAAsAC0AAAACAAEAAAAsAC4AAAACAAEAAAAsAC8AAAACAAEAAAAsADAAAAACAAEAAAAsADEAAAACAAEAAAAsADIAAAACAAEAAAAsADMAAAACAAEAAAAsADQAAAACAAEAAAAsADUAAAACAAEAAAAsADYAAAACAAEAAAAsADcAAAACAAEAAAAsADgAAAACAAEAAAAtACkAAAACAAEAAAAtACoAAAACAAEAAAAtACsAAAACAAEAAAAtACwAAAACAAEAAAAtAC0AAAACAAEAAAAtAC4AAAACAAEAAAAtAC8AAAACAAEAAAAtADAAAAACAAEAAAAtADEAAAACAAEAAAAtADIAAAACAAEAAAAtADMAAAACAAEAAAAtADQAAAACAAEAAAAtADUAAAACAAEAAAAtADYAAAACAAEAAAAtADcAAAACAAEAAAAtADgAAAACAAEAAAAuACkAAAACAAEAAAAuACoAAAACAAEAAAAuACsAAAACAAEAAAAuACwAAAACAAEAAAAuAC0AAAACAAEAAAAuAC4AAAACAAEAAAAuAC8AAAACAAEAAAAuADAAAAACAAEAAAAuADEAAAACAAEAAAAuADIAAAACAAEAAAAuADMAAAACAAEAAAAuADQAAAACAAEAAAAuADUAAAACAAEAAAAuADYAAAACAAEAAAAuADcAAAACAAEAAAAuADgAAAACAAEAAAAvACkAAAACAAEAAAAvACoAAAACAAEAAAAvACsAAAACAAEAAAAvACwAAAACAAEAAAAvAC0AAAACAAEAAAAvAC4AAAACAAEAAAAvAC8AAAACAAEAAAAvADAAAAACAAEAAAAvADEAAAACAAEAAAAvADIAAAACAAEAAAAvADMAAAACAAEAAAAvADQAAAACAAEAAAAvADUAAAACAAEAAAAvADYAAAACAAEAAAAvADcAAAACAAEAAAAvADgAAAACAAEAAAAwACkAAAACAAEAAAAwACoAAAACAAEAAAAwACsAAAACAAEAAAAwACwAAAACAAEAAAAwAC0AAAACAAEAAAAwAC4AAAACAAEAAAAwAC8AAAACAAEAAAAwADAAAAACAAEAAAAwADEAAAACAAEAAAAwADIAAAACAAEAAAAwADMAAAACAAEAAAAwADQAAAACAAEAAAAwADUAAAACAAEAAAAwADYAAAACAAEAAAAwADcAAAACAAEAAAAwADgAAAACAAEAAAAxACkAAAACAAEAAAAxACoAAAACAAEAAAAxACsAAAACAAEAAAAxACwAAAACAAEAAAAxAC0AAAACAAEAAAAxAC4AAAACAAEAAAAxAC8AAAACAAEAAAAxADAAAAACAAEAAAAxADEAAAACAAEAAAAxADIAAAACAAEAAAAxADMAAAACAAEAAAAxADQAAAACAAEAAAAxADUAAAACAAEAAAAxADYAAAACAAEAAAAxADcAAAACAAEAAAAxADgAAAACAAEAAAAyACkAAAACAAEAAAAyACoAAAACAAEAAAAyACsAAAACAAEAAAAyACwAAAACAAEAAAAyAC0AAAACAAEAAAAyAC4AAAACAAEAAAAyAC8AAAACAAEAAAAyADAAAAACAAEAAAAyADEAAAACAAEAAAAyADIAAAACAAEAAAAyADMAAAACAAEAAAAyADQAAAACAAEAAAAyADUAAAACAAEAAAAyADYAAAACAAEAAAAyADcAAAACAAEAAAAyADgAAAACAAEAAAAzACkAAAACAAEAAAAzACoAAAACAAEAAAAzACsAAAACAAEAAAAzACwAAAACAAEAAAAzAC0AAAACAAEAAAAzAC4AAAACAAEAAAAzAC8AAAACAAEAAAAzADAAAAACAAEAAAAzADEAAAACAAEAAAAzADIAAAACAAEAAAAzADMAAAACAAEAAAAzADQAAAACAAEAAAAzADUAAAACAAEAAAAzADYAAAACAAEAAAAzADcAAAACAAEAAAAzADgAAAACAAEAAAA0ACkAAAACAAEAAAA0ACoAAAACAAEAAAA0ACsAAAACAAEAAAA0ACwAAAACAAEAAAA0AC0AAAACAAEAAAA0AC4AAAACAAEAAAA0AC8AAAACAAEAAAA0ADAAAAACAAEAAAA0ADEAAAACAAEAAAA0ADIAAAACAAEAAAA0ADMAAAACAAEAAAA0ADQAAAACAAEAAAA0ADUAAAACAAEAAAA0ADYAAAACAAEAAAA0ADcAAAACAAEAAAA0ADgAAAACAAEAAAA1ACkAAAACAAEAAAA1ACoAAAACAAEAAAA1ACsAAAACAAEAAAA1ACwAAAACAAEAAAA1AC0AAAACAAEAAAA1AC4AAAACAAEAAAA1AC8AAAACAAEAAAA1ADAAAAACAAEAAAA1ADEAAAACAAEAAAA1ADIAAAACAAEAAAA1ADMAAAACAAEAAAA1ADQAAAACAAEAAAA1ADUAAAACAAEAAAA1ADYAAAACAAEAAAA1ADcAAAACAAEAAAA1ADgAAAACAAEAAAA2ACkAAAACAAEAAAA2ACoAAAACAAEAAAA2ACsAAAACAAEAAAA2ACwAAAACAAEAAAA2AC0AAAACAAEAAAA2AC4AAAACAAEAAAA2AC8AAAACAAEAAAA2ADAAAAACAAEAAAA2ADEAAAACAAEAAAA2ADIAAAACAAEAAAA2ADMAAAACAAEAAAA2ADQAAAACAAEAAAA2ADUAAAACAAEAAAA2ADYAAAACAAEAAAA2ADcAAAACAAEAAAA2ADgAAAACAAEAAAA3ACkAAAACAAEAAAA3ACoAAAACAAEAAAA3ACsAAAACAAEAAAA3ACwAAAACAAEAAAA3AC0AAAACAAEAAAA3AC4AAAACAAEAAAA3AC8AAAACAAEAAAA3ADAAAAACAAEAAAA3ADEAAAACAAEAAAA3ADIAAAACAAEAAAA3ADMAAAACAAEAAAA3ADQAAAACAAEAAAA3ADUAAAACAAEAAAA3ADYAAAACAAEAAAA3ADcAAAACAAEAAAA3ADgAAAACAAEAAAA4ACkAAAACAAEAAAA4ACoAAAACAAEAAAA4ACsAAAACAAEAAAA4ACwAAAACAAEAAAA4AC0AAAACAAEAAAA4AC4AAAACAAEAAAA4AC8AAAACAAEAAAA4ADAAAAACAAEAAAA4ADEAAAACAAEAAAA4ADIAAAACAAEAAAA4ADMAAAACAAEAAAA4ADQAAAACAAEAAAA4ADUAAAACAAEAAAA4ADYAAAACAAEAAAA4ADcAAAACAAEAAAA4ADgAAAACAAEAAAA5ACkAAAACAAEAAAA5ACoAAAACAAEAAAA5ACsAAAACAAEAAAA5ACwAAAACAAEAAAA5AC0AAAACAAEAAAA5AC4AAAACAAEAAAA5AC8AAAACAAEAAAA5ADAAAAACAAEAAAA5ADEAAAACAAEAAAA5ADIAAAACAAEAAAA5ADMAAAACAAEAAAA5ADQAAAACAAEAAAA5ADUAAAACAAEAAAA5ADYAAAACAAEAAAA5ADcAAAACAAEAAAA5ADgAAAACAAEAAAA6ACkAAAACAAEAAAA6ACoAAAACAAEAAAA6ACsAAAACAAEAAAA6ACwAAAACAAEAAAA6AC0AAAACAAEAAAA6AC4AAAACAAEAAAA6AC8AAAACAAEAAAA6ADAAAAACAAEAAAA6ADEAAAACAAEAAAA6ADIAAAACAAEAAAA6ADMAAAACAAEAAAA6ADQAAAACAAEAAAA6ADUAAAACAAEAAAA6ADYAAAACAAEAAAA6ADcAAAACAAEAAAA6ADgAAAACAAEAAAA7ACkAAAACAAEAAAA7ACoAAAACAAEAAAA7ACsAAAACAAEAAAA7ACwAAAACAAEAAAA7AC0AAAACAAEAAAA7AC4AAAACAAEAAAA7AC8AAAACAAEAAAA7ADAAAAACAAEAAAA7ADEAAAACAAEAAAA7ADIAAAACAAEAAAA7ADMAAAACAAEAAAA7ADQAAAACAAEAAAA7ADUAAAACAAEAAAA7ADYAAAACAAEAAAA7ADcAAAACAAEAAAA7ADgAAAACAAEAAAA8ACkAAAACAAEAAAA8ACoAAAACAAEAAAA8ACsAAAACAAEAAAA8ACwAAAACAAEAAAA8AC0AAAACAAEAAAA8AC4AAAACAAEAAAA8AC8AAAACAAEAAAA8ADAAAAACAAEAAAA8ADEAAAACAAEAAAA8ADIAAAACAAEAAAA8ADMAAAACAAEAAAA8ADQAAAACAAEAAAA8ADUAAAACAAEAAAA8ADYAAAACAAEAAAA8ADcAAAACAAEAAAA8ADgAAAACAAEAAAA9ACkAAAACAAEAAAA9ACoAAAACAAEAAAA9ACsAAAACAAEAAAA9ACwAAAACAAEAAAA9AC0AAAACAAEAAAA9AC4AAAACAAEAAAA9AC8AAAACAAEAAAA9ADAAAAACAAEAAAA9ADEAAAACAAEAAAA9ADIAAAACAAEAAAA9ADMAAAACAAEAAAA9ADQAAAACAAEAAAA9ADUAAAACAAEAAAA9ADYAAAACAAEAAAA9ADcAAAACAAEAAAA9ADgAAAACAAEAAAA+ACkAAAACAAEAAAA+ACoAAAACAAEAAAA+ACsAAAACAAEAAAA+ACwAAAACAAEAAAA+AC0AAAACAAEAAAA+AC4AAAACAAEAAAA+AC8AAAACAAEAAAA+ADAAAAACAAEAAAA+ADEAAAACAAEAAAA+ADIAAAACAAEAAAA+ADMAAAACAAEAAAA+ADQAAAACAAEAAAA+ADUAAAACAAEAAAA+ADYAAAACAAEAAAA+ADcAAAACAAEAAAA+ADgAAAACAAEAAAA/ACkAAAACAAEAAAA/ACoAAAACAAEAAAA/ACsAAAACAAEAAAA/ACwAAAACAAEAAAA/AC0AAAACAAEAAAA/AC4AAAACAAEAAAA/AC8AAAACAAEAAAA/ADAAAAACAAEAAAA/ADEAAAACAAEAAAA/ADIAAAACAAEAAAA/ADMAAAACAAEAAAA/ADQAAAACAAEAAAA/ADUAAAACAAEAAAA/ADYAAAACAAEAAAA/ADcAAAACAAEAAAA/ADgAAAACAAEAAABAACkAAAACAAEAAABAACoAAAACAAEAAABAACsAAAACAAEAAABAACwAAAACAAEAAABAAC0AAAACAAEAAABAAC4AAAACAAEAAABAAC8AAAACAAEAAABAADAAAAACAAEAAABAADEAAAACAAEAAABAADIAAAACAAEAAABAADMAAAACAAEAAABAADQAAAACAAEAAABAADUAAAACAAEAAABAADYAAAACAAEAAABAADcAAAACAAEAAABAADgAAAACAAEAAABBACkAAAACAAEAAABBACoAAAACAAEAAABBACsAAAACAAEAAABBACwAAAACAAEAAABBAC0AAAACAAEAAABBAC4AAAACAAEAAABBAC8AAAACAAEAAABBADAAAAACAAEAAABBADEAAAACAAEAAABBADIAAAACAAEAAABBADMAAAACAAEAAABBADQAAAACAAEAAABBADUAAAACAAEAAABBADYAAAACAAEAAABBADcAAAACAAEAAABBADgAAAACAAEAAABCACkAAAACAAEAAABCACoAAAACAAEAAABCACsAAAACAAEAAABCACwAAAACAAEAAABCAC0AAAACAAEAAABCAC4AAAACAAEAAABCAC8AAAACAAEAAABCADAAAAACAAEAAABCADEAAAACAAEAAABCADIAAAACAAEAAABCADMAAAACAAEAAABCADQAAAACAAEAAABCADUAAAACAAEAAABCADYAAAACAAEAAABCADcAAAACAAEAAABCADgAAAACAAEAAABDACkAAAACAAEAAABDACoAAAACAAEAAABDACsAAAACAAEAAABDACwAAAACAAEAAABDAC0AAAACAAEAAABDAC4AAAACAAEAAABDAC8AAAACAAEAAABDADAAAAACAAEAAABDADEAAAACAAEAAABDADIAAAACAAEAAABDADMAAAACAAEAAABDADQAAAACAAEAAABDADUAAAACAAEAAABDADYAAAACAAEAAABDADcAAAACAAEAAABDADgAAAACAAEAAABEACkAAAACAAEAAABEACoAAAACAAEAAABEACsAAAACAAEAAABEACwAAAACAAEAAABEAC0AAAACAAEAAABEAC4AAAACAAEAAABEAC8AAAACAAEAAABEADAAAAACAAEAAABEADEAAAACAAEAAABEADIAAAACAAEAAABEADMAAAACAAEAAABEADQAAAACAAEAAABEADUAAAACAAEAAABEADYAAAACAAEAAABEADcAAAACAAEAAABEADgAAAACAAEAAABFACkAAAACAAEAAABFACoAAAACAAEAAABFACsAAAACAAEAAABFACwAAAACAAEAAABFAC0AAAACAAEAAABFAC4AAAACAAEAAABFAC8AAAACAAEAAABFADAAAAACAAEAAABFADEAAAACAAEAAABFADIAAAACAAEAAABFADMAAAACAAEAAABFADQAAAACAAEAAABFADUAAAACAAEAAABFADYAAAACAAEAAABFADcAAAACAAEAAABFADgAAAACAAEAAABGACkAAAACAAEAAABGACoAAAACAAEAAABGACsAAAACAAEAAABGACwAAAACAAEAAABGAC0AAAACAAEAAABGAC4AAAACAAEAAABGAC8AAAACAAEAAABGADAAAAACAAEAAABGADEAAAACAAEAAABGADIAAAACAAEAAABGADMAAAACAAEAAABGADQAAAACAAEAAABGADUAAAACAAEAAABGADYAAAACAAEAAABGADcAAAACAAEAAABGADgAAAACAAEAAABHACkAAAACAAEAAABHACoAAAACAAEAAABHACsAAAACAAEAAABHACwAAAACAAEAAABHAC0AAAACAAEAAABHAC4AAAACAAEAAABHAC8AAAACAAEAAABHADAAAAACAAEAAABHADEAAAACAAEAAABHADIAAAACAAEAAABHADMAAAACAAEAAABHADQAAAACAAEAAABHADUAAAACAAEAAABHADYAAAACAAEAAABHADcAAAACAAEAAABHADgAAAACAAEAAABIACYAAAACAAEAAABIACcAAAACAAEAAABIACgAAAACAAEAAABIACkAAAACAAEAAABIACoAAAACAAEAAABIACsAAAACAAEAAABIACwAAAACAAEAAABIAC0AAAACAAEAAABIAC4AAAACAAEAAABIAC8AAAACAAEAAABIADAAAAACAAEAAABIADEAAAACAAEAAABIADIAAAACAAEAAABIADMAAAACAAEAAABIADQAAAACAAEAAABIADUAAAACAAEAAABIADYAAAACAAEAAABIADcAAAACAAEAAABIADgAAAACAAEAAABJACYAAAACAAEAAABJACcAAAACAAEAAABJACgAAAACAAEAAABJACkAAAACAAEAAABJACoAAAACAAEAAABJACsAAAACAAEAAABJACwAAAACAAEAAABJAC0AAAACAAEAAABJAC4AAAACAAEAAABJAC8AAAACAAEAAABJADAAAAACAAEAAABJADEAAAACAAEAAABJADIAAAACAAEAAABJADMAAAACAAEAAABJADQAAAACAAEAAABJADUAAAACAAEAAABJADYAAAACAAEAAABJADcAAAACAAEAAABJADgAAAACAAEAAABKACYAAAACAAEAAABKACcAAAACAAEAAABKACgAAAACAAEAAABKACkAAAACAAEAAABKACoAAAACAAEAAABKACsAAAACAAEAAABKACwAAAACAAEAAABKAC0AAAACAAEAAABKAC4AAAACAAEAAABKAC8AAAACAAEAAABKADAAAAACAAEAAABKADEAAAACAAEAAABKADIAAAACAAEAAABKADMAAAACAAEAAABKADQAAAACAAEAAABKADUAAAACAAEAAABKADYAAAACAAEAAABKADcAAAACAAEAAABKADgAAAACAAEAAABLACYAAAACAAEAAABLACcAAAACAAEAAABLACgAAAACAAEAAABLACkAAAACAAEAAABLACoAAAACAAEAAABLACsAAAACAAEAAABLACwAAAACAAEAAABLAC0AAAACAAEAAABLAC4AAAACAAEAAABLAC8AAAACAAEAAABLADAAAAACAAEAAABLADEAAAACAAEAAABLADIAAAACAAEAAABLADMAAAACAAEAAABLADQAAAACAAEAAABLADUAAAACAAEAAABLADYAAAACAAEAAABLADcAAAACAAEAAABLADgAAAACAAEAAABMACYAAAACAAEAAABMACcAAAACAAEAAABMACgAAAACAAEAAABMACkAAAACAAEAAABMACoAAAACAAEAAABMACsAAAACAAEAAABMACwAAAACAAEAAABMAC0AAAACAAEAAABMAC4AAAACAAEAAABMAC8AAAACAAEAAABMADAAAAACAAEAAABMADEAAAACAAEAAABMADIAAAACAAEAAABMADMAAAACAAEAAABMADQAAAACAAEAAABMADUAAAACAAEAAABMADYAAAACAAEAAABMADcAAAACAAEAAABMADgAAAACAAEAAABNACYAAAACAAEAAABNACcAAAACAAEAAABNACgAAAACAAEAAABNACkAAAACAAEAAABNACoAAAACAAEAAABNACsAAAACAAEAAABNACwAAAACAAEAAABNAC0AAAACAAEAAABNAC4AAAACAAEAAABNAC8AAAACAAEAAABNADAAAAACAAEAAABNADEAAAACAAEAAABNADIAAAACAAEAAABNADMAAAACAAEAAABNADQAAAACAAEAAABNADUAAAACAAEAAABNADYAAAACAAEAAABNADcAAAACAAEAAABNADgAAAACAAEAAABOACYAAAACAAEAAABOACcAAAACAAEAAABOACgAAAACAAEAAABOACkAAAACAAEAAABOACoAAAACAAEAAABOACsAAAACAAEAAABOACwAAAACAAEAAABOAC0AAAACAAEAAABOAC4AAAACAAEAAABOAC8AAAACAAEAAABOADAAAAACAAEAAABOADEAAAACAAEAAABOADIAAAACAAEAAABOADMAAAACAAEAAABOADQAAAACAAEAAABOADUAAAACAAEAAABOADYAAAACAAEAAABOADcAAAACAAEAAABOADgAAAACAAEAAABPACYAAAACAAEAAABPACcAAAACAAEAAABPACgAAAACAAEAAABPACkAAAACAAEAAABPACoAAAACAAEAAABPACsAAAACAAEAAABPACwAAAACAAEAAABPAC0AAAACAAEAAABPAC4AAAACAAEAAABPAC8AAAACAAEAAABPADAAAAACAAEAAABPADEAAAACAAEAAABPADIAAAACAAEAAABPADMAAAACAAEAAABPADQAAAACAAEAAABPADUAAAACAAEAAABPADYAAAACAAEAAABPADcAAAACAAEAAABPADgAAAACAAEAAABQACYAAAACAAEAAABQACcAAAACAAEAAABQACgAAAACAAEAAABQACkAAAACAAEAAABQACoAAAACAAEAAABQACsAAAACAAEAAABQACwAAAACAAEAAABQAC0AAAACAAEAAABQAC4AAAACAAEAAABQAC8AAAACAAEAAABQADAAAAACAAEAAABQADEAAAACAAEAAABQADIAAAACAAEAAABQADMAAAACAAEAAABQADQAAAACAAEAAABQADUAAAACAAEAAABQADYAAAACAAEAAABQADcAAAACAAEAAABQADgAAAACAAEAAABRACYAAAACAAEAAABRACcAAAACAAEAAABRACgAAAACAAEAAABRACkAAAACAAEAAABRACoAAAACAAEAAABRACsAAAACAAEAAABRACwAAAACAAEAAABRAC0AAAACAAEAAABRAC4AAAACAAEAAABRAC8AAAACAAEAAABRADAAAAACAAEAAABRADEAAAACAAEAAABRADIAAAACAAEAAABRADMAAAACAAEAAABRADQAAAACAAEAAABRADUAAAACAAEAAABRADYAAAACAAEAAABRADcAAAACAAEAAABRADgAAAACAAEAAABSACYAAAACAAEAAABSACcAAAACAAEAAABSACgAAAACAAEAAABSACkAAAACAAEAAABSACoAAAACAAEAAABSACsAAAACAAEAAABSACwAAAACAAEAAABSAC0AAAACAAEAAABSAC4AAAACAAEAAABSAC8AAAACAAEAAABSADAAAAACAAEAAABSADEAAAACAAEAAABSADIAAAACAAEAAABSADMAAAACAAEAAABSADQAAAACAAEAAABSADUAAAACAAEAAABSADYAAAACAAEAAABSADcAAAACAAEAAABSADgAAAACAAEAAABTACYAAAACAAEAAABTACcAAAACAAEAAABTACgAAAACAAEAAABTACkAAAACAAEAAABTACoAAAACAAEAAABTACsAAAACAAEAAABTACwAAAACAAEAAABTAC0AAAACAAEAAABTAC4AAAACAAEAAABTAC8AAAACAAEAAABTADAAAAACAAEAAABTADEAAAACAAEAAABTADIAAAACAAEAAABTADMAAAACAAEAAABTADQAAAACAAEAAABTADUAAAACAAEAAABTADYAAAACAAEAAABTADcAAAACAAEAAABTADgAAAACAAEAAABUACYAAAACAAEAAABUACcAAAACAAEAAABUACgAAAACAAEAAABUACkAAAACAAEAAABUACoAAAACAAEAAABUACsAAAACAAEAAABUACwAAAACAAEAAABUAC0AAAACAAEAAABUAC4AAAACAAEAAABUAC8AAAACAAEAAABUADAAAAACAAEAAABUADEAAAACAAEAAABUADIAAAACAAEAAABUADMAAAACAAEAAABUADQAAAACAAEAAABUADUAAAACAAEAAABUADYAAAACAAEAAABUADcAAAACAAEAAABUADgAAAACAAEAAABVACYAAAACAAEAAABVACcAAAACAAEAAABVACgAAAACAAEAAABVACkAAAACAAEAAABVACoAAAACAAEAAABVACsAAAACAAEAAABVACwAAAACAAEAAABVAC0AAAACAAEAAABVAC4AAAACAAEAAABVAC8AAAACAAEAAABVADAAAAACAAEAAABVADEAAAACAAEAAABVADIAAAACAAEAAABVADMAAAACAAEAAABVADQAAAACAAEAAABVADUAAAACAAEAAABVADYAAAACAAEAAABVADcAAAACAAEAAABVADgAAAACAAEAAABWACYAAAACAAEAAABWACcAAAACAAEAAABWACgAAAACAAEAAABWACkAAAACAAEAAABWACoAAAACAAEAAABWACsAAAACAAEAAABWACwAAAACAAEAAABWAC0AAAACAAEAAABWAC4AAAACAAEAAABWAC8AAAACAAEAAABWADAAAAACAAEAAABWADEAAAACAAEAAABWADIAAAACAAEAAABWADMAAAACAAEAAABWADQAAAACAAEAAABWADUAAAACAAEAAABWADYAAAACAAEAAABWADcAAAACAAEAAABWADgAAAACAAEAAABXACYAAAACAAEAAABXACcAAAACAAEAAABXACgAAAACAAEAAABXACkAAAACAAEAAABXACoAAAACAAEAAABXACsAAAACAAEAAABXACwAAAACAAEAAABXAC0AAAACAAEAAABXAC4AAAACAAEAAABXAC8AAAACAAEAAABXADAAAAACAAEAAABXADEAAAACAAEAAABXADIAAAACAAEAAABXADMAAAACAAEAAABXADQAAAACAAEAAABXADUAAAACAAEAAABXADYAAAACAAEAAABXADcAAAACAAEAAABXADgAAAACAAEAAABYACYAAAACAAEAAABYACcAAAACAAEAAABYACgAAAACAAEAAABYACkAAAACAAEAAABYACoAAAACAAEAAABYACsAAAACAAEAAABYACwAAAACAAEAAABYAC0AAAACAAEAAABYAC4AAAACAAEAAABYAC8AAAACAAEAAABYADAAAAACAAEAAABYADEAAAACAAEAAABYADIAAAACAAEAAABYADMAAAACAAEAAABYADQAAAACAAEAAABYADUAAAACAAEAAABYADYAAAACAAEAAABYADcAAAACAAEAAABYADgAAAACAAEAAABZACYAAAACAAEAAABZACcAAAACAAEAAABZACgAAAACAAEAAABZACkAAAACAAEAAABZACoAAAACAAEAAABZACsAAAACAAEAAABZACwAAAACAAEAAABZAC0AAAACAAEAAABZAC4AAAACAAEAAABZAC8AAAACAAEAAABZADAAAAACAAEAAABZADEAAAACAAEAAABZADIAAAACAAEAAABZADMAAAACAAEAAABZADQAAAACAAEAAABZADUAAAACAAEAAABZADYAAAACAAEAAABZADcAAAACAAEAAABZADgAAAACAAEAAABaACYAAAACAAEAAABaACcAAAACAAEAAABaACgAAAACAAEAAABaACkAAAACAAEAAABaACoAAAACAAEAAABaACsAAAACAAEAAABaACwAAAACAAEAAABaAC0AAAACAAEAAABaAC4AAAACAAEAAABaAC8AAAACAAEAAABaADAAAAACAAEAAABaADEAAAACAAEAAABaADIAAAACAAEAAABaADMAAAACAAEAAABaADQAAAACAAEAAABaADUAAAACAAEAAABaADYAAAACAAEAAABaADcAAAACAAEAAABaADgAAAACAAEAAABbACYAAAACAAEAAABbACcAAAACAAEAAABbACgAAAACAAEAAABbACkAAAACAAEAAABbACoAAAACAAEAAABbACsAAAACAAEAAABbACwAAAACAAEAAABbAC0AAAACAAEAAABbAC4AAAACAAEAAABbAC8AAAACAAEAAABbADAAAAACAAEAAABbADEAAAACAAEAAABbADIAAAACAAEAAABbADMAAAACAAEAAABbADQAAAACAAEAAABbADUAAAACAAEAAABbADYAAAACAAEAAABbADcAAAACAAEAAABbADgAAAACAAEAAABcACYAAAACAAEAAABcACcAAAACAAEAAABcACgAAAACAAEAAABcACkAAAACAAEAAABcACoAAAACAAEAAABcACsAAAACAAEAAABcACwAAAACAAEAAABcAC0AAAACAAEAAABcAC4AAAACAAEAAABcAC8AAAACAAEAAABcADAAAAACAAEAAABcADEAAAACAAEAAABcADIAAAACAAEAAABcADMAAAACAAEAAABcADQAAAACAAEAAABcADUAAAACAAEAAABcADYAAAACAAEAAABcADcAAAACAAEAAABcADgAAAACAAEAAABdACYAAAACAAEAAABdACcAAAACAAEAAABdACgAAAACAAEAAABdACkAAAACAAEAAABdACoAAAACAAEAAABdACsAAAACAAEAAABdACwAAAACAAEAAABdAC0AAAACAAEAAABdAC4AAAACAAEAAABdAC8AAAACAAEAAABdADAAAAACAAEAAABdADEAAAACAAEAAABdADIAAAACAAEAAABdADMAAAACAAEAAABdADQAAAACAAEAAABdADUAAAACAAEAAABdADYAAAACAAEAAABdADcAAAACAAEAAABdADgAAAACAAEAAABeACYAAAACAAEAAABeACcAAAACAAEAAABeACgAAAACAAEAAABeACkAAAACAAEAAABeACoAAAACAAEAAABeACsAAAACAAEAAABeACwAAAACAAEAAABeAC0AAAACAAEAAABeAC4AAAACAAEAAABeAC8AAAACAAEAAABeADAAAAACAAEAAABeADEAAAACAAEAAABeADIAAAACAAEAAABeADMAAAACAAEAAABeADQAAAACAAEAAABeADUAAAACAAEAAABeADYAAAACAAEAAABeADcAAAACAAEAAABeADgAAAACAAEAAABfACYAAAACAAEAAABfACcAAAACAAEAAABfACgAAAACAAEAAABfACkAAAACAAEAAABfACoAAAACAAEAAABfACsAAAACAAEAAABfACwAAAACAAEAAABfAC0AAAACAAEAAABfAC4AAAACAAEAAABfAC8AAAACAAEAAABfADAAAAACAAEAAABfADEAAAACAAEAAABfADIAAAACAAEAAABfADMAAAACAAEAAABfADQAAAACAAEAAABfADUAAAACAAEAAABfADYAAAACAAEAAABfADcAAAACAAEAAABfADgAAAACAAEAAABgACYAAAACAAEAAABgACcAAAACAAEAAABgACgAAAACAAEAAABgACkAAAACAAEAAABgACoAAAACAAEAAABgACsAAAACAAEAAABgACwAAAACAAEAAABgAC0AAAACAAEAAABgAC4AAAACAAEAAABgAC8AAAACAAEAAABgADAAAAACAAEAAABgADEAAAACAAEAAABgADIAAAACAAEAAABgADMAAAACAAEAAABgADQAAAACAAEAAABgADUAAAACAAEAAABgADYAAAACAAEAAABgADcAAAACAAEAAABgADgAAAACAAEAAABhACYAAAACAAEAAABhACcAAAACAAEAAABhACgAAAACAAEAAABhACkAAAACAAEAAABhACoAAAACAAEAAABhACsAAAACAAEAAABhACwAAAACAAEAAABhAC0AAAACAAEAAABhAC4AAAACAAEAAABhAC8AAAACAAEAAABhADAAAAACAAEAAABhADEAAAACAAEAAABhADIAAAACAAEAAABhADMAAAACAAEAAABhADQAAAACAAEAAABhADUAAAACAAEAAABhADYAAAACAAEAAABhADcAAAACAAEAAABhADgAAAACAAEAAABiACYAAAACAAEAAABiACcAAAACAAEAAABiACgAAAACAAEAAABiACkAAAACAAEAAABiACoAAAACAAEAAABiACsAAAACAAEAAABiACwAAAACAAEAAABiAC0AAAACAAEAAABiAC4AAAACAAEAAABiAC8AAAACAAEAAABiADAAAAACAAEAAABiADEAAAACAAEAAABiADIAAAACAAEAAABiADMAAAACAAEAAABiADQAAAACAAEAAABiADUAAAACAAEAAABiADYAAAACAAEAAABiADcAAAACAAEAAABiADgAAAACAAEAAABjACYAAAACAAEAAABjACcAAAACAAEAAABjACgAAAACAAEAAABjACkAAAACAAEAAABjACoAAAACAAEAAABjACsAAAACAAEAAABjACwAAAACAAEAAABjAC0AAAACAAEAAABjAC4AAAACAAEAAABjAC8AAAACAAEAAABjADAAAAACAAEAAABjADEAAAACAAEAAABjADIAAAACAAEAAABjADMAAAACAAEAAABjADQAAAACAAEAAABjADUAAAACAAEAAABjADYAAAACAAEAAABjADcAAAACAAEAAABjADgAAAACAAEAAABkACYAAAACAAEAAABkACcAAAACAAEAAABkACgAAAACAAEAAABkACkAAAACAAEAAABkACoAAAACAAEAAABkACsAAAACAAEAAABkACwAAAACAAEAAABkAC0AAAACAAEAAABkAC4AAAACAAEAAABkAC8AAAACAAEAAABkADAAAAACAAEAAABkADEAAAACAAEAAABkADIAAAACAAEAAABkADMAAAACAAEAAABkADQAAAACAAEAAABkADUAAAACAAEAAABkADYAAAACAAEAAABkADcAAAACAAEAAABkADgAAAACAAEAAABlACYAAAACAAEAAABlACcAAAACAAEAAABlACgAAAACAAEAAABlACkAAAACAAEAAABlACoAAAACAAEAAABlACsAAAACAAEAAABlACwAAAACAAEAAABlAC0AAAACAAEAAABlAC4AAAACAAEAAABlAC8AAAACAAEAAABlADAAAAACAAEAAABlADEAAAACAAEAAABlADIAAAACAAEAAABlADMAAAACAAEAAABlADQAAAACAAEAAABlADUAAAACAAEAAABlADYAAAACAAEAAABlADcAAAACAAEAAABlADgAAAACAAEAAABmACYAAAACAAEAAABmACcAAAACAAEAAABmACgAAAACAAEAAABmACkAAAACAAEAAABmACoAAAACAAEAAABmACsAAAACAAEAAABmACwAAAACAAEAAABmAC0AAAACAAEAAABmAC4AAAACAAEAAABmAC8AAAACAAEAAABmADAAAAACAAEAAABmADEAAAACAAEAAABmADIAAAACAAEAAABmADMAAAACAAEAAABmADQAAAACAAEAAABmADUAAAACAAEAAABmADYAAAACAAEAAABmADcAAAACAAEAAABmADgAAAACAAEAAABGAPL/AAACAAEAAABGAPP/AAACAAEAAABGAPT/AAACAAEAAABGAPX/AAACAAEAAABGAPb/AAACAAEAAABGAPf/AAACAAEAAABGAPj/AAACAAEAAABGAPn/AAACAAEAAABGAPr/AAACAAEAAABGAPv/AAACAAEAAABGAPz/AAACAAEAAABGAP3/AAACAAEAAABGAP7/AAACAAEAAABGAP//AAACAAEAAABHAPL/AAACAAEAAABHAPP/AAACAAEAAABHAPT/AAACAAEAAABHAPX/AAACAAEAAABHAPb/AAACAAEAAABHAPf/AAACAAEAAABHAPj/AAACAAEAAABHAPn/AAACAAEAAABHAPr/AAACAAEAAABHAPv/AAACAAEAAABHAPz/AAACAAEAAABHAP3/AAACAAEAAABHAP7/AAACAAEAAABHAP//AAACAAEAAABIAPL/AAACAAEAAABIAPP/AAACAAEAAABIAPT/AAACAAEAAABIAPX/AAACAAEAAABIAPb/AAACAAEAAABIAPf/AAACAAEAAABIAPj/AAACAAEAAABIAPn/AAACAAEAAABIAPr/AAACAAEAAABIAPv/AAACAAEAAABIAPz/AAACAAEAAABIAP3/AAACAAEAAABIAP7/AAACAAEAAABIAP//AAACAAEAAABIAAAAAAACAAEAAABIAAEAAAACAAEAAABIAAIAAAACAAEAAABIAAMAAAACAAEAAABIAAQAAAACAAEAAABIAAUAAAACAAEAAABIAAYAAAACAAEAAABIAAcAAAACAAEAAABIAAgAAAACAAEAAABIAAkAAAACAAEAAABIAAoAAAACAAEAAABIAAsAAAACAAEAAABIAAwAAAACAAEAAABIAA0AAAACAAEAAABIAA4AAAACAAEAAABIAA8AAAACAAEAAABIABAAAAACAAEAAABIABEAAAACAAEAAABIABIAAAACAAEAAABIABMAAAACAAEAAABIABQAAAACAAEAAABIABUAAAACAAEAAABIABYAAAACAAEAAABIABcAAAACAAEAAABIABgAAAACAAEAAABIABkAAAACAAEAAABIABoAAAACAAEAAABIABsAAAACAAEAAABIABwAAAACAAEAAABIAB0AAAACAAEAAABIAB4AAAACAAEAAABIAB8AAAACAAEAAABIACAAAAACAAEAAABIACEAAAACAAEAAABIACIAAAACAAEAAABIACMAAAACAAEAAABIACQAAAACAAEAAABIACUAAAACAAEAAABJAPL/AAACAAEAAABJAPP/AAACAAEAAABJAPT/AAACAAEAAABJAPX/AAACAAEAAABJAPb/AAACAAEAAABJAPf/AAACAAEAAABJAPj/AAACAAEAAABJAPn/AAACAAEAAABJAPr/AAACAAEAAABJAPv/AAACAAEAAABJAPz/AAACAAEAAABJAP3/AAACAAEAAABJAP7/AAACAAEAAABJAP//AAACAAEAAABJAAAAAAACAAEAAABJAAEAAAACAAEAAABJAAIAAAACAAEAAABJAAMAAAACAAEAAABJAAQAAAACAAEAAABJAAUAAAACAAEAAABJAAYAAAACAAEAAABJAAcAAAACAAEAAABJAAgAAAACAAEAAABJAAkAAAACAAEAAABJAAoAAAACAAEAAABJAAsAAAACAAEAAABJAAwAAAACAAEAAABJAA0AAAACAAEAAABJAA4AAAACAAEAAABJAA8AAAACAAEAAABJABAAAAACAAEAAABJABEAAAACAAEAAABJABIAAAACAAEAAABJABMAAAACAAEAAABJABQAAAACAAEAAABJABUAAAACAAEAAABJABYAAAACAAEAAABJABcAAAACAAEAAABJABgAAAACAAEAAABJABkAAAACAAEAAABJABoAAAACAAEAAABJABsAAAACAAEAAABJABwAAAACAAEAAABJAB0AAAACAAEAAABJAB4AAAACAAEAAABJAB8AAAACAAEAAABJACAAAAACAAEAAABJACEAAAACAAEAAABJACIAAAACAAEAAABJACMAAAACAAEAAABJACQAAAACAAEAAABJACUAAAACAAEAAABKAPL/AAACAAEAAABKAPP/AAACAAEAAABKAPT/AAACAAEAAABKAPX/AAACAAEAAABKAPb/AAACAAEAAABKAPf/AAACAAEAAABKAPj/AAACAAEAAABKAPn/AAACAAEAAABKAPr/AAACAAEAAABKAPv/AAACAAEAAABKAPz/AAACAAEAAABKAP3/AAACAAEAAABKAP7/AAACAAEAAABKAP//AAACAAEAAABKAAAAAAACAAEAAABKAAEAAAACAAEAAABKAAIAAAACAAEAAABKAAMAAAACAAEAAABKAAQAAAACAAEAAABKAAUAAAACAAEAAABKAAYAAAACAAEAAABKAAcAAAACAAEAAABKAAgAAAACAAEAAABKAAkAAAACAAEAAABKAAoAAAACAAEAAABKAAsAAAACAAEAAABKAAwAAAACAAEAAABKAA0AAAACAAEAAABKAA4AAAACAAEAAABKAA8AAAACAAEAAABKABAAAAACAAEAAABKABEAAAACAAEAAABKABIAAAACAAEAAABKABMAAAACAAEAAABKABQAAAACAAEAAABKABUAAAACAAEAAABKABYAAAACAAEAAABKABcAAAACAAEAAABKABgAAAACAAEAAABKABkAAAACAAEAAABKABoAAAACAAEAAABKABsAAAACAAEAAABKABwAAAACAAEAAABKAB0AAAACAAEAAABKAB4AAAACAAEAAABKAB8AAAACAAEAAABKACAAAAACAAEAAABKACEAAAACAAEAAABKACIAAAACAAEAAABKACMAAAACAAEAAABKACQAAAACAAEAAABKACUAAAACAAEAAABLAPL/AAACAAEAAABLAPP/AAACAAEAAABLAPT/AAACAAEAAABLAPX/AAACAAEAAABLAPb/AAACAAEAAABLAPf/AAACAAEAAABLAPj/AAACAAEAAABLAPn/AAACAAEAAABLAPr/AAACAAEAAABLAPv/AAACAAEAAABLAPz/AAACAAEAAABLAP3/AAACAAEAAABLAP7/AAACAAEAAABLAP//AAACAAEAAABLAAAAAAACAAEAAABLAAEAAAACAAEAAABLAAIAAAACAAEAAABLAAMAAAACAAEAAABLAAQAAAACAAEAAABLAAUAAAACAAEAAABLAAYAAAACAAEAAABLAAcAAAACAAEAAABLAAgAAAACAAEAAABLAAkAAAACAAEAAABLAAoAAAACAAEAAABLAAsAAAACAAEAAABLAAwAAAACAAEAAABLAA0AAAACAAEAAABLAA4AAAACAAEAAABLAA8AAAACAAEAAABLABAAAAACAAEAAABLABEAAAACAAEAAABLABIAAAACAAEAAABLABMAAAACAAEAAABLABQAAAACAAEAAABLABUAAAACAAEAAABLABYAAAACAAEAAABLABcAAAACAAEAAABLABgAAAACAAEAAABLABkAAAACAAEAAABLABoAAAACAAEAAABLABsAAAACAAEAAABLABwAAAACAAEAAABLAB0AAAACAAEAAABLAB4AAAACAAEAAABLAB8AAAACAAEAAABLACAAAAACAAEAAABLACEAAAACAAEAAABLACIAAAACAAEAAABLACMAAAACAAEAAABLACQAAAACAAEAAABLACUAAAACAAEAAABMAPL/AAACAAEAAABMAPP/AAACAAEAAABMAPT/AAACAAEAAABMAPX/AAACAAEAAABMAPb/AAACAAEAAABMAPf/AAACAAEAAABMAPj/AAACAAEAAABMAPn/AAACAAEAAABMAPr/AAACAAEAAABMAPv/AAACAAEAAABMAPz/AAACAAEAAABMAP3/AAACAAEAAABMAP7/AAACAAEAAABMAP//AAACAAEAAABMAAAAAAACAAEAAABMAAEAAAACAAEAAABMAAIAAAACAAEAAABMAAMAAAACAAEAAABMAAQAAAACAAEAAABMAAUAAAACAAEAAABMAAYAAAACAAEAAABMAAcAAAACAAEAAABMAAgAAAACAAEAAABMAAkAAAACAAEAAABMAAoAAAACAAEAAABMAAsAAAACAAEAAABMAAwAAAACAAEAAABMAA0AAAACAAEAAABMAA4AAAACAAEAAABMAA8AAAACAAEAAABMABAAAAACAAEAAABMABEAAAACAAEAAABMABIAAAACAAEAAABMABMAAAACAAEAAABMABQAAAACAAEAAABMABUAAAACAAEAAABMABYAAAACAAEAAABMABcAAAACAAEAAABMABgAAAACAAEAAABMABkAAAACAAEAAABMABoAAAACAAEAAABMABsAAAACAAEAAABMABwAAAACAAEAAABMAB0AAAACAAEAAABMAB4AAAACAAEAAABMAB8AAAACAAEAAABMACAAAAACAAEAAABMACEAAAACAAEAAABMACIAAAACAAEAAABMACMAAAACAAEAAABMACQAAAACAAEAAABMACUAAAACAAEAAABNAPL/AAACAAEAAABNAPP/AAACAAEAAABNAPT/AAACAAEAAABNAPX/AAACAAEAAABNAPb/AAACAAEAAABNAPf/AAACAAEAAABNAPj/AAACAAEAAABNAPn/AAACAAEAAABNAPr/AAACAAEAAABNAPv/AAACAAEAAABNAPz/AAACAAEAAABNAP3/AAACAAEAAABNAP7/AAACAAEAAABNAP//AAACAAEAAABNAAAAAAACAAEAAABNAAEAAAACAAEAAABNAAIAAAACAAEAAABNAAMAAAACAAEAAABNAAQAAAACAAEAAABNAAUAAAACAAEAAABNAAYAAAACAAEAAABNAAcAAAACAAEAAABNAAgAAAACAAEAAABNAAkAAAACAAEAAABNAAoAAAACAAEAAABNAAsAAAACAAEAAABNAAwAAAACAAEAAABNAA0AAAACAAEAAABNAA4AAAACAAEAAABNAA8AAAACAAEAAABNABAAAAACAAEAAABNABEAAAACAAEAAABNABIAAAACAAEAAABNABMAAAACAAEAAABNABQAAAACAAEAAABNABUAAAACAAEAAABNABYAAAACAAEAAABNABcAAAACAAEAAABNABgAAAACAAEAAABNABkAAAACAAEAAABNABoAAAACAAEAAABNABsAAAACAAEAAABNABwAAAACAAEAAABNAB0AAAACAAEAAABNAB4AAAACAAEAAABNAB8AAAACAAEAAABNACAAAAACAAEAAABNACEAAAACAAEAAABNACIAAAACAAEAAABNACMAAAACAAEAAABNACQAAAACAAEAAABNACUAAAACAAEAAABOAPL/AAACAAEAAABOAPP/AAACAAEAAABOAPT/AAACAAEAAABOAPX/AAACAAEAAABOAPb/AAACAAEAAABOAPf/AAACAAEAAABOAPj/AAACAAEAAABOAPn/AAACAAEAAABOAPr/AAACAAEAAABOAPv/AAACAAEAAABOAPz/AAACAAEAAABOAP3/AAACAAEAAABOAP7/AAACAAEAAABOAP//AAACAAEAAABOAAAAAAACAAEAAABOAAEAAAACAAEAAABOAAIAAAACAAEAAABOAAMAAAACAAEAAABOAAQAAAACAAEAAABOAAUAAAACAAEAAABOAAYAAAACAAEAAABOAAcAAAACAAEAAABOAAgAAAACAAEAAABOAAkAAAACAAEAAABOAAoAAAACAAEAAABOAAsAAAACAAEAAABOAAwAAAACAAEAAABOAA0AAAACAAEAAABOAA4AAAACAAEAAABOAA8AAAACAAEAAABOABAAAAACAAEAAABOABEAAAACAAEAAABOABIAAAACAAEAAABOABMAAAACAAEAAABOABQAAAACAAEAAABOABUAAAACAAEAAABOABYAAAACAAEAAABOABcAAAACAAEAAABOABgAAAACAAEAAABOABkAAAACAAEAAABOABoAAAACAAEAAABOABsAAAACAAEAAABOABwAAAACAAEAAABOAB0AAAACAAEAAABOAB4AAAACAAEAAABOAB8AAAACAAEAAABOACAAAAACAAEAAABOACEAAAACAAEAAABOACIAAAACAAEAAABOACMAAAACAAEAAABOACQAAAACAAEAAABOACUAAAACAAEAAABPAPL/AAACAAEAAABPAPP/AAACAAEAAABPAPT/AAACAAEAAABPAPX/AAACAAEAAABPAPb/AAACAAEAAABPAPf/AAACAAEAAABPAPj/AAACAAEAAABPAPn/AAACAAEAAABPAPr/AAACAAEAAABPAPv/AAACAAEAAABPAPz/AAACAAEAAABPAP3/AAACAAEAAABPAP7/AAACAAEAAABPAP//AAACAAEAAABPAAAAAAACAAEAAABPAAEAAAACAAEAAABPAAIAAAACAAEAAABPAAMAAAACAAEAAABPAAQAAAACAAEAAABPAAUAAAACAAEAAABPAAYAAAACAAEAAABPAAcAAAACAAEAAABPAAgAAAACAAEAAABPAAkAAAACAAEAAABPAAoAAAACAAEAAABPAAsAAAACAAEAAABPAAwAAAACAAEAAABPAA0AAAACAAEAAABPAA4AAAACAAEAAABPAA8AAAACAAEAAABPABAAAAACAAEAAABPABEAAAACAAEAAABPABIAAAACAAEAAABPABMAAAACAAEAAABPABQAAAACAAEAAABPABUAAAACAAEAAABPABYAAAACAAEAAABPABcAAAACAAEAAABPABgAAAACAAEAAABPABkAAAACAAEAAABPABoAAAACAAEAAABPABsAAAACAAEAAABPABwAAAACAAEAAABPAB0AAAACAAEAAABPAB4AAAACAAEAAABPAB8AAAACAAEAAABPACAAAAACAAEAAABPACEAAAACAAEAAABPACIAAAACAAEAAABPACMAAAACAAEAAABPACQAAAACAAEAAABPACUAAAACAAEAAABQAPL/AAACAAEAAABQAPP/AAACAAEAAABQAPT/AAACAAEAAABQAPX/AAACAAEAAABQAPb/AAACAAEAAABQAPf/AAACAAEAAABQAPj/AAACAAEAAABQAPn/AAACAAEAAABQAPr/AAACAAEAAABQAPv/AAACAAEAAABQAPz/AAACAAEAAABQAP3/AAACAAEAAABQAP7/AAACAAEAAABQAP//AAACAAEAAABQAAAAAAACAAEAAABQAAEAAAACAAEAAABQAAIAAAACAAEAAABQAAMAAAACAAEAAABQAAQAAAACAAEAAABQAAUAAAACAAEAAABQAAYAAAACAAEAAABQAAcAAAACAAEAAABQAAgAAAACAAEAAABQAAkAAAACAAEAAABQAAoAAAACAAEAAABQAAsAAAACAAEAAABQAAwAAAACAAEAAABQAA0AAAACAAEAAABQAA4AAAACAAEAAABQAA8AAAACAAEAAABQABAAAAACAAEAAABQABEAAAACAAEAAABQABIAAAACAAEAAABQABMAAAACAAEAAABQABQAAAACAAEAAABQABUAAAACAAEAAABQABYAAAACAAEAAABQABcAAAACAAEAAABQABgAAAACAAEAAABQABkAAAACAAEAAABQABoAAAACAAEAAABQABsAAAACAAEAAABQABwAAAACAAEAAABQAB0AAAACAAEAAABQAB4AAAACAAEAAABQAB8AAAACAAEAAABQACAAAAACAAEAAABQACEAAAACAAEAAABQACIAAAACAAEAAABQACMAAAACAAEAAABQACQAAAACAAEAAABQACUAAAACAAEAAABRAPL/AAACAAEAAABRAPP/AAACAAEAAABRAPT/AAACAAEAAABRAPX/AAACAAEAAABRAPb/AAACAAEAAABRAPf/AAACAAEAAABRAPj/AAACAAEAAABRAPn/AAACAAEAAABRAPr/AAACAAEAAABRAPv/AAACAAEAAABRAPz/AAACAAEAAABRAP3/AAACAAEAAABRAP7/AAACAAEAAABRAP//AAACAAEAAABRAAAAAAACAAEAAABRAAEAAAACAAEAAABRAAIAAAACAAEAAABRAAMAAAACAAEAAABRAAQAAAACAAEAAABRAAUAAAACAAEAAABRAAYAAAACAAEAAABRAAcAAAACAAEAAABRAAgAAAACAAEAAABRAAkAAAACAAEAAABRAAoAAAACAAEAAABRAAsAAAACAAEAAABRAAwAAAACAAEAAABRAA0AAAACAAEAAABRAA4AAAACAAEAAABRAA8AAAACAAEAAABRABAAAAACAAEAAABRABEAAAACAAEAAABRABIAAAACAAEAAABRABMAAAACAAEAAABRABQAAAACAAEAAABRABUAAAACAAEAAABRABYAAAACAAEAAABRABcAAAACAAEAAABRABgAAAACAAEAAABRABkAAAACAAEAAABRABoAAAACAAEAAABRABsAAAACAAEAAABRABwAAAACAAEAAABRAB0AAAACAAEAAABRAB4AAAACAAEAAABRAB8AAAACAAEAAABRACAAAAACAAEAAABRACEAAAACAAEAAABRACIAAAACAAEAAABRACMAAAACAAEAAABRACQAAAACAAEAAABRACUAAAACAAEAAABSAPL/AAACAAEAAABSAPP/AAACAAEAAABSAPT/AAACAAEAAABSAPX/AAACAAEAAABSAPb/AAACAAEAAABSAPf/AAACAAEAAABSAPj/AAACAAEAAABSAPn/AAACAAEAAABSAPr/AAACAAEAAABSAPv/AAACAAEAAABSAPz/AAACAAEAAABSAP3/AAACAAEAAABSAP7/AAACAAEAAABSAP//AAACAAEAAABSAAAAAAACAAEAAABSAAEAAAACAAEAAABSAAIAAAACAAEAAABSAAMAAAACAAEAAABSAAQAAAACAAEAAABSAAUAAAACAAEAAABSAAYAAAACAAEAAABSAAcAAAACAAEAAABSAAgAAAACAAEAAABSAAkAAAACAAEAAABSAAoAAAACAAEAAABSAAsAAAACAAEAAABSAAwAAAACAAEAAABSAA0AAAACAAEAAABSAA4AAAACAAEAAABSAA8AAAACAAEAAABSABAAAAACAAEAAABSABEAAAACAAEAAABSABIAAAACAAEAAABSABMAAAACAAEAAABSABQAAAACAAEAAABSABUAAAACAAEAAABSABYAAAACAAEAAABSABcAAAACAAEAAABSABgAAAACAAEAAABSABkAAAACAAEAAABSABoAAAACAAEAAABSABsAAAACAAEAAABSABwAAAACAAEAAABSAB0AAAACAAEAAABSAB4AAAACAAEAAABSAB8AAAACAAEAAABSACAAAAACAAEAAABSACEAAAACAAEAAABSACIAAAACAAEAAABSACMAAAACAAEAAABSACQAAAACAAEAAABSACUAAAACAAEAAABTAPL/AAACAAEAAABTAPP/AAACAAEAAABTAPT/AAACAAEAAABTAPX/AAACAAEAAABTAPb/AAACAAEAAABTAPf/AAACAAEAAABTAPj/AAACAAEAAABTAPn/AAACAAEAAABTAPr/AAACAAEAAABTAPv/AAACAAEAAABTAPz/AAACAAEAAABTAP3/AAACAAEAAABTAP7/AAACAAEAAABTAP//AAACAAEAAABTAAAAAAACAAEAAABTAAEAAAACAAEAAABTAAIAAAACAAEAAABTAAMAAAACAAEAAABTAAQAAAACAAEAAABTAAUAAAACAAEAAABTAAYAAAACAAEAAABTAAcAAAACAAEAAABTAAgAAAACAAEAAABTAAkAAAACAAEAAABTAAoAAAACAAEAAABTAAsAAAACAAEAAABTAAwAAAACAAEAAABTAA0AAAACAAEAAABTAA4AAAACAAEAAABTAA8AAAACAAEAAABTABAAAAACAAEAAABTABEAAAACAAEAAABTABIAAAACAAEAAABTABMAAAACAAEAAABTABQAAAACAAEAAABTABUAAAACAAEAAABTABYAAAACAAEAAABTABcAAAACAAEAAABTABgAAAACAAEAAABTABkAAAACAAEAAABTABoAAAACAAEAAABTABsAAAACAAEAAABTABwAAAACAAEAAABTAB0AAAACAAEAAABTAB4AAAACAAEAAABTAB8AAAACAAEAAABTACAAAAACAAEAAABTACEAAAACAAEAAABTACIAAAACAAEAAABTACMAAAACAAEAAABTACQAAAACAAEAAABTACUAAAACAAEAAABUAPL/AAACAAEAAABUAPP/AAACAAEAAABUAPT/AAACAAEAAABUAPX/AAACAAEAAABUAPb/AAACAAEAAABUAPf/AAACAAEAAABUAPj/AAACAAEAAABUAPn/AAACAAEAAABUAPr/AAACAAEAAABUAPv/AAACAAEAAABUAPz/AAACAAEAAABUAP3/AAACAAEAAABUAP7/AAACAAEAAABUAP//AAACAAEAAABUAAAAAAACAAEAAABUAAEAAAACAAEAAABUAAIAAAACAAEAAABUAAMAAAACAAEAAABUAAQAAAACAAEAAABUAAUAAAACAAEAAABUAAYAAAACAAEAAABUAAcAAAACAAEAAABUAAgAAAACAAEAAABUAAkAAAACAAEAAABUAAoAAAACAAEAAABUAAsAAAACAAEAAABUAAwAAAACAAEAAABUAA0AAAACAAEAAABUAA4AAAACAAEAAABUAA8AAAACAAEAAABUABAAAAACAAEAAABUABEAAAACAAEAAABUABIAAAACAAEAAABUABMAAAACAAEAAABUABQAAAACAAEAAABUABUAAAACAAEAAABUABYAAAACAAEAAABUABcAAAACAAEAAABUABgAAAACAAEAAABUABkAAAACAAEAAABUABoAAAACAAEAAABUABsAAAACAAEAAABUABwAAAACAAEAAABUAB0AAAACAAEAAABUAB4AAAACAAEAAABUAB8AAAACAAEAAABUACAAAAACAAEAAABUACEAAAACAAEAAABUACIAAAACAAEAAABUACMAAAACAAEAAABUACQAAAACAAEAAABUACUAAAACAAEAAABVAPL/AAACAAEAAABVAPP/AAACAAEAAABVAPT/AAACAAEAAABVAPX/AAACAAEAAABVAPb/AAACAAEAAABVAPf/AAACAAEAAABVAPj/AAACAAEAAABVAPn/AAACAAEAAABVAPr/AAACAAEAAABVAPv/AAACAAEAAABVAPz/AAACAAEAAABVAP3/AAACAAEAAABVAP7/AAACAAEAAABVAP//AAACAAEAAABVAAAAAAACAAEAAABVAAEAAAACAAEAAABVAAIAAAACAAEAAABVAAMAAAACAAEAAABVAAQAAAACAAEAAABVAAUAAAACAAEAAABVAAYAAAACAAEAAABVAAcAAAACAAEAAABVAAgAAAACAAEAAABVAAkAAAACAAEAAABVAAoAAAACAAEAAABVAAsAAAACAAEAAABVAAwAAAACAAEAAABVAA0AAAACAAEAAABVAA4AAAACAAEAAABVAA8AAAACAAEAAABVABAAAAACAAEAAABVABEAAAACAAEAAABVABIAAAACAAEAAABVABMAAAACAAEAAABVABQAAAACAAEAAABVABUAAAACAAEAAABVABYAAAACAAEAAABVABcAAAACAAEAAABVABgAAAACAAEAAABVABkAAAACAAEAAABVABoAAAACAAEAAABVABsAAAACAAEAAABVABwAAAACAAEAAABVAB0AAAACAAEAAABVAB4AAAACAAEAAABVAB8AAAACAAEAAABVACAAAAACAAEAAABVACEAAAACAAEAAABVACIAAAACAAEAAABVACMAAAACAAEAAABVACQAAAACAAEAAABVACUAAAACAAEAAABWAPL/AAACAAEAAABWAPP/AAACAAEAAABWAPT/AAACAAEAAABWAPX/AAACAAEAAABWAPb/AAACAAEAAABWAPf/AAACAAEAAABWAPj/AAACAAEAAABWAPn/AAACAAEAAABWAPr/AAACAAEAAABWAPv/AAACAAEAAABWAPz/AAACAAEAAABWAP3/AAACAAEAAABWAP7/AAACAAEAAABWAP//AAACAAEAAABWAAAAAAACAAEAAABWAAEAAAACAAEAAABWAAIAAAACAAEAAABWAAMAAAACAAEAAABWAAQAAAACAAEAAABWAAUAAAACAAEAAABWAAYAAAACAAEAAABWAAcAAAACAAEAAABWAAgAAAACAAEAAABWAAkAAAACAAEAAABWAAoAAAACAAEAAABWAAsAAAACAAEAAABWAAwAAAACAAEAAABWAA0AAAACAAEAAABWAA4AAAACAAEAAABWAA8AAAACAAEAAABWABAAAAACAAEAAABWABEAAAACAAEAAABWABIAAAACAAEAAABWABMAAAACAAEAAABWABQAAAACAAEAAABWABUAAAACAAEAAABWABYAAAACAAEAAABWABcAAAACAAEAAABWABgAAAACAAEAAABWABkAAAACAAEAAABWABoAAAACAAEAAABWABsAAAACAAEAAABWABwAAAACAAEAAABWAB0AAAACAAEAAABWAB4AAAACAAEAAABWAB8AAAACAAEAAABWACAAAAACAAEAAABWACEAAAACAAEAAABWACIAAAACAAEAAABWACMAAAACAAEAAABWACQAAAACAAEAAABWACUAAAACAAEAAABXAPL/AAACAAEAAABXAPP/AAACAAEAAABXAPT/AAACAAEAAABXAPX/AAACAAEAAABXAPb/AAACAAEAAABXAPf/AAACAAEAAABXAPj/AAACAAEAAABXAPn/AAACAAEAAABXAPr/AAACAAEAAABXAPv/AAACAAEAAABXAPz/AAACAAEAAABXAP3/AAACAAEAAABXAP7/AAACAAEAAABXAP//AAACAAEAAABXAAAAAAACAAEAAABXAAEAAAACAAEAAABXAAIAAAACAAEAAABXAAMAAAACAAEAAABXAAQAAAACAAEAAABXAAUAAAACAAEAAABXAAYAAAACAAEAAABXAAcAAAACAAEAAABXAAgAAAACAAEAAABXAAkAAAACAAEAAABXAAoAAAACAAEAAABXAAsAAAACAAEAAABXAAwAAAACAAEAAABXAA0AAAACAAEAAABXAA4AAAACAAEAAABXAA8AAAACAAEAAABXABAAAAACAAEAAABXABEAAAACAAEAAABXABIAAAACAAEAAABXABMAAAACAAEAAABXABQAAAACAAEAAABXABUAAAACAAEAAABXABYAAAACAAEAAABXABcAAAACAAEAAABXABgAAAACAAEAAABXABkAAAACAAEAAABXABoAAAACAAEAAABXABsAAAACAAEAAABXABwAAAACAAEAAABXAB0AAAACAAEAAABXAB4AAAACAAEAAABXAB8AAAACAAEAAABXACAAAAACAAEAAABXACEAAAACAAEAAABXACIAAAACAAEAAABXACMAAAACAAEAAABXACQAAAACAAEAAABXACUAAAACAAEAAABYAPL/AAACAAEAAABYAPP/AAACAAEAAABYAPT/AAACAAEAAABYAPX/AAACAAEAAABYAPb/AAACAAEAAABYAPf/AAACAAEAAABYAPj/AAACAAEAAABYAPn/AAACAAEAAABYAPr/AAACAAEAAABYAPv/AAACAAEAAABYAPz/AAACAAEAAABYAP3/AAACAAEAAABYAP7/AAACAAEAAABYAP//AAACAAEAAABYAAAAAAACAAEAAABYAAEAAAACAAEAAABYAAIAAAACAAEAAABYAAMAAAACAAEAAABYAAQAAAACAAEAAABYAAUAAAACAAEAAABYAAYAAAACAAEAAABYAAcAAAACAAEAAABYAAgAAAACAAEAAABYAAkAAAACAAEAAABYAAoAAAACAAEAAABYAAsAAAACAAEAAABYAAwAAAACAAEAAABYAA0AAAACAAEAAABYAA4AAAACAAEAAABYAA8AAAACAAEAAABYABAAAAACAAEAAABYABEAAAACAAEAAABYABIAAAACAAEAAABYABMAAAACAAEAAABYABQAAAACAAEAAABYABUAAAACAAEAAABYABYAAAACAAEAAABYABcAAAACAAEAAABYABgAAAACAAEAAABYABkAAAACAAEAAABYABoAAAACAAEAAABYABsAAAACAAEAAABYABwAAAACAAEAAABYAB0AAAACAAEAAABYAB4AAAACAAEAAABYAB8AAAACAAEAAABYACAAAAACAAEAAABYACEAAAACAAEAAABYACIAAAACAAEAAABYACMAAAACAAEAAABYACQAAAACAAEAAABYACUAAAACAAEAAABZAPL/AAACAAEAAABZAPP/AAACAAEAAABZAPT/AAACAAEAAABZAPX/AAACAAEAAABZAPb/AAACAAEAAABZAPf/AAACAAEAAABZAPj/AAACAAEAAABZAPn/AAACAAEAAABZAPr/AAACAAEAAABZAPv/AAACAAEAAABZAPz/AAACAAEAAABZAP3/AAACAAEAAABZAP7/AAACAAEAAABZAP//AAACAAEAAABZAAAAAAACAAEAAABZAAEAAAACAAEAAABZAAIAAAACAAEAAABZAAMAAAACAAEAAABZAAQAAAACAAEAAABZAAUAAAACAAEAAABZAAYAAAACAAEAAABZAAcAAAACAAEAAABZAAgAAAACAAEAAABZAAkAAAACAAEAAABZAAoAAAACAAEAAABZAAsAAAACAAEAAABZAAwAAAACAAEAAABZAA0AAAACAAEAAABZAA4AAAACAAEAAABZAA8AAAACAAEAAABZABAAAAACAAEAAABZABEAAAACAAEAAABZABIAAAACAAEAAABZABMAAAACAAEAAABZABQAAAACAAEAAABZABUAAAACAAEAAABZABYAAAACAAEAAABZABcAAAACAAEAAABZABgAAAACAAEAAABZABkAAAACAAEAAABZABoAAAACAAEAAABZABsAAAACAAEAAABZABwAAAACAAEAAABZAB0AAAACAAEAAABZAB4AAAACAAEAAABZAB8AAAACAAEAAABZACAAAAACAAEAAABZACEAAAACAAEAAABZACIAAAACAAEAAABZACMAAAACAAEAAABZACQAAAACAAEAAABZACUAAAACAAEAAABaAPL/AAACAAEAAABaAPP/AAACAAEAAABaAPT/AAACAAEAAABaAPX/AAACAAEAAABaAPb/AAACAAEAAABaAPf/AAACAAEAAABaAPj/AAACAAEAAABaAPn/AAACAAEAAABaAPr/AAACAAEAAABaAPv/AAACAAEAAABaAPz/AAACAAEAAABaAP3/AAACAAEAAABaAP7/AAACAAEAAABaAP//AAACAAEAAABaAAAAAAACAAEAAABaAAEAAAACAAEAAABaAAIAAAACAAEAAABaAAMAAAACAAEAAABaAAQAAAACAAEAAABaAAUAAAACAAEAAABaAAYAAAACAAEAAABaAAcAAAACAAEAAABaAAgAAAACAAEAAABaAAkAAAACAAEAAABaAAoAAAACAAEAAABaAAsAAAACAAEAAABaAAwAAAACAAEAAABaAA0AAAACAAEAAABaAA4AAAACAAEAAABaAA8AAAACAAEAAABaABAAAAACAAEAAABaABEAAAACAAEAAABaABIAAAACAAEAAABaABMAAAACAAEAAABaABQAAAACAAEAAABaABUAAAACAAEAAABaABYAAAACAAEAAABaABcAAAACAAEAAABaABgAAAACAAEAAABaABkAAAACAAEAAABaABoAAAACAAEAAABaABsAAAACAAEAAABaABwAAAACAAEAAABaAB0AAAACAAEAAABaAB4AAAACAAEAAABaAB8AAAACAAEAAABaACAAAAACAAEAAABaACEAAAACAAEAAABaACIAAAACAAEAAABaACMAAAACAAEAAABaACQAAAACAAEAAABaACUAAAACAAEAAABbAPL/AAACAAEAAABbAPP/AAACAAEAAABbAPT/AAACAAEAAABbAPX/AAACAAEAAABbAPb/AAACAAEAAABbAPf/AAACAAEAAABbAPj/AAACAAEAAABbAPn/AAACAAEAAABbAPr/AAACAAEAAABbAPv/AAACAAEAAABbAPz/AAACAAEAAABbAP3/AAACAAEAAABbAP7/AAACAAEAAABbAP//AAACAAEAAABbAAAAAAACAAEAAABbAAEAAAACAAEAAABbAAIAAAACAAEAAABbAAMAAAACAAEAAABbAAQAAAACAAEAAABbAAUAAAACAAEAAABbAAYAAAACAAEAAABbAAcAAAACAAEAAABbAAgAAAACAAEAAABbAAkAAAACAAEAAABbAAoAAAACAAEAAABbAAsAAAACAAEAAABbAAwAAAACAAEAAABbAA0AAAACAAEAAABbAA4AAAACAAEAAABbAA8AAAACAAEAAABbABAAAAACAAEAAABbABEAAAACAAEAAABbABIAAAACAAEAAABbABMAAAACAAEAAABbABQAAAACAAEAAABbABUAAAACAAEAAABbABYAAAACAAEAAABbABcAAAACAAEAAABbABgAAAACAAEAAABbABkAAAACAAEAAABbABoAAAACAAEAAABbABsAAAACAAEAAABbABwAAAACAAEAAABbAB0AAAACAAEAAABbAB4AAAACAAEAAABbAB8AAAACAAEAAABbACAAAAACAAEAAABbACEAAAACAAEAAABbACIAAAACAAEAAABbACMAAAACAAEAAABbACQAAAACAAEAAABbACUAAAACAAEAAABcAPL/AAACAAEAAABcAPP/AAACAAEAAABcAPT/AAACAAEAAABcAPX/AAACAAEAAABcAPb/AAACAAEAAABcAPf/AAACAAEAAABcAPj/AAACAAEAAABcAPn/AAACAAEAAABcAPr/AAACAAEAAABcAPv/AAACAAEAAABcAPz/AAACAAEAAABcAP3/AAACAAEAAABcAP7/AAACAAEAAABcAP//AAACAAEAAABcAAAAAAACAAEAAABcAAEAAAACAAEAAABcAAIAAAACAAEAAABcAAMAAAACAAEAAABcAAQAAAACAAEAAABcAAUAAAACAAEAAABcAAYAAAACAAEAAABcAAcAAAACAAEAAABcAAgAAAACAAEAAABcAAkAAAACAAEAAABcAAoAAAACAAEAAABcAAsAAAACAAEAAABcAAwAAAACAAEAAABcAA0AAAACAAEAAABcAA4AAAACAAEAAABcAA8AAAACAAEAAABcABAAAAACAAEAAABcABEAAAACAAEAAABcABIAAAACAAEAAABcABMAAAACAAEAAABcABQAAAACAAEAAABcABUAAAACAAEAAABcABYAAAACAAEAAABcABcAAAACAAEAAABcABgAAAACAAEAAABcABkAAAACAAEAAABcABoAAAACAAEAAABcABsAAAACAAEAAABcABwAAAACAAEAAABcAB0AAAACAAEAAABcAB4AAAACAAEAAABcAB8AAAACAAEAAABcACAAAAACAAEAAABcACEAAAACAAEAAABcACIAAAACAAEAAABcACMAAAACAAEAAABcACQAAAACAAEAAABcACUAAAACAAEAAABdAPL/AAACAAEAAABdAPP/AAACAAEAAABdAPT/AAACAAEAAABdAPX/AAACAAEAAABdAPb/AAACAAEAAABdAPf/AAACAAEAAABdAPj/AAACAAEAAABdAPn/AAACAAEAAABdAPr/AAACAAEAAABdAPv/AAACAAEAAABdAPz/AAACAAEAAABdAP3/AAACAAEAAABdAP7/AAACAAEAAABdAP//AAACAAEAAABdAAAAAAACAAEAAABdAAEAAAACAAEAAABdAAIAAAACAAEAAABdAAMAAAACAAEAAABdAAQAAAACAAEAAABdAAUAAAACAAEAAABdAAYAAAACAAEAAABdAAcAAAACAAEAAABdAAgAAAACAAEAAABdAAkAAAACAAEAAABdAAoAAAACAAEAAABdAAsAAAACAAEAAABdAAwAAAACAAEAAABdAA0AAAACAAEAAABdAA4AAAACAAEAAABdAA8AAAACAAEAAABdABAAAAACAAEAAABdABEAAAACAAEAAABdABIAAAACAAEAAABdABMAAAACAAEAAABdABQAAAACAAEAAABdABUAAAACAAEAAABdABYAAAACAAEAAABdABcAAAACAAEAAABdABgAAAACAAEAAABdABkAAAACAAEAAABdABoAAAACAAEAAABdABsAAAACAAEAAABdABwAAAACAAEAAABdAB0AAAACAAEAAABdAB4AAAACAAEAAABdAB8AAAACAAEAAABdACAAAAACAAEAAABdACEAAAACAAEAAABdACIAAAACAAEAAABdACMAAAACAAEAAABdACQAAAACAAEAAABdACUAAAACAAEAAABeAPL/AAACAAEAAABeAPP/AAACAAEAAABeAPT/AAACAAEAAABeAPX/AAACAAEAAABeAPb/AAACAAEAAABeAPf/AAACAAEAAABeAPj/AAACAAEAAABeAPn/AAACAAEAAABeAPr/AAACAAEAAABeAPv/AAACAAEAAABeAPz/AAACAAEAAABeAP3/AAACAAEAAABeAP7/AAACAAEAAABeAP//AAACAAEAAABeAAAAAAACAAEAAABeAAEAAAACAAEAAABeAAIAAAACAAEAAABeAAMAAAACAAEAAABeAAQAAAACAAEAAABeAAUAAAACAAEAAABeAAYAAAACAAEAAABeAAcAAAACAAEAAABeAAgAAAACAAEAAABeAAkAAAACAAEAAABeAAoAAAACAAEAAABeAAsAAAACAAEAAABeAAwAAAACAAEAAABeAA0AAAACAAEAAABeAA4AAAACAAEAAABeAA8AAAACAAEAAABeABAAAAACAAEAAABeABEAAAACAAEAAABeABIAAAACAAEAAABeABMAAAACAAEAAABeABQAAAACAAEAAABeABUAAAACAAEAAABeABYAAAACAAEAAABeABcAAAACAAEAAABeABgAAAACAAEAAABeABkAAAACAAEAAABeABoAAAACAAEAAABeABsAAAACAAEAAABeABwAAAACAAEAAABeAB0AAAACAAEAAABeAB4AAAACAAEAAABeAB8AAAACAAEAAABeACAAAAACAAEAAABeACEAAAACAAEAAABeACIAAAACAAEAAABeACMAAAACAAEAAABeACQAAAACAAEAAABeACUAAAACAAEAAABfAPL/AAACAAEAAABfAPP/AAACAAEAAABfAPT/AAACAAEAAABfAPX/AAACAAEAAABfAPb/AAACAAEAAABfAPf/AAACAAEAAABfAPj/AAACAAEAAABfAPn/AAACAAEAAABfAPr/AAACAAEAAABfAPv/AAACAAEAAABfAPz/AAACAAEAAABfAP3/AAACAAEAAABfAP7/AAACAAEAAABfAP//AAACAAEAAABfAAAAAAACAAEAAABfAAEAAAACAAEAAABfAAIAAAACAAEAAABfAAMAAAACAAEAAABfAAQAAAACAAEAAABfAAUAAAACAAEAAABfAAYAAAACAAEAAABfAAcAAAACAAEAAABfAAgAAAACAAEAAABfAAkAAAACAAEAAABfAAoAAAACAAEAAABfAAsAAAACAAEAAABfAAwAAAACAAEAAABfAA0AAAACAAEAAABfAA4AAAACAAEAAABfAA8AAAACAAEAAABfABAAAAACAAEAAABfABEAAAACAAEAAABfABIAAAACAAEAAABfABMAAAACAAEAAABfABQAAAACAAEAAABfABUAAAACAAEAAABfABYAAAACAAEAAABfABcAAAACAAEAAABfABgAAAACAAEAAABfABkAAAACAAEAAABfABoAAAACAAEAAABfABsAAAACAAEAAABfABwAAAACAAEAAABfAB0AAAACAAEAAABfAB4AAAACAAEAAABfAB8AAAACAAEAAABfACAAAAACAAEAAABfACEAAAACAAEAAABfACIAAAACAAEAAABfACMAAAACAAEAAABfACQAAAACAAEAAABfACUAAAACAAEAAABgAPL/AAACAAEAAABgAPP/AAACAAEAAABgAPT/AAACAAEAAABgAPX/AAACAAEAAABgAPb/AAACAAEAAABgAPf/AAACAAEAAABgAPj/AAACAAEAAABgAPn/AAACAAEAAABgAPr/AAACAAEAAABgAPv/AAACAAEAAABgAPz/AAACAAEAAABgAP3/AAACAAEAAABgAP7/AAACAAEAAABgAP//AAACAAEAAABgAAAAAAACAAEAAABgAAEAAAACAAEAAABgAAIAAAACAAEAAABgAAMAAAACAAEAAABgAAQAAAACAAEAAABgAAUAAAACAAEAAABgAAYAAAACAAEAAABgAAcAAAACAAEAAABgAAgAAAACAAEAAABgAAkAAAACAAEAAABgAAoAAAACAAEAAABgAAsAAAACAAEAAABgAAwAAAACAAEAAABgAA0AAAACAAEAAABgAA4AAAACAAEAAABgAA8AAAACAAEAAABgABAAAAACAAEAAABgABEAAAACAAEAAABgABIAAAACAAEAAABgABMAAAACAAEAAABgABQAAAACAAEAAABgABUAAAACAAEAAABgABYAAAACAAEAAABgABcAAAACAAEAAABgABgAAAACAAEAAABgABkAAAACAAEAAABgABoAAAACAAEAAABgABsAAAACAAEAAABgABwAAAACAAEAAABgAB0AAAACAAEAAABgAB4AAAACAAEAAABgAB8AAAACAAEAAABgACAAAAACAAEAAABgACEAAAACAAEAAABgACIAAAACAAEAAABgACMAAAACAAEAAABgACQAAAACAAEAAABgACUAAAACAAEAAABhAPL/AAACAAEAAABhAPP/AAACAAEAAABhAPT/AAACAAEAAABhAPX/AAACAAEAAABhAPb/AAACAAEAAABhAPf/AAACAAEAAABhAPj/AAACAAEAAABhAPn/AAACAAEAAABhAPr/AAACAAEAAABhAPv/AAACAAEAAABhAPz/AAACAAEAAABhAP3/AAACAAEAAABhAP7/AAACAAEAAABhAP//AAACAAEAAABhAAAAAAACAAEAAABhAAEAAAACAAEAAABhAAIAAAACAAEAAABhAAMAAAACAAEAAABhAAQAAAACAAEAAABhAAUAAAACAAEAAABhAAYAAAACAAEAAABhAAcAAAACAAEAAABhAAgAAAACAAEAAABhAAkAAAACAAEAAABhAAoAAAACAAEAAABhAAsAAAACAAEAAABhAAwAAAACAAEAAABhAA0AAAACAAEAAABhAA4AAAACAAEAAABhAA8AAAACAAEAAABhABAAAAACAAEAAABhABEAAAACAAEAAABhABIAAAACAAEAAABhABMAAAACAAEAAABhABQAAAACAAEAAABhABUAAAACAAEAAABhABYAAAACAAEAAABhABcAAAACAAEAAABhABgAAAACAAEAAABhABkAAAACAAEAAABhABoAAAACAAEAAABhABsAAAACAAEAAABhABwAAAACAAEAAABhAB0AAAACAAEAAABhAB4AAAACAAEAAABhAB8AAAACAAEAAABhACAAAAACAAEAAABhACEAAAACAAEAAABhACIAAAACAAEAAABhACMAAAACAAEAAABhACQAAAACAAEAAABhACUAAAACAAEAAABiAPL/AAACAAEAAABiAPP/AAACAAEAAABiAPT/AAACAAEAAABiAPX/AAACAAEAAABiAPb/AAACAAEAAABiAPf/AAACAAEAAABiAPj/AAACAAEAAABiAPn/AAACAAEAAABiAPr/AAACAAEAAABiAPv/AAACAAEAAABiAPz/AAACAAEAAABiAP3/AAACAAEAAABiAP7/AAACAAEAAABiAP//AAACAAEAAABiAAAAAAACAAEAAABiAAEAAAACAAEAAABiAAIAAAACAAEAAABiAAMAAAACAAEAAABiAAQAAAACAAEAAABiAAUAAAACAAEAAABiAAYAAAACAAEAAABiAAcAAAACAAEAAABiAAgAAAACAAEAAABiAAkAAAACAAEAAABiAAoAAAACAAEAAABiAAsAAAACAAEAAABiAAwAAAACAAEAAABiAA0AAAACAAEAAABiAA4AAAACAAEAAABiAA8AAAACAAEAAABiABAAAAACAAEAAABiABEAAAACAAEAAABiABIAAAACAAEAAABiABMAAAACAAEAAABiABQAAAACAAEAAABiABUAAAACAAEAAABiABYAAAACAAEAAABiABcAAAACAAEAAABiABgAAAACAAEAAABiABkAAAACAAEAAABiABoAAAACAAEAAABiABsAAAACAAEAAABiABwAAAACAAEAAABiAB0AAAACAAEAAABiAB4AAAACAAEAAABiAB8AAAACAAEAAABiACAAAAACAAEAAABiACEAAAACAAEAAABiACIAAAACAAEAAABiACMAAAACAAEAAABiACQAAAACAAEAAABiACUAAAACAAEAAABjAPL/AAACAAEAAABjAPP/AAACAAEAAABjAPT/AAACAAEAAABjAPX/AAACAAEAAABjAPb/AAACAAEAAABjAPf/AAACAAEAAABjAPj/AAACAAEAAABjAPn/AAACAAEAAABjAPr/AAACAAEAAABjAPv/AAACAAEAAABjAPz/AAACAAEAAABjAP3/AAACAAEAAABjAP7/AAACAAEAAABjAP//AAACAAEAAABjAAAAAAACAAEAAABjAAEAAAACAAEAAABjAAIAAAACAAEAAABjAAMAAAACAAEAAABjAAQAAAACAAEAAABjAAUAAAACAAEAAABjAAYAAAACAAEAAABjAAcAAAACAAEAAABjAAgAAAACAAEAAABjAAkAAAACAAEAAABjAAoAAAACAAEAAABjAAsAAAACAAEAAABjAAwAAAACAAEAAABjAA0AAAACAAEAAABjAA4AAAACAAEAAABjAA8AAAACAAEAAABjABAAAAACAAEAAABjABEAAAACAAEAAABjABIAAAACAAEAAABjABMAAAACAAEAAABjABQAAAACAAEAAABjABUAAAACAAEAAABjABYAAAACAAEAAABjABcAAAACAAEAAABjABgAAAACAAEAAABjABkAAAACAAEAAABjABoAAAACAAEAAABjABsAAAACAAEAAABjABwAAAACAAEAAABjAB0AAAACAAEAAABjAB4AAAACAAEAAABjAB8AAAACAAEAAABjACAAAAACAAEAAABjACEAAAACAAEAAABjACIAAAACAAEAAABjACMAAAACAAEAAABjACQAAAACAAEAAABjACUAAAACAAEAAABkAPL/AAACAAEAAABkAPP/AAACAAEAAABkAPT/AAACAAEAAABkAPX/AAACAAEAAABkAPb/AAACAAEAAABkAPf/AAACAAEAAABkAPj/AAACAAEAAABkAPn/AAACAAEAAABkAPr/AAACAAEAAABkAPv/AAACAAEAAABkAPz/AAACAAEAAABkAP3/AAACAAEAAABkAP7/AAACAAEAAABkAP//AAACAAEAAABkAAAAAAACAAEAAABkAAEAAAACAAEAAABkAAIAAAACAAEAAABkAAMAAAACAAEAAABkAAQAAAACAAEAAABkAAUAAAACAAEAAABkAAYAAAACAAEAAABkAAcAAAACAAEAAABkAAgAAAACAAEAAABkAAkAAAACAAEAAABkAAoAAAACAAEAAABkAAsAAAACAAEAAABkAAwAAAACAAEAAABkAA0AAAACAAEAAABkAA4AAAACAAEAAABkAA8AAAACAAEAAABkABAAAAACAAEAAABkABEAAAACAAEAAABkABIAAAACAAEAAABkABMAAAACAAEAAABkABQAAAACAAEAAABkABUAAAACAAEAAABkABYAAAACAAEAAABkABcAAAACAAEAAABkABgAAAACAAEAAABkABkAAAACAAEAAABkABoAAAACAAEAAABkABsAAAACAAEAAABkABwAAAACAAEAAABkAB0AAAACAAEAAABkAB4AAAACAAEAAABkAB8AAAACAAEAAABkACAAAAACAAEAAABkACEAAAACAAEAAABkACIAAAACAAEAAABkACMAAAACAAEAAABkACQAAAACAAEAAABkACUAAAACAAEAAABlAPL/AAACAAEAAABlAPP/AAACAAEAAABlAPT/AAACAAEAAABlAPX/AAACAAEAAABlAPb/AAACAAEAAABlAPf/AAACAAEAAABlAPj/AAACAAEAAABlAPn/AAACAAEAAABlAPr/AAACAAEAAABlAPv/AAACAAEAAABlAPz/AAACAAEAAABlAP3/AAACAAEAAABlAP7/AAACAAEAAABlAP//AAACAAEAAABlAAAAAAACAAEAAABlAAEAAAACAAEAAABlAAIAAAACAAEAAABlAAMAAAACAAEAAABlAAQAAAACAAEAAABlAAUAAAACAAEAAABlAAYAAAACAAEAAABlAAcAAAACAAEAAABlAAgAAAACAAEAAABlAAkAAAACAAEAAABlAAoAAAACAAEAAABlAAsAAAACAAEAAABlAAwAAAACAAEAAABlAA0AAAACAAEAAABlAA4AAAACAAEAAABlAA8AAAACAAEAAABlABAAAAACAAEAAABlABEAAAACAAEAAABlABIAAAACAAEAAABlABMAAAACAAEAAABlABQAAAACAAEAAABlABUAAAACAAEAAABlABYAAAACAAEAAABlABcAAAACAAEAAABlABgAAAACAAEAAABlABkAAAACAAEAAABlABoAAAACAAEAAABlABsAAAACAAEAAABlABwAAAACAAEAAABlAB0AAAACAAEAAABlAB4AAAACAAEAAABlAB8AAAACAAEAAABlACAAAAACAAEAAABlACEAAAACAAEAAABlACIAAAACAAEAAABlACMAAAACAAEAAABlACQAAAACAAEAAABlACUAAAACAAEAAABmAPL/AAACAAEAAABmAPP/AAACAAEAAABmAPT/AAACAAEAAABmAPX/AAACAAEAAABmAPb/AAACAAEAAABmAPf/AAACAAEAAABmAPj/AAACAAEAAABmAPn/AAACAAEAAABmAPr/AAACAAEAAABmAPv/AAACAAEAAABmAPz/AAACAAEAAABmAP3/AAACAAEAAABmAP7/AAACAAEAAABmAP//AAACAAEAAABmAAAAAAACAAEAAABmAAEAAAACAAEAAABmAAIAAAACAAEAAABmAAMAAAACAAEAAABmAAQAAAACAAEAAABmAAUAAAACAAEAAABmAAYAAAACAAEAAABmAAcAAAACAAEAAABmAAgAAAACAAEAAABmAAkAAAACAAEAAABmAAoAAAACAAEAAABmAAsAAAACAAEAAABmAAwAAAACAAEAAABmAA0AAAACAAEAAABmAA4AAAACAAEAAABmAA8AAAACAAEAAABmABAAAAACAAEAAABmABEAAAACAAEAAABmABIAAAACAAEAAABmABMAAAACAAEAAABmABQAAAACAAEAAABmABUAAAACAAEAAABmABYAAAACAAEAAABmABcAAAACAAEAAABmABgAAAACAAEAAABmABkAAAACAAEAAABmABoAAAACAAEAAABmABsAAAACAAEAAABmABwAAAACAAEAAABmAB0AAAACAAEAAABmAB4AAAACAAEAAABmAB8AAAACAAEAAABmACAAAAACAAEAAABmACEAAAACAAEAAABmACIAAAACAAEAAABmACMAAAACAAEAAABmACQAAAACAAEAAABmACUAAAACAAEAAADl//L/AAACAAEAAADl//P/AAACAAEAAADm//L/AAACAAEAAADm//P/AAACAAEAAADn//L/AAACAAEAAADn//P/AAACAAEAAADo//L/AAACAAEAAADo//P/AAACAAEAAADp//L/AAACAAEAAADp//P/AAACAAEAAADq//L/AAACAAEAAADq//P/AAACAAEAAADr//L/AAACAAEAAADr//P/AAACAAEAAADs//L/AAACAAEAAADs//P/AAACAAEAAADt//L/AAACAAEAAADt//P/AAACAAEAAADu//L/AAACAAEAAADu//P/AAACAAEAAADv//L/AAACAAEAAADv//P/AAACAAEAAADw//L/AAACAAEAAADw//P/AAACAAEAAADx//L/AAACAAEAAADx//P/AAACAAEAAADy//L/AAACAAEAAADy//P/AAACAAEAAADz//L/AAACAAEAAADz//P/AAACAAEAAAD0//L/AAACAAEAAAD0//P/AAACAAEAAAD1//L/AAACAAEAAAD1//P/AAACAAEAAAD2//L/AAACAAEAAAD2//P/AAACAAEAAAD3//L/AAACAAEAAAD3//P/AAACAAEAAAD4//L/AAACAAEAAAD4//P/AAACAAEAAAD5//L/AAACAAEAAAD5//P/AAACAAEAAAD6//L/AAACAAEAAAD6//P/AAACAAEAAAD7//L/AAACAAEAAAD7//P/AAACAAEAAAD8//L/AAACAAEAAAD8//P/AAACAAEAAAD9//L/AAACAAEAAAD9//P/AAACAAEAAAD+//L/AAACAAEAAAD+//P/AAACAAEAAAD///L/AAACAAEAAAD///P/AAACAAEAAAAAAPL/AAACAAEAAAAAAPP/AAACAAEAAAABAPL/AAACAAEAAAABAPP/AAACAAEAAAACAPL/AAACAAEAAAACAPP/AAACAAEAAAADAPL/AAACAAEAAAADAPP/AAACAAEAAAAEAPL/AAACAAEAAAAEAPP/AAACAAEAAAAFAPL/AAACAAEAAAAFAPP/AAACAAEAAAAGAPL/AAACAAEAAAAGAPP/AAACAAEAAAAHAPL/AAACAAEAAAAHAPP/AAACAAEAAAAIAPL/AAACAAEAAAAIAPP/AAACAAEAAAAIAPT/AAACAAEAAAAIAPX/AAACAAEAAAAIAPb/AAACAAEAAAAIAPf/AAACAAEAAAAIAPj/AAACAAEAAAAIAPn/AAACAAEAAAAIAPr/AAACAAEAAAAIAPv/AAACAAEAAAAIAPz/AAACAAEAAAAIAP3/AAACAAEAAAAIAP7/AAACAAEAAAAIAP//AAACAAEAAAAJAPL/AAACAAEAAAAJAPP/AAACAAEAAAAJAPT/AAACAAEAAAAJAPX/AAACAAEAAAAJAPb/AAACAAEAAAAJAPf/AAACAAEAAAAJAPj/AAACAAEAAAAJAPn/AAACAAEAAAAJAPr/AAACAAEAAAAJAPv/AAACAAEAAAAJAPz/AAACAAEAAAAJAP3/AAACAAEAAAAJAP7/AAACAAEAAAAJAP//AAACAAEAAAAKAPL/AAACAAEAAAAKAPP/AAACAAEAAAAKAPT/AAACAAEAAAAKAPX/AAACAAEAAAAKAPb/AAACAAEAAAAKAPf/AAACAAEAAAAKAPj/AAACAAEAAAAKAPn/AAACAAEAAAAKAPr/AAACAAEAAAAKAPv/AAACAAEAAAAKAPz/AAACAAEAAAAKAP3/AAACAAEAAAAKAP7/AAACAAEAAAAKAP//AAACAAEAAAALAPL/AAACAAEAAAALAPP/AAACAAEAAAALAPT/AAACAAEAAAALAPX/AAACAAEAAAALAPb/AAACAAEAAAALAPf/AAACAAEAAAALAPj/AAACAAEAAAALAPn/AAACAAEAAAALAPr/AAACAAEAAAALAPv/AAACAAEAAAALAPz/AAACAAEAAAALAP3/AAACAAEAAAALAP7/AAACAAEAAAALAP//AAACAAEAAAAMAPL/AAACAAEAAAAMAPP/AAACAAEAAAAMAPT/AAACAAEAAAAMAPX/AAACAAEAAAAMAPb/AAACAAEAAAAMAPf/AAACAAEAAAAMAPj/AAACAAEAAAAMAPn/AAACAAEAAAAMAPr/AAACAAEAAAAMAPv/AAACAAEAAAAMAPz/AAACAAEAAAAMAP3/AAACAAEAAAAMAP7/AAACAAEAAAAMAP//AAACAAEAAAANAPL/AAACAAEAAAANAPP/AAACAAEAAAANAPT/AAACAAEAAAANAPX/AAACAAEAAAANAPb/AAACAAEAAAANAPf/AAACAAEAAAANAPj/AAACAAEAAAANAPn/AAACAAEAAAANAPr/AAACAAEAAAANAPv/AAACAAEAAAANAPz/AAACAAEAAAANAP3/AAACAAEAAAANAP7/AAACAAEAAAANAP//AAACAAEAAAAOAPL/AAACAAEAAAAOAPP/AAACAAEAAAAOAPT/AAACAAEAAAAOAPX/AAACAAEAAAAOAPb/AAACAAEAAAAOAPf/AAACAAEAAAAOAPj/AAACAAEAAAAOAPn/AAACAAEAAAAOAPr/AAACAAEAAAAOAPv/AAACAAEAAAAOAPz/AAACAAEAAAAOAP3/AAACAAEAAAAOAP7/AAACAAEAAAAOAP//AAACAAEAAAAPAPL/AAACAAEAAAAPAPP/AAACAAEAAAAPAPT/AAACAAEAAAAPAPX/AAACAAEAAAAPAPb/AAACAAEAAAAPAPf/AAACAAEAAAAPAPj/AAACAAEAAAAPAPn/AAACAAEAAAAPAPr/AAACAAEAAAAPAPv/AAACAAEAAAAPAPz/AAACAAEAAAAPAP3/AAACAAEAAAAPAP7/AAACAAEAAAAPAP//AAACAAEAAAAQAPL/AAACAAEAAAAQAPP/AAACAAEAAAAQAPT/AAACAAEAAAAQAPX/AAACAAEAAAAQAPb/AAACAAEAAAAQAPf/AAACAAEAAAAQAPj/AAACAAEAAAAQAPn/AAACAAEAAAAQAPr/AAACAAEAAAAQAPv/AAACAAEAAAAQAPz/AAACAAEAAAAQAP3/AAACAAEAAAAQAP7/AAACAAEAAAAQAP//AAACAAEAAAARAPL/AAACAAEAAAARAPP/AAACAAEAAAARAPT/AAACAAEAAAARAPX/AAACAAEAAAARAPb/AAACAAEAAAARAPf/AAACAAEAAAARAPj/AAACAAEAAAARAPn/AAACAAEAAAARAPr/AAACAAEAAAARAPv/AAACAAEAAAARAPz/AAACAAEAAAARAP3/AAACAAEAAAARAP7/AAACAAEAAAARAP//AAACAAEAAAASAPL/AAACAAEAAAASAPP/AAACAAEAAAASAPT/AAACAAEAAAASAPX/AAACAAEAAAASAPb/AAACAAEAAAASAPf/AAACAAEAAAASAPj/AAACAAEAAAASAPn/AAACAAEAAAASAPr/AAACAAEAAAASAPv/AAACAAEAAAASAPz/AAACAAEAAAASAP3/AAACAAEAAAASAP7/AAACAAEAAAASAP//AAACAAEAAAATAPL/AAACAAEAAAATAPP/AAACAAEAAAATAPT/AAACAAEAAAATAPX/AAACAAEAAAATAPb/AAACAAEAAAATAPf/AAACAAEAAAATAPj/AAACAAEAAAATAPn/AAACAAEAAAATAPr/AAACAAEAAAATAPv/AAACAAEAAAATAPz/AAACAAEAAAATAP3/AAACAAEAAAATAP7/AAACAAEAAAATAP//AAACAAEAAAAUAPL/AAACAAEAAAAUAPP/AAACAAEAAAAUAPT/AAACAAEAAAAUAPX/AAACAAEAAAAUAPb/AAACAAEAAAAUAPf/AAACAAEAAAAUAPj/AAACAAEAAAAUAPn/AAACAAEAAAAUAPr/AAACAAEAAAAUAPv/AAACAAEAAAAUAPz/AAACAAEAAAAUAP3/AAACAAEAAAAUAP7/AAACAAEAAAAUAP//AAACAAEAAAAVAPL/AAACAAEAAAAVAPP/AAACAAEAAAAVAPT/AAACAAEAAAAVAPX/AAACAAEAAAAVAPb/AAACAAEAAAAVAPf/AAACAAEAAAAVAPj/AAACAAEAAAAVAPn/AAACAAEAAAAVAPr/AAACAAEAAAAVAPv/AAACAAEAAAAVAPz/AAACAAEAAAAVAP3/AAACAAEAAAAVAP7/AAACAAEAAAAVAP//AAACAAEAAAAWAPL/AAACAAEAAAAWAPP/AAACAAEAAAAWAPT/AAACAAEAAAAWAPX/AAACAAEAAAAWAPb/AAACAAEAAAAWAPf/AAACAAEAAAAWAPj/AAACAAEAAAAWAPn/AAACAAEAAAAWAPr/AAACAAEAAAAWAPv/AAACAAEAAAAWAPz/AAACAAEAAAAWAP3/AAACAAEAAAAWAP7/AAACAAEAAAAWAP//AAACAAEAAAAXAPL/AAACAAEAAAAXAPP/AAACAAEAAAAXAPT/AAACAAEAAAAXAPX/AAACAAEAAAAXAPb/AAACAAEAAAAXAPf/AAACAAEAAAAXAPj/AAACAAEAAAAXAPn/AAACAAEAAAAXAPr/AAACAAEAAAAXAPv/AAACAAEAAAAXAPz/AAACAAEAAAAXAP3/AAACAAEAAAAXAP7/AAACAAEAAAAXAP//AAACAAEAAAAYAPL/AAACAAEAAAAYAPP/AAACAAEAAAAYAPT/AAACAAEAAAAYAPX/AAACAAEAAAAYAPb/AAACAAEAAAAYAPf/AAACAAEAAAAYAPj/AAACAAEAAAAYAPn/AAACAAEAAAAYAPr/AAACAAEAAAAYAPv/AAACAAEAAAAYAPz/AAACAAEAAAAYAP3/AAACAAEAAAAYAP7/AAACAAEAAAAYAP//AAACAAEAAAAZAPL/AAACAAEAAAAZAPP/AAACAAEAAAAZAPT/AAACAAEAAAAZAPX/AAACAAEAAAAZAPb/AAACAAEAAAAZAPf/AAACAAEAAAAZAPj/AAACAAEAAAAZAPn/AAACAAEAAAAZAPr/AAACAAEAAAAZAPv/AAACAAEAAAAZAPz/AAACAAEAAAAZAP3/AAACAAEAAAAZAP7/AAACAAEAAAAZAP//AAACAAEAAAAaAPL/AAACAAEAAAAaAPP/AAACAAEAAAAaAPT/AAACAAEAAAAaAPX/AAACAAEAAAAaAPb/AAACAAEAAAAaAPf/AAACAAEAAAAaAPj/AAACAAEAAAAaAPn/AAACAAEAAAAaAPr/AAACAAEAAAAaAPv/AAACAAEAAAAaAPz/AAACAAEAAAAaAP3/AAACAAEAAAAaAP7/AAACAAEAAAAaAP//AAACAAEAAAAbAPL/AAACAAEAAAAbAPP/AAACAAEAAAAbAPT/AAACAAEAAAAbAPX/AAACAAEAAAAbAPb/AAACAAEAAAAbAPf/AAACAAEAAAAbAPj/AAACAAEAAAAbAPn/AAACAAEAAAAbAPr/AAACAAEAAAAbAPv/AAACAAEAAAAbAPz/AAACAAEAAAAbAP3/AAACAAEAAAAbAP7/AAACAAEAAAAbAP//AAACAAEAAAAcAPL/AAACAAEAAAAcAPP/AAACAAEAAAAcAPT/AAACAAEAAAAcAPX/AAACAAEAAAAcAPb/AAACAAEAAAAcAPf/AAACAAEAAAAcAPj/AAACAAEAAAAcAPn/AAACAAEAAAAcAPr/AAACAAEAAAAcAPv/AAACAAEAAAAcAPz/AAACAAEAAAAcAP3/AAACAAEAAAAcAP7/AAACAAEAAAAcAP//AAACAAEAAAAdAPL/AAACAAEAAAAdAPP/AAACAAEAAAAdAPT/AAACAAEAAAAdAPX/AAACAAEAAAAdAPb/AAACAAEAAAAdAPf/AAACAAEAAAAdAPj/AAACAAEAAAAdAPn/AAACAAEAAAAdAPr/AAACAAEAAAAdAPv/AAACAAEAAAAdAPz/AAACAAEAAAAdAP3/AAACAAEAAAAdAP7/AAACAAEAAAAdAP//AAACAAEAAAAeAPL/AAACAAEAAAAeAPP/AAACAAEAAAAeAPT/AAACAAEAAAAeAPX/AAACAAEAAAAeAPb/AAACAAEAAAAeAPf/AAACAAEAAAAeAPj/AAACAAEAAAAeAPn/AAACAAEAAAAeAPr/AAACAAEAAAAeAPv/AAACAAEAAAAeAPz/AAACAAEAAAAeAP3/AAACAAEAAAAeAP7/AAACAAEAAAAeAP//AAACAAEAAAAfAPL/AAACAAEAAAAfAPP/AAACAAEAAAAfAPT/AAACAAEAAAAfAPX/AAACAAEAAAAfAPb/AAACAAEAAAAfAPf/AAACAAEAAAAfAPj/AAACAAEAAAAfAPn/AAACAAEAAAAfAPr/AAACAAEAAAAfAPv/AAACAAEAAAAfAPz/AAACAAEAAAAfAP3/AAACAAEAAAAfAP7/AAACAAEAAAAfAP//AAACAAEAAAAgAPL/AAACAAEAAAAgAPP/AAACAAEAAAAgAPT/AAACAAEAAAAgAPX/AAACAAEAAAAgAPb/AAACAAEAAAAgAPf/AAACAAEAAAAgAPj/AAACAAEAAAAgAPn/AAACAAEAAAAgAPr/AAACAAEAAAAgAPv/AAACAAEAAAAgAPz/AAACAAEAAAAgAP3/AAACAAEAAAAgAP7/AAACAAEAAAAgAP//AAACAAEAAAAhAPL/AAACAAEAAAAhAPP/AAACAAEAAAAhAPT/AAACAAEAAAAhAPX/AAACAAEAAAAhAPb/AAACAAEAAAAhAPf/AAACAAEAAAAhAPj/AAACAAEAAAAhAPn/AAACAAEAAAAhAPr/AAACAAEAAAAhAPv/AAACAAEAAAAhAPz/AAACAAEAAAAhAP3/AAACAAEAAAAhAP7/AAACAAEAAAAhAP//AAACAAEAAAAiAPL/AAACAAEAAAAiAPP/AAACAAEAAAAiAPT/AAACAAEAAAAiAPX/AAACAAEAAAAiAPb/AAACAAEAAAAiAPf/AAACAAEAAAAiAPj/AAACAAEAAAAiAPn/AAACAAEAAAAiAPr/AAACAAEAAAAiAPv/AAACAAEAAAAiAPz/AAACAAEAAAAiAP3/AAACAAEAAAAiAP7/AAACAAEAAAAiAP//AAACAAEAAAAjAPL/AAACAAEAAAAjAPP/AAACAAEAAAAjAPT/AAACAAEAAAAjAPX/AAACAAEAAAAjAPb/AAACAAEAAAAjAPf/AAACAAEAAAAjAPj/AAACAAEAAAAjAPn/AAACAAEAAAAjAPr/AAACAAEAAAAjAPv/AAACAAEAAAAjAPz/AAACAAEAAAAjAP3/AAACAAEAAAAjAP7/AAACAAEAAAAjAP//AAACAAEAAAAkAPL/AAACAAEAAAAkAPP/AAACAAEAAAAkAPT/AAACAAEAAAAkAPX/AAACAAEAAAAkAPb/AAACAAEAAAAkAPf/AAACAAEAAAAkAPj/AAACAAEAAAAkAPn/AAACAAEAAAAkAPr/AAACAAEAAAAkAPv/AAACAAEAAAAkAPz/AAACAAEAAAAkAP3/AAACAAEAAAAkAP7/AAACAAEAAAAkAP//AAACAAEAAAAlAPL/AAACAAEAAAAlAPP/AAACAAEAAAAlAPT/AAACAAEAAAAlAPX/AAACAAEAAAAlAPb/AAACAAEAAAAlAPf/AAACAAEAAAAlAPj/AAACAAEAAAAlAPn/AAACAAEAAAAlAPr/AAACAAEAAAAlAPv/AAACAAEAAAAlAPz/AAACAAEAAAAlAP3/AAACAAEAAAAlAP7/AAACAAEAAAAlAP//AAACAAEAAAAmAPL/AAACAAEAAAAmAPP/AAACAAEAAAAmAPT/AAACAAEAAAAmAPX/AAACAAEAAAAmAPb/AAACAAEAAAAmAPf/AAACAAEAAAAmAPj/AAACAAEAAAAmAPn/AAACAAEAAAAmAPr/AAACAAEAAAAmAPv/AAACAAEAAAAmAPz/AAACAAEAAAAmAP3/AAACAAEAAAAmAP7/AAACAAEAAAAmAP//AAACAAEAAAAnAPL/AAACAAEAAAAnAPP/AAACAAEAAAAnAPT/AAACAAEAAAAnAPX/AAACAAEAAAAnAPb/AAACAAEAAAAnAPf/AAACAAEAAAAnAPj/AAACAAEAAAAnAPn/AAACAAEAAAAnAPr/AAACAAEAAAAnAPv/AAACAAEAAAAnAPz/AAACAAEAAAAnAP3/AAACAAEAAAAnAP7/AAACAAEAAAAnAP//AAACAAEAAAAoAPL/AAACAAEAAAAoAPP/AAACAAEAAAAoAPT/AAACAAEAAAAoAPX/AAACAAEAAAAoAPb/AAACAAEAAAAoAPf/AAACAAEAAAAoAPj/AAACAAEAAAAoAPn/AAACAAEAAAAoAPr/AAACAAEAAAAoAPv/AAACAAEAAAAoAPz/AAACAAEAAAAoAP3/AAACAAEAAAAoAP7/AAACAAEAAAAoAP//AAACAAEAAAApAPL/AAACAAEAAAApAPP/AAACAAEAAAApAPT/AAACAAEAAAApAPX/AAACAAEAAAApAPb/AAACAAEAAAApAPf/AAACAAEAAAApAPj/AAACAAEAAAApAPn/AAACAAEAAAApAPr/AAACAAEAAAApAPv/AAACAAEAAAApAPz/AAACAAEAAAApAP3/AAACAAEAAAApAP7/AAACAAEAAAApAP//AAACAAEAAAAqAPL/AAACAAEAAAAqAPP/AAACAAEAAAAqAPT/AAACAAEAAAAqAPX/AAACAAEAAAAqAPb/AAACAAEAAAAqAPf/AAACAAEAAAAqAPj/AAACAAEAAAAqAPn/AAACAAEAAAAqAPr/AAACAAEAAAAqAPv/AAACAAEAAAAqAPz/AAACAAEAAAAqAP3/AAACAAEAAAAqAP7/AAACAAEAAAAqAP//AAACAAEAAAArAPL/AAACAAEAAAArAPP/AAACAAEAAAArAPT/AAACAAEAAAArAPX/AAACAAEAAAArAPb/AAACAAEAAAArAPf/AAACAAEAAAArAPj/AAACAAEAAAArAPn/AAACAAEAAAArAPr/AAACAAEAAAArAPv/AAACAAEAAAArAPz/AAACAAEAAAArAP3/AAACAAEAAAArAP7/AAACAAEAAAArAP//AAACAAEAAAAsAPL/AAACAAEAAAAsAPP/AAACAAEAAAAsAPT/AAACAAEAAAAsAPX/AAACAAEAAAAsAPb/AAACAAEAAAAsAPf/AAACAAEAAAAsAPj/AAACAAEAAAAsAPn/AAACAAEAAAAsAPr/AAACAAEAAAAsAPv/AAACAAEAAAAsAPz/AAACAAEAAAAsAP3/AAACAAEAAAAsAP7/AAACAAEAAAAsAP//AAACAAEAAAAtAPL/AAACAAEAAAAtAPP/AAACAAEAAAAtAPT/AAACAAEAAAAtAPX/AAACAAEAAAAtAPb/AAACAAEAAAAtAPf/AAACAAEAAAAtAPj/AAACAAEAAAAtAPn/AAACAAEAAAAtAPr/AAACAAEAAAAtAPv/AAACAAEAAAAtAPz/AAACAAEAAAAtAP3/AAACAAEAAAAtAP7/AAACAAEAAAAtAP//AAACAAEAAAAuAPL/AAACAAEAAAAuAPP/AAACAAEAAAAuAPT/AAACAAEAAAAuAPX/AAACAAEAAAAuAPb/AAACAAEAAAAuAPf/AAACAAEAAAAuAPj/AAACAAEAAAAuAPn/AAACAAEAAAAuAPr/AAACAAEAAAAuAPv/AAACAAEAAAAuAPz/AAACAAEAAAAuAP3/AAACAAEAAAAuAP7/AAACAAEAAAAuAP//AAACAAEAAAAvAPL/AAACAAEAAAAvAPP/AAACAAEAAAAvAPT/AAACAAEAAAAvAPX/AAACAAEAAAAvAPb/AAACAAEAAAAvAPf/AAACAAEAAAAvAPj/AAACAAEAAAAvAPn/AAACAAEAAAAvAPr/AAACAAEAAAAvAPv/AAACAAEAAAAvAPz/AAACAAEAAAAvAP3/AAACAAEAAAAvAP7/AAACAAEAAAAvAP//AAACAAEAAAAwAPL/AAACAAEAAAAwAPP/AAACAAEAAAAwAPT/AAACAAEAAAAwAPX/AAACAAEAAAAwAPb/AAACAAEAAAAwAPf/AAACAAEAAAAwAPj/AAACAAEAAAAwAPn/AAACAAEAAAAwAPr/AAACAAEAAAAwAPv/AAACAAEAAAAwAPz/AAACAAEAAAAwAP3/AAACAAEAAAAwAP7/AAACAAEAAAAwAP//AAACAAEAAAAxAPL/AAACAAEAAAAxAPP/AAACAAEAAAAxAPT/AAACAAEAAAAxAPX/AAACAAEAAAAxAPb/AAACAAEAAAAxAPf/AAACAAEAAAAxAPj/AAACAAEAAAAxAPn/AAACAAEAAAAxAPr/AAACAAEAAAAxAPv/AAACAAEAAAAxAPz/AAACAAEAAAAxAP3/AAACAAEAAAAxAP7/AAACAAEAAAAxAP//AAACAAEAAAAyAPL/AAACAAEAAAAyAPP/AAACAAEAAAAyAPT/AAACAAEAAAAyAPX/AAACAAEAAAAyAPb/AAACAAEAAAAyAPf/AAACAAEAAAAyAPj/AAACAAEAAAAyAPn/AAACAAEAAAAyAPr/AAACAAEAAAAyAPv/AAACAAEAAAAyAPz/AAACAAEAAAAyAP3/AAACAAEAAAAyAP7/AAACAAEAAAAyAP//AAACAAEAAAAzAPL/AAACAAEAAAAzAPP/AAACAAEAAAAzAPT/AAACAAEAAAAzAPX/AAACAAEAAAAzAPb/AAACAAEAAAAzAPf/AAACAAEAAAAzAPj/AAACAAEAAAAzAPn/AAACAAEAAAAzAPr/AAACAAEAAAAzAPv/AAACAAEAAAAzAPz/AAACAAEAAAAzAP3/AAACAAEAAAAzAP7/AAACAAEAAAAzAP//AAACAAEAAAA0APL/AAACAAEAAAA0APP/AAACAAEAAAA0APT/AAACAAEAAAA0APX/AAACAAEAAAA0APb/AAACAAEAAAA0APf/AAACAAEAAAA0APj/AAACAAEAAAA0APn/AAACAAEAAAA0APr/AAACAAEAAAA0APv/AAACAAEAAAA0APz/AAACAAEAAAA0AP3/AAACAAEAAAA0AP7/AAACAAEAAAA0AP//AAACAAEAAAA1APL/AAACAAEAAAA1APP/AAACAAEAAAA1APT/AAACAAEAAAA1APX/AAACAAEAAAA1APb/AAACAAEAAAA1APf/AAACAAEAAAA1APj/AAACAAEAAAA1APn/AAACAAEAAAA1APr/AAACAAEAAAA1APv/AAACAAEAAAA1APz/AAACAAEAAAA1AP3/AAACAAEAAAA1AP7/AAACAAEAAAA1AP//AAACAAEAAAA2APL/AAACAAEAAAA2APP/AAACAAEAAAA2APT/AAACAAEAAAA2APX/AAACAAEAAAA2APb/AAACAAEAAAA2APf/AAACAAEAAAA2APj/AAACAAEAAAA2APn/AAACAAEAAAA2APr/AAACAAEAAAA2APv/AAACAAEAAAA2APz/AAACAAEAAAA2AP3/AAACAAEAAAA2AP7/AAACAAEAAAA2AP//AAACAAEAAAA3APL/AAACAAEAAAA3APP/AAACAAEAAAA3APT/AAACAAEAAAA3APX/AAACAAEAAAA3APb/AAACAAEAAAA3APf/AAACAAEAAAA3APj/AAACAAEAAAA3APn/AAACAAEAAAA3APr/AAACAAEAAAA3APv/AAACAAEAAAA3APz/AAACAAEAAAA3AP3/AAACAAEAAAA3AP7/AAACAAEAAAA3AP//AAACAAEAAAA4APL/AAACAAEAAAA4APP/AAACAAEAAAA4APT/AAACAAEAAAA4APX/AAACAAEAAAA4APb/AAACAAEAAAA4APf/AAACAAEAAAA4APj/AAACAAEAAAA4APn/AAACAAEAAAA4APr/AAACAAEAAAA4APv/AAACAAEAAAA4APz/AAACAAEAAAA4AP3/AAACAAEAAAA4AP7/AAACAAEAAAA4AP//AAACAAEAAAA5APL/AAACAAEAAAA5APP/AAACAAEAAAA5APT/AAACAAEAAAA5APX/AAACAAEAAAA5APb/AAACAAEAAAA5APf/AAACAAEAAAA5APj/AAACAAEAAAA5APn/AAACAAEAAAA5APr/AAACAAEAAAA5APv/AAACAAEAAAA5APz/AAACAAEAAAA5AP3/AAACAAEAAAA5AP7/AAACAAEAAAA5AP//AAACAAEAAAA6APL/AAACAAEAAAA6APP/AAACAAEAAAA6APT/AAACAAEAAAA6APX/AAACAAEAAAA6APb/AAACAAEAAAA6APf/AAACAAEAAAA6APj/AAACAAEAAAA6APn/AAACAAEAAAA6APr/AAACAAEAAAA6APv/AAACAAEAAAA6APz/AAACAAEAAAA6AP3/AAACAAEAAAA6AP7/AAACAAEAAAA6AP//AAACAAEAAAA7APL/AAACAAEAAAA7APP/AAACAAEAAAA7APT/AAACAAEAAAA7APX/AAACAAEAAAA7APb/AAACAAEAAAA7APf/AAACAAEAAAA7APj/AAACAAEAAAA7APn/AAACAAEAAAA7APr/AAACAAEAAAA7APv/AAACAAEAAAA7APz/AAACAAEAAAA7AP3/AAACAAEAAAA7AP7/AAACAAEAAAA7AP//AAACAAEAAAA8APL/AAACAAEAAAA8APP/AAACAAEAAAA8APT/AAACAAEAAAA8APX/AAACAAEAAAA8APb/AAACAAEAAAA8APf/AAACAAEAAAA8APj/AAACAAEAAAA8APn/AAACAAEAAAA8APr/AAACAAEAAAA8APv/AAACAAEAAAA8APz/AAACAAEAAAA8AP3/AAACAAEAAAA8AP7/AAACAAEAAAA8AP//AAACAAEAAAA9APL/AAACAAEAAAA9APP/AAACAAEAAAA9APT/AAACAAEAAAA9APX/AAACAAEAAAA9APb/AAACAAEAAAA9APf/AAACAAEAAAA9APj/AAACAAEAAAA9APn/AAACAAEAAAA9APr/AAACAAEAAAA9APv/AAACAAEAAAA9APz/AAACAAEAAAA9AP3/AAACAAEAAAA9AP7/AAACAAEAAAA9AP//AAACAAEAAAA+APL/AAACAAEAAAA+APP/AAACAAEAAAA+APT/AAACAAEAAAA+APX/AAACAAEAAAA+APb/AAACAAEAAAA+APf/AAACAAEAAAA+APj/AAACAAEAAAA+APn/AAACAAEAAAA+APr/AAACAAEAAAA+APv/AAACAAEAAAA+APz/AAACAAEAAAA+AP3/AAACAAEAAAA+AP7/AAACAAEAAAA+AP//AAACAAEAAAA/APL/AAACAAEAAAA/APP/AAACAAEAAAA/APT/AAACAAEAAAA/APX/AAACAAEAAAA/APb/AAACAAEAAAA/APf/AAACAAEAAAA/APj/AAACAAEAAAA/APn/AAACAAEAAAA/APr/AAACAAEAAAA/APv/AAACAAEAAAA/APz/AAACAAEAAAA/AP3/AAACAAEAAAA/AP7/AAACAAEAAAA/AP//AAACAAEAAABAAPL/AAACAAEAAABAAPP/AAACAAEAAABAAPT/AAACAAEAAABAAPX/AAACAAEAAABAAPb/AAACAAEAAABAAPf/AAACAAEAAABAAPj/AAACAAEAAABAAPn/AAACAAEAAABAAPr/AAACAAEAAABAAPv/AAACAAEAAABAAPz/AAACAAEAAABAAP3/AAACAAEAAABAAP7/AAACAAEAAABAAP//AAACAAEAAABBAPL/AAACAAEAAABBAPP/AAACAAEAAABBAPT/AAACAAEAAABBAPX/AAACAAEAAABBAPb/AAACAAEAAABBAPf/AAACAAEAAABBAPj/AAACAAEAAABBAPn/AAACAAEAAABBAPr/AAACAAEAAABBAPv/AAACAAEAAABBAPz/AAACAAEAAABBAP3/AAACAAEAAABBAP7/AAACAAEAAABBAP//AAACAAEAAABCAPL/AAACAAEAAABCAPP/AAACAAEAAABCAPT/AAACAAEAAABCAPX/AAACAAEAAABCAPb/AAACAAEAAABCAPf/AAACAAEAAABCAPj/AAACAAEAAABCAPn/AAACAAEAAABCAPr/AAACAAEAAABCAPv/AAACAAEAAABCAPz/AAACAAEAAABCAP3/AAACAAEAAABCAP7/AAACAAEAAABCAP//AAACAAEAAABDAPL/AAACAAEAAABDAPP/AAACAAEAAABDAPT/AAACAAEAAABDAPX/AAACAAEAAABDAPb/AAACAAEAAABDAPf/AAACAAEAAABDAPj/AAACAAEAAABDAPn/AAACAAEAAABDAPr/AAACAAEAAABDAPv/AAACAAEAAABDAPz/AAACAAEAAABDAP3/AAACAAEAAABDAP7/AAACAAEAAABDAP//AAACAAEAAABEAPL/AAACAAEAAABEAPP/AAACAAEAAABEAPT/AAACAAEAAABEAPX/AAACAAEAAABEAPb/AAACAAEAAABEAPf/AAACAAEAAABEAPj/AAACAAEAAABEAPn/AAACAAEAAABEAPr/AAACAAEAAABEAPv/AAACAAEAAABEAPz/AAACAAEAAABEAP3/AAACAAEAAABEAP7/AAACAAEAAABEAP//AAACAAEAAABFAPL/AAACAAEAAABFAPP/AAACAAEAAABFAPT/AAACAAEAAABFAPX/AAACAAEAAABFAPb/AAACAAEAAABFAPf/AAACAAEAAABFAPj/AAACAAEAAABFAPn/AAACAAEAAABFAPr/AAACAAEAAABFAPv/AAACAAEAAABFAPz/AAACAAEAAABFAP3/AAACAAEAAABFAP7/AAACAAEAAABFAP//AAACAAEAAAA=")
-tile_set = SubResource("TileSet_5bd38")
-
-[node name="Player" parent="." instance=ExtResource("2_07rl6")]
-position = Vector2(584, 442)
-
-[node name="DoorSceneManager" parent="." node_paths=PackedStringArray("player") instance=ExtResource("3_3eu8f")]
-position = Vector2(584, 456)
-scale = Vector2(3.44061, 0.770942)
-player = NodePath("../Player")
-push_direction = 2
-
-[node name="Camera2D" type="Camera2D" parent="."]
-z_index = 4096
-position = Vector2(582, 328)
-zoom = Vector2(2, 2)
-
-[node name="PauseMenu" parent="Camera2D" instance=ExtResource("1_yi287")]
+++ /dev/null
-[gd_scene load_steps=10 format=3 uid="uid://cjvtoi20cy8wi"]
-
-[ext_resource type="Script" path="res://scripts/inventory.gd" id="1_8uk8r"]
-[ext_resource type="Script" path="res://addons/gloot/core/inventory_grid_stacked.gd" id="2_yqb3t"]
-[ext_resource type="Script" path="res://addons/gloot/core/item_protoset.gd" id="3_76oh0"]
-[ext_resource type="Script" path="res://addons/gloot/core/inventory_item.gd" id="4_dbq78"]
-[ext_resource type="Texture2D" uid="uid://caxlr5o014d0h" path="res://assets/ui/button_square_depth_line.png" id="4_pbytw"]
-[ext_resource type="Theme" uid="uid://c6osikflt1uy1" path="res://assets/resources/ui_theme.tres" id="6_em7re"]
-[ext_resource type="Script" path="res://addons/gloot/ui/ctrl_inventory_grid.gd" id="7_v7tk4"]
-
-[sub_resource type="Resource" id="Resource_g1a6x"]
-script = ExtResource("3_76oh0")
-json_data = "[
- {
- \"_comment\": \"Grid Based Inventory\",
- \"description\": \"An example item used as a base to create other items.\",
- \"height\": 2,
- \"id\": \"base_item\",
- \"image\": \"res://assets/textures/book.png\",
- \"name\": \"Base Item\",
- \"stack_size\": 10,
- \"weight\": 1,
- \"width\": 2
- }
-]"
-
-[sub_resource type="PlaceholderTexture2D" id="PlaceholderTexture2D_cujr1"]
-size = Vector2(30, 30)
-
-[node name="InventoryMenu" type="Control"]
-process_mode = 2
-layout_mode = 3
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-script = ExtResource("1_8uk8r")
-
-[node name="InventoryGridStacked" type="Node" parent="."]
-script = ExtResource("2_yqb3t")
-size = Vector2i(5, 5)
-item_protoset = SubResource("Resource_g1a6x")
-
-[node name="_Node_80111" type="Node" parent="InventoryGridStacked"]
-script = ExtResource("4_dbq78")
-protoset = SubResource("Resource_g1a6x")
-prototype_id = "base_item"
-
-[node name="CenterContainer" type="CenterContainer" parent="."]
-layout_mode = 1
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-
-[node name="PanelContainer" type="PanelContainer" parent="CenterContainer"]
-layout_mode = 2
-
-[node name="NinePatchRect" type="NinePatchRect" parent="CenterContainer/PanelContainer"]
-modulate = Color(0.831856, 0.844692, 0.906161, 1)
-custom_minimum_size = Vector2(100, 100)
-layout_mode = 2
-texture = ExtResource("4_pbytw")
-patch_margin_left = 15
-patch_margin_top = 15
-patch_margin_right = 15
-patch_margin_bottom = 25
-
-[node name="MarginContainer" type="MarginContainer" parent="CenterContainer/PanelContainer"]
-layout_mode = 2
-theme_override_constants/margin_left = 50
-theme_override_constants/margin_top = 20
-theme_override_constants/margin_right = 50
-theme_override_constants/margin_bottom = 35
-
-[node name="VBoxContainer" type="VBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer"]
-layout_mode = 2
-
-[node name="Row1Container" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer"]
-layout_mode = 2
-alignment = 1
-
-[node name="CtrlInventoryGrid" type="Control" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Row1Container"]
-custom_minimum_size = Vector2(100, 100)
-layout_mode = 2
-script = ExtResource("7_v7tk4")
-inventory_path = NodePath("../../../../../../InventoryGridStacked")
-default_item_texture = SubResource("PlaceholderTexture2D_cujr1")
-
-[node name="MarginContainer" type="MarginContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer"]
-layout_mode = 2
-theme_override_constants/margin_top = 20
-
-[node name="HBoxContainer" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/MarginContainer"]
-layout_mode = 2
-alignment = 2
-
-[node name="ReturnButton" type="Button" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/MarginContainer/HBoxContainer"]
-modulate = Color(0.901197, 0.823165, 0.861526, 1)
-custom_minimum_size = Vector2(150, 0)
-layout_mode = 2
-theme = ExtResource("6_em7re")
-text = "Return"
-
-[connection signal="visibility_changed" from="." to="." method="_on_visibility_changed"]
-[connection signal="pressed" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/MarginContainer/HBoxContainer/ReturnButton" to="." method="_on_return_button_pressed"]
+++ /dev/null
-[gd_scene load_steps=4 format=3 uid="uid://d11oo2pxcah1g"]
-
-[ext_resource type="Script" path="res://scripts/pause_menu.gd" id="1_aq3as"]
-[ext_resource type="Script" path="res://addons/label_font_auto_sizer/label_auto_sizer.gd" id="2_j81qh"]
-
-[sub_resource type="LabelSettings" id="LabelSettings_3vmtb"]
-font_size = 50
-
-[node name="PauseMenu" type="Control"]
-process_mode = 3
-z_index = 4096
-layout_mode = 3
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-script = ExtResource("1_aq3as")
-
-[node name="CenterContainer" type="CenterContainer" parent="."]
-layout_mode = 1
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-
-[node name="VBoxContainer" type="VBoxContainer" parent="CenterContainer"]
-layout_mode = 2
-
-[node name="PauseLabel" type="Label" parent="CenterContainer/VBoxContainer"]
-custom_minimum_size = Vector2(250, 100)
-layout_mode = 2
-theme_override_font_sizes/font_size = 16
-text = "Pause"
-label_settings = SubResource("LabelSettings_3vmtb")
-horizontal_alignment = 1
-vertical_alignment = 1
-autowrap_mode = 3
-clip_text = true
-script = ExtResource("2_j81qh")
-_size_just_modified_by_autosizer = false
-_set_defaults = true
-_base_font_size = 50
-_current_font_size = 50
-_last_size_state = 1
-
-[node name="HBoxContainer" type="HBoxContainer" parent="CenterContainer/VBoxContainer"]
-layout_mode = 2
-alignment = 1
-
-[node name="MarginContainer" type="MarginContainer" parent="CenterContainer/VBoxContainer/HBoxContainer"]
-layout_mode = 2
-theme_override_constants/margin_left = 32
-theme_override_constants/margin_top = 32
-theme_override_constants/margin_right = 32
-theme_override_constants/margin_bottom = 32
-
-[node name="SaveButton" type="Button" parent="CenterContainer/VBoxContainer/HBoxContainer/MarginContainer"]
-layout_mode = 2
-text = "Save"
-
-[node name="MarginContainer2" type="MarginContainer" parent="CenterContainer/VBoxContainer/HBoxContainer"]
-layout_mode = 2
-theme_override_constants/margin_left = 32
-theme_override_constants/margin_top = 32
-theme_override_constants/margin_right = 32
-theme_override_constants/margin_bottom = 32
-
-[node name="LoadButton" type="Button" parent="CenterContainer/VBoxContainer/HBoxContainer/MarginContainer2"]
-layout_mode = 2
-text = "Load
-"
-
-[connection signal="pressed" from="CenterContainer/VBoxContainer/HBoxContainer/MarginContainer/SaveButton" to="." method="_on_save_button_pressed"]
-[connection signal="pressed" from="CenterContainer/VBoxContainer/HBoxContainer/MarginContainer2/LoadButton" to="." method="_on_load_button_pressed"]
+++ /dev/null
-[gd_scene load_steps=6 format=3 uid="uid://bsiy7irf1p5e1"]
-
-[ext_resource type="Script" path="res://scripts/save_menu.gd" id="1_47jxk"]
-[ext_resource type="Texture2D" uid="uid://caxlr5o014d0h" path="res://assets/ui/button_square_depth_line.png" id="1_ejhmr"]
-[ext_resource type="Script" path="res://addons/label_font_auto_sizer/label_auto_sizer.gd" id="2_mvfow"]
-[ext_resource type="Theme" uid="uid://c6osikflt1uy1" path="res://assets/resources/ui_theme.tres" id="3_n5hex"]
-
-[sub_resource type="LabelSettings" id="LabelSettings_q7utc"]
-font_size = 32
-font_color = Color(0.900196, 0.84087, 0.882328, 1)
-outline_size = 5
-outline_color = Color(0, 0, 0, 1)
-
-[node name="SaveMenu" type="Control"]
-process_mode = 2
-layout_mode = 3
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-script = ExtResource("1_47jxk")
-
-[node name="CenterContainer" type="CenterContainer" parent="."]
-layout_mode = 1
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-
-[node name="PanelContainer" type="PanelContainer" parent="CenterContainer"]
-layout_mode = 2
-
-[node name="NinePatchRect" type="NinePatchRect" parent="CenterContainer/PanelContainer"]
-modulate = Color(0.831856, 0.844692, 0.906161, 1)
-custom_minimum_size = Vector2(100, 100)
-layout_mode = 2
-texture = ExtResource("1_ejhmr")
-patch_margin_left = 15
-patch_margin_top = 15
-patch_margin_right = 15
-patch_margin_bottom = 25
-
-[node name="MarginContainer" type="MarginContainer" parent="CenterContainer/PanelContainer"]
-layout_mode = 2
-theme_override_constants/margin_left = 50
-theme_override_constants/margin_top = 20
-theme_override_constants/margin_right = 50
-theme_override_constants/margin_bottom = 35
-
-[node name="VBoxContainer" type="VBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer"]
-layout_mode = 2
-
-[node name="LabelAutoSizer" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer"]
-custom_minimum_size = Vector2(0, 50)
-layout_mode = 2
-theme_override_font_sizes/font_size = 8
-text = "Save"
-label_settings = SubResource("LabelSettings_q7utc")
-horizontal_alignment = 1
-vertical_alignment = 1
-autowrap_mode = 3
-clip_text = true
-script = ExtResource("2_mvfow")
-_size_just_modified_by_autosizer = false
-_set_defaults = true
-_base_font_size = 32
-_current_font_size = 32
-_last_size_state = 1
-
-[node name="Row1Container" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer"]
-layout_mode = 2
-alignment = 1
-
-[node name="Slot1Button" type="Button" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Row1Container"]
-custom_minimum_size = Vector2(150, 0)
-layout_mode = 2
-theme = ExtResource("3_n5hex")
-text = "Slot 1"
-
-[node name="Slot2Button" type="Button" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Row1Container"]
-custom_minimum_size = Vector2(150, 0)
-layout_mode = 2
-theme = ExtResource("3_n5hex")
-text = "Slot 2"
-
-[node name="Row2Container" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer"]
-layout_mode = 2
-alignment = 1
-
-[node name="Slot3Button" type="Button" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Row2Container"]
-custom_minimum_size = Vector2(150, 0)
-layout_mode = 2
-theme = ExtResource("3_n5hex")
-text = "Slot 3"
-
-[node name="Slot4Button" type="Button" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Row2Container"]
-custom_minimum_size = Vector2(150, 0)
-layout_mode = 2
-theme = ExtResource("3_n5hex")
-text = "Slot 4"
-
-[node name="MarginContainer" type="MarginContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer"]
-layout_mode = 2
-theme_override_constants/margin_top = 20
-
-[node name="HBoxContainer" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/MarginContainer"]
-layout_mode = 2
-alignment = 2
-
-[node name="ReturnButton" type="Button" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/MarginContainer/HBoxContainer"]
-modulate = Color(0.901197, 0.823165, 0.861526, 1)
-custom_minimum_size = Vector2(150, 0)
-layout_mode = 2
-theme = ExtResource("3_n5hex")
-text = "Return"
-
-[connection signal="visibility_changed" from="." to="." method="_on_visibility_changed"]
-[connection signal="pressed" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Row1Container/Slot1Button" to="." method="_on_slot1_button_pressed"]
-[connection signal="pressed" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Row1Container/Slot2Button" to="." method="_on_slot2_button_pressed"]
-[connection signal="pressed" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Row2Container/Slot3Button" to="." method="_on_slot3_button_pressed"]
-[connection signal="pressed" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Row2Container/Slot4Button" to="." method="_on_slot4_button_pressed"]
-[connection signal="pressed" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/MarginContainer/HBoxContainer/ReturnButton" to="." method="_on_return_button_pressed"]
--- /dev/null
+[gd_scene load_steps=8 format=4 uid="uid://bk4h1frr4r8tq"]
+
+[ext_resource type="Script" uid="uid://bv1k68dotk1b0" path="res://scripts/house_template.gd" id="1_877m4"]
+[ext_resource type="Texture2D" uid="uid://d4j4ulftsvn5c" path="res://assets/textures/Inner.png" id="2_wq277"]
+[ext_resource type="PackedScene" uid="uid://k76535tjepm3" path="res://scenes/elements/player.tscn" id="3_3sswl"]
+[ext_resource type="PackedScene" uid="uid://da1uex028xkv1" path="res://scenes/elements/door_scene_manager.tscn" id="4_3t3gn"]
+[ext_resource type="PackedScene" uid="uid://d11oo2pxcah1g" path="res://scenes/menu/pause_menu.tscn" id="5_gl2jq"]
+
+[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_q4fiy"]
+texture = ExtResource("2_wq277")
+0:0/0 = 0
+1:0/0 = 0
+1:0/0/z_index = -1
+2:0/0 = 0
+2:0/0/z_index = -1
+3:0/0 = 0
+3:0/0/z_index = -1
+4:0/0 = 0
+4:0/0/z_index = -1
+5:0/0 = 0
+5:0/0/z_index = -1
+6:0/0 = 0
+6:0/0/z_index = -1
+7:0/0 = 0
+7:0/0/z_index = -1
+8:0/0 = 0
+8:0/0/z_index = -1
+9:0/0 = 0
+10:0/0 = 0
+11:0/0 = 0
+12:0/0 = 0
+12:0/0/z_index = 1
+13:0/0 = 0
+13:0/0/z_index = 1
+14:0/0 = 0
+14:0/0/z_index = 1
+15:0/0 = 0
+15:0/0/z_index = 1
+16:0/0 = 0
+16:0/0/z_index = 1
+17:0/0 = 0
+17:0/0/z_index = 1
+0:1/0 = 0
+0:1/0/z_index = -1
+1:1/0 = 0
+1:1/0/z_index = -1
+2:1/0 = 0
+2:1/0/z_index = -1
+3:1/0 = 0
+3:1/0/z_index = -1
+4:1/0 = 0
+4:1/0/z_index = -1
+5:1/0 = 0
+5:1/0/z_index = -1
+6:1/0 = 0
+6:1/0/z_index = -1
+7:1/0 = 0
+7:1/0/z_index = -1
+8:1/0 = 0
+8:1/0/z_index = -1
+9:1/0 = 0
+16:1/0 = 0
+16:1/0/z_index = 1
+17:1/0 = 0
+17:1/0/z_index = 1
+18:1/0 = 0
+18:1/0/z_index = 1
+19:1/0 = 0
+19:1/0/z_index = 1
+20:1/0 = 0
+20:1/0/z_index = 1
+21:1/0 = 0
+21:1/0/z_index = 1
+0:2/0 = 0
+0:2/0/z_index = -1
+1:2/0 = 0
+1:2/0/z_index = -1
+2:2/0 = 0
+2:2/0/z_index = -1
+3:2/0 = 0
+3:2/0/z_index = -1
+4:2/0 = 0
+5:2/0 = 0
+5:2/0/z_index = -1
+6:2/0 = 0
+6:2/0/z_index = -1
+7:2/0 = 0
+7:2/0/z_index = -1
+8:2/0 = 0
+8:2/0/z_index = -1
+9:2/0 = 0
+9:2/0/z_index = -1
+16:2/0 = 0
+16:2/0/z_index = 1
+17:2/0 = 0
+17:2/0/z_index = 1
+18:2/0 = 0
+18:2/0/z_index = 1
+19:2/0 = 0
+19:2/0/z_index = 1
+20:2/0 = 0
+20:2/0/z_index = 1
+21:2/0 = 0
+21:2/0/z_index = 1
+0:3/0 = 0
+0:3/0/z_index = -1
+1:3/0 = 0
+1:3/0/z_index = -1
+2:3/0 = 0
+2:3/0/z_index = -1
+3:3/0 = 0
+3:3/0/z_index = -1
+4:3/0 = 0
+5:3/0 = 0
+5:3/0/z_index = -1
+6:3/0 = 0
+6:3/0/z_index = -1
+7:3/0 = 0
+7:3/0/z_index = -1
+8:3/0 = 0
+8:3/0/z_index = -1
+9:3/0 = 0
+9:3/0/z_index = -1
+16:3/0 = 0
+16:3/0/z_index = 1
+17:3/0 = 0
+17:3/0/z_index = 1
+18:3/0 = 0
+18:3/0/z_index = 1
+19:3/0 = 0
+19:3/0/z_index = 1
+20:3/0 = 0
+20:3/0/z_index = 1
+21:3/0 = 0
+21:3/0/z_index = 1
+0:4/0 = 0
+0:4/0/z_index = -1
+1:4/0 = 0
+1:4/0/z_index = -1
+2:4/0 = 0
+2:4/0/z_index = -1
+3:4/0 = 0
+3:4/0/z_index = -1
+4:4/0 = 0
+5:4/0 = 0
+5:4/0/z_index = -1
+6:4/0 = 0
+6:4/0/z_index = -1
+7:4/0 = 0
+8:4/0 = 0
+9:4/0 = 0
+9:4/0/z_index = 1
+10:4/0 = 0
+10:4/0/z_index = 1
+11:4/0 = 0
+11:4/0/z_index = 1
+12:4/0 = 0
+12:4/0/z_index = 1
+13:4/0 = 0
+13:4/0/z_index = 1
+14:4/0 = 0
+14:4/0/z_index = 1
+0:5/0 = 0
+0:5/0/z_index = -1
+1:5/0 = 0
+1:5/0/z_index = -1
+2:5/0 = 0
+2:5/0/z_index = -1
+3:5/0 = 0
+3:5/0/z_index = -1
+4:5/0 = 0
+5:5/0 = 0
+5:5/0/z_index = -1
+6:5/0 = 0
+6:5/0/z_index = -1
+7:5/0 = 0
+8:5/0 = 0
+9:5/0 = 0
+9:5/0/z_index = 1
+10:5/0 = 0
+10:5/0/z_index = 1
+11:5/0 = 0
+11:5/0/z_index = 1
+12:5/0 = 0
+12:5/0/z_index = 1
+13:5/0 = 0
+13:5/0/z_index = 1
+14:5/0 = 0
+14:5/0/z_index = 1
+0:6/0 = 0
+2:6/0 = 0
+3:6/0 = 0
+4:6/0 = 0
+5:6/0 = 0
+6:6/0 = 0
+7:6/0 = 0
+8:6/0 = 0
+9:6/0 = 0
+10:6/0 = 0
+10:6/0/z_index = 1
+11:6/0 = 0
+11:6/0/z_index = 1
+12:6/0 = 0
+12:6/0/z_index = 1
+13:6/0 = 0
+13:6/0/z_index = 1
+14:6/0 = 0
+14:6/0/z_index = 1
+0:7/0 = 0
+0:7/0/z_index = 1
+1:7/0 = 0
+1:7/0/z_index = 1
+2:7/0 = 0
+2:7/0/z_index = 1
+3:7/0 = 0
+3:7/0/z_index = 1
+4:7/0 = 0
+4:7/0/z_index = 1
+5:7/0 = 0
+5:7/0/z_index = 1
+6:7/0 = 0
+6:7/0/z_index = 1
+7:7/0 = 0
+7:7/0/z_index = 1
+8:7/0 = 0
+8:7/0/z_index = 1
+9:7/0 = 0
+9:7/0/z_index = 1
+10:7/0 = 0
+10:7/0/z_index = 1
+11:7/0 = 0
+11:7/0/z_index = 1
+12:7/0 = 0
+12:7/0/z_index = 1
+13:7/0 = 0
+13:7/0/z_index = 1
+14:7/0 = 0
+14:7/0/z_index = 1
+15:7/0 = 0
+15:7/0/z_index = 1
+16:7/0 = 0
+16:7/0/z_index = 1
+0:8/0 = 0
+0:8/0/z_index = 1
+1:8/0 = 0
+1:8/0/z_index = 1
+2:8/0 = 0
+2:8/0/z_index = 1
+3:8/0 = 0
+3:8/0/z_index = 1
+4:8/0 = 0
+4:8/0/z_index = 1
+5:8/0 = 0
+5:8/0/z_index = 1
+6:8/0 = 0
+6:8/0/z_index = 1
+7:8/0 = 0
+7:8/0/z_index = 1
+8:8/0 = 0
+8:8/0/z_index = 1
+9:8/0 = 0
+9:8/0/z_index = 1
+10:8/0 = 0
+10:8/0/z_index = 1
+11:8/0 = 0
+11:8/0/z_index = 1
+12:8/0 = 0
+12:8/0/z_index = 1
+13:8/0 = 0
+13:8/0/z_index = 1
+14:8/0 = 0
+14:8/0/z_index = 1
+15:8/0 = 0
+15:8/0/z_index = 1
+16:8/0 = 0
+0:9/0 = 0
+0:9/0/z_index = 1
+1:9/0 = 0
+1:9/0/z_index = 1
+2:9/0 = 0
+2:9/0/z_index = 1
+3:9/0 = 0
+3:9/0/z_index = 1
+4:9/0 = 0
+4:9/0/z_index = 1
+5:9/0 = 0
+5:9/0/z_index = 1
+6:9/0 = 0
+6:9/0/z_index = 1
+7:9/0 = 0
+7:9/0/z_index = 1
+8:9/0 = 0
+8:9/0/z_index = 1
+9:9/0 = 0
+10:9/0 = 0
+10:9/0/z_index = 1
+11:9/0 = 0
+12:9/0 = 0
+12:9/0/z_index = 1
+13:9/0 = 0
+13:9/0/z_index = 1
+14:9/0 = 0
+14:9/0/z_index = 1
+15:9/0 = 0
+15:9/0/z_index = 1
+16:9/0 = 0
+16:9/0/z_index = 1
+0:10/0 = 0
+0:10/0/z_index = 1
+1:10/0 = 0
+1:10/0/z_index = 1
+2:10/0 = 0
+2:10/0/z_index = 1
+3:10/0 = 0
+3:10/0/z_index = 1
+4:10/0 = 0
+4:10/0/z_index = 1
+5:10/0 = 0
+5:10/0/z_index = 1
+6:10/0 = 0
+6:10/0/z_index = 1
+7:10/0 = 0
+7:10/0/z_index = 1
+8:10/0 = 0
+8:10/0/z_index = 1
+9:10/0 = 0
+9:10/0/z_index = 1
+10:10/0 = 0
+10:10/0/z_index = 1
+11:10/0 = 0
+12:10/0 = 0
+12:10/0/z_index = 1
+13:10/0 = 0
+13:10/0/z_index = 1
+0:11/0 = 0
+0:11/0/z_index = 1
+1:11/0 = 0
+1:11/0/z_index = 1
+2:11/0 = 0
+2:11/0/z_index = 1
+3:11/0 = 0
+3:11/0/z_index = 1
+4:11/0 = 0
+4:11/0/z_index = 1
+5:11/0 = 0
+5:11/0/z_index = 1
+6:11/0 = 0
+6:11/0/z_index = 1
+7:11/0 = 0
+7:11/0/z_index = 1
+8:11/0 = 0
+8:11/0/z_index = 1
+9:11/0 = 0
+9:11/0/z_index = 1
+10:11/0 = 0
+10:11/0/z_index = 1
+11:11/0 = 0
+11:11/0/z_index = 1
+12:11/0 = 0
+12:11/0/z_index = 1
+13:11/0 = 0
+13:11/0/z_index = 1
+0:12/0 = 0
+0:12/0/z_index = 1
+1:12/0 = 0
+1:12/0/z_index = 1
+2:12/0 = 0
+2:12/0/z_index = 1
+3:12/0 = 0
+3:12/0/z_index = 1
+4:12/0 = 0
+4:12/0/z_index = 1
+5:12/0 = 0
+5:12/0/z_index = 1
+6:12/0 = 0
+6:12/0/z_index = 1
+7:12/0 = 0
+7:12/0/z_index = 1
+8:12/0 = 0
+8:12/0/z_index = 1
+9:12/0 = 0
+9:12/0/z_index = 1
+10:12/0 = 0
+10:12/0/z_index = 1
+11:12/0 = 0
+11:12/0/z_index = 1
+12:12/0 = 0
+12:12/0/z_index = 1
+13:12/0 = 0
+13:12/0/z_index = 1
+0:13/0 = 0
+0:13/0/z_index = 1
+1:13/0 = 0
+1:13/0/z_index = 1
+2:13/0 = 0
+2:13/0/z_index = 1
+3:13/0 = 0
+3:13/0/z_index = 1
+4:13/0 = 0
+4:13/0/z_index = 1
+5:13/0 = 0
+5:13/0/z_index = 1
+6:13/0 = 0
+6:13/0/z_index = 1
+7:13/0 = 0
+7:13/0/z_index = 1
+8:13/0 = 0
+8:13/0/z_index = 1
+0:14/0 = 0
+0:14/0/z_index = 1
+1:14/0 = 0
+1:14/0/z_index = 1
+2:14/0 = 0
+2:14/0/z_index = 1
+3:14/0 = 0
+3:14/0/z_index = 1
+4:14/0 = 0
+4:14/0/z_index = 1
+6:14/0 = 0
+6:14/0/z_index = 1
+7:14/0 = 0
+7:14/0/z_index = 1
+0:15/0 = 0
+1:15/0 = 0
+1:15/0/z_index = 1
+2:15/0 = 0
+2:15/0/z_index = 1
+3:15/0 = 0
+3:15/0/z_index = 1
+4:15/0 = 0
+4:15/0/z_index = 1
+6:15/0 = 0
+6:15/0/z_index = 1
+7:15/0 = 0
+7:15/0/z_index = 1
+0:16/0 = 0
+0:16/0/z_index = 1
+1:16/0 = 0
+1:16/0/z_index = 1
+2:16/0 = 0
+2:16/0/z_index = 1
+3:16/0 = 0
+3:16/0/z_index = 1
+4:16/0 = 0
+4:16/0/z_index = 1
+2:17/0 = 0
+2:17/0/z_index = 1
+3:17/0 = 0
+3:17/0/z_index = 1
+10:1/size_in_atlas = Vector2i(3, 3)
+10:1/0 = 0
+13:1/size_in_atlas = Vector2i(3, 3)
+13:1/0 = 0
+16:4/size_in_atlas = Vector2i(1, 3)
+16:4/0 = 0
+15:4/size_in_atlas = Vector2i(1, 3)
+15:4/0 = 0
+17:4/size_in_atlas = Vector2i(1, 3)
+17:4/0 = 0
+18:4/size_in_atlas = Vector2i(1, 3)
+18:4/0 = 0
+
+[sub_resource type="TileSet" id="TileSet_5bd38"]
+physics_layer_0/collision_layer = 1
+navigation_layer_0/layers = 1
+sources/0 = SubResource("TileSetAtlasSource_q4fiy")
+
+[node name="HouseTemplate" type="Node2D"]
+script = ExtResource("1_877m4")
+
+[node name="TileMapLayer" type="TileMapLayer" parent="."]
+rotation = -0.000322629
+tile_map_data = PackedByteArray("AAAIAAIAAAACAAEAAAAIAAMAAAACAAEAAAAIAAQAAAACAAEAAAAIAAUAAAACAAEAAAAIAAYAAAACAAEAAAAIAAcAAAACAAEAAAAIAAgAAAACAAEAAAAIAAkAAAACAAEAAAAJAAoAAAACAAEAAAAJAAsAAAACAAEAAAAJAAwAAAACAAEAAAAKAA0AAAACAAEAAAALAA4AAAACAAEAAAAMAA8AAAACAAEAAAANAA8AAAACAAEAAAANABAAAAACAAEAAAAOABAAAAACAAEAAAAPABAAAAACAAEAAAAQABAAAAACAAEAAAARABAAAAACAAEAAAASABAAAAACAAEAAAATABAAAAACAAEAAAAUABAAAAACAAEAAAAVABAAAAACAAEAAAAWABAAAAACAAEAAAAWAA8AAAACAAEAAAAWAAwAAAACAAEAAAAWAAsAAAACAAEAAAAVAAoAAAACAAEAAAAUAAoAAAACAAEAAAATAAkAAAACAAEAAAASAAkAAAACAAEAAAARAAgAAAACAAEAAAAQAAgAAAACAAEAAAAPAAgAAAACAAEAAAAOAAgAAAACAAEAAAANAAcAAAACAAEAAAAMAAcAAAACAAEAAAALAAcAAAACAAEAAAAKAAcAAAACAAEAAAAJAAcAAAACAAEAAAAHAAkAAAACAAEAAAAHAAoAAAACAAEAAAAHAAsAAAACAAEAAAAHAAwAAAACAAEAAAAHAA0AAAACAAEAAAAHAA4AAAACAAEAAAAHAA8AAAACAAEAAAAIABAAAAACAAEAAAAJABAAAAACAAEAAAAKABEAAAACAAEAAAALABIAAAACAAEAAAAMABMAAAACAAEAAAANABMAAAACAAEAAAAOABMAAAACAAEAAAAPABMAAAACAAEAAAAQABQAAAACAAEAAAARABQAAAACAAEAAAASABQAAAACAAEAAAATABQAAAACAAEAAAAUABQAAAACAAEAAAAVABQAAAACAAEAAAAWABQAAAACAAEAAAAVAAwAAAACAAEAAAAUAA0AAAACAAEAAAAUAA4AAAACAAEAAAATAA8AAAACAAEAAAATABEAAAACAAEAAAATABIAAAACAAEAAAAUABMAAAACAAEAAAAWABUAAAACAAEAAAAAAAAAAAACAAEAAAAAAAEAAAACAAEAAAAAAAIAAAACAAEAAAAAAAMAAAACAAEAAAAAAAQAAAACAAEAAAAAAAUAAAACAAEAAAAAAAYAAAACAAEAAAAAAAcAAAACAAEAAAAAAAgAAAACAAEAAAAAAAkAAAACAAEAAAAAAAoAAAACAAEAAAAAAAsAAAACAAEAAAAAAAwAAAACAAEAAAAAAA0AAAACAAEAAAAAAA4AAAACAAEAAAAAAA8AAAACAAEAAAAAABAAAAACAAEAAAAAABEAAAACAAEAAAAAABIAAAACAAEAAAAAABMAAAACAAEAAAAAABQAAAACAAEAAAAAABUAAAACAAEAAAAAABYAAAACAAEAAAAAABcAAAACAAEAAAAAABgAAAACAAEAAAAAABkAAAACAAEAAAAAABoAAAACAAEAAAAAABsAAAACAAEAAAAAABwAAAACAAEAAAAAAB0AAAACAAEAAAAAAB4AAAACAAEAAAAAAB8AAAACAAEAAAAAACAAAAACAAEAAAAAACEAAAACAAEAAAAAACIAAAACAAEAAAAAACMAAAACAAEAAAAAACQAAAACAAEAAAAAACUAAAACAAEAAAAAACYAAAACAAEAAAAAACcAAAACAAEAAAAAACgAAAACAAEAAAABAAAAAAACAAEAAAABAAEAAAACAAEAAAABAAIAAAACAAEAAAABAAMAAAACAAEAAAABAAQAAAACAAEAAAABAAUAAAACAAEAAAABAAYAAAACAAEAAAABAAcAAAACAAEAAAABAAgAAAACAAEAAAABAAkAAAACAAEAAAABAAoAAAACAAEAAAABAAsAAAACAAEAAAABAAwAAAACAAEAAAABAA0AAAACAAEAAAABAA4AAAACAAEAAAABAA8AAAACAAEAAAABABAAAAACAAEAAAABABEAAAACAAEAAAABABIAAAACAAEAAAABABMAAAACAAEAAAABABQAAAACAAEAAAABABUAAAACAAEAAAABABYAAAACAAEAAAABABcAAAACAAEAAAABABgAAAACAAEAAAABABkAAAACAAEAAAABABoAAAACAAEAAAABABsAAAACAAEAAAABABwAAAACAAEAAAABAB0AAAACAAEAAAABAB4AAAACAAEAAAABAB8AAAACAAEAAAABACAAAAACAAEAAAABACEAAAACAAEAAAABACIAAAACAAEAAAABACMAAAACAAEAAAABACQAAAACAAEAAAABACUAAAACAAEAAAABACYAAAACAAEAAAABACcAAAACAAEAAAABACgAAAACAAEAAAACAAAAAAACAAEAAAACAAEAAAACAAEAAAACAAIAAAACAAEAAAACAAMAAAACAAEAAAACAAQAAAACAAEAAAACAAUAAAACAAEAAAACAAYAAAACAAEAAAACAAcAAAACAAEAAAACAAgAAAACAAEAAAACAAkAAAACAAEAAAACAAoAAAACAAEAAAACAAsAAAACAAEAAAACAAwAAAACAAEAAAACAA0AAAACAAEAAAACAA4AAAACAAEAAAACAA8AAAACAAEAAAACABAAAAACAAEAAAACABEAAAACAAEAAAACABIAAAACAAEAAAACABMAAAACAAEAAAACABQAAAACAAEAAAACABUAAAACAAEAAAACABYAAAACAAEAAAACABcAAAACAAEAAAACABgAAAACAAEAAAACABkAAAACAAEAAAACABoAAAACAAEAAAACABsAAAACAAEAAAACABwAAAACAAEAAAACAB0AAAACAAEAAAACAB4AAAACAAEAAAACAB8AAAACAAEAAAACACAAAAACAAEAAAACACEAAAACAAEAAAACACIAAAACAAEAAAACACMAAAACAAEAAAACACQAAAACAAEAAAACACUAAAACAAEAAAACACYAAAACAAEAAAACACcAAAACAAEAAAACACgAAAACAAEAAAADAAAAAAACAAEAAAADAAEAAAACAAEAAAADAAIAAAACAAEAAAADAAMAAAACAAEAAAADAAQAAAACAAEAAAADAAUAAAACAAEAAAADAAYAAAACAAEAAAADAAcAAAACAAEAAAADAAgAAAACAAEAAAADAAkAAAACAAEAAAADAAoAAAACAAEAAAADAAsAAAACAAEAAAADAAwAAAACAAEAAAADAA0AAAACAAEAAAADAA4AAAACAAEAAAADAA8AAAACAAEAAAADABAAAAACAAEAAAADABEAAAACAAEAAAADABIAAAACAAEAAAADABMAAAACAAEAAAADABQAAAACAAEAAAADABUAAAACAAEAAAADABYAAAACAAEAAAADABcAAAACAAEAAAADABgAAAACAAEAAAADABkAAAACAAEAAAADABoAAAACAAEAAAADABsAAAACAAEAAAADABwAAAACAAEAAAADAB0AAAACAAEAAAADAB4AAAACAAEAAAADAB8AAAACAAEAAAADACAAAAACAAEAAAADACEAAAACAAEAAAADACIAAAACAAEAAAADACMAAAACAAEAAAADACQAAAACAAEAAAADACUAAAACAAEAAAADACYAAAACAAEAAAADACcAAAACAAEAAAADACgAAAACAAEAAAAEAAAAAAACAAEAAAAEAAEAAAACAAEAAAAEAAIAAAACAAEAAAAEAAMAAAACAAEAAAAEAAQAAAACAAEAAAAEAAUAAAACAAEAAAAEAAYAAAACAAEAAAAEAAcAAAACAAEAAAAEAAgAAAACAAEAAAAEAAkAAAACAAEAAAAEAAoAAAACAAEAAAAEAAsAAAACAAEAAAAEAAwAAAACAAEAAAAEAA0AAAACAAEAAAAEAA4AAAACAAEAAAAEAA8AAAACAAEAAAAEABAAAAACAAEAAAAEABEAAAACAAEAAAAEABIAAAACAAEAAAAEABMAAAACAAEAAAAEABQAAAACAAEAAAAEABUAAAACAAEAAAAEABYAAAACAAEAAAAEABcAAAACAAEAAAAEABgAAAACAAEAAAAEABkAAAACAAEAAAAEABoAAAACAAEAAAAEABsAAAACAAEAAAAEABwAAAACAAEAAAAEAB0AAAACAAEAAAAEAB4AAAACAAEAAAAEAB8AAAACAAEAAAAEACAAAAACAAEAAAAEACEAAAACAAEAAAAEACIAAAACAAEAAAAEACMAAAACAAEAAAAEACQAAAACAAEAAAAEACUAAAACAAEAAAAEACYAAAACAAEAAAAEACcAAAACAAEAAAAEACgAAAACAAEAAAAFAAAAAAACAAEAAAAFAAEAAAACAAEAAAAFAAIAAAACAAEAAAAFAAMAAAACAAEAAAAFAAQAAAACAAEAAAAFAAUAAAACAAEAAAAFAAYAAAACAAEAAAAFAAcAAAACAAEAAAAFAAgAAAACAAEAAAAFAAkAAAACAAEAAAAFAAoAAAACAAEAAAAFAAsAAAACAAEAAAAFAAwAAAACAAEAAAAFAA0AAAACAAEAAAAFAA4AAAACAAEAAAAFAA8AAAACAAEAAAAFABAAAAACAAEAAAAFABEAAAACAAEAAAAFABIAAAACAAEAAAAFABMAAAACAAEAAAAFABQAAAACAAEAAAAFABUAAAACAAEAAAAFABYAAAACAAEAAAAFABcAAAACAAEAAAAFABgAAAACAAEAAAAFABkAAAACAAEAAAAFABoAAAACAAEAAAAFABsAAAACAAEAAAAFABwAAAACAAEAAAAFAB0AAAACAAEAAAAFAB4AAAACAAEAAAAFAB8AAAACAAEAAAAFACAAAAACAAEAAAAFACEAAAACAAEAAAAFACIAAAACAAEAAAAFACMAAAACAAEAAAAFACQAAAACAAEAAAAFACUAAAACAAEAAAAFACYAAAACAAEAAAAFACcAAAACAAEAAAAFACgAAAACAAEAAAAGAAAAAAACAAEAAAAGAAEAAAACAAEAAAAGAAIAAAACAAEAAAAGAAMAAAACAAEAAAAGAAQAAAACAAEAAAAGAAUAAAACAAEAAAAGAAYAAAACAAEAAAAGAAcAAAACAAEAAAAGAAgAAAACAAEAAAAGAAkAAAACAAEAAAAGAAoAAAACAAEAAAAGAAsAAAACAAEAAAAGAAwAAAACAAEAAAAGAA0AAAACAAEAAAAGAA4AAAACAAEAAAAGAA8AAAACAAEAAAAGABAAAAACAAEAAAAGABEAAAACAAEAAAAGABIAAAACAAEAAAAGABMAAAACAAEAAAAGABQAAAACAAEAAAAGABUAAAACAAEAAAAGABYAAAACAAEAAAAGABcAAAACAAEAAAAGABgAAAACAAEAAAAGABkAAAACAAEAAAAGABoAAAACAAEAAAAGABsAAAACAAEAAAAGABwAAAACAAEAAAAGAB0AAAACAAEAAAAGAB4AAAACAAEAAAAGAB8AAAACAAEAAAAGACAAAAACAAEAAAAGACEAAAACAAEAAAAGACIAAAACAAEAAAAGACMAAAACAAEAAAAGACQAAAACAAEAAAAGACUAAAACAAEAAAAGACYAAAACAAEAAAAGACcAAAACAAEAAAAGACgAAAACAAEAAAAHAAAAAAACAAEAAAAHAAEAAAACAAEAAAAHAAIAAAACAAEAAAAHAAMAAAACAAEAAAAHAAQAAAACAAEAAAAHAAUAAAACAAEAAAAHAAYAAAACAAEAAAAHAAcAAAACAAEAAAAHAAgAAAACAAEAAAAHABAAAAACAAEAAAAHABEAAAACAAEAAAAHABIAAAACAAEAAAAHABMAAAACAAEAAAAHABQAAAACAAEAAAAHABUAAAACAAEAAAAHABYAAAACAAEAAAAHABcAAAACAAEAAAAHABgAAAACAAEAAAAHABkAAAACAAEAAAAHABoAAAACAAEAAAAHABsAAAACAAEAAAAHABwAAAACAAEAAAAHAB0AAAACAAEAAAAHAB4AAAACAAEAAAAHAB8AAAACAAEAAAAHACAAAAACAAEAAAAHACEAAAACAAEAAAAHACIAAAACAAEAAAAHACMAAAACAAEAAAAHACQAAAACAAEAAAAHACUAAAACAAEAAAAHACYAAAACAAEAAAAHACcAAAACAAEAAAAHACgAAAACAAEAAAAIAAAAAAACAAEAAAAIAAEAAAACAAEAAAAIAAoAAAACAAEAAAAIAAsAAAACAAEAAAAIAAwAAAACAAEAAAAIAA0AAAACAAEAAAAIAA4AAAACAAEAAAAIAA8AAAACAAEAAAAIABEAAAACAAEAAAAIABIAAAACAAEAAAAIABMAAAACAAEAAAAIABQAAAACAAEAAAAIABUAAAACAAEAAAAIABYAAAACAAEAAAAIABcAAAACAAEAAAAIABgAAAACAAEAAAAIABkAAAACAAEAAAAIABoAAAACAAEAAAAIABsAAAACAAEAAAAIABwAAAACAAEAAAAIAB0AAAACAAEAAAAIAB4AAAACAAEAAAAIAB8AAAACAAEAAAAIACAAAAACAAEAAAAIACEAAAACAAEAAAAIACIAAAACAAEAAAAIACMAAAACAAEAAAAIACQAAAACAAEAAAAIACUAAAACAAEAAAAIACYAAAACAAEAAAAIACcAAAACAAEAAAAIACgAAAACAAEAAAAJAAAAAAACAAEAAAAJAAEAAAACAAEAAAAJAAIAAAACAAEAAAAJAAMAAAACAAEAAAAJAAQAAAACAAEAAAAJAAUAAAACAAEAAAAJAAYAAAACAAEAAAAJAAgAAAACAAEAAAAJAAkAAAACAAEAAAAJAA0AAAACAAEAAAAJAA4AAAACAAEAAAAJAA8AAAACAAEAAAAJABEAAAACAAEAAAAJABIAAAACAAEAAAAJABMAAAACAAEAAAAJABQAAAACAAEAAAAJABUAAAACAAEAAAAJABYAAAACAAEAAAAJABcAAAACAAEAAAAJABgAAAACAAEAAAAJABkAAAACAAEAAAAJABoAAAACAAEAAAAJABsAAAACAAEAAAAJABwAAAACAAEAAAAJAB0AAAACAAEAAAAJAB4AAAACAAEAAAAJAB8AAAACAAEAAAAJACAAAAACAAEAAAAJACEAAAACAAEAAAAJACIAAAACAAEAAAAJACMAAAACAAEAAAAJACQAAAACAAEAAAAJACUAAAACAAEAAAAJACYAAAACAAEAAAAJACcAAAACAAEAAAAJACgAAAACAAEAAAAKAAAAAAACAAEAAAAKAAEAAAACAAEAAAAKAAIAAAACAAEAAAAKAAMAAAACAAEAAAAKAAQAAAACAAEAAAAKAAUAAAACAAEAAAAKAAYAAAACAAEAAAAKAAgAAAACAAEAAAAKAAkAAAACAAEAAAAKAAoAAAACAAEAAAAKAAsAAAACAAEAAAAKAAwAAAACAAEAAAAKAA4AAAACAAEAAAAKAA8AAAACAAEAAAAKABAAAAACAAEAAAAKABIAAAACAAEAAAAKABMAAAACAAEAAAAKABQAAAACAAEAAAAKABUAAAACAAEAAAAKABYAAAACAAEAAAAKABcAAAACAAEAAAAKABgAAAACAAEAAAAKABkAAAACAAEAAAAKABoAAAACAAEAAAAKABsAAAACAAEAAAAKABwAAAACAAEAAAAKAB0AAAACAAEAAAAKAB4AAAACAAEAAAAKAB8AAAACAAEAAAAKACAAAAACAAEAAAAKACEAAAACAAEAAAAKACIAAAACAAEAAAAKACMAAAACAAEAAAAKACQAAAACAAEAAAAKACUAAAACAAEAAAAKACYAAAACAAEAAAAKACcAAAACAAEAAAAKACgAAAACAAEAAAALAAAAAAACAAEAAAALAAEAAAACAAEAAAALAAIAAAACAAEAAAALAAMAAAACAAEAAAALAAQAAAACAAEAAAALAAUAAAACAAEAAAALAAYAAAACAAEAAAALAAgAAAACAAEAAAALAAkAAAACAAEAAAALAAoAAAACAAEAAAALAAsAAAACAAEAAAALAAwAAAACAAEAAAALAA0AAAACAAEAAAALAA8AAAACAAEAAAALABAAAAACAAEAAAALABEAAAACAAEAAAALABMAAAACAAEAAAALABQAAAACAAEAAAALABUAAAACAAEAAAALABYAAAACAAEAAAALABcAAAACAAEAAAALABgAAAACAAEAAAALABkAAAACAAEAAAALABoAAAACAAEAAAALABsAAAACAAEAAAALABwAAAACAAEAAAALAB0AAAACAAEAAAALAB4AAAACAAEAAAALAB8AAAACAAEAAAALACAAAAACAAEAAAALACEAAAACAAEAAAALACIAAAACAAEAAAALACMAAAACAAEAAAALACQAAAACAAEAAAALACUAAAACAAEAAAALACYAAAACAAEAAAALACcAAAACAAEAAAALACgAAAACAAEAAAAMAAAAAAACAAEAAAAMAAEAAAACAAEAAAAMAAIAAAACAAEAAAAMAAMAAAACAAEAAAAMAAQAAAACAAEAAAAMAAUAAAACAAEAAAAMAAYAAAACAAEAAAAMAAgAAAACAAEAAAAMAAkAAAACAAEAAAAMAAoAAAACAAEAAAAMAAsAAAACAAEAAAAMAAwAAAACAAEAAAAMAA0AAAACAAEAAAAMAA4AAAACAAEAAAAMABAAAAACAAEAAAAMABEAAAACAAEAAAAMABIAAAACAAEAAAAMABQAAAACAAEAAAAMABUAAAACAAEAAAAMABYAAAACAAEAAAAMABcAAAACAAEAAAAMABgAAAACAAEAAAAMABkAAAACAAEAAAAMABoAAAACAAEAAAAMABsAAAACAAEAAAAMABwAAAACAAEAAAAMAB0AAAACAAEAAAAMAB4AAAACAAEAAAAMAB8AAAACAAEAAAAMACAAAAACAAEAAAAMACEAAAACAAEAAAAMACIAAAACAAEAAAAMACMAAAACAAEAAAAMACQAAAACAAEAAAAMACUAAAACAAEAAAAMACYAAAACAAEAAAAMACcAAAACAAEAAAAMACgAAAACAAEAAAANAAAAAAACAAEAAAANAAEAAAACAAEAAAANAAIAAAACAAEAAAANAAMAAAACAAEAAAANAAQAAAACAAEAAAANAAUAAAACAAEAAAANAAYAAAACAAEAAAANAAgAAAACAAEAAAANAAkAAAACAAEAAAANAAoAAAACAAEAAAANAAsAAAACAAEAAAANAAwAAAACAAEAAAANAA0AAAACAAEAAAANAA4AAAACAAEAAAANABEAAAACAAEAAAANABIAAAACAAEAAAANABQAAAACAAEAAAANABUAAAACAAEAAAANABYAAAACAAEAAAANABcAAAACAAEAAAANABgAAAACAAEAAAANABkAAAACAAEAAAANABoAAAACAAEAAAANABsAAAACAAEAAAANABwAAAACAAEAAAANAB0AAAACAAEAAAANAB4AAAACAAEAAAANAB8AAAACAAEAAAANACAAAAACAAEAAAANACEAAAACAAEAAAANACIAAAACAAEAAAANACMAAAACAAEAAAANACQAAAACAAEAAAANACUAAAACAAEAAAANACYAAAACAAEAAAANACcAAAACAAEAAAANACgAAAACAAEAAAAOAAAAAAACAAEAAAAOAAEAAAACAAEAAAAOAAIAAAACAAEAAAAOAAMAAAACAAEAAAAOAAQAAAACAAEAAAAOAAUAAAACAAEAAAAOAAYAAAACAAEAAAAOAAcAAAACAAEAAAAOAAkAAAACAAEAAAAOAAoAAAACAAEAAAAOAAsAAAACAAEAAAAOAAwAAAACAAEAAAAOAA0AAAACAAEAAAAOAA4AAAACAAEAAAAOAA8AAAACAAEAAAAOABEAAAACAAEAAAAOABIAAAACAAEAAAAOABQAAAACAAEAAAAOABUAAAACAAEAAAAOABYAAAACAAEAAAAOABcAAAACAAEAAAAOABgAAAACAAEAAAAOABkAAAACAAEAAAAOABoAAAACAAEAAAAOABsAAAACAAEAAAAOABwAAAACAAEAAAAOAB0AAAACAAEAAAAOAB4AAAACAAEAAAAOAB8AAAACAAEAAAAOACAAAAACAAEAAAAOACEAAAACAAEAAAAOACIAAAACAAEAAAAOACMAAAACAAEAAAAOACQAAAACAAEAAAAOACUAAAACAAEAAAAOACYAAAACAAEAAAAOACcAAAACAAEAAAAOACgAAAACAAEAAAAPAAAAAAACAAEAAAAPAAEAAAACAAEAAAAPAAIAAAACAAEAAAAPAAMAAAACAAEAAAAPAAQAAAACAAEAAAAPAAUAAAACAAEAAAAPAAYAAAACAAEAAAAPAAcAAAACAAEAAAAPAAkAAAACAAEAAAAPAAoAAAACAAEAAAAPAAsAAAACAAEAAAAPAAwAAAACAAEAAAAPAA0AAAACAAEAAAAPAA4AAAACAAEAAAAPAA8AAAACAAEAAAAPABEAAAACAAEAAAAPABIAAAACAAEAAAAPABQAAAACAAEAAAAPABUAAAACAAEAAAAPABYAAAACAAEAAAAPABcAAAACAAEAAAAPABgAAAACAAEAAAAPABkAAAACAAEAAAAPABoAAAACAAEAAAAPABsAAAACAAEAAAAPABwAAAACAAEAAAAPAB0AAAACAAEAAAAPAB4AAAACAAEAAAAPAB8AAAACAAEAAAAPACAAAAACAAEAAAAPACEAAAACAAEAAAAPACIAAAACAAEAAAAPACMAAAACAAEAAAAPACQAAAACAAEAAAAPACUAAAACAAEAAAAPACYAAAACAAEAAAAPACcAAAACAAEAAAAPACgAAAACAAEAAAAQAAAAAAACAAEAAAAQAAEAAAACAAEAAAAQAAIAAAACAAEAAAAQAAMAAAACAAEAAAAQAAQAAAACAAEAAAAQAAUAAAACAAEAAAAQAAYAAAACAAEAAAAQAAcAAAACAAEAAAAQAAkAAAACAAEAAAAQAAoAAAACAAEAAAAQAAsAAAACAAEAAAAQAAwAAAACAAEAAAAQAA0AAAACAAEAAAAQAA4AAAACAAEAAAAQAA8AAAACAAEAAAAQABEAAAACAAEAAAAQABIAAAACAAEAAAAQABMAAAACAAEAAAAQABUAAAACAAEAAAAQABYAAAACAAEAAAAQABcAAAACAAEAAAAQABgAAAACAAEAAAAQABkAAAACAAEAAAAQABoAAAACAAEAAAAQABsAAAACAAEAAAAQABwAAAACAAEAAAAQAB0AAAACAAEAAAAQAB4AAAACAAEAAAAQAB8AAAACAAEAAAAQACAAAAACAAEAAAAQACEAAAACAAEAAAAQACIAAAACAAEAAAAQACMAAAACAAEAAAAQACQAAAACAAEAAAAQACUAAAACAAEAAAAQACYAAAACAAEAAAAQACcAAAACAAEAAAAQACgAAAACAAEAAAARAAAAAAACAAEAAAARAAEAAAACAAEAAAARAAIAAAACAAEAAAARAAMAAAACAAEAAAARAAQAAAACAAEAAAARAAUAAAACAAEAAAARAAYAAAACAAEAAAARAAcAAAACAAEAAAARAAkAAAACAAEAAAARAAoAAAACAAEAAAARAAsAAAACAAEAAAARAAwAAAACAAEAAAARAA0AAAACAAEAAAARAA4AAAACAAEAAAARAA8AAAACAAEAAAARABEAAAACAAEAAAARABIAAAACAAEAAAARABMAAAACAAEAAAARABUAAAACAAEAAAARABYAAAACAAEAAAARABcAAAACAAEAAAARABgAAAACAAEAAAARABkAAAACAAEAAAARABoAAAACAAEAAAARABsAAAACAAEAAAARABwAAAACAAEAAAARAB0AAAACAAEAAAARAB4AAAACAAEAAAARAB8AAAACAAEAAAARACAAAAACAAEAAAARACEAAAACAAEAAAARACIAAAACAAEAAAARACMAAAACAAEAAAARACQAAAACAAEAAAARACUAAAACAAEAAAARACYAAAACAAEAAAARACcAAAACAAEAAAARACgAAAACAAEAAAASAAAAAAACAAEAAAASAAEAAAACAAEAAAASAAIAAAACAAEAAAASAAMAAAACAAEAAAASAAQAAAACAAEAAAASAAUAAAACAAEAAAASAAYAAAACAAEAAAASAAcAAAACAAEAAAASAAgAAAACAAEAAAASAAoAAAACAAEAAAASAAsAAAACAAEAAAASAAwAAAACAAEAAAASAA0AAAACAAEAAAASAA4AAAACAAEAAAASAA8AAAACAAEAAAASABEAAAACAAEAAAASABIAAAACAAEAAAASABMAAAACAAEAAAASABUAAAACAAEAAAASABYAAAACAAEAAAASABcAAAACAAEAAAASABgAAAACAAEAAAASABkAAAACAAEAAAASABoAAAACAAEAAAASABsAAAACAAEAAAASABwAAAACAAEAAAASAB0AAAACAAEAAAASAB4AAAACAAEAAAASAB8AAAACAAEAAAASACAAAAACAAEAAAASACEAAAACAAEAAAASACIAAAACAAEAAAASACMAAAACAAEAAAASACQAAAACAAEAAAASACUAAAACAAEAAAASACYAAAACAAEAAAASACcAAAACAAEAAAASACgAAAACAAEAAAATAAAAAAACAAEAAAATAAEAAAACAAEAAAATAAIAAAACAAEAAAATAAMAAAACAAEAAAATAAQAAAACAAEAAAATAAUAAAACAAEAAAATAAYAAAACAAEAAAATAAcAAAACAAEAAAATAAgAAAACAAEAAAATAAoAAAACAAEAAAATAAsAAAACAAEAAAATAAwAAAACAAEAAAATAA0AAAACAAEAAAATAA4AAAACAAEAAAATABMAAAACAAEAAAATABUAAAACAAEAAAATABYAAAACAAEAAAATABcAAAACAAEAAAATABgAAAACAAEAAAATABkAAAACAAEAAAATABoAAAACAAEAAAATABsAAAACAAEAAAATABwAAAACAAEAAAATAB0AAAACAAEAAAATAB4AAAACAAEAAAATAB8AAAACAAEAAAATACAAAAACAAEAAAATACEAAAACAAEAAAATACIAAAACAAEAAAATACMAAAACAAEAAAATACQAAAACAAEAAAATACUAAAACAAEAAAATACYAAAACAAEAAAATACcAAAACAAEAAAATACgAAAACAAEAAAAUAAAAAAACAAEAAAAUAAEAAAACAAEAAAAUAAIAAAACAAEAAAAUAAMAAAACAAEAAAAUAAQAAAACAAEAAAAUAAUAAAACAAEAAAAUAAYAAAACAAEAAAAUAAcAAAACAAEAAAAUAAgAAAACAAEAAAAUAAkAAAACAAEAAAAUAAsAAAACAAEAAAAUAAwAAAACAAEAAAAUAA8AAAACAAEAAAAUABEAAAACAAEAAAAUABIAAAACAAEAAAAUABUAAAACAAEAAAAUABYAAAACAAEAAAAUABcAAAACAAEAAAAUABgAAAACAAEAAAAUABkAAAACAAEAAAAUABoAAAACAAEAAAAUABsAAAACAAEAAAAUABwAAAACAAEAAAAUAB0AAAACAAEAAAAUAB4AAAACAAEAAAAUAB8AAAACAAEAAAAUACAAAAACAAEAAAAUACEAAAACAAEAAAAUACIAAAACAAEAAAAUACMAAAACAAEAAAAUACQAAAACAAEAAAAUACUAAAACAAEAAAAUACYAAAACAAEAAAAUACcAAAACAAEAAAAUACgAAAACAAEAAAAVAAAAAAACAAEAAAAVAAEAAAACAAEAAAAVAAIAAAACAAEAAAAVAAMAAAACAAEAAAAVAAQAAAACAAEAAAAVAAUAAAACAAEAAAAVAAYAAAACAAEAAAAVAAcAAAACAAEAAAAVAAgAAAACAAEAAAAVAAkAAAACAAEAAAAVAAsAAAACAAEAAAAVAA0AAAACAAEAAAAVAA4AAAACAAEAAAAVAA8AAAACAAEAAAAVABEAAAACAAEAAAAVABIAAAACAAEAAAAVABMAAAACAAEAAAAVABUAAAACAAEAAAAVABYAAAACAAEAAAAVABcAAAACAAEAAAAVABgAAAACAAEAAAAVABkAAAACAAEAAAAVABoAAAACAAEAAAAVABsAAAACAAEAAAAVABwAAAACAAEAAAAVAB0AAAACAAEAAAAVAB4AAAACAAEAAAAVAB8AAAACAAEAAAAVACAAAAACAAEAAAAVACEAAAACAAEAAAAVACIAAAACAAEAAAAVACMAAAACAAEAAAAVACQAAAACAAEAAAAVACUAAAACAAEAAAAVACYAAAACAAEAAAAVACcAAAACAAEAAAAVACgAAAACAAEAAAAWAAAAAAACAAEAAAAWAAEAAAACAAEAAAAWAAIAAAACAAEAAAAWAAMAAAACAAEAAAAWAAQAAAACAAEAAAAWAAUAAAACAAEAAAAWAAYAAAACAAEAAAAWAAcAAAACAAEAAAAWAAgAAAACAAEAAAAWAAkAAAACAAEAAAAWAAoAAAACAAEAAAAWAA0AAAACAAEAAAAWAA4AAAACAAEAAAAWABEAAAACAAEAAAAWABIAAAACAAEAAAAWABMAAAACAAEAAAAWABYAAAACAAEAAAAWABcAAAACAAEAAAAWABgAAAACAAEAAAAWABkAAAACAAEAAAAWABoAAAACAAEAAAAWABsAAAACAAEAAAAWABwAAAACAAEAAAAWAB0AAAACAAEAAAAWAB4AAAACAAEAAAAWAB8AAAACAAEAAAAWACAAAAACAAEAAAAWACEAAAACAAEAAAAWACIAAAACAAEAAAAWACMAAAACAAEAAAAWACQAAAACAAEAAAAWACUAAAACAAEAAAAWACYAAAACAAEAAAAWACcAAAACAAEAAAAWACgAAAACAAEAAAAXAAAAAAACAAEAAAAXAAEAAAACAAEAAAAXAAIAAAACAAEAAAAXAAMAAAACAAEAAAAXAAQAAAACAAEAAAAXAAUAAAACAAEAAAAXABkAAAACAAEAAAAXABoAAAACAAEAAAAXABsAAAACAAEAAAAXABwAAAACAAEAAAAXAB0AAAACAAEAAAAXAB4AAAACAAEAAAAXAB8AAAACAAEAAAAXACAAAAACAAEAAAAXACEAAAACAAEAAAAXACIAAAACAAEAAAAXACMAAAACAAEAAAAXACQAAAACAAEAAAAXACUAAAACAAEAAAAXACYAAAACAAEAAAAXACcAAAACAAEAAAAXACgAAAACAAEAAAAYAAAAAAACAAEAAAAYAAEAAAACAAEAAAAYAAIAAAACAAEAAAAYAAMAAAACAAEAAAAYAAQAAAACAAEAAAAYAAUAAAACAAEAAAAYABkAAAACAAEAAAAYABoAAAACAAEAAAAYABsAAAACAAEAAAAYABwAAAACAAEAAAAYAB0AAAACAAEAAAAYAB4AAAACAAEAAAAYAB8AAAACAAEAAAAYACAAAAACAAEAAAAYACEAAAACAAEAAAAYACIAAAACAAEAAAAYACMAAAACAAEAAAAYACQAAAACAAEAAAAYACUAAAACAAEAAAAYACYAAAACAAEAAAAYACcAAAACAAEAAAAYACgAAAACAAEAAAAZAAAAAAACAAEAAAAZAAEAAAACAAEAAAAZAAIAAAACAAEAAAAZAAMAAAACAAEAAAAZAAQAAAACAAEAAAAZAAUAAAACAAEAAAAZABkAAAACAAEAAAAZABoAAAACAAEAAAAZABsAAAACAAEAAAAZABwAAAACAAEAAAAZAB0AAAACAAEAAAAZAB4AAAACAAEAAAAZAB8AAAACAAEAAAAZACAAAAACAAEAAAAZACEAAAACAAEAAAAZACIAAAACAAEAAAAZACMAAAACAAEAAAAZACQAAAACAAEAAAAZACUAAAACAAEAAAAZACYAAAACAAEAAAAZACcAAAACAAEAAAAZACgAAAACAAEAAAAaAAAAAAACAAEAAAAaAAEAAAACAAEAAAAaAAIAAAACAAEAAAAaAAMAAAACAAEAAAAaAAQAAAACAAEAAAAaAAUAAAACAAEAAAAaABkAAAACAAEAAAAaABoAAAACAAEAAAAaABsAAAACAAEAAAAaABwAAAACAAEAAAAaAB0AAAACAAEAAAAaAB4AAAACAAEAAAAaAB8AAAACAAEAAAAaACAAAAACAAEAAAAaACEAAAACAAEAAAAaACIAAAACAAEAAAAaACMAAAACAAEAAAAaACQAAAACAAEAAAAaACUAAAACAAEAAAAaACYAAAACAAEAAAAaACcAAAACAAEAAAAaACgAAAACAAEAAAAbAAAAAAACAAEAAAAbAAEAAAACAAEAAAAbAAIAAAACAAEAAAAbAAMAAAACAAEAAAAbAAQAAAACAAEAAAAbAAUAAAACAAEAAAAbABkAAAACAAEAAAAbABoAAAACAAEAAAAbABsAAAACAAEAAAAbABwAAAACAAEAAAAbAB0AAAACAAEAAAAbAB4AAAACAAEAAAAbAB8AAAACAAEAAAAbACAAAAACAAEAAAAbACEAAAACAAEAAAAbACIAAAACAAEAAAAbACMAAAACAAEAAAAbACQAAAACAAEAAAAbACUAAAACAAEAAAAbACYAAAACAAEAAAAbACcAAAACAAEAAAAbACgAAAACAAEAAAAcAAAAAAACAAEAAAAcAAEAAAACAAEAAAAcAAIAAAACAAEAAAAcAAMAAAACAAEAAAAcAAQAAAACAAEAAAAcAAUAAAACAAEAAAAcABkAAAABAAEAAAAcABoAAAABAAEAAAAcABsAAAABAAEAAAAcABwAAAABAAIAAAAcAB0AAAACAAEAAAAcAB4AAAACAAEAAAAcAB8AAAACAAEAAAAcACAAAAACAAEAAAAcACEAAAACAAEAAAAcACIAAAACAAEAAAAcACMAAAACAAEAAAAcACQAAAACAAEAAAAcACUAAAACAAEAAAAcACYAAAACAAEAAAAcACcAAAACAAEAAAAcACgAAAACAAEAAAAdAAAAAAACAAEAAAAdAAEAAAACAAEAAAAdAAIAAAACAAEAAAAdAAMAAAACAAEAAAAdAAQAAAACAAEAAAAdAAUAAAACAAEAAAAdABkAAAAAAAIAAAAdABoAAAAAAAIAAAAdABsAAAAAAAIAAAAdABwAAAACAAIAAAAdAB0AAAACAAEAAAAdAB4AAAACAAEAAAAdAB8AAAACAAEAAAAdACAAAAACAAEAAAAdACEAAAACAAEAAAAdACIAAAACAAEAAAAdACMAAAACAAEAAAAdACQAAAACAAEAAAAdACUAAAACAAEAAAAdACYAAAACAAEAAAAdACcAAAACAAEAAAAdACgAAAACAAEAAAAeAAAAAAACAAEAAAAeAAEAAAACAAEAAAAeAAIAAAACAAEAAAAeAAMAAAACAAEAAAAeAAQAAAACAAEAAAAeAAUAAAACAAEAAAAeABkAAAAAAAIAAAAeABoAAAAAAAIAAAAeABsAAAAAAAIAAAAeABwAAAACAAIAAAAeAB0AAAACAAEAAAAeAB4AAAACAAEAAAAeAB8AAAACAAEAAAAeACAAAAACAAEAAAAeACEAAAACAAEAAAAeACIAAAACAAEAAAAeACMAAAACAAEAAAAeACQAAAACAAEAAAAeACUAAAACAAEAAAAeACYAAAACAAEAAAAeACcAAAACAAEAAAAeACgAAAACAAEAAAAfAAAAAAACAAEAAAAfAAEAAAACAAEAAAAfAAIAAAACAAEAAAAfAAMAAAACAAEAAAAfAAQAAAACAAEAAAAfAAUAAAACAAEAAAAfABkAAAAAAAIAAAAfABoAAAAAAAIAAAAfABsAAAAAAAIAAAAfABwAAAACAAIAAAAfAB0AAAACAAEAAAAfAB4AAAACAAEAAAAfAB8AAAACAAEAAAAfACAAAAACAAEAAAAfACEAAAACAAEAAAAfACIAAAACAAEAAAAfACMAAAACAAEAAAAfACQAAAACAAEAAAAfACUAAAACAAEAAAAfACYAAAACAAEAAAAfACcAAAACAAEAAAAfACgAAAACAAEAAAAgAAAAAAACAAEAAAAgAAEAAAACAAEAAAAgAAIAAAACAAEAAAAgAAMAAAACAAEAAAAgAAQAAAACAAEAAAAgAAUAAAACAAEAAAAgABkAAAAAAAIAAAAgABoAAAAAAAIAAAAgABsAAAAAAAIAAAAgABwAAAACAAIAAAAgAB0AAAACAAEAAAAgAB4AAAACAAEAAAAgAB8AAAACAAEAAAAgACAAAAACAAEAAAAgACEAAAACAAEAAAAgACIAAAACAAEAAAAgACMAAAACAAEAAAAgACQAAAACAAEAAAAgACUAAAACAAEAAAAgACYAAAACAAEAAAAgACcAAAACAAEAAAAgACgAAAACAAEAAAAhAAAAAAACAAEAAAAhAAEAAAACAAEAAAAhAAIAAAACAAEAAAAhAAMAAAACAAEAAAAhAAQAAAACAAEAAAAhAAUAAAACAAEAAAAhABkAAAAAAAIAAAAhABoAAAAAAAIAAAAhABsAAAAAAAIAAAAhABwAAAACAAIAAAAhAB0AAAACAAEAAAAhAB4AAAACAAEAAAAhAB8AAAACAAEAAAAhACAAAAACAAEAAAAhACEAAAACAAEAAAAhACIAAAACAAEAAAAhACMAAAACAAEAAAAhACQAAAACAAEAAAAhACUAAAACAAEAAAAhACYAAAACAAEAAAAhACcAAAACAAEAAAAhACgAAAACAAEAAAAiAAAAAAACAAEAAAAiAAEAAAACAAEAAAAiAAIAAAACAAEAAAAiAAMAAAACAAEAAAAiAAQAAAACAAEAAAAiAAUAAAACAAEAAAAiABkAAAAAAAIAAAAiABoAAAAAAAIAAAAiABsAAAAAAAIAAAAiABwAAAACAAIAAAAiAB0AAAACAAEAAAAiAB4AAAACAAEAAAAiAB8AAAACAAEAAAAiACAAAAACAAEAAAAiACEAAAACAAEAAAAiACIAAAACAAEAAAAiACMAAAACAAEAAAAiACQAAAACAAEAAAAiACUAAAACAAEAAAAiACYAAAACAAEAAAAiACcAAAACAAEAAAAiACgAAAACAAEAAAAjAAAAAAACAAEAAAAjAAEAAAACAAEAAAAjAAIAAAACAAEAAAAjAAMAAAACAAEAAAAjAAQAAAACAAEAAAAjAAUAAAACAAEAAAAjABkAAAAAAAIAAAAjABoAAAAAAAIAAAAjABsAAAAAAAIAAAAjABwAAAAAAAAAAAAjAB0AAAACAAEAAAAjAB4AAAACAAEAAAAjAB8AAAACAAEAAAAjACAAAAACAAEAAAAjACEAAAACAAEAAAAjACIAAAACAAEAAAAjACMAAAACAAEAAAAjACQAAAACAAEAAAAjACUAAAACAAEAAAAjACYAAAACAAEAAAAjACcAAAACAAEAAAAjACgAAAACAAEAAAAkAAAAAAACAAEAAAAkAAEAAAACAAEAAAAkAAIAAAACAAEAAAAkAAMAAAACAAEAAAAkAAQAAAACAAEAAAAkAAUAAAACAAEAAAAkABkAAAAAAAIAAAAkABoAAAAAAAIAAAAkABsAAAAAAAIAAAAkABwAAAAAAAAAAAAkAB0AAAACAAEAAAAkAB4AAAACAAEAAAAkAB8AAAACAAEAAAAkACAAAAACAAEAAAAkACEAAAACAAEAAAAkACIAAAACAAEAAAAkACMAAAACAAEAAAAkACQAAAACAAEAAAAkACUAAAACAAEAAAAkACYAAAACAAEAAAAkACcAAAACAAEAAAAkACgAAAACAAEAAAAlAAAAAAACAAEAAAAlAAEAAAACAAEAAAAlAAIAAAACAAEAAAAlAAMAAAACAAEAAAAlAAQAAAACAAEAAAAlAAUAAAACAAEAAAAlABkAAAAAAAIAAAAlABoAAAAAAAIAAAAlABsAAAAAAAIAAAAlABwAAAAAAAAAAAAlAB0AAAACAAEAAAAlAB4AAAACAAEAAAAlAB8AAAACAAEAAAAlACAAAAACAAEAAAAlACEAAAACAAEAAAAlACIAAAACAAEAAAAlACMAAAACAAEAAAAlACQAAAACAAEAAAAlACUAAAACAAEAAAAlACYAAAACAAEAAAAlACcAAAACAAEAAAAlACgAAAACAAEAAAAmAAAAAAACAAEAAAAmAAEAAAACAAEAAAAmAAIAAAACAAEAAAAmAAMAAAACAAEAAAAmAAQAAAACAAEAAAAmAAUAAAACAAEAAAAmABkAAAAAAAIAAAAmABoAAAAAAAIAAAAmABsAAAAAAAIAAAAmABwAAAACAAIAAAAmAB0AAAACAAEAAAAmAB4AAAACAAEAAAAmAB8AAAACAAEAAAAmACAAAAACAAEAAAAmACEAAAACAAEAAAAmACIAAAACAAEAAAAmACMAAAACAAEAAAAmACQAAAACAAEAAAAmACUAAAACAAEAAAAmACYAAAACAAEAAAAmACcAAAACAAEAAAAmACgAAAACAAEAAAAnAAAAAAACAAEAAAAnAAEAAAACAAEAAAAnAAIAAAACAAEAAAAnAAMAAAACAAEAAAAnAAQAAAACAAEAAAAnAAUAAAACAAEAAAAnABkAAAAAAAIAAAAnABoAAAAAAAIAAAAnABsAAAAAAAIAAAAnABwAAAACAAIAAAAnAB0AAAACAAEAAAAnAB4AAAACAAEAAAAnAB8AAAACAAEAAAAnACAAAAACAAEAAAAnACEAAAACAAEAAAAnACIAAAACAAEAAAAnACMAAAACAAEAAAAnACQAAAACAAEAAAAnACUAAAACAAEAAAAnACYAAAACAAEAAAAnACcAAAACAAEAAAAnACgAAAACAAEAAAAoAAAAAAACAAEAAAAoAAEAAAACAAEAAAAoAAIAAAACAAEAAAAoAAMAAAACAAEAAAAoAAQAAAACAAEAAAAoAAUAAAACAAEAAAAoABkAAAAAAAIAAAAoABoAAAAAAAIAAAAoABsAAAAAAAIAAAAoABwAAAACAAIAAAAoAB0AAAACAAEAAAAoAB4AAAACAAEAAAAoAB8AAAACAAEAAAAoACAAAAACAAEAAAAoACEAAAACAAEAAAAoACIAAAACAAEAAAAoACMAAAACAAEAAAAoACQAAAACAAEAAAAoACUAAAACAAEAAAAoACYAAAACAAEAAAAoACcAAAACAAEAAAAoACgAAAACAAEAAAApAAAAAAACAAEAAAApAAEAAAACAAEAAAApAAIAAAACAAEAAAApAAMAAAACAAEAAAApAAQAAAACAAEAAAApAAUAAAACAAEAAAApABkAAAAAAAIAAAApABoAAAAAAAIAAAApABsAAAAAAAIAAAApABwAAAACAAIAAAApAB0AAAACAAEAAAApAB4AAAACAAEAAAApAB8AAAACAAEAAAApACAAAAACAAEAAAApACEAAAACAAEAAAApACIAAAACAAEAAAApACMAAAACAAEAAAApACQAAAACAAEAAAApACUAAAACAAEAAAApACYAAAACAAEAAAApACcAAAACAAEAAAApACgAAAACAAEAAAAqAAAAAAACAAEAAAAqAAEAAAACAAEAAAAqAAIAAAACAAEAAAAqAAMAAAACAAEAAAAqAAQAAAACAAEAAAAqAAUAAAACAAEAAAAqAAYAAAACAAEAAAAqAAcAAAACAAEAAAAqAAgAAAACAAEAAAAqAAkAAAACAAEAAAAqAAoAAAACAAEAAAAqAAsAAAACAAEAAAAqAAwAAAACAAMAAAAqAA0AAAACAAQAAAAqAA4AAAACAAUAAAAqAA8AAAAAAAIAAAAqABAAAAAAAAIAAAAqABEAAAAAAAIAAAAqABIAAAAAAAIAAAAqABMAAAAAAAIAAAAqABQAAAAAAAIAAAAqABUAAAAAAAIAAAAqABYAAAAAAAIAAAAqABcAAAAAAAIAAAAqABgAAAAAAAIAAAAqABkAAAAAAAIAAAAqABoAAAAAAAIAAAAqABsAAAAAAAIAAAAqABwAAAACAAIAAAAqAB0AAAACAAEAAAAqAB4AAAACAAEAAAAqAB8AAAACAAEAAAAqACAAAAACAAEAAAAqACEAAAACAAEAAAAqACIAAAACAAEAAAAqACMAAAACAAEAAAAqACQAAAACAAEAAAAqACUAAAACAAEAAAAqACYAAAACAAEAAAAqACcAAAACAAEAAAAqACgAAAACAAEAAAArAAAAAAACAAEAAAArAAEAAAACAAEAAAArAAIAAAACAAEAAAArAAMAAAACAAEAAAArAAQAAAACAAEAAAArAAUAAAACAAEAAAArAAYAAAACAAEAAAArAAcAAAACAAEAAAArAAgAAAACAAEAAAArAAkAAAACAAEAAAArAAoAAAACAAEAAAArAAsAAAACAAEAAAArAAwAAAADAAMAAAArAA0AAAADAAQAAAArAA4AAAADAAUAAAArAA8AAAAAAAIAAAArABAAAAAAAAIAAAArABEAAAAAAAIAAAArABIAAAAAAAIAAAArABMAAAAAAAIAAAArABQAAAAAAAIAAAArABYAAAAAAAIAAAArABcAAAAAAAIAAAArABgAAAAAAAIAAAArABkAAAAAAAIAAAArABoAAAAAAAIAAAArABsAAAAAAAIAAAArABwAAAACAAIAAAArAB0AAAACAAEAAAArAB4AAAACAAEAAAArAB8AAAACAAEAAAArACAAAAACAAEAAAArACEAAAACAAEAAAArACIAAAACAAEAAAArACMAAAACAAEAAAArACQAAAACAAEAAAArACUAAAACAAEAAAArACYAAAACAAEAAAArACcAAAACAAEAAAArACgAAAACAAEAAAAsAAAAAAACAAEAAAAsAAEAAAACAAEAAAAsAAIAAAACAAEAAAAsAAMAAAACAAEAAAAsAAQAAAACAAEAAAAsAAUAAAACAAEAAAAsAAYAAAACAAEAAAAsAAcAAAACAAEAAAAsAAgAAAACAAEAAAAsAAkAAAACAAEAAAAsAAoAAAACAAEAAAAsAAsAAAACAAEAAAAsAAwAAAACAAEAAAAsAA0AAAACAAEAAAAsAA4AAAADAAAAAAAsABAAAAADAAEAAAAsABEAAAADAAEAAAAsABIAAAADAAEAAAAsABMAAAADAAEAAAAsABQAAAADAAEAAAAsABUAAAADAAEAAAAsABYAAAADAAEAAAAsABcAAAADAAEAAAAsABgAAAADAAEAAAAsABkAAAADAAEAAAAsABoAAAADAAEAAAAsABsAAAADAAEAAAAsABwAAAADAAIAAAAsAB0AAAACAAEAAAAsAB4AAAACAAEAAAAsAB8AAAACAAEAAAAsACAAAAACAAEAAAAsACEAAAACAAEAAAAsACIAAAACAAEAAAAsACMAAAACAAEAAAAsACQAAAACAAEAAAAsACUAAAACAAEAAAAsACYAAAACAAEAAAAsACcAAAACAAEAAAAsACgAAAACAAEAAAAtAAAAAAACAAEAAAAtAAEAAAACAAEAAAAtAAIAAAACAAEAAAAtAAMAAAACAAEAAAAtAAQAAAACAAEAAAAtAAUAAAACAAEAAAAtAAYAAAACAAEAAAAtAAcAAAACAAEAAAAtAAgAAAACAAEAAAAtAAkAAAACAAEAAAAtAAoAAAACAAEAAAAtAAsAAAACAAEAAAAtAAwAAAACAAEAAAAtAA0AAAACAAEAAAAtAA4AAAACAAEAAAAtAA8AAAACAAEAAAAtABAAAAACAAEAAAAtABEAAAACAAEAAAAtABIAAAACAAEAAAAtABMAAAACAAEAAAAtABQAAAACAAEAAAAtABUAAAACAAEAAAAtABYAAAACAAEAAAAtABcAAAACAAEAAAAtABgAAAACAAEAAAAtABkAAAACAAEAAAAtABoAAAACAAEAAAAtABsAAAACAAEAAAAtABwAAAACAAEAAAAtAB0AAAACAAEAAAAtAB4AAAACAAEAAAAtAB8AAAACAAEAAAAtACAAAAACAAEAAAAtACEAAAACAAEAAAAtACIAAAACAAEAAAAtACMAAAACAAEAAAAtACQAAAACAAEAAAAtACUAAAACAAEAAAAtACYAAAACAAEAAAAtACcAAAACAAEAAAAtACgAAAACAAEAAAAuAAAAAAACAAEAAAAuAAEAAAACAAEAAAAuAAIAAAACAAEAAAAuAAMAAAACAAEAAAAuAAQAAAACAAEAAAAuAAUAAAACAAEAAAAuAAYAAAACAAEAAAAuAAcAAAACAAEAAAAuAAgAAAACAAEAAAAuAAkAAAACAAEAAAAuAAoAAAACAAEAAAAuAAsAAAACAAEAAAAuAAwAAAACAAEAAAAuAA0AAAACAAEAAAAuAA4AAAACAAEAAAAuAA8AAAACAAEAAAAuABAAAAACAAEAAAAuABEAAAACAAEAAAAuABIAAAACAAEAAAAuABMAAAACAAEAAAAuABQAAAACAAEAAAAuABUAAAACAAEAAAAuABYAAAACAAEAAAAuABcAAAACAAEAAAAuABgAAAACAAEAAAAuABkAAAACAAEAAAAuABoAAAACAAEAAAAuABsAAAACAAEAAAAuABwAAAACAAEAAAAuAB0AAAACAAEAAAAuAB4AAAACAAEAAAAuAB8AAAACAAEAAAAuACAAAAACAAEAAAAuACEAAAACAAEAAAAuACIAAAACAAEAAAAuACMAAAACAAEAAAAuACQAAAACAAEAAAAuACUAAAACAAEAAAAuACYAAAACAAEAAAAuACcAAAACAAEAAAAuACgAAAACAAEAAAAvAAAAAAACAAEAAAAvAAEAAAACAAEAAAAvAAIAAAACAAEAAAAvAAMAAAACAAEAAAAvAAQAAAACAAEAAAAvAAUAAAACAAEAAAAvAAYAAAACAAEAAAAvAAcAAAACAAEAAAAvAAgAAAACAAEAAAAvAAkAAAACAAEAAAAvAAoAAAACAAEAAAAvAAsAAAACAAEAAAAvAAwAAAACAAEAAAAvAA0AAAACAAEAAAAvAA4AAAACAAEAAAAvAA8AAAACAAEAAAAvABAAAAACAAEAAAAvABEAAAACAAEAAAAvABIAAAACAAEAAAAvABMAAAACAAEAAAAvABQAAAACAAEAAAAvABUAAAACAAEAAAAvABYAAAACAAEAAAAvABcAAAACAAEAAAAvABgAAAACAAEAAAAvABkAAAACAAEAAAAvABoAAAACAAEAAAAvABsAAAACAAEAAAAvABwAAAACAAEAAAAvAB0AAAACAAEAAAAvAB4AAAACAAEAAAAvAB8AAAACAAEAAAAvACAAAAACAAEAAAAvACEAAAACAAEAAAAvACIAAAACAAEAAAAvACMAAAACAAEAAAAvACQAAAACAAEAAAAvACUAAAACAAEAAAAvACYAAAACAAEAAAAvACcAAAACAAEAAAAvACgAAAACAAEAAAAwAAAAAAACAAEAAAAwAAEAAAACAAEAAAAwAAIAAAACAAEAAAAwAAMAAAACAAEAAAAwAAQAAAACAAEAAAAwAAUAAAACAAEAAAAwAAYAAAACAAEAAAAwAAcAAAACAAEAAAAwAAgAAAACAAEAAAAwAAkAAAACAAEAAAAwAAoAAAACAAEAAAAwAAsAAAACAAEAAAAwAAwAAAACAAEAAAAwAA0AAAACAAEAAAAwAA4AAAACAAEAAAAwAA8AAAACAAEAAAAwABAAAAACAAEAAAAwABEAAAACAAEAAAAwABIAAAACAAEAAAAwABMAAAACAAEAAAAwABQAAAACAAEAAAAwABUAAAACAAEAAAAwABYAAAACAAEAAAAwABcAAAACAAEAAAAwABgAAAACAAEAAAAwABkAAAACAAEAAAAwABoAAAACAAEAAAAwABsAAAACAAEAAAAwABwAAAACAAEAAAAwAB0AAAACAAEAAAAwAB4AAAACAAEAAAAwAB8AAAACAAEAAAAwACAAAAACAAEAAAAwACEAAAACAAEAAAAwACIAAAACAAEAAAAwACMAAAACAAEAAAAwACQAAAACAAEAAAAwACUAAAACAAEAAAAwACYAAAACAAEAAAAwACcAAAACAAEAAAAwACgAAAACAAEAAAAxAAAAAAACAAEAAAAxAAEAAAACAAEAAAAxAAIAAAACAAEAAAAxAAMAAAACAAEAAAAxAAQAAAACAAEAAAAxAAUAAAACAAEAAAAxAAYAAAACAAEAAAAxAAcAAAACAAEAAAAxAAgAAAACAAEAAAAxAAkAAAACAAEAAAAxAAoAAAACAAEAAAAxAAsAAAACAAEAAAAxAAwAAAACAAEAAAAxAA0AAAACAAEAAAAxAA4AAAACAAEAAAAxAA8AAAACAAEAAAAxABAAAAACAAEAAAAxABEAAAACAAEAAAAxABIAAAACAAEAAAAxABMAAAACAAEAAAAxABQAAAACAAEAAAAxABUAAAACAAEAAAAxABYAAAACAAEAAAAxABcAAAACAAEAAAAxABgAAAACAAEAAAAxABkAAAACAAEAAAAxABoAAAACAAEAAAAxABsAAAACAAEAAAAxABwAAAACAAEAAAAxAB0AAAACAAEAAAAxAB4AAAACAAEAAAAxAB8AAAACAAEAAAAxACAAAAACAAEAAAAxACEAAAACAAEAAAAxACIAAAACAAEAAAAxACMAAAACAAEAAAAxACQAAAACAAEAAAAxACUAAAACAAEAAAAxACYAAAACAAEAAAAxACcAAAACAAEAAAAxACgAAAACAAEAAAAyAAAAAAACAAEAAAAyAAEAAAACAAEAAAAyAAIAAAACAAEAAAAyAAMAAAACAAEAAAAyAAQAAAACAAEAAAAyAAUAAAACAAEAAAAyAAYAAAACAAEAAAAyAAcAAAACAAEAAAAyAAgAAAACAAEAAAAyAAkAAAACAAEAAAAyAAoAAAACAAEAAAAyAAsAAAACAAEAAAAyAAwAAAACAAEAAAAyAA0AAAACAAEAAAAyAA4AAAACAAEAAAAyAA8AAAACAAEAAAAyABAAAAACAAEAAAAyABEAAAACAAEAAAAyABIAAAACAAEAAAAyABMAAAACAAEAAAAyABQAAAACAAEAAAAyABUAAAACAAEAAAAyABYAAAACAAEAAAAyABcAAAACAAEAAAAyABgAAAACAAEAAAAyABkAAAACAAEAAAAyABoAAAACAAEAAAAyABsAAAACAAEAAAAyABwAAAACAAEAAAAyAB0AAAACAAEAAAAyAB4AAAACAAEAAAAyAB8AAAACAAEAAAAyACAAAAACAAEAAAAyACEAAAACAAEAAAAyACIAAAACAAEAAAAyACMAAAACAAEAAAAyACQAAAACAAEAAAAyACUAAAACAAEAAAAyACYAAAACAAEAAAAyACcAAAACAAEAAAAyACgAAAACAAEAAAAzAAAAAAACAAEAAAAzAAEAAAACAAEAAAAzAAIAAAACAAEAAAAzAAMAAAACAAEAAAAzAAQAAAACAAEAAAAzAAUAAAACAAEAAAAzAAYAAAACAAEAAAAzAAcAAAACAAEAAAAzAAgAAAACAAEAAAAzAAkAAAACAAEAAAAzAAoAAAACAAEAAAAzAAsAAAACAAEAAAAzAAwAAAACAAEAAAAzAA0AAAACAAEAAAAzAA4AAAACAAEAAAAzAA8AAAACAAEAAAAzABAAAAACAAEAAAAzABEAAAACAAEAAAAzABIAAAACAAEAAAAzABMAAAACAAEAAAAzABQAAAACAAEAAAAzABUAAAACAAEAAAAzABYAAAACAAEAAAAzABcAAAACAAEAAAAzABgAAAACAAEAAAAzABkAAAACAAEAAAAzABoAAAACAAEAAAAzABsAAAACAAEAAAAzABwAAAACAAEAAAAzAB0AAAACAAEAAAAzAB4AAAACAAEAAAAzAB8AAAACAAEAAAAzACAAAAACAAEAAAAzACEAAAACAAEAAAAzACIAAAACAAEAAAAzACMAAAACAAEAAAAzACQAAAACAAEAAAAzACUAAAACAAEAAAAzACYAAAACAAEAAAAzACcAAAACAAEAAAAzACgAAAACAAEAAAA0AAAAAAACAAEAAAA0AAEAAAACAAEAAAA0AAIAAAACAAEAAAA0AAMAAAACAAEAAAA0AAQAAAACAAEAAAA0AAUAAAACAAEAAAA0AAYAAAACAAEAAAA0AAcAAAACAAEAAAA0AAgAAAACAAEAAAA0AAkAAAACAAEAAAA0AAoAAAACAAEAAAA0AAsAAAACAAEAAAA0AAwAAAACAAEAAAA0AA0AAAACAAEAAAA0AA4AAAACAAEAAAA0AA8AAAACAAEAAAA0ABAAAAACAAEAAAA0ABEAAAACAAEAAAA0ABIAAAACAAEAAAA0ABMAAAACAAEAAAA0ABQAAAACAAEAAAA0ABUAAAACAAEAAAA0ABYAAAACAAEAAAA0ABcAAAACAAEAAAA0ABgAAAACAAEAAAA0ABkAAAACAAEAAAA0ABoAAAACAAEAAAA0ABsAAAACAAEAAAA0ABwAAAACAAEAAAA0AB0AAAACAAEAAAA0AB4AAAACAAEAAAA0AB8AAAACAAEAAAA0ACAAAAACAAEAAAA0ACEAAAACAAEAAAA0ACIAAAACAAEAAAA0ACMAAAACAAEAAAA0ACQAAAACAAEAAAA0ACUAAAACAAEAAAA0ACYAAAACAAEAAAA0ACcAAAACAAEAAAA0ACgAAAACAAEAAAA1AAAAAAACAAEAAAA1AAEAAAACAAEAAAA1AAIAAAACAAEAAAA1AAMAAAACAAEAAAA1AAQAAAACAAEAAAA1AAUAAAACAAEAAAA1AAYAAAACAAEAAAA1AAcAAAACAAEAAAA1AAgAAAACAAEAAAA1AAkAAAACAAEAAAA1AAoAAAACAAEAAAA1AAsAAAACAAEAAAA1AAwAAAACAAEAAAA1AA0AAAACAAEAAAA1AA4AAAACAAEAAAA1AA8AAAACAAEAAAA1ABAAAAACAAEAAAA1ABEAAAACAAEAAAA1ABIAAAACAAEAAAA1ABMAAAACAAEAAAA1ABQAAAACAAEAAAA1ABUAAAACAAEAAAA1ABYAAAACAAEAAAA1ABcAAAACAAEAAAA1ABgAAAACAAEAAAA1ABkAAAACAAEAAAA1ABoAAAACAAEAAAA1ABsAAAACAAEAAAA1ABwAAAACAAEAAAA1AB0AAAACAAEAAAA1AB4AAAACAAEAAAA1AB8AAAACAAEAAAA1ACAAAAACAAEAAAA1ACEAAAACAAEAAAA1ACIAAAACAAEAAAA1ACMAAAACAAEAAAA1ACQAAAACAAEAAAA1ACUAAAACAAEAAAA1ACYAAAACAAEAAAA1ACcAAAACAAEAAAA1ACgAAAACAAEAAAA2AAAAAAACAAEAAAA2AAEAAAACAAEAAAA2AAIAAAACAAEAAAA2AAMAAAACAAEAAAA2AAQAAAACAAEAAAA2AAUAAAACAAEAAAA2AAYAAAACAAEAAAA2AAcAAAACAAEAAAA2AAgAAAACAAEAAAA2AAkAAAACAAEAAAA2AAoAAAACAAEAAAA2AAsAAAACAAEAAAA2AAwAAAACAAEAAAA2AA0AAAACAAEAAAA2AA4AAAACAAEAAAA2AA8AAAACAAEAAAA2ABAAAAACAAEAAAA2ABEAAAACAAEAAAA2ABIAAAACAAEAAAA2ABMAAAACAAEAAAA2ABQAAAACAAEAAAA2ABUAAAACAAEAAAA2ABYAAAACAAEAAAA2ABcAAAACAAEAAAA2ABgAAAACAAEAAAA2ABkAAAACAAEAAAA2ABoAAAACAAEAAAA2ABsAAAACAAEAAAA2ABwAAAACAAEAAAA2AB0AAAACAAEAAAA2AB4AAAACAAEAAAA2AB8AAAACAAEAAAA2ACAAAAACAAEAAAA2ACEAAAACAAEAAAA2ACIAAAACAAEAAAA2ACMAAAACAAEAAAA2ACQAAAACAAEAAAA2ACUAAAACAAEAAAA2ACYAAAACAAEAAAA2ACcAAAACAAEAAAA2ACgAAAACAAEAAAA3AAAAAAACAAEAAAA3AAEAAAACAAEAAAA3AAIAAAACAAEAAAA3AAMAAAACAAEAAAA3AAQAAAACAAEAAAA3AAUAAAACAAEAAAA3AAYAAAACAAEAAAA3AAcAAAACAAEAAAA3AAgAAAACAAEAAAA3AAkAAAACAAEAAAA3AAoAAAACAAEAAAA3AAsAAAACAAEAAAA3AAwAAAACAAEAAAA3AA0AAAACAAEAAAA3AA4AAAACAAEAAAA3AA8AAAACAAEAAAA3ABAAAAACAAEAAAA3ABEAAAACAAEAAAA3ABIAAAACAAEAAAA3ABMAAAACAAEAAAA3ABQAAAACAAEAAAA3ABUAAAACAAEAAAA3ABYAAAACAAEAAAA3ABcAAAACAAEAAAA3ABgAAAACAAEAAAA3ABkAAAACAAEAAAA3ABoAAAACAAEAAAA3ABsAAAACAAEAAAA3ABwAAAACAAEAAAA3AB0AAAACAAEAAAA3AB4AAAACAAEAAAA3AB8AAAACAAEAAAA3ACAAAAACAAEAAAA3ACEAAAACAAEAAAA3ACIAAAACAAEAAAA3ACMAAAACAAEAAAA3ACQAAAACAAEAAAA3ACUAAAACAAEAAAA3ACYAAAACAAEAAAA3ACcAAAACAAEAAAA3ACgAAAACAAEAAAA4AAAAAAACAAEAAAA4AAEAAAACAAEAAAA4AAIAAAACAAEAAAA4AAMAAAACAAEAAAA4AAQAAAACAAEAAAA4AAUAAAACAAEAAAA4AAYAAAACAAEAAAA4AAcAAAACAAEAAAA4AAgAAAACAAEAAAA4AAkAAAACAAEAAAA4AAoAAAACAAEAAAA4AAsAAAACAAEAAAA4AAwAAAACAAEAAAA4AA0AAAACAAEAAAA4AA4AAAACAAEAAAA4AA8AAAACAAEAAAA4ABAAAAACAAEAAAA4ABEAAAACAAEAAAA4ABIAAAACAAEAAAA4ABMAAAACAAEAAAA4ABQAAAACAAEAAAA4ABUAAAACAAEAAAA4ABYAAAACAAEAAAA4ABcAAAACAAEAAAA4ABgAAAACAAEAAAA4ABkAAAACAAEAAAA4ABoAAAACAAEAAAA4ABsAAAACAAEAAAA4ABwAAAACAAEAAAA4AB0AAAACAAEAAAA4AB4AAAACAAEAAAA4AB8AAAACAAEAAAA4ACAAAAACAAEAAAA4ACEAAAACAAEAAAA4ACIAAAACAAEAAAA4ACMAAAACAAEAAAA4ACQAAAACAAEAAAA4ACUAAAACAAEAAAA4ACYAAAACAAEAAAA4ACcAAAACAAEAAAA4ACgAAAACAAEAAAA5AAAAAAACAAEAAAA5AAEAAAACAAEAAAA5AAIAAAACAAEAAAA5AAMAAAACAAEAAAA5AAQAAAACAAEAAAA5AAUAAAACAAEAAAA5AAYAAAACAAEAAAA5AAcAAAACAAEAAAA5AAgAAAACAAEAAAA5AAkAAAACAAEAAAA5AAoAAAACAAEAAAA5AAsAAAACAAEAAAA5AAwAAAACAAEAAAA5AA0AAAACAAEAAAA5AA4AAAACAAEAAAA5AA8AAAACAAEAAAA5ABAAAAACAAEAAAA5ABEAAAACAAEAAAA5ABIAAAACAAEAAAA5ABMAAAACAAEAAAA5ABQAAAACAAEAAAA5ABUAAAACAAEAAAA5ABYAAAACAAEAAAA5ABcAAAACAAEAAAA5ABgAAAACAAEAAAA5ABkAAAACAAEAAAA5ABoAAAACAAEAAAA5ABsAAAACAAEAAAA5ABwAAAACAAEAAAA5AB0AAAACAAEAAAA5AB4AAAACAAEAAAA5AB8AAAACAAEAAAA5ACAAAAACAAEAAAA5ACEAAAACAAEAAAA5ACIAAAACAAEAAAA5ACMAAAACAAEAAAA5ACQAAAACAAEAAAA5ACUAAAACAAEAAAA5ACYAAAACAAEAAAA5ACcAAAACAAEAAAA5ACgAAAACAAEAAAA6AAAAAAACAAEAAAA6AAEAAAACAAEAAAA6AAIAAAACAAEAAAA6AAMAAAACAAEAAAA6AAQAAAACAAEAAAA6AAUAAAACAAEAAAA6AAYAAAACAAEAAAA6AAcAAAACAAEAAAA6AAgAAAACAAEAAAA6AAkAAAACAAEAAAA6AAoAAAACAAEAAAA6AAsAAAACAAEAAAA6AAwAAAACAAEAAAA6AA0AAAACAAEAAAA6AA4AAAACAAEAAAA6AA8AAAACAAEAAAA6ABAAAAACAAEAAAA6ABEAAAACAAEAAAA6ABIAAAACAAEAAAA6ABMAAAACAAEAAAA6ABQAAAACAAEAAAA6ABUAAAACAAEAAAA6ABYAAAACAAEAAAA6ABcAAAACAAEAAAA6ABgAAAACAAEAAAA6ABkAAAACAAEAAAA6ABoAAAACAAEAAAA6ABsAAAACAAEAAAA6ABwAAAACAAEAAAA6AB0AAAACAAEAAAA6AB4AAAACAAEAAAA6AB8AAAACAAEAAAA6ACAAAAACAAEAAAA6ACEAAAACAAEAAAA6ACIAAAACAAEAAAA6ACMAAAACAAEAAAA6ACQAAAACAAEAAAA6ACUAAAACAAEAAAA6ACYAAAACAAEAAAA6ACcAAAACAAEAAAA6ACgAAAACAAEAAAA7AAAAAAACAAEAAAA7AAEAAAACAAEAAAA7AAIAAAACAAEAAAA7AAMAAAACAAEAAAA7AAQAAAACAAEAAAA7AAUAAAACAAEAAAA7AAYAAAACAAEAAAA7AAcAAAACAAEAAAA7AAgAAAACAAEAAAA7AAkAAAACAAEAAAA7AAoAAAACAAEAAAA7AAsAAAACAAEAAAA7AAwAAAACAAEAAAA7AA0AAAACAAEAAAA7AA4AAAACAAEAAAA7AA8AAAACAAEAAAA7ABAAAAACAAEAAAA7ABEAAAACAAEAAAA7ABIAAAACAAEAAAA7ABMAAAACAAEAAAA7ABQAAAACAAEAAAA7ABUAAAACAAEAAAA7ABYAAAACAAEAAAA7ABcAAAACAAEAAAA7ABgAAAACAAEAAAA7ABkAAAACAAEAAAA7ABoAAAACAAEAAAA7ABsAAAACAAEAAAA7ABwAAAACAAEAAAA7AB0AAAACAAEAAAA7AB4AAAACAAEAAAA7AB8AAAACAAEAAAA7ACAAAAACAAEAAAA7ACEAAAACAAEAAAA7ACIAAAACAAEAAAA7ACMAAAACAAEAAAA7ACQAAAACAAEAAAA7ACUAAAACAAEAAAA7ACYAAAACAAEAAAA7ACcAAAACAAEAAAA7ACgAAAACAAEAAAA8AAAAAAACAAEAAAA8AAEAAAACAAEAAAA8AAIAAAACAAEAAAA8AAMAAAACAAEAAAA8AAQAAAACAAEAAAA8AAUAAAACAAEAAAA8AAYAAAACAAEAAAA8AAcAAAACAAEAAAA8AAgAAAACAAEAAAA8AAkAAAACAAEAAAA8AAoAAAACAAEAAAA8AAsAAAACAAEAAAA8AAwAAAACAAEAAAA8AA0AAAACAAEAAAA8AA4AAAACAAEAAAA8AA8AAAACAAEAAAA8ABAAAAACAAEAAAA8ABEAAAACAAEAAAA8ABIAAAACAAEAAAA8ABMAAAACAAEAAAA8ABQAAAACAAEAAAA8ABUAAAACAAEAAAA8ABYAAAACAAEAAAA8ABcAAAACAAEAAAA8ABgAAAACAAEAAAA8ABkAAAACAAEAAAA8ABoAAAACAAEAAAA8ABsAAAACAAEAAAA8ABwAAAACAAEAAAA8AB0AAAACAAEAAAA8AB4AAAACAAEAAAA8AB8AAAACAAEAAAA8ACAAAAACAAEAAAA8ACEAAAACAAEAAAA8ACIAAAACAAEAAAA8ACMAAAACAAEAAAA8ACQAAAACAAEAAAA8ACUAAAACAAEAAAA8ACYAAAACAAEAAAA8ACcAAAACAAEAAAA8ACgAAAACAAEAAAA9AAAAAAACAAEAAAA9AAEAAAACAAEAAAA9AAIAAAACAAEAAAA9AAMAAAACAAEAAAA9AAQAAAACAAEAAAA9AAUAAAACAAEAAAA9AAYAAAACAAEAAAA9AAcAAAACAAEAAAA9AAgAAAACAAEAAAA9AAkAAAACAAEAAAA9AAoAAAACAAEAAAA9AAsAAAACAAEAAAA9AAwAAAACAAEAAAA9AA0AAAACAAEAAAA9AA4AAAACAAEAAAA9AA8AAAACAAEAAAA9ABAAAAACAAEAAAA9ABEAAAACAAEAAAA9ABIAAAACAAEAAAA9ABMAAAACAAEAAAA9ABQAAAACAAEAAAA9ABUAAAACAAEAAAA9ABYAAAACAAEAAAA9ABcAAAACAAEAAAA9ABgAAAACAAEAAAA9ABkAAAACAAEAAAA9ABoAAAACAAEAAAA9ABsAAAACAAEAAAA9ABwAAAACAAEAAAA9AB0AAAACAAEAAAA9AB4AAAACAAEAAAA9AB8AAAACAAEAAAA9ACAAAAACAAEAAAA9ACEAAAACAAEAAAA9ACIAAAACAAEAAAA9ACMAAAACAAEAAAA9ACQAAAACAAEAAAA9ACUAAAACAAEAAAA9ACYAAAACAAEAAAA9ACcAAAACAAEAAAA9ACgAAAACAAEAAAA+AAAAAAACAAEAAAA+AAEAAAACAAEAAAA+AAIAAAACAAEAAAA+AAMAAAACAAEAAAA+AAQAAAACAAEAAAA+AAUAAAACAAEAAAA+AAYAAAACAAEAAAA+AAcAAAACAAEAAAA+AAgAAAACAAEAAAA+AAkAAAACAAEAAAA+AAoAAAACAAEAAAA+AAsAAAACAAEAAAA+AAwAAAACAAEAAAA+AA0AAAACAAEAAAA+AA4AAAACAAEAAAA+AA8AAAACAAEAAAA+ABAAAAACAAEAAAA+ABEAAAACAAEAAAA+ABIAAAACAAEAAAA+ABMAAAACAAEAAAA+ABQAAAACAAEAAAA+ABUAAAACAAEAAAA+ABYAAAACAAEAAAA+ABcAAAACAAEAAAA+ABgAAAACAAEAAAA+ABkAAAACAAEAAAA+ABoAAAACAAEAAAA+ABsAAAACAAEAAAA+ABwAAAACAAEAAAA+AB0AAAACAAEAAAA+AB4AAAACAAEAAAA+AB8AAAACAAEAAAA+ACAAAAACAAEAAAA+ACEAAAACAAEAAAA+ACIAAAACAAEAAAA+ACMAAAACAAEAAAA+ACQAAAACAAEAAAA+ACUAAAACAAEAAAA+ACYAAAACAAEAAAA+ACcAAAACAAEAAAA+ACgAAAACAAEAAAA/AAAAAAACAAEAAAA/AAEAAAACAAEAAAA/AAIAAAACAAEAAAA/AAMAAAACAAEAAAA/AAQAAAACAAEAAAA/AAUAAAACAAEAAAA/AAYAAAACAAEAAAA/AAcAAAACAAEAAAA/AAgAAAACAAEAAAA/AAkAAAACAAEAAAA/AAoAAAACAAEAAAA/AAsAAAACAAEAAAA/AAwAAAACAAEAAAA/AA0AAAACAAEAAAA/AA4AAAACAAEAAAA/AA8AAAACAAEAAAA/ABAAAAACAAEAAAA/ABEAAAACAAEAAAA/ABIAAAACAAEAAAA/ABMAAAACAAEAAAA/ABQAAAACAAEAAAA/ABUAAAACAAEAAAA/ABYAAAACAAEAAAA/ABcAAAACAAEAAAA/ABgAAAACAAEAAAA/ABkAAAACAAEAAAA/ABoAAAACAAEAAAA/ABsAAAACAAEAAAA/ABwAAAACAAEAAAA/AB0AAAACAAEAAAA/AB4AAAACAAEAAAA/AB8AAAACAAEAAAA/ACAAAAACAAEAAAA/ACEAAAACAAEAAAA/ACIAAAACAAEAAAA/ACMAAAACAAEAAAA/ACQAAAACAAEAAAA/ACUAAAACAAEAAAA/ACYAAAACAAEAAAA/ACcAAAACAAEAAAA/ACgAAAACAAEAAABAAAAAAAACAAEAAABAAAEAAAACAAEAAABAAAIAAAACAAEAAABAAAMAAAACAAEAAABAAAQAAAACAAEAAABAAAUAAAACAAEAAABAAAYAAAACAAEAAABAAAcAAAACAAEAAABAAAgAAAACAAEAAABAAAkAAAACAAEAAABAAAoAAAACAAEAAABAAAsAAAACAAEAAABAAAwAAAACAAEAAABAAA0AAAACAAEAAABAAA4AAAACAAEAAABAAA8AAAACAAEAAABAABAAAAACAAEAAABAABEAAAACAAEAAABAABIAAAACAAEAAABAABMAAAACAAEAAABAABQAAAACAAEAAABAABUAAAACAAEAAABAABYAAAACAAEAAABAABcAAAACAAEAAABAABgAAAACAAEAAABAABkAAAACAAEAAABAABoAAAACAAEAAABAABsAAAACAAEAAABAABwAAAACAAEAAABAAB0AAAACAAEAAABAAB4AAAACAAEAAABAAB8AAAACAAEAAABAACAAAAACAAEAAABAACEAAAACAAEAAABAACIAAAACAAEAAABAACMAAAACAAEAAABAACQAAAACAAEAAABAACUAAAACAAEAAABAACYAAAACAAEAAABAACcAAAACAAEAAABAACgAAAACAAEAAABBAAAAAAACAAEAAABBAAEAAAACAAEAAABBAAIAAAACAAEAAABBAAMAAAACAAEAAABBAAQAAAACAAEAAABBAAUAAAACAAEAAABBAAYAAAACAAEAAABBAAcAAAACAAEAAABBAAgAAAACAAEAAABBAAkAAAACAAEAAABBAAoAAAACAAEAAABBAAsAAAACAAEAAABBAAwAAAACAAEAAABBAA0AAAACAAEAAABBAA4AAAACAAEAAABBAA8AAAACAAEAAABBABAAAAACAAEAAABBABEAAAACAAEAAABBABIAAAACAAEAAABBABMAAAACAAEAAABBABQAAAACAAEAAABBABUAAAACAAEAAABBABYAAAACAAEAAABBABcAAAACAAEAAABBABgAAAACAAEAAABBABkAAAACAAEAAABBABoAAAACAAEAAABBABsAAAACAAEAAABBABwAAAACAAEAAABBAB0AAAACAAEAAABBAB4AAAACAAEAAABBAB8AAAACAAEAAABBACAAAAACAAEAAABBACEAAAACAAEAAABBACIAAAACAAEAAABBACMAAAACAAEAAABBACQAAAACAAEAAABBACUAAAACAAEAAABBACYAAAACAAEAAABBACcAAAACAAEAAABBACgAAAACAAEAAABCAAAAAAACAAEAAABCAAEAAAACAAEAAABCAAIAAAACAAEAAABCAAMAAAACAAEAAABCAAQAAAACAAEAAABCAAUAAAACAAEAAABCAAYAAAACAAEAAABCAAcAAAACAAEAAABCAAgAAAACAAEAAABCAAkAAAACAAEAAABCAAoAAAACAAEAAABCAAsAAAACAAEAAABCAAwAAAACAAEAAABCAA0AAAACAAEAAABCAA4AAAACAAEAAABCAA8AAAACAAEAAABCABAAAAACAAEAAABCABEAAAACAAEAAABCABIAAAACAAEAAABCABMAAAACAAEAAABCABQAAAACAAEAAABCABUAAAACAAEAAABCABYAAAACAAEAAABCABcAAAACAAEAAABCABgAAAACAAEAAABCABkAAAACAAEAAABCABoAAAACAAEAAABCABsAAAACAAEAAABCABwAAAACAAEAAABCAB0AAAACAAEAAABCAB4AAAACAAEAAABCAB8AAAACAAEAAABCACAAAAACAAEAAABCACEAAAACAAEAAABCACIAAAACAAEAAABCACMAAAACAAEAAABCACQAAAACAAEAAABCACUAAAACAAEAAABCACYAAAACAAEAAABCACcAAAACAAEAAABCACgAAAACAAEAAABDAAAAAAACAAEAAABDAAEAAAACAAEAAABDAAIAAAACAAEAAABDAAMAAAACAAEAAABDAAQAAAACAAEAAABDAAUAAAACAAEAAABDAAYAAAACAAEAAABDAAcAAAACAAEAAABDAAgAAAACAAEAAABDAAkAAAACAAEAAABDAAoAAAACAAEAAABDAAsAAAACAAEAAABDAAwAAAACAAEAAABDAA0AAAACAAEAAABDAA4AAAACAAEAAABDAA8AAAACAAEAAABDABAAAAACAAEAAABDABEAAAACAAEAAABDABIAAAACAAEAAABDABMAAAACAAEAAABDABQAAAACAAEAAABDABUAAAACAAEAAABDABYAAAACAAEAAABDABcAAAACAAEAAABDABgAAAACAAEAAABDABkAAAACAAEAAABDABoAAAACAAEAAABDABsAAAACAAEAAABDABwAAAACAAEAAABDAB0AAAACAAEAAABDAB4AAAACAAEAAABDAB8AAAACAAEAAABDACAAAAACAAEAAABDACEAAAACAAEAAABDACIAAAACAAEAAABDACMAAAACAAEAAABDACQAAAACAAEAAABDACUAAAACAAEAAABDACYAAAACAAEAAABDACcAAAACAAEAAABDACgAAAACAAEAAABEAAAAAAACAAEAAABEAAEAAAACAAEAAABEAAIAAAACAAEAAABEAAMAAAACAAEAAABEAAQAAAACAAEAAABEAAUAAAACAAEAAABEAAYAAAACAAEAAABEAAcAAAACAAEAAABEAAgAAAACAAEAAABEAAkAAAACAAEAAABEAAoAAAACAAEAAABEAAsAAAACAAEAAABEAAwAAAACAAEAAABEAA0AAAACAAEAAABEAA4AAAACAAEAAABEAA8AAAACAAEAAABEABAAAAACAAEAAABEABEAAAACAAEAAABEABIAAAACAAEAAABEABMAAAACAAEAAABEABQAAAACAAEAAABEABUAAAACAAEAAABEABYAAAACAAEAAABEABcAAAACAAEAAABEABgAAAACAAEAAABEABkAAAACAAEAAABEABoAAAACAAEAAABEABsAAAACAAEAAABEABwAAAACAAEAAABEAB0AAAACAAEAAABEAB4AAAACAAEAAABEAB8AAAACAAEAAABEACAAAAACAAEAAABEACEAAAACAAEAAABEACIAAAACAAEAAABEACMAAAACAAEAAABEACQAAAACAAEAAABEACUAAAACAAEAAABEACYAAAACAAEAAABEACcAAAACAAEAAABEACgAAAACAAEAAABFAAAAAAACAAEAAABFAAEAAAACAAEAAABFAAIAAAACAAEAAABFAAMAAAACAAEAAABFAAQAAAACAAEAAABFAAUAAAACAAEAAABFAAYAAAACAAEAAABFAAcAAAACAAEAAABFAAgAAAACAAEAAABFAAkAAAACAAEAAABFAAoAAAACAAEAAABFAAsAAAACAAEAAABFAAwAAAACAAEAAABFAA0AAAACAAEAAABFAA4AAAACAAEAAABFAA8AAAACAAEAAABFABAAAAACAAEAAABFABEAAAACAAEAAABFABIAAAACAAEAAABFABMAAAACAAEAAABFABQAAAACAAEAAABFABUAAAACAAEAAABFABYAAAACAAEAAABFABcAAAACAAEAAABFABgAAAACAAEAAABFABkAAAACAAEAAABFABoAAAACAAEAAABFABsAAAACAAEAAABFABwAAAACAAEAAABFAB0AAAACAAEAAABFAB4AAAACAAEAAABFAB8AAAACAAEAAABFACAAAAACAAEAAABFACEAAAACAAEAAABFACIAAAACAAEAAABFACMAAAACAAEAAABFACQAAAACAAEAAABFACUAAAACAAEAAABFACYAAAACAAEAAABFACcAAAACAAEAAABFACgAAAACAAEAAABGAAAAAAACAAEAAABGAAEAAAACAAEAAABGAAIAAAACAAEAAABGAAMAAAACAAEAAABGAAQAAAACAAEAAABGAAUAAAACAAEAAABGAAYAAAACAAEAAABGAAcAAAACAAEAAABGAAgAAAACAAEAAABGAAkAAAACAAEAAABGAAoAAAACAAEAAABGAAsAAAACAAEAAABGAAwAAAACAAEAAABGAA0AAAACAAEAAABGAA4AAAACAAEAAABGAA8AAAACAAEAAABGABAAAAACAAEAAABGABEAAAACAAEAAABGABIAAAACAAEAAABGABMAAAACAAEAAABGABQAAAACAAEAAABGABUAAAACAAEAAABGABYAAAACAAEAAABGABcAAAACAAEAAABGABgAAAACAAEAAABGABkAAAACAAEAAABGABoAAAACAAEAAABGABsAAAACAAEAAABGABwAAAACAAEAAABGAB0AAAACAAEAAABGAB4AAAACAAEAAABGAB8AAAACAAEAAABGACAAAAACAAEAAABGACEAAAACAAEAAABGACIAAAACAAEAAABGACMAAAACAAEAAABGACQAAAACAAEAAABGACUAAAACAAEAAABGACYAAAACAAEAAABGACcAAAACAAEAAABGACgAAAACAAEAAABHAAAAAAACAAEAAABHAAEAAAACAAEAAABHAAIAAAACAAEAAABHAAMAAAACAAEAAABHAAQAAAACAAEAAABHAAUAAAACAAEAAABHAAYAAAACAAEAAABHAAcAAAACAAEAAABHAAgAAAACAAEAAABHAAkAAAACAAEAAABHAAoAAAACAAEAAABHAAsAAAACAAEAAABHAAwAAAACAAEAAABHAA0AAAACAAEAAABHAA4AAAACAAEAAABHAA8AAAACAAEAAABHABAAAAACAAEAAABHABEAAAACAAEAAABHABIAAAACAAEAAABHABMAAAACAAEAAABHABQAAAACAAEAAABHABUAAAACAAEAAABHABYAAAACAAEAAABHABcAAAACAAEAAABHABgAAAACAAEAAABHABkAAAACAAEAAABHABoAAAACAAEAAABHABsAAAACAAEAAABHABwAAAACAAEAAABHAB0AAAACAAEAAABHAB4AAAACAAEAAABHAB8AAAACAAEAAABHACAAAAACAAEAAABHACEAAAACAAEAAABHACIAAAACAAEAAABHACMAAAACAAEAAABHACQAAAACAAEAAABHACUAAAACAAEAAABHACYAAAACAAEAAABHACcAAAACAAEAAABHACgAAAACAAEAAAAsAA8AAAADAAEAAAArABUAAAAAAAIAAAAbAAsAAAACAAEAAAAbAAwAAAACAAEAAAAbAA0AAAACAAEAAAAbAA4AAAACAAEAAAAbAA8AAAACAAEAAAAbABAAAAACAAEAAAAbABEAAAACAAEAAAAbABIAAAACAAEAAAAbABMAAAACAAEAAAAbABQAAAACAAEAAAAbABUAAAACAAEAAAAbABYAAAACAAEAAAAbABcAAAACAAEAAAAbABgAAAACAAEAAAAcAAsAAAACAAEAAAAcAAwAAAACAAEAAAAcAA0AAAACAAEAAAAcAA4AAAABAAAAAAAcAA8AAAABAAEAAAAcABAAAAABAAEAAAAcABEAAAABAAEAAAAcABIAAAABAAEAAAAcABMAAAABAAEAAAAcABQAAAABAAEAAAAcABUAAAABAAEAAAAcABYAAAABAAEAAAAcABcAAAABAAEAAAAcABgAAAABAAEAAAAdAAsAAAACAAEAAAAdAAwAAAABAAMAAAAdAA0AAAABAAQAAAAdAA4AAAABAAUAAAAdAA8AAAAAAAIAAAAdABAAAAAAAAIAAAAdABEAAAAAAAIAAAAdABIAAAAAAAIAAAAdABMAAAAAAAIAAAAdABQAAAAAAAIAAAAdABUAAAAAAAIAAAAdABYAAAAAAAIAAAAdABcAAAAAAAIAAAAdABgAAAAAAAIAAAAeAAsAAAACAAEAAAAeAAwAAAACAAMAAAAeAA0AAAAMAAAAAAAeAA4AAAACAAUAAAAeAA8AAAAAAAIAAAAeABAAAAAAAAIAAAAeABEAAAAAAAIAAAAeABIAAAAAAAIAAAAeABMAAAAAAAIAAAAeABQAAAAAAAIAAAAeABUAAAAAAAIAAAAeABYAAAAAAAIAAAAeABcAAAAAAAIAAAAeABgAAAAAAAIAAAAfAAsAAAACAAEAAAAfAAwAAAADAAMAAAAfAA0AAAANAAAAAAAfAA4AAAADAAUAAAAfAA8AAAAAAAIAAAAfABAAAAAAAAIAAAAfABEAAAAAAAIAAAAfABIAAAAAAAIAAAAfABMAAAAAAAIAAAAfABQAAAAAAAIAAAAfABUAAAAAAAIAAAAfABYAAAAAAAIAAAAfABcAAAAAAAIAAAAfABgAAAAAAAIAAAAgAAsAAAACAAEAAAAgAAwAAAABAAMAAAAgAA0AAAACAAQAAAAgAA4AAAABAAUAAAAgAA8AAAAAAAIAAAAgABAAAAAAAAIAAAAgABEAAAAAAAIAAAAgABIAAAAAAAIAAAAgABMAAAAAAAIAAAAgABQAAAAAAAIAAAAgABUAAAAAAAIAAAAgABYAAAAAAAIAAAAgABcAAAAAAAIAAAAgABgAAAAAAAIAAAAhAAsAAAACAAEAAAAhAAwAAAACAAMAAAAhAA0AAAACAAQAAAAhAA4AAAACAAUAAAAhAA8AAAAAAAIAAAAhABAAAAAAAAIAAAAhABEAAAAAAAIAAAAhABIAAAAAAAIAAAAhABMAAAAAAAIAAAAhABQAAAAAAAIAAAAhABUAAAAAAAIAAAAhABYAAAAAAAIAAAAhABcAAAAAAAIAAAAhABgAAAAAAAIAAAAiAAsAAAACAAEAAAAiAAwAAAADAAMAAAAiAA0AAAAMAAoAAAAiAA4AAAAMAAsAAAAiAA8AAAAMAAwAAAAiABAAAAAAAAIAAAAiABEAAAAAAAIAAAAiABIAAAAAAAIAAAAiABMAAAAAAAIAAAAiABQAAAAAAAIAAAAiABUAAAAAAAIAAAAiABYAAAAAAAIAAAAiABcAAAAQAAQAAAAiABgAAAAAAAIAAAAjAAsAAAACAAEAAAAjAAwAAAACAAMAAAAjAA0AAAANAAoAAAAjAA4AAAANAAsAAAAjAA8AAAANAAwAAAAjABAAAAAAAAIAAAAjABEAAAAAAAIAAAAjABIAAAAAAAIAAAAjABMAAAAAAAIAAAAjABQAAAAAAAIAAAAjABUAAAAAAAIAAAAjABYAAAAAAAIAAAAjABcAAAAAAAIAAAAjABgAAAAAAAIAAAAkAAsAAAACAAEAAAAkAAwAAAACAAMAAAAkAA0AAAACAAQAAAAkAA4AAAACAAUAAAAkAA8AAAAAAAIAAAAkABAAAAAAAAIAAAAkABEAAAAAAAIAAAAkABIAAAAAAAIAAAAkABMAAAAAAAIAAAAkABQAAAAAAAIAAAAkABUAAAAPAAQAAAAkABYAAAAAAAIAAAAkABcAAAANAAEAAAAkABgAAAARAAQAAAAlAAsAAAACAAEAAAAlAAwAAAADAAMAAAAlAA0AAAADAAQAAAAlAA4AAAADAAUAAAAlAA8AAAAAAAIAAAAlABAAAAAAAAIAAAAlABEAAAAAAAIAAAAlABIAAAAAAAIAAAAlABMAAAAAAAIAAAAlABQAAAAAAAIAAAAlABUAAAAAAAIAAAAlABYAAAAAAAIAAAAlABcAAAAAAAIAAAAlABgAAAAAAAIAAAAmAAsAAAACAAEAAAAmAAwAAAABAAMAAAAmAA0AAAABAAQAAAAmAA4AAAABAAUAAAAmAA8AAAAAAAIAAAAmABAAAAAAAAIAAAAmABEAAAAAAAcAAAAmABIAAAAAAAgAAAAmABMAAAAAAAkAAAAmABQAAAAAAAIAAAAmABUAAAAAAAIAAAAmABYAAAAAAAIAAAAmABcAAAASAAQAAAAmABgAAAAAAAIAAAAnAAsAAAACAAEAAAAnAAwAAAACAAMAAAAnAA0AAAACAAQAAAAnAA4AAAACAAUAAAAnAA8AAAAAAAIAAAAnABAAAAAAAAIAAAAnABEAAAABAAcAAAAnABIAAAABAAgAAAAnABMAAAABAAkAAAAnABQAAAAAAAIAAAAnABUAAAAAAAIAAAAnABYAAAAAAAIAAAAnABcAAAAAAAIAAAAnABgAAAAAAAIAAAAoAAsAAAACAAEAAAAoAAwAAAADAAMAAAAoAA0AAAADAAQAAAAoAA4AAAADAAUAAAAoAA8AAAAAAAIAAAAoABAAAAAAAAIAAAAoABEAAAACAAcAAAAoABIAAAACAAgAAAAoABMAAAACAAkAAAAoABQAAAAAAAIAAAAoABUAAAAAAAIAAAAoABYAAAAAAAIAAAAoABcAAAAAAAIAAAAoABgAAAAAAAIAAAApAAsAAAACAAEAAAApAAwAAAABAAMAAAApAA0AAAABAAQAAAApAA4AAAABAAUAAAApAA8AAAATAAEAAAApABAAAAATAAIAAAApABEAAAATAAMAAAApABIAAAAAAAIAAAApABMAAAAAAAIAAAApABQAAAAAAAIAAAApABUAAAAAAAIAAAApABYAAAAAAAIAAAApABcAAAAAAAIAAAApABgAAAAAAAIAAAAXAAYAAAACAAEAAAAXAAcAAAACAAEAAAAXAAgAAAACAAEAAAAXAAkAAAACAAEAAAAXAAoAAAACAAEAAAAXAAsAAAACAAEAAAAXAAwAAAACAAEAAAAXAA0AAAACAAEAAAAXAA4AAAACAAEAAAAXAA8AAAACAAEAAAAXABAAAAACAAEAAAAXABEAAAACAAEAAAAXABIAAAACAAEAAAAYAAYAAAACAAEAAAAYAAcAAAACAAEAAAAYAAgAAAACAAEAAAAYAAkAAAACAAEAAAAYAAoAAAACAAEAAAAYAAsAAAACAAEAAAAYAAwAAAACAAEAAAAYAA0AAAACAAEAAAAYAA4AAAACAAEAAAAYAA8AAAACAAEAAAAYABAAAAACAAEAAAAYABEAAAACAAEAAAAYABIAAAACAAEAAAAZAAYAAAACAAEAAAAZAAcAAAACAAEAAAAZAAgAAAACAAEAAAAZAAkAAAACAAEAAAAZAAoAAAACAAEAAAAZAAsAAAACAAEAAAAZAAwAAAACAAEAAAAZAA0AAAACAAEAAAAZAA4AAAACAAEAAAAZAA8AAAACAAEAAAAZABAAAAACAAEAAAAZABEAAAACAAEAAAAZABIAAAACAAEAAAAaAAYAAAACAAEAAAAaAAcAAAACAAEAAAAaAAgAAAACAAEAAAAaAAkAAAACAAEAAAAaAAoAAAACAAEAAAAaAAsAAAACAAEAAAAaAAwAAAACAAEAAAAaAA0AAAACAAEAAAAaAA4AAAACAAEAAAAaAA8AAAACAAEAAAAaABAAAAACAAEAAAAaABEAAAACAAEAAAAaABIAAAACAAEAAAAbAAYAAAACAAEAAAAbAAcAAAACAAEAAAAbAAgAAAACAAEAAAAbAAkAAAACAAEAAAAbAAoAAAACAAEAAAAXABMAAAACAAEAAAAXABQAAAACAAEAAAAXABUAAAACAAEAAAAXABYAAAACAAEAAAAXABcAAAACAAEAAAAXABgAAAACAAEAAAAYABMAAAACAAEAAAAYABQAAAACAAEAAAAYABUAAAACAAEAAAAYABYAAAACAAEAAAAYABcAAAACAAEAAAAYABgAAAACAAEAAAAZABMAAAACAAEAAAAZABQAAAACAAEAAAAZABUAAAACAAEAAAAZABYAAAACAAEAAAAZABcAAAACAAEAAAAZABgAAAACAAEAAAAaABMAAAACAAEAAAAaABQAAAACAAEAAAAaABUAAAACAAEAAAAaABYAAAACAAEAAAAaABcAAAACAAEAAAAaABgAAAACAAEAAAAcAAYAAAACAAEAAAAcAAcAAAACAAEAAAAcAAgAAAACAAEAAAAcAAkAAAACAAEAAAAcAAoAAAACAAEAAAAdAAYAAAACAAEAAAAdAAcAAAACAAEAAAAdAAgAAAACAAEAAAAdAAkAAAACAAEAAAAdAAoAAAACAAEAAAAeAAYAAAACAAEAAAAeAAcAAAACAAEAAAAeAAgAAAACAAEAAAAeAAkAAAACAAEAAAAeAAoAAAACAAEAAAAfAAYAAAACAAEAAAAfAAcAAAACAAEAAAAfAAgAAAACAAEAAAAfAAkAAAACAAEAAAAfAAoAAAACAAEAAAAgAAYAAAACAAEAAAAgAAcAAAACAAEAAAAgAAgAAAACAAEAAAAgAAkAAAACAAEAAAAgAAoAAAACAAEAAAAhAAYAAAACAAEAAAAhAAcAAAACAAEAAAAhAAgAAAACAAEAAAAhAAkAAAACAAEAAAAhAAoAAAACAAEAAAAiAAYAAAACAAEAAAAiAAcAAAACAAEAAAAiAAgAAAACAAEAAAAiAAkAAAACAAEAAAAiAAoAAAACAAEAAAAjAAYAAAACAAEAAAAjAAcAAAACAAEAAAAjAAgAAAACAAEAAAAjAAkAAAACAAEAAAAjAAoAAAACAAEAAAAkAAYAAAACAAEAAAAkAAcAAAACAAEAAAAkAAgAAAACAAEAAAAkAAkAAAACAAEAAAAkAAoAAAACAAEAAAAlAAYAAAACAAEAAAAlAAcAAAACAAEAAAAlAAgAAAACAAEAAAAlAAkAAAACAAEAAAAlAAoAAAACAAEAAAAmAAYAAAACAAEAAAAmAAcAAAACAAEAAAAmAAgAAAACAAEAAAAmAAkAAAACAAEAAAAmAAoAAAACAAEAAAAnAAYAAAACAAEAAAAnAAcAAAACAAEAAAAnAAgAAAACAAEAAAAnAAkAAAACAAEAAAAnAAoAAAACAAEAAAAoAAYAAAACAAEAAAAoAAcAAAACAAEAAAAoAAgAAAACAAEAAAAoAAkAAAACAAEAAAAoAAoAAAACAAEAAAApAAYAAAACAAEAAAApAAcAAAACAAEAAAApAAgAAAACAAEAAAApAAkAAAACAAEAAAApAAoAAAACAAEAAAD0////AAACAAEAAAD1////AAACAAEAAAD1/wAAAAACAAEAAAD2/wAAAAACAAEAAAD2/wEAAAACAAEAAAD3/wIAAAACAAEAAAD4/wMAAAACAAEAAAD4/wQAAAACAAEAAAD5/wUAAAACAAEAAAD6/wYAAAACAAEAAAD6/wcAAAACAAEAAAD7/wgAAAACAAEAAAD8/wkAAAACAAEAAAD9/woAAAACAAEAAAD+/wsAAAACAAEAAAD+/wwAAAACAAEAAAD//w0AAAACAAEAAADl//T/AAACAAEAAADl//X/AAACAAEAAADl//b/AAACAAEAAADl//f/AAACAAEAAADl//j/AAACAAEAAADl//n/AAACAAEAAADl//r/AAACAAEAAADl//v/AAACAAEAAADl//z/AAACAAEAAADl//3/AAACAAEAAADl//7/AAACAAEAAADl////AAACAAEAAADl/wAAAAACAAEAAADl/wEAAAACAAEAAADl/wIAAAACAAEAAADl/wMAAAACAAEAAADl/wQAAAACAAEAAADl/wUAAAACAAEAAADl/wYAAAACAAEAAADl/wcAAAACAAEAAADl/wgAAAACAAEAAADl/wkAAAACAAEAAADl/woAAAACAAEAAADl/wsAAAACAAEAAADl/wwAAAACAAEAAADl/w0AAAACAAEAAADl/w4AAAACAAEAAADl/w8AAAACAAEAAADl/xAAAAACAAEAAADl/xEAAAACAAEAAADl/xIAAAACAAEAAADl/xMAAAACAAEAAADl/xQAAAACAAEAAADl/xUAAAACAAEAAADl/xYAAAACAAEAAADl/xcAAAACAAEAAADl/xgAAAACAAEAAADl/xkAAAACAAEAAADl/xoAAAACAAEAAADl/xsAAAACAAEAAADl/xwAAAACAAEAAADl/x0AAAACAAEAAADl/x4AAAACAAEAAADl/x8AAAACAAEAAADl/yAAAAACAAEAAADl/yEAAAACAAEAAADl/yIAAAACAAEAAADl/yMAAAACAAEAAADl/yQAAAACAAEAAADl/yUAAAACAAEAAADl/yYAAAACAAEAAADl/ycAAAACAAEAAADl/ygAAAACAAEAAADl/ykAAAACAAEAAADl/yoAAAACAAEAAADl/ysAAAACAAEAAADl/ywAAAACAAEAAADl/y0AAAACAAEAAADl/y4AAAACAAEAAADl/y8AAAACAAEAAADl/zAAAAACAAEAAADl/zEAAAACAAEAAADl/zIAAAACAAEAAADl/zMAAAACAAEAAADl/zQAAAACAAEAAADl/zUAAAACAAEAAADl/zYAAAACAAEAAADl/zcAAAACAAEAAADl/zgAAAACAAEAAADm//T/AAACAAEAAADm//X/AAACAAEAAADm//b/AAACAAEAAADm//f/AAACAAEAAADm//j/AAACAAEAAADm//n/AAACAAEAAADm//r/AAACAAEAAADm//v/AAACAAEAAADm//z/AAACAAEAAADm//3/AAACAAEAAADm//7/AAACAAEAAADm////AAACAAEAAADm/wAAAAACAAEAAADm/wEAAAACAAEAAADm/wIAAAACAAEAAADm/wMAAAACAAEAAADm/wQAAAACAAEAAADm/wUAAAACAAEAAADm/wYAAAACAAEAAADm/wcAAAACAAEAAADm/wgAAAACAAEAAADm/wkAAAACAAEAAADm/woAAAACAAEAAADm/wsAAAACAAEAAADm/wwAAAACAAEAAADm/w0AAAACAAEAAADm/w4AAAACAAEAAADm/w8AAAACAAEAAADm/xAAAAACAAEAAADm/xEAAAACAAEAAADm/xIAAAACAAEAAADm/xMAAAACAAEAAADm/xQAAAACAAEAAADm/xUAAAACAAEAAADm/xYAAAACAAEAAADm/xcAAAACAAEAAADm/xgAAAACAAEAAADm/xkAAAACAAEAAADm/xoAAAACAAEAAADm/xsAAAACAAEAAADm/xwAAAACAAEAAADm/x0AAAACAAEAAADm/x4AAAACAAEAAADm/x8AAAACAAEAAADm/yAAAAACAAEAAADm/yEAAAACAAEAAADm/yIAAAACAAEAAADm/yMAAAACAAEAAADm/yQAAAACAAEAAADm/yUAAAACAAEAAADm/yYAAAACAAEAAADm/ycAAAACAAEAAADm/ygAAAACAAEAAADm/ykAAAACAAEAAADm/yoAAAACAAEAAADm/ysAAAACAAEAAADm/ywAAAACAAEAAADm/y0AAAACAAEAAADm/y4AAAACAAEAAADm/y8AAAACAAEAAADm/zAAAAACAAEAAADm/zEAAAACAAEAAADm/zIAAAACAAEAAADm/zMAAAACAAEAAADm/zQAAAACAAEAAADm/zUAAAACAAEAAADm/zYAAAACAAEAAADm/zcAAAACAAEAAADm/zgAAAACAAEAAADn//T/AAACAAEAAADn//X/AAACAAEAAADn//b/AAACAAEAAADn//f/AAACAAEAAADn//j/AAACAAEAAADn//n/AAACAAEAAADn//r/AAACAAEAAADn//v/AAACAAEAAADn//z/AAACAAEAAADn//3/AAACAAEAAADn//7/AAACAAEAAADn////AAACAAEAAADn/wAAAAACAAEAAADn/wEAAAACAAEAAADn/wIAAAACAAEAAADn/wMAAAACAAEAAADn/wQAAAACAAEAAADn/wUAAAACAAEAAADn/wYAAAACAAEAAADn/wcAAAACAAEAAADn/wgAAAACAAEAAADn/wkAAAACAAEAAADn/woAAAACAAEAAADn/wsAAAACAAEAAADn/wwAAAACAAEAAADn/w0AAAACAAEAAADn/w4AAAACAAEAAADn/w8AAAACAAEAAADn/xAAAAACAAEAAADn/xEAAAACAAEAAADn/xIAAAACAAEAAADn/xMAAAACAAEAAADn/xQAAAACAAEAAADn/xUAAAACAAEAAADn/xYAAAACAAEAAADn/xcAAAACAAEAAADn/xgAAAACAAEAAADn/xkAAAACAAEAAADn/xoAAAACAAEAAADn/xsAAAACAAEAAADn/xwAAAACAAEAAADn/x0AAAACAAEAAADn/x4AAAACAAEAAADn/x8AAAACAAEAAADn/yAAAAACAAEAAADn/yEAAAACAAEAAADn/yIAAAACAAEAAADn/yMAAAACAAEAAADn/yQAAAACAAEAAADn/yUAAAACAAEAAADn/yYAAAACAAEAAADn/ycAAAACAAEAAADn/ygAAAACAAEAAADn/ykAAAACAAEAAADn/yoAAAACAAEAAADn/ysAAAACAAEAAADn/ywAAAACAAEAAADn/y0AAAACAAEAAADn/y4AAAACAAEAAADn/y8AAAACAAEAAADn/zAAAAACAAEAAADn/zEAAAACAAEAAADn/zIAAAACAAEAAADn/zMAAAACAAEAAADn/zQAAAACAAEAAADn/zUAAAACAAEAAADn/zYAAAACAAEAAADn/zcAAAACAAEAAADn/zgAAAACAAEAAADo//T/AAACAAEAAADo//X/AAACAAEAAADo//b/AAACAAEAAADo//f/AAACAAEAAADo//j/AAACAAEAAADo//n/AAACAAEAAADo//r/AAACAAEAAADo//v/AAACAAEAAADo//z/AAACAAEAAADo//3/AAACAAEAAADo//7/AAACAAEAAADo////AAACAAEAAADo/wAAAAACAAEAAADo/wEAAAACAAEAAADo/wIAAAACAAEAAADo/wMAAAACAAEAAADo/wQAAAACAAEAAADo/wUAAAACAAEAAADo/wYAAAACAAEAAADo/wcAAAACAAEAAADo/wgAAAACAAEAAADo/wkAAAACAAEAAADo/woAAAACAAEAAADo/wsAAAACAAEAAADo/wwAAAACAAEAAADo/w0AAAACAAEAAADo/w4AAAACAAEAAADo/w8AAAACAAEAAADo/xAAAAACAAEAAADo/xEAAAACAAEAAADo/xIAAAACAAEAAADo/xMAAAACAAEAAADo/xQAAAACAAEAAADo/xUAAAACAAEAAADo/xYAAAACAAEAAADo/xcAAAACAAEAAADo/xgAAAACAAEAAADo/xkAAAACAAEAAADo/xoAAAACAAEAAADo/xsAAAACAAEAAADo/xwAAAACAAEAAADo/x0AAAACAAEAAADo/x4AAAACAAEAAADo/x8AAAACAAEAAADo/yAAAAACAAEAAADo/yEAAAACAAEAAADo/yIAAAACAAEAAADo/yMAAAACAAEAAADo/yQAAAACAAEAAADo/yUAAAACAAEAAADo/yYAAAACAAEAAADo/ycAAAACAAEAAADo/ygAAAACAAEAAADo/ykAAAACAAEAAADo/yoAAAACAAEAAADo/ysAAAACAAEAAADo/ywAAAACAAEAAADo/y0AAAACAAEAAADo/y4AAAACAAEAAADo/y8AAAACAAEAAADo/zAAAAACAAEAAADo/zEAAAACAAEAAADo/zIAAAACAAEAAADo/zMAAAACAAEAAADo/zQAAAACAAEAAADo/zUAAAACAAEAAADo/zYAAAACAAEAAADo/zcAAAACAAEAAADo/zgAAAACAAEAAADp//T/AAACAAEAAADp//X/AAACAAEAAADp//b/AAACAAEAAADp//f/AAACAAEAAADp//j/AAACAAEAAADp//n/AAACAAEAAADp//r/AAACAAEAAADp//v/AAACAAEAAADp//z/AAACAAEAAADp//3/AAACAAEAAADp//7/AAACAAEAAADp////AAACAAEAAADp/wAAAAACAAEAAADp/wEAAAACAAEAAADp/wIAAAACAAEAAADp/wMAAAACAAEAAADp/wQAAAACAAEAAADp/wUAAAACAAEAAADp/wYAAAACAAEAAADp/wcAAAACAAEAAADp/wgAAAACAAEAAADp/wkAAAACAAEAAADp/woAAAACAAEAAADp/wsAAAACAAEAAADp/wwAAAACAAEAAADp/w0AAAACAAEAAADp/w4AAAACAAEAAADp/w8AAAACAAEAAADp/xAAAAACAAEAAADp/xEAAAACAAEAAADp/xIAAAACAAEAAADp/xMAAAACAAEAAADp/xQAAAACAAEAAADp/xUAAAACAAEAAADp/xYAAAACAAEAAADp/xcAAAACAAEAAADp/xgAAAACAAEAAADp/xkAAAACAAEAAADp/xoAAAACAAEAAADp/xsAAAACAAEAAADp/xwAAAACAAEAAADp/x0AAAACAAEAAADp/x4AAAACAAEAAADp/x8AAAACAAEAAADp/yAAAAACAAEAAADp/yEAAAACAAEAAADp/yIAAAACAAEAAADp/yMAAAACAAEAAADp/yQAAAACAAEAAADp/yUAAAACAAEAAADp/yYAAAACAAEAAADp/ycAAAACAAEAAADp/ygAAAACAAEAAADp/ykAAAACAAEAAADp/yoAAAACAAEAAADp/ysAAAACAAEAAADp/ywAAAACAAEAAADp/y0AAAACAAEAAADp/y4AAAACAAEAAADp/y8AAAACAAEAAADp/zAAAAACAAEAAADp/zEAAAACAAEAAADp/zIAAAACAAEAAADp/zMAAAACAAEAAADp/zQAAAACAAEAAADp/zUAAAACAAEAAADp/zYAAAACAAEAAADp/zcAAAACAAEAAADp/zgAAAACAAEAAADq//T/AAACAAEAAADq//X/AAACAAEAAADq//b/AAACAAEAAADq//f/AAACAAEAAADq//j/AAACAAEAAADq//n/AAACAAEAAADq//r/AAACAAEAAADq//v/AAACAAEAAADq//z/AAACAAEAAADq//3/AAACAAEAAADq//7/AAACAAEAAADq////AAACAAEAAADq/wAAAAACAAEAAADq/wEAAAACAAEAAADq/wIAAAACAAEAAADq/wMAAAACAAEAAADq/wQAAAACAAEAAADq/wUAAAACAAEAAADq/wYAAAACAAEAAADq/wcAAAACAAEAAADq/wgAAAACAAEAAADq/wkAAAACAAEAAADq/woAAAACAAEAAADq/wsAAAACAAEAAADq/wwAAAACAAEAAADq/w0AAAACAAEAAADq/w4AAAACAAEAAADq/w8AAAACAAEAAADq/xAAAAACAAEAAADq/xEAAAACAAEAAADq/xIAAAACAAEAAADq/xMAAAACAAEAAADq/xQAAAACAAEAAADq/xUAAAACAAEAAADq/xYAAAACAAEAAADq/xcAAAACAAEAAADq/xgAAAACAAEAAADq/xkAAAACAAEAAADq/xoAAAACAAEAAADq/xsAAAACAAEAAADq/xwAAAACAAEAAADq/x0AAAACAAEAAADq/x4AAAACAAEAAADq/x8AAAACAAEAAADq/yAAAAACAAEAAADq/yEAAAACAAEAAADq/yIAAAACAAEAAADq/yMAAAACAAEAAADq/yQAAAACAAEAAADq/yUAAAACAAEAAADq/yYAAAACAAEAAADq/ycAAAACAAEAAADq/ygAAAACAAEAAADq/ykAAAACAAEAAADq/yoAAAACAAEAAADq/ysAAAACAAEAAADq/ywAAAACAAEAAADq/y0AAAACAAEAAADq/y4AAAACAAEAAADq/y8AAAACAAEAAADq/zAAAAACAAEAAADq/zEAAAACAAEAAADq/zIAAAACAAEAAADq/zMAAAACAAEAAADq/zQAAAACAAEAAADq/zUAAAACAAEAAADq/zYAAAACAAEAAADq/zcAAAACAAEAAADq/zgAAAACAAEAAADr//T/AAACAAEAAADr//X/AAACAAEAAADr//b/AAACAAEAAADr//f/AAACAAEAAADr//j/AAACAAEAAADr//n/AAACAAEAAADr//r/AAACAAEAAADr//v/AAACAAEAAADr//z/AAACAAEAAADr//3/AAACAAEAAADr//7/AAACAAEAAADr////AAACAAEAAADr/wAAAAACAAEAAADr/wEAAAACAAEAAADr/wIAAAACAAEAAADr/wMAAAACAAEAAADr/wQAAAACAAEAAADr/wUAAAACAAEAAADr/wYAAAACAAEAAADr/wcAAAACAAEAAADr/wgAAAACAAEAAADr/wkAAAACAAEAAADr/woAAAACAAEAAADr/wsAAAACAAEAAADr/wwAAAACAAEAAADr/w0AAAACAAEAAADr/w4AAAACAAEAAADr/w8AAAACAAEAAADr/xAAAAACAAEAAADr/xEAAAACAAEAAADr/xIAAAACAAEAAADr/xMAAAACAAEAAADr/xQAAAACAAEAAADr/xUAAAACAAEAAADr/xYAAAACAAEAAADr/xcAAAACAAEAAADr/xgAAAACAAEAAADr/xkAAAACAAEAAADr/xoAAAACAAEAAADr/xsAAAACAAEAAADr/xwAAAACAAEAAADr/x0AAAACAAEAAADr/x4AAAACAAEAAADr/x8AAAACAAEAAADr/yAAAAACAAEAAADr/yEAAAACAAEAAADr/yIAAAACAAEAAADr/yMAAAACAAEAAADr/yQAAAACAAEAAADr/yUAAAACAAEAAADr/yYAAAACAAEAAADr/ycAAAACAAEAAADr/ygAAAACAAEAAADr/ykAAAACAAEAAADr/yoAAAACAAEAAADr/ysAAAACAAEAAADr/ywAAAACAAEAAADr/y0AAAACAAEAAADr/y4AAAACAAEAAADr/y8AAAACAAEAAADr/zAAAAACAAEAAADr/zEAAAACAAEAAADr/zIAAAACAAEAAADr/zMAAAACAAEAAADr/zQAAAACAAEAAADr/zUAAAACAAEAAADr/zYAAAACAAEAAADr/zcAAAACAAEAAADr/zgAAAACAAEAAADs//T/AAACAAEAAADs//X/AAACAAEAAADs//b/AAACAAEAAADs//f/AAACAAEAAADs//j/AAACAAEAAADs//n/AAACAAEAAADs//r/AAACAAEAAADs//v/AAACAAEAAADs//z/AAACAAEAAADs//3/AAACAAEAAADs//7/AAACAAEAAADs////AAACAAEAAADs/wAAAAACAAEAAADs/wEAAAACAAEAAADs/wIAAAACAAEAAADs/wMAAAACAAEAAADs/wQAAAACAAEAAADs/wUAAAACAAEAAADs/wYAAAACAAEAAADs/wcAAAACAAEAAADs/wgAAAACAAEAAADs/wkAAAACAAEAAADs/woAAAACAAEAAADs/wsAAAACAAEAAADs/wwAAAACAAEAAADs/w0AAAACAAEAAADs/w4AAAACAAEAAADs/w8AAAACAAEAAADs/xAAAAACAAEAAADs/xEAAAACAAEAAADs/xIAAAACAAEAAADs/xMAAAACAAEAAADs/xQAAAACAAEAAADs/xUAAAACAAEAAADs/xYAAAACAAEAAADs/xcAAAACAAEAAADs/xgAAAACAAEAAADs/xkAAAACAAEAAADs/xoAAAACAAEAAADs/xsAAAACAAEAAADs/xwAAAACAAEAAADs/x0AAAACAAEAAADs/x4AAAACAAEAAADs/x8AAAACAAEAAADs/yAAAAACAAEAAADs/yEAAAACAAEAAADs/yIAAAACAAEAAADs/yMAAAACAAEAAADs/yQAAAACAAEAAADs/yUAAAACAAEAAADs/yYAAAACAAEAAADs/ycAAAACAAEAAADs/ygAAAACAAEAAADs/ykAAAACAAEAAADs/yoAAAACAAEAAADs/ysAAAACAAEAAADs/ywAAAACAAEAAADs/y0AAAACAAEAAADs/y4AAAACAAEAAADs/y8AAAACAAEAAADs/zAAAAACAAEAAADs/zEAAAACAAEAAADs/zIAAAACAAEAAADs/zMAAAACAAEAAADs/zQAAAACAAEAAADs/zUAAAACAAEAAADs/zYAAAACAAEAAADs/zcAAAACAAEAAADs/zgAAAACAAEAAADt//T/AAACAAEAAADt//X/AAACAAEAAADt//b/AAACAAEAAADt//f/AAACAAEAAADt//j/AAACAAEAAADt//n/AAACAAEAAADt//r/AAACAAEAAADt//v/AAACAAEAAADt//z/AAACAAEAAADt//3/AAACAAEAAADt//7/AAACAAEAAADt////AAACAAEAAADt/wAAAAACAAEAAADt/wEAAAACAAEAAADt/wIAAAACAAEAAADt/wMAAAACAAEAAADt/wQAAAACAAEAAADt/wUAAAACAAEAAADt/wYAAAACAAEAAADt/wcAAAACAAEAAADt/wgAAAACAAEAAADt/wkAAAACAAEAAADt/woAAAACAAEAAADt/wsAAAACAAEAAADt/wwAAAACAAEAAADt/w0AAAACAAEAAADt/w4AAAACAAEAAADt/w8AAAACAAEAAADt/xAAAAACAAEAAADt/xEAAAACAAEAAADt/xIAAAACAAEAAADt/xMAAAACAAEAAADt/xQAAAACAAEAAADt/xUAAAACAAEAAADt/xYAAAACAAEAAADt/xcAAAACAAEAAADt/xgAAAACAAEAAADt/xkAAAACAAEAAADt/xoAAAACAAEAAADt/xsAAAACAAEAAADt/xwAAAACAAEAAADt/x0AAAACAAEAAADt/x4AAAACAAEAAADt/x8AAAACAAEAAADt/yAAAAACAAEAAADt/yEAAAACAAEAAADt/yIAAAACAAEAAADt/yMAAAACAAEAAADt/yQAAAACAAEAAADt/yUAAAACAAEAAADt/yYAAAACAAEAAADt/ycAAAACAAEAAADt/ygAAAACAAEAAADt/ykAAAACAAEAAADt/yoAAAACAAEAAADt/ysAAAACAAEAAADt/ywAAAACAAEAAADt/y0AAAACAAEAAADt/y4AAAACAAEAAADt/y8AAAACAAEAAADt/zAAAAACAAEAAADt/zEAAAACAAEAAADt/zIAAAACAAEAAADt/zMAAAACAAEAAADt/zQAAAACAAEAAADt/zUAAAACAAEAAADt/zYAAAACAAEAAADt/zcAAAACAAEAAADt/zgAAAACAAEAAADu//T/AAACAAEAAADu//X/AAACAAEAAADu//b/AAACAAEAAADu//f/AAACAAEAAADu//j/AAACAAEAAADu//n/AAACAAEAAADu//r/AAACAAEAAADu//v/AAACAAEAAADu//z/AAACAAEAAADu//3/AAACAAEAAADu//7/AAACAAEAAADu////AAACAAEAAADu/wAAAAACAAEAAADu/wEAAAACAAEAAADu/wIAAAACAAEAAADu/wMAAAACAAEAAADu/wQAAAACAAEAAADu/wUAAAACAAEAAADu/wYAAAACAAEAAADu/wcAAAACAAEAAADu/wgAAAACAAEAAADu/wkAAAACAAEAAADu/woAAAACAAEAAADu/wsAAAACAAEAAADu/wwAAAACAAEAAADu/w0AAAACAAEAAADu/w4AAAACAAEAAADu/w8AAAACAAEAAADu/xAAAAACAAEAAADu/xEAAAACAAEAAADu/xIAAAACAAEAAADu/xMAAAACAAEAAADu/xQAAAACAAEAAADu/xUAAAACAAEAAADu/xYAAAACAAEAAADu/xcAAAACAAEAAADu/xgAAAACAAEAAADu/xkAAAACAAEAAADu/xoAAAACAAEAAADu/xsAAAACAAEAAADu/xwAAAACAAEAAADu/x0AAAACAAEAAADu/x4AAAACAAEAAADu/x8AAAACAAEAAADu/yAAAAACAAEAAADu/yEAAAACAAEAAADu/yIAAAACAAEAAADu/yMAAAACAAEAAADu/yQAAAACAAEAAADu/yUAAAACAAEAAADu/yYAAAACAAEAAADu/ycAAAACAAEAAADu/ygAAAACAAEAAADu/ykAAAACAAEAAADu/yoAAAACAAEAAADu/ysAAAACAAEAAADu/ywAAAACAAEAAADu/y0AAAACAAEAAADu/y4AAAACAAEAAADu/y8AAAACAAEAAADu/zAAAAACAAEAAADu/zEAAAACAAEAAADu/zIAAAACAAEAAADu/zMAAAACAAEAAADu/zQAAAACAAEAAADu/zUAAAACAAEAAADu/zYAAAACAAEAAADu/zcAAAACAAEAAADu/zgAAAACAAEAAADv//T/AAACAAEAAADv//X/AAACAAEAAADv//b/AAACAAEAAADv//f/AAACAAEAAADv//j/AAACAAEAAADv//n/AAACAAEAAADv//r/AAACAAEAAADv//v/AAACAAEAAADv//z/AAACAAEAAADv//3/AAACAAEAAADv//7/AAACAAEAAADv////AAACAAEAAADv/wAAAAACAAEAAADv/wEAAAACAAEAAADv/wIAAAACAAEAAADv/wMAAAACAAEAAADv/wQAAAACAAEAAADv/wUAAAACAAEAAADv/wYAAAACAAEAAADv/wcAAAACAAEAAADv/wgAAAACAAEAAADv/wkAAAACAAEAAADv/woAAAACAAEAAADv/wsAAAACAAEAAADv/wwAAAACAAEAAADv/w0AAAACAAEAAADv/w4AAAACAAEAAADv/w8AAAACAAEAAADv/xAAAAACAAEAAADv/xEAAAACAAEAAADv/xIAAAACAAEAAADv/xMAAAACAAEAAADv/xQAAAACAAEAAADv/xUAAAACAAEAAADv/xYAAAACAAEAAADv/xcAAAACAAEAAADv/xgAAAACAAEAAADv/xkAAAACAAEAAADv/xoAAAACAAEAAADv/xsAAAACAAEAAADv/xwAAAACAAEAAADv/x0AAAACAAEAAADv/x4AAAACAAEAAADv/x8AAAACAAEAAADv/yAAAAACAAEAAADv/yEAAAACAAEAAADv/yIAAAACAAEAAADv/yMAAAACAAEAAADv/yQAAAACAAEAAADv/yUAAAACAAEAAADv/yYAAAACAAEAAADv/ycAAAACAAEAAADv/ygAAAACAAEAAADv/ykAAAACAAEAAADv/yoAAAACAAEAAADv/ysAAAACAAEAAADv/ywAAAACAAEAAADv/y0AAAACAAEAAADv/y4AAAACAAEAAADv/y8AAAACAAEAAADv/zAAAAACAAEAAADv/zEAAAACAAEAAADv/zIAAAACAAEAAADv/zMAAAACAAEAAADv/zQAAAACAAEAAADv/zUAAAACAAEAAADv/zYAAAACAAEAAADv/zcAAAACAAEAAADv/zgAAAACAAEAAADw//T/AAACAAEAAADw//X/AAACAAEAAADw//b/AAACAAEAAADw//f/AAACAAEAAADw//j/AAACAAEAAADw//n/AAACAAEAAADw//r/AAACAAEAAADw//v/AAACAAEAAADw//z/AAACAAEAAADw//3/AAACAAEAAADw//7/AAACAAEAAADw////AAACAAEAAADw/wAAAAACAAEAAADw/wEAAAACAAEAAADw/wIAAAACAAEAAADw/wMAAAACAAEAAADw/wQAAAACAAEAAADw/wUAAAACAAEAAADw/wYAAAACAAEAAADw/wcAAAACAAEAAADw/wgAAAACAAEAAADw/wkAAAACAAEAAADw/woAAAACAAEAAADw/wsAAAACAAEAAADw/wwAAAACAAEAAADw/w0AAAACAAEAAADw/w4AAAACAAEAAADw/w8AAAACAAEAAADw/xAAAAACAAEAAADw/xEAAAACAAEAAADw/xIAAAACAAEAAADw/xMAAAACAAEAAADw/xQAAAACAAEAAADw/xUAAAACAAEAAADw/xYAAAACAAEAAADw/xcAAAACAAEAAADw/xgAAAACAAEAAADw/xkAAAACAAEAAADw/xoAAAACAAEAAADw/xsAAAACAAEAAADw/xwAAAACAAEAAADw/x0AAAACAAEAAADw/x4AAAACAAEAAADw/x8AAAACAAEAAADw/yAAAAACAAEAAADw/yEAAAACAAEAAADw/yIAAAACAAEAAADw/yMAAAACAAEAAADw/yQAAAACAAEAAADw/yUAAAACAAEAAADw/yYAAAACAAEAAADw/ycAAAACAAEAAADw/ygAAAACAAEAAADw/ykAAAACAAEAAADw/yoAAAACAAEAAADw/ysAAAACAAEAAADw/ywAAAACAAEAAADw/y0AAAACAAEAAADw/y4AAAACAAEAAADw/y8AAAACAAEAAADw/zAAAAACAAEAAADw/zEAAAACAAEAAADw/zIAAAACAAEAAADw/zMAAAACAAEAAADw/zQAAAACAAEAAADw/zUAAAACAAEAAADw/zYAAAACAAEAAADw/zcAAAACAAEAAADw/zgAAAACAAEAAADx//T/AAACAAEAAADx//X/AAACAAEAAADx//b/AAACAAEAAADx//f/AAACAAEAAADx//j/AAACAAEAAADx//n/AAACAAEAAADx//r/AAACAAEAAADx//v/AAACAAEAAADx//z/AAACAAEAAADx//3/AAACAAEAAADx//7/AAACAAEAAADx////AAACAAEAAADx/wAAAAACAAEAAADx/wEAAAACAAEAAADx/wIAAAACAAEAAADx/wMAAAACAAEAAADx/wQAAAACAAEAAADx/wUAAAACAAEAAADx/wYAAAACAAEAAADx/wcAAAACAAEAAADx/wgAAAACAAEAAADx/wkAAAACAAEAAADx/woAAAACAAEAAADx/wsAAAACAAEAAADx/wwAAAACAAEAAADx/w0AAAACAAEAAADx/w4AAAACAAEAAADx/w8AAAACAAEAAADx/xAAAAACAAEAAADx/xEAAAACAAEAAADx/xIAAAACAAEAAADx/xMAAAACAAEAAADx/xQAAAACAAEAAADx/xUAAAACAAEAAADx/xYAAAACAAEAAADx/xcAAAACAAEAAADx/xgAAAACAAEAAADx/xkAAAACAAEAAADx/xoAAAACAAEAAADx/xsAAAACAAEAAADx/xwAAAACAAEAAADx/x0AAAACAAEAAADx/x4AAAACAAEAAADx/x8AAAACAAEAAADx/yAAAAACAAEAAADx/yEAAAACAAEAAADx/yIAAAACAAEAAADx/yMAAAACAAEAAADx/yQAAAACAAEAAADx/yUAAAACAAEAAADx/yYAAAACAAEAAADx/ycAAAACAAEAAADx/ygAAAACAAEAAADx/ykAAAACAAEAAADx/yoAAAACAAEAAADx/ysAAAACAAEAAADx/ywAAAACAAEAAADx/y0AAAACAAEAAADx/y4AAAACAAEAAADx/y8AAAACAAEAAADx/zAAAAACAAEAAADx/zEAAAACAAEAAADx/zIAAAACAAEAAADx/zMAAAACAAEAAADx/zQAAAACAAEAAADx/zUAAAACAAEAAADx/zYAAAACAAEAAADx/zcAAAACAAEAAADx/zgAAAACAAEAAADy//T/AAACAAEAAADy//X/AAACAAEAAADy//b/AAACAAEAAADy//f/AAACAAEAAADy//j/AAACAAEAAADy//n/AAACAAEAAADy//r/AAACAAEAAADy//v/AAACAAEAAADy//z/AAACAAEAAADy//3/AAACAAEAAADy//7/AAACAAEAAADy////AAACAAEAAADy/wAAAAACAAEAAADy/wEAAAACAAEAAADy/wIAAAACAAEAAADy/wMAAAACAAEAAADy/wQAAAACAAEAAADy/wUAAAACAAEAAADy/wYAAAACAAEAAADy/wcAAAACAAEAAADy/wgAAAACAAEAAADy/wkAAAACAAEAAADy/woAAAACAAEAAADy/wsAAAACAAEAAADy/wwAAAACAAEAAADy/w0AAAACAAEAAADy/w4AAAACAAEAAADy/w8AAAACAAEAAADy/xAAAAACAAEAAADy/xEAAAACAAEAAADy/xIAAAACAAEAAADy/xMAAAACAAEAAADy/xQAAAACAAEAAADy/xUAAAACAAEAAADy/xYAAAACAAEAAADy/xcAAAACAAEAAADy/xgAAAACAAEAAADy/xkAAAACAAEAAADy/xoAAAACAAEAAADy/xsAAAACAAEAAADy/xwAAAACAAEAAADy/x0AAAACAAEAAADy/x4AAAACAAEAAADy/x8AAAACAAEAAADy/yAAAAACAAEAAADy/yEAAAACAAEAAADy/yIAAAACAAEAAADy/yMAAAACAAEAAADy/yQAAAACAAEAAADy/yUAAAACAAEAAADy/yYAAAACAAEAAADy/ycAAAACAAEAAADy/ygAAAACAAEAAADy/ykAAAACAAEAAADy/yoAAAACAAEAAADy/ysAAAACAAEAAADy/ywAAAACAAEAAADy/y0AAAACAAEAAADy/y4AAAACAAEAAADy/y8AAAACAAEAAADy/zAAAAACAAEAAADy/zEAAAACAAEAAADy/zIAAAACAAEAAADy/zMAAAACAAEAAADy/zQAAAACAAEAAADy/zUAAAACAAEAAADy/zYAAAACAAEAAADy/zcAAAACAAEAAADy/zgAAAACAAEAAADz//T/AAACAAEAAADz//X/AAACAAEAAADz//b/AAACAAEAAADz//f/AAACAAEAAADz//j/AAACAAEAAADz//n/AAACAAEAAADz//r/AAACAAEAAADz//v/AAACAAEAAADz//z/AAACAAEAAADz//3/AAACAAEAAADz//7/AAACAAEAAADz////AAACAAEAAADz/wAAAAACAAEAAADz/wEAAAACAAEAAADz/wIAAAACAAEAAADz/wMAAAACAAEAAADz/wQAAAACAAEAAADz/wUAAAACAAEAAADz/wYAAAACAAEAAADz/wcAAAACAAEAAADz/wgAAAACAAEAAADz/wkAAAACAAEAAADz/woAAAACAAEAAADz/wsAAAACAAEAAADz/wwAAAACAAEAAADz/w0AAAACAAEAAADz/w4AAAACAAEAAADz/w8AAAACAAEAAADz/xAAAAACAAEAAADz/xEAAAACAAEAAADz/xIAAAACAAEAAADz/xMAAAACAAEAAADz/xQAAAACAAEAAADz/xUAAAACAAEAAADz/xYAAAACAAEAAADz/xcAAAACAAEAAADz/xgAAAACAAEAAADz/xkAAAACAAEAAADz/xoAAAACAAEAAADz/xsAAAACAAEAAADz/xwAAAACAAEAAADz/x0AAAACAAEAAADz/x4AAAACAAEAAADz/x8AAAACAAEAAADz/yAAAAACAAEAAADz/yEAAAACAAEAAADz/yIAAAACAAEAAADz/yMAAAACAAEAAADz/yQAAAACAAEAAADz/yUAAAACAAEAAADz/yYAAAACAAEAAADz/ycAAAACAAEAAADz/ygAAAACAAEAAADz/ykAAAACAAEAAADz/yoAAAACAAEAAADz/ysAAAACAAEAAADz/ywAAAACAAEAAADz/y0AAAACAAEAAADz/y4AAAACAAEAAADz/y8AAAACAAEAAADz/zAAAAACAAEAAADz/zEAAAACAAEAAADz/zIAAAACAAEAAADz/zMAAAACAAEAAADz/zQAAAACAAEAAADz/zUAAAACAAEAAADz/zYAAAACAAEAAADz/zcAAAACAAEAAADz/zgAAAACAAEAAAD0//T/AAACAAEAAAD0//X/AAACAAEAAAD0//b/AAACAAEAAAD0//f/AAACAAEAAAD0//j/AAACAAEAAAD0//n/AAACAAEAAAD0//r/AAACAAEAAAD0//v/AAACAAEAAAD0//z/AAACAAEAAAD0//3/AAACAAEAAAD0//7/AAACAAEAAAD0/wAAAAACAAEAAAD0/wEAAAACAAEAAAD0/wIAAAACAAEAAAD0/wMAAAACAAEAAAD0/wQAAAACAAEAAAD0/wUAAAACAAEAAAD0/wYAAAACAAEAAAD0/wcAAAACAAEAAAD0/wgAAAACAAEAAAD0/wkAAAACAAEAAAD0/woAAAACAAEAAAD0/wsAAAACAAEAAAD0/wwAAAACAAEAAAD0/w0AAAACAAEAAAD0/w4AAAACAAEAAAD0/w8AAAACAAEAAAD0/xAAAAACAAEAAAD0/xEAAAACAAEAAAD0/xIAAAACAAEAAAD0/xMAAAACAAEAAAD0/xQAAAACAAEAAAD0/xUAAAACAAEAAAD0/xYAAAACAAEAAAD0/xcAAAACAAEAAAD0/xgAAAACAAEAAAD0/xkAAAACAAEAAAD0/xoAAAACAAEAAAD0/xsAAAACAAEAAAD0/xwAAAACAAEAAAD0/x0AAAACAAEAAAD0/x4AAAACAAEAAAD0/x8AAAACAAEAAAD0/yAAAAACAAEAAAD0/yEAAAACAAEAAAD0/yIAAAACAAEAAAD0/yMAAAACAAEAAAD0/yQAAAACAAEAAAD0/yUAAAACAAEAAAD0/yYAAAACAAEAAAD0/ycAAAACAAEAAAD0/ygAAAACAAEAAAD0/ykAAAACAAEAAAD0/yoAAAACAAEAAAD0/ysAAAACAAEAAAD0/ywAAAACAAEAAAD0/y0AAAACAAEAAAD0/y4AAAACAAEAAAD0/y8AAAACAAEAAAD0/zAAAAACAAEAAAD0/zEAAAACAAEAAAD0/zIAAAACAAEAAAD0/zMAAAACAAEAAAD0/zQAAAACAAEAAAD0/zUAAAACAAEAAAD0/zYAAAACAAEAAAD0/zcAAAACAAEAAAD0/zgAAAACAAEAAAD1//T/AAACAAEAAAD1//X/AAACAAEAAAD1//b/AAACAAEAAAD1//f/AAACAAEAAAD1//j/AAACAAEAAAD1//n/AAACAAEAAAD1//r/AAACAAEAAAD1//v/AAACAAEAAAD1//z/AAACAAEAAAD1//3/AAACAAEAAAD1//7/AAACAAEAAAD1/wEAAAACAAEAAAD1/wIAAAACAAEAAAD1/wMAAAACAAEAAAD1/wQAAAACAAEAAAD1/wUAAAACAAEAAAD1/wYAAAACAAEAAAD1/wcAAAACAAEAAAD1/wgAAAACAAEAAAD1/wkAAAACAAEAAAD1/woAAAACAAEAAAD1/wsAAAACAAEAAAD1/wwAAAACAAEAAAD1/w0AAAACAAEAAAD1/w4AAAACAAEAAAD1/w8AAAACAAEAAAD1/xAAAAACAAEAAAD1/xEAAAACAAEAAAD1/xIAAAACAAEAAAD1/xMAAAACAAEAAAD1/xQAAAACAAEAAAD1/xUAAAACAAEAAAD1/xYAAAACAAEAAAD1/xcAAAACAAEAAAD1/xgAAAACAAEAAAD1/xkAAAACAAEAAAD1/xoAAAACAAEAAAD1/xsAAAACAAEAAAD1/xwAAAACAAEAAAD1/x0AAAACAAEAAAD1/x4AAAACAAEAAAD1/x8AAAACAAEAAAD1/yAAAAACAAEAAAD1/yEAAAACAAEAAAD1/yIAAAACAAEAAAD1/yMAAAACAAEAAAD1/yQAAAACAAEAAAD1/yUAAAACAAEAAAD1/yYAAAACAAEAAAD1/ycAAAACAAEAAAD1/ygAAAACAAEAAAD1/ykAAAACAAEAAAD1/yoAAAACAAEAAAD1/ysAAAACAAEAAAD1/ywAAAACAAEAAAD1/y0AAAACAAEAAAD1/y4AAAACAAEAAAD1/y8AAAACAAEAAAD1/zAAAAACAAEAAAD1/zEAAAACAAEAAAD1/zIAAAACAAEAAAD1/zMAAAACAAEAAAD1/zQAAAACAAEAAAD1/zUAAAACAAEAAAD1/zYAAAACAAEAAAD1/zcAAAACAAEAAAD1/zgAAAACAAEAAAD2//T/AAACAAEAAAD2//X/AAACAAEAAAD2//b/AAACAAEAAAD2//f/AAACAAEAAAD2//j/AAACAAEAAAD2//n/AAACAAEAAAD2//r/AAACAAEAAAD2//v/AAACAAEAAAD2//z/AAACAAEAAAD2//3/AAACAAEAAAD2//7/AAACAAEAAAD2////AAACAAEAAAD2/wIAAAACAAEAAAD2/wMAAAACAAEAAAD2/wQAAAACAAEAAAD2/wUAAAACAAEAAAD2/wYAAAACAAEAAAD2/wcAAAACAAEAAAD2/wgAAAACAAEAAAD2/wkAAAACAAEAAAD2/woAAAACAAEAAAD2/wsAAAACAAEAAAD2/wwAAAACAAEAAAD2/w0AAAACAAEAAAD2/w4AAAACAAEAAAD2/w8AAAACAAEAAAD2/xAAAAACAAEAAAD2/xEAAAACAAEAAAD2/xIAAAACAAEAAAD2/xMAAAACAAEAAAD2/xQAAAACAAEAAAD2/xUAAAACAAEAAAD2/xYAAAACAAEAAAD2/xcAAAACAAEAAAD2/xgAAAACAAEAAAD2/xkAAAACAAEAAAD2/xoAAAACAAEAAAD2/xsAAAACAAEAAAD2/xwAAAACAAEAAAD2/x0AAAACAAEAAAD2/x4AAAACAAEAAAD2/x8AAAACAAEAAAD2/yAAAAACAAEAAAD2/yEAAAACAAEAAAD2/yIAAAACAAEAAAD2/yMAAAACAAEAAAD2/yQAAAACAAEAAAD2/yUAAAACAAEAAAD2/yYAAAACAAEAAAD2/ycAAAACAAEAAAD2/ygAAAACAAEAAAD2/ykAAAACAAEAAAD2/yoAAAACAAEAAAD2/ysAAAACAAEAAAD2/ywAAAACAAEAAAD2/y0AAAACAAEAAAD2/y4AAAACAAEAAAD2/y8AAAACAAEAAAD2/zAAAAACAAEAAAD2/zEAAAACAAEAAAD2/zIAAAACAAEAAAD2/zMAAAACAAEAAAD2/zQAAAACAAEAAAD2/zUAAAACAAEAAAD2/zYAAAACAAEAAAD2/zcAAAACAAEAAAD2/zgAAAACAAEAAAD3//T/AAACAAEAAAD3//X/AAACAAEAAAD3//b/AAACAAEAAAD3//f/AAACAAEAAAD3//j/AAACAAEAAAD3//n/AAACAAEAAAD3//r/AAACAAEAAAD3//v/AAACAAEAAAD3//z/AAACAAEAAAD3//3/AAACAAEAAAD3//7/AAACAAEAAAD3////AAACAAEAAAD3/wAAAAACAAEAAAD3/wEAAAACAAEAAAD3/wMAAAACAAEAAAD3/wQAAAACAAEAAAD3/wUAAAACAAEAAAD3/wYAAAACAAEAAAD3/wcAAAACAAEAAAD3/wgAAAACAAEAAAD3/wkAAAACAAEAAAD3/woAAAACAAEAAAD3/wsAAAACAAEAAAD3/wwAAAACAAEAAAD3/w0AAAACAAEAAAD3/w4AAAACAAEAAAD3/w8AAAACAAEAAAD3/xAAAAACAAEAAAD3/xEAAAACAAEAAAD3/xIAAAACAAEAAAD3/xMAAAACAAEAAAD3/xQAAAACAAEAAAD3/xUAAAACAAEAAAD3/xYAAAACAAEAAAD3/xcAAAACAAEAAAD3/xgAAAACAAEAAAD3/xkAAAACAAEAAAD3/xoAAAACAAEAAAD3/xsAAAACAAEAAAD3/xwAAAACAAEAAAD3/x0AAAACAAEAAAD3/x4AAAACAAEAAAD3/x8AAAACAAEAAAD3/yAAAAACAAEAAAD3/yEAAAACAAEAAAD3/yIAAAACAAEAAAD3/yMAAAACAAEAAAD3/yQAAAACAAEAAAD3/yUAAAACAAEAAAD3/yYAAAACAAEAAAD3/ycAAAACAAEAAAD3/ygAAAACAAEAAAD3/ykAAAACAAEAAAD3/yoAAAACAAEAAAD3/ysAAAACAAEAAAD3/ywAAAACAAEAAAD3/y0AAAACAAEAAAD3/y4AAAACAAEAAAD3/y8AAAACAAEAAAD3/zAAAAACAAEAAAD3/zEAAAACAAEAAAD3/zIAAAACAAEAAAD3/zMAAAACAAEAAAD3/zQAAAACAAEAAAD3/zUAAAACAAEAAAD3/zYAAAACAAEAAAD3/zcAAAACAAEAAAD3/zgAAAACAAEAAAD4//T/AAACAAEAAAD4//X/AAACAAEAAAD4//b/AAACAAEAAAD4//f/AAACAAEAAAD4//j/AAACAAEAAAD4//n/AAACAAEAAAD4//r/AAACAAEAAAD4//v/AAACAAEAAAD4//z/AAACAAEAAAD4//3/AAACAAEAAAD4//7/AAACAAEAAAD4////AAACAAEAAAD4/wAAAAACAAEAAAD4/wEAAAACAAEAAAD4/wIAAAACAAEAAAD4/wUAAAACAAEAAAD4/wYAAAACAAEAAAD4/wcAAAACAAEAAAD4/wgAAAACAAEAAAD4/wkAAAACAAEAAAD4/woAAAACAAEAAAD4/wsAAAACAAEAAAD4/wwAAAACAAEAAAD4/w0AAAACAAEAAAD4/w4AAAACAAEAAAD4/w8AAAACAAEAAAD4/xAAAAACAAEAAAD4/xEAAAACAAEAAAD4/xIAAAACAAEAAAD4/xMAAAACAAEAAAD4/xQAAAACAAEAAAD4/xUAAAACAAEAAAD4/xYAAAACAAEAAAD4/xcAAAACAAEAAAD4/xgAAAACAAEAAAD4/xkAAAACAAEAAAD4/xoAAAACAAEAAAD4/xsAAAACAAEAAAD4/xwAAAACAAEAAAD4/x0AAAACAAEAAAD4/x4AAAACAAEAAAD4/x8AAAACAAEAAAD4/yAAAAACAAEAAAD4/yEAAAACAAEAAAD4/yIAAAACAAEAAAD4/yMAAAACAAEAAAD4/yQAAAACAAEAAAD4/yUAAAACAAEAAAD4/yYAAAACAAEAAAD4/ycAAAACAAEAAAD4/ygAAAACAAEAAAD4/ykAAAACAAEAAAD4/yoAAAACAAEAAAD4/ysAAAACAAEAAAD4/ywAAAACAAEAAAD4/y0AAAACAAEAAAD4/y4AAAACAAEAAAD4/y8AAAACAAEAAAD4/zAAAAACAAEAAAD4/zEAAAACAAEAAAD4/zIAAAACAAEAAAD4/zMAAAACAAEAAAD4/zQAAAACAAEAAAD4/zUAAAACAAEAAAD4/zYAAAACAAEAAAD4/zcAAAACAAEAAAD4/zgAAAACAAEAAAD5//T/AAACAAEAAAD5//X/AAACAAEAAAD5//b/AAACAAEAAAD5//f/AAACAAEAAAD5//j/AAACAAEAAAD5//n/AAACAAEAAAD5//r/AAACAAEAAAD5//v/AAACAAEAAAD5//z/AAACAAEAAAD5//3/AAACAAEAAAD5//7/AAACAAEAAAD5////AAACAAEAAAD5/wAAAAACAAEAAAD5/wEAAAACAAEAAAD5/wIAAAACAAEAAAD5/wMAAAACAAEAAAD5/wQAAAACAAEAAAD5/wYAAAACAAEAAAD5/wcAAAACAAEAAAD5/wgAAAACAAEAAAD5/wkAAAACAAEAAAD5/woAAAACAAEAAAD5/wsAAAACAAEAAAD5/wwAAAACAAEAAAD5/w0AAAACAAEAAAD5/w4AAAACAAEAAAD5/w8AAAACAAEAAAD5/xAAAAACAAEAAAD5/xEAAAACAAEAAAD5/xIAAAACAAEAAAD5/xMAAAACAAEAAAD5/xQAAAACAAEAAAD5/xUAAAACAAEAAAD5/xYAAAACAAEAAAD5/xcAAAACAAEAAAD5/xgAAAACAAEAAAD5/xkAAAACAAEAAAD5/xoAAAACAAEAAAD5/xsAAAACAAEAAAD5/xwAAAACAAEAAAD5/x0AAAACAAEAAAD5/x4AAAACAAEAAAD5/x8AAAACAAEAAAD5/yAAAAACAAEAAAD5/yEAAAACAAEAAAD5/yIAAAACAAEAAAD5/yMAAAACAAEAAAD5/yQAAAACAAEAAAD5/yUAAAACAAEAAAD5/yYAAAACAAEAAAD5/ycAAAACAAEAAAD5/ygAAAACAAEAAAD5/ykAAAACAAEAAAD5/yoAAAACAAEAAAD5/ysAAAACAAEAAAD5/ywAAAACAAEAAAD5/y0AAAACAAEAAAD5/y4AAAACAAEAAAD5/y8AAAACAAEAAAD5/zAAAAACAAEAAAD5/zEAAAACAAEAAAD5/zIAAAACAAEAAAD5/zMAAAACAAEAAAD5/zQAAAACAAEAAAD5/zUAAAACAAEAAAD5/zYAAAACAAEAAAD5/zcAAAACAAEAAAD5/zgAAAACAAEAAAD6//T/AAACAAEAAAD6//X/AAACAAEAAAD6//b/AAACAAEAAAD6//f/AAACAAEAAAD6//j/AAACAAEAAAD6//n/AAACAAEAAAD6//r/AAACAAEAAAD6//v/AAACAAEAAAD6//z/AAACAAEAAAD6//3/AAACAAEAAAD6//7/AAACAAEAAAD6////AAACAAEAAAD6/wAAAAACAAEAAAD6/wEAAAACAAEAAAD6/wIAAAACAAEAAAD6/wMAAAACAAEAAAD6/wQAAAACAAEAAAD6/wUAAAACAAEAAAD6/wgAAAACAAEAAAD6/wkAAAACAAEAAAD6/woAAAACAAEAAAD6/wsAAAACAAEAAAD6/wwAAAACAAEAAAD6/w0AAAACAAEAAAD6/w4AAAACAAEAAAD6/w8AAAACAAEAAAD6/xAAAAACAAEAAAD6/xEAAAACAAEAAAD6/xIAAAACAAEAAAD6/xMAAAACAAEAAAD6/xQAAAACAAEAAAD6/xUAAAACAAEAAAD6/xYAAAACAAEAAAD6/xcAAAACAAEAAAD6/xgAAAACAAEAAAD6/xkAAAACAAEAAAD6/xoAAAACAAEAAAD6/xsAAAACAAEAAAD6/xwAAAACAAEAAAD6/x0AAAACAAEAAAD6/x4AAAACAAEAAAD6/x8AAAACAAEAAAD6/yAAAAACAAEAAAD6/yEAAAACAAEAAAD6/yIAAAACAAEAAAD6/yMAAAACAAEAAAD6/yQAAAACAAEAAAD6/yUAAAACAAEAAAD6/yYAAAACAAEAAAD6/ycAAAACAAEAAAD6/ygAAAACAAEAAAD6/ykAAAACAAEAAAD6/yoAAAACAAEAAAD6/ysAAAACAAEAAAD6/ywAAAACAAEAAAD6/y0AAAACAAEAAAD6/y4AAAACAAEAAAD6/y8AAAACAAEAAAD6/zAAAAACAAEAAAD6/zEAAAACAAEAAAD6/zIAAAACAAEAAAD6/zMAAAACAAEAAAD6/zQAAAACAAEAAAD6/zUAAAACAAEAAAD6/zYAAAACAAEAAAD6/zcAAAACAAEAAAD6/zgAAAACAAEAAAD7//T/AAACAAEAAAD7//X/AAACAAEAAAD7//b/AAACAAEAAAD7//f/AAACAAEAAAD7//j/AAACAAEAAAD7//n/AAACAAEAAAD7//r/AAACAAEAAAD7//v/AAACAAEAAAD7//z/AAACAAEAAAD7//3/AAACAAEAAAD7//7/AAACAAEAAAD7////AAACAAEAAAD7/wAAAAACAAEAAAD7/wEAAAACAAEAAAD7/wIAAAACAAEAAAD7/wMAAAACAAEAAAD7/wQAAAACAAEAAAD7/wUAAAACAAEAAAD7/wYAAAACAAEAAAD7/wcAAAACAAEAAAD7/wkAAAACAAEAAAD7/woAAAACAAEAAAD7/wsAAAACAAEAAAD7/wwAAAACAAEAAAD7/w0AAAACAAEAAAD7/w4AAAACAAEAAAD7/w8AAAACAAEAAAD7/xAAAAACAAEAAAD7/xEAAAACAAEAAAD7/xIAAAACAAEAAAD7/xMAAAACAAEAAAD7/xQAAAACAAEAAAD7/xUAAAACAAEAAAD7/xYAAAACAAEAAAD7/xcAAAACAAEAAAD7/xgAAAACAAEAAAD7/xkAAAACAAEAAAD7/xoAAAACAAEAAAD7/xsAAAACAAEAAAD7/xwAAAACAAEAAAD7/x0AAAACAAEAAAD7/x4AAAACAAEAAAD7/x8AAAACAAEAAAD7/yAAAAACAAEAAAD7/yEAAAACAAEAAAD7/yIAAAACAAEAAAD7/yMAAAACAAEAAAD7/yQAAAACAAEAAAD7/yUAAAACAAEAAAD7/yYAAAACAAEAAAD7/ycAAAACAAEAAAD7/ygAAAACAAEAAAD7/ykAAAACAAEAAAD7/yoAAAACAAEAAAD7/ysAAAACAAEAAAD7/ywAAAACAAEAAAD7/y0AAAACAAEAAAD7/y4AAAACAAEAAAD7/y8AAAACAAEAAAD7/zAAAAACAAEAAAD7/zEAAAACAAEAAAD7/zIAAAACAAEAAAD7/zMAAAACAAEAAAD7/zQAAAACAAEAAAD7/zUAAAACAAEAAAD7/zYAAAACAAEAAAD7/zcAAAACAAEAAAD7/zgAAAACAAEAAAD8//T/AAACAAEAAAD8//X/AAACAAEAAAD8//b/AAACAAEAAAD8//f/AAACAAEAAAD8//j/AAACAAEAAAD8//n/AAACAAEAAAD8//r/AAACAAEAAAD8//v/AAACAAEAAAD8//z/AAACAAEAAAD8//3/AAACAAEAAAD8//7/AAACAAEAAAD8////AAACAAEAAAD8/wAAAAACAAEAAAD8/wEAAAACAAEAAAD8/wIAAAACAAEAAAD8/wMAAAACAAEAAAD8/wQAAAACAAEAAAD8/wUAAAACAAEAAAD8/wYAAAACAAEAAAD8/wcAAAACAAEAAAD8/wgAAAACAAEAAAD8/woAAAACAAEAAAD8/wsAAAACAAEAAAD8/wwAAAACAAEAAAD8/w0AAAACAAEAAAD8/w4AAAACAAEAAAD8/w8AAAACAAEAAAD8/xAAAAACAAEAAAD8/xEAAAACAAEAAAD8/xIAAAACAAEAAAD8/xMAAAACAAEAAAD8/xQAAAACAAEAAAD8/xUAAAACAAEAAAD8/xYAAAACAAEAAAD8/xcAAAACAAEAAAD8/xgAAAACAAEAAAD8/xkAAAACAAEAAAD8/xoAAAACAAEAAAD8/xsAAAACAAEAAAD8/xwAAAACAAEAAAD8/x0AAAACAAEAAAD8/x4AAAACAAEAAAD8/x8AAAACAAEAAAD8/yAAAAACAAEAAAD8/yEAAAACAAEAAAD8/yIAAAACAAEAAAD8/yMAAAACAAEAAAD8/yQAAAACAAEAAAD8/yUAAAACAAEAAAD8/yYAAAACAAEAAAD8/ycAAAACAAEAAAD8/ygAAAACAAEAAAD8/ykAAAACAAEAAAD8/yoAAAACAAEAAAD8/ysAAAACAAEAAAD8/ywAAAACAAEAAAD8/y0AAAACAAEAAAD8/y4AAAACAAEAAAD8/y8AAAACAAEAAAD8/zAAAAACAAEAAAD8/zEAAAACAAEAAAD8/zIAAAACAAEAAAD8/zMAAAACAAEAAAD8/zQAAAACAAEAAAD8/zUAAAACAAEAAAD8/zYAAAACAAEAAAD8/zcAAAACAAEAAAD8/zgAAAACAAEAAAD9//T/AAACAAEAAAD9//X/AAACAAEAAAD9//b/AAACAAEAAAD9//f/AAACAAEAAAD9//j/AAACAAEAAAD9//n/AAACAAEAAAD9//r/AAACAAEAAAD9//v/AAACAAEAAAD9//z/AAACAAEAAAD9//3/AAACAAEAAAD9//7/AAACAAEAAAD9////AAACAAEAAAD9/wAAAAACAAEAAAD9/wEAAAACAAEAAAD9/wIAAAACAAEAAAD9/wMAAAACAAEAAAD9/wQAAAACAAEAAAD9/wUAAAACAAEAAAD9/wYAAAACAAEAAAD9/wcAAAACAAEAAAD9/wgAAAACAAEAAAD9/wkAAAACAAEAAAD9/wsAAAACAAEAAAD9/wwAAAACAAEAAAD9/w0AAAACAAEAAAD9/w4AAAACAAEAAAD9/w8AAAACAAEAAAD9/xAAAAACAAEAAAD9/xEAAAACAAEAAAD9/xIAAAACAAEAAAD9/xMAAAACAAEAAAD9/xQAAAACAAEAAAD9/xUAAAACAAEAAAD9/xYAAAACAAEAAAD9/xcAAAACAAEAAAD9/xgAAAACAAEAAAD9/xkAAAACAAEAAAD9/xoAAAACAAEAAAD9/xsAAAACAAEAAAD9/xwAAAACAAEAAAD9/x0AAAACAAEAAAD9/x4AAAACAAEAAAD9/x8AAAACAAEAAAD9/yAAAAACAAEAAAD9/yEAAAACAAEAAAD9/yIAAAACAAEAAAD9/yMAAAACAAEAAAD9/yQAAAACAAEAAAD9/yUAAAACAAEAAAD9/yYAAAACAAEAAAD9/ycAAAACAAEAAAD9/ygAAAACAAEAAAD9/ykAAAACAAEAAAD9/yoAAAACAAEAAAD9/ysAAAACAAEAAAD9/ywAAAACAAEAAAD9/y0AAAACAAEAAAD9/y4AAAACAAEAAAD9/y8AAAACAAEAAAD9/zAAAAACAAEAAAD9/zEAAAACAAEAAAD9/zIAAAACAAEAAAD9/zMAAAACAAEAAAD9/zQAAAACAAEAAAD9/zUAAAACAAEAAAD9/zYAAAACAAEAAAD9/zcAAAACAAEAAAD9/zgAAAACAAEAAAD+//T/AAACAAEAAAD+//X/AAACAAEAAAD+//b/AAACAAEAAAD+//f/AAACAAEAAAD+//j/AAACAAEAAAD+//n/AAACAAEAAAD+//r/AAACAAEAAAD+//v/AAACAAEAAAD+//z/AAACAAEAAAD+//3/AAACAAEAAAD+//7/AAACAAEAAAD+////AAACAAEAAAD+/wAAAAACAAEAAAD+/wEAAAACAAEAAAD+/wIAAAACAAEAAAD+/wMAAAACAAEAAAD+/wQAAAACAAEAAAD+/wUAAAACAAEAAAD+/wYAAAACAAEAAAD+/wcAAAACAAEAAAD+/wgAAAACAAEAAAD+/wkAAAACAAEAAAD+/woAAAACAAEAAAD+/w0AAAACAAEAAAD+/w4AAAACAAEAAAD+/w8AAAACAAEAAAD+/xAAAAACAAEAAAD+/xEAAAACAAEAAAD+/xIAAAACAAEAAAD+/xMAAAACAAEAAAD+/xQAAAACAAEAAAD+/xUAAAACAAEAAAD+/xYAAAACAAEAAAD+/xcAAAACAAEAAAD+/xgAAAACAAEAAAD+/xkAAAACAAEAAAD+/xoAAAACAAEAAAD+/xsAAAACAAEAAAD+/xwAAAACAAEAAAD+/x0AAAACAAEAAAD+/x4AAAACAAEAAAD+/x8AAAACAAEAAAD+/yAAAAACAAEAAAD+/yEAAAACAAEAAAD+/yIAAAACAAEAAAD+/yMAAAACAAEAAAD+/yQAAAACAAEAAAD+/yUAAAACAAEAAAD+/yYAAAACAAEAAAD+/ycAAAACAAEAAAD+/ygAAAACAAEAAAD+/ykAAAACAAEAAAD+/yoAAAACAAEAAAD+/ysAAAACAAEAAAD+/ywAAAACAAEAAAD+/y0AAAACAAEAAAD+/y4AAAACAAEAAAD+/y8AAAACAAEAAAD+/zAAAAACAAEAAAD+/zEAAAACAAEAAAD+/zIAAAACAAEAAAD+/zMAAAACAAEAAAD+/zQAAAACAAEAAAD+/zUAAAACAAEAAAD+/zYAAAACAAEAAAD+/zcAAAACAAEAAAD+/zgAAAACAAEAAAD///T/AAACAAEAAAD///X/AAACAAEAAAD///b/AAACAAEAAAD///f/AAACAAEAAAD///j/AAACAAEAAAD///n/AAACAAEAAAD///r/AAACAAEAAAD///v/AAACAAEAAAD///z/AAACAAEAAAD///3/AAACAAEAAAD///7/AAACAAEAAAD/////AAACAAEAAAD//wAAAAACAAEAAAD//wEAAAACAAEAAAD//wIAAAACAAEAAAD//wMAAAACAAEAAAD//wQAAAACAAEAAAD//wUAAAACAAEAAAD//wYAAAACAAEAAAD//wcAAAACAAEAAAD//wgAAAACAAEAAAD//wkAAAACAAEAAAD//woAAAACAAEAAAD//wsAAAACAAEAAAD//wwAAAACAAEAAAD//w4AAAACAAEAAAD//w8AAAACAAEAAAD//xAAAAACAAEAAAD//xEAAAACAAEAAAD//xIAAAACAAEAAAD//xMAAAACAAEAAAD//xQAAAACAAEAAAD//xUAAAACAAEAAAD//xYAAAACAAEAAAD//xcAAAACAAEAAAD//xgAAAACAAEAAAD//xkAAAACAAEAAAD//xoAAAACAAEAAAD//xsAAAACAAEAAAD//xwAAAACAAEAAAD//x0AAAACAAEAAAD//x4AAAACAAEAAAD//x8AAAACAAEAAAD//yAAAAACAAEAAAD//yEAAAACAAEAAAD//yIAAAACAAEAAAD//yMAAAACAAEAAAD//yQAAAACAAEAAAD//yUAAAACAAEAAAD//yYAAAACAAEAAAD//ycAAAACAAEAAAD//ygAAAACAAEAAAD//ykAAAACAAEAAAD//yoAAAACAAEAAAD//ysAAAACAAEAAAD//ywAAAACAAEAAAD//y0AAAACAAEAAAD//y4AAAACAAEAAAD//y8AAAACAAEAAAD//zAAAAACAAEAAAD//zEAAAACAAEAAAD//zIAAAACAAEAAAD//zMAAAACAAEAAAD//zQAAAACAAEAAAD//zUAAAACAAEAAAD//zYAAAACAAEAAAD//zcAAAACAAEAAAD//zgAAAACAAEAAAAAAPT/AAACAAEAAAAAAPX/AAACAAEAAAAAAPb/AAACAAEAAAAAAPf/AAACAAEAAAAAAPj/AAACAAEAAAAAAPn/AAACAAEAAAAAAPr/AAACAAEAAAAAAPv/AAACAAEAAAAAAPz/AAACAAEAAAAAAP3/AAACAAEAAAAAAP7/AAACAAEAAAAAAP//AAACAAEAAAAAACkAAAACAAEAAAAAACoAAAACAAEAAAAAACsAAAACAAEAAAAAACwAAAACAAEAAAAAAC0AAAACAAEAAAAAAC4AAAACAAEAAAAAAC8AAAACAAEAAAAAADAAAAACAAEAAAAAADEAAAACAAEAAAAAADIAAAACAAEAAAAAADMAAAACAAEAAAAAADQAAAACAAEAAAAAADUAAAACAAEAAAAAADYAAAACAAEAAAAAADcAAAACAAEAAAAAADgAAAACAAEAAAABAPT/AAACAAEAAAABAPX/AAACAAEAAAABAPb/AAACAAEAAAABAPf/AAACAAEAAAABAPj/AAACAAEAAAABAPn/AAACAAEAAAABAPr/AAACAAEAAAABAPv/AAACAAEAAAABAPz/AAACAAEAAAABAP3/AAACAAEAAAABAP7/AAACAAEAAAABAP//AAACAAEAAAABACkAAAACAAEAAAABACoAAAACAAEAAAABACsAAAACAAEAAAABACwAAAACAAEAAAABAC0AAAACAAEAAAABAC4AAAACAAEAAAABAC8AAAACAAEAAAABADAAAAACAAEAAAABADEAAAACAAEAAAABADIAAAACAAEAAAABADMAAAACAAEAAAABADQAAAACAAEAAAABADUAAAACAAEAAAABADYAAAACAAEAAAABADcAAAACAAEAAAABADgAAAACAAEAAAACAPT/AAACAAEAAAACAPX/AAACAAEAAAACAPb/AAACAAEAAAACAPf/AAACAAEAAAACAPj/AAACAAEAAAACAPn/AAACAAEAAAACAPr/AAACAAEAAAACAPv/AAACAAEAAAACAPz/AAACAAEAAAACAP3/AAACAAEAAAACAP7/AAACAAEAAAACAP//AAACAAEAAAACACkAAAACAAEAAAACACoAAAACAAEAAAACACsAAAACAAEAAAACACwAAAACAAEAAAACAC0AAAACAAEAAAACAC4AAAACAAEAAAACAC8AAAACAAEAAAACADAAAAACAAEAAAACADEAAAACAAEAAAACADIAAAACAAEAAAACADMAAAACAAEAAAACADQAAAACAAEAAAACADUAAAACAAEAAAACADYAAAACAAEAAAACADcAAAACAAEAAAACADgAAAACAAEAAAADAPT/AAACAAEAAAADAPX/AAACAAEAAAADAPb/AAACAAEAAAADAPf/AAACAAEAAAADAPj/AAACAAEAAAADAPn/AAACAAEAAAADAPr/AAACAAEAAAADAPv/AAACAAEAAAADAPz/AAACAAEAAAADAP3/AAACAAEAAAADAP7/AAACAAEAAAADAP//AAACAAEAAAADACkAAAACAAEAAAADACoAAAACAAEAAAADACsAAAACAAEAAAADACwAAAACAAEAAAADAC0AAAACAAEAAAADAC4AAAACAAEAAAADAC8AAAACAAEAAAADADAAAAACAAEAAAADADEAAAACAAEAAAADADIAAAACAAEAAAADADMAAAACAAEAAAADADQAAAACAAEAAAADADUAAAACAAEAAAADADYAAAACAAEAAAADADcAAAACAAEAAAADADgAAAACAAEAAAAEAPT/AAACAAEAAAAEAPX/AAACAAEAAAAEAPb/AAACAAEAAAAEAPf/AAACAAEAAAAEAPj/AAACAAEAAAAEAPn/AAACAAEAAAAEAPr/AAACAAEAAAAEAPv/AAACAAEAAAAEAPz/AAACAAEAAAAEAP3/AAACAAEAAAAEAP7/AAACAAEAAAAEAP//AAACAAEAAAAEACkAAAACAAEAAAAEACoAAAACAAEAAAAEACsAAAACAAEAAAAEACwAAAACAAEAAAAEAC0AAAACAAEAAAAEAC4AAAACAAEAAAAEAC8AAAACAAEAAAAEADAAAAACAAEAAAAEADEAAAACAAEAAAAEADIAAAACAAEAAAAEADMAAAACAAEAAAAEADQAAAACAAEAAAAEADUAAAACAAEAAAAEADYAAAACAAEAAAAEADcAAAACAAEAAAAEADgAAAACAAEAAAAFAPT/AAACAAEAAAAFAPX/AAACAAEAAAAFAPb/AAACAAEAAAAFAPf/AAACAAEAAAAFAPj/AAACAAEAAAAFAPn/AAACAAEAAAAFAPr/AAACAAEAAAAFAPv/AAACAAEAAAAFAPz/AAACAAEAAAAFAP3/AAACAAEAAAAFAP7/AAACAAEAAAAFAP//AAACAAEAAAAFACkAAAACAAEAAAAFACoAAAACAAEAAAAFACsAAAACAAEAAAAFACwAAAACAAEAAAAFAC0AAAACAAEAAAAFAC4AAAACAAEAAAAFAC8AAAACAAEAAAAFADAAAAACAAEAAAAFADEAAAACAAEAAAAFADIAAAACAAEAAAAFADMAAAACAAEAAAAFADQAAAACAAEAAAAFADUAAAACAAEAAAAFADYAAAACAAEAAAAFADcAAAACAAEAAAAFADgAAAACAAEAAAAGAPT/AAACAAEAAAAGAPX/AAACAAEAAAAGAPb/AAACAAEAAAAGAPf/AAACAAEAAAAGAPj/AAACAAEAAAAGAPn/AAACAAEAAAAGAPr/AAACAAEAAAAGAPv/AAACAAEAAAAGAPz/AAACAAEAAAAGAP3/AAACAAEAAAAGAP7/AAACAAEAAAAGAP//AAACAAEAAAAGACkAAAACAAEAAAAGACoAAAACAAEAAAAGACsAAAACAAEAAAAGACwAAAACAAEAAAAGAC0AAAACAAEAAAAGAC4AAAACAAEAAAAGAC8AAAACAAEAAAAGADAAAAACAAEAAAAGADEAAAACAAEAAAAGADIAAAACAAEAAAAGADMAAAACAAEAAAAGADQAAAACAAEAAAAGADUAAAACAAEAAAAGADYAAAACAAEAAAAGADcAAAACAAEAAAAGADgAAAACAAEAAAAHAPT/AAACAAEAAAAHAPX/AAACAAEAAAAHAPb/AAACAAEAAAAHAPf/AAACAAEAAAAHAPj/AAACAAEAAAAHAPn/AAACAAEAAAAHAPr/AAACAAEAAAAHAPv/AAACAAEAAAAHAPz/AAACAAEAAAAHAP3/AAACAAEAAAAHAP7/AAACAAEAAAAHAP//AAACAAEAAAAHACkAAAACAAEAAAAHACoAAAACAAEAAAAHACsAAAACAAEAAAAHACwAAAACAAEAAAAHAC0AAAACAAEAAAAHAC4AAAACAAEAAAAHAC8AAAACAAEAAAAHADAAAAACAAEAAAAHADEAAAACAAEAAAAHADIAAAACAAEAAAAHADMAAAACAAEAAAAHADQAAAACAAEAAAAHADUAAAACAAEAAAAHADYAAAACAAEAAAAHADcAAAACAAEAAAAHADgAAAACAAEAAAAIACkAAAACAAEAAAAIACoAAAACAAEAAAAIACsAAAACAAEAAAAIACwAAAACAAEAAAAIAC0AAAACAAEAAAAIAC4AAAACAAEAAAAIAC8AAAACAAEAAAAIADAAAAACAAEAAAAIADEAAAACAAEAAAAIADIAAAACAAEAAAAIADMAAAACAAEAAAAIADQAAAACAAEAAAAIADUAAAACAAEAAAAIADYAAAACAAEAAAAIADcAAAACAAEAAAAIADgAAAACAAEAAAAJACkAAAACAAEAAAAJACoAAAACAAEAAAAJACsAAAACAAEAAAAJACwAAAACAAEAAAAJAC0AAAACAAEAAAAJAC4AAAACAAEAAAAJAC8AAAACAAEAAAAJADAAAAACAAEAAAAJADEAAAACAAEAAAAJADIAAAACAAEAAAAJADMAAAACAAEAAAAJADQAAAACAAEAAAAJADUAAAACAAEAAAAJADYAAAACAAEAAAAJADcAAAACAAEAAAAJADgAAAACAAEAAAAKACkAAAACAAEAAAAKACoAAAACAAEAAAAKACsAAAACAAEAAAAKACwAAAACAAEAAAAKAC0AAAACAAEAAAAKAC4AAAACAAEAAAAKAC8AAAACAAEAAAAKADAAAAACAAEAAAAKADEAAAACAAEAAAAKADIAAAACAAEAAAAKADMAAAACAAEAAAAKADQAAAACAAEAAAAKADUAAAACAAEAAAAKADYAAAACAAEAAAAKADcAAAACAAEAAAAKADgAAAACAAEAAAALACkAAAACAAEAAAALACoAAAACAAEAAAALACsAAAACAAEAAAALACwAAAACAAEAAAALAC0AAAACAAEAAAALAC4AAAACAAEAAAALAC8AAAACAAEAAAALADAAAAACAAEAAAALADEAAAACAAEAAAALADIAAAACAAEAAAALADMAAAACAAEAAAALADQAAAACAAEAAAALADUAAAACAAEAAAALADYAAAACAAEAAAALADcAAAACAAEAAAALADgAAAACAAEAAAAMACkAAAACAAEAAAAMACoAAAACAAEAAAAMACsAAAACAAEAAAAMACwAAAACAAEAAAAMAC0AAAACAAEAAAAMAC4AAAACAAEAAAAMAC8AAAACAAEAAAAMADAAAAACAAEAAAAMADEAAAACAAEAAAAMADIAAAACAAEAAAAMADMAAAACAAEAAAAMADQAAAACAAEAAAAMADUAAAACAAEAAAAMADYAAAACAAEAAAAMADcAAAACAAEAAAAMADgAAAACAAEAAAANACkAAAACAAEAAAANACoAAAACAAEAAAANACsAAAACAAEAAAANACwAAAACAAEAAAANAC0AAAACAAEAAAANAC4AAAACAAEAAAANAC8AAAACAAEAAAANADAAAAACAAEAAAANADEAAAACAAEAAAANADIAAAACAAEAAAANADMAAAACAAEAAAANADQAAAACAAEAAAANADUAAAACAAEAAAANADYAAAACAAEAAAANADcAAAACAAEAAAANADgAAAACAAEAAAAOACkAAAACAAEAAAAOACoAAAACAAEAAAAOACsAAAACAAEAAAAOACwAAAACAAEAAAAOAC0AAAACAAEAAAAOAC4AAAACAAEAAAAOAC8AAAACAAEAAAAOADAAAAACAAEAAAAOADEAAAACAAEAAAAOADIAAAACAAEAAAAOADMAAAACAAEAAAAOADQAAAACAAEAAAAOADUAAAACAAEAAAAOADYAAAACAAEAAAAOADcAAAACAAEAAAAOADgAAAACAAEAAAAPACkAAAACAAEAAAAPACoAAAACAAEAAAAPACsAAAACAAEAAAAPACwAAAACAAEAAAAPAC0AAAACAAEAAAAPAC4AAAACAAEAAAAPAC8AAAACAAEAAAAPADAAAAACAAEAAAAPADEAAAACAAEAAAAPADIAAAACAAEAAAAPADMAAAACAAEAAAAPADQAAAACAAEAAAAPADUAAAACAAEAAAAPADYAAAACAAEAAAAPADcAAAACAAEAAAAPADgAAAACAAEAAAAQACkAAAACAAEAAAAQACoAAAACAAEAAAAQACsAAAACAAEAAAAQACwAAAACAAEAAAAQAC0AAAACAAEAAAAQAC4AAAACAAEAAAAQAC8AAAACAAEAAAAQADAAAAACAAEAAAAQADEAAAACAAEAAAAQADIAAAACAAEAAAAQADMAAAACAAEAAAAQADQAAAACAAEAAAAQADUAAAACAAEAAAAQADYAAAACAAEAAAAQADcAAAACAAEAAAAQADgAAAACAAEAAAARACkAAAACAAEAAAARACoAAAACAAEAAAARACsAAAACAAEAAAARACwAAAACAAEAAAARAC0AAAACAAEAAAARAC4AAAACAAEAAAARAC8AAAACAAEAAAARADAAAAACAAEAAAARADEAAAACAAEAAAARADIAAAACAAEAAAARADMAAAACAAEAAAARADQAAAACAAEAAAARADUAAAACAAEAAAARADYAAAACAAEAAAARADcAAAACAAEAAAARADgAAAACAAEAAAASACkAAAACAAEAAAASACoAAAACAAEAAAASACsAAAACAAEAAAASACwAAAACAAEAAAASAC0AAAACAAEAAAASAC4AAAACAAEAAAASAC8AAAACAAEAAAASADAAAAACAAEAAAASADEAAAACAAEAAAASADIAAAACAAEAAAASADMAAAACAAEAAAASADQAAAACAAEAAAASADUAAAACAAEAAAASADYAAAACAAEAAAASADcAAAACAAEAAAASADgAAAACAAEAAAATACkAAAACAAEAAAATACoAAAACAAEAAAATACsAAAACAAEAAAATACwAAAACAAEAAAATAC0AAAACAAEAAAATAC4AAAACAAEAAAATAC8AAAACAAEAAAATADAAAAACAAEAAAATADEAAAACAAEAAAATADIAAAACAAEAAAATADMAAAACAAEAAAATADQAAAACAAEAAAATADUAAAACAAEAAAATADYAAAACAAEAAAATADcAAAACAAEAAAATADgAAAACAAEAAAAUACkAAAACAAEAAAAUACoAAAACAAEAAAAUACsAAAACAAEAAAAUACwAAAACAAEAAAAUAC0AAAACAAEAAAAUAC4AAAACAAEAAAAUAC8AAAACAAEAAAAUADAAAAACAAEAAAAUADEAAAACAAEAAAAUADIAAAACAAEAAAAUADMAAAACAAEAAAAUADQAAAACAAEAAAAUADUAAAACAAEAAAAUADYAAAACAAEAAAAUADcAAAACAAEAAAAUADgAAAACAAEAAAAVACkAAAACAAEAAAAVACoAAAACAAEAAAAVACsAAAACAAEAAAAVACwAAAACAAEAAAAVAC0AAAACAAEAAAAVAC4AAAACAAEAAAAVAC8AAAACAAEAAAAVADAAAAACAAEAAAAVADEAAAACAAEAAAAVADIAAAACAAEAAAAVADMAAAACAAEAAAAVADQAAAACAAEAAAAVADUAAAACAAEAAAAVADYAAAACAAEAAAAVADcAAAACAAEAAAAVADgAAAACAAEAAAAWACkAAAACAAEAAAAWACoAAAACAAEAAAAWACsAAAACAAEAAAAWACwAAAACAAEAAAAWAC0AAAACAAEAAAAWAC4AAAACAAEAAAAWAC8AAAACAAEAAAAWADAAAAACAAEAAAAWADEAAAACAAEAAAAWADIAAAACAAEAAAAWADMAAAACAAEAAAAWADQAAAACAAEAAAAWADUAAAACAAEAAAAWADYAAAACAAEAAAAWADcAAAACAAEAAAAWADgAAAACAAEAAAAXACkAAAACAAEAAAAXACoAAAACAAEAAAAXACsAAAACAAEAAAAXACwAAAACAAEAAAAXAC0AAAACAAEAAAAXAC4AAAACAAEAAAAXAC8AAAACAAEAAAAXADAAAAACAAEAAAAXADEAAAACAAEAAAAXADIAAAACAAEAAAAXADMAAAACAAEAAAAXADQAAAACAAEAAAAXADUAAAACAAEAAAAXADYAAAACAAEAAAAXADcAAAACAAEAAAAXADgAAAACAAEAAAAYACkAAAACAAEAAAAYACoAAAACAAEAAAAYACsAAAACAAEAAAAYACwAAAACAAEAAAAYAC0AAAACAAEAAAAYAC4AAAACAAEAAAAYAC8AAAACAAEAAAAYADAAAAACAAEAAAAYADEAAAACAAEAAAAYADIAAAACAAEAAAAYADMAAAACAAEAAAAYADQAAAACAAEAAAAYADUAAAACAAEAAAAYADYAAAACAAEAAAAYADcAAAACAAEAAAAYADgAAAACAAEAAAAZACkAAAACAAEAAAAZACoAAAACAAEAAAAZACsAAAACAAEAAAAZACwAAAACAAEAAAAZAC0AAAACAAEAAAAZAC4AAAACAAEAAAAZAC8AAAACAAEAAAAZADAAAAACAAEAAAAZADEAAAACAAEAAAAZADIAAAACAAEAAAAZADMAAAACAAEAAAAZADQAAAACAAEAAAAZADUAAAACAAEAAAAZADYAAAACAAEAAAAZADcAAAACAAEAAAAZADgAAAACAAEAAAAaACkAAAACAAEAAAAaACoAAAACAAEAAAAaACsAAAACAAEAAAAaACwAAAACAAEAAAAaAC0AAAACAAEAAAAaAC4AAAACAAEAAAAaAC8AAAACAAEAAAAaADAAAAACAAEAAAAaADEAAAACAAEAAAAaADIAAAACAAEAAAAaADMAAAACAAEAAAAaADQAAAACAAEAAAAaADUAAAACAAEAAAAaADYAAAACAAEAAAAaADcAAAACAAEAAAAaADgAAAACAAEAAAAbACkAAAACAAEAAAAbACoAAAACAAEAAAAbACsAAAACAAEAAAAbACwAAAACAAEAAAAbAC0AAAACAAEAAAAbAC4AAAACAAEAAAAbAC8AAAACAAEAAAAbADAAAAACAAEAAAAbADEAAAACAAEAAAAbADIAAAACAAEAAAAbADMAAAACAAEAAAAbADQAAAACAAEAAAAbADUAAAACAAEAAAAbADYAAAACAAEAAAAbADcAAAACAAEAAAAbADgAAAACAAEAAAAcACkAAAACAAEAAAAcACoAAAACAAEAAAAcACsAAAACAAEAAAAcACwAAAACAAEAAAAcAC0AAAACAAEAAAAcAC4AAAACAAEAAAAcAC8AAAACAAEAAAAcADAAAAACAAEAAAAcADEAAAACAAEAAAAcADIAAAACAAEAAAAcADMAAAACAAEAAAAcADQAAAACAAEAAAAcADUAAAACAAEAAAAcADYAAAACAAEAAAAcADcAAAACAAEAAAAcADgAAAACAAEAAAAdACkAAAACAAEAAAAdACoAAAACAAEAAAAdACsAAAACAAEAAAAdACwAAAACAAEAAAAdAC0AAAACAAEAAAAdAC4AAAACAAEAAAAdAC8AAAACAAEAAAAdADAAAAACAAEAAAAdADEAAAACAAEAAAAdADIAAAACAAEAAAAdADMAAAACAAEAAAAdADQAAAACAAEAAAAdADUAAAACAAEAAAAdADYAAAACAAEAAAAdADcAAAACAAEAAAAdADgAAAACAAEAAAAeACkAAAACAAEAAAAeACoAAAACAAEAAAAeACsAAAACAAEAAAAeACwAAAACAAEAAAAeAC0AAAACAAEAAAAeAC4AAAACAAEAAAAeAC8AAAACAAEAAAAeADAAAAACAAEAAAAeADEAAAACAAEAAAAeADIAAAACAAEAAAAeADMAAAACAAEAAAAeADQAAAACAAEAAAAeADUAAAACAAEAAAAeADYAAAACAAEAAAAeADcAAAACAAEAAAAeADgAAAACAAEAAAAfACkAAAACAAEAAAAfACoAAAACAAEAAAAfACsAAAACAAEAAAAfACwAAAACAAEAAAAfAC0AAAACAAEAAAAfAC4AAAACAAEAAAAfAC8AAAACAAEAAAAfADAAAAACAAEAAAAfADEAAAACAAEAAAAfADIAAAACAAEAAAAfADMAAAACAAEAAAAfADQAAAACAAEAAAAfADUAAAACAAEAAAAfADYAAAACAAEAAAAfADcAAAACAAEAAAAfADgAAAACAAEAAAAgACkAAAACAAEAAAAgACoAAAACAAEAAAAgACsAAAACAAEAAAAgACwAAAACAAEAAAAgAC0AAAACAAEAAAAgAC4AAAACAAEAAAAgAC8AAAACAAEAAAAgADAAAAACAAEAAAAgADEAAAACAAEAAAAgADIAAAACAAEAAAAgADMAAAACAAEAAAAgADQAAAACAAEAAAAgADUAAAACAAEAAAAgADYAAAACAAEAAAAgADcAAAACAAEAAAAgADgAAAACAAEAAAAhACkAAAACAAEAAAAhACoAAAACAAEAAAAhACsAAAACAAEAAAAhACwAAAACAAEAAAAhAC0AAAACAAEAAAAhAC4AAAACAAEAAAAhAC8AAAACAAEAAAAhADAAAAACAAEAAAAhADEAAAACAAEAAAAhADIAAAACAAEAAAAhADMAAAACAAEAAAAhADQAAAACAAEAAAAhADUAAAACAAEAAAAhADYAAAACAAEAAAAhADcAAAACAAEAAAAhADgAAAACAAEAAAAiACkAAAACAAEAAAAiACoAAAACAAEAAAAiACsAAAACAAEAAAAiACwAAAACAAEAAAAiAC0AAAACAAEAAAAiAC4AAAACAAEAAAAiAC8AAAACAAEAAAAiADAAAAACAAEAAAAiADEAAAACAAEAAAAiADIAAAACAAEAAAAiADMAAAACAAEAAAAiADQAAAACAAEAAAAiADUAAAACAAEAAAAiADYAAAACAAEAAAAiADcAAAACAAEAAAAiADgAAAACAAEAAAAjACkAAAACAAEAAAAjACoAAAACAAEAAAAjACsAAAACAAEAAAAjACwAAAACAAEAAAAjAC0AAAACAAEAAAAjAC4AAAACAAEAAAAjAC8AAAACAAEAAAAjADAAAAACAAEAAAAjADEAAAACAAEAAAAjADIAAAACAAEAAAAjADMAAAACAAEAAAAjADQAAAACAAEAAAAjADUAAAACAAEAAAAjADYAAAACAAEAAAAjADcAAAACAAEAAAAjADgAAAACAAEAAAAkACkAAAACAAEAAAAkACoAAAACAAEAAAAkACsAAAACAAEAAAAkACwAAAACAAEAAAAkAC0AAAACAAEAAAAkAC4AAAACAAEAAAAkAC8AAAACAAEAAAAkADAAAAACAAEAAAAkADEAAAACAAEAAAAkADIAAAACAAEAAAAkADMAAAACAAEAAAAkADQAAAACAAEAAAAkADUAAAACAAEAAAAkADYAAAACAAEAAAAkADcAAAACAAEAAAAkADgAAAACAAEAAAAlACkAAAACAAEAAAAlACoAAAACAAEAAAAlACsAAAACAAEAAAAlACwAAAACAAEAAAAlAC0AAAACAAEAAAAlAC4AAAACAAEAAAAlAC8AAAACAAEAAAAlADAAAAACAAEAAAAlADEAAAACAAEAAAAlADIAAAACAAEAAAAlADMAAAACAAEAAAAlADQAAAACAAEAAAAlADUAAAACAAEAAAAlADYAAAACAAEAAAAlADcAAAACAAEAAAAlADgAAAACAAEAAAAmACkAAAACAAEAAAAmACoAAAACAAEAAAAmACsAAAACAAEAAAAmACwAAAACAAEAAAAmAC0AAAACAAEAAAAmAC4AAAACAAEAAAAmAC8AAAACAAEAAAAmADAAAAACAAEAAAAmADEAAAACAAEAAAAmADIAAAACAAEAAAAmADMAAAACAAEAAAAmADQAAAACAAEAAAAmADUAAAACAAEAAAAmADYAAAACAAEAAAAmADcAAAACAAEAAAAmADgAAAACAAEAAAAnACkAAAACAAEAAAAnACoAAAACAAEAAAAnACsAAAACAAEAAAAnACwAAAACAAEAAAAnAC0AAAACAAEAAAAnAC4AAAACAAEAAAAnAC8AAAACAAEAAAAnADAAAAACAAEAAAAnADEAAAACAAEAAAAnADIAAAACAAEAAAAnADMAAAACAAEAAAAnADQAAAACAAEAAAAnADUAAAACAAEAAAAnADYAAAACAAEAAAAnADcAAAACAAEAAAAnADgAAAACAAEAAAAoACkAAAACAAEAAAAoACoAAAACAAEAAAAoACsAAAACAAEAAAAoACwAAAACAAEAAAAoAC0AAAACAAEAAAAoAC4AAAACAAEAAAAoAC8AAAACAAEAAAAoADAAAAACAAEAAAAoADEAAAACAAEAAAAoADIAAAACAAEAAAAoADMAAAACAAEAAAAoADQAAAACAAEAAAAoADUAAAACAAEAAAAoADYAAAACAAEAAAAoADcAAAACAAEAAAAoADgAAAACAAEAAAApACkAAAACAAEAAAApACoAAAACAAEAAAApACsAAAACAAEAAAApACwAAAACAAEAAAApAC0AAAACAAEAAAApAC4AAAACAAEAAAApAC8AAAACAAEAAAApADAAAAACAAEAAAApADEAAAACAAEAAAApADIAAAACAAEAAAApADMAAAACAAEAAAApADQAAAACAAEAAAApADUAAAACAAEAAAApADYAAAACAAEAAAApADcAAAACAAEAAAApADgAAAACAAEAAAAqACkAAAACAAEAAAAqACoAAAACAAEAAAAqACsAAAACAAEAAAAqACwAAAACAAEAAAAqAC0AAAACAAEAAAAqAC4AAAACAAEAAAAqAC8AAAACAAEAAAAqADAAAAACAAEAAAAqADEAAAACAAEAAAAqADIAAAACAAEAAAAqADMAAAACAAEAAAAqADQAAAACAAEAAAAqADUAAAACAAEAAAAqADYAAAACAAEAAAAqADcAAAACAAEAAAAqADgAAAACAAEAAAArACkAAAACAAEAAAArACoAAAACAAEAAAArACsAAAACAAEAAAArACwAAAACAAEAAAArAC0AAAACAAEAAAArAC4AAAACAAEAAAArAC8AAAACAAEAAAArADAAAAACAAEAAAArADEAAAACAAEAAAArADIAAAACAAEAAAArADMAAAACAAEAAAArADQAAAACAAEAAAArADUAAAACAAEAAAArADYAAAACAAEAAAArADcAAAACAAEAAAArADgAAAACAAEAAAAsACkAAAACAAEAAAAsACoAAAACAAEAAAAsACsAAAACAAEAAAAsACwAAAACAAEAAAAsAC0AAAACAAEAAAAsAC4AAAACAAEAAAAsAC8AAAACAAEAAAAsADAAAAACAAEAAAAsADEAAAACAAEAAAAsADIAAAACAAEAAAAsADMAAAACAAEAAAAsADQAAAACAAEAAAAsADUAAAACAAEAAAAsADYAAAACAAEAAAAsADcAAAACAAEAAAAsADgAAAACAAEAAAAtACkAAAACAAEAAAAtACoAAAACAAEAAAAtACsAAAACAAEAAAAtACwAAAACAAEAAAAtAC0AAAACAAEAAAAtAC4AAAACAAEAAAAtAC8AAAACAAEAAAAtADAAAAACAAEAAAAtADEAAAACAAEAAAAtADIAAAACAAEAAAAtADMAAAACAAEAAAAtADQAAAACAAEAAAAtADUAAAACAAEAAAAtADYAAAACAAEAAAAtADcAAAACAAEAAAAtADgAAAACAAEAAAAuACkAAAACAAEAAAAuACoAAAACAAEAAAAuACsAAAACAAEAAAAuACwAAAACAAEAAAAuAC0AAAACAAEAAAAuAC4AAAACAAEAAAAuAC8AAAACAAEAAAAuADAAAAACAAEAAAAuADEAAAACAAEAAAAuADIAAAACAAEAAAAuADMAAAACAAEAAAAuADQAAAACAAEAAAAuADUAAAACAAEAAAAuADYAAAACAAEAAAAuADcAAAACAAEAAAAuADgAAAACAAEAAAAvACkAAAACAAEAAAAvACoAAAACAAEAAAAvACsAAAACAAEAAAAvACwAAAACAAEAAAAvAC0AAAACAAEAAAAvAC4AAAACAAEAAAAvAC8AAAACAAEAAAAvADAAAAACAAEAAAAvADEAAAACAAEAAAAvADIAAAACAAEAAAAvADMAAAACAAEAAAAvADQAAAACAAEAAAAvADUAAAACAAEAAAAvADYAAAACAAEAAAAvADcAAAACAAEAAAAvADgAAAACAAEAAAAwACkAAAACAAEAAAAwACoAAAACAAEAAAAwACsAAAACAAEAAAAwACwAAAACAAEAAAAwAC0AAAACAAEAAAAwAC4AAAACAAEAAAAwAC8AAAACAAEAAAAwADAAAAACAAEAAAAwADEAAAACAAEAAAAwADIAAAACAAEAAAAwADMAAAACAAEAAAAwADQAAAACAAEAAAAwADUAAAACAAEAAAAwADYAAAACAAEAAAAwADcAAAACAAEAAAAwADgAAAACAAEAAAAxACkAAAACAAEAAAAxACoAAAACAAEAAAAxACsAAAACAAEAAAAxACwAAAACAAEAAAAxAC0AAAACAAEAAAAxAC4AAAACAAEAAAAxAC8AAAACAAEAAAAxADAAAAACAAEAAAAxADEAAAACAAEAAAAxADIAAAACAAEAAAAxADMAAAACAAEAAAAxADQAAAACAAEAAAAxADUAAAACAAEAAAAxADYAAAACAAEAAAAxADcAAAACAAEAAAAxADgAAAACAAEAAAAyACkAAAACAAEAAAAyACoAAAACAAEAAAAyACsAAAACAAEAAAAyACwAAAACAAEAAAAyAC0AAAACAAEAAAAyAC4AAAACAAEAAAAyAC8AAAACAAEAAAAyADAAAAACAAEAAAAyADEAAAACAAEAAAAyADIAAAACAAEAAAAyADMAAAACAAEAAAAyADQAAAACAAEAAAAyADUAAAACAAEAAAAyADYAAAACAAEAAAAyADcAAAACAAEAAAAyADgAAAACAAEAAAAzACkAAAACAAEAAAAzACoAAAACAAEAAAAzACsAAAACAAEAAAAzACwAAAACAAEAAAAzAC0AAAACAAEAAAAzAC4AAAACAAEAAAAzAC8AAAACAAEAAAAzADAAAAACAAEAAAAzADEAAAACAAEAAAAzADIAAAACAAEAAAAzADMAAAACAAEAAAAzADQAAAACAAEAAAAzADUAAAACAAEAAAAzADYAAAACAAEAAAAzADcAAAACAAEAAAAzADgAAAACAAEAAAA0ACkAAAACAAEAAAA0ACoAAAACAAEAAAA0ACsAAAACAAEAAAA0ACwAAAACAAEAAAA0AC0AAAACAAEAAAA0AC4AAAACAAEAAAA0AC8AAAACAAEAAAA0ADAAAAACAAEAAAA0ADEAAAACAAEAAAA0ADIAAAACAAEAAAA0ADMAAAACAAEAAAA0ADQAAAACAAEAAAA0ADUAAAACAAEAAAA0ADYAAAACAAEAAAA0ADcAAAACAAEAAAA0ADgAAAACAAEAAAA1ACkAAAACAAEAAAA1ACoAAAACAAEAAAA1ACsAAAACAAEAAAA1ACwAAAACAAEAAAA1AC0AAAACAAEAAAA1AC4AAAACAAEAAAA1AC8AAAACAAEAAAA1ADAAAAACAAEAAAA1ADEAAAACAAEAAAA1ADIAAAACAAEAAAA1ADMAAAACAAEAAAA1ADQAAAACAAEAAAA1ADUAAAACAAEAAAA1ADYAAAACAAEAAAA1ADcAAAACAAEAAAA1ADgAAAACAAEAAAA2ACkAAAACAAEAAAA2ACoAAAACAAEAAAA2ACsAAAACAAEAAAA2ACwAAAACAAEAAAA2AC0AAAACAAEAAAA2AC4AAAACAAEAAAA2AC8AAAACAAEAAAA2ADAAAAACAAEAAAA2ADEAAAACAAEAAAA2ADIAAAACAAEAAAA2ADMAAAACAAEAAAA2ADQAAAACAAEAAAA2ADUAAAACAAEAAAA2ADYAAAACAAEAAAA2ADcAAAACAAEAAAA2ADgAAAACAAEAAAA3ACkAAAACAAEAAAA3ACoAAAACAAEAAAA3ACsAAAACAAEAAAA3ACwAAAACAAEAAAA3AC0AAAACAAEAAAA3AC4AAAACAAEAAAA3AC8AAAACAAEAAAA3ADAAAAACAAEAAAA3ADEAAAACAAEAAAA3ADIAAAACAAEAAAA3ADMAAAACAAEAAAA3ADQAAAACAAEAAAA3ADUAAAACAAEAAAA3ADYAAAACAAEAAAA3ADcAAAACAAEAAAA3ADgAAAACAAEAAAA4ACkAAAACAAEAAAA4ACoAAAACAAEAAAA4ACsAAAACAAEAAAA4ACwAAAACAAEAAAA4AC0AAAACAAEAAAA4AC4AAAACAAEAAAA4AC8AAAACAAEAAAA4ADAAAAACAAEAAAA4ADEAAAACAAEAAAA4ADIAAAACAAEAAAA4ADMAAAACAAEAAAA4ADQAAAACAAEAAAA4ADUAAAACAAEAAAA4ADYAAAACAAEAAAA4ADcAAAACAAEAAAA4ADgAAAACAAEAAAA5ACkAAAACAAEAAAA5ACoAAAACAAEAAAA5ACsAAAACAAEAAAA5ACwAAAACAAEAAAA5AC0AAAACAAEAAAA5AC4AAAACAAEAAAA5AC8AAAACAAEAAAA5ADAAAAACAAEAAAA5ADEAAAACAAEAAAA5ADIAAAACAAEAAAA5ADMAAAACAAEAAAA5ADQAAAACAAEAAAA5ADUAAAACAAEAAAA5ADYAAAACAAEAAAA5ADcAAAACAAEAAAA5ADgAAAACAAEAAAA6ACkAAAACAAEAAAA6ACoAAAACAAEAAAA6ACsAAAACAAEAAAA6ACwAAAACAAEAAAA6AC0AAAACAAEAAAA6AC4AAAACAAEAAAA6AC8AAAACAAEAAAA6ADAAAAACAAEAAAA6ADEAAAACAAEAAAA6ADIAAAACAAEAAAA6ADMAAAACAAEAAAA6ADQAAAACAAEAAAA6ADUAAAACAAEAAAA6ADYAAAACAAEAAAA6ADcAAAACAAEAAAA6ADgAAAACAAEAAAA7ACkAAAACAAEAAAA7ACoAAAACAAEAAAA7ACsAAAACAAEAAAA7ACwAAAACAAEAAAA7AC0AAAACAAEAAAA7AC4AAAACAAEAAAA7AC8AAAACAAEAAAA7ADAAAAACAAEAAAA7ADEAAAACAAEAAAA7ADIAAAACAAEAAAA7ADMAAAACAAEAAAA7ADQAAAACAAEAAAA7ADUAAAACAAEAAAA7ADYAAAACAAEAAAA7ADcAAAACAAEAAAA7ADgAAAACAAEAAAA8ACkAAAACAAEAAAA8ACoAAAACAAEAAAA8ACsAAAACAAEAAAA8ACwAAAACAAEAAAA8AC0AAAACAAEAAAA8AC4AAAACAAEAAAA8AC8AAAACAAEAAAA8ADAAAAACAAEAAAA8ADEAAAACAAEAAAA8ADIAAAACAAEAAAA8ADMAAAACAAEAAAA8ADQAAAACAAEAAAA8ADUAAAACAAEAAAA8ADYAAAACAAEAAAA8ADcAAAACAAEAAAA8ADgAAAACAAEAAAA9ACkAAAACAAEAAAA9ACoAAAACAAEAAAA9ACsAAAACAAEAAAA9ACwAAAACAAEAAAA9AC0AAAACAAEAAAA9AC4AAAACAAEAAAA9AC8AAAACAAEAAAA9ADAAAAACAAEAAAA9ADEAAAACAAEAAAA9ADIAAAACAAEAAAA9ADMAAAACAAEAAAA9ADQAAAACAAEAAAA9ADUAAAACAAEAAAA9ADYAAAACAAEAAAA9ADcAAAACAAEAAAA9ADgAAAACAAEAAAA+ACkAAAACAAEAAAA+ACoAAAACAAEAAAA+ACsAAAACAAEAAAA+ACwAAAACAAEAAAA+AC0AAAACAAEAAAA+AC4AAAACAAEAAAA+AC8AAAACAAEAAAA+ADAAAAACAAEAAAA+ADEAAAACAAEAAAA+ADIAAAACAAEAAAA+ADMAAAACAAEAAAA+ADQAAAACAAEAAAA+ADUAAAACAAEAAAA+ADYAAAACAAEAAAA+ADcAAAACAAEAAAA+ADgAAAACAAEAAAA/ACkAAAACAAEAAAA/ACoAAAACAAEAAAA/ACsAAAACAAEAAAA/ACwAAAACAAEAAAA/AC0AAAACAAEAAAA/AC4AAAACAAEAAAA/AC8AAAACAAEAAAA/ADAAAAACAAEAAAA/ADEAAAACAAEAAAA/ADIAAAACAAEAAAA/ADMAAAACAAEAAAA/ADQAAAACAAEAAAA/ADUAAAACAAEAAAA/ADYAAAACAAEAAAA/ADcAAAACAAEAAAA/ADgAAAACAAEAAABAACkAAAACAAEAAABAACoAAAACAAEAAABAACsAAAACAAEAAABAACwAAAACAAEAAABAAC0AAAACAAEAAABAAC4AAAACAAEAAABAAC8AAAACAAEAAABAADAAAAACAAEAAABAADEAAAACAAEAAABAADIAAAACAAEAAABAADMAAAACAAEAAABAADQAAAACAAEAAABAADUAAAACAAEAAABAADYAAAACAAEAAABAADcAAAACAAEAAABAADgAAAACAAEAAABBACkAAAACAAEAAABBACoAAAACAAEAAABBACsAAAACAAEAAABBACwAAAACAAEAAABBAC0AAAACAAEAAABBAC4AAAACAAEAAABBAC8AAAACAAEAAABBADAAAAACAAEAAABBADEAAAACAAEAAABBADIAAAACAAEAAABBADMAAAACAAEAAABBADQAAAACAAEAAABBADUAAAACAAEAAABBADYAAAACAAEAAABBADcAAAACAAEAAABBADgAAAACAAEAAABCACkAAAACAAEAAABCACoAAAACAAEAAABCACsAAAACAAEAAABCACwAAAACAAEAAABCAC0AAAACAAEAAABCAC4AAAACAAEAAABCAC8AAAACAAEAAABCADAAAAACAAEAAABCADEAAAACAAEAAABCADIAAAACAAEAAABCADMAAAACAAEAAABCADQAAAACAAEAAABCADUAAAACAAEAAABCADYAAAACAAEAAABCADcAAAACAAEAAABCADgAAAACAAEAAABDACkAAAACAAEAAABDACoAAAACAAEAAABDACsAAAACAAEAAABDACwAAAACAAEAAABDAC0AAAACAAEAAABDAC4AAAACAAEAAABDAC8AAAACAAEAAABDADAAAAACAAEAAABDADEAAAACAAEAAABDADIAAAACAAEAAABDADMAAAACAAEAAABDADQAAAACAAEAAABDADUAAAACAAEAAABDADYAAAACAAEAAABDADcAAAACAAEAAABDADgAAAACAAEAAABEACkAAAACAAEAAABEACoAAAACAAEAAABEACsAAAACAAEAAABEACwAAAACAAEAAABEAC0AAAACAAEAAABEAC4AAAACAAEAAABEAC8AAAACAAEAAABEADAAAAACAAEAAABEADEAAAACAAEAAABEADIAAAACAAEAAABEADMAAAACAAEAAABEADQAAAACAAEAAABEADUAAAACAAEAAABEADYAAAACAAEAAABEADcAAAACAAEAAABEADgAAAACAAEAAABFACkAAAACAAEAAABFACoAAAACAAEAAABFACsAAAACAAEAAABFACwAAAACAAEAAABFAC0AAAACAAEAAABFAC4AAAACAAEAAABFAC8AAAACAAEAAABFADAAAAACAAEAAABFADEAAAACAAEAAABFADIAAAACAAEAAABFADMAAAACAAEAAABFADQAAAACAAEAAABFADUAAAACAAEAAABFADYAAAACAAEAAABFADcAAAACAAEAAABFADgAAAACAAEAAABGACkAAAACAAEAAABGACoAAAACAAEAAABGACsAAAACAAEAAABGACwAAAACAAEAAABGAC0AAAACAAEAAABGAC4AAAACAAEAAABGAC8AAAACAAEAAABGADAAAAACAAEAAABGADEAAAACAAEAAABGADIAAAACAAEAAABGADMAAAACAAEAAABGADQAAAACAAEAAABGADUAAAACAAEAAABGADYAAAACAAEAAABGADcAAAACAAEAAABGADgAAAACAAEAAABHACkAAAACAAEAAABHACoAAAACAAEAAABHACsAAAACAAEAAABHACwAAAACAAEAAABHAC0AAAACAAEAAABHAC4AAAACAAEAAABHAC8AAAACAAEAAABHADAAAAACAAEAAABHADEAAAACAAEAAABHADIAAAACAAEAAABHADMAAAACAAEAAABHADQAAAACAAEAAABHADUAAAACAAEAAABHADYAAAACAAEAAABHADcAAAACAAEAAABHADgAAAACAAEAAABIACYAAAACAAEAAABIACcAAAACAAEAAABIACgAAAACAAEAAABIACkAAAACAAEAAABIACoAAAACAAEAAABIACsAAAACAAEAAABIACwAAAACAAEAAABIAC0AAAACAAEAAABIAC4AAAACAAEAAABIAC8AAAACAAEAAABIADAAAAACAAEAAABIADEAAAACAAEAAABIADIAAAACAAEAAABIADMAAAACAAEAAABIADQAAAACAAEAAABIADUAAAACAAEAAABIADYAAAACAAEAAABIADcAAAACAAEAAABIADgAAAACAAEAAABJACYAAAACAAEAAABJACcAAAACAAEAAABJACgAAAACAAEAAABJACkAAAACAAEAAABJACoAAAACAAEAAABJACsAAAACAAEAAABJACwAAAACAAEAAABJAC0AAAACAAEAAABJAC4AAAACAAEAAABJAC8AAAACAAEAAABJADAAAAACAAEAAABJADEAAAACAAEAAABJADIAAAACAAEAAABJADMAAAACAAEAAABJADQAAAACAAEAAABJADUAAAACAAEAAABJADYAAAACAAEAAABJADcAAAACAAEAAABJADgAAAACAAEAAABKACYAAAACAAEAAABKACcAAAACAAEAAABKACgAAAACAAEAAABKACkAAAACAAEAAABKACoAAAACAAEAAABKACsAAAACAAEAAABKACwAAAACAAEAAABKAC0AAAACAAEAAABKAC4AAAACAAEAAABKAC8AAAACAAEAAABKADAAAAACAAEAAABKADEAAAACAAEAAABKADIAAAACAAEAAABKADMAAAACAAEAAABKADQAAAACAAEAAABKADUAAAACAAEAAABKADYAAAACAAEAAABKADcAAAACAAEAAABKADgAAAACAAEAAABLACYAAAACAAEAAABLACcAAAACAAEAAABLACgAAAACAAEAAABLACkAAAACAAEAAABLACoAAAACAAEAAABLACsAAAACAAEAAABLACwAAAACAAEAAABLAC0AAAACAAEAAABLAC4AAAACAAEAAABLAC8AAAACAAEAAABLADAAAAACAAEAAABLADEAAAACAAEAAABLADIAAAACAAEAAABLADMAAAACAAEAAABLADQAAAACAAEAAABLADUAAAACAAEAAABLADYAAAACAAEAAABLADcAAAACAAEAAABLADgAAAACAAEAAABMACYAAAACAAEAAABMACcAAAACAAEAAABMACgAAAACAAEAAABMACkAAAACAAEAAABMACoAAAACAAEAAABMACsAAAACAAEAAABMACwAAAACAAEAAABMAC0AAAACAAEAAABMAC4AAAACAAEAAABMAC8AAAACAAEAAABMADAAAAACAAEAAABMADEAAAACAAEAAABMADIAAAACAAEAAABMADMAAAACAAEAAABMADQAAAACAAEAAABMADUAAAACAAEAAABMADYAAAACAAEAAABMADcAAAACAAEAAABMADgAAAACAAEAAABNACYAAAACAAEAAABNACcAAAACAAEAAABNACgAAAACAAEAAABNACkAAAACAAEAAABNACoAAAACAAEAAABNACsAAAACAAEAAABNACwAAAACAAEAAABNAC0AAAACAAEAAABNAC4AAAACAAEAAABNAC8AAAACAAEAAABNADAAAAACAAEAAABNADEAAAACAAEAAABNADIAAAACAAEAAABNADMAAAACAAEAAABNADQAAAACAAEAAABNADUAAAACAAEAAABNADYAAAACAAEAAABNADcAAAACAAEAAABNADgAAAACAAEAAABOACYAAAACAAEAAABOACcAAAACAAEAAABOACgAAAACAAEAAABOACkAAAACAAEAAABOACoAAAACAAEAAABOACsAAAACAAEAAABOACwAAAACAAEAAABOAC0AAAACAAEAAABOAC4AAAACAAEAAABOAC8AAAACAAEAAABOADAAAAACAAEAAABOADEAAAACAAEAAABOADIAAAACAAEAAABOADMAAAACAAEAAABOADQAAAACAAEAAABOADUAAAACAAEAAABOADYAAAACAAEAAABOADcAAAACAAEAAABOADgAAAACAAEAAABPACYAAAACAAEAAABPACcAAAACAAEAAABPACgAAAACAAEAAABPACkAAAACAAEAAABPACoAAAACAAEAAABPACsAAAACAAEAAABPACwAAAACAAEAAABPAC0AAAACAAEAAABPAC4AAAACAAEAAABPAC8AAAACAAEAAABPADAAAAACAAEAAABPADEAAAACAAEAAABPADIAAAACAAEAAABPADMAAAACAAEAAABPADQAAAACAAEAAABPADUAAAACAAEAAABPADYAAAACAAEAAABPADcAAAACAAEAAABPADgAAAACAAEAAABQACYAAAACAAEAAABQACcAAAACAAEAAABQACgAAAACAAEAAABQACkAAAACAAEAAABQACoAAAACAAEAAABQACsAAAACAAEAAABQACwAAAACAAEAAABQAC0AAAACAAEAAABQAC4AAAACAAEAAABQAC8AAAACAAEAAABQADAAAAACAAEAAABQADEAAAACAAEAAABQADIAAAACAAEAAABQADMAAAACAAEAAABQADQAAAACAAEAAABQADUAAAACAAEAAABQADYAAAACAAEAAABQADcAAAACAAEAAABQADgAAAACAAEAAABRACYAAAACAAEAAABRACcAAAACAAEAAABRACgAAAACAAEAAABRACkAAAACAAEAAABRACoAAAACAAEAAABRACsAAAACAAEAAABRACwAAAACAAEAAABRAC0AAAACAAEAAABRAC4AAAACAAEAAABRAC8AAAACAAEAAABRADAAAAACAAEAAABRADEAAAACAAEAAABRADIAAAACAAEAAABRADMAAAACAAEAAABRADQAAAACAAEAAABRADUAAAACAAEAAABRADYAAAACAAEAAABRADcAAAACAAEAAABRADgAAAACAAEAAABSACYAAAACAAEAAABSACcAAAACAAEAAABSACgAAAACAAEAAABSACkAAAACAAEAAABSACoAAAACAAEAAABSACsAAAACAAEAAABSACwAAAACAAEAAABSAC0AAAACAAEAAABSAC4AAAACAAEAAABSAC8AAAACAAEAAABSADAAAAACAAEAAABSADEAAAACAAEAAABSADIAAAACAAEAAABSADMAAAACAAEAAABSADQAAAACAAEAAABSADUAAAACAAEAAABSADYAAAACAAEAAABSADcAAAACAAEAAABSADgAAAACAAEAAABTACYAAAACAAEAAABTACcAAAACAAEAAABTACgAAAACAAEAAABTACkAAAACAAEAAABTACoAAAACAAEAAABTACsAAAACAAEAAABTACwAAAACAAEAAABTAC0AAAACAAEAAABTAC4AAAACAAEAAABTAC8AAAACAAEAAABTADAAAAACAAEAAABTADEAAAACAAEAAABTADIAAAACAAEAAABTADMAAAACAAEAAABTADQAAAACAAEAAABTADUAAAACAAEAAABTADYAAAACAAEAAABTADcAAAACAAEAAABTADgAAAACAAEAAABUACYAAAACAAEAAABUACcAAAACAAEAAABUACgAAAACAAEAAABUACkAAAACAAEAAABUACoAAAACAAEAAABUACsAAAACAAEAAABUACwAAAACAAEAAABUAC0AAAACAAEAAABUAC4AAAACAAEAAABUAC8AAAACAAEAAABUADAAAAACAAEAAABUADEAAAACAAEAAABUADIAAAACAAEAAABUADMAAAACAAEAAABUADQAAAACAAEAAABUADUAAAACAAEAAABUADYAAAACAAEAAABUADcAAAACAAEAAABUADgAAAACAAEAAABVACYAAAACAAEAAABVACcAAAACAAEAAABVACgAAAACAAEAAABVACkAAAACAAEAAABVACoAAAACAAEAAABVACsAAAACAAEAAABVACwAAAACAAEAAABVAC0AAAACAAEAAABVAC4AAAACAAEAAABVAC8AAAACAAEAAABVADAAAAACAAEAAABVADEAAAACAAEAAABVADIAAAACAAEAAABVADMAAAACAAEAAABVADQAAAACAAEAAABVADUAAAACAAEAAABVADYAAAACAAEAAABVADcAAAACAAEAAABVADgAAAACAAEAAABWACYAAAACAAEAAABWACcAAAACAAEAAABWACgAAAACAAEAAABWACkAAAACAAEAAABWACoAAAACAAEAAABWACsAAAACAAEAAABWACwAAAACAAEAAABWAC0AAAACAAEAAABWAC4AAAACAAEAAABWAC8AAAACAAEAAABWADAAAAACAAEAAABWADEAAAACAAEAAABWADIAAAACAAEAAABWADMAAAACAAEAAABWADQAAAACAAEAAABWADUAAAACAAEAAABWADYAAAACAAEAAABWADcAAAACAAEAAABWADgAAAACAAEAAABXACYAAAACAAEAAABXACcAAAACAAEAAABXACgAAAACAAEAAABXACkAAAACAAEAAABXACoAAAACAAEAAABXACsAAAACAAEAAABXACwAAAACAAEAAABXAC0AAAACAAEAAABXAC4AAAACAAEAAABXAC8AAAACAAEAAABXADAAAAACAAEAAABXADEAAAACAAEAAABXADIAAAACAAEAAABXADMAAAACAAEAAABXADQAAAACAAEAAABXADUAAAACAAEAAABXADYAAAACAAEAAABXADcAAAACAAEAAABXADgAAAACAAEAAABYACYAAAACAAEAAABYACcAAAACAAEAAABYACgAAAACAAEAAABYACkAAAACAAEAAABYACoAAAACAAEAAABYACsAAAACAAEAAABYACwAAAACAAEAAABYAC0AAAACAAEAAABYAC4AAAACAAEAAABYAC8AAAACAAEAAABYADAAAAACAAEAAABYADEAAAACAAEAAABYADIAAAACAAEAAABYADMAAAACAAEAAABYADQAAAACAAEAAABYADUAAAACAAEAAABYADYAAAACAAEAAABYADcAAAACAAEAAABYADgAAAACAAEAAABZACYAAAACAAEAAABZACcAAAACAAEAAABZACgAAAACAAEAAABZACkAAAACAAEAAABZACoAAAACAAEAAABZACsAAAACAAEAAABZACwAAAACAAEAAABZAC0AAAACAAEAAABZAC4AAAACAAEAAABZAC8AAAACAAEAAABZADAAAAACAAEAAABZADEAAAACAAEAAABZADIAAAACAAEAAABZADMAAAACAAEAAABZADQAAAACAAEAAABZADUAAAACAAEAAABZADYAAAACAAEAAABZADcAAAACAAEAAABZADgAAAACAAEAAABaACYAAAACAAEAAABaACcAAAACAAEAAABaACgAAAACAAEAAABaACkAAAACAAEAAABaACoAAAACAAEAAABaACsAAAACAAEAAABaACwAAAACAAEAAABaAC0AAAACAAEAAABaAC4AAAACAAEAAABaAC8AAAACAAEAAABaADAAAAACAAEAAABaADEAAAACAAEAAABaADIAAAACAAEAAABaADMAAAACAAEAAABaADQAAAACAAEAAABaADUAAAACAAEAAABaADYAAAACAAEAAABaADcAAAACAAEAAABaADgAAAACAAEAAABbACYAAAACAAEAAABbACcAAAACAAEAAABbACgAAAACAAEAAABbACkAAAACAAEAAABbACoAAAACAAEAAABbACsAAAACAAEAAABbACwAAAACAAEAAABbAC0AAAACAAEAAABbAC4AAAACAAEAAABbAC8AAAACAAEAAABbADAAAAACAAEAAABbADEAAAACAAEAAABbADIAAAACAAEAAABbADMAAAACAAEAAABbADQAAAACAAEAAABbADUAAAACAAEAAABbADYAAAACAAEAAABbADcAAAACAAEAAABbADgAAAACAAEAAABcACYAAAACAAEAAABcACcAAAACAAEAAABcACgAAAACAAEAAABcACkAAAACAAEAAABcACoAAAACAAEAAABcACsAAAACAAEAAABcACwAAAACAAEAAABcAC0AAAACAAEAAABcAC4AAAACAAEAAABcAC8AAAACAAEAAABcADAAAAACAAEAAABcADEAAAACAAEAAABcADIAAAACAAEAAABcADMAAAACAAEAAABcADQAAAACAAEAAABcADUAAAACAAEAAABcADYAAAACAAEAAABcADcAAAACAAEAAABcADgAAAACAAEAAABdACYAAAACAAEAAABdACcAAAACAAEAAABdACgAAAACAAEAAABdACkAAAACAAEAAABdACoAAAACAAEAAABdACsAAAACAAEAAABdACwAAAACAAEAAABdAC0AAAACAAEAAABdAC4AAAACAAEAAABdAC8AAAACAAEAAABdADAAAAACAAEAAABdADEAAAACAAEAAABdADIAAAACAAEAAABdADMAAAACAAEAAABdADQAAAACAAEAAABdADUAAAACAAEAAABdADYAAAACAAEAAABdADcAAAACAAEAAABdADgAAAACAAEAAABeACYAAAACAAEAAABeACcAAAACAAEAAABeACgAAAACAAEAAABeACkAAAACAAEAAABeACoAAAACAAEAAABeACsAAAACAAEAAABeACwAAAACAAEAAABeAC0AAAACAAEAAABeAC4AAAACAAEAAABeAC8AAAACAAEAAABeADAAAAACAAEAAABeADEAAAACAAEAAABeADIAAAACAAEAAABeADMAAAACAAEAAABeADQAAAACAAEAAABeADUAAAACAAEAAABeADYAAAACAAEAAABeADcAAAACAAEAAABeADgAAAACAAEAAABfACYAAAACAAEAAABfACcAAAACAAEAAABfACgAAAACAAEAAABfACkAAAACAAEAAABfACoAAAACAAEAAABfACsAAAACAAEAAABfACwAAAACAAEAAABfAC0AAAACAAEAAABfAC4AAAACAAEAAABfAC8AAAACAAEAAABfADAAAAACAAEAAABfADEAAAACAAEAAABfADIAAAACAAEAAABfADMAAAACAAEAAABfADQAAAACAAEAAABfADUAAAACAAEAAABfADYAAAACAAEAAABfADcAAAACAAEAAABfADgAAAACAAEAAABgACYAAAACAAEAAABgACcAAAACAAEAAABgACgAAAACAAEAAABgACkAAAACAAEAAABgACoAAAACAAEAAABgACsAAAACAAEAAABgACwAAAACAAEAAABgAC0AAAACAAEAAABgAC4AAAACAAEAAABgAC8AAAACAAEAAABgADAAAAACAAEAAABgADEAAAACAAEAAABgADIAAAACAAEAAABgADMAAAACAAEAAABgADQAAAACAAEAAABgADUAAAACAAEAAABgADYAAAACAAEAAABgADcAAAACAAEAAABgADgAAAACAAEAAABhACYAAAACAAEAAABhACcAAAACAAEAAABhACgAAAACAAEAAABhACkAAAACAAEAAABhACoAAAACAAEAAABhACsAAAACAAEAAABhACwAAAACAAEAAABhAC0AAAACAAEAAABhAC4AAAACAAEAAABhAC8AAAACAAEAAABhADAAAAACAAEAAABhADEAAAACAAEAAABhADIAAAACAAEAAABhADMAAAACAAEAAABhADQAAAACAAEAAABhADUAAAACAAEAAABhADYAAAACAAEAAABhADcAAAACAAEAAABhADgAAAACAAEAAABiACYAAAACAAEAAABiACcAAAACAAEAAABiACgAAAACAAEAAABiACkAAAACAAEAAABiACoAAAACAAEAAABiACsAAAACAAEAAABiACwAAAACAAEAAABiAC0AAAACAAEAAABiAC4AAAACAAEAAABiAC8AAAACAAEAAABiADAAAAACAAEAAABiADEAAAACAAEAAABiADIAAAACAAEAAABiADMAAAACAAEAAABiADQAAAACAAEAAABiADUAAAACAAEAAABiADYAAAACAAEAAABiADcAAAACAAEAAABiADgAAAACAAEAAABjACYAAAACAAEAAABjACcAAAACAAEAAABjACgAAAACAAEAAABjACkAAAACAAEAAABjACoAAAACAAEAAABjACsAAAACAAEAAABjACwAAAACAAEAAABjAC0AAAACAAEAAABjAC4AAAACAAEAAABjAC8AAAACAAEAAABjADAAAAACAAEAAABjADEAAAACAAEAAABjADIAAAACAAEAAABjADMAAAACAAEAAABjADQAAAACAAEAAABjADUAAAACAAEAAABjADYAAAACAAEAAABjADcAAAACAAEAAABjADgAAAACAAEAAABkACYAAAACAAEAAABkACcAAAACAAEAAABkACgAAAACAAEAAABkACkAAAACAAEAAABkACoAAAACAAEAAABkACsAAAACAAEAAABkACwAAAACAAEAAABkAC0AAAACAAEAAABkAC4AAAACAAEAAABkAC8AAAACAAEAAABkADAAAAACAAEAAABkADEAAAACAAEAAABkADIAAAACAAEAAABkADMAAAACAAEAAABkADQAAAACAAEAAABkADUAAAACAAEAAABkADYAAAACAAEAAABkADcAAAACAAEAAABkADgAAAACAAEAAABlACYAAAACAAEAAABlACcAAAACAAEAAABlACgAAAACAAEAAABlACkAAAACAAEAAABlACoAAAACAAEAAABlACsAAAACAAEAAABlACwAAAACAAEAAABlAC0AAAACAAEAAABlAC4AAAACAAEAAABlAC8AAAACAAEAAABlADAAAAACAAEAAABlADEAAAACAAEAAABlADIAAAACAAEAAABlADMAAAACAAEAAABlADQAAAACAAEAAABlADUAAAACAAEAAABlADYAAAACAAEAAABlADcAAAACAAEAAABlADgAAAACAAEAAABmACYAAAACAAEAAABmACcAAAACAAEAAABmACgAAAACAAEAAABmACkAAAACAAEAAABmACoAAAACAAEAAABmACsAAAACAAEAAABmACwAAAACAAEAAABmAC0AAAACAAEAAABmAC4AAAACAAEAAABmAC8AAAACAAEAAABmADAAAAACAAEAAABmADEAAAACAAEAAABmADIAAAACAAEAAABmADMAAAACAAEAAABmADQAAAACAAEAAABmADUAAAACAAEAAABmADYAAAACAAEAAABmADcAAAACAAEAAABmADgAAAACAAEAAABGAPL/AAACAAEAAABGAPP/AAACAAEAAABGAPT/AAACAAEAAABGAPX/AAACAAEAAABGAPb/AAACAAEAAABGAPf/AAACAAEAAABGAPj/AAACAAEAAABGAPn/AAACAAEAAABGAPr/AAACAAEAAABGAPv/AAACAAEAAABGAPz/AAACAAEAAABGAP3/AAACAAEAAABGAP7/AAACAAEAAABGAP//AAACAAEAAABHAPL/AAACAAEAAABHAPP/AAACAAEAAABHAPT/AAACAAEAAABHAPX/AAACAAEAAABHAPb/AAACAAEAAABHAPf/AAACAAEAAABHAPj/AAACAAEAAABHAPn/AAACAAEAAABHAPr/AAACAAEAAABHAPv/AAACAAEAAABHAPz/AAACAAEAAABHAP3/AAACAAEAAABHAP7/AAACAAEAAABHAP//AAACAAEAAABIAPL/AAACAAEAAABIAPP/AAACAAEAAABIAPT/AAACAAEAAABIAPX/AAACAAEAAABIAPb/AAACAAEAAABIAPf/AAACAAEAAABIAPj/AAACAAEAAABIAPn/AAACAAEAAABIAPr/AAACAAEAAABIAPv/AAACAAEAAABIAPz/AAACAAEAAABIAP3/AAACAAEAAABIAP7/AAACAAEAAABIAP//AAACAAEAAABIAAAAAAACAAEAAABIAAEAAAACAAEAAABIAAIAAAACAAEAAABIAAMAAAACAAEAAABIAAQAAAACAAEAAABIAAUAAAACAAEAAABIAAYAAAACAAEAAABIAAcAAAACAAEAAABIAAgAAAACAAEAAABIAAkAAAACAAEAAABIAAoAAAACAAEAAABIAAsAAAACAAEAAABIAAwAAAACAAEAAABIAA0AAAACAAEAAABIAA4AAAACAAEAAABIAA8AAAACAAEAAABIABAAAAACAAEAAABIABEAAAACAAEAAABIABIAAAACAAEAAABIABMAAAACAAEAAABIABQAAAACAAEAAABIABUAAAACAAEAAABIABYAAAACAAEAAABIABcAAAACAAEAAABIABgAAAACAAEAAABIABkAAAACAAEAAABIABoAAAACAAEAAABIABsAAAACAAEAAABIABwAAAACAAEAAABIAB0AAAACAAEAAABIAB4AAAACAAEAAABIAB8AAAACAAEAAABIACAAAAACAAEAAABIACEAAAACAAEAAABIACIAAAACAAEAAABIACMAAAACAAEAAABIACQAAAACAAEAAABIACUAAAACAAEAAABJAPL/AAACAAEAAABJAPP/AAACAAEAAABJAPT/AAACAAEAAABJAPX/AAACAAEAAABJAPb/AAACAAEAAABJAPf/AAACAAEAAABJAPj/AAACAAEAAABJAPn/AAACAAEAAABJAPr/AAACAAEAAABJAPv/AAACAAEAAABJAPz/AAACAAEAAABJAP3/AAACAAEAAABJAP7/AAACAAEAAABJAP//AAACAAEAAABJAAAAAAACAAEAAABJAAEAAAACAAEAAABJAAIAAAACAAEAAABJAAMAAAACAAEAAABJAAQAAAACAAEAAABJAAUAAAACAAEAAABJAAYAAAACAAEAAABJAAcAAAACAAEAAABJAAgAAAACAAEAAABJAAkAAAACAAEAAABJAAoAAAACAAEAAABJAAsAAAACAAEAAABJAAwAAAACAAEAAABJAA0AAAACAAEAAABJAA4AAAACAAEAAABJAA8AAAACAAEAAABJABAAAAACAAEAAABJABEAAAACAAEAAABJABIAAAACAAEAAABJABMAAAACAAEAAABJABQAAAACAAEAAABJABUAAAACAAEAAABJABYAAAACAAEAAABJABcAAAACAAEAAABJABgAAAACAAEAAABJABkAAAACAAEAAABJABoAAAACAAEAAABJABsAAAACAAEAAABJABwAAAACAAEAAABJAB0AAAACAAEAAABJAB4AAAACAAEAAABJAB8AAAACAAEAAABJACAAAAACAAEAAABJACEAAAACAAEAAABJACIAAAACAAEAAABJACMAAAACAAEAAABJACQAAAACAAEAAABJACUAAAACAAEAAABKAPL/AAACAAEAAABKAPP/AAACAAEAAABKAPT/AAACAAEAAABKAPX/AAACAAEAAABKAPb/AAACAAEAAABKAPf/AAACAAEAAABKAPj/AAACAAEAAABKAPn/AAACAAEAAABKAPr/AAACAAEAAABKAPv/AAACAAEAAABKAPz/AAACAAEAAABKAP3/AAACAAEAAABKAP7/AAACAAEAAABKAP//AAACAAEAAABKAAAAAAACAAEAAABKAAEAAAACAAEAAABKAAIAAAACAAEAAABKAAMAAAACAAEAAABKAAQAAAACAAEAAABKAAUAAAACAAEAAABKAAYAAAACAAEAAABKAAcAAAACAAEAAABKAAgAAAACAAEAAABKAAkAAAACAAEAAABKAAoAAAACAAEAAABKAAsAAAACAAEAAABKAAwAAAACAAEAAABKAA0AAAACAAEAAABKAA4AAAACAAEAAABKAA8AAAACAAEAAABKABAAAAACAAEAAABKABEAAAACAAEAAABKABIAAAACAAEAAABKABMAAAACAAEAAABKABQAAAACAAEAAABKABUAAAACAAEAAABKABYAAAACAAEAAABKABcAAAACAAEAAABKABgAAAACAAEAAABKABkAAAACAAEAAABKABoAAAACAAEAAABKABsAAAACAAEAAABKABwAAAACAAEAAABKAB0AAAACAAEAAABKAB4AAAACAAEAAABKAB8AAAACAAEAAABKACAAAAACAAEAAABKACEAAAACAAEAAABKACIAAAACAAEAAABKACMAAAACAAEAAABKACQAAAACAAEAAABKACUAAAACAAEAAABLAPL/AAACAAEAAABLAPP/AAACAAEAAABLAPT/AAACAAEAAABLAPX/AAACAAEAAABLAPb/AAACAAEAAABLAPf/AAACAAEAAABLAPj/AAACAAEAAABLAPn/AAACAAEAAABLAPr/AAACAAEAAABLAPv/AAACAAEAAABLAPz/AAACAAEAAABLAP3/AAACAAEAAABLAP7/AAACAAEAAABLAP//AAACAAEAAABLAAAAAAACAAEAAABLAAEAAAACAAEAAABLAAIAAAACAAEAAABLAAMAAAACAAEAAABLAAQAAAACAAEAAABLAAUAAAACAAEAAABLAAYAAAACAAEAAABLAAcAAAACAAEAAABLAAgAAAACAAEAAABLAAkAAAACAAEAAABLAAoAAAACAAEAAABLAAsAAAACAAEAAABLAAwAAAACAAEAAABLAA0AAAACAAEAAABLAA4AAAACAAEAAABLAA8AAAACAAEAAABLABAAAAACAAEAAABLABEAAAACAAEAAABLABIAAAACAAEAAABLABMAAAACAAEAAABLABQAAAACAAEAAABLABUAAAACAAEAAABLABYAAAACAAEAAABLABcAAAACAAEAAABLABgAAAACAAEAAABLABkAAAACAAEAAABLABoAAAACAAEAAABLABsAAAACAAEAAABLABwAAAACAAEAAABLAB0AAAACAAEAAABLAB4AAAACAAEAAABLAB8AAAACAAEAAABLACAAAAACAAEAAABLACEAAAACAAEAAABLACIAAAACAAEAAABLACMAAAACAAEAAABLACQAAAACAAEAAABLACUAAAACAAEAAABMAPL/AAACAAEAAABMAPP/AAACAAEAAABMAPT/AAACAAEAAABMAPX/AAACAAEAAABMAPb/AAACAAEAAABMAPf/AAACAAEAAABMAPj/AAACAAEAAABMAPn/AAACAAEAAABMAPr/AAACAAEAAABMAPv/AAACAAEAAABMAPz/AAACAAEAAABMAP3/AAACAAEAAABMAP7/AAACAAEAAABMAP//AAACAAEAAABMAAAAAAACAAEAAABMAAEAAAACAAEAAABMAAIAAAACAAEAAABMAAMAAAACAAEAAABMAAQAAAACAAEAAABMAAUAAAACAAEAAABMAAYAAAACAAEAAABMAAcAAAACAAEAAABMAAgAAAACAAEAAABMAAkAAAACAAEAAABMAAoAAAACAAEAAABMAAsAAAACAAEAAABMAAwAAAACAAEAAABMAA0AAAACAAEAAABMAA4AAAACAAEAAABMAA8AAAACAAEAAABMABAAAAACAAEAAABMABEAAAACAAEAAABMABIAAAACAAEAAABMABMAAAACAAEAAABMABQAAAACAAEAAABMABUAAAACAAEAAABMABYAAAACAAEAAABMABcAAAACAAEAAABMABgAAAACAAEAAABMABkAAAACAAEAAABMABoAAAACAAEAAABMABsAAAACAAEAAABMABwAAAACAAEAAABMAB0AAAACAAEAAABMAB4AAAACAAEAAABMAB8AAAACAAEAAABMACAAAAACAAEAAABMACEAAAACAAEAAABMACIAAAACAAEAAABMACMAAAACAAEAAABMACQAAAACAAEAAABMACUAAAACAAEAAABNAPL/AAACAAEAAABNAPP/AAACAAEAAABNAPT/AAACAAEAAABNAPX/AAACAAEAAABNAPb/AAACAAEAAABNAPf/AAACAAEAAABNAPj/AAACAAEAAABNAPn/AAACAAEAAABNAPr/AAACAAEAAABNAPv/AAACAAEAAABNAPz/AAACAAEAAABNAP3/AAACAAEAAABNAP7/AAACAAEAAABNAP//AAACAAEAAABNAAAAAAACAAEAAABNAAEAAAACAAEAAABNAAIAAAACAAEAAABNAAMAAAACAAEAAABNAAQAAAACAAEAAABNAAUAAAACAAEAAABNAAYAAAACAAEAAABNAAcAAAACAAEAAABNAAgAAAACAAEAAABNAAkAAAACAAEAAABNAAoAAAACAAEAAABNAAsAAAACAAEAAABNAAwAAAACAAEAAABNAA0AAAACAAEAAABNAA4AAAACAAEAAABNAA8AAAACAAEAAABNABAAAAACAAEAAABNABEAAAACAAEAAABNABIAAAACAAEAAABNABMAAAACAAEAAABNABQAAAACAAEAAABNABUAAAACAAEAAABNABYAAAACAAEAAABNABcAAAACAAEAAABNABgAAAACAAEAAABNABkAAAACAAEAAABNABoAAAACAAEAAABNABsAAAACAAEAAABNABwAAAACAAEAAABNAB0AAAACAAEAAABNAB4AAAACAAEAAABNAB8AAAACAAEAAABNACAAAAACAAEAAABNACEAAAACAAEAAABNACIAAAACAAEAAABNACMAAAACAAEAAABNACQAAAACAAEAAABNACUAAAACAAEAAABOAPL/AAACAAEAAABOAPP/AAACAAEAAABOAPT/AAACAAEAAABOAPX/AAACAAEAAABOAPb/AAACAAEAAABOAPf/AAACAAEAAABOAPj/AAACAAEAAABOAPn/AAACAAEAAABOAPr/AAACAAEAAABOAPv/AAACAAEAAABOAPz/AAACAAEAAABOAP3/AAACAAEAAABOAP7/AAACAAEAAABOAP//AAACAAEAAABOAAAAAAACAAEAAABOAAEAAAACAAEAAABOAAIAAAACAAEAAABOAAMAAAACAAEAAABOAAQAAAACAAEAAABOAAUAAAACAAEAAABOAAYAAAACAAEAAABOAAcAAAACAAEAAABOAAgAAAACAAEAAABOAAkAAAACAAEAAABOAAoAAAACAAEAAABOAAsAAAACAAEAAABOAAwAAAACAAEAAABOAA0AAAACAAEAAABOAA4AAAACAAEAAABOAA8AAAACAAEAAABOABAAAAACAAEAAABOABEAAAACAAEAAABOABIAAAACAAEAAABOABMAAAACAAEAAABOABQAAAACAAEAAABOABUAAAACAAEAAABOABYAAAACAAEAAABOABcAAAACAAEAAABOABgAAAACAAEAAABOABkAAAACAAEAAABOABoAAAACAAEAAABOABsAAAACAAEAAABOABwAAAACAAEAAABOAB0AAAACAAEAAABOAB4AAAACAAEAAABOAB8AAAACAAEAAABOACAAAAACAAEAAABOACEAAAACAAEAAABOACIAAAACAAEAAABOACMAAAACAAEAAABOACQAAAACAAEAAABOACUAAAACAAEAAABPAPL/AAACAAEAAABPAPP/AAACAAEAAABPAPT/AAACAAEAAABPAPX/AAACAAEAAABPAPb/AAACAAEAAABPAPf/AAACAAEAAABPAPj/AAACAAEAAABPAPn/AAACAAEAAABPAPr/AAACAAEAAABPAPv/AAACAAEAAABPAPz/AAACAAEAAABPAP3/AAACAAEAAABPAP7/AAACAAEAAABPAP//AAACAAEAAABPAAAAAAACAAEAAABPAAEAAAACAAEAAABPAAIAAAACAAEAAABPAAMAAAACAAEAAABPAAQAAAACAAEAAABPAAUAAAACAAEAAABPAAYAAAACAAEAAABPAAcAAAACAAEAAABPAAgAAAACAAEAAABPAAkAAAACAAEAAABPAAoAAAACAAEAAABPAAsAAAACAAEAAABPAAwAAAACAAEAAABPAA0AAAACAAEAAABPAA4AAAACAAEAAABPAA8AAAACAAEAAABPABAAAAACAAEAAABPABEAAAACAAEAAABPABIAAAACAAEAAABPABMAAAACAAEAAABPABQAAAACAAEAAABPABUAAAACAAEAAABPABYAAAACAAEAAABPABcAAAACAAEAAABPABgAAAACAAEAAABPABkAAAACAAEAAABPABoAAAACAAEAAABPABsAAAACAAEAAABPABwAAAACAAEAAABPAB0AAAACAAEAAABPAB4AAAACAAEAAABPAB8AAAACAAEAAABPACAAAAACAAEAAABPACEAAAACAAEAAABPACIAAAACAAEAAABPACMAAAACAAEAAABPACQAAAACAAEAAABPACUAAAACAAEAAABQAPL/AAACAAEAAABQAPP/AAACAAEAAABQAPT/AAACAAEAAABQAPX/AAACAAEAAABQAPb/AAACAAEAAABQAPf/AAACAAEAAABQAPj/AAACAAEAAABQAPn/AAACAAEAAABQAPr/AAACAAEAAABQAPv/AAACAAEAAABQAPz/AAACAAEAAABQAP3/AAACAAEAAABQAP7/AAACAAEAAABQAP//AAACAAEAAABQAAAAAAACAAEAAABQAAEAAAACAAEAAABQAAIAAAACAAEAAABQAAMAAAACAAEAAABQAAQAAAACAAEAAABQAAUAAAACAAEAAABQAAYAAAACAAEAAABQAAcAAAACAAEAAABQAAgAAAACAAEAAABQAAkAAAACAAEAAABQAAoAAAACAAEAAABQAAsAAAACAAEAAABQAAwAAAACAAEAAABQAA0AAAACAAEAAABQAA4AAAACAAEAAABQAA8AAAACAAEAAABQABAAAAACAAEAAABQABEAAAACAAEAAABQABIAAAACAAEAAABQABMAAAACAAEAAABQABQAAAACAAEAAABQABUAAAACAAEAAABQABYAAAACAAEAAABQABcAAAACAAEAAABQABgAAAACAAEAAABQABkAAAACAAEAAABQABoAAAACAAEAAABQABsAAAACAAEAAABQABwAAAACAAEAAABQAB0AAAACAAEAAABQAB4AAAACAAEAAABQAB8AAAACAAEAAABQACAAAAACAAEAAABQACEAAAACAAEAAABQACIAAAACAAEAAABQACMAAAACAAEAAABQACQAAAACAAEAAABQACUAAAACAAEAAABRAPL/AAACAAEAAABRAPP/AAACAAEAAABRAPT/AAACAAEAAABRAPX/AAACAAEAAABRAPb/AAACAAEAAABRAPf/AAACAAEAAABRAPj/AAACAAEAAABRAPn/AAACAAEAAABRAPr/AAACAAEAAABRAPv/AAACAAEAAABRAPz/AAACAAEAAABRAP3/AAACAAEAAABRAP7/AAACAAEAAABRAP//AAACAAEAAABRAAAAAAACAAEAAABRAAEAAAACAAEAAABRAAIAAAACAAEAAABRAAMAAAACAAEAAABRAAQAAAACAAEAAABRAAUAAAACAAEAAABRAAYAAAACAAEAAABRAAcAAAACAAEAAABRAAgAAAACAAEAAABRAAkAAAACAAEAAABRAAoAAAACAAEAAABRAAsAAAACAAEAAABRAAwAAAACAAEAAABRAA0AAAACAAEAAABRAA4AAAACAAEAAABRAA8AAAACAAEAAABRABAAAAACAAEAAABRABEAAAACAAEAAABRABIAAAACAAEAAABRABMAAAACAAEAAABRABQAAAACAAEAAABRABUAAAACAAEAAABRABYAAAACAAEAAABRABcAAAACAAEAAABRABgAAAACAAEAAABRABkAAAACAAEAAABRABoAAAACAAEAAABRABsAAAACAAEAAABRABwAAAACAAEAAABRAB0AAAACAAEAAABRAB4AAAACAAEAAABRAB8AAAACAAEAAABRACAAAAACAAEAAABRACEAAAACAAEAAABRACIAAAACAAEAAABRACMAAAACAAEAAABRACQAAAACAAEAAABRACUAAAACAAEAAABSAPL/AAACAAEAAABSAPP/AAACAAEAAABSAPT/AAACAAEAAABSAPX/AAACAAEAAABSAPb/AAACAAEAAABSAPf/AAACAAEAAABSAPj/AAACAAEAAABSAPn/AAACAAEAAABSAPr/AAACAAEAAABSAPv/AAACAAEAAABSAPz/AAACAAEAAABSAP3/AAACAAEAAABSAP7/AAACAAEAAABSAP//AAACAAEAAABSAAAAAAACAAEAAABSAAEAAAACAAEAAABSAAIAAAACAAEAAABSAAMAAAACAAEAAABSAAQAAAACAAEAAABSAAUAAAACAAEAAABSAAYAAAACAAEAAABSAAcAAAACAAEAAABSAAgAAAACAAEAAABSAAkAAAACAAEAAABSAAoAAAACAAEAAABSAAsAAAACAAEAAABSAAwAAAACAAEAAABSAA0AAAACAAEAAABSAA4AAAACAAEAAABSAA8AAAACAAEAAABSABAAAAACAAEAAABSABEAAAACAAEAAABSABIAAAACAAEAAABSABMAAAACAAEAAABSABQAAAACAAEAAABSABUAAAACAAEAAABSABYAAAACAAEAAABSABcAAAACAAEAAABSABgAAAACAAEAAABSABkAAAACAAEAAABSABoAAAACAAEAAABSABsAAAACAAEAAABSABwAAAACAAEAAABSAB0AAAACAAEAAABSAB4AAAACAAEAAABSAB8AAAACAAEAAABSACAAAAACAAEAAABSACEAAAACAAEAAABSACIAAAACAAEAAABSACMAAAACAAEAAABSACQAAAACAAEAAABSACUAAAACAAEAAABTAPL/AAACAAEAAABTAPP/AAACAAEAAABTAPT/AAACAAEAAABTAPX/AAACAAEAAABTAPb/AAACAAEAAABTAPf/AAACAAEAAABTAPj/AAACAAEAAABTAPn/AAACAAEAAABTAPr/AAACAAEAAABTAPv/AAACAAEAAABTAPz/AAACAAEAAABTAP3/AAACAAEAAABTAP7/AAACAAEAAABTAP//AAACAAEAAABTAAAAAAACAAEAAABTAAEAAAACAAEAAABTAAIAAAACAAEAAABTAAMAAAACAAEAAABTAAQAAAACAAEAAABTAAUAAAACAAEAAABTAAYAAAACAAEAAABTAAcAAAACAAEAAABTAAgAAAACAAEAAABTAAkAAAACAAEAAABTAAoAAAACAAEAAABTAAsAAAACAAEAAABTAAwAAAACAAEAAABTAA0AAAACAAEAAABTAA4AAAACAAEAAABTAA8AAAACAAEAAABTABAAAAACAAEAAABTABEAAAACAAEAAABTABIAAAACAAEAAABTABMAAAACAAEAAABTABQAAAACAAEAAABTABUAAAACAAEAAABTABYAAAACAAEAAABTABcAAAACAAEAAABTABgAAAACAAEAAABTABkAAAACAAEAAABTABoAAAACAAEAAABTABsAAAACAAEAAABTABwAAAACAAEAAABTAB0AAAACAAEAAABTAB4AAAACAAEAAABTAB8AAAACAAEAAABTACAAAAACAAEAAABTACEAAAACAAEAAABTACIAAAACAAEAAABTACMAAAACAAEAAABTACQAAAACAAEAAABTACUAAAACAAEAAABUAPL/AAACAAEAAABUAPP/AAACAAEAAABUAPT/AAACAAEAAABUAPX/AAACAAEAAABUAPb/AAACAAEAAABUAPf/AAACAAEAAABUAPj/AAACAAEAAABUAPn/AAACAAEAAABUAPr/AAACAAEAAABUAPv/AAACAAEAAABUAPz/AAACAAEAAABUAP3/AAACAAEAAABUAP7/AAACAAEAAABUAP//AAACAAEAAABUAAAAAAACAAEAAABUAAEAAAACAAEAAABUAAIAAAACAAEAAABUAAMAAAACAAEAAABUAAQAAAACAAEAAABUAAUAAAACAAEAAABUAAYAAAACAAEAAABUAAcAAAACAAEAAABUAAgAAAACAAEAAABUAAkAAAACAAEAAABUAAoAAAACAAEAAABUAAsAAAACAAEAAABUAAwAAAACAAEAAABUAA0AAAACAAEAAABUAA4AAAACAAEAAABUAA8AAAACAAEAAABUABAAAAACAAEAAABUABEAAAACAAEAAABUABIAAAACAAEAAABUABMAAAACAAEAAABUABQAAAACAAEAAABUABUAAAACAAEAAABUABYAAAACAAEAAABUABcAAAACAAEAAABUABgAAAACAAEAAABUABkAAAACAAEAAABUABoAAAACAAEAAABUABsAAAACAAEAAABUABwAAAACAAEAAABUAB0AAAACAAEAAABUAB4AAAACAAEAAABUAB8AAAACAAEAAABUACAAAAACAAEAAABUACEAAAACAAEAAABUACIAAAACAAEAAABUACMAAAACAAEAAABUACQAAAACAAEAAABUACUAAAACAAEAAABVAPL/AAACAAEAAABVAPP/AAACAAEAAABVAPT/AAACAAEAAABVAPX/AAACAAEAAABVAPb/AAACAAEAAABVAPf/AAACAAEAAABVAPj/AAACAAEAAABVAPn/AAACAAEAAABVAPr/AAACAAEAAABVAPv/AAACAAEAAABVAPz/AAACAAEAAABVAP3/AAACAAEAAABVAP7/AAACAAEAAABVAP//AAACAAEAAABVAAAAAAACAAEAAABVAAEAAAACAAEAAABVAAIAAAACAAEAAABVAAMAAAACAAEAAABVAAQAAAACAAEAAABVAAUAAAACAAEAAABVAAYAAAACAAEAAABVAAcAAAACAAEAAABVAAgAAAACAAEAAABVAAkAAAACAAEAAABVAAoAAAACAAEAAABVAAsAAAACAAEAAABVAAwAAAACAAEAAABVAA0AAAACAAEAAABVAA4AAAACAAEAAABVAA8AAAACAAEAAABVABAAAAACAAEAAABVABEAAAACAAEAAABVABIAAAACAAEAAABVABMAAAACAAEAAABVABQAAAACAAEAAABVABUAAAACAAEAAABVABYAAAACAAEAAABVABcAAAACAAEAAABVABgAAAACAAEAAABVABkAAAACAAEAAABVABoAAAACAAEAAABVABsAAAACAAEAAABVABwAAAACAAEAAABVAB0AAAACAAEAAABVAB4AAAACAAEAAABVAB8AAAACAAEAAABVACAAAAACAAEAAABVACEAAAACAAEAAABVACIAAAACAAEAAABVACMAAAACAAEAAABVACQAAAACAAEAAABVACUAAAACAAEAAABWAPL/AAACAAEAAABWAPP/AAACAAEAAABWAPT/AAACAAEAAABWAPX/AAACAAEAAABWAPb/AAACAAEAAABWAPf/AAACAAEAAABWAPj/AAACAAEAAABWAPn/AAACAAEAAABWAPr/AAACAAEAAABWAPv/AAACAAEAAABWAPz/AAACAAEAAABWAP3/AAACAAEAAABWAP7/AAACAAEAAABWAP//AAACAAEAAABWAAAAAAACAAEAAABWAAEAAAACAAEAAABWAAIAAAACAAEAAABWAAMAAAACAAEAAABWAAQAAAACAAEAAABWAAUAAAACAAEAAABWAAYAAAACAAEAAABWAAcAAAACAAEAAABWAAgAAAACAAEAAABWAAkAAAACAAEAAABWAAoAAAACAAEAAABWAAsAAAACAAEAAABWAAwAAAACAAEAAABWAA0AAAACAAEAAABWAA4AAAACAAEAAABWAA8AAAACAAEAAABWABAAAAACAAEAAABWABEAAAACAAEAAABWABIAAAACAAEAAABWABMAAAACAAEAAABWABQAAAACAAEAAABWABUAAAACAAEAAABWABYAAAACAAEAAABWABcAAAACAAEAAABWABgAAAACAAEAAABWABkAAAACAAEAAABWABoAAAACAAEAAABWABsAAAACAAEAAABWABwAAAACAAEAAABWAB0AAAACAAEAAABWAB4AAAACAAEAAABWAB8AAAACAAEAAABWACAAAAACAAEAAABWACEAAAACAAEAAABWACIAAAACAAEAAABWACMAAAACAAEAAABWACQAAAACAAEAAABWACUAAAACAAEAAABXAPL/AAACAAEAAABXAPP/AAACAAEAAABXAPT/AAACAAEAAABXAPX/AAACAAEAAABXAPb/AAACAAEAAABXAPf/AAACAAEAAABXAPj/AAACAAEAAABXAPn/AAACAAEAAABXAPr/AAACAAEAAABXAPv/AAACAAEAAABXAPz/AAACAAEAAABXAP3/AAACAAEAAABXAP7/AAACAAEAAABXAP//AAACAAEAAABXAAAAAAACAAEAAABXAAEAAAACAAEAAABXAAIAAAACAAEAAABXAAMAAAACAAEAAABXAAQAAAACAAEAAABXAAUAAAACAAEAAABXAAYAAAACAAEAAABXAAcAAAACAAEAAABXAAgAAAACAAEAAABXAAkAAAACAAEAAABXAAoAAAACAAEAAABXAAsAAAACAAEAAABXAAwAAAACAAEAAABXAA0AAAACAAEAAABXAA4AAAACAAEAAABXAA8AAAACAAEAAABXABAAAAACAAEAAABXABEAAAACAAEAAABXABIAAAACAAEAAABXABMAAAACAAEAAABXABQAAAACAAEAAABXABUAAAACAAEAAABXABYAAAACAAEAAABXABcAAAACAAEAAABXABgAAAACAAEAAABXABkAAAACAAEAAABXABoAAAACAAEAAABXABsAAAACAAEAAABXABwAAAACAAEAAABXAB0AAAACAAEAAABXAB4AAAACAAEAAABXAB8AAAACAAEAAABXACAAAAACAAEAAABXACEAAAACAAEAAABXACIAAAACAAEAAABXACMAAAACAAEAAABXACQAAAACAAEAAABXACUAAAACAAEAAABYAPL/AAACAAEAAABYAPP/AAACAAEAAABYAPT/AAACAAEAAABYAPX/AAACAAEAAABYAPb/AAACAAEAAABYAPf/AAACAAEAAABYAPj/AAACAAEAAABYAPn/AAACAAEAAABYAPr/AAACAAEAAABYAPv/AAACAAEAAABYAPz/AAACAAEAAABYAP3/AAACAAEAAABYAP7/AAACAAEAAABYAP//AAACAAEAAABYAAAAAAACAAEAAABYAAEAAAACAAEAAABYAAIAAAACAAEAAABYAAMAAAACAAEAAABYAAQAAAACAAEAAABYAAUAAAACAAEAAABYAAYAAAACAAEAAABYAAcAAAACAAEAAABYAAgAAAACAAEAAABYAAkAAAACAAEAAABYAAoAAAACAAEAAABYAAsAAAACAAEAAABYAAwAAAACAAEAAABYAA0AAAACAAEAAABYAA4AAAACAAEAAABYAA8AAAACAAEAAABYABAAAAACAAEAAABYABEAAAACAAEAAABYABIAAAACAAEAAABYABMAAAACAAEAAABYABQAAAACAAEAAABYABUAAAACAAEAAABYABYAAAACAAEAAABYABcAAAACAAEAAABYABgAAAACAAEAAABYABkAAAACAAEAAABYABoAAAACAAEAAABYABsAAAACAAEAAABYABwAAAACAAEAAABYAB0AAAACAAEAAABYAB4AAAACAAEAAABYAB8AAAACAAEAAABYACAAAAACAAEAAABYACEAAAACAAEAAABYACIAAAACAAEAAABYACMAAAACAAEAAABYACQAAAACAAEAAABYACUAAAACAAEAAABZAPL/AAACAAEAAABZAPP/AAACAAEAAABZAPT/AAACAAEAAABZAPX/AAACAAEAAABZAPb/AAACAAEAAABZAPf/AAACAAEAAABZAPj/AAACAAEAAABZAPn/AAACAAEAAABZAPr/AAACAAEAAABZAPv/AAACAAEAAABZAPz/AAACAAEAAABZAP3/AAACAAEAAABZAP7/AAACAAEAAABZAP//AAACAAEAAABZAAAAAAACAAEAAABZAAEAAAACAAEAAABZAAIAAAACAAEAAABZAAMAAAACAAEAAABZAAQAAAACAAEAAABZAAUAAAACAAEAAABZAAYAAAACAAEAAABZAAcAAAACAAEAAABZAAgAAAACAAEAAABZAAkAAAACAAEAAABZAAoAAAACAAEAAABZAAsAAAACAAEAAABZAAwAAAACAAEAAABZAA0AAAACAAEAAABZAA4AAAACAAEAAABZAA8AAAACAAEAAABZABAAAAACAAEAAABZABEAAAACAAEAAABZABIAAAACAAEAAABZABMAAAACAAEAAABZABQAAAACAAEAAABZABUAAAACAAEAAABZABYAAAACAAEAAABZABcAAAACAAEAAABZABgAAAACAAEAAABZABkAAAACAAEAAABZABoAAAACAAEAAABZABsAAAACAAEAAABZABwAAAACAAEAAABZAB0AAAACAAEAAABZAB4AAAACAAEAAABZAB8AAAACAAEAAABZACAAAAACAAEAAABZACEAAAACAAEAAABZACIAAAACAAEAAABZACMAAAACAAEAAABZACQAAAACAAEAAABZACUAAAACAAEAAABaAPL/AAACAAEAAABaAPP/AAACAAEAAABaAPT/AAACAAEAAABaAPX/AAACAAEAAABaAPb/AAACAAEAAABaAPf/AAACAAEAAABaAPj/AAACAAEAAABaAPn/AAACAAEAAABaAPr/AAACAAEAAABaAPv/AAACAAEAAABaAPz/AAACAAEAAABaAP3/AAACAAEAAABaAP7/AAACAAEAAABaAP//AAACAAEAAABaAAAAAAACAAEAAABaAAEAAAACAAEAAABaAAIAAAACAAEAAABaAAMAAAACAAEAAABaAAQAAAACAAEAAABaAAUAAAACAAEAAABaAAYAAAACAAEAAABaAAcAAAACAAEAAABaAAgAAAACAAEAAABaAAkAAAACAAEAAABaAAoAAAACAAEAAABaAAsAAAACAAEAAABaAAwAAAACAAEAAABaAA0AAAACAAEAAABaAA4AAAACAAEAAABaAA8AAAACAAEAAABaABAAAAACAAEAAABaABEAAAACAAEAAABaABIAAAACAAEAAABaABMAAAACAAEAAABaABQAAAACAAEAAABaABUAAAACAAEAAABaABYAAAACAAEAAABaABcAAAACAAEAAABaABgAAAACAAEAAABaABkAAAACAAEAAABaABoAAAACAAEAAABaABsAAAACAAEAAABaABwAAAACAAEAAABaAB0AAAACAAEAAABaAB4AAAACAAEAAABaAB8AAAACAAEAAABaACAAAAACAAEAAABaACEAAAACAAEAAABaACIAAAACAAEAAABaACMAAAACAAEAAABaACQAAAACAAEAAABaACUAAAACAAEAAABbAPL/AAACAAEAAABbAPP/AAACAAEAAABbAPT/AAACAAEAAABbAPX/AAACAAEAAABbAPb/AAACAAEAAABbAPf/AAACAAEAAABbAPj/AAACAAEAAABbAPn/AAACAAEAAABbAPr/AAACAAEAAABbAPv/AAACAAEAAABbAPz/AAACAAEAAABbAP3/AAACAAEAAABbAP7/AAACAAEAAABbAP//AAACAAEAAABbAAAAAAACAAEAAABbAAEAAAACAAEAAABbAAIAAAACAAEAAABbAAMAAAACAAEAAABbAAQAAAACAAEAAABbAAUAAAACAAEAAABbAAYAAAACAAEAAABbAAcAAAACAAEAAABbAAgAAAACAAEAAABbAAkAAAACAAEAAABbAAoAAAACAAEAAABbAAsAAAACAAEAAABbAAwAAAACAAEAAABbAA0AAAACAAEAAABbAA4AAAACAAEAAABbAA8AAAACAAEAAABbABAAAAACAAEAAABbABEAAAACAAEAAABbABIAAAACAAEAAABbABMAAAACAAEAAABbABQAAAACAAEAAABbABUAAAACAAEAAABbABYAAAACAAEAAABbABcAAAACAAEAAABbABgAAAACAAEAAABbABkAAAACAAEAAABbABoAAAACAAEAAABbABsAAAACAAEAAABbABwAAAACAAEAAABbAB0AAAACAAEAAABbAB4AAAACAAEAAABbAB8AAAACAAEAAABbACAAAAACAAEAAABbACEAAAACAAEAAABbACIAAAACAAEAAABbACMAAAACAAEAAABbACQAAAACAAEAAABbACUAAAACAAEAAABcAPL/AAACAAEAAABcAPP/AAACAAEAAABcAPT/AAACAAEAAABcAPX/AAACAAEAAABcAPb/AAACAAEAAABcAPf/AAACAAEAAABcAPj/AAACAAEAAABcAPn/AAACAAEAAABcAPr/AAACAAEAAABcAPv/AAACAAEAAABcAPz/AAACAAEAAABcAP3/AAACAAEAAABcAP7/AAACAAEAAABcAP//AAACAAEAAABcAAAAAAACAAEAAABcAAEAAAACAAEAAABcAAIAAAACAAEAAABcAAMAAAACAAEAAABcAAQAAAACAAEAAABcAAUAAAACAAEAAABcAAYAAAACAAEAAABcAAcAAAACAAEAAABcAAgAAAACAAEAAABcAAkAAAACAAEAAABcAAoAAAACAAEAAABcAAsAAAACAAEAAABcAAwAAAACAAEAAABcAA0AAAACAAEAAABcAA4AAAACAAEAAABcAA8AAAACAAEAAABcABAAAAACAAEAAABcABEAAAACAAEAAABcABIAAAACAAEAAABcABMAAAACAAEAAABcABQAAAACAAEAAABcABUAAAACAAEAAABcABYAAAACAAEAAABcABcAAAACAAEAAABcABgAAAACAAEAAABcABkAAAACAAEAAABcABoAAAACAAEAAABcABsAAAACAAEAAABcABwAAAACAAEAAABcAB0AAAACAAEAAABcAB4AAAACAAEAAABcAB8AAAACAAEAAABcACAAAAACAAEAAABcACEAAAACAAEAAABcACIAAAACAAEAAABcACMAAAACAAEAAABcACQAAAACAAEAAABcACUAAAACAAEAAABdAPL/AAACAAEAAABdAPP/AAACAAEAAABdAPT/AAACAAEAAABdAPX/AAACAAEAAABdAPb/AAACAAEAAABdAPf/AAACAAEAAABdAPj/AAACAAEAAABdAPn/AAACAAEAAABdAPr/AAACAAEAAABdAPv/AAACAAEAAABdAPz/AAACAAEAAABdAP3/AAACAAEAAABdAP7/AAACAAEAAABdAP//AAACAAEAAABdAAAAAAACAAEAAABdAAEAAAACAAEAAABdAAIAAAACAAEAAABdAAMAAAACAAEAAABdAAQAAAACAAEAAABdAAUAAAACAAEAAABdAAYAAAACAAEAAABdAAcAAAACAAEAAABdAAgAAAACAAEAAABdAAkAAAACAAEAAABdAAoAAAACAAEAAABdAAsAAAACAAEAAABdAAwAAAACAAEAAABdAA0AAAACAAEAAABdAA4AAAACAAEAAABdAA8AAAACAAEAAABdABAAAAACAAEAAABdABEAAAACAAEAAABdABIAAAACAAEAAABdABMAAAACAAEAAABdABQAAAACAAEAAABdABUAAAACAAEAAABdABYAAAACAAEAAABdABcAAAACAAEAAABdABgAAAACAAEAAABdABkAAAACAAEAAABdABoAAAACAAEAAABdABsAAAACAAEAAABdABwAAAACAAEAAABdAB0AAAACAAEAAABdAB4AAAACAAEAAABdAB8AAAACAAEAAABdACAAAAACAAEAAABdACEAAAACAAEAAABdACIAAAACAAEAAABdACMAAAACAAEAAABdACQAAAACAAEAAABdACUAAAACAAEAAABeAPL/AAACAAEAAABeAPP/AAACAAEAAABeAPT/AAACAAEAAABeAPX/AAACAAEAAABeAPb/AAACAAEAAABeAPf/AAACAAEAAABeAPj/AAACAAEAAABeAPn/AAACAAEAAABeAPr/AAACAAEAAABeAPv/AAACAAEAAABeAPz/AAACAAEAAABeAP3/AAACAAEAAABeAP7/AAACAAEAAABeAP//AAACAAEAAABeAAAAAAACAAEAAABeAAEAAAACAAEAAABeAAIAAAACAAEAAABeAAMAAAACAAEAAABeAAQAAAACAAEAAABeAAUAAAACAAEAAABeAAYAAAACAAEAAABeAAcAAAACAAEAAABeAAgAAAACAAEAAABeAAkAAAACAAEAAABeAAoAAAACAAEAAABeAAsAAAACAAEAAABeAAwAAAACAAEAAABeAA0AAAACAAEAAABeAA4AAAACAAEAAABeAA8AAAACAAEAAABeABAAAAACAAEAAABeABEAAAACAAEAAABeABIAAAACAAEAAABeABMAAAACAAEAAABeABQAAAACAAEAAABeABUAAAACAAEAAABeABYAAAACAAEAAABeABcAAAACAAEAAABeABgAAAACAAEAAABeABkAAAACAAEAAABeABoAAAACAAEAAABeABsAAAACAAEAAABeABwAAAACAAEAAABeAB0AAAACAAEAAABeAB4AAAACAAEAAABeAB8AAAACAAEAAABeACAAAAACAAEAAABeACEAAAACAAEAAABeACIAAAACAAEAAABeACMAAAACAAEAAABeACQAAAACAAEAAABeACUAAAACAAEAAABfAPL/AAACAAEAAABfAPP/AAACAAEAAABfAPT/AAACAAEAAABfAPX/AAACAAEAAABfAPb/AAACAAEAAABfAPf/AAACAAEAAABfAPj/AAACAAEAAABfAPn/AAACAAEAAABfAPr/AAACAAEAAABfAPv/AAACAAEAAABfAPz/AAACAAEAAABfAP3/AAACAAEAAABfAP7/AAACAAEAAABfAP//AAACAAEAAABfAAAAAAACAAEAAABfAAEAAAACAAEAAABfAAIAAAACAAEAAABfAAMAAAACAAEAAABfAAQAAAACAAEAAABfAAUAAAACAAEAAABfAAYAAAACAAEAAABfAAcAAAACAAEAAABfAAgAAAACAAEAAABfAAkAAAACAAEAAABfAAoAAAACAAEAAABfAAsAAAACAAEAAABfAAwAAAACAAEAAABfAA0AAAACAAEAAABfAA4AAAACAAEAAABfAA8AAAACAAEAAABfABAAAAACAAEAAABfABEAAAACAAEAAABfABIAAAACAAEAAABfABMAAAACAAEAAABfABQAAAACAAEAAABfABUAAAACAAEAAABfABYAAAACAAEAAABfABcAAAACAAEAAABfABgAAAACAAEAAABfABkAAAACAAEAAABfABoAAAACAAEAAABfABsAAAACAAEAAABfABwAAAACAAEAAABfAB0AAAACAAEAAABfAB4AAAACAAEAAABfAB8AAAACAAEAAABfACAAAAACAAEAAABfACEAAAACAAEAAABfACIAAAACAAEAAABfACMAAAACAAEAAABfACQAAAACAAEAAABfACUAAAACAAEAAABgAPL/AAACAAEAAABgAPP/AAACAAEAAABgAPT/AAACAAEAAABgAPX/AAACAAEAAABgAPb/AAACAAEAAABgAPf/AAACAAEAAABgAPj/AAACAAEAAABgAPn/AAACAAEAAABgAPr/AAACAAEAAABgAPv/AAACAAEAAABgAPz/AAACAAEAAABgAP3/AAACAAEAAABgAP7/AAACAAEAAABgAP//AAACAAEAAABgAAAAAAACAAEAAABgAAEAAAACAAEAAABgAAIAAAACAAEAAABgAAMAAAACAAEAAABgAAQAAAACAAEAAABgAAUAAAACAAEAAABgAAYAAAACAAEAAABgAAcAAAACAAEAAABgAAgAAAACAAEAAABgAAkAAAACAAEAAABgAAoAAAACAAEAAABgAAsAAAACAAEAAABgAAwAAAACAAEAAABgAA0AAAACAAEAAABgAA4AAAACAAEAAABgAA8AAAACAAEAAABgABAAAAACAAEAAABgABEAAAACAAEAAABgABIAAAACAAEAAABgABMAAAACAAEAAABgABQAAAACAAEAAABgABUAAAACAAEAAABgABYAAAACAAEAAABgABcAAAACAAEAAABgABgAAAACAAEAAABgABkAAAACAAEAAABgABoAAAACAAEAAABgABsAAAACAAEAAABgABwAAAACAAEAAABgAB0AAAACAAEAAABgAB4AAAACAAEAAABgAB8AAAACAAEAAABgACAAAAACAAEAAABgACEAAAACAAEAAABgACIAAAACAAEAAABgACMAAAACAAEAAABgACQAAAACAAEAAABgACUAAAACAAEAAABhAPL/AAACAAEAAABhAPP/AAACAAEAAABhAPT/AAACAAEAAABhAPX/AAACAAEAAABhAPb/AAACAAEAAABhAPf/AAACAAEAAABhAPj/AAACAAEAAABhAPn/AAACAAEAAABhAPr/AAACAAEAAABhAPv/AAACAAEAAABhAPz/AAACAAEAAABhAP3/AAACAAEAAABhAP7/AAACAAEAAABhAP//AAACAAEAAABhAAAAAAACAAEAAABhAAEAAAACAAEAAABhAAIAAAACAAEAAABhAAMAAAACAAEAAABhAAQAAAACAAEAAABhAAUAAAACAAEAAABhAAYAAAACAAEAAABhAAcAAAACAAEAAABhAAgAAAACAAEAAABhAAkAAAACAAEAAABhAAoAAAACAAEAAABhAAsAAAACAAEAAABhAAwAAAACAAEAAABhAA0AAAACAAEAAABhAA4AAAACAAEAAABhAA8AAAACAAEAAABhABAAAAACAAEAAABhABEAAAACAAEAAABhABIAAAACAAEAAABhABMAAAACAAEAAABhABQAAAACAAEAAABhABUAAAACAAEAAABhABYAAAACAAEAAABhABcAAAACAAEAAABhABgAAAACAAEAAABhABkAAAACAAEAAABhABoAAAACAAEAAABhABsAAAACAAEAAABhABwAAAACAAEAAABhAB0AAAACAAEAAABhAB4AAAACAAEAAABhAB8AAAACAAEAAABhACAAAAACAAEAAABhACEAAAACAAEAAABhACIAAAACAAEAAABhACMAAAACAAEAAABhACQAAAACAAEAAABhACUAAAACAAEAAABiAPL/AAACAAEAAABiAPP/AAACAAEAAABiAPT/AAACAAEAAABiAPX/AAACAAEAAABiAPb/AAACAAEAAABiAPf/AAACAAEAAABiAPj/AAACAAEAAABiAPn/AAACAAEAAABiAPr/AAACAAEAAABiAPv/AAACAAEAAABiAPz/AAACAAEAAABiAP3/AAACAAEAAABiAP7/AAACAAEAAABiAP//AAACAAEAAABiAAAAAAACAAEAAABiAAEAAAACAAEAAABiAAIAAAACAAEAAABiAAMAAAACAAEAAABiAAQAAAACAAEAAABiAAUAAAACAAEAAABiAAYAAAACAAEAAABiAAcAAAACAAEAAABiAAgAAAACAAEAAABiAAkAAAACAAEAAABiAAoAAAACAAEAAABiAAsAAAACAAEAAABiAAwAAAACAAEAAABiAA0AAAACAAEAAABiAA4AAAACAAEAAABiAA8AAAACAAEAAABiABAAAAACAAEAAABiABEAAAACAAEAAABiABIAAAACAAEAAABiABMAAAACAAEAAABiABQAAAACAAEAAABiABUAAAACAAEAAABiABYAAAACAAEAAABiABcAAAACAAEAAABiABgAAAACAAEAAABiABkAAAACAAEAAABiABoAAAACAAEAAABiABsAAAACAAEAAABiABwAAAACAAEAAABiAB0AAAACAAEAAABiAB4AAAACAAEAAABiAB8AAAACAAEAAABiACAAAAACAAEAAABiACEAAAACAAEAAABiACIAAAACAAEAAABiACMAAAACAAEAAABiACQAAAACAAEAAABiACUAAAACAAEAAABjAPL/AAACAAEAAABjAPP/AAACAAEAAABjAPT/AAACAAEAAABjAPX/AAACAAEAAABjAPb/AAACAAEAAABjAPf/AAACAAEAAABjAPj/AAACAAEAAABjAPn/AAACAAEAAABjAPr/AAACAAEAAABjAPv/AAACAAEAAABjAPz/AAACAAEAAABjAP3/AAACAAEAAABjAP7/AAACAAEAAABjAP//AAACAAEAAABjAAAAAAACAAEAAABjAAEAAAACAAEAAABjAAIAAAACAAEAAABjAAMAAAACAAEAAABjAAQAAAACAAEAAABjAAUAAAACAAEAAABjAAYAAAACAAEAAABjAAcAAAACAAEAAABjAAgAAAACAAEAAABjAAkAAAACAAEAAABjAAoAAAACAAEAAABjAAsAAAACAAEAAABjAAwAAAACAAEAAABjAA0AAAACAAEAAABjAA4AAAACAAEAAABjAA8AAAACAAEAAABjABAAAAACAAEAAABjABEAAAACAAEAAABjABIAAAACAAEAAABjABMAAAACAAEAAABjABQAAAACAAEAAABjABUAAAACAAEAAABjABYAAAACAAEAAABjABcAAAACAAEAAABjABgAAAACAAEAAABjABkAAAACAAEAAABjABoAAAACAAEAAABjABsAAAACAAEAAABjABwAAAACAAEAAABjAB0AAAACAAEAAABjAB4AAAACAAEAAABjAB8AAAACAAEAAABjACAAAAACAAEAAABjACEAAAACAAEAAABjACIAAAACAAEAAABjACMAAAACAAEAAABjACQAAAACAAEAAABjACUAAAACAAEAAABkAPL/AAACAAEAAABkAPP/AAACAAEAAABkAPT/AAACAAEAAABkAPX/AAACAAEAAABkAPb/AAACAAEAAABkAPf/AAACAAEAAABkAPj/AAACAAEAAABkAPn/AAACAAEAAABkAPr/AAACAAEAAABkAPv/AAACAAEAAABkAPz/AAACAAEAAABkAP3/AAACAAEAAABkAP7/AAACAAEAAABkAP//AAACAAEAAABkAAAAAAACAAEAAABkAAEAAAACAAEAAABkAAIAAAACAAEAAABkAAMAAAACAAEAAABkAAQAAAACAAEAAABkAAUAAAACAAEAAABkAAYAAAACAAEAAABkAAcAAAACAAEAAABkAAgAAAACAAEAAABkAAkAAAACAAEAAABkAAoAAAACAAEAAABkAAsAAAACAAEAAABkAAwAAAACAAEAAABkAA0AAAACAAEAAABkAA4AAAACAAEAAABkAA8AAAACAAEAAABkABAAAAACAAEAAABkABEAAAACAAEAAABkABIAAAACAAEAAABkABMAAAACAAEAAABkABQAAAACAAEAAABkABUAAAACAAEAAABkABYAAAACAAEAAABkABcAAAACAAEAAABkABgAAAACAAEAAABkABkAAAACAAEAAABkABoAAAACAAEAAABkABsAAAACAAEAAABkABwAAAACAAEAAABkAB0AAAACAAEAAABkAB4AAAACAAEAAABkAB8AAAACAAEAAABkACAAAAACAAEAAABkACEAAAACAAEAAABkACIAAAACAAEAAABkACMAAAACAAEAAABkACQAAAACAAEAAABkACUAAAACAAEAAABlAPL/AAACAAEAAABlAPP/AAACAAEAAABlAPT/AAACAAEAAABlAPX/AAACAAEAAABlAPb/AAACAAEAAABlAPf/AAACAAEAAABlAPj/AAACAAEAAABlAPn/AAACAAEAAABlAPr/AAACAAEAAABlAPv/AAACAAEAAABlAPz/AAACAAEAAABlAP3/AAACAAEAAABlAP7/AAACAAEAAABlAP//AAACAAEAAABlAAAAAAACAAEAAABlAAEAAAACAAEAAABlAAIAAAACAAEAAABlAAMAAAACAAEAAABlAAQAAAACAAEAAABlAAUAAAACAAEAAABlAAYAAAACAAEAAABlAAcAAAACAAEAAABlAAgAAAACAAEAAABlAAkAAAACAAEAAABlAAoAAAACAAEAAABlAAsAAAACAAEAAABlAAwAAAACAAEAAABlAA0AAAACAAEAAABlAA4AAAACAAEAAABlAA8AAAACAAEAAABlABAAAAACAAEAAABlABEAAAACAAEAAABlABIAAAACAAEAAABlABMAAAACAAEAAABlABQAAAACAAEAAABlABUAAAACAAEAAABlABYAAAACAAEAAABlABcAAAACAAEAAABlABgAAAACAAEAAABlABkAAAACAAEAAABlABoAAAACAAEAAABlABsAAAACAAEAAABlABwAAAACAAEAAABlAB0AAAACAAEAAABlAB4AAAACAAEAAABlAB8AAAACAAEAAABlACAAAAACAAEAAABlACEAAAACAAEAAABlACIAAAACAAEAAABlACMAAAACAAEAAABlACQAAAACAAEAAABlACUAAAACAAEAAABmAPL/AAACAAEAAABmAPP/AAACAAEAAABmAPT/AAACAAEAAABmAPX/AAACAAEAAABmAPb/AAACAAEAAABmAPf/AAACAAEAAABmAPj/AAACAAEAAABmAPn/AAACAAEAAABmAPr/AAACAAEAAABmAPv/AAACAAEAAABmAPz/AAACAAEAAABmAP3/AAACAAEAAABmAP7/AAACAAEAAABmAP//AAACAAEAAABmAAAAAAACAAEAAABmAAEAAAACAAEAAABmAAIAAAACAAEAAABmAAMAAAACAAEAAABmAAQAAAACAAEAAABmAAUAAAACAAEAAABmAAYAAAACAAEAAABmAAcAAAACAAEAAABmAAgAAAACAAEAAABmAAkAAAACAAEAAABmAAoAAAACAAEAAABmAAsAAAACAAEAAABmAAwAAAACAAEAAABmAA0AAAACAAEAAABmAA4AAAACAAEAAABmAA8AAAACAAEAAABmABAAAAACAAEAAABmABEAAAACAAEAAABmABIAAAACAAEAAABmABMAAAACAAEAAABmABQAAAACAAEAAABmABUAAAACAAEAAABmABYAAAACAAEAAABmABcAAAACAAEAAABmABgAAAACAAEAAABmABkAAAACAAEAAABmABoAAAACAAEAAABmABsAAAACAAEAAABmABwAAAACAAEAAABmAB0AAAACAAEAAABmAB4AAAACAAEAAABmAB8AAAACAAEAAABmACAAAAACAAEAAABmACEAAAACAAEAAABmACIAAAACAAEAAABmACMAAAACAAEAAABmACQAAAACAAEAAABmACUAAAACAAEAAADl//L/AAACAAEAAADl//P/AAACAAEAAADm//L/AAACAAEAAADm//P/AAACAAEAAADn//L/AAACAAEAAADn//P/AAACAAEAAADo//L/AAACAAEAAADo//P/AAACAAEAAADp//L/AAACAAEAAADp//P/AAACAAEAAADq//L/AAACAAEAAADq//P/AAACAAEAAADr//L/AAACAAEAAADr//P/AAACAAEAAADs//L/AAACAAEAAADs//P/AAACAAEAAADt//L/AAACAAEAAADt//P/AAACAAEAAADu//L/AAACAAEAAADu//P/AAACAAEAAADv//L/AAACAAEAAADv//P/AAACAAEAAADw//L/AAACAAEAAADw//P/AAACAAEAAADx//L/AAACAAEAAADx//P/AAACAAEAAADy//L/AAACAAEAAADy//P/AAACAAEAAADz//L/AAACAAEAAADz//P/AAACAAEAAAD0//L/AAACAAEAAAD0//P/AAACAAEAAAD1//L/AAACAAEAAAD1//P/AAACAAEAAAD2//L/AAACAAEAAAD2//P/AAACAAEAAAD3//L/AAACAAEAAAD3//P/AAACAAEAAAD4//L/AAACAAEAAAD4//P/AAACAAEAAAD5//L/AAACAAEAAAD5//P/AAACAAEAAAD6//L/AAACAAEAAAD6//P/AAACAAEAAAD7//L/AAACAAEAAAD7//P/AAACAAEAAAD8//L/AAACAAEAAAD8//P/AAACAAEAAAD9//L/AAACAAEAAAD9//P/AAACAAEAAAD+//L/AAACAAEAAAD+//P/AAACAAEAAAD///L/AAACAAEAAAD///P/AAACAAEAAAAAAPL/AAACAAEAAAAAAPP/AAACAAEAAAABAPL/AAACAAEAAAABAPP/AAACAAEAAAACAPL/AAACAAEAAAACAPP/AAACAAEAAAADAPL/AAACAAEAAAADAPP/AAACAAEAAAAEAPL/AAACAAEAAAAEAPP/AAACAAEAAAAFAPL/AAACAAEAAAAFAPP/AAACAAEAAAAGAPL/AAACAAEAAAAGAPP/AAACAAEAAAAHAPL/AAACAAEAAAAHAPP/AAACAAEAAAAIAPL/AAACAAEAAAAIAPP/AAACAAEAAAAIAPT/AAACAAEAAAAIAPX/AAACAAEAAAAIAPb/AAACAAEAAAAIAPf/AAACAAEAAAAIAPj/AAACAAEAAAAIAPn/AAACAAEAAAAIAPr/AAACAAEAAAAIAPv/AAACAAEAAAAIAPz/AAACAAEAAAAIAP3/AAACAAEAAAAIAP7/AAACAAEAAAAIAP//AAACAAEAAAAJAPL/AAACAAEAAAAJAPP/AAACAAEAAAAJAPT/AAACAAEAAAAJAPX/AAACAAEAAAAJAPb/AAACAAEAAAAJAPf/AAACAAEAAAAJAPj/AAACAAEAAAAJAPn/AAACAAEAAAAJAPr/AAACAAEAAAAJAPv/AAACAAEAAAAJAPz/AAACAAEAAAAJAP3/AAACAAEAAAAJAP7/AAACAAEAAAAJAP//AAACAAEAAAAKAPL/AAACAAEAAAAKAPP/AAACAAEAAAAKAPT/AAACAAEAAAAKAPX/AAACAAEAAAAKAPb/AAACAAEAAAAKAPf/AAACAAEAAAAKAPj/AAACAAEAAAAKAPn/AAACAAEAAAAKAPr/AAACAAEAAAAKAPv/AAACAAEAAAAKAPz/AAACAAEAAAAKAP3/AAACAAEAAAAKAP7/AAACAAEAAAAKAP//AAACAAEAAAALAPL/AAACAAEAAAALAPP/AAACAAEAAAALAPT/AAACAAEAAAALAPX/AAACAAEAAAALAPb/AAACAAEAAAALAPf/AAACAAEAAAALAPj/AAACAAEAAAALAPn/AAACAAEAAAALAPr/AAACAAEAAAALAPv/AAACAAEAAAALAPz/AAACAAEAAAALAP3/AAACAAEAAAALAP7/AAACAAEAAAALAP//AAACAAEAAAAMAPL/AAACAAEAAAAMAPP/AAACAAEAAAAMAPT/AAACAAEAAAAMAPX/AAACAAEAAAAMAPb/AAACAAEAAAAMAPf/AAACAAEAAAAMAPj/AAACAAEAAAAMAPn/AAACAAEAAAAMAPr/AAACAAEAAAAMAPv/AAACAAEAAAAMAPz/AAACAAEAAAAMAP3/AAACAAEAAAAMAP7/AAACAAEAAAAMAP//AAACAAEAAAANAPL/AAACAAEAAAANAPP/AAACAAEAAAANAPT/AAACAAEAAAANAPX/AAACAAEAAAANAPb/AAACAAEAAAANAPf/AAACAAEAAAANAPj/AAACAAEAAAANAPn/AAACAAEAAAANAPr/AAACAAEAAAANAPv/AAACAAEAAAANAPz/AAACAAEAAAANAP3/AAACAAEAAAANAP7/AAACAAEAAAANAP//AAACAAEAAAAOAPL/AAACAAEAAAAOAPP/AAACAAEAAAAOAPT/AAACAAEAAAAOAPX/AAACAAEAAAAOAPb/AAACAAEAAAAOAPf/AAACAAEAAAAOAPj/AAACAAEAAAAOAPn/AAACAAEAAAAOAPr/AAACAAEAAAAOAPv/AAACAAEAAAAOAPz/AAACAAEAAAAOAP3/AAACAAEAAAAOAP7/AAACAAEAAAAOAP//AAACAAEAAAAPAPL/AAACAAEAAAAPAPP/AAACAAEAAAAPAPT/AAACAAEAAAAPAPX/AAACAAEAAAAPAPb/AAACAAEAAAAPAPf/AAACAAEAAAAPAPj/AAACAAEAAAAPAPn/AAACAAEAAAAPAPr/AAACAAEAAAAPAPv/AAACAAEAAAAPAPz/AAACAAEAAAAPAP3/AAACAAEAAAAPAP7/AAACAAEAAAAPAP//AAACAAEAAAAQAPL/AAACAAEAAAAQAPP/AAACAAEAAAAQAPT/AAACAAEAAAAQAPX/AAACAAEAAAAQAPb/AAACAAEAAAAQAPf/AAACAAEAAAAQAPj/AAACAAEAAAAQAPn/AAACAAEAAAAQAPr/AAACAAEAAAAQAPv/AAACAAEAAAAQAPz/AAACAAEAAAAQAP3/AAACAAEAAAAQAP7/AAACAAEAAAAQAP//AAACAAEAAAARAPL/AAACAAEAAAARAPP/AAACAAEAAAARAPT/AAACAAEAAAARAPX/AAACAAEAAAARAPb/AAACAAEAAAARAPf/AAACAAEAAAARAPj/AAACAAEAAAARAPn/AAACAAEAAAARAPr/AAACAAEAAAARAPv/AAACAAEAAAARAPz/AAACAAEAAAARAP3/AAACAAEAAAARAP7/AAACAAEAAAARAP//AAACAAEAAAASAPL/AAACAAEAAAASAPP/AAACAAEAAAASAPT/AAACAAEAAAASAPX/AAACAAEAAAASAPb/AAACAAEAAAASAPf/AAACAAEAAAASAPj/AAACAAEAAAASAPn/AAACAAEAAAASAPr/AAACAAEAAAASAPv/AAACAAEAAAASAPz/AAACAAEAAAASAP3/AAACAAEAAAASAP7/AAACAAEAAAASAP//AAACAAEAAAATAPL/AAACAAEAAAATAPP/AAACAAEAAAATAPT/AAACAAEAAAATAPX/AAACAAEAAAATAPb/AAACAAEAAAATAPf/AAACAAEAAAATAPj/AAACAAEAAAATAPn/AAACAAEAAAATAPr/AAACAAEAAAATAPv/AAACAAEAAAATAPz/AAACAAEAAAATAP3/AAACAAEAAAATAP7/AAACAAEAAAATAP//AAACAAEAAAAUAPL/AAACAAEAAAAUAPP/AAACAAEAAAAUAPT/AAACAAEAAAAUAPX/AAACAAEAAAAUAPb/AAACAAEAAAAUAPf/AAACAAEAAAAUAPj/AAACAAEAAAAUAPn/AAACAAEAAAAUAPr/AAACAAEAAAAUAPv/AAACAAEAAAAUAPz/AAACAAEAAAAUAP3/AAACAAEAAAAUAP7/AAACAAEAAAAUAP//AAACAAEAAAAVAPL/AAACAAEAAAAVAPP/AAACAAEAAAAVAPT/AAACAAEAAAAVAPX/AAACAAEAAAAVAPb/AAACAAEAAAAVAPf/AAACAAEAAAAVAPj/AAACAAEAAAAVAPn/AAACAAEAAAAVAPr/AAACAAEAAAAVAPv/AAACAAEAAAAVAPz/AAACAAEAAAAVAP3/AAACAAEAAAAVAP7/AAACAAEAAAAVAP//AAACAAEAAAAWAPL/AAACAAEAAAAWAPP/AAACAAEAAAAWAPT/AAACAAEAAAAWAPX/AAACAAEAAAAWAPb/AAACAAEAAAAWAPf/AAACAAEAAAAWAPj/AAACAAEAAAAWAPn/AAACAAEAAAAWAPr/AAACAAEAAAAWAPv/AAACAAEAAAAWAPz/AAACAAEAAAAWAP3/AAACAAEAAAAWAP7/AAACAAEAAAAWAP//AAACAAEAAAAXAPL/AAACAAEAAAAXAPP/AAACAAEAAAAXAPT/AAACAAEAAAAXAPX/AAACAAEAAAAXAPb/AAACAAEAAAAXAPf/AAACAAEAAAAXAPj/AAACAAEAAAAXAPn/AAACAAEAAAAXAPr/AAACAAEAAAAXAPv/AAACAAEAAAAXAPz/AAACAAEAAAAXAP3/AAACAAEAAAAXAP7/AAACAAEAAAAXAP//AAACAAEAAAAYAPL/AAACAAEAAAAYAPP/AAACAAEAAAAYAPT/AAACAAEAAAAYAPX/AAACAAEAAAAYAPb/AAACAAEAAAAYAPf/AAACAAEAAAAYAPj/AAACAAEAAAAYAPn/AAACAAEAAAAYAPr/AAACAAEAAAAYAPv/AAACAAEAAAAYAPz/AAACAAEAAAAYAP3/AAACAAEAAAAYAP7/AAACAAEAAAAYAP//AAACAAEAAAAZAPL/AAACAAEAAAAZAPP/AAACAAEAAAAZAPT/AAACAAEAAAAZAPX/AAACAAEAAAAZAPb/AAACAAEAAAAZAPf/AAACAAEAAAAZAPj/AAACAAEAAAAZAPn/AAACAAEAAAAZAPr/AAACAAEAAAAZAPv/AAACAAEAAAAZAPz/AAACAAEAAAAZAP3/AAACAAEAAAAZAP7/AAACAAEAAAAZAP//AAACAAEAAAAaAPL/AAACAAEAAAAaAPP/AAACAAEAAAAaAPT/AAACAAEAAAAaAPX/AAACAAEAAAAaAPb/AAACAAEAAAAaAPf/AAACAAEAAAAaAPj/AAACAAEAAAAaAPn/AAACAAEAAAAaAPr/AAACAAEAAAAaAPv/AAACAAEAAAAaAPz/AAACAAEAAAAaAP3/AAACAAEAAAAaAP7/AAACAAEAAAAaAP//AAACAAEAAAAbAPL/AAACAAEAAAAbAPP/AAACAAEAAAAbAPT/AAACAAEAAAAbAPX/AAACAAEAAAAbAPb/AAACAAEAAAAbAPf/AAACAAEAAAAbAPj/AAACAAEAAAAbAPn/AAACAAEAAAAbAPr/AAACAAEAAAAbAPv/AAACAAEAAAAbAPz/AAACAAEAAAAbAP3/AAACAAEAAAAbAP7/AAACAAEAAAAbAP//AAACAAEAAAAcAPL/AAACAAEAAAAcAPP/AAACAAEAAAAcAPT/AAACAAEAAAAcAPX/AAACAAEAAAAcAPb/AAACAAEAAAAcAPf/AAACAAEAAAAcAPj/AAACAAEAAAAcAPn/AAACAAEAAAAcAPr/AAACAAEAAAAcAPv/AAACAAEAAAAcAPz/AAACAAEAAAAcAP3/AAACAAEAAAAcAP7/AAACAAEAAAAcAP//AAACAAEAAAAdAPL/AAACAAEAAAAdAPP/AAACAAEAAAAdAPT/AAACAAEAAAAdAPX/AAACAAEAAAAdAPb/AAACAAEAAAAdAPf/AAACAAEAAAAdAPj/AAACAAEAAAAdAPn/AAACAAEAAAAdAPr/AAACAAEAAAAdAPv/AAACAAEAAAAdAPz/AAACAAEAAAAdAP3/AAACAAEAAAAdAP7/AAACAAEAAAAdAP//AAACAAEAAAAeAPL/AAACAAEAAAAeAPP/AAACAAEAAAAeAPT/AAACAAEAAAAeAPX/AAACAAEAAAAeAPb/AAACAAEAAAAeAPf/AAACAAEAAAAeAPj/AAACAAEAAAAeAPn/AAACAAEAAAAeAPr/AAACAAEAAAAeAPv/AAACAAEAAAAeAPz/AAACAAEAAAAeAP3/AAACAAEAAAAeAP7/AAACAAEAAAAeAP//AAACAAEAAAAfAPL/AAACAAEAAAAfAPP/AAACAAEAAAAfAPT/AAACAAEAAAAfAPX/AAACAAEAAAAfAPb/AAACAAEAAAAfAPf/AAACAAEAAAAfAPj/AAACAAEAAAAfAPn/AAACAAEAAAAfAPr/AAACAAEAAAAfAPv/AAACAAEAAAAfAPz/AAACAAEAAAAfAP3/AAACAAEAAAAfAP7/AAACAAEAAAAfAP//AAACAAEAAAAgAPL/AAACAAEAAAAgAPP/AAACAAEAAAAgAPT/AAACAAEAAAAgAPX/AAACAAEAAAAgAPb/AAACAAEAAAAgAPf/AAACAAEAAAAgAPj/AAACAAEAAAAgAPn/AAACAAEAAAAgAPr/AAACAAEAAAAgAPv/AAACAAEAAAAgAPz/AAACAAEAAAAgAP3/AAACAAEAAAAgAP7/AAACAAEAAAAgAP//AAACAAEAAAAhAPL/AAACAAEAAAAhAPP/AAACAAEAAAAhAPT/AAACAAEAAAAhAPX/AAACAAEAAAAhAPb/AAACAAEAAAAhAPf/AAACAAEAAAAhAPj/AAACAAEAAAAhAPn/AAACAAEAAAAhAPr/AAACAAEAAAAhAPv/AAACAAEAAAAhAPz/AAACAAEAAAAhAP3/AAACAAEAAAAhAP7/AAACAAEAAAAhAP//AAACAAEAAAAiAPL/AAACAAEAAAAiAPP/AAACAAEAAAAiAPT/AAACAAEAAAAiAPX/AAACAAEAAAAiAPb/AAACAAEAAAAiAPf/AAACAAEAAAAiAPj/AAACAAEAAAAiAPn/AAACAAEAAAAiAPr/AAACAAEAAAAiAPv/AAACAAEAAAAiAPz/AAACAAEAAAAiAP3/AAACAAEAAAAiAP7/AAACAAEAAAAiAP//AAACAAEAAAAjAPL/AAACAAEAAAAjAPP/AAACAAEAAAAjAPT/AAACAAEAAAAjAPX/AAACAAEAAAAjAPb/AAACAAEAAAAjAPf/AAACAAEAAAAjAPj/AAACAAEAAAAjAPn/AAACAAEAAAAjAPr/AAACAAEAAAAjAPv/AAACAAEAAAAjAPz/AAACAAEAAAAjAP3/AAACAAEAAAAjAP7/AAACAAEAAAAjAP//AAACAAEAAAAkAPL/AAACAAEAAAAkAPP/AAACAAEAAAAkAPT/AAACAAEAAAAkAPX/AAACAAEAAAAkAPb/AAACAAEAAAAkAPf/AAACAAEAAAAkAPj/AAACAAEAAAAkAPn/AAACAAEAAAAkAPr/AAACAAEAAAAkAPv/AAACAAEAAAAkAPz/AAACAAEAAAAkAP3/AAACAAEAAAAkAP7/AAACAAEAAAAkAP//AAACAAEAAAAlAPL/AAACAAEAAAAlAPP/AAACAAEAAAAlAPT/AAACAAEAAAAlAPX/AAACAAEAAAAlAPb/AAACAAEAAAAlAPf/AAACAAEAAAAlAPj/AAACAAEAAAAlAPn/AAACAAEAAAAlAPr/AAACAAEAAAAlAPv/AAACAAEAAAAlAPz/AAACAAEAAAAlAP3/AAACAAEAAAAlAP7/AAACAAEAAAAlAP//AAACAAEAAAAmAPL/AAACAAEAAAAmAPP/AAACAAEAAAAmAPT/AAACAAEAAAAmAPX/AAACAAEAAAAmAPb/AAACAAEAAAAmAPf/AAACAAEAAAAmAPj/AAACAAEAAAAmAPn/AAACAAEAAAAmAPr/AAACAAEAAAAmAPv/AAACAAEAAAAmAPz/AAACAAEAAAAmAP3/AAACAAEAAAAmAP7/AAACAAEAAAAmAP//AAACAAEAAAAnAPL/AAACAAEAAAAnAPP/AAACAAEAAAAnAPT/AAACAAEAAAAnAPX/AAACAAEAAAAnAPb/AAACAAEAAAAnAPf/AAACAAEAAAAnAPj/AAACAAEAAAAnAPn/AAACAAEAAAAnAPr/AAACAAEAAAAnAPv/AAACAAEAAAAnAPz/AAACAAEAAAAnAP3/AAACAAEAAAAnAP7/AAACAAEAAAAnAP//AAACAAEAAAAoAPL/AAACAAEAAAAoAPP/AAACAAEAAAAoAPT/AAACAAEAAAAoAPX/AAACAAEAAAAoAPb/AAACAAEAAAAoAPf/AAACAAEAAAAoAPj/AAACAAEAAAAoAPn/AAACAAEAAAAoAPr/AAACAAEAAAAoAPv/AAACAAEAAAAoAPz/AAACAAEAAAAoAP3/AAACAAEAAAAoAP7/AAACAAEAAAAoAP//AAACAAEAAAApAPL/AAACAAEAAAApAPP/AAACAAEAAAApAPT/AAACAAEAAAApAPX/AAACAAEAAAApAPb/AAACAAEAAAApAPf/AAACAAEAAAApAPj/AAACAAEAAAApAPn/AAACAAEAAAApAPr/AAACAAEAAAApAPv/AAACAAEAAAApAPz/AAACAAEAAAApAP3/AAACAAEAAAApAP7/AAACAAEAAAApAP//AAACAAEAAAAqAPL/AAACAAEAAAAqAPP/AAACAAEAAAAqAPT/AAACAAEAAAAqAPX/AAACAAEAAAAqAPb/AAACAAEAAAAqAPf/AAACAAEAAAAqAPj/AAACAAEAAAAqAPn/AAACAAEAAAAqAPr/AAACAAEAAAAqAPv/AAACAAEAAAAqAPz/AAACAAEAAAAqAP3/AAACAAEAAAAqAP7/AAACAAEAAAAqAP//AAACAAEAAAArAPL/AAACAAEAAAArAPP/AAACAAEAAAArAPT/AAACAAEAAAArAPX/AAACAAEAAAArAPb/AAACAAEAAAArAPf/AAACAAEAAAArAPj/AAACAAEAAAArAPn/AAACAAEAAAArAPr/AAACAAEAAAArAPv/AAACAAEAAAArAPz/AAACAAEAAAArAP3/AAACAAEAAAArAP7/AAACAAEAAAArAP//AAACAAEAAAAsAPL/AAACAAEAAAAsAPP/AAACAAEAAAAsAPT/AAACAAEAAAAsAPX/AAACAAEAAAAsAPb/AAACAAEAAAAsAPf/AAACAAEAAAAsAPj/AAACAAEAAAAsAPn/AAACAAEAAAAsAPr/AAACAAEAAAAsAPv/AAACAAEAAAAsAPz/AAACAAEAAAAsAP3/AAACAAEAAAAsAP7/AAACAAEAAAAsAP//AAACAAEAAAAtAPL/AAACAAEAAAAtAPP/AAACAAEAAAAtAPT/AAACAAEAAAAtAPX/AAACAAEAAAAtAPb/AAACAAEAAAAtAPf/AAACAAEAAAAtAPj/AAACAAEAAAAtAPn/AAACAAEAAAAtAPr/AAACAAEAAAAtAPv/AAACAAEAAAAtAPz/AAACAAEAAAAtAP3/AAACAAEAAAAtAP7/AAACAAEAAAAtAP//AAACAAEAAAAuAPL/AAACAAEAAAAuAPP/AAACAAEAAAAuAPT/AAACAAEAAAAuAPX/AAACAAEAAAAuAPb/AAACAAEAAAAuAPf/AAACAAEAAAAuAPj/AAACAAEAAAAuAPn/AAACAAEAAAAuAPr/AAACAAEAAAAuAPv/AAACAAEAAAAuAPz/AAACAAEAAAAuAP3/AAACAAEAAAAuAP7/AAACAAEAAAAuAP//AAACAAEAAAAvAPL/AAACAAEAAAAvAPP/AAACAAEAAAAvAPT/AAACAAEAAAAvAPX/AAACAAEAAAAvAPb/AAACAAEAAAAvAPf/AAACAAEAAAAvAPj/AAACAAEAAAAvAPn/AAACAAEAAAAvAPr/AAACAAEAAAAvAPv/AAACAAEAAAAvAPz/AAACAAEAAAAvAP3/AAACAAEAAAAvAP7/AAACAAEAAAAvAP//AAACAAEAAAAwAPL/AAACAAEAAAAwAPP/AAACAAEAAAAwAPT/AAACAAEAAAAwAPX/AAACAAEAAAAwAPb/AAACAAEAAAAwAPf/AAACAAEAAAAwAPj/AAACAAEAAAAwAPn/AAACAAEAAAAwAPr/AAACAAEAAAAwAPv/AAACAAEAAAAwAPz/AAACAAEAAAAwAP3/AAACAAEAAAAwAP7/AAACAAEAAAAwAP//AAACAAEAAAAxAPL/AAACAAEAAAAxAPP/AAACAAEAAAAxAPT/AAACAAEAAAAxAPX/AAACAAEAAAAxAPb/AAACAAEAAAAxAPf/AAACAAEAAAAxAPj/AAACAAEAAAAxAPn/AAACAAEAAAAxAPr/AAACAAEAAAAxAPv/AAACAAEAAAAxAPz/AAACAAEAAAAxAP3/AAACAAEAAAAxAP7/AAACAAEAAAAxAP//AAACAAEAAAAyAPL/AAACAAEAAAAyAPP/AAACAAEAAAAyAPT/AAACAAEAAAAyAPX/AAACAAEAAAAyAPb/AAACAAEAAAAyAPf/AAACAAEAAAAyAPj/AAACAAEAAAAyAPn/AAACAAEAAAAyAPr/AAACAAEAAAAyAPv/AAACAAEAAAAyAPz/AAACAAEAAAAyAP3/AAACAAEAAAAyAP7/AAACAAEAAAAyAP//AAACAAEAAAAzAPL/AAACAAEAAAAzAPP/AAACAAEAAAAzAPT/AAACAAEAAAAzAPX/AAACAAEAAAAzAPb/AAACAAEAAAAzAPf/AAACAAEAAAAzAPj/AAACAAEAAAAzAPn/AAACAAEAAAAzAPr/AAACAAEAAAAzAPv/AAACAAEAAAAzAPz/AAACAAEAAAAzAP3/AAACAAEAAAAzAP7/AAACAAEAAAAzAP//AAACAAEAAAA0APL/AAACAAEAAAA0APP/AAACAAEAAAA0APT/AAACAAEAAAA0APX/AAACAAEAAAA0APb/AAACAAEAAAA0APf/AAACAAEAAAA0APj/AAACAAEAAAA0APn/AAACAAEAAAA0APr/AAACAAEAAAA0APv/AAACAAEAAAA0APz/AAACAAEAAAA0AP3/AAACAAEAAAA0AP7/AAACAAEAAAA0AP//AAACAAEAAAA1APL/AAACAAEAAAA1APP/AAACAAEAAAA1APT/AAACAAEAAAA1APX/AAACAAEAAAA1APb/AAACAAEAAAA1APf/AAACAAEAAAA1APj/AAACAAEAAAA1APn/AAACAAEAAAA1APr/AAACAAEAAAA1APv/AAACAAEAAAA1APz/AAACAAEAAAA1AP3/AAACAAEAAAA1AP7/AAACAAEAAAA1AP//AAACAAEAAAA2APL/AAACAAEAAAA2APP/AAACAAEAAAA2APT/AAACAAEAAAA2APX/AAACAAEAAAA2APb/AAACAAEAAAA2APf/AAACAAEAAAA2APj/AAACAAEAAAA2APn/AAACAAEAAAA2APr/AAACAAEAAAA2APv/AAACAAEAAAA2APz/AAACAAEAAAA2AP3/AAACAAEAAAA2AP7/AAACAAEAAAA2AP//AAACAAEAAAA3APL/AAACAAEAAAA3APP/AAACAAEAAAA3APT/AAACAAEAAAA3APX/AAACAAEAAAA3APb/AAACAAEAAAA3APf/AAACAAEAAAA3APj/AAACAAEAAAA3APn/AAACAAEAAAA3APr/AAACAAEAAAA3APv/AAACAAEAAAA3APz/AAACAAEAAAA3AP3/AAACAAEAAAA3AP7/AAACAAEAAAA3AP//AAACAAEAAAA4APL/AAACAAEAAAA4APP/AAACAAEAAAA4APT/AAACAAEAAAA4APX/AAACAAEAAAA4APb/AAACAAEAAAA4APf/AAACAAEAAAA4APj/AAACAAEAAAA4APn/AAACAAEAAAA4APr/AAACAAEAAAA4APv/AAACAAEAAAA4APz/AAACAAEAAAA4AP3/AAACAAEAAAA4AP7/AAACAAEAAAA4AP//AAACAAEAAAA5APL/AAACAAEAAAA5APP/AAACAAEAAAA5APT/AAACAAEAAAA5APX/AAACAAEAAAA5APb/AAACAAEAAAA5APf/AAACAAEAAAA5APj/AAACAAEAAAA5APn/AAACAAEAAAA5APr/AAACAAEAAAA5APv/AAACAAEAAAA5APz/AAACAAEAAAA5AP3/AAACAAEAAAA5AP7/AAACAAEAAAA5AP//AAACAAEAAAA6APL/AAACAAEAAAA6APP/AAACAAEAAAA6APT/AAACAAEAAAA6APX/AAACAAEAAAA6APb/AAACAAEAAAA6APf/AAACAAEAAAA6APj/AAACAAEAAAA6APn/AAACAAEAAAA6APr/AAACAAEAAAA6APv/AAACAAEAAAA6APz/AAACAAEAAAA6AP3/AAACAAEAAAA6AP7/AAACAAEAAAA6AP//AAACAAEAAAA7APL/AAACAAEAAAA7APP/AAACAAEAAAA7APT/AAACAAEAAAA7APX/AAACAAEAAAA7APb/AAACAAEAAAA7APf/AAACAAEAAAA7APj/AAACAAEAAAA7APn/AAACAAEAAAA7APr/AAACAAEAAAA7APv/AAACAAEAAAA7APz/AAACAAEAAAA7AP3/AAACAAEAAAA7AP7/AAACAAEAAAA7AP//AAACAAEAAAA8APL/AAACAAEAAAA8APP/AAACAAEAAAA8APT/AAACAAEAAAA8APX/AAACAAEAAAA8APb/AAACAAEAAAA8APf/AAACAAEAAAA8APj/AAACAAEAAAA8APn/AAACAAEAAAA8APr/AAACAAEAAAA8APv/AAACAAEAAAA8APz/AAACAAEAAAA8AP3/AAACAAEAAAA8AP7/AAACAAEAAAA8AP//AAACAAEAAAA9APL/AAACAAEAAAA9APP/AAACAAEAAAA9APT/AAACAAEAAAA9APX/AAACAAEAAAA9APb/AAACAAEAAAA9APf/AAACAAEAAAA9APj/AAACAAEAAAA9APn/AAACAAEAAAA9APr/AAACAAEAAAA9APv/AAACAAEAAAA9APz/AAACAAEAAAA9AP3/AAACAAEAAAA9AP7/AAACAAEAAAA9AP//AAACAAEAAAA+APL/AAACAAEAAAA+APP/AAACAAEAAAA+APT/AAACAAEAAAA+APX/AAACAAEAAAA+APb/AAACAAEAAAA+APf/AAACAAEAAAA+APj/AAACAAEAAAA+APn/AAACAAEAAAA+APr/AAACAAEAAAA+APv/AAACAAEAAAA+APz/AAACAAEAAAA+AP3/AAACAAEAAAA+AP7/AAACAAEAAAA+AP//AAACAAEAAAA/APL/AAACAAEAAAA/APP/AAACAAEAAAA/APT/AAACAAEAAAA/APX/AAACAAEAAAA/APb/AAACAAEAAAA/APf/AAACAAEAAAA/APj/AAACAAEAAAA/APn/AAACAAEAAAA/APr/AAACAAEAAAA/APv/AAACAAEAAAA/APz/AAACAAEAAAA/AP3/AAACAAEAAAA/AP7/AAACAAEAAAA/AP//AAACAAEAAABAAPL/AAACAAEAAABAAPP/AAACAAEAAABAAPT/AAACAAEAAABAAPX/AAACAAEAAABAAPb/AAACAAEAAABAAPf/AAACAAEAAABAAPj/AAACAAEAAABAAPn/AAACAAEAAABAAPr/AAACAAEAAABAAPv/AAACAAEAAABAAPz/AAACAAEAAABAAP3/AAACAAEAAABAAP7/AAACAAEAAABAAP//AAACAAEAAABBAPL/AAACAAEAAABBAPP/AAACAAEAAABBAPT/AAACAAEAAABBAPX/AAACAAEAAABBAPb/AAACAAEAAABBAPf/AAACAAEAAABBAPj/AAACAAEAAABBAPn/AAACAAEAAABBAPr/AAACAAEAAABBAPv/AAACAAEAAABBAPz/AAACAAEAAABBAP3/AAACAAEAAABBAP7/AAACAAEAAABBAP//AAACAAEAAABCAPL/AAACAAEAAABCAPP/AAACAAEAAABCAPT/AAACAAEAAABCAPX/AAACAAEAAABCAPb/AAACAAEAAABCAPf/AAACAAEAAABCAPj/AAACAAEAAABCAPn/AAACAAEAAABCAPr/AAACAAEAAABCAPv/AAACAAEAAABCAPz/AAACAAEAAABCAP3/AAACAAEAAABCAP7/AAACAAEAAABCAP//AAACAAEAAABDAPL/AAACAAEAAABDAPP/AAACAAEAAABDAPT/AAACAAEAAABDAPX/AAACAAEAAABDAPb/AAACAAEAAABDAPf/AAACAAEAAABDAPj/AAACAAEAAABDAPn/AAACAAEAAABDAPr/AAACAAEAAABDAPv/AAACAAEAAABDAPz/AAACAAEAAABDAP3/AAACAAEAAABDAP7/AAACAAEAAABDAP//AAACAAEAAABEAPL/AAACAAEAAABEAPP/AAACAAEAAABEAPT/AAACAAEAAABEAPX/AAACAAEAAABEAPb/AAACAAEAAABEAPf/AAACAAEAAABEAPj/AAACAAEAAABEAPn/AAACAAEAAABEAPr/AAACAAEAAABEAPv/AAACAAEAAABEAPz/AAACAAEAAABEAP3/AAACAAEAAABEAP7/AAACAAEAAABEAP//AAACAAEAAABFAPL/AAACAAEAAABFAPP/AAACAAEAAABFAPT/AAACAAEAAABFAPX/AAACAAEAAABFAPb/AAACAAEAAABFAPf/AAACAAEAAABFAPj/AAACAAEAAABFAPn/AAACAAEAAABFAPr/AAACAAEAAABFAPv/AAACAAEAAABFAPz/AAACAAEAAABFAP3/AAACAAEAAABFAP7/AAACAAEAAABFAP//AAACAAEAAAA=")
+tile_set = SubResource("TileSet_5bd38")
+
+[node name="Player" parent="." instance=ExtResource("3_3sswl")]
+position = Vector2(584, 442)
+
+[node name="DoorSceneManager" parent="." node_paths=PackedStringArray("player") instance=ExtResource("4_3t3gn")]
+position = Vector2(584, 456)
+scale = Vector2(3.44061, 0.770942)
+player = NodePath("../Player")
+push_direction = 2
+
+[node name="Camera2D" type="Camera2D" parent="."]
+z_index = 4096
+position = Vector2(582, 328)
+zoom = Vector2(2, 2)
+
+[node name="PauseMenu" parent="Camera2D" instance=ExtResource("5_gl2jq")]
--- /dev/null
+[gd_scene load_steps=9 format=4 uid="uid://ds1fjw3marbia"]
+
+[ext_resource type="Script" uid="uid://2k5farej1c8m" path="res://scripts/main_level.gd" id="1_rqc32"]
+[ext_resource type="Texture2D" uid="uid://bj3fteudhyal6" path="res://assets/textures/Overworld.png" id="2_hr3vg"]
+[ext_resource type="PackedScene" uid="uid://da1uex028xkv1" path="res://scenes/elements/door_scene_manager.tscn" id="3_5ranr"]
+[ext_resource type="PackedScene" uid="uid://k76535tjepm3" path="res://scenes/elements/player.tscn" id="4_y0qys"]
+[ext_resource type="PackedScene" uid="uid://d11oo2pxcah1g" path="res://scenes/menu/pause_menu.tscn" id="5_06oyi"]
+[ext_resource type="PackedScene" uid="uid://cjvtoi20cy8wi" path="res://scenes/menu/inventory.tscn" id="6_cymwe"]
+
+[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_n0o3p"]
+texture = ExtResource("2_hr3vg")
+0:0/0 = 0
+0:0/0/terrain_set = 0
+0:0/0/terrain = 0
+0:0/0/terrains_peering_bit/right_side = 0
+0:0/0/terrains_peering_bit/bottom_right_corner = 0
+0:0/0/terrains_peering_bit/bottom_side = 0
+0:0/0/terrains_peering_bit/bottom_left_corner = 0
+0:0/0/terrains_peering_bit/left_side = 0
+0:0/0/terrains_peering_bit/top_left_corner = 0
+0:0/0/terrains_peering_bit/top_side = 0
+0:0/0/terrains_peering_bit/top_right_corner = 0
+1:0/0 = 0
+2:0/0 = 0
+3:0/0 = 0
+4:0/0 = 0
+5:0/0 = 0
+25:0/0 = 0
+26:0/0 = 0
+27:0/0 = 0
+28:0/0 = 0
+29:0/0 = 0
+30:0/0 = 0
+31:0/0 = 0
+32:0/0 = 0
+33:0/0 = 0
+34:0/0 = 0
+35:0/0 = 0
+36:0/0 = 0
+37:0/0 = 0
+25:1/0 = 0
+26:1/0 = 0
+27:1/0 = 0
+28:1/0 = 0
+29:1/0 = 0
+30:1/0 = 0
+31:1/0 = 0
+32:1/0 = 0
+33:1/0 = 0
+34:1/0 = 0
+35:1/0 = 0
+36:1/0 = 0
+37:1/0 = 0
+38:1/0 = 0
+25:2/0 = 0
+26:2/0 = 0
+27:2/0 = 0
+28:2/0 = 0
+29:2/0 = 0
+30:2/0 = 0
+31:2/0 = 0
+32:2/0 = 0
+33:2/0 = 0
+34:2/0 = 0
+35:2/0 = 0
+36:2/0 = 0
+37:2/0 = 0
+38:2/0 = 0
+3:3/0 = 0
+4:3/0 = 0
+5:3/0 = 0
+25:3/0 = 0
+26:3/0 = 0
+27:3/0 = 0
+28:3/0 = 0
+29:3/0 = 0
+30:3/0 = 0
+31:3/0 = 0
+32:3/0 = 0
+33:3/0 = 0
+34:3/0 = 0
+35:3/0 = 0
+36:3/0 = 0
+37:3/0 = 0
+38:3/0 = 0
+3:4/0 = 0
+4:4/0 = 0
+5:4/0 = 0
+21:4/0 = 0
+25:4/0 = 0
+26:4/0 = 0
+27:4/0 = 0
+28:4/0 = 0
+29:4/0 = 0
+30:4/0 = 0
+31:4/0 = 0
+32:4/0 = 0
+33:4/0 = 0
+34:4/0 = 0
+35:4/0 = 0
+36:4/0 = 0
+37:4/0 = 0
+38:4/0 = 0
+6:5/0 = 0
+7:5/0 = 0
+8:5/0 = 0
+9:5/0 = 0
+10:5/0 = 0
+21:5/0 = 0
+25:5/0 = 0
+26:5/0 = 0
+27:5/0 = 0
+28:5/0 = 0
+29:5/0 = 0
+30:5/0 = 0
+31:5/0 = 0
+32:5/0 = 0
+33:5/0 = 0
+34:5/0 = 0
+35:5/0 = 0
+36:5/0 = 0
+37:5/0 = 0
+38:5/0 = 0
+39:5/0 = 0
+5:6/0 = 0
+6:6/0 = 0
+7:6/0 = 0
+8:6/0 = 0
+9:6/0 = 0
+10:6/0 = 0
+15:6/0 = 0
+15:6/0/terrain_set = 0
+15:6/0/terrain = 2
+15:6/0/terrains_peering_bit/right_side = 2
+15:6/0/terrains_peering_bit/bottom_right_corner = 1
+15:6/0/terrains_peering_bit/bottom_side = 2
+15:6/0/terrains_peering_bit/bottom_left_corner = 2
+15:6/0/terrains_peering_bit/left_side = 2
+15:6/0/terrains_peering_bit/top_left_corner = 2
+15:6/0/terrains_peering_bit/top_side = 2
+15:6/0/terrains_peering_bit/top_right_corner = 2
+16:6/0 = 0
+16:6/0/terrain_set = 0
+16:6/0/terrain = 2
+16:6/0/terrains_peering_bit/right_side = 2
+16:6/0/terrains_peering_bit/bottom_right_corner = 1
+16:6/0/terrains_peering_bit/bottom_side = 1
+16:6/0/terrains_peering_bit/bottom_left_corner = 1
+16:6/0/terrains_peering_bit/left_side = 2
+16:6/0/terrains_peering_bit/top_left_corner = 2
+16:6/0/terrains_peering_bit/top_side = 2
+16:6/0/terrains_peering_bit/top_right_corner = 2
+17:6/0 = 0
+17:6/0/terrain_set = 0
+17:6/0/terrain = 2
+17:6/0/terrains_peering_bit/right_side = 2
+17:6/0/terrains_peering_bit/bottom_right_corner = 2
+17:6/0/terrains_peering_bit/bottom_side = 2
+17:6/0/terrains_peering_bit/bottom_left_corner = 1
+17:6/0/terrains_peering_bit/left_side = 2
+17:6/0/terrains_peering_bit/top_left_corner = 2
+17:6/0/terrains_peering_bit/top_side = 2
+17:6/0/terrains_peering_bit/top_right_corner = 2
+18:6/0 = 0
+18:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
+19:6/0 = 0
+19:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
+20:6/0 = 0
+20:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
+21:6/0 = 0
+22:6/0 = 0
+23:6/0 = 0
+24:6/0 = 0
+25:6/0 = 0
+26:6/0 = 0
+27:6/0 = 0
+28:6/0 = 0
+29:6/0 = 0
+30:6/0 = 0
+31:6/0 = 0
+32:6/0 = 0
+33:6/0 = 0
+34:6/0 = 0
+35:6/0 = 0
+36:6/0 = 0
+37:6/0 = 0
+38:6/0 = 0
+39:6/0 = 0
+5:7/0 = 0
+6:7/0 = 0
+7:7/0 = 0
+8:7/0 = 0
+9:7/0 = 0
+10:7/0 = 0
+11:7/0 = 0
+12:7/0 = 0
+15:7/0 = 0
+15:7/0/terrain_set = 0
+15:7/0/terrain = 2
+15:7/0/terrains_peering_bit/right_side = 1
+15:7/0/terrains_peering_bit/bottom_right_corner = 1
+15:7/0/terrains_peering_bit/bottom_side = 2
+15:7/0/terrains_peering_bit/bottom_left_corner = 2
+15:7/0/terrains_peering_bit/left_side = 2
+15:7/0/terrains_peering_bit/top_left_corner = 2
+15:7/0/terrains_peering_bit/top_side = 2
+15:7/0/terrains_peering_bit/top_right_corner = 1
+17:7/0 = 0
+17:7/0/terrain_set = 0
+17:7/0/terrain = 2
+17:7/0/terrains_peering_bit/right_side = 2
+17:7/0/terrains_peering_bit/bottom_right_corner = 2
+17:7/0/terrains_peering_bit/bottom_side = 2
+17:7/0/terrains_peering_bit/bottom_left_corner = 1
+17:7/0/terrains_peering_bit/left_side = 1
+17:7/0/terrains_peering_bit/top_left_corner = 1
+17:7/0/terrains_peering_bit/top_side = 2
+17:7/0/terrains_peering_bit/top_right_corner = 2
+18:7/0 = 0
+18:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
+19:7/0 = 0
+19:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
+20:7/0 = 0
+20:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
+26:7/0 = 0
+27:7/0 = 0
+28:7/0 = 0
+29:7/0 = 0
+30:7/0 = 0
+35:7/0 = 0
+36:7/0 = 0
+37:7/0 = 0
+38:7/0 = 0
+39:7/0 = 0
+0:8/0 = 0
+1:8/0 = 0
+5:8/0 = 0
+6:8/0 = 0
+7:8/0 = 0
+8:8/0 = 0
+9:8/0 = 0
+10:8/0 = 0
+11:8/0 = 0
+12:8/0 = 0
+13:8/0 = 0
+14:8/0 = 0
+15:8/0 = 0
+15:8/0/terrain_set = 0
+15:8/0/terrain = 2
+15:8/0/terrains_peering_bit/right_side = 2
+15:8/0/terrains_peering_bit/bottom_right_corner = 2
+15:8/0/terrains_peering_bit/bottom_side = 2
+15:8/0/terrains_peering_bit/bottom_left_corner = 2
+15:8/0/terrains_peering_bit/left_side = 2
+15:8/0/terrains_peering_bit/top_left_corner = 2
+15:8/0/terrains_peering_bit/top_side = 2
+15:8/0/terrains_peering_bit/top_right_corner = 1
+16:8/0 = 0
+16:8/0/terrain_set = 0
+16:8/0/terrain = 2
+16:8/0/terrains_peering_bit/right_side = 2
+16:8/0/terrains_peering_bit/bottom_right_corner = 2
+16:8/0/terrains_peering_bit/bottom_side = 2
+16:8/0/terrains_peering_bit/bottom_left_corner = 2
+16:8/0/terrains_peering_bit/left_side = 2
+16:8/0/terrains_peering_bit/top_left_corner = 1
+16:8/0/terrains_peering_bit/top_side = 1
+16:8/0/terrains_peering_bit/top_right_corner = 1
+17:8/0 = 0
+17:8/0/terrain_set = 0
+17:8/0/terrain = 2
+17:8/0/terrains_peering_bit/right_side = 2
+17:8/0/terrains_peering_bit/bottom_right_corner = 2
+17:8/0/terrains_peering_bit/bottom_side = 2
+17:8/0/terrains_peering_bit/bottom_left_corner = 2
+17:8/0/terrains_peering_bit/left_side = 2
+17:8/0/terrains_peering_bit/top_left_corner = 1
+17:8/0/terrains_peering_bit/top_side = 2
+17:8/0/terrains_peering_bit/top_right_corner = 2
+18:8/0 = 0
+18:8/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
+19:8/0 = 0
+19:8/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
+20:8/0 = 0
+20:8/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
+26:8/0 = 0
+26:8/0/z_index = 1
+28:8/0 = 0
+28:8/0/z_index = 1
+29:8/0 = 0
+29:8/0/z_index = 1
+31:8/0 = 0
+32:8/0 = 0
+33:8/0 = 0
+35:8/0 = 0
+36:8/0 = 0
+37:8/0 = 0
+38:8/0 = 0
+39:8/0 = 0
+0:9/0 = 0
+0:9/0/terrain_set = 0
+0:9/0/terrain = 0
+0:9/0/terrains_peering_bit/right_side = 0
+0:9/0/terrains_peering_bit/bottom_side = 0
+0:9/0/terrains_peering_bit/bottom_left_corner = 0
+0:9/0/terrains_peering_bit/left_side = 0
+0:9/0/terrains_peering_bit/top_left_corner = 0
+0:9/0/terrains_peering_bit/top_side = 0
+0:9/0/terrains_peering_bit/top_right_corner = 0
+1:9/0 = 0
+1:9/0/terrain_set = 0
+1:9/0/terrain = 0
+1:9/0/terrains_peering_bit/right_side = 0
+1:9/0/terrains_peering_bit/bottom_right_corner = 0
+1:9/0/terrains_peering_bit/bottom_side = 0
+1:9/0/terrains_peering_bit/left_side = 0
+1:9/0/terrains_peering_bit/top_left_corner = 0
+1:9/0/terrains_peering_bit/top_side = 0
+1:9/0/terrains_peering_bit/top_right_corner = 0
+2:9/0 = 0
+2:9/0/terrain_set = 0
+2:9/0/terrain = 0
+2:9/0/terrains_peering_bit/right_side = 0
+2:9/0/terrains_peering_bit/bottom_right_corner = 0
+2:9/0/terrains_peering_bit/bottom_side = 0
+2:9/0/terrains_peering_bit/bottom_left_corner = 1
+2:9/0/terrains_peering_bit/left_side = 1
+2:9/0/terrains_peering_bit/top_left_corner = 1
+2:9/0/terrains_peering_bit/top_side = 1
+2:9/0/terrains_peering_bit/top_right_corner = 1
+3:9/0 = 0
+3:9/0/terrain_set = 0
+3:9/0/terrain = 0
+3:9/0/terrains_peering_bit/right_side = 1
+3:9/0/terrains_peering_bit/bottom_right_corner = 1
+3:9/0/terrains_peering_bit/bottom_side = 0
+3:9/0/terrains_peering_bit/bottom_left_corner = 0
+3:9/0/terrains_peering_bit/left_side = 0
+3:9/0/terrains_peering_bit/top_left_corner = 1
+3:9/0/terrains_peering_bit/top_side = 1
+3:9/0/terrains_peering_bit/top_right_corner = 1
+4:9/0 = 0
+5:9/0 = 0
+5:9/0/terrain_set = 0
+5:9/0/terrain = 0
+5:9/0/terrains_peering_bit/right_side = 0
+5:9/0/terrains_peering_bit/bottom_right_corner = 0
+5:9/0/terrains_peering_bit/bottom_side = 0
+5:9/0/terrains_peering_bit/bottom_left_corner = 0
+5:9/0/terrains_peering_bit/left_side = 0
+5:9/0/terrains_peering_bit/top_left_corner = 0
+5:9/0/terrains_peering_bit/top_side = 0
+5:9/0/terrains_peering_bit/top_right_corner = 0
+6:9/0 = 0
+7:9/0 = 0
+7:9/0/terrain_set = 0
+7:9/0/terrain = 0
+7:9/0/terrains_peering_bit/right_side = 0
+7:9/0/terrains_peering_bit/bottom_right_corner = 0
+7:9/0/terrains_peering_bit/bottom_side = 0
+7:9/0/terrains_peering_bit/bottom_left_corner = 0
+7:9/0/terrains_peering_bit/left_side = 0
+7:9/0/terrains_peering_bit/top_left_corner = 0
+7:9/0/terrains_peering_bit/top_side = 0
+7:9/0/terrains_peering_bit/top_right_corner = 0
+8:9/0 = 0
+8:9/0/terrain_set = 0
+8:9/0/terrain = 0
+8:9/0/terrains_peering_bit/right_side = 0
+8:9/0/terrains_peering_bit/bottom_right_corner = 0
+8:9/0/terrains_peering_bit/bottom_side = 0
+8:9/0/terrains_peering_bit/bottom_left_corner = 0
+8:9/0/terrains_peering_bit/left_side = 0
+8:9/0/terrains_peering_bit/top_left_corner = 0
+8:9/0/terrains_peering_bit/top_side = 0
+8:9/0/terrains_peering_bit/top_right_corner = 0
+10:9/0 = 0
+11:9/0 = 0
+12:9/0 = 0
+13:9/0 = 0
+14:9/0 = 0
+15:9/0 = 0
+15:9/0/terrain_set = 0
+15:9/0/terrain = 2
+15:9/0/terrains_peering_bit/right_side = 2
+15:9/0/terrains_peering_bit/bottom_right_corner = 2
+15:9/0/terrains_peering_bit/bottom_side = 2
+15:9/0/terrains_peering_bit/bottom_left_corner = 1
+15:9/0/terrains_peering_bit/left_side = 1
+15:9/0/terrains_peering_bit/top_left_corner = 1
+15:9/0/terrains_peering_bit/top_side = 1
+15:9/0/terrains_peering_bit/top_right_corner = 1
+16:9/0 = 0
+16:9/0/terrain_set = 0
+16:9/0/terrain = 2
+16:9/0/terrains_peering_bit/right_side = 1
+16:9/0/terrains_peering_bit/bottom_right_corner = 1
+16:9/0/terrains_peering_bit/bottom_side = 2
+16:9/0/terrains_peering_bit/bottom_left_corner = 2
+16:9/0/terrains_peering_bit/left_side = 2
+16:9/0/terrains_peering_bit/top_left_corner = 1
+16:9/0/terrains_peering_bit/top_side = 1
+16:9/0/terrains_peering_bit/top_right_corner = 1
+17:9/0 = 0
+18:9/0 = 0
+19:9/0 = 0
+32:9/0 = 0
+34:9/0 = 0
+35:9/0 = 0
+36:9/0 = 0
+37:9/0 = 0
+0:10/0 = 0
+0:10/0/terrain_set = 0
+0:10/0/terrain = 0
+0:10/0/terrains_peering_bit/right_side = 0
+0:10/0/terrains_peering_bit/bottom_right_corner = 0
+0:10/0/terrains_peering_bit/bottom_side = 0
+0:10/0/terrains_peering_bit/bottom_left_corner = 0
+0:10/0/terrains_peering_bit/left_side = 0
+0:10/0/terrains_peering_bit/top_left_corner = 0
+0:10/0/terrains_peering_bit/top_side = 0
+1:10/0 = 0
+1:10/0/terrain_set = 0
+1:10/0/terrain = 0
+1:10/0/terrains_peering_bit/right_side = 0
+1:10/0/terrains_peering_bit/bottom_right_corner = 0
+1:10/0/terrains_peering_bit/bottom_side = 0
+1:10/0/terrains_peering_bit/bottom_left_corner = 0
+1:10/0/terrains_peering_bit/left_side = 0
+1:10/0/terrains_peering_bit/top_side = 0
+1:10/0/terrains_peering_bit/top_right_corner = 0
+2:10/0 = 0
+2:10/0/terrain_set = 0
+2:10/0/terrain = 0
+2:10/0/terrains_peering_bit/right_side = 0
+2:10/0/terrains_peering_bit/bottom_right_corner = 1
+2:10/0/terrains_peering_bit/bottom_side = 1
+2:10/0/terrains_peering_bit/bottom_left_corner = 1
+2:10/0/terrains_peering_bit/left_side = 1
+2:10/0/terrains_peering_bit/top_left_corner = 1
+2:10/0/terrains_peering_bit/top_side = 0
+2:10/0/terrains_peering_bit/top_right_corner = 0
+3:10/0 = 0
+3:10/0/terrain_set = 0
+3:10/0/terrain = 0
+3:10/0/terrains_peering_bit/right_side = 1
+3:10/0/terrains_peering_bit/bottom_right_corner = 1
+3:10/0/terrains_peering_bit/bottom_side = 1
+3:10/0/terrains_peering_bit/bottom_left_corner = 1
+3:10/0/terrains_peering_bit/left_side = 0
+3:10/0/terrains_peering_bit/top_left_corner = 0
+3:10/0/terrains_peering_bit/top_side = 0
+3:10/0/terrains_peering_bit/top_right_corner = 1
+4:10/0 = 0
+5:10/0 = 0
+5:10/0/terrain_set = 0
+5:10/0/terrain = 0
+5:10/0/terrains_peering_bit/right_side = 0
+5:10/0/terrains_peering_bit/bottom_right_corner = 0
+5:10/0/terrains_peering_bit/bottom_side = 0
+5:10/0/terrains_peering_bit/bottom_left_corner = 0
+5:10/0/terrains_peering_bit/left_side = 0
+5:10/0/terrains_peering_bit/top_left_corner = 0
+5:10/0/terrains_peering_bit/top_side = 0
+5:10/0/terrains_peering_bit/top_right_corner = 0
+6:10/0 = 0
+7:10/0 = 0
+7:10/0/terrain_set = 0
+7:10/0/terrain = 0
+7:10/0/terrains_peering_bit/right_side = 0
+7:10/0/terrains_peering_bit/bottom_right_corner = 0
+7:10/0/terrains_peering_bit/bottom_side = 0
+7:10/0/terrains_peering_bit/bottom_left_corner = 0
+7:10/0/terrains_peering_bit/left_side = 0
+7:10/0/terrains_peering_bit/top_left_corner = 0
+7:10/0/terrains_peering_bit/top_side = 0
+7:10/0/terrains_peering_bit/top_right_corner = 0
+8:10/0 = 0
+8:10/0/terrain_set = 0
+8:10/0/terrain = 0
+8:10/0/terrains_peering_bit/right_side = 0
+8:10/0/terrains_peering_bit/bottom_right_corner = 0
+8:10/0/terrains_peering_bit/bottom_side = 0
+8:10/0/terrains_peering_bit/bottom_left_corner = 0
+8:10/0/terrains_peering_bit/left_side = 0
+8:10/0/terrains_peering_bit/top_left_corner = 0
+8:10/0/terrains_peering_bit/top_side = 0
+8:10/0/terrains_peering_bit/top_right_corner = 0
+9:10/0 = 0
+10:10/0 = 0
+11:10/0 = 0
+12:10/0 = 0
+13:10/0 = 0
+14:10/0 = 0
+15:10/0 = 0
+15:10/0/terrain_set = 0
+15:10/0/terrain = 2
+15:10/0/terrains_peering_bit/right_side = 2
+15:10/0/terrains_peering_bit/bottom_right_corner = 1
+15:10/0/terrains_peering_bit/bottom_side = 1
+15:10/0/terrains_peering_bit/bottom_left_corner = 1
+15:10/0/terrains_peering_bit/left_side = 1
+15:10/0/terrains_peering_bit/top_left_corner = 1
+15:10/0/terrains_peering_bit/top_side = 2
+15:10/0/terrains_peering_bit/top_right_corner = 2
+16:10/0 = 0
+16:10/0/terrain_set = 0
+16:10/0/terrain = 2
+16:10/0/terrains_peering_bit/right_side = 1
+16:10/0/terrains_peering_bit/bottom_right_corner = 1
+16:10/0/terrains_peering_bit/bottom_side = 1
+16:10/0/terrains_peering_bit/bottom_left_corner = 1
+16:10/0/terrains_peering_bit/left_side = 2
+16:10/0/terrains_peering_bit/top_left_corner = 2
+16:10/0/terrains_peering_bit/top_side = 2
+16:10/0/terrains_peering_bit/top_right_corner = 1
+17:10/0 = 0
+18:10/0 = 0
+19:10/0 = 0
+32:10/0 = 0
+33:10/0 = 0
+34:10/0 = 0
+35:10/0 = 0
+36:10/0 = 0
+37:10/0 = 0
+0:11/0 = 0
+0:11/0/terrain_set = 0
+0:11/0/terrain = 0
+0:11/0/terrains_peering_bit/right_side = 0
+0:11/0/terrains_peering_bit/bottom_right_corner = 0
+0:11/0/terrains_peering_bit/bottom_side = 0
+1:11/0 = 0
+1:11/0/terrain_set = 0
+1:11/0/terrain = 0
+1:11/0/terrains_peering_bit/right_side = 0
+1:11/0/terrains_peering_bit/bottom_right_corner = 0
+1:11/0/terrains_peering_bit/bottom_side = 0
+1:11/0/terrains_peering_bit/bottom_left_corner = 0
+1:11/0/terrains_peering_bit/left_side = 0
+2:11/0 = 0
+2:11/0/terrain_set = 0
+2:11/0/terrain = 0
+2:11/0/terrains_peering_bit/bottom_side = 0
+2:11/0/terrains_peering_bit/bottom_left_corner = 0
+2:11/0/terrains_peering_bit/left_side = 0
+3:11/0 = 0
+4:11/0 = 0
+5:11/0 = 0
+6:11/0 = 0
+7:11/0 = 0
+8:11/0 = 0
+9:11/0 = 0
+10:11/0 = 0
+11:11/0 = 0
+12:11/0 = 0
+13:11/0 = 0
+14:11/0 = 0
+15:11/0 = 0
+16:11/0 = 0
+17:11/0 = 0
+18:11/0 = 0
+19:11/0 = 0
+20:11/0 = 0
+32:11/0 = 0
+34:11/0 = 0
+35:11/0 = 0
+36:11/0 = 0
+37:11/0 = 0
+0:12/0 = 0
+1:12/0 = 0
+2:12/0 = 0
+3:12/0 = 0
+4:12/0 = 0
+5:12/0 = 0
+6:12/0 = 0
+7:12/0 = 0
+9:12/0 = 0
+10:12/0 = 0
+11:12/0 = 0
+12:12/0 = 0
+13:12/0 = 0
+14:12/0 = 0
+15:12/0 = 0
+16:12/0 = 0
+17:12/0 = 0
+18:12/0 = 0
+19:12/0 = 0
+20:12/0 = 0
+22:12/0 = 0
+23:12/0 = 0
+25:12/0 = 0
+26:12/0 = 0
+27:12/0 = 0
+30:12/0 = 0
+32:12/0 = 0
+34:12/0 = 0
+35:12/0 = 0
+36:12/0 = 0
+37:12/0 = 0
+0:13/0 = 0
+1:13/0 = 0
+2:13/0 = 0
+3:13/0 = 0
+4:13/0 = 0
+5:13/0 = 0
+6:13/0 = 0
+7:13/0 = 0
+8:13/0 = 0
+8:13/0/terrain_set = 0
+8:13/0/terrain = 0
+8:13/0/terrains_peering_bit/right_side = 0
+8:13/0/terrains_peering_bit/bottom_right_corner = 0
+8:13/0/terrains_peering_bit/bottom_side = 0
+8:13/0/terrains_peering_bit/bottom_left_corner = 1
+8:13/0/terrains_peering_bit/left_side = 1
+8:13/0/terrains_peering_bit/top_left_corner = 1
+8:13/0/terrains_peering_bit/top_side = 2
+8:13/0/terrains_peering_bit/top_right_corner = 2
+9:13/0 = 0
+9:13/0/terrain_set = 0
+9:13/0/terrain = 0
+9:13/0/terrains_peering_bit/right_side = 1
+9:13/0/terrains_peering_bit/bottom_right_corner = 1
+9:13/0/terrains_peering_bit/bottom_side = 0
+9:13/0/terrains_peering_bit/bottom_left_corner = 0
+9:13/0/terrains_peering_bit/left_side = 0
+9:13/0/terrains_peering_bit/top_left_corner = 2
+9:13/0/terrains_peering_bit/top_side = 2
+9:13/0/terrains_peering_bit/top_right_corner = 1
+10:13/0 = 0
+10:13/0/terrain_set = 0
+10:13/0/terrain = 0
+10:13/0/terrains_peering_bit/right_side = 0
+10:13/0/terrains_peering_bit/bottom_right_corner = 0
+10:13/0/terrains_peering_bit/bottom_side = 0
+10:13/0/terrains_peering_bit/bottom_left_corner = 2
+10:13/0/terrains_peering_bit/left_side = 2
+10:13/0/terrains_peering_bit/top_left_corner = 1
+10:13/0/terrains_peering_bit/top_side = 1
+10:13/0/terrains_peering_bit/top_right_corner = 1
+11:13/0 = 0
+11:13/0/terrain_set = 0
+11:13/0/terrain = 0
+11:13/0/terrains_peering_bit/right_side = 2
+11:13/0/terrains_peering_bit/bottom_right_corner = 2
+11:13/0/terrains_peering_bit/bottom_side = 0
+11:13/0/terrains_peering_bit/bottom_left_corner = 0
+11:13/0/terrains_peering_bit/left_side = 0
+11:13/0/terrains_peering_bit/top_left_corner = 1
+11:13/0/terrains_peering_bit/top_side = 1
+11:13/0/terrains_peering_bit/top_right_corner = 1
+12:13/0 = 0
+13:13/0 = 0
+14:13/0 = 0
+15:13/0 = 0
+16:13/0 = 0
+17:13/0 = 0
+18:13/0 = 0
+19:13/0 = 0
+20:13/0 = 0
+23:13/0 = 0
+24:13/0 = 0
+25:13/0 = 0
+26:13/0 = 0
+27:13/0 = 0
+28:13/0 = 0
+29:13/0 = 0
+30:13/0 = 0
+32:13/0 = 0
+34:13/0 = 0
+35:13/0 = 0
+36:13/0 = 0
+0:14/0 = 0
+1:14/0 = 0
+2:14/0 = 0
+3:14/0 = 0
+4:14/0 = 0
+5:14/0 = 0
+6:14/0 = 0
+7:14/0 = 0
+8:14/0 = 0
+8:14/0/terrain_set = 0
+8:14/0/terrain = 0
+8:14/0/terrains_peering_bit/right_side = 0
+8:14/0/terrains_peering_bit/bottom_right_corner = 2
+8:14/0/terrains_peering_bit/bottom_side = 2
+8:14/0/terrains_peering_bit/bottom_left_corner = 1
+8:14/0/terrains_peering_bit/left_side = 1
+8:14/0/terrains_peering_bit/top_left_corner = 1
+8:14/0/terrains_peering_bit/top_side = 0
+8:14/0/terrains_peering_bit/top_right_corner = 0
+9:14/0 = 0
+9:14/0/terrain_set = 0
+9:14/0/terrain = 0
+9:14/0/terrains_peering_bit/right_side = 1
+9:14/0/terrains_peering_bit/bottom_right_corner = 1
+9:14/0/terrains_peering_bit/bottom_side = 2
+9:14/0/terrains_peering_bit/bottom_left_corner = 2
+9:14/0/terrains_peering_bit/left_side = 0
+9:14/0/terrains_peering_bit/top_left_corner = 0
+9:14/0/terrains_peering_bit/top_side = 0
+9:14/0/terrains_peering_bit/top_right_corner = 1
+10:14/0 = 0
+10:14/0/terrain_set = 0
+10:14/0/terrain = 0
+10:14/0/terrains_peering_bit/right_side = 0
+10:14/0/terrains_peering_bit/bottom_right_corner = 1
+10:14/0/terrains_peering_bit/bottom_side = 1
+10:14/0/terrains_peering_bit/bottom_left_corner = 1
+10:14/0/terrains_peering_bit/left_side = 2
+10:14/0/terrains_peering_bit/top_left_corner = 2
+10:14/0/terrains_peering_bit/top_side = 0
+10:14/0/terrains_peering_bit/top_right_corner = 0
+11:14/0 = 0
+11:14/0/terrain_set = 0
+11:14/0/terrain = 0
+11:14/0/terrains_peering_bit/right_side = 2
+11:14/0/terrains_peering_bit/bottom_right_corner = 1
+11:14/0/terrains_peering_bit/bottom_side = 1
+11:14/0/terrains_peering_bit/bottom_left_corner = 1
+11:14/0/terrains_peering_bit/left_side = 0
+11:14/0/terrains_peering_bit/top_left_corner = 0
+11:14/0/terrains_peering_bit/top_side = 0
+11:14/0/terrains_peering_bit/top_right_corner = 2
+12:14/0 = 0
+13:14/0 = 0
+14:14/0 = 0
+15:14/0 = 0
+16:14/0 = 0
+18:14/0 = 0
+19:14/0 = 0
+20:14/0 = 0
+21:14/0 = 0
+22:14/0 = 0
+23:14/0 = 0
+24:14/0 = 0
+25:14/0 = 0
+26:14/0 = 0
+27:14/0 = 0
+28:14/0 = 0
+29:14/0 = 0
+30:14/0 = 0
+32:14/0 = 0
+34:14/0 = 0
+35:14/0 = 0
+36:14/0 = 0
+0:15/0 = 0
+1:15/0 = 0
+2:15/0 = 0
+3:15/0 = 0
+4:15/0 = 0
+5:15/0 = 0
+6:15/0 = 0
+7:15/0 = 0
+8:15/0 = 0
+9:15/0 = 0
+11:15/0 = 0
+12:15/0 = 0
+13:15/0 = 0
+14:15/0 = 0
+15:15/0 = 0
+16:15/0 = 0
+17:15/0 = 0
+18:15/0 = 0
+23:15/0 = 0
+24:15/0 = 0
+25:15/0 = 0
+26:15/0 = 0
+27:15/0 = 0
+28:15/0 = 0
+29:15/0 = 0
+0:16/0 = 0
+1:16/0 = 0
+2:16/0 = 0
+3:16/0 = 0
+4:16/0 = 0
+5:16/0 = 0
+6:16/0 = 0
+7:16/0 = 0
+11:16/0 = 0
+12:16/0 = 0
+13:16/0 = 0
+14:16/0 = 0
+17:16/0 = 0
+18:16/0 = 0
+23:16/0 = 0
+24:16/0 = 0
+28:16/0 = 0
+29:16/0 = 0
+33:16/0 = 0
+0:17/0 = 0
+2:17/0 = 0
+3:17/0 = 0
+4:17/0 = 0
+5:17/0 = 0
+6:17/0 = 0
+7:17/0 = 0
+9:17/0 = 0
+10:17/0 = 0
+11:17/0 = 0
+12:17/0 = 0
+13:17/0 = 0
+14:17/0 = 0
+15:17/0 = 0
+16:17/0 = 0
+19:17/0 = 0
+20:17/0 = 0
+21:17/0 = 0
+22:17/0 = 0
+23:17/0 = 0
+24:17/0 = 0
+25:17/0 = 0
+27:17/0 = 0
+28:17/0 = 0
+29:17/0 = 0
+30:17/0 = 0
+31:17/0 = 0
+32:17/0 = 0
+33:17/0 = 0
+34:17/0 = 0
+35:17/0 = 0
+36:17/0 = 0
+37:17/0 = 0
+38:17/0 = 0
+39:17/0 = 0
+0:18/0 = 0
+2:18/0 = 0
+3:18/0 = 0
+4:18/0 = 0
+5:18/0 = 0
+6:18/0 = 0
+7:18/0 = 0
+8:18/0 = 0
+9:18/0 = 0
+10:18/0 = 0
+11:18/0 = 0
+12:18/0 = 0
+13:18/0 = 0
+14:18/0 = 0
+15:18/0 = 0
+16:18/0 = 0
+17:18/0 = 0
+18:18/0 = 0
+19:18/0 = 0
+20:18/0 = 0
+21:18/0 = 0
+22:18/0 = 0
+23:18/0 = 0
+24:18/0 = 0
+25:18/0 = 0
+27:18/0 = 0
+28:18/0 = 0
+29:18/0 = 0
+30:18/0 = 0
+31:18/0 = 0
+32:18/0 = 0
+33:18/0 = 0
+34:18/0 = 0
+35:18/0 = 0
+36:18/0 = 0
+37:18/0 = 0
+38:18/0 = 0
+39:18/0 = 0
+0:19/0 = 0
+1:19/0 = 0
+3:19/0 = 0
+4:19/0 = 0
+5:19/0 = 0
+6:19/0 = 0
+7:19/0 = 0
+8:19/0 = 0
+9:19/0 = 0
+10:19/0 = 0
+11:19/0 = 0
+12:19/0 = 0
+13:19/0 = 0
+14:19/0 = 0
+15:19/0 = 0
+16:19/0 = 0
+17:19/0 = 0
+18:19/0 = 0
+19:19/0 = 0
+20:19/0 = 0
+21:19/0 = 0
+22:19/0 = 0
+23:19/0 = 0
+24:19/0 = 0
+27:19/0 = 0
+28:19/0 = 0
+29:19/0 = 0
+30:19/0 = 0
+31:19/0 = 0
+32:19/0 = 0
+33:19/0 = 0
+34:19/0 = 0
+35:19/0 = 0
+36:19/0 = 0
+37:19/0 = 0
+38:19/0 = 0
+39:19/0 = 0
+0:20/0 = 0
+1:20/0 = 0
+2:20/0 = 0
+3:20/0 = 0
+4:20/0 = 0
+5:20/0 = 0
+6:20/0 = 0
+7:20/0 = 0
+9:20/0 = 0
+10:20/0 = 0
+11:20/0 = 0
+12:20/0 = 0
+13:20/0 = 0
+14:20/0 = 0
+15:20/0 = 0
+16:20/0 = 0
+17:20/0 = 0
+18:20/0 = 0
+19:20/0 = 0
+20:20/0 = 0
+21:20/0 = 0
+22:20/0 = 0
+23:20/0 = 0
+24:20/0 = 0
+25:20/0 = 0
+26:20/0 = 0
+27:20/0 = 0
+28:20/0 = 0
+29:20/0 = 0
+0:21/0 = 0
+1:21/0 = 0
+2:21/0 = 0
+3:21/0 = 0
+4:21/0 = 0
+5:21/0 = 0
+6:21/0 = 0
+7:21/0 = 0
+9:21/0 = 0
+10:21/0 = 0
+11:21/0 = 0
+12:21/0 = 0
+13:21/0 = 0
+14:21/0 = 0
+15:21/0 = 0
+16:21/0 = 0
+17:21/0 = 0
+18:21/0 = 0
+19:21/0 = 0
+20:21/0 = 0
+21:21/0 = 0
+22:21/0 = 0
+23:21/0 = 0
+24:21/0 = 0
+25:21/0 = 0
+26:21/0 = 0
+27:21/0 = 0
+28:21/0 = 0
+29:21/0 = 0
+0:22/0 = 0
+1:22/0 = 0
+2:22/0 = 0
+3:22/0 = 0
+4:22/0 = 0
+5:22/0 = 0
+6:22/0 = 0
+7:22/0 = 0
+8:22/0 = 0
+9:22/0 = 0
+10:22/0 = 0
+11:22/0 = 0
+12:22/0 = 0
+13:22/0 = 0
+15:22/0 = 0
+16:22/0 = 0
+17:22/0 = 0
+18:22/0 = 0
+19:22/0 = 0
+20:22/0 = 0
+21:22/0 = 0
+22:22/0 = 0
+23:22/0 = 0
+24:22/0 = 0
+25:22/0 = 0
+26:22/0 = 0
+28:22/0 = 0
+29:22/0 = 0
+0:23/0 = 0
+1:23/0 = 0
+2:23/0 = 0
+3:23/0 = 0
+4:23/0 = 0
+5:23/0 = 0
+6:23/0 = 0
+7:23/0 = 0
+8:23/0 = 0
+9:23/0 = 0
+10:23/0 = 0
+11:23/0 = 0
+12:23/0 = 0
+13:23/0 = 0
+15:23/0 = 0
+16:23/0 = 0
+18:23/0 = 0
+19:23/0 = 0
+20:23/0 = 0
+21:23/0 = 0
+22:23/0 = 0
+23:23/0 = 0
+24:23/0 = 0
+25:23/0 = 0
+26:23/0 = 0
+27:23/0 = 0
+28:23/0 = 0
+29:23/0 = 0
+0:24/0 = 0
+1:24/0 = 0
+2:24/0 = 0
+3:24/0 = 0
+4:24/0 = 0
+5:24/0 = 0
+8:24/0 = 0
+9:24/0 = 0
+10:24/0 = 0
+12:24/0 = 0
+13:24/0 = 0
+15:24/0 = 0
+16:24/0 = 0
+18:24/0 = 0
+19:24/0 = 0
+20:24/0 = 0
+21:24/0 = 0
+22:24/0 = 0
+25:24/0 = 0
+26:24/0 = 0
+27:24/0 = 0
+28:24/0 = 0
+29:24/0 = 0
+0:25/0 = 0
+1:25/0 = 0
+2:25/0 = 0
+3:25/0 = 0
+4:25/0 = 0
+5:25/0 = 0
+8:25/0 = 0
+9:25/0 = 0
+10:25/0 = 0
+11:25/0 = 0
+12:25/0 = 0
+13:25/0 = 0
+14:25/0 = 0
+15:25/0 = 0
+16:25/0 = 0
+17:25/0 = 0
+18:25/0 = 0
+19:25/0 = 0
+20:25/0 = 0
+21:25/0 = 0
+22:25/0 = 0
+25:25/0 = 0
+26:25/0 = 0
+27:25/0 = 0
+28:25/0 = 0
+29:25/0 = 0
+0:26/0 = 0
+1:26/0 = 0
+2:26/0 = 0
+3:26/0 = 0
+4:26/0 = 0
+5:26/0 = 0
+6:26/0 = 0
+7:26/0 = 0
+8:26/0 = 0
+9:26/0 = 0
+11:26/0 = 0
+12:26/0 = 0
+13:26/0 = 0
+14:26/0 = 0
+15:26/0 = 0
+16:26/0 = 0
+17:26/0 = 0
+18:26/0 = 0
+19:26/0 = 0
+20:26/0 = 0
+21:26/0 = 0
+22:26/0 = 0
+25:26/0 = 0
+26:26/0 = 0
+27:26/0 = 0
+28:26/0 = 0
+29:26/0 = 0
+0:27/0 = 0
+1:27/0 = 0
+2:27/0 = 0
+3:27/0 = 0
+4:27/0 = 0
+5:27/0 = 0
+6:27/0 = 0
+7:27/0 = 0
+8:27/0 = 0
+9:27/0 = 0
+10:27/0 = 0
+11:27/0 = 0
+12:27/0 = 0
+13:27/0 = 0
+14:27/0 = 0
+15:27/0 = 0
+16:27/0 = 0
+17:27/0 = 0
+18:27/0 = 0
+19:27/0 = 0
+20:27/0 = 0
+21:27/0 = 0
+22:27/0 = 0
+25:27/0 = 0
+26:27/0 = 0
+27:27/0 = 0
+28:27/0 = 0
+29:27/0 = 0
+0:28/0 = 0
+1:28/0 = 0
+2:28/0 = 0
+3:28/0 = 0
+4:28/0 = 0
+5:28/0 = 0
+6:28/0 = 0
+7:28/0 = 0
+8:28/0 = 0
+9:28/0 = 0
+10:28/0 = 0
+11:28/0 = 0
+12:28/0 = 0
+13:28/0 = 0
+14:28/0 = 0
+15:28/0 = 0
+16:28/0 = 0
+17:28/0 = 0
+19:28/0 = 0
+20:28/0 = 0
+21:28/0 = 0
+22:28/0 = 0
+23:28/0 = 0
+25:28/0 = 0
+26:28/0 = 0
+28:28/0 = 0
+29:28/0 = 0
+0:29/0 = 0
+1:29/0 = 0
+2:29/0 = 0
+3:29/0 = 0
+4:29/0 = 0
+5:29/0 = 0
+6:29/0 = 0
+7:29/0 = 0
+8:29/0 = 0
+9:29/0 = 0
+10:29/0 = 0
+11:29/0 = 0
+12:29/0 = 0
+14:29/0 = 0
+15:29/0 = 0
+16:29/0 = 0
+17:29/0 = 0
+18:29/0 = 0
+19:29/0 = 0
+20:29/0 = 0
+21:29/0 = 0
+22:29/0 = 0
+23:29/0 = 0
+0:30/0 = 0
+1:30/0 = 0
+2:30/0 = 0
+3:30/0 = 0
+4:30/0 = 0
+5:30/0 = 0
+6:30/0 = 0
+7:30/0 = 0
+8:30/0 = 0
+9:30/0 = 0
+10:30/0 = 0
+11:30/0 = 0
+12:30/0 = 0
+14:30/0 = 0
+15:30/0 = 0
+16:30/0 = 0
+17:30/0 = 0
+18:30/0 = 0
+19:30/0 = 0
+20:30/0 = 0
+21:30/0 = 0
+22:30/0 = 0
+23:30/0 = 0
+0:31/0 = 0
+1:31/0 = 0
+2:31/0 = 0
+3:31/0 = 0
+4:31/0 = 0
+5:31/0 = 0
+6:31/0 = 0
+7:31/0 = 0
+8:31/0 = 0
+9:31/0 = 0
+10:31/0 = 0
+11:31/0 = 0
+12:31/0 = 0
+13:31/0 = 0
+14:31/0 = 0
+15:31/0 = 0
+16:31/0 = 0
+19:31/0 = 0
+20:31/0 = 0
+21:31/0 = 0
+22:31/0 = 0
+23:31/0 = 0
+24:31/0 = 0
+25:31/0 = 0
+26:31/0 = 0
+27:31/0 = 0
+0:32/0 = 0
+1:32/0 = 0
+2:32/0 = 0
+3:32/0 = 0
+4:32/0 = 0
+5:32/0 = 0
+6:32/0 = 0
+7:32/0 = 0
+8:32/0 = 0
+9:32/0 = 0
+10:32/0 = 0
+11:32/0 = 0
+12:32/0 = 0
+13:32/0 = 0
+14:32/0 = 0
+15:32/0 = 0
+16:32/0 = 0
+17:32/0 = 0
+18:32/0 = 0
+19:32/0 = 0
+20:32/0 = 0
+21:32/0 = 0
+22:32/0 = 0
+23:32/0 = 0
+24:32/0 = 0
+27:32/0 = 0
+0:33/0 = 0
+1:33/0 = 0
+4:33/0 = 0
+5:33/0 = 0
+6:33/0 = 0
+7:33/0 = 0
+8:33/0 = 0
+9:33/0 = 0
+10:33/0 = 0
+11:33/0 = 0
+12:33/0 = 0
+13:33/0 = 0
+14:33/0 = 0
+15:33/0 = 0
+16:33/0 = 0
+17:33/0 = 0
+18:33/0 = 0
+24:33/0 = 0
+25:33/0 = 0
+26:33/0 = 0
+27:33/0 = 0
+0:34/0 = 0
+1:34/0 = 0
+4:34/0 = 0
+5:34/0 = 0
+6:34/0 = 0
+7:34/0 = 0
+0:35/0 = 0
+1:35/0 = 0
+6:0/size_in_atlas = Vector2i(5, 5)
+6:0/0 = 0
+6:0/0/z_index = 1
+6:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -24, 32, -24, 32, 12, 32, 24, -32, 24, -32, 12)
+4:1/size_in_atlas = Vector2i(2, 2)
+4:1/0 = 0
+4:1/0/z_index = 1
+16:0/size_in_atlas = Vector2i(2, 2)
+16:0/0 = 0
+16:2/size_in_atlas = Vector2i(2, 2)
+16:2/0 = 0
+18:2/size_in_atlas = Vector2i(2, 2)
+18:2/0 = 0
+18:0/size_in_atlas = Vector2i(2, 2)
+18:0/0 = 0
+20:0/size_in_atlas = Vector2i(2, 2)
+20:0/0 = 0
+20:2/size_in_atlas = Vector2i(2, 2)
+20:2/0 = 0
+22:0/size_in_atlas = Vector2i(3, 6)
+22:0/0 = 0
+3:5/size_in_atlas = Vector2i(3, 1)
+3:5/0 = 0
+11:5/size_in_atlas = Vector2i(2, 2)
+11:5/0 = 0
+13:5/size_in_atlas = Vector2i(2, 3)
+13:5/0 = 0
+13:5/0/z_index = 1
+22:9/size_in_atlas = Vector2i(3, 3)
+22:9/0 = 0
+22:9/0/z_index = 1
+25:9/size_in_atlas = Vector2i(3, 3)
+25:9/0 = 0
+25:9/0/z_index = 1
+28:9/size_in_atlas = Vector2i(3, 3)
+28:9/0 = 0
+28:9/0/z_index = 1
+27:8/0 = 0
+27:8/0/z_index = 1
+21:7/size_in_atlas = Vector2i(1, 2)
+21:7/0 = 0
+21:7/0/z_index = 1
+22:7/0 = 0
+22:7/0/z_index = 1
+22:8/0 = 0
+22:8/0/z_index = 1
+23:7/size_in_atlas = Vector2i(1, 2)
+23:7/0 = 0
+23:7/0/z_index = 1
+24:7/size_in_atlas = Vector2i(1, 2)
+24:7/0 = 0
+24:7/0/z_index = 1
+0:3/0 = 0
+0:3/0/terrain_set = 0
+0:3/0/terrain = 0
+0:3/0/terrains_peering_bit/right_side = 0
+0:3/0/terrains_peering_bit/bottom_right_corner = 2
+0:3/0/terrains_peering_bit/bottom_side = 0
+0:3/0/terrains_peering_bit/bottom_left_corner = 0
+0:3/0/terrains_peering_bit/left_side = 0
+0:3/0/terrains_peering_bit/top_left_corner = 0
+0:3/0/terrains_peering_bit/top_side = 0
+0:3/0/terrains_peering_bit/top_right_corner = 0
+1:3/0 = 0
+1:3/0/terrain_set = 0
+1:3/0/terrain = 0
+1:3/0/terrains_peering_bit/right_side = 0
+1:3/0/terrains_peering_bit/bottom_right_corner = 2
+1:3/0/terrains_peering_bit/bottom_side = 2
+1:3/0/terrains_peering_bit/bottom_left_corner = 2
+1:3/0/terrains_peering_bit/left_side = 0
+1:3/0/terrains_peering_bit/top_left_corner = 0
+1:3/0/terrains_peering_bit/top_side = 0
+1:3/0/terrains_peering_bit/top_right_corner = 0
+2:3/0 = 0
+2:3/0/terrain_set = 0
+2:3/0/terrain = 0
+2:3/0/terrains_peering_bit/right_side = 0
+2:3/0/terrains_peering_bit/bottom_right_corner = 0
+2:3/0/terrains_peering_bit/bottom_side = 0
+2:3/0/terrains_peering_bit/bottom_left_corner = 2
+2:3/0/terrains_peering_bit/left_side = 0
+2:3/0/terrains_peering_bit/top_left_corner = 0
+2:3/0/terrains_peering_bit/top_side = 0
+2:3/0/terrains_peering_bit/top_right_corner = 0
+2:4/0 = 0
+2:4/0/terrain_set = 0
+2:4/0/terrain = 0
+2:4/0/terrains_peering_bit/right_side = 0
+2:4/0/terrains_peering_bit/bottom_right_corner = 0
+2:4/0/terrains_peering_bit/bottom_side = 0
+2:4/0/terrains_peering_bit/bottom_left_corner = 2
+2:4/0/terrains_peering_bit/left_side = 2
+2:4/0/terrains_peering_bit/top_left_corner = 2
+2:4/0/terrains_peering_bit/top_side = 0
+2:4/0/terrains_peering_bit/top_right_corner = 0
+2:5/0 = 0
+2:5/0/terrain_set = 0
+2:5/0/terrain = 0
+2:5/0/terrains_peering_bit/right_side = 0
+2:5/0/terrains_peering_bit/bottom_right_corner = 0
+2:5/0/terrains_peering_bit/bottom_side = 0
+2:5/0/terrains_peering_bit/bottom_left_corner = 0
+2:5/0/terrains_peering_bit/left_side = 0
+2:5/0/terrains_peering_bit/top_left_corner = 2
+2:5/0/terrains_peering_bit/top_side = 0
+2:5/0/terrains_peering_bit/top_right_corner = 0
+1:5/0 = 0
+1:5/0/terrain_set = 0
+1:5/0/terrain = 0
+1:5/0/terrains_peering_bit/right_side = 0
+1:5/0/terrains_peering_bit/bottom_right_corner = 0
+1:5/0/terrains_peering_bit/bottom_side = 0
+1:5/0/terrains_peering_bit/bottom_left_corner = 0
+1:5/0/terrains_peering_bit/left_side = 0
+1:5/0/terrains_peering_bit/top_left_corner = 2
+1:5/0/terrains_peering_bit/top_side = 2
+1:5/0/terrains_peering_bit/top_right_corner = 2
+1:4/0 = 0
+1:4/0/terrain_set = 0
+1:4/0/terrain = 2
+1:4/0/terrains_peering_bit/right_side = 2
+1:4/0/terrains_peering_bit/bottom_right_corner = 2
+1:4/0/terrains_peering_bit/bottom_side = 2
+1:4/0/terrains_peering_bit/bottom_left_corner = 2
+1:4/0/terrains_peering_bit/left_side = 2
+1:4/0/terrains_peering_bit/top_left_corner = 2
+1:4/0/terrains_peering_bit/top_side = 2
+1:4/0/terrains_peering_bit/top_right_corner = 2
+0:4/0 = 0
+0:4/0/terrain_set = 0
+0:4/0/terrain = 0
+0:4/0/terrains_peering_bit/right_side = 2
+0:4/0/terrains_peering_bit/bottom_right_corner = 2
+0:4/0/terrains_peering_bit/bottom_side = 0
+0:4/0/terrains_peering_bit/bottom_left_corner = 0
+0:4/0/terrains_peering_bit/left_side = 0
+0:4/0/terrains_peering_bit/top_left_corner = 0
+0:4/0/terrains_peering_bit/top_side = 0
+0:4/0/terrains_peering_bit/top_right_corner = 2
+0:5/0 = 0
+0:5/0/terrain_set = 0
+0:5/0/terrain = 0
+0:5/0/terrains_peering_bit/right_side = 0
+0:5/0/terrains_peering_bit/bottom_right_corner = 0
+0:5/0/terrains_peering_bit/bottom_side = 0
+0:5/0/terrains_peering_bit/bottom_left_corner = 0
+0:5/0/terrains_peering_bit/left_side = 0
+0:5/0/terrains_peering_bit/top_left_corner = 0
+0:5/0/terrains_peering_bit/top_side = 0
+0:5/0/terrains_peering_bit/top_right_corner = 2
+1:6/0 = 0
+1:6/0/terrain_set = 0
+1:6/0/terrain = 0
+1:6/0/terrains_peering_bit/right_side = 2
+1:6/0/terrains_peering_bit/bottom_right_corner = 2
+1:6/0/terrains_peering_bit/bottom_side = 0
+1:6/0/terrains_peering_bit/bottom_left_corner = 0
+1:6/0/terrains_peering_bit/left_side = 0
+1:6/0/terrains_peering_bit/top_left_corner = 2
+1:6/0/terrains_peering_bit/top_side = 2
+1:6/0/terrains_peering_bit/top_right_corner = 2
+0:6/0 = 0
+0:6/0/terrain_set = 0
+0:6/0/terrain = 0
+0:6/0/terrains_peering_bit/right_side = 0
+0:6/0/terrains_peering_bit/bottom_right_corner = 0
+0:6/0/terrains_peering_bit/bottom_side = 0
+0:6/0/terrains_peering_bit/bottom_left_corner = 2
+0:6/0/terrains_peering_bit/left_side = 2
+0:6/0/terrains_peering_bit/top_left_corner = 2
+0:6/0/terrains_peering_bit/top_side = 2
+0:6/0/terrains_peering_bit/top_right_corner = 2
+0:7/0 = 0
+0:7/0/terrain_set = 0
+0:7/0/terrain = 0
+0:7/0/terrains_peering_bit/right_side = 0
+0:7/0/terrains_peering_bit/bottom_right_corner = 2
+0:7/0/terrains_peering_bit/bottom_side = 2
+0:7/0/terrains_peering_bit/bottom_left_corner = 2
+0:7/0/terrains_peering_bit/left_side = 2
+0:7/0/terrains_peering_bit/top_left_corner = 2
+0:7/0/terrains_peering_bit/top_side = 0
+0:7/0/terrains_peering_bit/top_right_corner = 0
+1:7/0 = 0
+1:7/0/terrain_set = 0
+1:7/0/terrain = 0
+1:7/0/terrains_peering_bit/right_side = 2
+1:7/0/terrains_peering_bit/bottom_right_corner = 2
+1:7/0/terrains_peering_bit/bottom_side = 2
+1:7/0/terrains_peering_bit/bottom_left_corner = 2
+1:7/0/terrains_peering_bit/left_side = 0
+1:7/0/terrains_peering_bit/top_left_corner = 0
+1:7/0/terrains_peering_bit/top_side = 0
+1:7/0/terrains_peering_bit/top_right_corner = 2
+2:6/0 = 0
+2:6/0/terrain_set = 0
+2:6/0/terrain = 0
+2:6/0/terrains_peering_bit/right_side = 0
+2:6/0/terrains_peering_bit/bottom_right_corner = 1
+2:6/0/terrains_peering_bit/bottom_side = 0
+2:6/0/terrains_peering_bit/bottom_left_corner = 0
+2:6/0/terrains_peering_bit/left_side = 0
+2:6/0/terrains_peering_bit/top_left_corner = 0
+2:6/0/terrains_peering_bit/top_side = 0
+2:6/0/terrains_peering_bit/top_right_corner = 0
+3:6/0 = 0
+3:6/0/terrain_set = 0
+3:6/0/terrain = 0
+3:6/0/terrains_peering_bit/right_side = 0
+3:6/0/terrains_peering_bit/bottom_right_corner = 1
+3:6/0/terrains_peering_bit/bottom_side = 1
+3:6/0/terrains_peering_bit/bottom_left_corner = 1
+3:6/0/terrains_peering_bit/left_side = 0
+3:6/0/terrains_peering_bit/top_left_corner = 0
+3:6/0/terrains_peering_bit/top_side = 0
+3:6/0/terrains_peering_bit/top_right_corner = 0
+4:6/0 = 0
+4:6/0/terrain_set = 0
+4:6/0/terrain = 0
+4:6/0/terrains_peering_bit/right_side = 0
+4:6/0/terrains_peering_bit/bottom_right_corner = 0
+4:6/0/terrains_peering_bit/bottom_side = 0
+4:6/0/terrains_peering_bit/bottom_left_corner = 1
+4:6/0/terrains_peering_bit/left_side = 0
+4:6/0/terrains_peering_bit/top_left_corner = 0
+4:6/0/terrains_peering_bit/top_side = 0
+4:6/0/terrains_peering_bit/top_right_corner = 0
+4:7/0 = 0
+4:7/0/terrain_set = 0
+4:7/0/terrain = 0
+4:7/0/terrains_peering_bit/right_side = 0
+4:7/0/terrains_peering_bit/bottom_right_corner = 0
+4:7/0/terrains_peering_bit/bottom_side = 0
+4:7/0/terrains_peering_bit/bottom_left_corner = 1
+4:7/0/terrains_peering_bit/left_side = 1
+4:7/0/terrains_peering_bit/top_left_corner = 1
+4:7/0/terrains_peering_bit/top_side = 0
+4:7/0/terrains_peering_bit/top_right_corner = 0
+3:7/0 = 0
+3:7/0/terrain_set = 0
+3:7/0/terrain = 1
+3:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
+3:7/0/terrains_peering_bit/right_side = 1
+3:7/0/terrains_peering_bit/bottom_right_corner = 1
+3:7/0/terrains_peering_bit/bottom_side = 1
+3:7/0/terrains_peering_bit/bottom_left_corner = 1
+3:7/0/terrains_peering_bit/left_side = 1
+3:7/0/terrains_peering_bit/top_left_corner = 1
+3:7/0/terrains_peering_bit/top_side = 1
+3:7/0/terrains_peering_bit/top_right_corner = 1
+2:7/0 = 0
+2:7/0/terrain_set = 0
+2:7/0/terrain = 0
+2:7/0/terrains_peering_bit/right_side = 1
+2:7/0/terrains_peering_bit/bottom_right_corner = 1
+2:7/0/terrains_peering_bit/bottom_side = 0
+2:7/0/terrains_peering_bit/bottom_left_corner = 0
+2:7/0/terrains_peering_bit/left_side = 0
+2:7/0/terrains_peering_bit/top_left_corner = 0
+2:7/0/terrains_peering_bit/top_side = 0
+2:7/0/terrains_peering_bit/top_right_corner = 1
+2:8/0 = 0
+2:8/0/terrain_set = 0
+2:8/0/terrain = 0
+2:8/0/terrains_peering_bit/right_side = 0
+2:8/0/terrains_peering_bit/bottom_right_corner = 0
+2:8/0/terrains_peering_bit/bottom_side = 0
+2:8/0/terrains_peering_bit/bottom_left_corner = 0
+2:8/0/terrains_peering_bit/left_side = 0
+2:8/0/terrains_peering_bit/top_left_corner = 0
+2:8/0/terrains_peering_bit/top_side = 0
+2:8/0/terrains_peering_bit/top_right_corner = 1
+3:8/0 = 0
+3:8/0/terrain_set = 0
+3:8/0/terrain = 0
+3:8/0/terrains_peering_bit/right_side = 0
+3:8/0/terrains_peering_bit/bottom_right_corner = 0
+3:8/0/terrains_peering_bit/bottom_side = 0
+3:8/0/terrains_peering_bit/bottom_left_corner = 0
+3:8/0/terrains_peering_bit/left_side = 0
+3:8/0/terrains_peering_bit/top_left_corner = 1
+3:8/0/terrains_peering_bit/top_side = 1
+3:8/0/terrains_peering_bit/top_right_corner = 1
+4:8/0 = 0
+4:8/0/terrain_set = 0
+4:8/0/terrain = 0
+4:8/0/terrains_peering_bit/right_side = 0
+4:8/0/terrains_peering_bit/bottom_right_corner = 0
+4:8/0/terrains_peering_bit/bottom_side = 0
+4:8/0/terrains_peering_bit/bottom_left_corner = 0
+4:8/0/terrains_peering_bit/left_side = 0
+4:8/0/terrains_peering_bit/top_left_corner = 1
+4:8/0/terrains_peering_bit/top_side = 0
+4:8/0/terrains_peering_bit/top_right_corner = 0
+0:1/animation_columns = 4
+0:1/animation_mode = 1
+0:1/animation_frame_0/duration = 0.5
+0:1/animation_frame_1/duration = 0.5
+0:1/animation_frame_2/duration = 0.5
+0:1/animation_frame_3/duration = 0.5
+0:1/animation_frame_4/duration = 0.5
+0:1/animation_frame_5/duration = 0.5
+0:1/animation_frame_6/duration = 0.5
+0:1/animation_frame_7/duration = 0.5
+0:1/0 = 0
+0:1/0/terrain_set = 0
+0:1/0/terrain = 1
+0:1/0/probability = 0.3
+0:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
+0:1/0/terrains_peering_bit/right_side = 1
+0:1/0/terrains_peering_bit/bottom_right_corner = 1
+0:1/0/terrains_peering_bit/bottom_side = 1
+0:1/0/terrains_peering_bit/bottom_left_corner = 1
+0:1/0/terrains_peering_bit/left_side = 1
+0:1/0/terrains_peering_bit/top_left_corner = 1
+0:1/0/terrains_peering_bit/top_side = 1
+0:1/0/terrains_peering_bit/top_right_corner = 1
+11:0/size_in_atlas = Vector2i(2, 2)
+11:0/0 = 0
+11:0/0/texture_origin = Vector2i(8, 8)
+11:0/0/z_index = 2
+14:0/size_in_atlas = Vector2i(2, 2)
+14:0/0 = 0
+14:0/0/texture_origin = Vector2i(-8, 8)
+14:0/0/z_index = 2
+11:2/size_in_atlas = Vector2i(5, 3)
+11:2/0 = 0
+11:2/0/z_index = 1
+25:7/size_in_atlas = Vector2i(1, 2)
+25:7/0 = 0
+25:7/0/z_index = 1
+16:4/size_in_atlas = Vector2i(1, 2)
+16:4/0 = 0
+16:4/0/texture_origin = Vector2i(0, 8)
+16:4/0/z_index = 1
+17:4/size_in_atlas = Vector2i(1, 2)
+17:4/0 = 0
+17:4/0/texture_origin = Vector2i(0, 8)
+17:4/0/z_index = 1
+18:4/size_in_atlas = Vector2i(1, 2)
+18:4/0 = 0
+18:4/0/texture_origin = Vector2i(0, 8)
+18:4/0/z_index = 1
+19:4/size_in_atlas = Vector2i(1, 2)
+19:4/0 = 0
+19:4/0/texture_origin = Vector2i(0, 8)
+19:4/0/z_index = 1
+20:4/size_in_atlas = Vector2i(1, 2)
+20:4/0 = 0
+20:4/0/texture_origin = Vector2i(0, 8)
+20:4/0/z_index = 1
+
+[sub_resource type="TileSet" id="TileSet_snsnx"]
+physics_layer_0/collision_layer = 1
+terrain_set_0/mode = 0
+terrain_set_0/terrain_0/name = "Grass"
+terrain_set_0/terrain_0/color = Color(0.34902, 0.890196, 0.352941, 1)
+terrain_set_0/terrain_1/name = "Water"
+terrain_set_0/terrain_1/color = Color(0.223529, 0.6, 0.882353, 1)
+terrain_set_0/terrain_2/name = "Grass Paths"
+terrain_set_0/terrain_2/color = Color(0.588235, 0.713726, 0.239216, 1)
+sources/0 = SubResource("TileSetAtlasSource_n0o3p")
+
+[node name="MainLevel" type="Node2D"]
+script = ExtResource("1_rqc32")
+
+[node name="TileMapLayer" type="TileMapLayer" parent="."]
+position = Vector2(-154, 113)
+tile_map_data = PackedByteArray("AAAAAP//AAASACEAAAD/////AAARACEAAAD+////AAARACEAAAD9////AAARACEAAAD7////AAAQACEAAAD6////AAAHAAoAAAD5////AAAHAAkAAAD4////AAAHAAkAAAD5/wAAAAAFAAoAAAD6/wAAAAAAAAMAAAD7/wAAAAABAAMAAAD8/wAAAAABAAMAAAD9/wAAAAABAAMAAAD+/wAAAAABAAMAAAD//wAAAAABAAMAAAAAAAAAAAABAAMAAAABAAAAAAABAAMAAAACAAEAAAABAAQAAAADAAEAAAABAAQAAAAEAAEAAAABAAQAAAD4/wAAAAANABwAAAD3/wAAAAAIAAoAAAACAAAAAAABAAMAAAADAAAAAAABAAMAAAAEAAAAAAABAAMAAAAFAAAAAAABAAMAAAAGAAAAAAABAAcAAAAHAAAAAAABAAQAAAAIAAAAAAAAAAcAAAABAP//AAAIAAoAAAACAP//AAAIAAoAAAADAP//AAAFAAkAAAAEAP//AAAHAAoAAAAFAP//AAAFAAkAAAAGAP//AAAAAAMAAAD2/wAAAAAMABwAAAD1/wAAAAALABwAAAD9/wEAAAABAAQAAAD+/wEAAAABAAQAAAD//wEAAAABAAQAAAAAAAEAAAABAAQAAAABAAEAAAABAAQAAAAFAAEAAAABAAQAAAAGAAEAAAABAAQAAAAHAAEAAAABAAQAAAAIAAEAAAABAAQAAAAJAAEAAAABAAQAAAD8/wEAAAABAAQAAAD7/wEAAAABAAQAAAD6/wEAAAABAAcAAAD5/wEAAAABAAMAAAD4/wEAAAAAAAMAAAD3/wEAAAAHAAkAAAD2/wEAAAAFAAoAAAD1/wEAAAAFAAkAAAD0/wEAAAAHAAoAAAD5//7/AAAFAAkAAAD6//7/AAAIAAoAAAD7//7/AAAQACAAAAD8//7/AAARACAAAAD9//7/AAARACAAAAD+//7/AAARACAAAAD///7/AAARACAAAAAAAP7/AAASACAAAAABAP7/AAAFAAoAAAACAP7/AAAIAAoAAAADAP7/AAAFAAoAAAAFAP7/AAAFAAkAAAAGAP7/AAAAAAAAAAAIAP7/AAACAAMAAAAJAP7/AAAHAAkAAAALAP7/AAAFAAoAAAAMAP7/AAAAAAAAAAD4//7/AAAFAAoAAAD3//7/AAAAAAAAAAD3//3/AAANABwAAAD4//3/AAAHAAoAAAD5//3/AAAFAAoAAAD6//3/AAAHAAoAAAD7//3/AAAHAAoAAAD8//3/AAAIAAkAAAD9//3/AAAFAAkAAAD+//3/AAAAAAAAAAD///3/AAAIAAoAAAAAAP3/AAAIAAkAAAABAP3/AAAIAAoAAAACAP3/AAAHAAkAAAADAP3/AAANABwAAAAEAPz/AAAHAAkAAAAFAPz/AAAAAAAAAAAHAPz/AAAIAAoAAAADAPz/AAAFAAkAAAACAPz/AAAIAAoAAAABAPz/AAAIAAkAAAAAAPz/AAAHAAoAAAD///z/AAAHAAoAAAD+//z/AAAIAAoAAAD9//z/AAAFAAoAAAD8//z/AAAAAAAAAAD7//z/AAAFAAoAAAD6//z/AAAAAAAAAAD5//z/AAANABwAAAD4//z/AAAIAAkAAAD3//z/AAAFAAkAAAAEAP3/AAAAAAAAAAAFAP3/AAAFAAkAAAAGAP3/AAAAAAAAAAAIAP3/AAAFAAoAAAAJAP3/AAAHAAoAAAALAP3/AAAIAAkAAAAMAP3/AAAFAAoAAAANAP7/AAAHAAoAAAAJAPz/AAAHAAoAAAAKAPz/AAAIAAoAAAALAPz/AAAFAAoAAAD+//v/AAAHAAoAAAD9//v/AAAFAAkAAAD8//v/AAAHAAoAAAD7//v/AAAIAAoAAAD6//v/AAAAAAAAAAD5//v/AAAIAAkAAAD4//v/AAAFAAkAAAD3//v/AAAIAAkAAAD2//v/AAAAAAAAAAD///v/AAANABwAAAAAAPv/AAAHAAkAAAABAPv/AAAIAAkAAAACAPv/AAAHAAkAAAADAPv/AAAAAAAAAAAEAPv/AAAFAAoAAAAFAPv/AAAHAAoAAAAGAPv/AAAHAAoAAAAHAPv/AAAIAAoAAAAJAPv/AAAFAAkAAAAKAPv/AAAFAAoAAAALAPv/AAAFAAoAAAAMAPv/AAAAAAAAAAD1//v/AAAFAAkAAAD0//v/AAAIAAkAAADz//r/AAAFAAkAAADy//r/AAAFAAkAAADy//v/AAAHAAoAAADz//v/AAAAAAAAAAAAAPr/AAAFAAoAAAD///r/AAAFAAoAAAD+//r/AAAFAAoAAAD9//r/AAAHAAoAAAD8//r/AAAHAAkAAAD7//r/AAAAAAAAAAD6//r/AAAHAAoAAAD5//r/AAAAAAAAAAD4//r/AAAIAAkAAAD3//r/AAAHAAoAAAD2//r/AAAFAAkAAAD1//r/AAAIAAkAAAD0//r/AAAFAAkAAAABAPr/AAAIAAkAAAACAPr/AAAFAAoAAAADAPr/AAAHAAkAAAAEAPr/AAAFAAoAAAAFAPr/AAAIAAoAAAAGAPr/AAAIAAkAAAAHAPr/AAAIAAkAAAAIAPr/AAAFAAoAAAAJAPr/AAAFAAoAAAAKAPr/AAAIAAoAAAALAPr/AAAHAAkAAAD6//n/AAAHAAkAAAD5//n/AAAIAAkAAAD4//n/AAAAAAAAAAD3//n/AAAIAAkAAAD2//n/AAAFAAoAAAD1//n/AAAFAAoAAAD0//n/AAAHAAoAAAAMAPr/AAAFAAkAAAANAPr/AAAHAAoAAAAOAPr/AAAIAAoAAAAPAPr/AAAAAAAAAAAQAPr/AAAFAAkAAAAIAPn/AAAFAAkAAAAHAPn/AAAHAAkAAAAGAPn/AAAAAAAAAAAFAPn/AAAAAAAAAAAEAPn/AAAFAAkAAAADAPn/AAAFAAoAAAACAPn/AAAAAAAAAAABAPn/AAAFAAkAAAAAAPn/AAAIAAkAAAD///n/AAAHAAoAAAD+//n/AAAFAAkAAAD9//n/AAAHAAkAAAD8//n/AAAFAAkAAAD7//n/AAAFAAoAAAD2//j/AAAHAAoAAAD1//j/AAAHAAkAAAD0//j/AAAHAAoAAADz//j/AAAFAAoAAADy//j/AAAFAAkAAADx//j/AAAFAAoAAAAJAPn/AAAFAAkAAAD///j/AAAFAAkAAAD+//j/AAAIAAkAAAD9//j/AAAFAAkAAAD8//j/AAAIAAkAAAD7//j/AAAFAAoAAAD6//j/AAAFAAoAAAD5//j/AAAIAAoAAAD4//j/AAAIAAkAAAD3//j/AAAFAAkAAAAAAPj/AAAIAAoAAAABAPj/AAAHAAoAAAACAPj/AAAFAAoAAAADAPj/AAAHAAoAAAAEAPj/AAAIAAkAAAAFAPj/AAAHAAoAAAAGAPj/AAAAAAAAAAAHAPj/AAAIAAoAAAAIAPj/AAAHAAkAAAAJAPj/AAAFAAoAAAAKAPj/AAAAAAAAAAAEAPf/AAAHAAkAAAADAPf/AAAFAAkAAAACAPf/AAAHAAkAAAABAPf/AAAIAAoAAAAAAPf/AAAFAAkAAAD///f/AAAIAAoAAAD+//f/AAAHAAoAAAD9//f/AAAIAAoAAAD8//f/AAAIAAkAAAD7//f/AAAIAAoAAAD6//f/AAAIAAkAAAD5//f/AAAHAAoAAAD4//f/AAAIAAkAAAD3//f/AAAIAAoAAAD2//f/AAAIAAkAAAD1//f/AAAHAAkAAAD0//f/AAAFAAoAAADz//f/AAAFAAkAAAALAPj/AAAFAAoAAAAMAPj/AAAHAAoAAAANAPj/AAAFAAoAAAAOAPj/AAAHAAoAAAAPAPj/AAAHAAoAAAAQAPn/AAAIAAkAAAARAPn/AAAIAAkAAAASAPn/AAAFAAkAAAATAPn/AAAFAAoAAAAPAPn/AAAHAAoAAAAOAPn/AAAHAAoAAADx//7/AAADAAcAAADx//3/AAADAAcAAADx//z/AAADAAYAAADx//v/AAAFAAkAAADx//r/AAAFAAoAAADx//n/AAAAAAAAAADy//n/AAAFAAoAAADz//n/AAAAAAAAAADy//z/AAAEAAYAAADy//3/AAACAAoAAADy//7/AAAAAAEAAADy////AAADAAcAAADx////AAADAAcAAADx/wAAAAADAAcAAADx/wEAAAAAAAEAAADy/wEAAAACAAkAAADy/wAAAAADAAcAAADz/wAAAAACAAkAAADz////AAADAAcAAADz//7/AAADAAcAAADz//3/AAADAAYAAADz//z/AAAFAAoAAAD0//z/AAAIAAkAAAD0//3/AAAEAAYAAAD0//7/AAAEAAcAAAD0////AAAEAAcAAAD0/wAAAAAEAAgAAAD1////AAAAAAAAAAD1//7/AAAFAAoAAAD1//3/AAAFAAoAAAD1//z/AAAAAAAAAAD2//z/AAAIAAoAAAD2//3/AAAAAAAAAAD2//7/AAAHAAkAAAD2////AAAIAAkAAAD3////AAAHAAoAAADz/wEAAAAEAAgAAADy//f/AAAHAAoAAADx//f/AAAFAAoAAAAIAPf/AAAIAAoAAAAHAPf/AAAIAAoAAAAGAPf/AAAIAAkAAAAFAPf/AAAFAAkAAAAJAPf/AAAIAAoAAAAKAPf/AAAIAAkAAAALAPf/AAAHAAoAAAAMAPf/AAAHAAoAAAANAPf/AAAAAAAAAAAOAPf/AAAAAAAAAAAPAPf/AAAHAAkAAAAQAPf/AAAAAAAAAAAQAPj/AAAHAAkAAAARAPj/AAAHAAoAAAARAPf/AAAIAAkAAAASAPf/AAAAAAAAAAASAPj/AAAIAAoAAAATAPj/AAAFAAoAAAATAPf/AAAIAAoAAAAMAPn/AAAHAAkAAAALAPn/AAAIAAkAAAAKAPn/AAAFAAoAAAANAPn/AAAIAAkAAAASAPv/AAAFAAkAAAASAPr/AAAFAAoAAAARAPr/AAAHAAkAAAARAPv/AAAAAAAAAAAQAPv/AAAFAAkAAAAPAPv/AAAFAAkAAAAOAPv/AAAAAAAAAAANAPv/AAAAAAAAAAANAPz/AAAHAAkAAAAMAPz/AAAFAAkAAAANAP3/AAAFAAoAAAAOAP3/AAANABwAAAAOAPz/AAAAAAAAAAAPAPz/AAAFAAkAAAAPAP3/AAAFAAoAAAAPAP7/AAAHAAkAAAAOAP7/AAAIAAkAAAAOAP//AAAHAAkAAAANAP//AAAIAAoAAAAMAP//AAAIAAoAAAALAP//AAAHAAkAAAAKAP//AAAIAAoAAAAJAP//AAAAAAAAAAAIAP//AAACAAQAAAAJAAAAAAABAAMAAAAKAAAAAAABAAMAAAAKAAEAAAABAAQAAAALAAEAAAABAAQAAAALAAAAAAABAAMAAAAMAAAAAAABAAMAAAAMAAEAAAABAAQAAAANAAEAAAABAAQAAAANAAAAAAABAAMAAAAOAAAAAAABAAMAAAAOAAEAAAABAAQAAAAPAP//AAAIAAkAAAAQAP//AAAIAAoAAAAQAP7/AAAIAAoAAAAQAP3/AAAHAAkAAAAQAPz/AAAHAAoAAAARAPz/AAAIAAoAAAARAP3/AAAHAAoAAAARAP7/AAAAAAAAAAARAP//AAAAAAAAAAASAAEAAAABAAQAAAASAAAAAAABAAMAAAASAP//AAAFAAoAAAASAP7/AAAIAAkAAAASAP3/AAAAAAAAAAASAPz/AAAFAAoAAAATAPz/AAAAAAAAAAATAPv/AAAHAAoAAAATAPr/AAAIAAkAAAATAP3/AAAFAAoAAAATAP7/AAAAAAAAAAATAP//AAAHAAkAAAATAAAAAAABAAMAAAATAAEAAAABAAQAAADi//D/AAAAAAsAAADi//H/AAABAAoAAADi//L/AAABAAkAAADi//P/AAABAAoAAADi//T/AAABAAkAAADi//X/AAABAAoAAADi//b/AAABAAkAAADi//f/AAABAAoAAADi//j/AAABAAkAAADi//n/AAABAAoAAADi//r/AAABAAkAAADi//v/AAABAAoAAADi//z/AAABAAkAAADi//3/AAABAAkAAADi//7/AAABAAkAAADi////AAABAAkAAADi/wAAAAABAAMAAADi/wEAAAABAAQAAADi/wIAAAABAAUAAADi/wMAAAAHAAkAAADi/wQAAAABAAkAAADi/wUAAAABAAkAAADi/wYAAAABAAoAAADi/wcAAAABAAkAAADi/wgAAAABAAoAAADi/wkAAAABAAkAAADi/woAAAABAAoAAADi/wsAAAABAAkAAADi/wwAAAABAAoAAADi/w0AAAABAAkAAADi/w4AAAABAAoAAADi/w8AAAABAAkAAADi/xAAAAABAAoAAADi/xEAAAABAAkAAADi/xIAAAABAAoAAADi/xMAAAABAAkAAADi/xQAAAABAAoAAADi/xUAAAABAAkAAADi/xYAAAABAAoAAADi/xcAAAABAAkAAADi/xgAAAABAAoAAADi/xkAAAABAAkAAADi/xoAAAABAAoAAADi/xsAAAABAAkAAADi/xwAAAABAAoAAADi/x0AAAABAAkAAADi/x4AAAABAAoAAADi/x8AAAABAAkAAADi/yAAAAABAAoAAADi/yEAAAABAAkAAADi/yIAAAABAAoAAADi/yMAAAABAAkAAADi/yQAAAABAAoAAADi/yUAAAABAAkAAADi/yYAAAABAAoAAADi/ycAAAABAAkAAADi/ygAAAABAAoAAADi/ykAAAAIAA4AAADi/yoAAAARAAcAAADi/ysAAAABAAQAAADi/ywAAAABAAUAAADi/y0AAAABAAkAAADi/y4AAAABAAoAAADi/y8AAAABAAkAAADi/zAAAAABAAoAAADi/zEAAAABAAkAAADi/zIAAAABAAoAAADi/zMAAAABAAkAAADj//D/AAABAAsAAADj//H/AAAIAAoAAADj//L/AAAIAAoAAADj//P/AAAHAAoAAADj//T/AAAIAAkAAADj//X/AAAIAAoAAADj//b/AAAFAAkAAADj//f/AAAIAAoAAADj//j/AAAFAAkAAADj//n/AAAHAAoAAADj//r/AAAHAAkAAADj//v/AAAIAAkAAADj//z/AAAHAAkAAADj//3/AAAFAAoAAADj//7/AAAIAAoAAADj////AAAIAAoAAADj/wAAAAABAAMAAADj/wEAAAABAAQAAADj/wIAAAABAAUAAADj/wMAAAAHAAoAAADj/wQAAAAIAAoAAADj/wUAAAAAAAAAAADj/wYAAAAFAAoAAADj/wcAAAAFAAoAAADj/wgAAAAHAAoAAADj/wkAAAAAAAAAAADj/woAAAAFAAkAAADj/wsAAAAFAAoAAADj/wwAAAAFAAkAAADj/w0AAAAFAAoAAADj/w4AAAAHAAoAAADj/w8AAAAAAAAAAADj/xAAAAAHAAkAAADj/xEAAAAIAAoAAADj/xIAAAAAAAAAAADj/xMAAAAIAAoAAADj/xQAAAAFAAoAAADj/xUAAAAIAAkAAADj/xYAAAAFAAoAAADj/xcAAAAFAAoAAADj/xgAAAAAAAAAAADj/xkAAAAIAAkAAADj/xoAAAAIAAkAAADj/xsAAAAHAAoAAADj/xwAAAAHAAkAAADj/x0AAAAFAAkAAADj/x4AAAAHAAoAAADj/x8AAAAHAAoAAADj/yAAAAAHAAkAAADj/yEAAAAIAAoAAADj/yIAAAAIAAkAAADj/yMAAAAFAAkAAADj/yQAAAAHAAoAAADj/yUAAAAAAAAAAADj/yYAAAAFAAoAAADj/ycAAAAIAAoAAADj/ygAAAAFAAkAAADj/ykAAAABAAMAAADj/yoAAAABAAQAAADj/ysAAAABAAQAAADj/ywAAAABAAUAAADj/y0AAAAFAAkAAADj/y4AAAAIAAkAAADj/y8AAAAHAAoAAADj/zAAAAAIAAkAAADj/zEAAAAHAAkAAADj/zIAAAAIAAkAAADj/zMAAAAFAAkAAADk//D/AAABAAsAAADk//H/AAAHAAkAAADk//L/AAAHAAoAAADk//P/AAAIAAkAAADk//T/AAAFAAoAAADk//X/AAAIAAkAAADk//b/AAAHAAoAAADk//f/AAAFAAoAAADk//j/AAAIAAoAAADk//n/AAAHAAkAAADk//r/AAAIAAkAAADk//v/AAAFAAoAAADk//z/AAAFAAoAAADk//3/AAAIAAkAAADk//7/AAAIAAoAAADk////AAAAAAAAAADk/wAAAAABAAMAAADk/wEAAAABAAQAAADk/wIAAAABAAUAAADk/wMAAAAIAAkAAADk/wQAAAAAAAAAAADk/wUAAAAAAAAAAADk/wYAAAAIAAoAAADk/wcAAAAAAAAAAADk/wgAAAAAAAAAAADk/wkAAAAAAAAAAADk/woAAAAIAAkAAADk/wsAAAAHAAoAAADk/wwAAAAHAAoAAADk/w0AAAAFAAoAAADk/w4AAAAAAAAAAADk/w8AAAAAAAAAAADk/xAAAAAFAAoAAADk/xEAAAAFAAoAAADk/xIAAAAHAAoAAADk/xMAAAAAAAAAAADk/xQAAAAFAAoAAADk/xUAAAAIAAoAAADk/xYAAAAIAAoAAADk/xcAAAAFAAkAAADk/xgAAAAFAAoAAADk/xkAAAAAAAAAAADk/xoAAAAHAAoAAADk/xsAAAAHAAkAAADk/xwAAAAHAAkAAADk/x0AAAAFAAoAAADk/x4AAAAAAAAAAADk/x8AAAAFAAkAAADk/yAAAAAIAAkAAADk/yEAAAAHAAkAAADk/yIAAAAIAAoAAADk/yMAAAAFAAkAAADk/yQAAAAHAAkAAADk/yUAAAAIAAoAAADk/yYAAAAIAAoAAADk/ycAAAAFAAoAAADk/ygAAAAFAAoAAADk/ykAAAABAAMAAADk/yoAAAABAAQAAADk/ysAAAABAAQAAADk/ywAAAABAAUAAADk/y0AAAAHAAkAAADk/y4AAAAHAAoAAADk/y8AAAAHAAkAAADk/zAAAAAHAAkAAADk/zEAAAAHAAoAAADk/zIAAAAAAAAAAADk/zMAAAAHAAkAAADl//D/AAABAAsAAADl//H/AAAIAAkAAADl//L/AAAIAAoAAADl//P/AAAHAAkAAADl//T/AAAFAAoAAADl//X/AAAAAAAAAADl//b/AAAHAAoAAADl//f/AAAFAAoAAADl//j/AAAHAAoAAADl//n/AAAFAAkAAADl//r/AAAFAAkAAADl//v/AAAHAAkAAADl//z/AAAIAAkAAADl//3/AAAIAAoAAADl//7/AAAHAAoAAADl////AAAFAAoAAADl/wAAAAABAAMAAADl/wEAAAABAAQAAADl/wIAAAABAAUAAADl/wMAAAAFAAkAAADl/wQAAAAHAAoAAADl/wUAAAAHAAkAAADl/wYAAAAIAAoAAADl/wcAAAAIAAkAAADl/wgAAAAIAAoAAADl/wkAAAAIAAoAAADl/woAAAAHAAoAAADl/wsAAAAHAAkAAADl/wwAAAAIAAkAAADl/w0AAAAAAAAAAADl/w4AAAAIAAoAAADl/w8AAAAFAAoAAADl/xAAAAAIAAkAAADl/xEAAAAFAAoAAADl/xIAAAAFAAoAAADl/xMAAAAFAAoAAADl/xQAAAAFAAoAAADl/xUAAAAFAAkAAADl/xYAAAAHAAoAAADl/xcAAAAIAAkAAADl/xgAAAAIAAoAAADl/xkAAAAIAAoAAADl/xoAAAAFAAoAAADl/xsAAAAHAAkAAADl/xwAAAAHAAoAAADl/x0AAAAAAAAAAADl/x4AAAAIAAkAAADl/x8AAAAIAAoAAADl/yAAAAAIAAoAAADl/yEAAAAIAAkAAADl/yIAAAAHAAkAAADl/yMAAAAIAAoAAADl/yQAAAAFAAkAAADl/yUAAAAAAAAAAADl/yYAAAAHAAoAAADl/ycAAAAFAAkAAADl/ygAAAAAAAAAAADl/ykAAAABAAMAAADl/yoAAAABAAQAAADl/ysAAAABAAQAAADl/ywAAAABAAUAAADl/y0AAAAIAAkAAADl/y4AAAAAAAAAAADl/y8AAAAAAAAAAADl/zAAAAAHAAkAAADl/zEAAAAHAAkAAADl/zIAAAAFAAkAAADl/zMAAAAAAAAAAADm//D/AAABAAsAAADm//H/AAAIAAoAAADm//L/AAAFAAoAAADm//P/AAAHAAkAAADm//T/AAAIAAkAAADm//X/AAAHAAoAAADm//b/AAAFAAkAAADm//f/AAAFAAkAAADm//j/AAAHAAoAAADm//n/AAAHAAkAAADm//r/AAAAAAAAAADm//v/AAAHAAkAAADm//z/AAAAAAAAAADm//3/AAAIAAkAAADm//7/AAAAAAAAAADm////AAAIAAkAAADm/wAAAAABAAMAAADm/wEAAAABAAQAAADm/wIAAAABAAUAAADm/wMAAAAIAAkAAADm/wQAAAAHAAoAAADm/wUAAAAIAAoAAADm/wYAAAAHAAoAAADm/wcAAAAHAAkAAADm/wgAAAAIAAoAAADm/wkAAAAHAAoAAADm/woAAAAFAAoAAADm/wsAAAAIAAkAAADm/wwAAAAHAAkAAADm/w0AAAAIAAkAAADm/w4AAAAAAAAAAADm/w8AAAAIAAoAAADm/xAAAAAFAAkAAADm/xEAAAAFAAkAAADm/xIAAAAFAAoAAADm/xMAAAAIAAoAAADm/xQAAAAFAAkAAADm/xUAAAAFAAoAAADm/xYAAAAIAAoAAADm/xcAAAAFAAkAAADm/xgAAAAHAAoAAADm/xkAAAAIAAoAAADm/xoAAAAFAAkAAADm/xsAAAAFAAoAAADm/xwAAAAHAAoAAADm/x0AAAAIAAoAAADm/x4AAAAIAAoAAADm/x8AAAAIAAoAAADm/yAAAAAAAAAAAADm/yEAAAAFAAkAAADm/yIAAAAFAAoAAADm/yMAAAAHAAoAAADm/yQAAAAIAAoAAADm/yUAAAAFAAoAAADm/yYAAAAFAAoAAADm/ycAAAAAAAAAAADm/ygAAAAHAAkAAADm/ykAAAABAAMAAADm/yoAAAABAAQAAADm/ysAAAABAAQAAADm/ywAAAABAAYAAADm/y0AAAAAAAUAAADm/y4AAAAIAAoAAADm/y8AAAAIAAkAAADm/zAAAAAIAAoAAADm/zEAAAAHAAoAAADm/zIAAAAHAAkAAADm/zMAAAAIAAkAAADn//D/AAABAAsAAADn//H/AAAFAAoAAADn//L/AAAIAAoAAADn//P/AAAHAAkAAADn//T/AAAIAAkAAADn//X/AAAFAAoAAADn//b/AAAAAAAAAADn//f/AAAFAAoAAADn//j/AAAHAAkAAADn//n/AAAIAAkAAADn//r/AAAHAAoAAADn//v/AAAAAAAAAADn//z/AAAFAAkAAADn//3/AAAFAAkAAADn//7/AAAFAAoAAADn////AAAHAAoAAADn/wAAAAABAAMAAADn/wEAAAABAAQAAADn/wIAAAABAAUAAADn/wMAAAAFAAoAAADn/wQAAAAHAAoAAADn/wUAAAAHAAoAAADn/wYAAAAIAAoAAADn/wcAAAAAAAAAAADn/wgAAAAIAAoAAADn/wkAAAAHAAkAAADn/woAAAAHAAoAAADn/wsAAAAIAAoAAADn/wwAAAAHAAoAAADn/w0AAAAIAAoAAADn/w4AAAAFAAkAAADn/w8AAAAFAAoAAADn/xAAAAAFAAoAAADn/xEAAAAIAAoAAADn/xIAAAAHAAkAAADn/xMAAAAIAAoAAADn/xQAAAAAAAAAAADn/xUAAAAIAAkAAADn/xYAAAAFAAkAAADn/xcAAAAIAAoAAADn/xgAAAAHAAoAAADn/xkAAAAFAAkAAADn/xoAAAAHAAoAAADn/xsAAAAIAAkAAADn/xwAAAAFAAkAAADn/x0AAAAIAAoAAADn/x4AAAAHAAoAAADn/x8AAAAIAAoAAADn/yAAAAAHAAoAAADn/yEAAAAIAAoAAADn/yIAAAAIAAoAAADn/yMAAAAFAAoAAADn/yQAAAAIAAoAAADn/yUAAAAFAAoAAADn/yYAAAAHAAoAAADn/ycAAAAFAAoAAADn/ygAAAAIAAkAAADn/ykAAAABAAMAAADn/yoAAAABAAQAAADn/ysAAAABAAQAAADn/ywAAAABAAQAAADn/y0AAAABAAUAAADn/y4AAAAFAAkAAADn/y8AAAAHAAkAAADn/zAAAAAAAAAAAADn/zEAAAAFAAkAAADn/zIAAAAFAAoAAADn/zMAAAAFAAkAAADo//D/AAABAAsAAADo//H/AAAFAAkAAADo//L/AAAFAAkAAADo//P/AAAAAAAAAADo//T/AAAFAAoAAADo//X/AAAFAAoAAADo//b/AAAHAAkAAADo//f/AAAIAAkAAADo//j/AAAHAAkAAADo//n/AAAAAAAAAADo//r/AAAFAAkAAADo//v/AAAIAAkAAADo//z/AAAFAAkAAADo//3/AAAFAAoAAADo//7/AAAHAAkAAADo////AAAAAAAAAADo/wAAAAABAAMAAADo/wEAAAABAAQAAADo/wIAAAABAAYAAADo/wMAAAAAAAQAAADo/wQAAAAAAAQAAADo/wUAAAAAAAUAAADo/wYAAAAIAAkAAADo/wcAAAAFAAkAAADo/wgAAAAHAAkAAADo/wkAAAAFAAoAAADo/woAAAAHAAkAAADo/wsAAAAAAAAAAADo/wwAAAAFAAkAAADo/w0AAAAIAAoAAADo/w4AAAAIAAkAAADo/w8AAAAAAAAAAADo/xAAAAAAAAAAAADo/xEAAAAHAAoAAADo/xIAAAAHAAkAAADo/xMAAAAIAAoAAADo/xQAAAAFAAoAAADo/xUAAAAAAAAAAADo/xYAAAAIAAoAAADo/xcAAAAHAAkAAADo/xgAAAAFAAkAAADo/xkAAAAAAAAAAADo/xoAAAAFAAoAAADo/xsAAAAHAAoAAADo/xwAAAAAAAAAAADo/x0AAAAHAAoAAADo/x4AAAAFAAkAAADo/x8AAAAFAAkAAADo/yAAAAAIAAoAAADo/yEAAAAHAAoAAADo/yIAAAAFAAkAAADo/yMAAAAFAAkAAADo/yQAAAAIAAkAAADo/yUAAAAFAAoAAADo/yYAAAAAAAAAAADo/ycAAAAFAAkAAADo/ygAAAAHAAkAAADo/ykAAAABAAMAAADo/yoAAAABAAQAAADo/ysAAAABAAQAAADo/ywAAAABAAQAAADo/y0AAAABAAYAAADo/y4AAAAAAAUAAADo/y8AAAAHAAoAAADo/zAAAAAHAAoAAADo/zEAAAAAAAAAAADo/zIAAAAIAAoAAADo/zMAAAAAAAAAAADp//D/AAABAAsAAADp//H/AAAFAAoAAADp//L/AAAFAAkAAADp//P/AAAAAAAAAADp//T/AAAHAAkAAADp//X/AAAFAAoAAADp//b/AAAFAAoAAADp//f/AAAFAAkAAADp//j/AAAHAAoAAADp//n/AAAFAAkAAADp//r/AAAFAAoAAADp//v/AAAFAAoAAADp//z/AAAAAAAAAADp//3/AAAAAAAAAADp//7/AAAFAAkAAADp////AAAHAAoAAADp/wAAAAABAAMAAADp/wEAAAABAAQAAADp/wIAAAABAAQAAADp/wMAAAABAAQAAADp/wQAAAABAAQAAADp/wUAAAABAAYAAADp/wYAAAAAAAQAAADp/wcAAAAAAAUAAADp/wgAAAAFAAoAAADp/wkAAAAAAAAAAADp/woAAAAHAAkAAADp/wsAAAAFAAoAAADp/wwAAAAFAAoAAADp/w0AAAAFAAoAAADp/w4AAAAAAAAAAADp/w8AAAAIAAoAAADp/xAAAAAHAAoAAADp/xEAAAAFAAoAAADp/xIAAAAIAAkAAADp/xMAAAAFAAoAAADp/xQAAAAFAAkAAADp/xUAAAAFAAoAAADp/xYAAAAIAAoAAADp/xcAAAAHAAoAAADp/xgAAAAAAAAAAADp/xkAAAAFAAoAAADp/xoAAAAFAAkAAADp/xsAAAAAAAAAAADp/xwAAAAHAAkAAADp/x0AAAAFAAoAAADp/x4AAAAHAAkAAADp/x8AAAAIAAoAAADp/yAAAAAIAAkAAADp/yEAAAAAAAAAAADp/yIAAAAIAAkAAADp/yMAAAAIAAkAAADp/yQAAAAFAAoAAADp/yUAAAAAAAAAAADp/yYAAAAFAAkAAADp/ycAAAAIAAoAAADp/ygAAAAFAAoAAADp/ykAAAACAAMAAADp/yoAAAAAAAcAAADp/ysAAAABAAQAAADp/ywAAAABAAQAAADp/y0AAAABAAQAAADp/y4AAAABAAUAAADp/y8AAAAIAAoAAADp/zAAAAAFAAkAAADp/zEAAAAHAAkAAADp/zIAAAAFAAoAAADp/zMAAAAAAAAAAADq//D/AAABAAsAAADq//H/AAAFAAoAAADq//L/AAAIAAoAAADq//P/AAAAAAAAAADq//T/AAAIAAoAAADq//X/AAAHAAoAAADq//b/AAAFAAkAAADq//f/AAAHAAkAAADq//j/AAAAAAAAAADq//n/AAAHAAkAAADq//r/AAAAAAAAAADq//v/AAAFAAkAAADq//z/AAAFAAkAAADq//3/AAAFAAkAAADq//7/AAAFAAoAAADq////AAAIAAkAAADq/wAAAAACAAMAAADq/wEAAAACAAQAAADq/wIAAAACAAQAAADq/wMAAAACAAQAAADq/wQAAAAAAAcAAADq/wUAAAABAAQAAADq/wYAAAABAAQAAADq/wcAAAABAAYAAADq/wgAAAAAAAUAAADq/wkAAAAIAAoAAADq/woAAAAAAAAAAADq/wsAAAAIAAoAAADq/wwAAAAHAAoAAADq/w0AAAAIAAkAAADq/w4AAAAFAAoAAADq/w8AAAAIAAkAAADq/xAAAAAHAAoAAADq/xEAAAAHAAkAAADq/xIAAAAFAAkAAADq/xMAAAAHAAoAAADq/xQAAAAHAAoAAADq/xUAAAAFAAoAAADq/xYAAAAHAAoAAADq/xcAAAAIAAkAAADq/xgAAAAAAAAAAADq/xkAAAAHAAkAAADq/xoAAAAHAAkAAADq/xsAAAAHAAoAAADq/xwAAAAAAAAAAADq/x0AAAAHAAkAAADq/x4AAAAFAAoAAADq/x8AAAAIAAkAAADq/yAAAAAAAAAAAADq/yEAAAAAAAAAAADq/yIAAAAFAAoAAADq/yMAAAAIAAkAAADq/yQAAAAIAAkAAADq/yUAAAAIAAoAAADq/yYAAAAFAAkAAADq/ycAAAAIAAkAAADq/ygAAAAHAAoAAADq/ykAAAAFAAoAAADq/yoAAAACAAMAAADq/ysAAAAAAAcAAADq/ywAAAABAAQAAADq/y0AAAABAAQAAADq/y4AAAABAAYAAADq/y8AAAAAAAUAAADq/zAAAAAIAAoAAADq/zEAAAAHAAkAAADq/zIAAAAFAAkAAADq/zMAAAAAAAAAAADr//D/AAABAAsAAADr//H/AAAAAAAAAADr//L/AAAIAAkAAADr//P/AAAIAAkAAADr//T/AAAHAAoAAADr//X/AAAFAAkAAADr//b/AAAHAAkAAADr//f/AAAIAAoAAADr//j/AAAIAAkAAADr//n/AAAFAAoAAADr//r/AAAIAAkAAADr//v/AAAIAAoAAADr//z/AAAIAAoAAADr//3/AAAFAAkAAADr//7/AAAFAAkAAADr////AAAAAAAAAADr/wAAAAAHAAkAAADr/wEAAAAFAAoAAADr/wIAAAAIAAoAAADr/wMAAAAFAAoAAADr/wQAAAACAAMAAADr/wUAAAAAAAcAAADr/wYAAAABAAQAAADr/wcAAAABAAQAAADr/wgAAAABAAYAAADr/wkAAAAAAAUAAADr/woAAAAIAAoAAADr/wsAAAAIAAoAAADr/wwAAAAIAAkAAADr/w0AAAAFAAoAAADr/w4AAAAFAAoAAADr/w8AAAAIAAkAAADr/xAAAAAFAAkAAADr/xEAAAAFAAkAAADr/xIAAAAIAAoAAADr/xMAAAAFAAkAAADr/xQAAAAHAAoAAADr/xUAAAAHAAoAAADr/xYAAAAIAAkAAADr/xcAAAAIAAkAAADr/xgAAAAHAAoAAADr/xkAAAAIAAoAAADr/xoAAAAFAAoAAADr/xsAAAAIAAoAAADr/xwAAAAHAAkAAADr/x0AAAAAAAAAAADr/x4AAAAFAAoAAADr/x8AAAAAAAAAAADr/yAAAAAAAAAAAADr/yEAAAAHAAkAAADr/yIAAAAFAAkAAADr/yMAAAAAAAAAAADr/yQAAAAIAAkAAADr/yUAAAAIAAkAAADr/yYAAAAFAAkAAADr/ycAAAAAAAAAAADr/ygAAAAFAAkAAADr/ykAAAAHAAoAAADr/yoAAAAIAAoAAADr/ysAAAACAAMAAADr/ywAAAAAAAcAAADr/y0AAAABAAQAAADr/y4AAAABAAQAAADr/y8AAAABAAUAAADr/zAAAAAHAAoAAADr/zEAAAAFAAoAAADr/zIAAAAFAAoAAADr/zMAAAAAAAAAAADs//D/AAABAAsAAADs//H/AAAFAAkAAADs//L/AAAAAAAAAADs//P/AAAIAAkAAADs//T/AAAIAAoAAADs//X/AAAHAAoAAADs//b/AAAHAAoAAADs//f/AAAIAAoAAADs//j/AAAFAAkAAADs//n/AAAIAAoAAADs//r/AAAAAAAAAADs//v/AAAAAAAAAADs//z/AAAIAAkAAADs//3/AAAIAAkAAADs//7/AAAFAAkAAADs////AAAFAAkAAADs/wAAAAAFAAoAAADs/wEAAAAIAAoAAADs/wIAAAAIAAkAAADs/wMAAAAFAAoAAADs/wQAAAAIAAoAAADs/wUAAAACAAMAAADs/wYAAAAAAAcAAADs/wcAAAABAAQAAADs/wgAAAABAAQAAADs/wkAAAABAAYAAADs/woAAAAAAAUAAADs/wsAAAAFAAoAAADs/wwAAAAIAAoAAADs/w0AAAAIAAkAAADs/w4AAAAIAAoAAADs/w8AAAAHAAoAAADs/xAAAAAIAAoAAADs/xEAAAAHAAkAAADs/xIAAAAAAAAAAADs/xMAAAAHAAoAAADs/xQAAAAHAAkAAADs/xUAAAAHAAkAAADs/xYAAAAIAAkAAADs/xcAAAAAAAAAAADs/xgAAAAFAAoAAADs/xkAAAAHAAoAAADs/xoAAAAHAAkAAADs/xsAAAAHAAkAAADs/xwAAAAFAAoAAADs/x0AAAAHAAkAAADs/x4AAAAHAAoAAADs/x8AAAAHAAoAAADs/yAAAAAHAAkAAADs/yEAAAAIAAoAAADs/yIAAAAIAAoAAADs/yMAAAAFAAoAAADs/yQAAAAHAAkAAADs/yUAAAAHAAoAAADs/yYAAAAHAAkAAADs/ycAAAAIAAkAAADs/ygAAAAAAAAAAADs/ykAAAAIAAkAAADs/yoAAAAHAAoAAADs/ysAAAAHAAoAAADs/ywAAAABAAMAAADs/y0AAAABAAQAAADs/y4AAAABAAQAAADs/y8AAAABAAYAAADs/zAAAAAAAAUAAADs/zEAAAAIAAkAAADs/zIAAAAHAAkAAADs/zMAAAAIAAoAAADt//D/AAABAAsAAADt//H/AAAIAAoAAADt//L/AAAIAAoAAADt//P/AAAHAAoAAADt//T/AAAAAAAAAADt//X/AAAAAAAAAADt//b/AAAAAAAAAADt//f/AAAIAAkAAADt//j/AAAIAAkAAADt//n/AAAIAAkAAADt//r/AAAAAAAAAADt//v/AAAHAAoAAADt//z/AAAAAAAAAADt//3/AAAFAAkAAADt//7/AAAFAAkAAADt////AAAIAAoAAADt/wAAAAAFAAoAAADt/wEAAAAIAAoAAADt/wIAAAAIAAoAAADt/wMAAAAFAAoAAADt/wQAAAAIAAoAAADt/wUAAAAFAAoAAADt/wYAAAACAAMAAADt/wcAAAAAAAcAAADt/wgAAAABAAQAAADt/wkAAAABAAQAAADt/woAAAABAAYAAADt/wsAAAAAAAUAAADt/wwAAAAIAAoAAADt/w0AAAAIAAkAAADt/w4AAAAFAAoAAADt/w8AAAAIAAoAAADt/xAAAAAAAAAAAADt/xEAAAAHAAoAAADt/xIAAAAHAAkAAADt/xMAAAAFAAoAAADt/xQAAAAAAAAAAADt/xUAAAAFAAoAAADt/xYAAAAHAAoAAADt/xcAAAAAAAAAAADt/xgAAAAIAAoAAADt/xkAAAAIAAkAAADt/xoAAAAIAAoAAADt/xsAAAAHAAkAAADt/xwAAAAHAAkAAADt/x0AAAAHAAoAAADt/x4AAAAFAAoAAADt/x8AAAAAAAAAAADt/yAAAAAFAAoAAADt/yEAAAAHAAkAAADt/yIAAAAAAAAAAADt/yMAAAAIAAkAAADt/yQAAAAIAAoAAADt/yUAAAAFAAoAAADt/yYAAAAFAAoAAADt/ycAAAAFAAkAAADt/ygAAAAFAAoAAADt/ykAAAAFAAkAAADt/yoAAAAHAAkAAADt/ysAAAAIAAoAAADt/ywAAAABAAMAAADt/y0AAAABAAQAAADt/y4AAAABAAQAAADt/y8AAAABAAQAAADt/zAAAAABAAUAAADt/zEAAAAHAAoAAADt/zIAAAAIAAkAAADt/zMAAAAHAAoAAADu//D/AAABAAsAAADu//H/AAAIAAoAAADu//L/AAAIAAoAAADu//P/AAAFAAoAAADu//T/AAAHAAoAAADu//X/AAAIAAkAAADu//b/AAAIAAoAAADu//f/AAAFAAoAAADu//j/AAAFAAkAAADu//n/AAAHAAoAAADu//r/AAAFAAkAAADu//v/AAAHAAkAAADu//z/AAAIAAoAAADu//3/AAACAAYAAADu//7/AAACAAcAAADu////AAACAAcAAADu/wAAAAACAAgAAADu/wEAAAAAAAAAAADu/wIAAAAFAAkAAADu/wMAAAAIAAkAAADu/wQAAAAFAAkAAADu/wUAAAAFAAoAAADu/wYAAAAIAAoAAADu/wcAAAACAAMAAADu/wgAAAAAAAcAAADu/wkAAAABAAQAAADu/woAAAABAAQAAADu/wsAAAABAAUAAADu/wwAAAAFAAkAAADu/w0AAAAFAAkAAADu/w4AAAAIAAoAAADu/w8AAAAIAAoAAADu/xAAAAAHAAkAAADu/xEAAAAAAAAAAADu/xIAAAAAAAAAAADu/xMAAAAAAAAAAADu/xQAAAAFAAkAAADu/xUAAAAHAAkAAADu/xYAAAAHAAkAAADu/xcAAAAFAAkAAADu/xgAAAAIAAoAAADu/xkAAAAIAAoAAADu/xoAAAAFAAoAAADu/xsAAAAIAAkAAADu/xwAAAAHAAkAAADu/x0AAAAHAAkAAADu/x4AAAAFAAoAAADu/x8AAAAFAAkAAADu/yAAAAAFAAoAAADu/yEAAAAIAAoAAADu/yIAAAAAAAAAAADu/yMAAAAFAAoAAADu/yQAAAAFAAoAAADu/yUAAAAFAAoAAADu/yYAAAAFAAkAAADu/ycAAAAAAAAAAADu/ygAAAAHAAkAAADu/ykAAAAHAAoAAADu/yoAAAAIAAkAAADu/ysAAAAIAAkAAADu/ywAAAACAAMAAADu/y0AAAAAAAcAAADu/y4AAAABAAQAAADu/y8AAAABAAQAAADu/zAAAAABAAUAAADu/zEAAAAAAAAAAADu/zIAAAAAAAAAAADu/zMAAAAFAAoAAADv//D/AAABAAsAAADv//H/AAAFAAoAAADv//L/AAAHAAkAAADv//P/AAAIAAkAAADv//T/AAAIAAkAAADv//X/AAAAAAAAAADv//b/AAAFAAkAAADv//f/AAAHAAoAAADv//j/AAAFAAoAAADv//n/AAAIAAoAAADv//r/AAAAAAAAAADv//v/AAAFAAkAAADv//z/AAACAAYAAADv//3/AAADAAoAAADv//7/AAADAAcAAADv////AAAAAAEAAADv/wAAAAADAAkAAADv/wEAAAACAAgAAADv/wIAAAAIAAoAAADv/wMAAAAHAAkAAADv/wQAAAAFAAkAAADv/wUAAAAHAAoAAADv/wYAAAAFAAkAAADv/wcAAAAHAAoAAADv/wgAAAACAAMAAADv/wkAAAAAAAcAAADv/woAAAABAAQAAADv/wsAAAABAAYAAADv/wwAAAAAAAUAAADv/w0AAAAIAAkAAADv/w4AAAAFAAkAAADv/w8AAAAFAAoAAADv/xAAAAAFAAoAAADv/xEAAAAIAAoAAADv/xIAAAAAAAAAAADv/xMAAAAAAAAAAADv/xQAAAAFAAkAAADv/xUAAAAHAAoAAADv/xYAAAAHAAoAAADv/xcAAAAHAAkAAADv/xgAAAAHAAoAAADv/xkAAAAHAAoAAADv/xoAAAAFAAkAAADv/xsAAAAAAAAAAADv/xwAAAAFAAkAAADv/x0AAAAIAAkAAADv/x4AAAAHAAoAAADv/x8AAAAHAAoAAADv/yAAAAAIAAkAAADv/yEAAAAFAAkAAADv/yIAAAAAAAAAAADv/yMAAAAFAAoAAADv/yQAAAAAAAAAAADv/yUAAAAHAAoAAADv/yYAAAAIAAkAAADv/ycAAAAIAAoAAADv/ygAAAAHAAkAAADv/ykAAAAIAAkAAADv/yoAAAAFAAoAAADv/ysAAAAFAAoAAADv/ywAAAAAAAMAAADv/y0AAAABAAcAAADv/y4AAAABAAQAAADv/y8AAAABAAQAAADv/zAAAAABAAUAAADv/zEAAAAHAAoAAADv/zIAAAAIAAoAAADv/zMAAAAHAAoAAADw//D/AAABAAsAAADw//H/AAAIAAoAAADw//L/AAAHAAoAAADw//P/AAAHAAoAAADw//T/AAAHAAoAAADw//X/AAAIAAoAAADw//b/AAAHAAkAAADw//f/AAAFAAkAAADw//j/AAAAAAAAAADw//n/AAAHAAkAAADw//r/AAAIAAkAAADw//v/AAAIAAkAAADw//z/AAADAAYAAADw//3/AAAAAAEAAADw//7/AAADAAcAAADw////AAADAAcAAADw/wAAAAADAAcAAADw/wEAAAADAAkAAADw/wIAAAACAAgAAADw/wMAAAAHAAoAAADw/wQAAAAAAAAAAADw/wUAAAAHAAoAAADw/wYAAAAFAAkAAADw/wcAAAAHAAkAAADw/wgAAAAHAAkAAADw/wkAAAABAAMAAADw/woAAAABAAQAAADw/wsAAAABAAQAAADw/wwAAAABAAYAAADw/w0AAAAAAAQAAADw/w4AAAAAAAUAAADw/w8AAAAAAAAAAADw/xAAAAAFAAoAAADw/xEAAAAAAAAAAADw/xIAAAAAAAAAAADw/xMAAAAHAAoAAADw/xQAAAAFAAoAAADw/xUAAAAHAAkAAADw/xYAAAAFAAoAAADw/xcAAAAAAAAAAADw/xgAAAAIAAkAAADw/xkAAAAHAAkAAADw/xoAAAAAAAAAAADw/xsAAAAHAAoAAADw/xwAAAAAAAAAAADw/x0AAAAFAAkAAADw/x4AAAAIAAkAAADw/x8AAAAHAAoAAADw/yAAAAAIAAoAAADw/yEAAAAAAAAAAADw/yIAAAAFAAoAAADw/yMAAAAAAAAAAADw/yQAAAAHAAkAAADw/yUAAAAIAAkAAADw/yYAAAAFAAoAAADw/ycAAAAIAAoAAADw/ygAAAAIAAoAAADw/ykAAAAIAAkAAADw/yoAAAAHAAkAAADw/ysAAAAIAAkAAADw/ywAAAABAAMAAADw/y0AAAABAAQAAADw/y4AAAABAAQAAADw/y8AAAABAAQAAADw/zAAAAABAAUAAADw/zEAAAAIAAoAAADw/zIAAAAAAAAAAADw/zMAAAAIAAoAAADx//D/AAABAAsAAADx//H/AAAHAAkAAADx//L/AAAFAAkAAADx//P/AAAHAAoAAADx//T/AAAHAAkAAADx//X/AAAHAAkAAADx//b/AAAAAAAAAADx/wIAAAADAAgAAADx/wMAAAAIAAoAAADx/wQAAAAHAAoAAADx/wUAAAAHAAoAAADx/wYAAAAHAAkAAADx/wcAAAAHAAkAAADx/wgAAAAFAAkAAADx/wkAAAABAAMAAADx/woAAAABAAQAAADx/wsAAAABAAQAAADx/wwAAAABAAQAAADx/w0AAAABAAQAAADx/w4AAAABAAYAAADx/w8AAAAAAAQAAADx/xAAAAAAAAQAAADx/xEAAAAAAAUAAADx/xIAAAAIAAkAAADx/xMAAAAFAAkAAADx/xQAAAAIAAoAAADx/xUAAAAFAAkAAADx/xYAAAAIAAoAAADx/xcAAAAIAAkAAADx/xgAAAAAAAAAAADx/xkAAAAAAAAAAADx/xoAAAAAAAAAAADx/xsAAAAHAAkAAADx/xwAAAAIAAkAAADx/x0AAAAIAAkAAADx/x4AAAAIAAoAAADx/x8AAAAHAAkAAADx/yAAAAAIAAkAAADx/yEAAAAAAAAAAADx/yIAAAAIAAoAAADx/yMAAAAHAAoAAADx/yQAAAAIAAkAAADx/yUAAAAHAAoAAADx/yYAAAAIAAoAAADx/ycAAAAFAAkAAADx/ygAAAAHAAoAAADx/ykAAAAAAAAAAADx/yoAAAAFAAkAAADx/ysAAAAIAAoAAADx/ywAAAABAAMAAADx/y0AAAABAAQAAADx/y4AAAABAAQAAADx/y8AAAABAAQAAADx/zAAAAABAAUAAADx/zEAAAAIAAkAAADx/zIAAAAHAAoAAADx/zMAAAAAAAAAAADy//D/AAABAAsAAADy//H/AAAFAAoAAADy//L/AAAFAAkAAADy//P/AAAIAAkAAADy//T/AAAFAAoAAADy//X/AAAHAAkAAADy//b/AAAIAAkAAADy/wIAAAAEAAgAAADy/wMAAAAFAAoAAADy/wQAAAAIAAoAAADy/wUAAAAHAAoAAADy/wYAAAAHAAkAAADy/wcAAAAHAAoAAADy/wgAAAAAAAMAAADy/wkAAAABAAcAAADy/woAAAABAAQAAADy/wsAAAABAAQAAADy/wwAAAABAAQAAADy/w0AAAABAAQAAADy/w4AAAABAAQAAADy/w8AAAABAAQAAADy/xAAAAABAAQAAADy/xEAAAABAAYAAADy/xIAAAAAAAQAAADy/xMAAAAAAAQAAADy/xQAAAAAAAUAAADy/xUAAAAHAAkAAADy/xYAAAAHAAkAAADy/xcAAAAIAAkAAADy/xgAAAAIAAkAAADy/xkAAAAHAAkAAADy/xoAAAAIAAoAAADy/xsAAAAAAAAAAADy/xwAAAAFAAkAAADy/x0AAAAFAAkAAADy/x4AAAAAAAAAAADy/x8AAAAFAAoAAADy/yAAAAAFAAoAAADy/yEAAAAAAAAAAADy/yIAAAAFAAoAAADy/yMAAAAAAAAAAADy/yQAAAAIAAkAAADy/yUAAAAHAAoAAADy/yYAAAAAAAAAAADy/ycAAAAHAAkAAADy/ygAAAAIAAoAAADy/ykAAAAFAAkAAADy/yoAAAAIAAoAAADy/ysAAAAAAAAAAADy/ywAAAABAAMAAADy/y0AAAABAAQAAADy/y4AAAABAAQAAADy/y8AAAABAAQAAADy/zAAAAABAAUAAADy/zEAAAAIAAkAAADy/zIAAAAFAAoAAADy/zMAAAAIAAoAAADz//D/AAABAAsAAADz//H/AAAIAAoAAADz//L/AAAHAAoAAADz//P/AAAFAAkAAADz//T/AAAFAAoAAADz//X/AAAFAAoAAADz//b/AAAHAAoAAADz/wIAAAAAAAAAAADz/wMAAAAHAAoAAADz/wQAAAAIAAkAAADz/wUAAAAHAAkAAADz/wYAAAAIAAkAAADz/wcAAAAIAAkAAADz/wgAAAABAAMAAADz/wkAAAABAAQAAADz/woAAAABAAQAAADz/wsAAAAAAAYAAADz/wwAAAACAAQAAADz/w0AAAAAAAcAAADz/w4AAAABAAQAAADz/w8AAAABAAQAAADz/xAAAAABAAQAAADz/xEAAAABAAQAAADz/xIAAAABAAQAAADz/xMAAAABAAQAAADz/xQAAAABAAYAAADz/xUAAAAAAAQAAADz/xYAAAAAAAUAAADz/xcAAAAAAAAAAADz/xgAAAAHAAoAAADz/xkAAAAAAAAAAADz/xoAAAAFAAkAAADz/xsAAAAFAAkAAADz/xwAAAAHAAkAAADz/x0AAAAAAAAAAADz/x4AAAAFAAoAAADz/x8AAAAFAAkAAADz/yAAAAAIAAkAAADz/yEAAAAIAAkAAADz/yIAAAAAAAAAAADz/yMAAAAFAAoAAADz/yQAAAAFAAoAAADz/yUAAAAIAAkAAADz/yYAAAAIAAoAAADz/ycAAAAIAAkAAADz/ygAAAAIAAkAAADz/ykAAAAHAAoAAADz/yoAAAAIAAkAAADz/ysAAAAAAAMAAADz/ywAAAABAAcAAADz/y0AAAABAAQAAADz/y4AAAABAAQAAADz/y8AAAABAAQAAADz/zAAAAABAAUAAADz/zEAAAAHAAoAAADz/zIAAAAIAAkAAADz/zMAAAAHAAoAAAD0//D/AAABAAsAAAD0//H/AAAFAAoAAAD0//L/AAAFAAkAAAD0//P/AAAFAAkAAAD0//T/AAAAAAAAAAD0//X/AAAFAAkAAAD0//b/AAAHAAoAAAD0/wIAAAAFAAkAAAD0/wMAAAAHAAoAAAD0/wQAAAANABwAAAD0/wUAAAAHAAkAAAD0/wYAAAAFAAkAAAD0/wcAAAAAAAMAAAD0/wgAAAABAAcAAAD0/wkAAAABAAQAAAD0/woAAAAAAAYAAAD0/wsAAAACAAUAAAD0/wwAAAAHAAkAAAD0/w0AAAACAAMAAAD0/w4AAAACAAQAAAD0/w8AAAAAAAcAAAD0/xAAAAABAAQAAAD0/xEAAAABAAQAAAD0/xIAAAABAAQAAAD0/xMAAAABAAQAAAD0/xQAAAABAAQAAAD0/xUAAAABAAQAAAD0/xYAAAABAAYAAAD0/xcAAAAAAAQAAAD0/xgAAAAAAAUAAAD0/xkAAAAHAAkAAAD0/xoAAAAAAAAAAAD0/xsAAAAIAAkAAAD0/xwAAAAFAAoAAAD0/x0AAAAIAAoAAAD0/x4AAAAHAAkAAAD0/x8AAAAIAAkAAAD0/yAAAAAIAAkAAAD0/yEAAAAHAAoAAAD0/yIAAAAFAAkAAAD0/yMAAAAIAAkAAAD0/yQAAAAAAAAAAAD0/yUAAAAIAAoAAAD0/yYAAAAAAAAAAAD0/ycAAAAFAAkAAAD0/ygAAAAIAAoAAAD0/ykAAAAHAAkAAAD0/yoAAAAHAAoAAAD0/ysAAAABAAMAAAD0/ywAAAABAAQAAAD0/y0AAAABAAQAAAD0/y4AAAABAAQAAAD0/y8AAAAAAAYAAAD0/zAAAAACAAUAAAD0/zEAAAAFAAkAAAD0/zIAAAAIAAoAAAD0/zMAAAAIAAoAAAD1//D/AAABAAsAAAD1//H/AAAFAAkAAAD1//L/AAAIAAkAAAD1//P/AAAFAAkAAAD1//T/AAAHAAkAAAD1//X/AAAAAAAAAAD1//b/AAAHAAkAAAD1/wIAAAAFAAoAAAD1/wMAAAAHAAoAAAD1/wQAAAAFAAkAAAD1/wUAAAAIAAkAAAD1/wYAAAAAAAMAAAD1/wcAAAABAAcAAAD1/wgAAAABAAQAAAD1/wkAAAABAAQAAAD1/woAAAABAAUAAAD1/wsAAAAAAAAAAAD1/wwAAAAIAAoAAAD1/w0AAAAIAAoAAAD1/w4AAAAIAAoAAAD1/w8AAAACAAMAAAD1/xAAAAAAAAcAAAD1/xEAAAABAAQAAAD1/xIAAAABAAQAAAD1/xMAAAABAAQAAAD1/xQAAAABAAQAAAD1/xUAAAABAAQAAAD1/xYAAAABAAQAAAD1/xcAAAABAAQAAAD1/xgAAAABAAYAAAD1/xkAAAAAAAQAAAD1/xoAAAAAAAUAAAD1/xsAAAAFAAkAAAD1/xwAAAAFAAoAAAD1/x0AAAAFAAkAAAD1/x4AAAAIAAkAAAD1/x8AAAAAAAAAAAD1/yAAAAAHAAoAAAD1/yEAAAAAAAAAAAD1/yIAAAAIAAoAAAD1/yMAAAAIAAkAAAD1/yQAAAAFAAoAAAD1/yUAAAAFAAkAAAD1/yYAAAAHAAoAAAD1/ycAAAAAAAAAAAD1/ygAAAAIAAkAAAD1/ykAAAAFAAkAAAD1/yoAAAAAAAMAAAD1/ysAAAABAAcAAAD1/ywAAAABAAQAAAD1/y0AAAABAAQAAAD1/y4AAAAAAAYAAAD1/y8AAAACAAUAAAD1/zAAAAAAAAAAAAD1/zEAAAAHAAoAAAD1/zIAAAAFAAoAAAD1/zMAAAAHAAoAAAD2//D/AAABAAsAAAD2//H/AAAAAAAAAAD2//L/AAAHAAoAAAD2//P/AAAAAAAAAAD2//T/AAAAAAAAAAD2//X/AAAHAAoAAAD2//b/AAAAAAAAAAD2/wIAAAAAAAAAAAD2/wMAAAAAAAAAAAD2/wQAAAAAAAMAAAD2/wUAAAAAAAQAAAD2/wYAAAABAAcAAAD2/wcAAAABAAQAAAD2/wgAAAABAAQAAAD2/wkAAAAAAAYAAAD2/woAAAACAAUAAAD2/wsAAAAAAAAAAAD2/wwAAAAIAAkAAAD2/w0AAAAFAAoAAAD2/w4AAAAFAAoAAAD2/w8AAAAFAAoAAAD2/xAAAAACAAMAAAD2/xEAAAACAAQAAAD2/xIAAAACAAQAAAD2/xMAAAACAAQAAAD2/xQAAAAAAAcAAAD2/xUAAAABAAQAAAD2/xYAAAABAAQAAAD2/xcAAAABAAQAAAD2/xgAAAABAAQAAAD2/xkAAAABAAQAAAD2/xoAAAABAAYAAAD2/xsAAAAAAAUAAAD2/xwAAAAFAAkAAAD2/x0AAAAFAAkAAAD2/x4AAAAHAAkAAAD2/x8AAAAFAAkAAAD2/yAAAAAFAAkAAAD2/yEAAAAFAAkAAAD2/yIAAAAIAAkAAAD2/yMAAAAFAAkAAAD2/yQAAAAFAAkAAAD2/yUAAAAFAAkAAAD2/yYAAAAAAAAAAAD2/ycAAAAIAAkAAAD2/ygAAAAHAAoAAAD2/ykAAAAAAAMAAAD2/yoAAAABAAcAAAD2/ysAAAABAAQAAAD2/ywAAAABAAQAAAD2/y0AAAAAAAYAAAD2/y4AAAACAAUAAAD2/y8AAAAFAAoAAAD2/zAAAAAFAAkAAAD2/zEAAAAFAAoAAAD2/zIAAAAFAAkAAAD2/zMAAAAHAAkAAAD3//D/AAABAAsAAAD3//H/AAAFAAoAAAD3//L/AAAFAAkAAAD3//P/AAAFAAkAAAD3//T/AAAIAAoAAAD3//X/AAAIAAoAAAD3//b/AAAIAAkAAAD3/wIAAAAAAAMAAAD3/wMAAAAAAAQAAAD3/wQAAAABAAcAAAD3/wUAAAABAAQAAAD3/wYAAAABAAQAAAD3/wcAAAABAAQAAAD3/wgAAAAAAAYAAAD3/wkAAAACAAUAAAD3/woAAAAHAAkAAAD3/wsAAAAIAAkAAAD3/wwAAAAIAAkAAAD3/w0AAAAIAAkAAAD3/w4AAAAHAAkAAAD3/w8AAAAHAAoAAAD3/xAAAAAIAAkAAAD3/xEAAAAIAAkAAAD3/xIAAAAAAAAAAAD3/xMAAAAHAAoAAAD3/xQAAAACAAMAAAD3/xUAAAACAAQAAAD3/xYAAAAAAAcAAAD3/xcAAAABAAQAAAD3/xgAAAABAAQAAAD3/xkAAAABAAQAAAD3/xoAAAABAAQAAAD3/xsAAAABAAYAAAD3/xwAAAAAAAUAAAD3/x0AAAAHAAoAAAD3/x4AAAAHAAkAAAD3/x8AAAAHAAoAAAD3/yAAAAAFAAoAAAD3/yEAAAAFAAoAAAD3/yIAAAAIAAkAAAD3/yMAAAAHAAkAAAD3/yQAAAAFAAkAAAD3/yUAAAAFAAkAAAD3/yYAAAAHAAoAAAD3/ycAAAAHAAkAAAD3/ygAAAAHAAoAAAD3/ykAAAABAAMAAAD3/yoAAAABAAQAAAD3/ysAAAABAAQAAAD3/ywAAAABAAQAAAD3/y0AAAABAAUAAAD3/y4AAAAHAAkAAAD3/y8AAAAFAAkAAAD3/zAAAAAHAAoAAAD3/zEAAAAIAAoAAAD3/zIAAAAIAAkAAAD3/zMAAAAAAAAAAAD4//D/AAABAAsAAAD4//H/AAAIAAoAAAD4//L/AAAIAAkAAAD4//P/AAAFAAkAAAD4//T/AAAFAAoAAAD4//X/AAAFAAkAAAD4//b/AAAHAAoAAAD4/wIAAAABAAcAAAD4/wMAAAABAAQAAAD4/wQAAAABAAQAAAD4/wUAAAAAAAYAAAD4/wYAAAACAAQAAAD4/wcAAAACAAQAAAD4/wgAAAACAAUAAAD4/wkAAAAHAAoAAAD4/woAAAAHAAkAAAD4/wsAAAAHAAoAAAD4/wwAAAAIAAkAAAD4/w0AAAAIAAkAAAD4/w4AAAAHAAkAAAD4/w8AAAAHAAoAAAD4/xAAAAAAAAAAAAD4/xEAAAAHAAkAAAD4/xIAAAAAAAAAAAD4/xMAAAAIAAkAAAD4/xQAAAAAAAAAAAD4/xUAAAAIAAkAAAD4/xYAAAACAAMAAAD4/xcAAAACAAQAAAD4/xgAAAAAAAcAAAD4/xkAAAABAAQAAAD4/xoAAAABAAQAAAD4/xsAAAABAAQAAAD4/xwAAAABAAYAAAD4/x0AAAAAAAUAAAD4/x4AAAAFAAkAAAD4/x8AAAAFAAkAAAD4/yAAAAAHAAkAAAD4/yEAAAAHAAkAAAD4/yIAAAAIAAkAAAD4/yMAAAAHAAkAAAD4/yQAAAAHAAkAAAD4/yUAAAAFAAkAAAD4/yYAAAAHAAoAAAD4/ycAAAAIAAkAAAD4/ygAAAAAAAMAAAD4/ykAAAABAAcAAAD4/yoAAAABAAQAAAD4/ysAAAABAAQAAAD4/ywAAAABAAQAAAD4/y0AAAABAAUAAAD4/y4AAAAIAAoAAAD4/y8AAAAIAAoAAAD4/zAAAAAHAAkAAAD4/zEAAAAFAAoAAAD4/zIAAAAFAAoAAAD4/zMAAAAAAAAAAAD5//D/AAABAAsAAAD5//H/AAAIAAkAAAD5//L/AAAFAAoAAAD5//P/AAAIAAkAAAD5//T/AAAFAAoAAAD5//X/AAAFAAkAAAD5//b/AAAFAAoAAAD5/wIAAAABAAQAAAD5/wMAAAAAAAYAAAD5/wQAAAACAAQAAAD5/wUAAAACAAUAAAD5/wYAAAAFAAkAAAD5/wcAAAAHAAkAAAD5/wgAAAAFAAkAAAD5/wkAAAAFAAkAAAD5/woAAAAIAAoAAAD5/wsAAAAFAAkAAAD5/wwAAAAFAAoAAAD5/w0AAAAHAAkAAAD5/w4AAAAHAAoAAAD5/w8AAAAAAAAAAAD5/xAAAAAIAAoAAAD5/xEAAAAIAAoAAAD5/xIAAAAHAAkAAAD5/xMAAAAHAAoAAAD5/xQAAAAFAAkAAAD5/xUAAAAHAAoAAAD5/xYAAAAIAAkAAAD5/xcAAAAIAAoAAAD5/xgAAAACAAMAAAD5/xkAAAAAAAcAAAD5/xoAAAABAAQAAAD5/xsAAAABAAQAAAD5/xwAAAABAAQAAAD5/x0AAAABAAYAAAD5/x4AAAAAAAUAAAD5/x8AAAAFAAkAAAD5/yAAAAAFAAkAAAD5/yEAAAAHAAkAAAD5/yIAAAAHAAoAAAD5/yMAAAAHAAkAAAD5/yQAAAAHAAkAAAD5/yUAAAAHAAoAAAD5/yYAAAAAAAAAAAD5/ycAAAAFAAkAAAD5/ygAAAABAAMAAAD5/ykAAAABAAQAAAD5/yoAAAABAAQAAAD5/ysAAAABAAQAAAD5/ywAAAAAAAYAAAD5/y0AAAACAAUAAAD5/y4AAAAHAAkAAAD5/y8AAAAHAAoAAAD5/zAAAAAFAAkAAAD5/zEAAAAAAAAAAAD5/zIAAAAFAAkAAAD5/zMAAAAHAAkAAAD6//D/AAABAAsAAAD6//H/AAAHAAoAAAD6//L/AAAIAAoAAAD6//P/AAAFAAkAAAD6//T/AAAHAAkAAAD6//X/AAAIAAoAAAD6//b/AAAIAAkAAAD6/wIAAAABAAQAAAD6/wMAAAABAAUAAAD6/wQAAAAIAAoAAAD6/wUAAAAIAAoAAAD6/wYAAAAFAAkAAAD6/wcAAAAIAAoAAAD6/wgAAAAHAAkAAAD6/wkAAAAFAAoAAAD6/woAAAAHAAoAAAD6/wsAAAAHAAkAAAD6/wwAAAAIAAoAAAD6/w0AAAAHAAoAAAD6/w4AAAAFAAoAAAD6/w8AAAAHAAkAAAD6/xAAAAAHAAoAAAD6/xEAAAAFAAkAAAD6/xIAAAAFAAkAAAD6/xMAAAAHAAkAAAD6/xQAAAAIAAkAAAD6/xUAAAAHAAkAAAD6/xYAAAAIAAoAAAD6/xcAAAAHAAkAAAD6/xgAAAAIAAkAAAD6/xkAAAACAAMAAAD6/xoAAAAAAAcAAAD6/xsAAAABAAQAAAD6/xwAAAABAAQAAAD6/x0AAAABAAQAAAD6/x4AAAABAAYAAAD6/x8AAAAAAAUAAAD6/yAAAAAIAAkAAAD6/yEAAAAFAAoAAAD6/yIAAAAIAAkAAAD6/yMAAAAHAAkAAAD6/yQAAAAFAAkAAAD6/yUAAAAFAAkAAAD6/yYAAAAAAAMAAAD6/ycAAAAAAAQAAAD6/ygAAAABAAcAAAD6/ykAAAABAAQAAAD6/yoAAAABAAQAAAD6/ysAAAAAAAYAAAD6/ywAAAACAAUAAAD6/y0AAAAFAAkAAAD6/y4AAAAIAAoAAAD6/y8AAAAHAAkAAAD6/zAAAAAIAAoAAAD6/zEAAAAIAAoAAAD6/zIAAAAIAAoAAAD6/zMAAAAHAAkAAAD7//D/AAABAAsAAAD7//H/AAAIAAkAAAD7//L/AAAFAAoAAAD7//P/AAAFAAkAAAD7//T/AAAFAAoAAAD7//X/AAAFAAkAAAD7//b/AAAIAAoAAAD7/wIAAAABAAQAAAD7/wMAAAABAAUAAAD7/wQAAAAHAAkAAAD7/wUAAAAFAAoAAAD7/wYAAAAIAAoAAAD7/wcAAAAAAAAAAAD7/wgAAAAHAAoAAAD7/wkAAAAIAAkAAAD7/woAAAAIAAkAAAD7/wsAAAAIAAoAAAD7/wwAAAAIAAkAAAD7/w0AAAAAAAAAAAD7/w4AAAAAAAAAAAD7/w8AAAAFAAkAAAD7/xAAAAAIAAkAAAD7/xEAAAAFAAoAAAD7/xIAAAAAAAAAAAD7/xMAAAAIAAoAAAD7/xQAAAAAAAAAAAD7/xUAAAAIAAoAAAD7/xYAAAAHAAoAAAD7/xcAAAAAAAAAAAD7/xgAAAAIAAkAAAD7/xkAAAAFAAkAAAD7/xoAAAACAAMAAAD7/xsAAAAAAAcAAAD7/xwAAAABAAQAAAD7/x0AAAABAAQAAAD7/x4AAAABAAQAAAD7/x8AAAABAAUAAAD7/yAAAAAFAAoAAAD7/yEAAAAFAAkAAAD7/yIAAAAIAAoAAAD7/yMAAAAFAAoAAAD7/yQAAAAHAAkAAAD7/yUAAAAAAAMAAAD7/yYAAAABAAcAAAD7/ycAAAABAAQAAAD7/ygAAAABAAQAAAD7/ykAAAABAAQAAAD7/yoAAAAAAAYAAAD7/ysAAAACAAUAAAD7/ywAAAAIAAkAAAD7/y0AAAAIAAkAAAD7/y4AAAAHAAoAAAD7/y8AAAAIAAoAAAD7/zAAAAAFAAoAAAD7/zEAAAAHAAkAAAD7/zIAAAAHAAkAAAD7/zMAAAAHAAoAAAD8//D/AAABAAsAAAD8//H/AAAHAAoAAAD8//L/AAAHAAoAAAD8//P/AAAFAAkAAAD8//T/AAAFAAkAAAD8//X/AAAIAAkAAAD8//b/AAAAAAAAAAD8/wIAAAAAAAYAAAD8/wMAAAACAAUAAAD8/wQAAAANABwAAAD8/wUAAAAFAAkAAAD8/wYAAAAFAAkAAAD8/wcAAAAIAAoAAAD8/wgAAAAHAAoAAAD8/wkAAAAHAAoAAAD8/woAAAAAAAAAAAD8/wsAAAAHAAkAAAD8/wwAAAAAAAAAAAD8/w0AAAAIAAkAAAD8/w4AAAAHAAkAAAD8/w8AAAAAAAAAAAD8/xAAAAAFAAkAAAD8/xEAAAAFAAkAAAD8/xIAAAAFAAoAAAD8/xMAAAAHAAoAAAD8/xQAAAAFAAkAAAD8/xUAAAAFAAkAAAD8/xYAAAAIAAkAAAD8/xcAAAAIAAkAAAD8/xgAAAAIAAoAAAD8/xkAAAAHAAoAAAD8/xoAAAAIAAkAAAD8/xsAAAABAAMAAAD8/xwAAAABAAQAAAD8/x0AAAABAAQAAAD8/x4AAAABAAQAAAD8/x8AAAABAAYAAAD8/yAAAAAAAAUAAAD8/yEAAAAFAAoAAAD8/yIAAAAFAAoAAAD8/yMAAAAFAAkAAAD8/yQAAAAAAAMAAAD8/yUAAAABAAcAAAD8/yYAAAABAAQAAAD8/ycAAAABAAQAAAD8/ygAAAABAAQAAAD8/ykAAAAAAAYAAAD8/yoAAAACAAUAAAD8/ysAAAAHAAkAAAD8/ywAAAAAAAAAAAD8/y0AAAAFAAoAAAD8/y4AAAAAAAAAAAD8/y8AAAAIAAkAAAD8/zAAAAAHAAoAAAD8/zEAAAAIAAkAAAD8/zIAAAAHAAkAAAD8/zMAAAAFAAoAAAD9//D/AAABAAsAAAD9//H/AAAIAAoAAAD9//L/AAAIAAkAAAD9//P/AAAAAAAAAAD9//T/AAAAAAAAAAD9//X/AAAIAAkAAAD9//b/AAAAAAAAAAD9/wIAAAABAAUAAAD9/wMAAAAAAAAAAAD9/wQAAAAHAAoAAAD9/wUAAAAHAAkAAAD9/wYAAAALABwAAAD9/wcAAAAIAAkAAAD9/wgAAAAIAAoAAAD9/wkAAAAIAAoAAAD9/woAAAAIAAoAAAD9/wsAAAAHAAoAAAD9/wwAAAAFAAkAAAD9/w0AAAAFAAoAAAD9/w4AAAAAAAAAAAD9/w8AAAAIAAkAAAD9/xAAAAAIAAoAAAD9/xEAAAAFAAkAAAD9/xIAAAAAAAAAAAD9/xMAAAAFAAkAAAD9/xQAAAAFAAkAAAD9/xUAAAAHAAkAAAD9/xYAAAAFAAoAAAD9/xcAAAAFAAoAAAD9/xgAAAAHAAkAAAD9/xkAAAAFAAoAAAD9/xoAAAAAAAAAAAD9/xsAAAACAAMAAAD9/xwAAAAAAAcAAAD9/x0AAAABAAQAAAD9/x4AAAABAAQAAAD9/x8AAAABAAQAAAD9/yAAAAABAAUAAAD9/yEAAAAHAAoAAAD9/yIAAAAFAAkAAAD9/yMAAAAIAAoAAAD9/yQAAAABAAMAAAD9/yUAAAABAAQAAAD9/yYAAAABAAQAAAD9/ycAAAABAAQAAAD9/ygAAAABAAQAAAD9/ykAAAABAAUAAAD9/yoAAAAIAAoAAAD9/ysAAAAHAAoAAAD9/ywAAAAHAAoAAAD9/y0AAAAHAAkAAAD9/y4AAAAHAAkAAAD9/y8AAAAAAAAAAAD9/zAAAAAIAAoAAAD9/zEAAAAIAAkAAAD9/zIAAAAAAAAAAAD9/zMAAAAFAAkAAAD+//D/AAABAAsAAAD+//H/AAAHAAoAAAD+//L/AAAHAAoAAAD+//P/AAAIAAkAAAD+//T/AAAFAAkAAAD+//X/AAAIAAkAAAD+//b/AAAIAAoAAAD+/wIAAAABAAUAAAD+/wMAAAANABwAAAD+/wQAAAAFAAkAAAD+/wUAAAAIAAkAAAD+/wYAAAAMABwAAAD+/wgAAAAHAAkAAAD+/wkAAAAIAAoAAAD+/woAAAAHAAoAAAD+/wsAAAAHAAkAAAD+/wwAAAAHAAoAAAD+/w0AAAAFAAoAAAD+/w4AAAAIAAoAAAD+/w8AAAAIAAkAAAD+/xAAAAAIAAkAAAD+/xEAAAAHAAkAAAD+/xIAAAAFAAoAAAD+/xMAAAAAAAAAAAD+/xQAAAAFAAoAAAD+/xUAAAAIAAkAAAD+/xYAAAAHAAkAAAD+/xcAAAAHAAkAAAD+/xgAAAAIAAkAAAD+/xkAAAAAAAAAAAD+/xoAAAAHAAkAAAD+/xsAAAAAAAAAAAD+/xwAAAABAAMAAAD+/x0AAAABAAQAAAD+/x4AAAABAAQAAAD+/x8AAAABAAQAAAD+/yAAAAABAAUAAAD+/yEAAAAAAAAAAAD+/yIAAAAFAAkAAAD+/yMAAAAAAAMAAAD+/yQAAAABAAcAAAD+/yUAAAABAAQAAAD+/yYAAAABAAQAAAD+/ycAAAAAAAYAAAD+/ygAAAACAAQAAAD+/ykAAAACAAUAAAD+/yoAAAAHAAoAAAD+/ysAAAAIAAoAAAD+/ywAAAAIAAkAAAD+/y0AAAAHAAkAAAD+/y4AAAAFAAoAAAD+/y8AAAAIAAoAAAD+/zAAAAAHAAkAAAD+/zEAAAAHAAkAAAD+/zIAAAAHAAkAAAD+/zMAAAAFAAoAAAD///D/AAABAAsAAAD///H/AAAFAAkAAAD///L/AAAFAAoAAAD///P/AAAIAAoAAAD///T/AAAAAAAAAAD///X/AAAIAAkAAAD///b/AAAHAAkAAAD//wIAAAABAAUAAAD//wMAAAAIAAoAAAD//wQAAAAIAAkAAAD//wUAAAAFAAoAAAD//wYAAAAHAAoAAAD//wcAAAAIAAoAAAD//wgAAAAFAAkAAAD//wkAAAAHAAoAAAD//woAAAAAAAAAAAD//wsAAAAHAAkAAAD//wwAAAAFAAkAAAD//w0AAAAIAAkAAAD//w4AAAAHAAkAAAD//w8AAAAFAAkAAAD//xAAAAAHAAoAAAD//xEAAAAHAAoAAAD//xIAAAAIAAkAAAD//xMAAAAFAAkAAAD//xQAAAAIAAoAAAD//xUAAAAAAAAAAAD//xYAAAAFAAkAAAD//xcAAAAAAAAAAAD//xgAAAAIAAoAAAD//xkAAAAHAAkAAAD//xoAAAAFAAoAAAD//xsAAAAFAAkAAAD//xwAAAACAAMAAAD//x0AAAACAAQAAAD//x4AAAAAAAcAAAD//x8AAAABAAQAAAD//yAAAAABAAYAAAD//yEAAAAAAAQAAAD//yIAAAAAAAQAAAD//yMAAAABAAcAAAD//yQAAAABAAQAAAD//yUAAAABAAQAAAD//yYAAAAAAAYAAAD//ycAAAACAAUAAAD//ygAAAAFAAkAAAD//ykAAAAAAAAAAAD//yoAAAAHAAoAAAD//ysAAAAAAAAAAAD//ywAAAAHAAkAAAD//y0AAAAFAAoAAAD//y4AAAAFAAoAAAD//y8AAAAIAAoAAAD//zAAAAAIAAkAAAD//zEAAAAIAAkAAAD//zIAAAAIAAkAAAD//zMAAAAHAAoAAAAAAPD/AAABAAsAAAAAAPH/AAAIAAoAAAAAAPL/AAAIAAkAAAAAAPP/AAAHAAoAAAAAAPT/AAAIAAoAAAAAAPX/AAAAAAAAAAAAAPb/AAAIAAoAAAAAAAIAAAABAAUAAAAAAAMAAAAHAAoAAAAAAAQAAAALABwAAAAAAAUAAAAIAAkAAAAAAAYAAAANABwAAAAAAAcAAAAAAAAAAAAAAAgAAAAHAAkAAAAAAAkAAAAAAAAAAAAAAAoAAAAFAAkAAAAAAAsAAAAHAAkAAAAAAAwAAAAIAAoAAAAAAA0AAAAIAAkAAAAAAA4AAAAIAAkAAAAAAA8AAAAFAAoAAAAAABAAAAAHAAkAAAAAABEAAAAIAAkAAAAAABIAAAAHAAoAAAAAABMAAAAFAAoAAAAAABQAAAAAAAAAAAAAABUAAAAHAAkAAAAAABYAAAAAAAAAAAAAABcAAAAFAAkAAAAAABgAAAAIAAkAAAAAABkAAAAIAAoAAAAAABoAAAAIAAkAAAAAABsAAAAFAAoAAAAAABwAAAAIAAoAAAAAAB0AAAAFAAkAAAAAAB4AAAABAAMAAAAAAB8AAAABAAQAAAAAACAAAAABAAQAAAAAACEAAAABAAQAAAAAACIAAAABAAQAAAAAACMAAAABAAQAAAAAACQAAAABAAQAAAAAACUAAAABAAQAAAAAACYAAAABAAUAAAAAACcAAAAFAAoAAAAAACgAAAAFAAoAAAAAACkAAAAIAAoAAAAAACoAAAAFAAkAAAAAACsAAAAIAAkAAAAAACwAAAAFAAkAAAAAAC0AAAAAAAAAAAAAAC4AAAAAAAAAAAAAAC8AAAAIAAkAAAAAADAAAAAHAAkAAAAAADEAAAAIAAoAAAAAADIAAAAAAAAAAAAAADMAAAAFAAkAAAABAPD/AAABAAsAAAABAPH/AAAFAAkAAAABAPL/AAAHAAoAAAABAPP/AAAAAAAAAAABAPT/AAAAAAAAAAABAPX/AAAHAAkAAAABAPb/AAAFAAkAAAABAAIAAAABAAUAAAABAAMAAAAAAAAAAAABAAQAAAAMABwAAAABAAUAAAAAAAAAAAABAAYAAAAFAAoAAAABAAcAAAAHAAoAAAABAAgAAAAAAAAAAAABAAkAAAAHAAoAAAABAAoAAAAIAAoAAAABAAsAAAAIAAkAAAABAAwAAAAIAAkAAAABAA0AAAAIAAoAAAABAA4AAAAHAAkAAAABAA8AAAAIAAoAAAABABAAAAAIAAkAAAABABEAAAAAAAAAAAABABIAAAAFAAkAAAABABMAAAAAAAAAAAABABQAAAAHAAoAAAABABUAAAAFAAkAAAABABYAAAAFAAkAAAABABcAAAAHAAkAAAABABgAAAAAAAAAAAABABkAAAAFAAoAAAABABoAAAAFAAkAAAABABsAAAAIAAoAAAABABwAAAAHAAkAAAABAB0AAAAIAAoAAAABAB4AAAABAAMAAAABAB8AAAABAAQAAAABACAAAAABAAQAAAABACEAAAABAAQAAAABACIAAAABAAQAAAABACMAAAABAAQAAAABACQAAAAAAAYAAAABACUAAAACAAQAAAABACYAAAACAAUAAAABACcAAAAFAAkAAAABACgAAAAIAAkAAAABACkAAAAIAAoAAAABACoAAAAFAAoAAAABACsAAAAFAAkAAAABACwAAAAFAAoAAAABAC0AAAAHAAoAAAABAC4AAAAFAAoAAAABAC8AAAAFAAoAAAABADAAAAAIAAoAAAABADEAAAAIAAkAAAABADIAAAAAAAAAAAABADMAAAAFAAoAAAACAPD/AAABAAsAAAACAPH/AAAAAAAAAAACAPL/AAAFAAkAAAACAPP/AAAIAAoAAAACAPT/AAAFAAoAAAACAPX/AAAFAAoAAAACAPb/AAAFAAkAAAACAAIAAAABAAUAAAACAAMAAAAIAAoAAAACAAQAAAAFAAoAAAACAAUAAAAIAAkAAAACAAYAAAAFAAkAAAACAAcAAAAIAAoAAAACAAgAAAAAAAAAAAACAAkAAAAIAAkAAAACAAoAAAAFAAkAAAACAAsAAAAIAAkAAAACAAwAAAAAAAAAAAACAA0AAAAFAAkAAAACAA4AAAAFAAkAAAACAA8AAAAFAAkAAAACABAAAAAFAAkAAAACABEAAAAIAAoAAAACABIAAAAAAAAAAAACABMAAAAHAAoAAAACABQAAAAAAAAAAAACABUAAAAFAAoAAAACABYAAAAIAAoAAAACABcAAAAHAAoAAAACABgAAAAFAAoAAAACABkAAAAHAAoAAAACABoAAAAFAAkAAAACABsAAAAIAAkAAAACABwAAAAIAAkAAAACAB0AAAAHAAkAAAACAB4AAAACAAMAAAACAB8AAAAAAAcAAAACACAAAAABAAQAAAACACEAAAABAAQAAAACACIAAAABAAQAAAACACMAAAAAAAYAAAACACQAAAACAAUAAAACACUAAAAFAAkAAAACACYAAAAHAAkAAAACACcAAAAAAAAAAAACACgAAAAFAAoAAAACACkAAAAIAAkAAAACACoAAAAFAAoAAAACACsAAAAAAAAAAAACACwAAAAAAAAAAAACAC0AAAAFAAkAAAACAC4AAAAHAAkAAAACAC8AAAAIAAoAAAACADAAAAAFAAoAAAACADEAAAAAAAAAAAACADIAAAAHAAkAAAACADMAAAAFAAkAAAADAPD/AAABAAsAAAADAPH/AAAFAAkAAAADAPL/AAAHAAoAAAADAPP/AAAFAAoAAAADAPT/AAAAAAAAAAADAPX/AAAIAAkAAAADAPb/AAAIAAkAAAADAAIAAAABAAUAAAADAAMAAAAFAAkAAAADAAQAAAANABwAAAADAAUAAAAFAAkAAAADAAYAAAAIAAkAAAADAAcAAAANABwAAAADAAgAAAAFAAoAAAADAAkAAAAFAAoAAAADAAoAAAAIAAoAAAADAAsAAAAHAAkAAAADAAwAAAAHAAoAAAADAA0AAAAFAAoAAAADAA4AAAAFAAoAAAADAA8AAAAFAAoAAAADABAAAAAIAAoAAAADABEAAAAHAAkAAAADABIAAAAAAAAAAAADABMAAAAHAAkAAAADABQAAAAIAAoAAAADABUAAAAIAAoAAAADABYAAAAFAAoAAAADABcAAAAFAAoAAAADABgAAAAHAAkAAAADABkAAAAIAAoAAAADABoAAAAFAAkAAAADABsAAAAFAAoAAAADABwAAAAHAAoAAAADAB0AAAAAAAAAAAADAB4AAAAAAAAAAAADAB8AAAABAAMAAAADACAAAAABAAQAAAADACEAAAABAAQAAAADACIAAAAAAAYAAAADACMAAAACAAUAAAADACQAAAAAAAAAAAADACUAAAAHAAoAAAADACYAAAAAAAAAAAADACcAAAAHAAoAAAADACgAAAAIAAkAAAADACkAAAAHAAkAAAADACoAAAAIAAkAAAADACsAAAAHAAoAAAADACwAAAAIAAkAAAADAC0AAAAHAAkAAAADAC4AAAAHAAoAAAADAC8AAAAHAAoAAAADADAAAAAIAAkAAAADADEAAAAIAAoAAAADADIAAAAHAAkAAAADADMAAAAFAAkAAAAEAPD/AAABAAsAAAAEAPH/AAAAAAAAAAAEAPL/AAAHAAkAAAAEAPP/AAAFAAoAAAAEAPT/AAAFAAoAAAAEAPX/AAAIAAkAAAAEAPb/AAAFAAoAAAAEAAIAAAABAAUAAAAEAAMAAAAHAAoAAAAEAAQAAAAIAAkAAAAEAAUAAAAAAAAAAAAEAAYAAAAFAAoAAAAEAAcAAAAHAAkAAAAEAAgAAAAFAAoAAAAEAAkAAAAIAAkAAAAEAAoAAAAAAAAAAAAEAAsAAAAAAAAAAAAEAAwAAAAAAAAAAAAEAA0AAAAAAAAAAAAEAA4AAAAFAAkAAAAEAA8AAAAIAAkAAAAEABAAAAAFAAoAAAAEABEAAAAIAAkAAAAEABIAAAAIAAoAAAAEABMAAAAIAAoAAAAEABQAAAAFAAoAAAAEABUAAAAFAAkAAAAEABYAAAAHAAoAAAAEABcAAAAHAAoAAAAEABgAAAAFAAoAAAAEABkAAAAAAAAAAAAEABoAAAAHAAkAAAAEABsAAAAIAAoAAAAEABwAAAAFAAoAAAAEAB0AAAAFAAoAAAAEAB4AAAAFAAkAAAAEAB8AAAABAAMAAAAEACAAAAABAAQAAAAEACEAAAABAAQAAAAEACIAAAABAAUAAAAEACMAAAAHAAoAAAAEACQAAAAFAAkAAAAEACUAAAAAAAAAAAAEACYAAAAFAAoAAAAEACcAAAAIAAoAAAAEACgAAAAHAAkAAAAEACkAAAAHAAoAAAAEACoAAAAIAAkAAAAEACsAAAAFAAoAAAAEACwAAAAFAAkAAAAEAC0AAAAHAAkAAAAEAC4AAAAHAAkAAAAEAC8AAAAIAAkAAAAEADAAAAAFAAoAAAAEADEAAAAFAAoAAAAEADIAAAAFAAkAAAAEADMAAAAHAAkAAAAFAPD/AAABAAsAAAAFAPH/AAAHAAkAAAAFAPL/AAAHAAoAAAAFAPP/AAAFAAkAAAAFAPT/AAAIAAoAAAAFAPX/AAAHAAkAAAAFAPb/AAAFAAkAAAAFAAIAAAABAAUAAAAFAAMAAAAHAAoAAAAFAAQAAAAIAAoAAAAFAAUAAAAIAAoAAAAFAAYAAAAHAAoAAAAFAAcAAAAFAAoAAAAFAAgAAAAHAAkAAAAFAAkAAAAFAAkAAAAFAAoAAAAAAAAAAAAFAAsAAAAHAAkAAAAFAAwAAAAHAAoAAAAFAA0AAAAHAAkAAAAFAA4AAAAFAAoAAAAFAA8AAAAHAAkAAAAFABAAAAAHAAoAAAAFABEAAAAAAAAAAAAFABIAAAAAAAAAAAAFABMAAAAHAAkAAAAFABQAAAAHAAkAAAAFABUAAAAIAAkAAAAFABYAAAAHAAkAAAAFABcAAAAHAAkAAAAFABgAAAAIAAoAAAAFABkAAAAIAAkAAAAFABoAAAAHAAkAAAAFABsAAAAFAAoAAAAFABwAAAAFAAoAAAAFAB0AAAAIAAoAAAAFAB4AAAAHAAoAAAAFAB8AAAABAAMAAAAFACAAAAABAAQAAAAFACEAAAABAAQAAAAFACIAAAABAAUAAAAFACMAAAAIAAoAAAAFACQAAAAIAAkAAAAFACUAAAAHAAoAAAAFACYAAAAFAAoAAAAFACcAAAAFAAoAAAAFACgAAAAIAAoAAAAFACkAAAAFAAoAAAAFACoAAAAAAAAAAAAFACsAAAAFAAoAAAAFACwAAAAFAAkAAAAFAC0AAAAIAAkAAAAFAC4AAAAAAAAAAAAFAC8AAAAIAAoAAAAFADAAAAAAAAAAAAAFADEAAAAFAAkAAAAFADIAAAAAAAAAAAAFADMAAAAIAAoAAAAGAPD/AAABAAsAAAAGAPH/AAAIAAoAAAAGAPL/AAAHAAkAAAAGAPP/AAAFAAoAAAAGAPT/AAAFAAkAAAAGAPX/AAAHAAoAAAAGAPb/AAAFAAkAAAAGAAIAAAABAAYAAAAGAAQAAAAAAAUAAAAGAAUAAAAAAAAAAAAGAAYAAAAHAAoAAAAGAAcAAAAIAAoAAAAGAAgAAAAHAAkAAAAGAAkAAAAFAAoAAAAGAAoAAAAIAAkAAAAGAAsAAAAAAAAAAAAGAAwAAAAHAAoAAAAGAA0AAAAHAAkAAAAGAA4AAAAHAAoAAAAGAA8AAAAHAAkAAAAGABAAAAAHAAkAAAAGABEAAAAFAAkAAAAGABIAAAAHAAoAAAAGABMAAAAIAAoAAAAGABQAAAAFAAoAAAAGABUAAAAAAAAAAAAGABYAAAAFAAkAAAAGABcAAAAFAAoAAAAGABgAAAAIAAkAAAAGABkAAAAFAAoAAAAGABoAAAAHAAoAAAAGABsAAAAIAAoAAAAGABwAAAAFAAoAAAAGAB0AAAAHAAkAAAAGAB4AAAAIAAoAAAAGAB8AAAABAAMAAAAGACAAAAABAAQAAAAGACEAAAABAAQAAAAGACIAAAABAAUAAAAGACMAAAAIAAkAAAAGACQAAAAHAAkAAAAGACUAAAAFAAoAAAAGACYAAAAIAAoAAAAGACcAAAAFAAoAAAAGACgAAAAIAAkAAAAGACkAAAAFAAkAAAAGACoAAAAAAAAAAAAGACsAAAAIAAkAAAAGACwAAAAIAAoAAAAGAC0AAAAFAAkAAAAGAC4AAAAHAAoAAAAGAC8AAAAFAAoAAAAGADAAAAAHAAoAAAAGADEAAAAHAAkAAAAGADIAAAAAAAAAAAAGADMAAAAAAAAAAAAHAPD/AAABAAsAAAAHAPH/AAAHAAkAAAAHAPL/AAAHAAkAAAAHAPP/AAAAAAAAAAAHAPT/AAAHAAkAAAAHAPX/AAAHAAkAAAAHAPb/AAAHAAkAAAAHAAIAAAABAAQAAAAHAAMAAAABAAQAAAAHAAQAAAAGAAAAAAAHAAUAAAALAAIAAAAHAAYAAAAHAAoAAAAHAAcAAAAIAAoAAAAHAAgAAAAHAAkAAAAHAAkAAAAFAAoAAAAHAAoAAAAFAAoAAAAHAAsAAAAAAAAAAAAHAAwAAAAHAAoAAAAHAA0AAAAAAAAAAAAHAA4AAAAAAAAAAAAHAA8AAAAIAAkAAAAHABAAAAAIAAkAAAAHABEAAAAHAAkAAAAHABIAAAAHAAoAAAAHABMAAAAIAAkAAAAHABQAAAAIAAkAAAAHABUAAAAFAAoAAAAHABYAAAAIAAoAAAAHABcAAAAFAAkAAAAHABgAAAAAAAMAAAAHABkAAAAAAAQAAAAHABoAAAAAAAQAAAAHABsAAAAAAAQAAAAHABwAAAAAAAQAAAAHAB0AAAAAAAUAAAAHAB4AAAAHAAoAAAAHAB8AAAABAAMAAAAHACAAAAABAAQAAAAHACEAAAABAAQAAAAHACIAAAABAAUAAAAHACMAAAAIAAkAAAAHACQAAAAIAAkAAAAHACUAAAAHAAkAAAAHACYAAAAFAAoAAAAHACcAAAAIAAoAAAAHACgAAAAIAAoAAAAHACkAAAAAAAAAAAAHACoAAAAIAAkAAAAHACsAAAAHAAkAAAAHACwAAAAFAAoAAAAHAC0AAAAFAAkAAAAHAC4AAAAHAAkAAAAHAC8AAAAIAAkAAAAHADAAAAAAAAAAAAAHADEAAAAAAAAAAAAHADIAAAAHAAkAAAAHADMAAAAFAAkAAAAIAPD/AAABAAsAAAAIAPH/AAAIAAkAAAAIAPL/AAAFAAkAAAAIAPP/AAAIAAoAAAAIAPT/AAAIAAoAAAAIAPX/AAAAAAAAAAAIAPb/AAAFAAoAAAAIAAIAAAAAAAYAAAAIAAMAAAACAAQAAAAIAAQAAAABAAkAAAAIAAUAAAABAAoAAAAIAAYAAAAIAAoAAAAIAAcAAAAIAAoAAAAIAAgAAAAIAAkAAAAIAAkAAAAHAAoAAAAIAAoAAAAFAAkAAAAIAAsAAAAAAAAAAAAIAAwAAAAAAAAAAAAIAA0AAAAAAAAAAAAIAA4AAAAAAAAAAAAIAA8AAAAIAAkAAAAIABAAAAAHAAoAAAAIABEAAAAFAAkAAAAIABIAAAAFAAkAAAAIABMAAAAFAAoAAAAIABUAAAAHAAkAAAAIABYAAAAFAAoAAAAIABcAAAAAAAMAAAAIABgAAAABAAcAAAAIABkAAAABAAQAAAAIABoAAAABAAQAAAAIABsAAAABAAQAAAAIABwAAAABAAQAAAAIAB0AAAABAAYAAAAIAB4AAAAAAAQAAAAIAB8AAAABAAcAAAAIACAAAAABAAQAAAAIACEAAAABAAQAAAAIACIAAAABAAUAAAAIACMAAAAIAAoAAAAIACQAAAAAAAAAAAAIACUAAAAIAAoAAAAIACYAAAAHAAkAAAAIACcAAAAAAAAAAAAIACgAAAAFAAkAAAAIACkAAAAFAAoAAAAIACoAAAAIAAoAAAAIACsAAAAHAAoAAAAIACwAAAAIAAoAAAAIAC0AAAAHAAkAAAAIAC4AAAAIAAkAAAAIAC8AAAAAAAAAAAAIADAAAAAAAAAAAAAIADEAAAAAAAAAAAAIADIAAAAHAAoAAAAIADMAAAAHAAoAAAAJAPD/AAABAAsAAAAJAPH/AAAIAAoAAAAJAPL/AAAAAAAAAAAJAPP/AAAFAAoAAAAJAPT/AAAFAAkAAAAJAPX/AAAHAAoAAAAJAPb/AAAIAAkAAAAJAAIAAAABAAUAAAAJAAMAAAAFAAkAAAAJAAQAAAAHAAkAAAAJAAUAAAAAAAAAAAAJAAYAAAAIAAoAAAAJAAcAAAAFAAoAAAAJAAgAAAAIAAoAAAAJAAkAAAAIAAkAAAAJAAoAAAAIAAkAAAAJAAsAAAAHAAkAAAAJAAwAAAAFAAkAAAAJAA0AAAAFAAoAAAAJAA4AAAAIAAkAAAAJAA8AAAAFAAkAAAAJABAAAAAIAAoAAAAJABEAAAAIAAkAAAAJABIAAAAFAAoAAAAJABMAAAAHAAkAAAAJABQAAAAAAAAAAAAJABUAAAAIAAkAAAAJABYAAAAAAAMAAAAJABcAAAABAAcAAAAJABgAAAABAAQAAAAJABkAAAABAAQAAAAJABoAAAAAAAYAAAAJABsAAAAAAAcAAAAJABwAAAABAAQAAAAJAB0AAAABAAQAAAAJAB4AAAABAAQAAAAJAB8AAAABAAQAAAAJACAAAAABAAQAAAAJACEAAAABAAQAAAAJACIAAAABAAUAAAAJACMAAAAAAAAAAAAJACQAAAAFAAkAAAAJACUAAAAIAAoAAAAJACYAAAAIAAoAAAAJACcAAAAHAAkAAAAJACgAAAAHAAoAAAAJACkAAAAFAAoAAAAJACoAAAAIAAkAAAAJACsAAAAFAAkAAAAJACwAAAAFAAoAAAAJAC0AAAAFAAoAAAAJAC4AAAAFAAkAAAAJAC8AAAAHAAoAAAAJADAAAAAIAAoAAAAJADEAAAAHAAoAAAAJADIAAAAIAAkAAAAJADMAAAAFAAkAAAAKAPD/AAABAAsAAAAKAPH/AAAIAAkAAAAKAPL/AAAHAAoAAAAKAPP/AAAIAAoAAAAKAPT/AAAIAAkAAAAKAPX/AAAFAAoAAAAKAPb/AAAIAAkAAAAKAAIAAAABAAUAAAAKAAMAAAAIAAkAAAAKAAQAAAAFAAoAAAAKAAUAAAAHAAoAAAAKAAYAAAAIAAkAAAAKAAcAAAAFAAoAAAAKAAgAAAAIAAoAAAAKAAkAAAAIAAoAAAAKAAoAAAAIAAkAAAAKAAsAAAAIAAoAAAAKAAwAAAAIAAkAAAAKAA0AAAAIAAoAAAAKAA4AAAAHAAoAAAAKAA8AAAAFAAkAAAAKABAAAAAIAAkAAAAKABEAAAAFAAoAAAAKABIAAAAHAAoAAAAKABMAAAAIAAoAAAAKABQAAAAHAAkAAAAKABUAAAAAAAMAAAAKABYAAAABAAcAAAAKABcAAAABAAQAAAAKABgAAAABAAQAAAAKABkAAAAAAAYAAAAKABoAAAACAAUAAAAKABsAAAACAAMAAAAKABwAAAACAAQAAAAKAB0AAAACAAQAAAAKAB4AAAACAAQAAAAKAB8AAAAAAAcAAAAKACAAAAABAAQAAAAKACEAAAABAAQAAAAKACIAAAABAAUAAAAKACMAAAAHAAoAAAAKACQAAAAAAAAAAAAKACUAAAAAAAAAAAAKACYAAAAHAAoAAAAKACcAAAAHAAkAAAAKACgAAAAHAAkAAAAKACkAAAAIAAoAAAAKACoAAAAFAAoAAAAKACsAAAAHAAkAAAAKACwAAAAAAAAAAAAKAC0AAAAHAAkAAAAKAC4AAAAIAAkAAAAKAC8AAAAHAAoAAAAKADAAAAAIAAkAAAAKADEAAAAHAAoAAAAKADIAAAAHAAoAAAAKADMAAAAIAAoAAAALAPD/AAABAAsAAAALAPH/AAAIAAkAAAALAPL/AAAHAAoAAAALAPP/AAAHAAkAAAALAPT/AAAIAAoAAAALAPX/AAAHAAkAAAALAPb/AAAAAAAAAAALAAIAAAABAAUAAAALAAMAAAAIAAoAAAALAAQAAAAAAAAAAAALAAUAAAAFAAkAAAALAAYAAAAHAAkAAAALAAcAAAAHAAoAAAALAAgAAAAFAAkAAAALAAkAAAAIAAoAAAALAAoAAAAIAAoAAAALAAsAAAAFAAoAAAALAAwAAAAIAAoAAAALAA0AAAAIAAkAAAALAA4AAAAFAAkAAAALAA8AAAAIAAkAAAALABAAAAAIAAkAAAALABEAAAAFAAkAAAALABIAAAAIAAkAAAALABMAAAAIAAoAAAALABQAAAAAAAMAAAALABUAAAABAAcAAAALABYAAAABAAQAAAALABcAAAAAAAYAAAALABgAAAACAAQAAAALABkAAAACAAUAAAALABoAAAAHAAoAAAALABsAAAAAAAAAAAALABwAAAAAAAAAAAALAB0AAAAFAAkAAAALAB4AAAAFAAkAAAALAB8AAAABAAMAAAALACAAAAABAAQAAAALACEAAAABAAQAAAALACIAAAABAAUAAAALACMAAAAFAAoAAAALACQAAAAHAAoAAAALACUAAAAHAAkAAAALACYAAAAHAAkAAAALACcAAAAAAAAAAAALACgAAAAFAAkAAAALACkAAAAIAAkAAAALACoAAAAFAAoAAAALACsAAAAAAAAAAAALACwAAAAHAAoAAAALAC0AAAAIAAkAAAALAC4AAAAAAAAAAAALAC8AAAAHAAkAAAALADAAAAAIAAoAAAALADEAAAAHAAoAAAALADIAAAAIAAoAAAALADMAAAAFAAoAAAAMAPD/AAABAAsAAAAMAPH/AAAFAAoAAAAMAPL/AAAIAAkAAAAMAPP/AAAAAAAAAAAMAPT/AAAIAAkAAAAMAPX/AAAHAAoAAAAMAPb/AAAAAAAAAAAMAAIAAAABAAUAAAAMAAMAAAAIAAoAAAAMAAQAAAAIAAkAAAAMAAUAAAAIAAkAAAAMAAcAAAAAAAAAAAAMAAgAAAAIAAoAAAAMAAkAAAAIAAkAAAAMAAoAAAAAAAAAAAAMAAsAAAAIAAoAAAAMAAwAAAAAAAAAAAAMAA0AAAAAAAAAAAAMAA4AAAAAAAAAAAAMAA8AAAAHAAoAAAAMABAAAAAAAAAAAAAMABEAAAAFAAkAAAAMABIAAAAFAAkAAAAMABMAAAAFAAkAAAAMABQAAAABAAMAAAAMABUAAAABAAQAAAAMABYAAAABAAQAAAAMABcAAAABAAUAAAAMABgAAAAHAAkAAAAMABkAAAAIAAoAAAAMABoAAAAFAAoAAAAMABsAAAAAAAAAAAAMABwAAAAHAAkAAAAMAB0AAAAIAAoAAAAMAB4AAAAIAAkAAAAMAB8AAAABAAMAAAAMACAAAAABAAQAAAAMACEAAAABAAQAAAAMACIAAAABAAUAAAAMACMAAAAIAAoAAAAMACQAAAAIAAkAAAAMACUAAAAAAAAAAAAMACYAAAAHAAoAAAAMACcAAAAFAAkAAAAMACgAAAAIAAoAAAAMACkAAAAFAAoAAAAMACoAAAAFAAkAAAAMACsAAAAIAAoAAAAMACwAAAAAAAAAAAAMAC0AAAAFAAoAAAAMAC4AAAAHAAoAAAAMAC8AAAAAAAAAAAAMADAAAAAHAAkAAAAMADEAAAAFAAkAAAAMADIAAAAIAAkAAAAMADMAAAAFAAkAAAANAPD/AAABAAsAAAANAPH/AAAFAAkAAAANAPL/AAAFAAoAAAANAPP/AAAAAAAAAAANAPT/AAAIAAoAAAANAPX/AAAIAAoAAAANAPb/AAAAAAAAAAANAAIAAAABAAUAAAANAAMAAAAFAAkAAAANAAQAAAAHAAkAAAANAAUAAAAIAAoAAAANAAYAAAAAAAAAAAANAAcAAAAHAAkAAAANAAgAAAAAAAAAAAANAAkAAAAIAAkAAAANAAoAAAAIAAoAAAANAAsAAAAHAAoAAAANAAwAAAAAAAAAAAANAA0AAAAFAAkAAAANAA4AAAAHAAoAAAANAA8AAAAHAAoAAAANABAAAAAAAAAAAAANABEAAAAAAAAAAAANABIAAAAAAAAAAAANABMAAAAAAAMAAAANABQAAAABAAcAAAANABUAAAABAAQAAAANABYAAAAAAAYAAAANABcAAAACAAUAAAANABgAAAAFAAoAAAANABkAAAAIAAkAAAANABoAAAAIAAkAAAANABsAAAAAAAAAAAANABwAAAAIAAkAAAANAB0AAAAAAAAAAAANAB4AAAAHAAoAAAANAB8AAAABAAMAAAANACAAAAABAAQAAAANACEAAAABAAQAAAANACIAAAABAAUAAAANACMAAAAFAAoAAAANACQAAAAIAAkAAAANACUAAAAHAAkAAAANACYAAAAIAAkAAAANACcAAAAHAAoAAAANACgAAAAHAAoAAAANACkAAAAAAAAAAAANACoAAAAFAAkAAAANACsAAAAFAAkAAAANACwAAAAAAAAAAAANAC0AAAAIAAkAAAANAC4AAAAHAAoAAAANAC8AAAAHAAoAAAANADAAAAAHAAoAAAANADEAAAAFAAoAAAANADIAAAAAAAAAAAANADMAAAAHAAoAAAAOAPD/AAABAAsAAAAOAPH/AAAHAAkAAAAOAPL/AAAIAAkAAAAOAPP/AAAHAAkAAAAOAPT/AAAFAAkAAAAOAPX/AAAAAAAAAAAOAPb/AAAFAAkAAAAOAAIAAAABAAUAAAAOAAMAAAAAAAAAAAAOAAQAAAAHAAoAAAAOAAUAAAAIAAoAAAAOAAcAAAAFAAoAAAAOAAgAAAAIAAoAAAAOAAkAAAAFAAkAAAAOAAoAAAAFAAoAAAAOAAsAAAAFAAkAAAAOAAwAAAAFAAoAAAAOAA0AAAAIAAoAAAAOAA4AAAAFAAkAAAAOAA8AAAAIAAoAAAAOABAAAAAIAAoAAAAOABEAAAAGAAAAAAAOABIAAAAAAAAAAAAOABMAAAABAAQAAAAOABQAAAABAAQAAAAOABUAAAABAAQAAAAOABYAAAABAAUAAAAOABcAAAAFAAkAAAAOABgAAAAHAAkAAAAOABkAAAAHAAoAAAAOABoAAAAFAAoAAAAOABsAAAAIAAkAAAAOABwAAAAHAAkAAAAOAB0AAAAAAAAAAAAOAB4AAAAAAAAAAAAOAB8AAAABAAMAAAAOACAAAAABAAQAAAAOACEAAAABAAQAAAAOACIAAAABAAUAAAAOACMAAAAHAAkAAAAOACQAAAAFAAkAAAAOACUAAAAFAAkAAAAOACYAAAAIAAkAAAAOACcAAAAAAAAAAAAOACgAAAAFAAoAAAAOACkAAAAFAAkAAAAOACoAAAAIAAoAAAAOACsAAAAFAAoAAAAOACwAAAAHAAkAAAAOAC0AAAAAAAAAAAAOAC4AAAAAAAAAAAAOAC8AAAAIAAkAAAAOADAAAAAIAAkAAAAOADEAAAAHAAoAAAAOADIAAAAAAAAAAAAOADMAAAAAAAAAAAAPAPD/AAABAAsAAAAPAPH/AAAFAAkAAAAPAPL/AAAFAAoAAAAPAPP/AAAHAAkAAAAPAPT/AAAFAAoAAAAPAPX/AAAHAAoAAAAPAPb/AAAAAAAAAAAPAAMAAAAIAAkAAAAPAAQAAAAIAAoAAAAPAAUAAAAHAAkAAAAPAAYAAAAFAAkAAAAPAAcAAAAFAAoAAAAPAAgAAAAFAAkAAAAPAAkAAAAFAAoAAAAPAAoAAAAFAAkAAAAPAAsAAAAIAAoAAAAPAAwAAAAIAAkAAAAPAA0AAAAAAAAAAAAPAA4AAAAIAAoAAAAPAA8AAAAIAAkAAAAPABAAAAAOAAAAAAAPABEAAAAFAAoAAAAPABIAAAACAAMAAAAPABMAAAACAAQAAAAPABQAAAAAAAcAAAAPABUAAAABAAQAAAAPABYAAAABAAUAAAAPABcAAAAHAAkAAAAPABgAAAAFAAkAAAAPABkAAAAFAAoAAAAPABoAAAAAAAAAAAAPABsAAAAFAAoAAAAPABwAAAAFAAoAAAAPAB0AAAAIAAkAAAAPAB4AAAAFAAoAAAAPAB8AAAABAAMAAAAPACAAAAABAAQAAAAPACEAAAABAAQAAAAPACIAAAABAAUAAAAPACMAAAAFAAkAAAAPACQAAAAFAAoAAAAPACUAAAAIAAoAAAAPACYAAAAFAAoAAAAPACcAAAAAAAAAAAAPACgAAAAHAAoAAAAPACkAAAAAAAAAAAAPACoAAAAIAAoAAAAPACsAAAAIAAkAAAAPACwAAAAIAAoAAAAPAC0AAAAFAAoAAAAPAC4AAAAHAAoAAAAPAC8AAAAIAAoAAAAPADAAAAAHAAkAAAAPADEAAAAIAAoAAAAPADIAAAAFAAoAAAAPADMAAAAFAAoAAAAQAPD/AAABAAsAAAAQAPH/AAAIAAoAAAAQAPL/AAAFAAkAAAAQAPP/AAAIAAkAAAAQAPT/AAAIAAkAAAAQAPX/AAAAAAAAAAAQAPb/AAAFAAoAAAAQAAMAAAAAAAAAAAAQAAQAAAAHAAkAAAAQAAUAAAAHAAoAAAAQAAYAAAAFAAkAAAAQAAcAAAAIAAoAAAAQAAgAAAAAAAAAAAAQAAkAAAAHAAoAAAAQAAoAAAAAAAAAAAAQAAsAAAAAAAAAAAAQAAwAAAAHAAoAAAAQAA0AAAAIAAoAAAAQAA4AAAAFAAoAAAAQAA8AAAAFAAkAAAAQABAAAAAHAAoAAAAQABEAAAAHAAoAAAAQABIAAAAHAAkAAAAQABMAAAAAAAAAAAAQABQAAAABAAMAAAAQABUAAAABAAQAAAAQABYAAAABAAYAAAAQABcAAAAAAAUAAAAQABgAAAAIAAoAAAAQABkAAAAAAAAAAAAQABoAAAAHAAkAAAAQABsAAAAFAAkAAAAQABwAAAAFAAoAAAAQAB0AAAAIAAkAAAAQAB4AAAAHAAoAAAAQAB8AAAABAAMAAAAQACAAAAABAAQAAAAQACEAAAABAAQAAAAQACIAAAABAAUAAAAQACMAAAAFAAkAAAAQACQAAAAAAAAAAAAQACUAAAAFAAoAAAAQACYAAAAHAAkAAAAQACcAAAAIAAkAAAAQACgAAAAAAAAAAAAQACkAAAAAAAAAAAAQACoAAAAIAAoAAAAQACsAAAAAAAAAAAAQACwAAAAFAAoAAAAQAC0AAAAIAAoAAAAQAC4AAAAIAAkAAAAQAC8AAAAHAAkAAAAQADAAAAAFAAkAAAAQADEAAAAFAAoAAAAQADIAAAAAAAAAAAAQADMAAAAHAAoAAAARAPD/AAABAAsAAAARAPH/AAAIAAoAAAARAPL/AAAFAAoAAAARAPP/AAAIAAkAAAARAPT/AAAAAAAAAAARAPX/AAAAAAAAAAARAPb/AAAIAAoAAAARAAMAAAAAAAAAAAARAAQAAAAAAAAAAAARAAUAAAAFAAoAAAARAAYAAAAAAAAAAAARAAcAAAAAAAAAAAARAAgAAAAHAAkAAAARAAkAAAAAAAAAAAARAAoAAAAHAAkAAAARAAsAAAACAAYAAAARAAwAAAACAAcAAAARAA0AAAACAAgAAAARAA4AAAAAAAAAAAARAA8AAAAAAAAAAAARABAAAAAIAAkAAAARABEAAAAIAAoAAAARABIAAAAAAAAAAAARABMAAAAFAAoAAAARABQAAAABAAMAAAARABUAAAABAAQAAAARABYAAAABAAQAAAARABcAAAABAAYAAAARABgAAAAAAAUAAAARABkAAAAHAAkAAAARABoAAAAAAAAAAAARABsAAAAIAAoAAAARABwAAAAIAAoAAAARAB0AAAAHAAoAAAARAB4AAAAFAAoAAAARAB8AAAABAAMAAAARACAAAAABAAQAAAARACEAAAABAAQAAAARACIAAAABAAUAAAARACMAAAAIAAoAAAARACQAAAAIAAkAAAARACUAAAAFAAoAAAARACYAAAAFAAkAAAARACcAAAAFAAkAAAARACgAAAAFAAkAAAARACkAAAAFAAkAAAARACoAAAAAAAAAAAARACsAAAAHAAoAAAARACwAAAAIAAkAAAARAC0AAAAIAAkAAAARAC4AAAAAAAAAAAARAC8AAAAAAAAAAAARADAAAAAAAAAAAAARADEAAAAFAAoAAAARADIAAAAHAAkAAAARADMAAAAIAAoAAAASAPD/AAABAAsAAAASAPH/AAAHAAoAAAASAPL/AAAHAAoAAAASAPP/AAAFAAoAAAASAPT/AAAFAAoAAAASAPX/AAAFAAkAAAASAPb/AAAIAAkAAAASAAIAAAABAAUAAAASAAMAAAAFAAoAAAASAAQAAAAHAAoAAAASAAUAAAAFAAoAAAASAAYAAAAHAAkAAAASAAcAAAAFAAoAAAASAAgAAAAHAAkAAAASAAkAAAAIAAoAAAASAAoAAAACAAYAAAASAAsAAAADAAoAAAASAAwAAAADAAcAAAASAA0AAAADAAkAAAASAA4AAAACAAcAAAASAA8AAAACAAgAAAASABAAAAAHAAkAAAASABEAAAAFAAkAAAASABIAAAAAAAAAAAASABMAAAAHAAoAAAASABQAAAACAAMAAAASABUAAAAAAAcAAAASABYAAAABAAQAAAASABcAAAABAAQAAAASABgAAAABAAYAAAASABkAAAAAAAUAAAASABoAAAAFAAoAAAASABsAAAAIAAoAAAASABwAAAAFAAoAAAASAB0AAAAFAAkAAAASAB4AAAAFAAkAAAASAB8AAAABAAMAAAASACAAAAABAAQAAAASACEAAAABAAQAAAASACIAAAABAAUAAAASACMAAAAIAAoAAAASACQAAAAFAAoAAAASACUAAAAHAAoAAAASACYAAAAIAAkAAAASACcAAAAFAAkAAAASACgAAAAHAAkAAAASACkAAAAAAAAAAAASACoAAAAHAAoAAAASACsAAAAAAAAAAAASACwAAAAAAAAAAAASAC0AAAAFAAkAAAASAC4AAAAFAAoAAAASAC8AAAAAAAAAAAASADAAAAAAAAAAAAASADEAAAAIAAoAAAASADIAAAAHAAoAAAASADMAAAAIAAkAAAATAPD/AAABAAsAAAATAPH/AAAAAAAAAAATAPL/AAAHAAoAAAATAPP/AAAHAAoAAAATAPT/AAAIAAkAAAATAPX/AAAIAAoAAAATAPb/AAAFAAkAAAATAAIAAAABAAYAAAATAAMAAAAAAAUAAAATAAQAAAAHAAoAAAATAAUAAAAFAAkAAAATAAYAAAAFAAoAAAATAAcAAAAFAAoAAAATAAgAAAAHAAoAAAATAAkAAAACAAYAAAATAAoAAAADAAoAAAATAAsAAAADAAcAAAATAAwAAAAAAAEAAAATAA0AAAADAAcAAAATAA4AAAAAAAEAAAATAA8AAAADAAkAAAATABAAAAACAAgAAAATABEAAAAIAAkAAAATABIAAAAIAAkAAAATABMAAAAAAAAAAAATABQAAAAIAAkAAAATABUAAAACAAMAAAATABYAAAAAAAcAAAATABcAAAABAAQAAAATABgAAAABAAQAAAATABkAAAABAAYAAAATABoAAAAAAAUAAAATABsAAAAFAAoAAAATABwAAAAHAAoAAAATAB0AAAAIAAoAAAATAB4AAAAIAAoAAAATAB8AAAABAAMAAAATACAAAAABAAQAAAATACEAAAABAAQAAAATACIAAAABAAUAAAATACMAAAAAAAAAAAATACQAAAAIAAoAAAATACUAAAAAAAAAAAATACYAAAAHAAoAAAATACcAAAAHAAoAAAATACgAAAAIAAoAAAATACkAAAAHAAkAAAATACoAAAAIAAkAAAATACsAAAAIAAkAAAATACwAAAAAAAAAAAATAC0AAAAFAAkAAAATAC4AAAAAAAAAAAATAC8AAAAAAAAAAAATADAAAAAHAAoAAAATADEAAAAAAAAAAAATADIAAAAAAAAAAAATADMAAAAHAAkAAAAUAPD/AAABAAsAAAAUAPH/AAAAAAAAAAAUAPL/AAAFAAoAAAAUAPP/AAAIAAkAAAAUAPT/AAAFAAoAAAAUAPX/AAAIAAkAAAAUAPb/AAACAAYAAAAUAPf/AAACAAcAAAAUAPj/AAACAAcAAAAUAPn/AAACAAcAAAAUAPr/AAACAAgAAAAUAPv/AAAIAAoAAAAUAPz/AAAHAAkAAAAUAP3/AAAFAAkAAAAUAP7/AAAIAAoAAAAUAP//AAAFAAoAAAAUAAAAAAACAAMAAAAUAAEAAAAAAAcAAAAUAAIAAAABAAQAAAAUAAMAAAABAAYAAAAUAAQAAAAAAAUAAAAUAAUAAAAFAAkAAAAUAAYAAAAHAAoAAAAUAAcAAAAAAAAAAAAUAAgAAAAFAAoAAAAUAAkAAAADAAYAAAAUAAoAAAADAAcAAAAUAAsAAAADAAcAAAAUAAwAAAADAAcAAAAUAA0AAAADAAcAAAAUAA4AAAADAAcAAAAUAA8AAAADAAcAAAAUABAAAAADAAkAAAAUABEAAAACAAgAAAAUABIAAAAFAAoAAAAUABMAAAAHAAkAAAAUABQAAAAAAAAAAAAUABUAAAAHAAoAAAAUABYAAAACAAMAAAAUABcAAAAAAAcAAAAUABgAAAABAAQAAAAUABkAAAABAAQAAAAUABoAAAABAAYAAAAUABsAAAAAAAUAAAAUABwAAAAAAAAAAAAUAB0AAAAFAAkAAAAUAB4AAAAFAAkAAAAUAB8AAAABAAMAAAAUACAAAAABAAQAAAAUACEAAAABAAQAAAAUACIAAAABAAUAAAAUACMAAAAHAAkAAAAUACQAAAAHAAoAAAAUACUAAAAAAAMAAAAUACYAAAAAAAQAAAAUACcAAAAAAAQAAAAUACgAAAAAAAQAAAAUACkAAAAAAAQAAAAUACoAAAAAAAUAAAAUACsAAAAIAAkAAAAUACwAAAAHAAkAAAAUAC0AAAAFAAoAAAAUAC4AAAAIAAkAAAAUAC8AAAAFAAoAAAAUADAAAAAHAAoAAAAUADEAAAAHAAoAAAAUADIAAAAHAAkAAAAUADMAAAAIAAoAAAAVAPD/AAABAAsAAAAVAPH/AAAHAAkAAAAVAPL/AAAIAAoAAAAVAPP/AAAIAAkAAAAVAPT/AAAFAAoAAAAVAPX/AAACAAYAAAAVAPb/AAADAAoAAAAVAPf/AAAAAAEAAAAVAPj/AAAAAAEAAAAVAPn/AAAAAAEAAAAVAPr/AAADAAkAAAAVAPv/AAACAAgAAAAVAPz/AAAHAAoAAAAVAP3/AAAIAAkAAAAVAP7/AAAFAAoAAAAVAP//AAAFAAkAAAAVAAAAAAAHAAoAAAAVAAEAAAACAAMAAAAVAAIAAAAAAAcAAAAVAAMAAAABAAQAAAAVAAQAAAABAAYAAAAVAAUAAAAAAAUAAAAVAAYAAAAFAAoAAAAVAAcAAAAHAAkAAAAVAAgAAAAFAAkAAAAVAAkAAAADAAYAAAAVAAoAAAADAAcAAAAVAAsAAAADAAcAAAAVAAwAAAACAAkAAAAVAA0AAAAEAAcAAAAVAA4AAAACAAoAAAAVAA8AAAADAAcAAAAVABAAAAADAAcAAAAVABEAAAADAAgAAAAVABIAAAAHAAkAAAAVABMAAAAHAAkAAAAVABQAAAAIAAkAAAAVABUAAAAFAAkAAAAVABYAAAAIAAkAAAAVABcAAAACAAMAAAAVABgAAAAAAAcAAAAVABkAAAABAAQAAAAVABoAAAABAAQAAAAVABsAAAABAAYAAAAVABwAAAAAAAUAAAAVAB0AAAAHAAkAAAAVAB4AAAAAAAAAAAAVAB8AAAABAAMAAAAVACAAAAABAAQAAAAVACEAAAABAAQAAAAVACIAAAABAAUAAAAVACMAAAAAAAAAAAAVACQAAAAFAAoAAAAVACUAAAABAAMAAAAVACYAAAABAAQAAAAVACcAAAABAAQAAAAVACgAAAABAAQAAAAVACkAAAABAAQAAAAVACoAAAABAAUAAAAVACsAAAAHAAoAAAAVACwAAAAAAAAAAAAVAC0AAAAIAAoAAAAVAC4AAAAAAAAAAAAVAC8AAAAIAAoAAAAVADAAAAAIAAoAAAAVADEAAAAHAAkAAAAVADIAAAAHAAkAAAAVADMAAAAFAAkAAAAWAPD/AAABAAsAAAAWAPH/AAAHAAoAAAAWAPL/AAAAAAAAAAAWAPP/AAAFAAkAAAAWAPT/AAACAAYAAAAWAPX/AAADAAoAAAAWAPb/AAAAAAEAAAAWAPf/AAADAAcAAAAWAPj/AAAAAAEAAAAWAPn/AAADAAcAAAAWAPr/AAAAAAEAAAAWAPv/AAADAAgAAAAWAPz/AAAIAAkAAAAWAP3/AAAFAAkAAAAWAP7/AAAHAAoAAAAWAP//AAAIAAkAAAAWAAAAAAAIAAkAAAAWAAEAAAAFAAkAAAAWAAIAAAABAAMAAAAWAAMAAAABAAQAAAAWAAQAAAABAAQAAAAWAAUAAAABAAYAAAAWAAYAAAAAAAQAAAAWAAcAAAAAAAUAAAAWAAgAAAAAAAMAAAAWAAkAAAABAAcAAAAWAAoAAAAPAAoAAAAWAAsAAAAAAAEAAAAWAA0AAAACAAcAAAAWAA4AAAADAAoAAAAWAA8AAAADAAcAAAAWABAAAAAAAAEAAAAWABEAAAADAAgAAAAWABIAAAAFAAoAAAAWABMAAAAFAAoAAAAWABQAAAAAAAAAAAAWABUAAAAHAAoAAAAWABYAAAAIAAoAAAAWABcAAAAFAAkAAAAWABgAAAACAAMAAAAWABkAAAAAAAcAAAAWABoAAAABAAQAAAAWABsAAAABAAQAAAAWABwAAAABAAYAAAAWAB0AAAAAAAUAAAAWAB4AAAAFAAkAAAAWAB8AAAABAAMAAAAWACAAAAABAAQAAAAWACEAAAABAAQAAAAWACIAAAABAAUAAAAWACMAAAAIAAoAAAAWACQAAAAHAAkAAAAWACUAAAABAAMAAAAWACYAAAABAAQAAAAWACcAAAABAAQAAAAWACgAAAABAAQAAAAWACkAAAABAAQAAAAWACoAAAABAAUAAAAWACsAAAAIAAkAAAAWACwAAAAFAAkAAAAWAC0AAAAIAAkAAAAWAC4AAAAHAAkAAAAWAC8AAAAAAAAAAAAWADAAAAAIAAkAAAAWADEAAAAIAAkAAAAWADIAAAAHAAkAAAAWADMAAAAFAAkAAAAXAPD/AAABAAsAAAAXAPH/AAAHAAkAAAAXAPL/AAACAAYAAAAXAPP/AAACAAcAAAAXAPT/AAADAAoAAAAXAPX/AAADAAcAAAAXAPb/AAADAAcAAAAXAPf/AAADAAcAAAAXAPj/AAAAAAEAAAAXAPn/AAADAAcAAAAXAPr/AAAAAAEAAAAXAPv/AAADAAkAAAAXAPz/AAACAAgAAAAXAP3/AAAFAAkAAAAXAP7/AAAAAAAAAAAXAP//AAAHAAoAAAAXAAAAAAAHAAkAAAAXAAEAAAAIAAkAAAAXAAIAAAACAAMAAAAXAAMAAAAAAAcAAAAXAAQAAAABAAQAAAAXAAUAAAABAAQAAAAXAAYAAAABAAQAAAAXAAcAAAABAAYAAAAXAAgAAAABAAcAAAAXAAkAAAABAAQAAAAXAAoAAAAQAAYAAAAXAAsAAAADAAcAAAAXAAwAAAADAAcAAAAXAA0AAAAAAAEAAAAXAA4AAAAAAAEAAAAXAA8AAAADAAcAAAAXABAAAAAAAAEAAAAXABEAAAADAAgAAAAXABIAAAAIAAkAAAAXABMAAAAIAAoAAAAXABQAAAAFAAoAAAAXABUAAAAIAAkAAAAXABYAAAAHAAoAAAAXABcAAAAFAAoAAAAXABgAAAAAAAAAAAAXABkAAAACAAMAAAAXABoAAAAAAAcAAAAXABsAAAABAAQAAAAXABwAAAABAAQAAAAXAB0AAAABAAYAAAAXAB4AAAAAAAUAAAAXAB8AAAABAAMAAAAXACAAAAABAAQAAAAXACEAAAABAAQAAAAXACIAAAABAAUAAAAXACMAAAAFAAkAAAAXACQAAAAFAAoAAAAXACUAAAABAAMAAAAXACYAAAABAAQAAAAXACcAAAABAAQAAAAXACgAAAABAAQAAAAXACkAAAABAAQAAAAXACoAAAABAAUAAAAXACsAAAAIAAoAAAAXACwAAAAIAAkAAAAXAC0AAAAHAAkAAAAXAC4AAAAHAAoAAAAXAC8AAAAHAAkAAAAXADAAAAAIAAkAAAAXADEAAAAHAAoAAAAXADIAAAAHAAoAAAAXADMAAAAHAAkAAAAYAPD/AAABAAsAAAAYAPH/AAAIAAkAAAAYAPL/AAADAAYAAAAYAPP/AAADAAcAAAAYAPT/AAADAAcAAAAYAPX/AAADAAcAAAAYAPb/AAADAAcAAAAYAPf/AAADAAcAAAAYAPn/AAADAAcAAAAYAPr/AAADAAcAAAAYAPv/AAADAAcAAAAYAPz/AAADAAgAAAAYAP3/AAAFAAkAAAAYAP7/AAAIAAkAAAAYAP//AAAFAAoAAAAYAAAAAAAIAAoAAAAYAAEAAAAIAAoAAAAYAAIAAAAFAAoAAAAYAAMAAAACAAMAAAAYAAQAAAACAAQAAAAYAAUAAAAAAAcAAAAYAAYAAAABAAQAAAAYAAcAAAABAAQAAAAYAAgAAAABAAQAAAAYAAkAAAABAAQAAAAYAAoAAAARAAYAAAAYAAsAAAAIAA0AAAAYAAwAAAAEAAcAAAAYAA0AAAAEAAcAAAAYAA4AAAACAAoAAAAYAA8AAAADAAcAAAAYABAAAAADAAcAAAAYABEAAAADAAkAAAAYABIAAAACAAgAAAAYABMAAAAFAAoAAAAYABQAAAAHAAoAAAAYABUAAAAFAAoAAAAYABYAAAAHAAoAAAAYABcAAAAFAAkAAAAYABgAAAAHAAkAAAAYABkAAAAHAAoAAAAYABoAAAACAAMAAAAYABsAAAAAAAcAAAAYABwAAAABAAQAAAAYAB0AAAABAAQAAAAYAB4AAAABAAUAAAAYAB8AAAABAAMAAAAYACAAAAABAAQAAAAYACEAAAABAAQAAAAYACIAAAABAAUAAAAYACMAAAAHAAkAAAAYACQAAAAIAAkAAAAYACUAAAABAAMAAAAYACYAAAABAAQAAAAYACcAAAABAAQAAAAYACgAAAABAAQAAAAYACkAAAABAAQAAAAYACoAAAABAAUAAAAYACsAAAAIAAkAAAAYACwAAAAHAAoAAAAYAC0AAAAHAAoAAAAYAC4AAAAIAAkAAAAYAC8AAAAAAAAAAAAYADAAAAAAAAAAAAAYADEAAAAFAAoAAAAYADIAAAAIAAoAAAAYADMAAAAFAAoAAAAZAPD/AAACAAYAAAAZAPH/AAACAAcAAAAZAPL/AAADAAoAAAAZAPP/AAADAAcAAAAZAPT/AAADAAcAAAAZAPX/AAAAAAEAAAAZAPb/AAADAAcAAAAZAPf/AAADAAcAAAAZAPj/AAADAAcAAAAZAPn/AAADAAcAAAAZAPr/AAADAAcAAAAZAPv/AAADAAcAAAAZAPz/AAADAAgAAAAZAP3/AAAIAAkAAAAZAP7/AAAAAAAAAAAZAP//AAAFAAoAAAAZAAAAAAAFAAkAAAAZAAEAAAAAAAAAAAAZAAIAAAAFAAkAAAAZAAMAAAAFAAkAAAAZAAQAAAAHAAoAAAAZAAUAAAACAAMAAAAZAAYAAAACAAQAAAAZAAcAAAACAAQAAAAZAAgAAAAAAAcAAAAZAAkAAAABAAQAAAAZAAoAAAABAAQAAAAZAAsAAAABAAUAAAAZAAwAAAAAAAAAAAAZAA0AAAAAAAAAAAAZAA4AAAADAAYAAAAZAA8AAAADAAcAAAAZABAAAAADAAcAAAAZABEAAAADAAcAAAAZABIAAAADAAgAAAAZABMAAAAHAAoAAAAZABQAAAAHAAoAAAAZABUAAAAIAAoAAAAZABYAAAAHAAoAAAAZABcAAAAIAAoAAAAZABgAAAAAAAAAAAAZABkAAAAIAAkAAAAZABoAAAAIAAoAAAAZABsAAAACAAMAAAAZABwAAAAAAAcAAAAZAB0AAAABAAQAAAAZAB4AAAABAAUAAAAZAB8AAAABAAMAAAAZACAAAAABAAQAAAAZACEAAAABAAQAAAAZACIAAAABAAUAAAAZACMAAAAHAAkAAAAZACQAAAAIAAkAAAAZACUAAAABAAMAAAAZACYAAAABAAQAAAAZACcAAAABAAQAAAAZACgAAAABAAQAAAAZACkAAAABAAQAAAAZACoAAAABAAUAAAAZACsAAAAIAAoAAAAZACwAAAAIAAkAAAAZAC0AAAAIAAoAAAAZAC4AAAAHAAoAAAAZAC8AAAAIAAoAAAAZADAAAAAAAAAAAAAZADEAAAAIAAkAAAAZADIAAAAIAAkAAAAZADMAAAAFAAoAAAAaAPD/AAADAAYAAAAaAPH/AAAAAAEAAAAaAPL/AAADAAcAAAAaAPP/AAADAAcAAAAaAPT/AAADAAcAAAAaAPX/AAAAAAEAAAAaAPb/AAADAAcAAAAaAPf/AAAAAAEAAAAaAPj/AAAAAAEAAAAaAPn/AAAAAAEAAAAaAPr/AAADAAcAAAAaAPv/AAAAAAEAAAAaAPz/AAADAAkAAAAaAP3/AAACAAcAAAAaAP7/AAACAAcAAAAaAP//AAACAAgAAAAaAAAAAAAIAAoAAAAaAAEAAAAHAAoAAAAaAAIAAAAIAAkAAAAaAAMAAAAHAAkAAAAaAAQAAAAIAAkAAAAaAAUAAAAHAAkAAAAaAAYAAAAAAAAAAAAaAAcAAAAFAAoAAAAaAAgAAAABAAMAAAAaAAkAAAABAAQAAAAaAAoAAAAAAAYAAAAaAAsAAAACAAUAAAAaAAwAAAAAAAAAAAAaAA0AAAAAAAAAAAAaAA4AAAAEAAYAAAAaAA8AAAACAAoAAAAaABAAAAAAAAEAAAAaABEAAAADAAcAAAAaABIAAAADAAgAAAAaABMAAAAHAAkAAAAaABQAAAAHAAkAAAAaABUAAAAFAAkAAAAaABYAAAAAAAAAAAAaABcAAAAIAAoAAAAaABgAAAAIAAoAAAAaABkAAAAHAAkAAAAaABoAAAAFAAoAAAAaABsAAAAAAAMAAAAaABwAAAABAAcAAAAaAB0AAAABAAQAAAAaAB4AAAABAAUAAAAaAB8AAAABAAMAAAAaACAAAAABAAQAAAAaACEAAAABAAQAAAAaACIAAAABAAUAAAAaACMAAAAIAAkAAAAaACQAAAAHAAoAAAAaACUAAAABAAMAAAAaACYAAAABAAQAAAAaACcAAAABAAQAAAAaACgAAAABAAQAAAAaACkAAAABAAQAAAAaACoAAAABAAUAAAAaACsAAAAFAAkAAAAaACwAAAAFAAoAAAAaAC0AAAAAAAAAAAAaAC4AAAAHAAkAAAAaAC8AAAAHAAoAAAAaADAAAAAFAAkAAAAaADEAAAAIAAoAAAAaADIAAAAFAAkAAAAaADMAAAAAAAkAAAAbAPD/AAADAAoAAAAbAPH/AAAAAAEAAAAbAPL/AAADAAcAAAAbAPP/AAADAAcAAAAbAPT/AAAAAAEAAAAbAPX/AAADAAcAAAAbAPb/AAADAAcAAAAbAPf/AAADAAcAAAAbAPj/AAADAAcAAAAbAPn/AAADAAcAAAAbAPr/AAADAAcAAAAbAPv/AAADAAcAAAAbAPz/AAAAAAEAAAAbAP3/AAADAAcAAAAbAP7/AAADAAcAAAAbAP//AAADAAkAAAAbAAAAAAACAAgAAAAbAAEAAAAFAAoAAAAbAAIAAAAIAAoAAAAbAAMAAAAHAAoAAAAbAAQAAAAAAAAAAAAbAAUAAAAFAAkAAAAbAAYAAAAAAAMAAAAbAAcAAAAAAAQAAAAbAAgAAAABAAcAAAAbAAkAAAABAAQAAAAbAAoAAAABAAUAAAAbAAsAAAAAAAAAAAAbAAwAAAAAAAAAAAAbAA0AAAAAAAAAAAAbAA4AAAACAAYAAAAbAA8AAAADAAoAAAAbABAAAAADAAcAAAAbABEAAAACAAkAAAAbABIAAAAEAAgAAAAbABMAAAAIAAkAAAAbABQAAAAIAAoAAAAbABUAAAAHAAkAAAAbABYAAAAIAAkAAAAbABcAAAAFAAkAAAAbABgAAAAIAAoAAAAbABkAAAAAAAAAAAAbABoAAAAAAAAAAAAbABsAAAABAAMAAAAbABwAAAABAAQAAAAbAB0AAAAAAAYAAAAbAB4AAAACAAUAAAAbAB8AAAABAAMAAAAbACAAAAABAAQAAAAbACEAAAABAAQAAAAbACIAAAABAAUAAAAbACMAAAAHAAoAAAAbACQAAAAFAAkAAAAbACUAAAABAAMAAAAbACYAAAABAAQAAAAbACcAAAABAAQAAAAbACgAAAABAAQAAAAbACkAAAABAAQAAAAbACoAAAABAAUAAAAbACsAAAAIAAoAAAAbACwAAAAIAAoAAAAbAC0AAAAHAAkAAAAbAC4AAAAIAAkAAAAbAC8AAAAAAAAAAAAbADAAAAACAAYAAAAbADEAAAACAAcAAAAbADIAAAACAAcAAAAbADMAAAADAAoAAAAcAPD/AAADAAcAAAAcAPH/AAADAAcAAAAcAPL/AAADAAcAAAAcAPP/AAADAAcAAAAcAPT/AAADAAcAAAAcAPX/AAAAAAEAAAAcAPb/AAADAAcAAAAcAPf/AAADAAcAAAAcAPj/AAADAAcAAAAcAPn/AAADAAcAAAAcAPr/AAADAAcAAAAcAPv/AAADAAcAAAAcAPz/AAADAAcAAAAcAP3/AAADAAcAAAAcAP7/AAADAAcAAAAcAP//AAAAAAEAAAAcAAAAAAADAAkAAAAcAAEAAAACAAgAAAAcAAIAAAAFAAoAAAAcAAMAAAAAAAAAAAAcAAQAAAAFAAkAAAAcAAUAAAAIAAkAAAAcAAYAAAABAAMAAAAcAAcAAAABAAQAAAAcAAgAAAABAAQAAAAcAAkAAAAAAAYAAAAcAAoAAAACAAUAAAAcAAsAAAAAAAAAAAAcAAwAAAAAAAAAAAAcAA0AAAACAAYAAAAcAA4AAAADAAoAAAAcAA8AAAADAAcAAAAcABAAAAADAAcAAAAcABEAAAADAAgAAAAcABIAAAAFAAoAAAAcABMAAAAIAAoAAAAcABQAAAAFAAoAAAAcABUAAAAFAAkAAAAcABYAAAAHAAoAAAAcABcAAAAHAAkAAAAcABgAAAAIAAkAAAAcABkAAAAIAAkAAAAcABoAAAAAAAMAAAAcABsAAAABAAcAAAAcABwAAAABAAQAAAAcAB0AAAABAAUAAAAcAB4AAAAFAAoAAAAcAB8AAAABAAMAAAAcACAAAAABAAQAAAAcACEAAAABAAQAAAAcACIAAAABAAUAAAAcACMAAAAFAAkAAAAcACQAAAAIAAkAAAAcACUAAAABAAMAAAAcACYAAAABAAQAAAAcACcAAAABAAQAAAAcACgAAAABAAQAAAAcACkAAAABAAQAAAAcACoAAAABAAUAAAAcACsAAAAHAAkAAAAcACwAAAAFAAkAAAAcAC0AAAAAAAAAAAAcAC4AAAAIAAoAAAAcAC8AAAACAAYAAAAcADAAAAADAAoAAAAcADEAAAADAAcAAAAcADIAAAADAAcAAAAcADMAAAADAAcAAAAdAPD/AAADAAcAAAAdAPH/AAADAAcAAAAdAPL/AAAAAAEAAAAdAPP/AAAAAAEAAAAdAPT/AAADAAcAAAAdAPX/AAADAAcAAAAdAPb/AAADAAcAAAAdAPf/AAAAAAEAAAAdAPj/AAAAAAEAAAAdAPn/AAADAAcAAAAdAPr/AAADAAcAAAAdAPv/AAAAAAEAAAAdAPz/AAADAAcAAAAdAP3/AAADAAcAAAAdAP7/AAADAAcAAAAdAP//AAADAAcAAAAdAAAAAAADAAcAAAAdAAEAAAADAAgAAAAdAAIAAAAHAAoAAAAdAAMAAAAHAAkAAAAdAAQAAAAHAAoAAAAdAAUAAAAFAAoAAAAdAAYAAAABAAMAAAAdAAcAAAABAAQAAAAdAAgAAAAAAAYAAAAdAAkAAAACAAUAAAAdAAoAAAAAAAAAAAAdAAsAAAAAAAAAAAAdAAwAAAAAAAAAAAAdAA0AAAADAAYAAAAdAA4AAAADAAcAAAAdAA8AAAADAAcAAAAdABAAAAACAAkAAAAdABEAAAAEAAgAAAAdABIAAAAHAAkAAAAdABMAAAAHAAkAAAAdABQAAAAFAAoAAAAdABUAAAAHAAkAAAAdABYAAAAHAAoAAAAdABcAAAAIAAkAAAAdABgAAAAHAAkAAAAdABkAAAAAAAMAAAAdABoAAAABAAcAAAAdABsAAAABAAQAAAAdABwAAAABAAQAAAAdAB0AAAABAAUAAAAdAB4AAAAAAAAAAAAdAB8AAAABAAMAAAAdACAAAAABAAQAAAAdACEAAAABAAQAAAAdACIAAAABAAUAAAAdACMAAAAFAAkAAAAdACQAAAAIAAkAAAAdACUAAAACAAMAAAAdACYAAAACAAQAAAAdACcAAAACAAQAAAAdACgAAAACAAQAAAAdACkAAAACAAQAAAAdACoAAAACAAUAAAAdACsAAAAHAAoAAAAdACwAAAAIAAoAAAAdAC0AAAAAAAAAAAAdAC4AAAACAAYAAAAdAC8AAAADAAoAAAAdADAAAAADAAcAAAAdADEAAAADAAcAAAAdADIAAAADAAcAAAAdADMAAAADAAcAAAAeAPD/AAAAAAEAAAAeAPH/AAAAAAEAAAAeAPL/AAADAAcAAAAeAPP/AAADAAcAAAAeAPT/AAADAAcAAAAeAPX/AAAAAAEAAAAeAPb/AAADAAcAAAAeAPf/AAAAAAEAAAAeAPj/AAAAAAEAAAAeAPn/AAAAAAEAAAAeAPr/AAADAAcAAAAeAPv/AAADAAcAAAAeAPz/AAAAAAEAAAAeAP3/AAADAAcAAAAeAP7/AAAAAAEAAAAeAP//AAADAAcAAAAeAAAAAAADAAcAAAAeAAEAAAADAAgAAAAeAAIAAAAHAAkAAAAeAAMAAAAHAAkAAAAeAAQAAAAIAAoAAAAeAAUAAAAHAAkAAAAeAAYAAAABAAMAAAAeAAcAAAABAAQAAAAeAAgAAAABAAUAAAAeAAkAAAAAAAAAAAAeAAoAAAAAAAAAAAAeAAsAAAAAAAAAAAAeAAwAAAACAAYAAAAeAA0AAAADAAoAAAAeAA4AAAADAAcAAAAeAA8AAAACAAkAAAAeABAAAAAEAAgAAAAeABEAAAAFAAoAAAAeABIAAAAHAAoAAAAeABMAAAAIAAoAAAAeABQAAAAFAAkAAAAeABUAAAAAAAAAAAAeABYAAAAIAAkAAAAeABcAAAAIAAkAAAAeABgAAAAAAAMAAAAeABkAAAABAAcAAAAeABoAAAABAAQAAAAeABsAAAABAAQAAAAeABwAAAAAAAYAAAAeAB0AAAACAAUAAAAeAB4AAAAFAAoAAAAeAB8AAAABAAMAAAAeACAAAAABAAQAAAAeACEAAAABAAQAAAAeACIAAAABAAUAAAAeACMAAAAFAAkAAAAeACQAAAAIAAoAAAAeACUAAAAIAAkAAAAeACYAAAAHAAkAAAAeACcAAAAIAAoAAAAeACgAAAAHAAkAAAAeACkAAAAFAAkAAAAeACoAAAAFAAkAAAAeACsAAAAHAAkAAAAeACwAAAAHAAoAAAAeAC0AAAACAAYAAAAeAC4AAAADAAoAAAAeAC8AAAADAAcAAAAeADAAAAADAAcAAAAeADEAAAADAAcAAAAeADIAAAADAAcAAAAeADMAAAADAAcAAAAfAPD/AAADAAcAAAAfAPH/AAAAAAEAAAAfAPL/AAADAAcAAAAfAPP/AAADAAcAAAAfAPT/AAADAAcAAAAfAPX/AAAAAAEAAAAfAPb/AAADAAcAAAAfAPf/AAAAAAEAAAAfAPj/AAADAAcAAAAfAPn/AAAAAAEAAAAfAPr/AAADAAcAAAAfAPv/AAADAAcAAAAfAPz/AAADAAcAAAAfAP3/AAADAAcAAAAfAP7/AAADAAcAAAAfAP//AAAAAAEAAAAfAAAAAAADAAcAAAAfAAEAAAADAAgAAAAfAAIAAAAFAAoAAAAfAAMAAAAFAAoAAAAfAAQAAAAIAAoAAAAfAAUAAAAHAAkAAAAfAAYAAAABAAMAAAAfAAcAAAABAAQAAAAfAAgAAAABAAUAAAAfAAkAAAAAAAAAAAAfAAoAAAAAAAAAAAAfAAsAAAAAAAAAAAAfAAwAAAADAAYAAAAfAA0AAAADAAcAAAAfAA4AAAADAAcAAAAfAA8AAAADAAgAAAAfABAAAAAFAAkAAAAfABEAAAAFAAkAAAAfABIAAAAIAAkAAAAfABMAAAAHAAkAAAAfABQAAAAAAAAAAAAfABUAAAAAAAAAAAAfABYAAAAIAAkAAAAfABcAAAAAAAAAAAAfABgAAAABAAMAAAAfABkAAAABAAQAAAAfABoAAAABAAQAAAAfABsAAAAAAAYAAAAfABwAAAACAAUAAAAfAB0AAAAAAAAAAAAfAB4AAAAFAAoAAAAfAB8AAAABAAMAAAAfACAAAAABAAQAAAAfACEAAAABAAQAAAAfACIAAAABAAUAAAAfACMAAAAFAAkAAAAfACQAAAAAAAAAAAAfACUAAAAAAAAAAAAfACYAAAAHAAkAAAAfACcAAAAHAAoAAAAfACgAAAAIAAkAAAAfACkAAAAIAAoAAAAfACoAAAAIAAoAAAAfACsAAAACAAYAAAAfACwAAAACAAcAAAAfAC0AAAADAAoAAAAfAC4AAAADAAcAAAAfAC8AAAADAAcAAAAfADAAAAADAAcAAAAfADEAAAADAAcAAAAfADIAAAAAAAEAAAAfADMAAAACAAkAAAAgAPD/AAADAAcAAAAgAPH/AAAAAAEAAAAgAPL/AAADAAcAAAAgAPP/AAADAAcAAAAgAPT/AAADAAcAAAAgAPX/AAAAAAEAAAAgAPb/AAADAAcAAAAgAPf/AAADAAcAAAAgAPj/AAADAAcAAAAgAPn/AAAAAAEAAAAgAPr/AAAAAAEAAAAgAPv/AAADAAcAAAAgAPz/AAAAAAEAAAAgAP3/AAADAAcAAAAgAP7/AAADAAcAAAAgAP//AAAAAAEAAAAgAAAAAAADAAcAAAAgAAEAAAADAAgAAAAgAAIAAAAFAAkAAAAgAAMAAAAFAAkAAAAgAAQAAAAIAAkAAAAgAAUAAAAIAAkAAAAgAAYAAAABAAMAAAAgAAcAAAABAAQAAAAgAAgAAAABAAYAAAAgAAkAAAAAAAUAAAAgAAoAAAAAAAAAAAAgAAsAAAAAAAAAAAAgAAwAAAADAAYAAAAgAA0AAAADAAcAAAAgAA4AAAACAAkAAAAgAA8AAAAEAAgAAAAgABAAAAAFAAoAAAAgABEAAAAAAAAAAAAgABIAAAAHAAkAAAAgABMAAAAIAAoAAAAgABQAAAAIAAoAAAAgABUAAAAFAAoAAAAgABYAAAAAAAAAAAAgABcAAAAAAAMAAAAgABgAAAABAAcAAAAgABkAAAABAAQAAAAgABoAAAAAAAYAAAAgABsAAAACAAUAAAAgABwAAAAFAAkAAAAgAB0AAAAFAAoAAAAgAB4AAAAHAAoAAAAgAB8AAAABAAMAAAAgACAAAAABAAQAAAAgACEAAAABAAQAAAAgACIAAAABAAUAAAAgACMAAAAHAAkAAAAgACQAAAAIAAkAAAAgACUAAAAFAAkAAAAgACYAAAAFAAkAAAAgACcAAAAFAAoAAAAgACgAAAAHAAoAAAAgACkAAAAHAAoAAAAgACoAAAACAAYAAAAgACsAAAADAAoAAAAgACwAAAAAAAEAAAAgAC0AAAADAAcAAAAgAC4AAAAAAAEAAAAgAC8AAAAAAAEAAAAgADAAAAADAAcAAAAgADEAAAADAAcAAAAgADIAAAACAAkAAAAgADMAAAAEAAgAAAAhAPD/AAADAAcAAAAhAPH/AAADAAcAAAAhAPL/AAADAAcAAAAhAPP/AAAAAAEAAAAhAPT/AAADAAcAAAAhAPX/AAAAAAEAAAAhAPb/AAADAAcAAAAhAPf/AAAAAAEAAAAhAPj/AAADAAcAAAAhAPn/AAADAAcAAAAhAPr/AAADAAcAAAAhAPv/AAADAAcAAAAhAPz/AAADAAcAAAAhAP3/AAADAAcAAAAhAP7/AAADAAcAAAAhAP//AAADAAcAAAAhAAAAAAADAAcAAAAhAAEAAAADAAgAAAAhAAIAAAAFAAkAAAAhAAMAAAAIAAoAAAAhAAQAAAAHAAoAAAAhAAUAAAAAAAAAAAAhAAYAAAABAAMAAAAhAAcAAAABAAQAAAAhAAgAAAABAAQAAAAhAAkAAAABAAUAAAAhAAoAAAAAAAAAAAAhAAsAAAAAAAAAAAAhAAwAAAADAAYAAAAhAA0AAAADAAcAAAAhAA4AAAADAAgAAAAhAA8AAAAIAAoAAAAhABAAAAAHAAkAAAAhABEAAAAIAAoAAAAhABIAAAAHAAoAAAAhABMAAAAFAAoAAAAhABQAAAAHAAoAAAAhABUAAAAFAAkAAAAhABYAAAAAAAMAAAAhABcAAAABAAcAAAAhABgAAAABAAQAAAAhABkAAAAAAAYAAAAhABoAAAACAAUAAAAhABsAAAAIAAkAAAAhABwAAAAIAAoAAAAhAB0AAAAIAAkAAAAhAB4AAAAIAAoAAAAhAB8AAAABAAMAAAAhACAAAAABAAQAAAAhACEAAAABAAQAAAAhACIAAAABAAUAAAAhACMAAAAIAAkAAAAhACQAAAAFAAoAAAAhACUAAAAFAAoAAAAhACYAAAAFAAoAAAAhACcAAAAHAAoAAAAhACgAAAAAAAAAAAAhACkAAAACAAYAAAAhACoAAAADAAoAAAAhACsAAAADAAcAAAAhACwAAAAAAAEAAAAhAC0AAAADAAcAAAAhAC4AAAAAAAEAAAAhAC8AAAADAAcAAAAhADAAAAADAAcAAAAhADEAAAACAAkAAAAhADIAAAAEAAgAAAAhADMAAAAIAAoAAAAiAPD/AAADAAcAAAAiAPH/AAADAAcAAAAiAPL/AAADAAcAAAAiAPP/AAADAAcAAAAiAPT/AAAAAAEAAAAiAPX/AAADAAcAAAAiAPb/AAADAAcAAAAiAPf/AAAAAAEAAAAiAPj/AAADAAcAAAAiAPn/AAADAAcAAAAiAPr/AAAAAAEAAAAiAPv/AAADAAcAAAAiAPz/AAADAAcAAAAiAP3/AAADAAcAAAAiAP7/AAADAAcAAAAiAP//AAADAAcAAAAiAAAAAAAAAAEAAAAiAAEAAAADAAgAAAAiAAIAAAAIAAoAAAAiAAMAAAAAAAAAAAAiAAQAAAAIAAkAAAAiAAUAAAAFAAoAAAAiAAYAAAABAAMAAAAiAAcAAAABAAQAAAAiAAgAAAABAAQAAAAiAAkAAAABAAUAAAAiAAoAAAAAAAAAAAAiAAsAAAACAAYAAAAiAAwAAAADAAoAAAAiAA0AAAADAAcAAAAiAA4AAAADAAgAAAAiAA8AAAAFAAkAAAAiABAAAAAHAAoAAAAiABEAAAAFAAkAAAAiABIAAAAIAAkAAAAiABMAAAAIAAoAAAAiABQAAAAHAAkAAAAiABUAAAAAAAAAAAAiABYAAAABAAMAAAAiABcAAAABAAQAAAAiABgAAAABAAQAAAAiABkAAAABAAUAAAAiABoAAAAHAAkAAAAiABsAAAAFAAoAAAAiABwAAAAFAAkAAAAiAB0AAAAFAAoAAAAiAB4AAAAIAAoAAAAiAB8AAAABAAMAAAAiACAAAAABAAQAAAAiACEAAAABAAQAAAAiACIAAAABAAUAAAAiACMAAAAHAAoAAAAiACQAAAAHAAoAAAAiACUAAAAHAAoAAAAiACYAAAAFAAoAAAAiACcAAAAFAAkAAAAiACgAAAACAAYAAAAiACkAAAADAAoAAAAiACoAAAAAAAEAAAAiACsAAAADAAcAAAAiACwAAAAAAAEAAAAiAC0AAAADAAcAAAAiAC4AAAADAAcAAAAiAC8AAAACAAkAAAAiADAAAAAEAAcAAAAiADEAAAAEAAgAAAAiADIAAAAFAAoAAAAiADMAAAAFAAkAAAAjAPD/AAADAAcAAAAjAPH/AAADAAcAAAAjAPL/AAAAAAEAAAAjAPP/AAADAAcAAAAjAPT/AAAAAAEAAAAjAPX/AAAAAAEAAAAjAPb/AAADAAcAAAAjAPf/AAADAAcAAAAjAPj/AAADAAcAAAAjAPn/AAADAAcAAAAjAPr/AAADAAcAAAAjAPv/AAAAAAEAAAAjAPz/AAADAAcAAAAjAP3/AAADAAcAAAAjAP7/AAADAAcAAAAjAP//AAADAAcAAAAjAAAAAAADAAcAAAAjAAEAAAADAAgAAAAjAAIAAAAHAAoAAAAjAAMAAAAHAAkAAAAjAAQAAAAIAAkAAAAjAAUAAAAIAAkAAAAjAAYAAAACAAMAAAAjAAcAAAAAAAcAAAAjAAgAAAABAAQAAAAjAAkAAAABAAUAAAAjAAoAAAACAAcAAAAjAAsAAAADAAoAAAAjAAwAAAADAAcAAAAjAA0AAAADAAcAAAAjAA4AAAALAA0AAAAjAA8AAAAAAAQAAAAjABAAAAAAAAQAAAAjABEAAAAAAAUAAAAjABIAAAAFAAkAAAAjABMAAAAIAAkAAAAjABQAAAAIAAkAAAAjABUAAAAHAAkAAAAjABYAAAABAAMAAAAjABcAAAABAAQAAAAjABgAAAAAAAYAAAAjABkAAAACAAUAAAAjABoAAAAFAAkAAAAjABsAAAAHAAkAAAAjABwAAAAFAAkAAAAjAB0AAAAHAAoAAAAjAB4AAAAIAAoAAAAjAB8AAAABAAMAAAAjACAAAAABAAQAAAAjACEAAAABAAQAAAAjACIAAAABAAUAAAAjACMAAAAAAAAAAAAjACQAAAAAAAAAAAAjACUAAAAHAAkAAAAjACYAAAAAAAAAAAAjACcAAAAFAAoAAAAjACgAAAADAAYAAAAjACkAAAADAAcAAAAjACoAAAAAAAEAAAAjACsAAAADAAcAAAAjACwAAAADAAcAAAAjAC0AAAADAAcAAAAjAC4AAAACAAkAAAAjAC8AAAAEAAgAAAAjADAAAAAHAAoAAAAjADEAAAAIAAoAAAAjADIAAAAIAAkAAAAjADMAAAAFAAkAAAAkAPD/AAADAAcAAAAkAPH/AAADAAcAAAAkAPL/AAADAAcAAAAkAPP/AAAAAAEAAAAkAPT/AAAAAAEAAAAkAPX/AAADAAcAAAAkAPb/AAADAAcAAAAkAPf/AAAAAAEAAAAkAPj/AAADAAcAAAAkAPn/AAADAAcAAAAkAPr/AAADAAcAAAAkAPv/AAADAAcAAAAkAPz/AAADAAcAAAAkAP3/AAADAAcAAAAkAP7/AAADAAcAAAAkAP//AAADAAcAAAAkAAAAAAADAAcAAAAkAAEAAAADAAgAAAAkAAIAAAAHAAkAAAAkAAMAAAAAAAAAAAAkAAQAAAAIAAkAAAAkAAUAAAAIAAoAAAAkAAYAAAAIAAkAAAAkAAcAAAABAAMAAAAkAAgAAAABAAQAAAAkAAkAAAAQAAYAAAAkAAwAAAAAAAEAAAAkAA0AAAAAAAEAAAAkAA4AAAAQAAgAAAAkAA8AAAABAAQAAAAkABAAAAABAAQAAAAkABEAAAABAAYAAAAkABIAAAAAAAUAAAAkABMAAAAFAAoAAAAkABQAAAAFAAoAAAAkABUAAAAIAAkAAAAkABYAAAABAAMAAAAkABcAAAABAAQAAAAkABgAAAABAAUAAAAkABkAAAAFAAkAAAAkABoAAAAAAAAAAAAkABsAAAAHAAkAAAAkABwAAAAFAAoAAAAkAB0AAAAIAAoAAAAkAB4AAAAHAAoAAAAkAB8AAAABAAMAAAAkACAAAAABAAQAAAAkACEAAAABAAQAAAAkACIAAAABAAUAAAAkACMAAAAHAAkAAAAkACQAAAAHAAkAAAAkACUAAAAAAAAAAAAkACYAAAACAAYAAAAkACcAAAACAAcAAAAkACgAAAADAAoAAAAkACkAAAADAAcAAAAkACoAAAADAAcAAAAkACsAAAADAAcAAAAkACwAAAADAAcAAAAkAC0AAAADAAcAAAAkAC4AAAADAAgAAAAkAC8AAAAIAAoAAAAkADAAAAAIAAoAAAAkADEAAAAHAAkAAAAkADIAAAAFAAoAAAAkADMAAAAIAAoAAAAlAPD/AAADAAcAAAAlAPH/AAADAAcAAAAlAPL/AAADAAcAAAAlAPP/AAAAAAEAAAAlAPT/AAADAAcAAAAlAPX/AAADAAcAAAAlAPb/AAADAAcAAAAlAPf/AAADAAcAAAAlAPj/AAADAAcAAAAlAPn/AAADAAcAAAAlAPr/AAADAAcAAAAlAPv/AAADAAcAAAAlAPz/AAADAAcAAAAlAP3/AAADAAcAAAAlAP7/AAADAAcAAAAlAP//AAADAAcAAAAlAAAAAAACAAkAAAAlAAEAAAAEAAgAAAAlAAIAAAAHAAoAAAAlAAMAAAAIAAkAAAAlAAQAAAAFAAoAAAAlAAUAAAAFAAkAAAAlAAYAAAAAAAAAAAAlAAcAAAABAAMAAAAlAAgAAAABAAQAAAAlAAkAAAAQAAYAAAAlAA0AAAADAAcAAAAlAA4AAAAQAAgAAAAlAA8AAAABAAQAAAAlABAAAAABAAQAAAAlABEAAAABAAQAAAAlABIAAAABAAYAAAAlABMAAAAAAAQAAAAlABQAAAAAAAUAAAAlABUAAAAAAAMAAAAlABYAAAABAAcAAAAlABcAAAABAAQAAAAlABgAAAABAAUAAAAlABkAAAAHAAkAAAAlABoAAAAFAAoAAAAlABsAAAAIAAoAAAAlABwAAAAIAAkAAAAlAB0AAAAIAAkAAAAlAB4AAAAHAAkAAAAlAB8AAAABAAMAAAAlACAAAAABAAQAAAAlACEAAAABAAQAAAAlACIAAAABAAUAAAAlACMAAAAHAAoAAAAlACQAAAAIAAkAAAAlACUAAAACAAYAAAAlACYAAAADAAoAAAAlACcAAAAAAAEAAAAlACgAAAAAAAEAAAAlACkAAAADAAcAAAAlACoAAAADAAcAAAAlACsAAAADAAcAAAAlACwAAAADAAcAAAAlAC0AAAADAAcAAAAlAC4AAAADAAgAAAAlAC8AAAAHAAoAAAAlADAAAAAIAAkAAAAlADEAAAAHAAkAAAAlADIAAAAIAAkAAAAlADMAAAAFAAkAAAAmAPD/AAADAAcAAAAmAPH/AAADAAcAAAAmAPL/AAADAAcAAAAmAPP/AAADAAcAAAAmAPT/AAAAAAEAAAAmAPX/AAADAAcAAAAmAPb/AAAAAAEAAAAmAPf/AAADAAcAAAAmAPj/AAADAAcAAAAmAPn/AAAAAAEAAAAmAPr/AAAAAAEAAAAmAPv/AAADAAcAAAAmAPz/AAADAAcAAAAmAP3/AAADAAcAAAAmAP7/AAADAAcAAAAmAP//AAACAAkAAAAmAAAAAAAEAAgAAAAmAAEAAAAFAAoAAAAmAAIAAAAFAAkAAAAmAAMAAAAFAAkAAAAmAAQAAAAIAAkAAAAmAAUAAAAIAAkAAAAmAAYAAAAHAAkAAAAmAAcAAAABAAMAAAAmAAgAAAABAAQAAAAmAAkAAAAQAAYAAAAmAA0AAAADAAcAAAAmAA4AAAAKAA0AAAAmAA8AAAACAAQAAAAmABAAAAAAAAcAAAAmABEAAAABAAQAAAAmABIAAAABAAQAAAAmABMAAAABAAQAAAAmABQAAAABAAYAAAAmABUAAAABAAcAAAAmABYAAAABAAQAAAAmABcAAAABAAQAAAAmABgAAAABAAUAAAAmABkAAAAFAAoAAAAmABoAAAAHAAkAAAAmABsAAAAIAAoAAAAmABwAAAAFAAoAAAAmAB0AAAAFAAkAAAAmAB4AAAAAAAAAAAAmAB8AAAABAAMAAAAmACAAAAABAAQAAAAmACEAAAABAAQAAAAmACIAAAABAAUAAAAmACMAAAAIAAoAAAAmACQAAAACAAYAAAAmACUAAAADAAoAAAAmACYAAAAAAAEAAAAmACcAAAADAAcAAAAmACgAAAADAAcAAAAmACkAAAADAAcAAAAmACoAAAADAAcAAAAmACsAAAADAAcAAAAmACwAAAADAAcAAAAmAC0AAAACAAkAAAAmAC4AAAAEAAgAAAAmAC8AAAAFAAkAAAAmADAAAAAHAAkAAAAmADEAAAAHAAoAAAAmADIAAAAHAAkAAAAmADMAAAAIAAkAAAAnAPD/AAADAAcAAAAnAPH/AAADAAcAAAAnAPL/AAADAAcAAAAnAPP/AAAAAAEAAAAnAPT/AAAAAAEAAAAnAPX/AAADAAcAAAAnAPb/AAADAAcAAAAnAPf/AAADAAcAAAAnAPj/AAADAAcAAAAnAPn/AAADAAcAAAAnAPr/AAADAAcAAAAnAPv/AAADAAcAAAAnAPz/AAADAAcAAAAnAP3/AAADAAcAAAAnAP7/AAADAAcAAAAnAP//AAADAAgAAAAnAAAAAAAAAAAAAAAnAAEAAAAHAAkAAAAnAAIAAAAAAAAAAAAnAAMAAAAIAAkAAAAnAAQAAAAHAAoAAAAnAAUAAAAAAAAAAAAnAAYAAAAAAAMAAAAnAAcAAAABAAcAAAAnAAgAAAABAAQAAAAnAAkAAAAQAAYAAAAnAAwAAAAAAAEAAAAnAA0AAAACAAkAAAAnAA4AAAAEAAgAAAAnAA8AAAAAAAAAAAAnABAAAAACAAMAAAAnABEAAAACAAQAAAAnABIAAAAAAAcAAAAnABMAAAABAAQAAAAnABQAAAABAAQAAAAnABUAAAABAAQAAAAnABYAAAABAAQAAAAnABcAAAAAAAYAAAAnABgAAAACAAUAAAAnABkAAAAFAAkAAAAnABoAAAAIAAkAAAAnABsAAAAFAAkAAAAnABwAAAAHAAoAAAAnAB0AAAAFAAoAAAAnAB4AAAAIAAkAAAAnAB8AAAABAAMAAAAnACAAAAABAAQAAAAnACEAAAABAAQAAAAnACIAAAABAAUAAAAnACMAAAACAAcAAAAnACQAAAADAAoAAAAnACUAAAAAAAEAAAAnACYAAAADAAcAAAAnACcAAAADAAcAAAAnACgAAAADAAcAAAAnACkAAAADAAcAAAAnACoAAAADAAcAAAAnACsAAAADAAcAAAAnACwAAAAAAAEAAAAnAC0AAAADAAgAAAAnAC4AAAAAAAAAAAAnAC8AAAAIAAkAAAAnADAAAAAIAAkAAAAnADEAAAAFAAoAAAAnADIAAAAHAAoAAAAnADMAAAAAAAAAAAAoAPD/AAADAAcAAAAoAPH/AAAAAAEAAAAoAPL/AAADAAcAAAAoAPP/AAADAAcAAAAoAPT/AAADAAcAAAAoAPX/AAADAAcAAAAoAPb/AAADAAcAAAAoAPf/AAADAAcAAAAoAPj/AAAAAAEAAAAoAPn/AAAAAAEAAAAoAPr/AAAAAAEAAAAoAPv/AAADAAcAAAAoAPz/AAADAAcAAAAoAP3/AAAAAAEAAAAoAP7/AAADAAcAAAAoAP//AAADAAgAAAAoAAAAAAAIAAoAAAAoAAEAAAAHAAkAAAAoAAIAAAAFAAkAAAAoAAMAAAAAAAMAAAAoAAQAAAAAAAQAAAAoAAUAAAAAAAQAAAAoAAYAAAABAAcAAAAoAAcAAAABAAQAAAAoAAgAAAAPAAYAAAAoAAkAAAAQAAoAAAAoAAoAAAAAAAEAAAAoAAwAAAADAAcAAAAoAA0AAAADAAgAAAAoAA4AAAAHAAkAAAAoAA8AAAAFAAkAAAAoABAAAAAFAAoAAAAoABEAAAAFAAoAAAAoABIAAAACAAMAAAAoABMAAAACAAQAAAAoABQAAAACAAQAAAAoABUAAAACAAQAAAAoABYAAAACAAQAAAAoABcAAAACAAUAAAAoABgAAAAFAAkAAAAoABkAAAAIAAkAAAAoABoAAAAFAAkAAAAoABsAAAAFAAkAAAAoABwAAAAIAAoAAAAoAB0AAAAIAAkAAAAoAB4AAAAIAAkAAAAoAB8AAAABAAMAAAAoACAAAAABAAQAAAAoACEAAAAPAAYAAAAoACIAAAAJAA0AAAAoACMAAAADAAcAAAAoACQAAAAAAAEAAAAoACUAAAADAAcAAAAoACYAAAADAAcAAAAoACcAAAADAAcAAAAoACgAAAAAAAEAAAAoACkAAAADAAcAAAAoACoAAAADAAcAAAAoACsAAAADAAcAAAAoACwAAAACAAkAAAAoAC0AAAAEAAgAAAAoAC4AAAAHAAoAAAAoAC8AAAAFAAkAAAAoADAAAAAHAAkAAAAoADEAAAAHAAkAAAAoADIAAAAFAAoAAAAoADMAAAAFAAkAAAApAPD/AAAAAAEAAAApAPH/AAAAAAEAAAApAPL/AAADAAcAAAApAPP/AAADAAcAAAApAPT/AAADAAcAAAApAPX/AAADAAcAAAApAPb/AAADAAcAAAApAPf/AAADAAcAAAApAPr/AAADAAcAAAApAPv/AAADAAcAAAApAPz/AAADAAcAAAApAP3/AAADAAcAAAApAP7/AAADAAcAAAApAP//AAADAAkAAAApAAAAAAACAAgAAAApAAEAAAAFAAoAAAApAAIAAAAAAAAAAAApAAMAAAABAAMAAAApAAQAAAABAAQAAAApAAUAAAABAAQAAAApAAYAAAABAAQAAAApAAcAAAABAAQAAAApAAgAAAAQAAYAAAApAAkAAAAAAAEAAAApAAoAAAADAAcAAAApAAsAAAACAAkAAAApAAwAAAAEAAcAAAApAA0AAAAEAAgAAAApAA4AAAAIAAkAAAApAA8AAAAIAAoAAAApABAAAAAAAAAAAAApABEAAAAIAAkAAAApABIAAAAFAAoAAAApABMAAAAAAAAAAAApABQAAAAIAAkAAAApABUAAAAIAAoAAAApABYAAAAIAAkAAAApABcAAAAIAAoAAAApABgAAAAAAAAAAAApABkAAAAFAAoAAAApABoAAAAIAAkAAAApABsAAAAHAAoAAAApABwAAAAAAAAAAAApAB0AAAAHAAkAAAApAB4AAAAFAAoAAAApAB8AAAABAAMAAAApACAAAAABAAQAAAApACEAAAAQAAYAAAApACIAAAADAAcAAAApACMAAAADAAcAAAApACQAAAADAAcAAAApACUAAAADAAcAAAApACYAAAACAAkAAAApACcAAAACAAoAAAApACgAAAADAAcAAAApACkAAAADAAcAAAApACoAAAACAAkAAAApACsAAAAEAAcAAAApACwAAAAEAAgAAAApAC0AAAAIAAkAAAApAC4AAAAHAAkAAAApAC8AAAAIAAkAAAApADAAAAAHAAoAAAApADEAAAAIAAoAAAApADIAAAAHAAkAAAApADMAAAAAAAAAAAAqAPD/AAADAAcAAAAqAPH/AAADAAcAAAAqAPL/AAADAAcAAAAqAPP/AAAAAAEAAAAqAPT/AAADAAcAAAAqAPX/AAADAAcAAAAqAPb/AAADAAcAAAAqAPf/AAADAAcAAAAqAPr/AAAAAAEAAAAqAPv/AAADAAcAAAAqAPz/AAADAAcAAAAqAP3/AAADAAcAAAAqAP7/AAADAAcAAAAqAP//AAAAAAEAAAAqAAAAAAADAAgAAAAqAAEAAAAFAAkAAAAqAAIAAAAFAAoAAAAqAAMAAAABAAMAAAAqAAQAAAABAAQAAAAqAAUAAAAAAAYAAAAqAAYAAAAAAAcAAAAqAAcAAAABAAQAAAAqAAgAAAAQAAYAAAAqAAkAAAADAAcAAAAqAAoAAAADAAcAAAAqAAsAAAADAAgAAAAqAAwAAAAAAAAAAAAqAA0AAAAFAAoAAAAqAA4AAAAHAAoAAAAqAA8AAAAFAAoAAAAqABAAAAAHAAoAAAAqABEAAAAAAAAAAAAqABIAAAAHAAkAAAAqABMAAAAIAAkAAAAqABQAAAAIAAkAAAAqABUAAAAFAAkAAAAqABYAAAAAAAAAAAAqABcAAAAHAAoAAAAqABgAAAAIAAkAAAAqABkAAAAHAAkAAAAqABoAAAAFAAkAAAAqABsAAAAFAAoAAAAqABwAAAAHAAkAAAAqAB0AAAAAAAAAAAAqAB4AAAAIAAoAAAAqAB8AAAABAAMAAAAqACAAAAABAAQAAAAqACEAAAAQAAYAAAAqACIAAAADAAcAAAAqACMAAAADAAcAAAAqACQAAAAAAAEAAAAqACUAAAADAAcAAAAqACYAAAADAAgAAAAqACcAAAAEAAYAAAAqACgAAAAEAAcAAAAqACkAAAAEAAcAAAAqACoAAAAEAAgAAAAqACsAAAAFAAoAAAAqACwAAAAFAAkAAAAqAC0AAAAHAAkAAAAqAC4AAAAIAAkAAAAqAC8AAAAFAAoAAAAqADAAAAAIAAoAAAAqADEAAAAAAAAAAAAqADIAAAAHAAkAAAAqADMAAAAIAAoAAAArAPD/AAADAAcAAAArAPH/AAADAAcAAAArAPL/AAADAAcAAAArAPP/AAADAAcAAAArAPT/AAAAAAEAAAArAPX/AAADAAcAAAArAPb/AAAAAAEAAAArAPf/AAADAAcAAAArAPj/AAAAAAEAAAArAPn/AAAAAAEAAAArAPr/AAADAAcAAAArAPv/AAAAAAEAAAArAPz/AAADAAcAAAArAP3/AAAAAAEAAAArAP7/AAADAAcAAAArAP//AAADAAcAAAArAAAAAAADAAkAAAArAAEAAAACAAgAAAArAAIAAAAIAAkAAAArAAMAAAABAAMAAAArAAQAAAABAAQAAAArAAUAAAABAAYAAAArAAYAAAABAAcAAAArAAcAAAAPAAYAAAArAAgAAAAQAAoAAAArAAkAAAADAAcAAAArAAoAAAACAAkAAAArAAsAAAAEAAgAAAArAAwAAAAHAAoAAAArAA0AAAAHAAoAAAArAA4AAAAFAAoAAAArAA8AAAAFAAoAAAArABAAAAAHAAkAAAArABEAAAAIAAkAAAArABIAAAAAAAAAAAArABMAAAAAAAAAAAArABQAAAAIAAkAAAArABUAAAAAAAAAAAArABYAAAAAAAAAAAArABcAAAAHAAoAAAArABgAAAAAAAAAAAArABkAAAAHAAkAAAArABoAAAAAAAAAAAArABsAAAAHAAoAAAArABwAAAAFAAkAAAArAB0AAAAFAAoAAAArAB4AAAAIAAkAAAArAB8AAAABAAMAAAArACAAAAABAAQAAAArACEAAAAQAAYAAAArACIAAAADAAcAAAArACMAAAADAAcAAAArACQAAAACAAkAAAArACUAAAAEAAcAAAArACYAAAAEAAgAAAArACcAAAAHAAkAAAArACgAAAAIAAoAAAArACkAAAAIAAkAAAArACoAAAAFAAoAAAArACsAAAAIAAkAAAArACwAAAAFAAoAAAArAC0AAAAFAAkAAAArAC4AAAAHAAoAAAArAC8AAAAHAAkAAAArADAAAAAHAAkAAAArADEAAAAFAAkAAAArADIAAAAFAAkAAAArADMAAAAFAAoAAAAsAPD/AAADAAcAAAAsAPH/AAADAAcAAAAsAPL/AAADAAcAAAAsAPP/AAAAAAEAAAAsAPT/AAADAAcAAAAsAPX/AAADAAcAAAAsAPb/AAADAAcAAAAsAPf/AAADAAcAAAAsAPj/AAADAAcAAAAsAPn/AAADAAcAAAAsAPr/AAAAAAEAAAAsAPv/AAADAAcAAAAsAPz/AAADAAcAAAAsAP3/AAADAAcAAAAsAP7/AAAAAAEAAAAsAP//AAAAAAEAAAAsAAAAAAADAAcAAAAsAAEAAAADAAgAAAAsAAIAAAAIAAoAAAAsAAMAAAABAAMAAAAsAAQAAAABAAQAAAAsAAUAAAABAAQAAAAsAAYAAAAPAAYAAAAsAAcAAAAQAAoAAAAsAAgAAAADAAcAAAAsAAkAAAADAAcAAAAsAAoAAAADAAgAAAAsAAsAAAAFAAoAAAAsAAwAAAAHAAkAAAAsAA0AAAAFAAkAAAAsAA4AAAAIAAkAAAAsAA8AAAAIAAkAAAAsABAAAAAFAAoAAAAsABEAAAAFAAoAAAAsABIAAAAAAAAAAAAsABMAAAAFAAkAAAAsABQAAAAFAAoAAAAsABUAAAAHAAkAAAAsABYAAAAHAAoAAAAsABcAAAAIAAoAAAAsABgAAAAFAAoAAAAsABkAAAAAAAAAAAAsABoAAAAIAAoAAAAsABsAAAAFAAkAAAAsABwAAAAFAAkAAAAsAB0AAAAHAAoAAAAsAB4AAAAAAAAAAAAsAB8AAAABAAMAAAAsACAAAAABAAQAAAAsACEAAAARAAYAAAAsACIAAAAIAA0AAAAsACMAAAAEAAcAAAAsACQAAAAEAAgAAAAsACUAAAAHAAkAAAAsACYAAAAFAAoAAAAsACcAAAAFAAkAAAAsACgAAAAFAAkAAAAsACkAAAAFAAkAAAAsACoAAAAAAAAAAAAsACsAAAAFAAoAAAAsACwAAAAFAAoAAAAsAC0AAAAHAAoAAAAsAC4AAAAIAAoAAAAsAC8AAAAHAAoAAAAsADAAAAAFAAoAAAAsADEAAAAFAAkAAAAsADIAAAAHAAkAAAAsADMAAAAIAAkAAAAtAPD/AAADAAcAAAAtAPH/AAADAAcAAAAtAPL/AAADAAcAAAAtAPP/AAADAAcAAAAtAPT/AAADAAcAAAAtAPX/AAADAAcAAAAtAPb/AAADAAcAAAAtAPf/AAADAAcAAAAtAPj/AAADAAcAAAAtAPn/AAADAAcAAAAtAPr/AAADAAcAAAAtAPv/AAADAAcAAAAtAPz/AAADAAcAAAAtAP3/AAAAAAEAAAAtAP7/AAADAAcAAAAtAP//AAADAAcAAAAtAAAAAAADAAcAAAAtAAEAAAADAAgAAAAtAAIAAAAHAAkAAAAtAAMAAAACAAMAAAAtAAQAAAACAAQAAAAtAAUAAAAAAAcAAAAtAAYAAAAQAAoAAAAtAAcAAAADAAcAAAAtAAgAAAADAAcAAAAtAAkAAAACAAkAAAAtAAoAAAAEAAgAAAAtAAsAAAAIAAkAAAAtAAwAAAAHAAkAAAAtAA0AAAAFAAkAAAAtAA4AAAAIAAoAAAAtAA8AAAAIAAkAAAAtABAAAAAFAAoAAAAtABEAAAAFAAoAAAAtABIAAAAHAAoAAAAtABMAAAAFAAkAAAAtABQAAAAHAAkAAAAtABUAAAAIAAkAAAAtABYAAAAHAAoAAAAtABcAAAAHAAkAAAAtABgAAAAAAAAAAAAtABkAAAAAAAAAAAAtABoAAAAHAAkAAAAtABsAAAAHAAkAAAAtABwAAAAAAAAAAAAtAB0AAAAFAAoAAAAtAB4AAAAHAAkAAAAtAB8AAAABAAMAAAAtACAAAAABAAQAAAAtACEAAAABAAQAAAAtACIAAAABAAUAAAAtACMAAAAFAAkAAAAtACQAAAAIAAkAAAAtACUAAAAFAAoAAAAtACYAAAAHAAoAAAAtACcAAAAFAAoAAAAtACgAAAAIAAoAAAAtACkAAAAHAAoAAAAtACoAAAAHAAoAAAAtACsAAAAAAAAAAAAtACwAAAAFAAkAAAAtAC0AAAAHAAoAAAAtAC4AAAAHAAoAAAAtAC8AAAAHAAkAAAAtADAAAAAFAAkAAAAtADEAAAAIAAoAAAAtADIAAAAIAAoAAAAtADMAAAAIAAkAAAAuAPD/AAADAAcAAAAuAPH/AAADAAcAAAAuAPL/AAADAAcAAAAuAPP/AAADAAcAAAAuAPT/AAAAAAEAAAAuAPX/AAADAAcAAAAuAPb/AAAAAAEAAAAuAPf/AAADAAcAAAAuAPj/AAADAAcAAAAuAPn/AAAAAAEAAAAuAPr/AAADAAcAAAAuAPv/AAAAAAEAAAAuAPz/AAADAAcAAAAuAP3/AAADAAcAAAAuAP7/AAADAAcAAAAuAP//AAADAAcAAAAuAAAAAAADAAcAAAAuAAEAAAADAAgAAAAuAAIAAAAIAAoAAAAuAAMAAAACAAYAAAAuAAQAAAACAAcAAAAuAAUAAAAAAAEAAAAuAAYAAAADAAcAAAAuAAcAAAADAAcAAAAuAAgAAAACAAkAAAAuAAkAAAAEAAgAAAAuAAoAAAAIAAoAAAAuAAsAAAAIAAkAAAAuAAwAAAAFAAoAAAAuAA0AAAAHAAoAAAAuAA4AAAAHAAoAAAAuAA8AAAAIAAoAAAAuABAAAAAFAAkAAAAuABEAAAAIAAoAAAAuABIAAAAIAAoAAAAuABMAAAAFAAkAAAAuABQAAAAIAAkAAAAuABUAAAAIAAkAAAAuABYAAAAIAAoAAAAuABcAAAAHAAkAAAAuABgAAAAFAAoAAAAuABkAAAAIAAoAAAAuABoAAAAAAAAAAAAuABsAAAAFAAkAAAAuABwAAAAIAAoAAAAuAB0AAAAHAAoAAAAuAB4AAAAFAAkAAAAuAB8AAAABAAMAAAAuACAAAAABAAQAAAAuACEAAAABAAQAAAAuACIAAAABAAYAAAAuACMAAAAAAAQAAAAuACQAAAAAAAQAAAAuACUAAAAAAAQAAAAuACYAAAAAAAQAAAAuACcAAAAAAAQAAAAuACgAAAAAAAQAAAAuACkAAAAAAAQAAAAuACoAAAAAAAQAAAAuACsAAAAAAAQAAAAuACwAAAAAAAQAAAAuAC0AAAAAAAQAAAAuAC4AAAAAAAQAAAAuAC8AAAAAAAQAAAAuADAAAAAAAAQAAAAuADEAAAAAAAQAAAAuADIAAAAAAAQAAAAuADMAAAALAA4AAAAvAPD/AAADAAcAAAAvAPH/AAADAAcAAAAvAPL/AAAAAAEAAAAvAPP/AAAAAAEAAAAvAPT/AAADAAcAAAAvAPX/AAADAAcAAAAvAPb/AAADAAcAAAAvAPf/AAADAAcAAAAvAPj/AAADAAcAAAAvAPn/AAADAAcAAAAvAPr/AAADAAcAAAAvAPv/AAAAAAEAAAAvAPz/AAAAAAEAAAAvAP3/AAADAAcAAAAvAP7/AAADAAcAAAAvAP//AAADAAcAAAAvAAAAAAAAAAEAAAAvAAEAAAADAAkAAAAvAAIAAAACAAcAAAAvAAMAAAADAAoAAAAvAAQAAAADAAcAAAAvAAUAAAADAAcAAAAvAAYAAAACAAkAAAAvAAcAAAAEAAcAAAAvAAgAAAAEAAgAAAAvAAkAAAAFAAkAAAAvAAoAAAAHAAkAAAAvAAsAAAAIAAkAAAAvAAwAAAAIAAoAAAAvAA0AAAAAAAAAAAAvAA4AAAAFAAkAAAAvAA8AAAAFAAkAAAAvABAAAAAFAAkAAAAvABEAAAAFAAoAAAAvABIAAAAHAAoAAAAvABMAAAAHAAoAAAAvABQAAAAFAAkAAAAvABUAAAAIAAkAAAAvABYAAAAFAAoAAAAvABcAAAAFAAoAAAAvABgAAAAFAAoAAAAvABkAAAAHAAkAAAAvABoAAAAIAAoAAAAvABsAAAAIAAkAAAAvABwAAAAHAAkAAAAvAB0AAAAIAAkAAAAvAB4AAAAIAAoAAAAvAB8AAAABAAMAAAAvACAAAAABAAQAAAAvACEAAAABAAQAAAAvACIAAAABAAQAAAAvACMAAAABAAQAAAAvACQAAAABAAQAAAAvACUAAAABAAQAAAAvACYAAAABAAQAAAAvACcAAAABAAQAAAAvACgAAAABAAQAAAAvACkAAAABAAQAAAAvACoAAAABAAQAAAAvACsAAAABAAQAAAAvACwAAAABAAQAAAAvAC0AAAABAAQAAAAvAC4AAAABAAQAAAAvAC8AAAABAAQAAAAvADAAAAABAAQAAAAvADEAAAABAAQAAAAvADIAAAABAAQAAAAvADMAAAAQAAYAAAAwAPD/AAADAAcAAAAwAPH/AAADAAcAAAAwAPL/AAAAAAEAAAAwAPP/AAAAAAEAAAAwAPT/AAAAAAEAAAAwAPX/AAADAAcAAAAwAPb/AAADAAcAAAAwAPf/AAADAAcAAAAwAPj/AAADAAcAAAAwAPn/AAAAAAEAAAAwAPr/AAADAAcAAAAwAPv/AAAAAAEAAAAwAPz/AAAAAAEAAAAwAP3/AAADAAcAAAAwAP7/AAADAAcAAAAwAP//AAADAAcAAAAwAAAAAAADAAcAAAAwAAEAAAADAAcAAAAwAAIAAAAAAAEAAAAwAAMAAAADAAcAAAAwAAQAAAADAAcAAAAwAAUAAAACAAkAAAAwAAYAAAAEAAgAAAAwAAcAAAAIAAoAAAAwAAgAAAAFAAoAAAAwAAkAAAAAAAAAAAAwAAoAAAAIAAkAAAAwAAsAAAAIAAkAAAAwAAwAAAAIAAoAAAAwAA0AAAAHAAoAAAAwAA4AAAAFAAkAAAAwAA8AAAAIAAkAAAAwABAAAAAIAAkAAAAwABEAAAAFAAkAAAAwABIAAAAFAAkAAAAwABMAAAAHAAkAAAAwABQAAAAIAAkAAAAwABUAAAAFAAkAAAAwABYAAAAFAAoAAAAwABcAAAAFAAkAAAAwABgAAAAIAAoAAAAwABkAAAAAAAAAAAAwABoAAAAHAAkAAAAwABsAAAAFAAoAAAAwABwAAAAAAAAAAAAwAB0AAAAIAAoAAAAwAB4AAAAIAAkAAAAwAB8AAAABAAMAAAAwACAAAAABAAQAAAAwACEAAAABAAQAAAAwACIAAAABAAQAAAAwACMAAAABAAQAAAAwACQAAAABAAQAAAAwACUAAAABAAQAAAAwACYAAAABAAQAAAAwACcAAAABAAQAAAAwACgAAAABAAQAAAAwACkAAAABAAQAAAAwACoAAAABAAQAAAAwACsAAAABAAQAAAAwACwAAAABAAQAAAAwAC0AAAABAAQAAAAwAC4AAAABAAQAAAAwAC8AAAABAAQAAAAwADAAAAABAAQAAAAwADEAAAABAAQAAAAwADIAAAABAAQAAAAwADMAAAAQAAYAAAAxAPD/AAADAAcAAAAxAPH/AAADAAcAAAAxAPL/AAADAAcAAAAxAPP/AAADAAcAAAAxAPT/AAADAAcAAAAxAPX/AAADAAcAAAAxAPb/AAADAAcAAAAxAPf/AAADAAcAAAAxAPj/AAADAAcAAAAxAPn/AAADAAcAAAAxAPr/AAADAAcAAAAxAPv/AAADAAcAAAAxAPz/AAADAAcAAAAxAP3/AAADAAcAAAAxAP7/AAADAAcAAAAxAP//AAAAAAEAAAAxAAAAAAAAAAEAAAAxAAEAAAADAAcAAAAxAAIAAAAAAAEAAAAxAAMAAAADAAcAAAAxAAQAAAACAAkAAAAxAAUAAAAEAAgAAAAxAAYAAAAFAAoAAAAxAAcAAAAIAAoAAAAxAAgAAAAFAAoAAAAxAAkAAAAAAAAAAAAxAAoAAAAAAAAAAAAxAAsAAAAAAAAAAAAxAAwAAAAIAAoAAAAxAA0AAAAIAAkAAAAxAA4AAAAIAAkAAAAxAA8AAAAIAAkAAAAxABAAAAAFAAoAAAAxABEAAAAAAAAAAAAxABIAAAAFAAkAAAAxABMAAAAFAAoAAAAxABQAAAAFAAkAAAAxABUAAAAFAAoAAAAxABYAAAAHAAkAAAAxABcAAAAFAAoAAAAxABgAAAAHAAkAAAAxABkAAAAFAAoAAAAxABoAAAAHAAkAAAAxABsAAAAIAAoAAAAxABwAAAAIAAoAAAAxAB0AAAAIAAkAAAAxAB4AAAAFAAoAAAAxAB8AAAABAAMAAAAxACAAAAABAAQAAAAxACEAAAABAAQAAAAxACIAAAABAAQAAAAxACMAAAABAAQAAAAxACQAAAABAAQAAAAxACUAAAABAAQAAAAxACYAAAABAAQAAAAxACcAAAABAAQAAAAxACgAAAABAAQAAAAxACkAAAABAAQAAAAxACoAAAABAAQAAAAxACsAAAABAAQAAAAxACwAAAABAAQAAAAxAC0AAAABAAQAAAAxAC4AAAABAAQAAAAxAC8AAAABAAQAAAAxADAAAAABAAQAAAAxADEAAAABAAQAAAAxADIAAAABAAQAAAAxADMAAAAQAAYAAAAyAPD/AAADAAcAAAAyAPH/AAADAAcAAAAyAPL/AAAAAAEAAAAyAPP/AAAAAAEAAAAyAPT/AAADAAcAAAAyAPX/AAADAAcAAAAyAPb/AAADAAcAAAAyAPf/AAADAAcAAAAyAPj/AAAAAAEAAAAyAPn/AAAAAAEAAAAyAPr/AAAAAAEAAAAyAPv/AAAAAAEAAAAyAPz/AAADAAcAAAAyAP3/AAADAAcAAAAyAP7/AAADAAcAAAAyAP//AAADAAcAAAAyAAAAAAADAAcAAAAyAAEAAAADAAcAAAAyAAIAAAADAAcAAAAyAAMAAAACAAkAAAAyAAQAAAAEAAgAAAAyAAUAAAAAAAAAAAAyAAYAAAAFAAoAAAAyAAcAAAAIAAoAAAAyAAgAAAAIAAkAAAAyAAkAAAAIAAoAAAAyAAoAAAAIAAoAAAAyAAsAAAAIAAkAAAAyAAwAAAAFAAkAAAAyAA0AAAAAAAAAAAAyAA4AAAAHAAoAAAAyAA8AAAAIAAkAAAAyABAAAAAFAAkAAAAyABEAAAAHAAoAAAAyABIAAAAHAAoAAAAyABMAAAAFAAkAAAAyABQAAAAAAAAAAAAyABUAAAAIAAoAAAAyABYAAAAHAAoAAAAyABcAAAAAAAAAAAAyABgAAAAIAAoAAAAyABkAAAAHAAkAAAAyABoAAAAHAAoAAAAyABsAAAAHAAoAAAAyABwAAAAHAAkAAAAyAB0AAAAFAAkAAAAyAB4AAAAAAAMAAAAyAB8AAAABAAcAAAAyACAAAAABAAQAAAAyACEAAAABAAQAAAAyACIAAAABAAQAAAAyACMAAAAAAAYAAAAyACQAAAACAAQAAAAyACUAAAACAAQAAAAyACYAAAACAAQAAAAyACcAAAACAAQAAAAyACgAAAACAAQAAAAyACkAAAACAAQAAAAyACoAAAACAAQAAAAyACsAAAACAAQAAAAyACwAAAACAAQAAAAyAC0AAAACAAQAAAAyAC4AAAACAAQAAAAyAC8AAAACAAQAAAAyADAAAAACAAQAAAAyADEAAAACAAQAAAAyADIAAAACAAQAAAAyADMAAAAKAA4AAAAzAPD/AAADAAcAAAAzAPH/AAADAAcAAAAzAPL/AAAAAAEAAAAzAPP/AAADAAcAAAAzAPT/AAADAAcAAAAzAPX/AAAAAAEAAAAzAPb/AAAAAAEAAAAzAPf/AAADAAcAAAAzAPj/AAAAAAEAAAAzAPn/AAADAAcAAAAzAPr/AAADAAcAAAAzAPv/AAADAAcAAAAzAPz/AAADAAcAAAAzAP3/AAADAAcAAAAzAP7/AAADAAcAAAAzAP//AAADAAcAAAAzAAAAAAADAAcAAAAzAAEAAAAAAAEAAAAzAAIAAAACAAkAAAAzAAMAAAAEAAgAAAAzAAQAAAAIAAkAAAAzAAUAAAAFAAkAAAAzAAYAAAAHAAkAAAAzAAcAAAAHAAoAAAAzAAgAAAAFAAoAAAAzAAkAAAAHAAoAAAAzAAoAAAAHAAoAAAAzAAsAAAAFAAoAAAAzAAwAAAAFAAoAAAAzAA0AAAAIAAoAAAAzAA4AAAAHAAoAAAAzAA8AAAAHAAkAAAAzABAAAAAFAAkAAAAzABEAAAAHAAoAAAAzABIAAAAIAAoAAAAzABMAAAAFAAoAAAAzABQAAAAFAAkAAAAzABUAAAAHAAoAAAAzABYAAAAHAAkAAAAzABcAAAAIAAkAAAAzABgAAAAIAAkAAAAzABkAAAAHAAkAAAAzABoAAAAIAAoAAAAzABsAAAAFAAoAAAAzABwAAAAIAAoAAAAzAB0AAAAAAAMAAAAzAB4AAAABAAcAAAAzAB8AAAABAAQAAAAzACAAAAABAAQAAAAzACEAAAABAAQAAAAzACIAAAABAAQAAAAzACMAAAABAAUAAAAzACQAAAAIAAkAAAAzACUAAAAAAAAAAAAzACYAAAAIAAkAAAAzACcAAAAIAAoAAAAzACgAAAAHAAoAAAAzACkAAAAHAAoAAAAzACoAAAAAAAAAAAAzACsAAAAIAAoAAAAzACwAAAAHAAkAAAAzAC0AAAAIAAoAAAAzAC4AAAAIAAkAAAAzAC8AAAAFAAkAAAAzADAAAAAHAAoAAAAzADEAAAAIAAkAAAAzADIAAAAIAAkAAAAzADMAAAAAAAAAAAA0APD/AAADAAcAAAA0APH/AAADAAcAAAA0APL/AAADAAcAAAA0APP/AAADAAcAAAA0APT/AAADAAcAAAA0APX/AAAAAAEAAAA0APb/AAADAAcAAAA0APf/AAADAAcAAAA0APj/AAADAAcAAAA0APn/AAADAAcAAAA0APr/AAAAAAEAAAA0APv/AAADAAcAAAA0APz/AAADAAcAAAA0AP3/AAADAAcAAAA0AP7/AAADAAcAAAA0AP//AAADAAcAAAA0AAAAAAADAAcAAAA0AAEAAAADAAcAAAA0AAIAAAADAAgAAAA0AAMAAAAFAAoAAAA0AAQAAAAHAAoAAAA0AAUAAAAAAAAAAAA0AAYAAAAHAAkAAAA0AAcAAAAHAAoAAAA0AAgAAAAIAAkAAAA0AAkAAAAFAAoAAAA0AAoAAAAFAAkAAAA0AAsAAAAHAAoAAAA0AAwAAAAFAAoAAAA0AA0AAAAFAAkAAAA0AA4AAAAHAAkAAAA0AA8AAAAHAAkAAAA0ABAAAAAHAAoAAAA0ABEAAAAIAAoAAAA0ABIAAAAHAAoAAAA0ABMAAAAHAAoAAAA0ABQAAAAHAAoAAAA0ABUAAAAFAAoAAAA0ABYAAAAIAAkAAAA0ABcAAAAFAAkAAAA0ABgAAAAHAAoAAAA0ABkAAAAHAAoAAAA0ABoAAAAFAAoAAAA0ABsAAAAFAAkAAAA0ABwAAAAHAAoAAAA0AB0AAAABAAMAAAA0AB4AAAABAAQAAAA0AB8AAAABAAQAAAA0ACAAAAABAAQAAAA0ACEAAAABAAQAAAA0ACIAAAABAAQAAAA0ACMAAAABAAUAAAA0ACQAAAAFAAkAAAA0ACUAAAAIAAoAAAA0ACYAAAAAAAAAAAA0ACcAAAAIAAkAAAA0ACgAAAAHAAkAAAA0ACkAAAAHAAkAAAA0ACoAAAAHAAkAAAA0ACsAAAAIAAoAAAA0ACwAAAAIAAkAAAA0AC0AAAAFAAoAAAA0AC4AAAAFAAkAAAA0AC8AAAAHAAoAAAA0ADAAAAAHAAkAAAA0ADEAAAAIAAkAAAA0ADIAAAAIAAoAAAA0ADMAAAAAAAAAAAA1APD/AAADAAcAAAA1APH/AAADAAcAAAA1APL/AAADAAcAAAA1APP/AAADAAcAAAA1APT/AAAAAAEAAAA1APX/AAADAAcAAAA1APb/AAAAAAEAAAA1APf/AAAAAAEAAAA1APj/AAADAAcAAAA1APn/AAADAAcAAAA1APr/AAADAAcAAAA1APv/AAAAAAEAAAA1APz/AAADAAcAAAA1AP3/AAADAAcAAAA1AP7/AAADAAcAAAA1AP//AAAAAAEAAAA1AAAAAAAAAAEAAAA1AAEAAAADAAcAAAA1AAIAAAADAAgAAAA1AAMAAAAFAAoAAAA1AAQAAAAFAAkAAAA1AAUAAAAFAAoAAAA1AAYAAAAIAAoAAAA1AAcAAAAHAAoAAAA1AAgAAAAIAAoAAAA1AAkAAAAFAAkAAAA1AAoAAAAHAAkAAAA1AAsAAAAIAAkAAAA1AAwAAAAFAAkAAAA1AA0AAAAIAAkAAAA1AA4AAAAIAAkAAAA1AA8AAAAIAAoAAAA1ABAAAAAHAAoAAAA1ABEAAAAHAAkAAAA1ABIAAAAIAAkAAAA1ABMAAAAHAAoAAAA1ABQAAAAHAAoAAAA1ABUAAAAIAAkAAAA1ABYAAAAIAAkAAAA1ABcAAAAIAAoAAAA1ABgAAAAAAAAAAAA1ABkAAAAHAAoAAAA1ABoAAAAFAAkAAAA1ABsAAAAHAAoAAAA1ABwAAAAAAAMAAAA1AB0AAAABAAcAAAA1AB4AAAABAAQAAAA1AB8AAAABAAQAAAA1ACAAAAAAAAYAAAA1ACEAAAABAAQAAAA1ACIAAAABAAQAAAA1ACMAAAABAAUAAAA1ACQAAAAFAAkAAAA1ACUAAAAHAAkAAAA1ACYAAAAIAAkAAAA1ACcAAAAIAAoAAAA1ACgAAAAFAAkAAAA1ACkAAAAIAAkAAAA1ACoAAAAHAAkAAAA1ACsAAAAHAAkAAAA1ACwAAAAFAAkAAAA1AC0AAAAFAAkAAAA1AC4AAAAFAAoAAAA1AC8AAAAFAAkAAAA1ADAAAAAFAAkAAAA1ADEAAAAFAAkAAAA1ADIAAAAFAAkAAAA1ADMAAAAHAAkAAAA2APD/AAADAAcAAAA2APH/AAADAAcAAAA2APL/AAADAAcAAAA2APP/AAADAAcAAAA2APT/AAADAAcAAAA2APX/AAAAAAEAAAA2APb/AAADAAcAAAA2APf/AAAAAAEAAAA2APj/AAADAAcAAAA2APn/AAADAAcAAAA2APr/AAADAAcAAAA2APv/AAADAAcAAAA2APz/AAAAAAEAAAA2AP3/AAADAAcAAAA2AP7/AAADAAcAAAA2AP//AAADAAcAAAA2AAAAAAADAAcAAAA2AAEAAAADAAcAAAA2AAIAAAADAAgAAAA2AAMAAAAHAAoAAAA2AAQAAAAIAAkAAAA2AAUAAAAFAAoAAAA2AAYAAAAHAAoAAAA2AAcAAAAIAAoAAAA2AAgAAAAIAAoAAAA2AAkAAAAFAAkAAAA2AAoAAAAHAAoAAAA2AAsAAAAHAAoAAAA2AAwAAAAIAAoAAAA2AA0AAAAHAAoAAAA2AA4AAAAIAAoAAAA2AA8AAAAHAAoAAAA2ABAAAAAIAAkAAAA2ABEAAAAHAAkAAAA2ABIAAAAIAAkAAAA2ABMAAAAHAAkAAAA2ABQAAAAIAAkAAAA2ABUAAAAHAAkAAAA2ABYAAAAFAAoAAAA2ABcAAAAFAAoAAAA2ABgAAAAHAAkAAAA2ABkAAAAHAAoAAAA2ABoAAAAHAAkAAAA2ABsAAAAAAAMAAAA2ABwAAAABAAcAAAA2AB0AAAABAAQAAAA2AB4AAAABAAQAAAA2AB8AAAABAAQAAAA2ACAAAAABAAUAAAA2ACEAAAABAAQAAAA2ACIAAAABAAQAAAA2ACMAAAABAAUAAAA2ACQAAAAIAAoAAAA2ACUAAAAHAAkAAAA2ACYAAAAIAAkAAAA2ACcAAAAAAAAAAAA2ACgAAAAFAAoAAAA2ACkAAAAIAAoAAAA2ACoAAAAFAAkAAAA2ACsAAAAFAAkAAAA2ACwAAAAIAAoAAAA2AC0AAAAFAAoAAAA2AC4AAAAHAAkAAAA2AC8AAAAFAAkAAAA2ADAAAAAHAAoAAAA2ADEAAAAHAAoAAAA2ADIAAAAFAAoAAAA2ADMAAAAFAAoAAAA3APD/AAADAAcAAAA3APH/AAADAAcAAAA3APL/AAADAAcAAAA3APP/AAADAAcAAAA3APT/AAADAAcAAAA3APX/AAAAAAEAAAA3APb/AAADAAcAAAA3APf/AAADAAcAAAA3APj/AAADAAcAAAA3APn/AAADAAcAAAA3APr/AAADAAcAAAA3APv/AAAAAAEAAAA3APz/AAADAAcAAAA3AP3/AAADAAcAAAA3AP7/AAADAAcAAAA3AP//AAADAAcAAAA3AAAAAAADAAcAAAA3AAEAAAACAAkAAAA3AAIAAAAEAAgAAAA3AAMAAAAHAAoAAAA3AAQAAAAIAAkAAAA3AAUAAAAHAAkAAAA3AAYAAAAIAAkAAAA3AAcAAAAIAAkAAAA3AAgAAAAAAAAAAAA3AAkAAAAFAAoAAAA3AAoAAAAAAAAAAAA3AAsAAAAHAAkAAAA3AAwAAAAFAAkAAAA3AA0AAAAIAAkAAAA3AA4AAAAAAAAAAAA3AA8AAAAIAAoAAAA3ABAAAAAHAAkAAAA3ABEAAAAFAAoAAAA3ABIAAAAAAAAAAAA3ABMAAAAHAAoAAAA3ABQAAAAAAAAAAAA3ABUAAAAHAAoAAAA3ABYAAAAHAAkAAAA3ABcAAAAIAAkAAAA3ABgAAAAAAAAAAAA3ABkAAAAFAAkAAAA3ABoAAAAIAAkAAAA3ABsAAAABAAMAAAA3ABwAAAABAAQAAAA3AB0AAAABAAQAAAA3AB4AAAABAAQAAAA3AB8AAAAAAAYAAAA3ACAAAAACAAUAAAA3ACEAAAABAAQAAAA3ACIAAAABAAQAAAA3ACMAAAABAAUAAAA3ACQAAAAFAAoAAAA3ACUAAAAIAAkAAAA3ACYAAAAIAAkAAAA3ACcAAAAHAAkAAAA3ACgAAAAIAAoAAAA3ACkAAAAFAAkAAAA3ACoAAAAHAAkAAAA3ACsAAAAFAAoAAAA3ACwAAAAIAAkAAAA3AC0AAAAAAAAAAAA3AC4AAAAHAAkAAAA3AC8AAAAAAAAAAAA3ADAAAAAFAAkAAAA3ADEAAAAFAAkAAAA3ADIAAAAAAAAAAAA3ADMAAAAFAAkAAAA4APD/AAADAAcAAAA4APH/AAADAAcAAAA4APL/AAAAAAEAAAA4APP/AAAAAAEAAAA4APT/AAADAAcAAAA4APX/AAACAAkAAAA4APb/AAAEAAcAAAA4APf/AAAEAAcAAAA4APj/AAAEAAcAAAA4APn/AAAEAAcAAAA4APr/AAACAAoAAAA4APv/AAADAAcAAAA4APz/AAADAAcAAAA4AP3/AAADAAcAAAA4AP7/AAAAAAEAAAA4AP//AAACAAkAAAA4AAAAAAAEAAcAAAA4AAEAAAAEAAgAAAA4AAIAAAAFAAoAAAA4AAMAAAAIAAkAAAA4AAQAAAAFAAkAAAA4AAUAAAAFAAoAAAA4AAYAAAAIAAoAAAA4AAcAAAAHAAkAAAA4AAgAAAAHAAkAAAA4AAkAAAAFAAkAAAA4AAoAAAAFAAoAAAA4AAsAAAAFAAkAAAA4AAwAAAAIAAoAAAA4AA0AAAAIAAkAAAA4AA4AAAAFAAoAAAA4AA8AAAAFAAoAAAA4ABAAAAAHAAoAAAA4ABEAAAAIAAkAAAA4ABIAAAAIAAoAAAA4ABMAAAAIAAkAAAA4ABQAAAAAAAAAAAA4ABUAAAAHAAkAAAA4ABYAAAAAAAAAAAA4ABcAAAAHAAkAAAA4ABgAAAAIAAkAAAA4ABkAAAAIAAkAAAA4ABoAAAAAAAMAAAA4ABsAAAABAAcAAAA4ABwAAAABAAQAAAA4AB0AAAABAAQAAAA4AB4AAAAAAAYAAAA4AB8AAAACAAUAAAA4ACAAAAABAAMAAAA4ACEAAAABAAQAAAA4ACIAAAABAAQAAAA4ACMAAAABAAUAAAA4ACQAAAAHAAkAAAA4ACUAAAAIAAoAAAA4ACYAAAAFAAoAAAA4ACcAAAAHAAoAAAA4ACgAAAAHAAkAAAA4ACkAAAAFAAkAAAA4ACoAAAAFAAoAAAA4ACsAAAAAAAAAAAA4ACwAAAAIAAkAAAA4AC0AAAAIAAoAAAA4AC4AAAAIAAkAAAA4AC8AAAAFAAkAAAA4ADAAAAAFAAkAAAA4ADEAAAAHAAkAAAA4ADIAAAAHAAoAAAA4ADMAAAAFAAkAAAA5APD/AAADAAcAAAA5APH/AAADAAcAAAA5APL/AAADAAcAAAA5APP/AAADAAcAAAA5APT/AAACAAkAAAA5APX/AAAEAAgAAAA5APb/AAAFAAkAAAA5APf/AAAAAAAAAAA5APj/AAAIAAkAAAA5APn/AAAFAAkAAAA5APr/AAAEAAYAAAA5APv/AAAEAAcAAAA5APz/AAAEAAcAAAA5AP3/AAAEAAcAAAA5AP7/AAAEAAcAAAA5AP//AAAEAAgAAAA5AAAAAAAIAAkAAAA5AAEAAAAFAAkAAAA5AAIAAAAHAAkAAAA5AAMAAAAFAAkAAAA5AAQAAAAFAAkAAAA5AAUAAAAFAAoAAAA5AAYAAAAIAAoAAAA5AAcAAAAHAAoAAAA5AAgAAAAFAAoAAAA5AAkAAAAIAAoAAAA5AAoAAAAFAAkAAAA5AAsAAAAFAAoAAAA5AAwAAAAFAAkAAAA5AA0AAAAIAAoAAAA5AA4AAAAFAAkAAAA5AA8AAAAIAAoAAAA5ABAAAAAFAAoAAAA5ABEAAAAFAAkAAAA5ABIAAAAAAAAAAAA5ABMAAAAHAAoAAAA5ABQAAAAAAAAAAAA5ABUAAAAIAAoAAAA5ABYAAAAIAAoAAAA5ABcAAAAHAAkAAAA5ABgAAAAHAAkAAAA5ABkAAAAFAAoAAAA5ABoAAAABAAMAAAA5ABsAAAABAAQAAAA5ABwAAAABAAQAAAA5AB0AAAABAAQAAAA5AB4AAAABAAUAAAA5AB8AAAAIAAkAAAA5ACAAAAABAAMAAAA5ACEAAAABAAQAAAA5ACIAAAABAAQAAAA5ACMAAAABAAUAAAA5ACQAAAAAAAAAAAA5ACUAAAAFAAoAAAA5ACYAAAAFAAoAAAA5ACcAAAAIAAoAAAA5ACgAAAAIAAoAAAA5ACkAAAAHAAoAAAA5ACoAAAAFAAkAAAA5ACsAAAAHAAoAAAA5ACwAAAAFAAoAAAA5AC0AAAAHAAoAAAA5AC4AAAAIAAkAAAA5AC8AAAAFAAoAAAA5ADAAAAAFAAkAAAA5ADEAAAAFAAoAAAA5ADIAAAAHAAoAAAA5ADMAAAAIAAkAAAA6APD/AAAAAAEAAAA6APH/AAADAAcAAAA6APL/AAACAAkAAAA6APP/AAAEAAcAAAA6APT/AAAEAAgAAAA6APX/AAAHAAkAAAA6APb/AAAIAAoAAAA6APf/AAAIAAoAAAA6APj/AAAFAAkAAAA6APn/AAAAAAAAAAA6APr/AAAHAAkAAAA6APv/AAAHAAkAAAA6APz/AAAFAAoAAAA6AP3/AAAIAAoAAAA6AP7/AAAAAAAAAAA6AP//AAAIAAkAAAA6AAAAAAAHAAoAAAA6AAEAAAAFAAoAAAA6AAIAAAAHAAoAAAA6AAMAAAAAAAAAAAA6AAQAAAAHAAkAAAA6AAUAAAAIAAoAAAA6AAYAAAAFAAoAAAA6AAcAAAAHAAkAAAA6AAgAAAAFAAkAAAA6AAkAAAAHAAoAAAA6AAoAAAAHAAoAAAA6AAsAAAAIAAoAAAA6AAwAAAAAAAAAAAA6AA0AAAAIAAoAAAA6AA4AAAAFAAkAAAA6AA8AAAAIAAoAAAA6ABAAAAAAAAAAAAA6ABEAAAAIAAoAAAA6ABIAAAAHAAkAAAA6ABMAAAAFAAkAAAA6ABQAAAAFAAkAAAA6ABUAAAAIAAkAAAA6ABYAAAAIAAkAAAA6ABcAAAAIAAkAAAA6ABgAAAAHAAkAAAA6ABkAAAAAAAMAAAA6ABoAAAABAAcAAAA6ABsAAAABAAQAAAA6ABwAAAABAAQAAAA6AB0AAAAAAAYAAAA6AB4AAAACAAUAAAA6AB8AAAAIAAkAAAA6ACAAAAABAAMAAAA6ACEAAAABAAQAAAA6ACIAAAABAAQAAAA6ACMAAAABAAUAAAA6ACQAAAAIAAoAAAA6ACUAAAAIAAoAAAA6ACYAAAAIAAoAAAA6ACcAAAAAAAAAAAA6ACgAAAAIAAkAAAA6ACkAAAAFAAkAAAA6ACoAAAAAAAAAAAA6ACsAAAAHAAoAAAA6ACwAAAAIAAkAAAA6AC0AAAAIAAoAAAA6AC4AAAAHAAoAAAA6AC8AAAAFAAoAAAA6ADAAAAAIAAoAAAA6ADEAAAAAAAAAAAA6ADIAAAAAAAAAAAA6ADMAAAAFAAkAAAA7APD/AAAEAAcAAAA7APH/AAAEAAcAAAA7APL/AAAEAAgAAAA7APP/AAAHAAkAAAA7APT/AAAHAAoAAAA7APX/AAAIAAoAAAA7APb/AAAHAAoAAAA7APf/AAAHAAoAAAA7APj/AAAHAAoAAAA7APn/AAAAAAAAAAA7APr/AAAAAAAAAAA7APv/AAAFAAoAAAA7APz/AAAAAAAAAAA7AP3/AAAFAAoAAAA7AP7/AAAIAAkAAAA7AP//AAAFAAkAAAA7AAAAAAAIAAoAAAA7AAEAAAAIAAoAAAA7AAIAAAAIAAkAAAA7AAMAAAAFAAkAAAA7AAQAAAAAAAAAAAA7AAUAAAAHAAkAAAA7AAYAAAAFAAoAAAA7AAcAAAAFAAkAAAA7AAgAAAAIAAkAAAA7AAkAAAAFAAoAAAA7AAoAAAAHAAkAAAA7AAsAAAAHAAkAAAA7AAwAAAAHAAoAAAA7AA0AAAAHAAkAAAA7AA4AAAAHAAkAAAA7AA8AAAAHAAkAAAA7ABAAAAAHAAoAAAA7ABEAAAAFAAkAAAA7ABIAAAAIAAkAAAA7ABMAAAAFAAoAAAA7ABQAAAAIAAoAAAA7ABUAAAAAAAAAAAA7ABYAAAAFAAkAAAA7ABcAAAAHAAoAAAA7ABgAAAAAAAMAAAA7ABkAAAABAAcAAAA7ABoAAAABAAQAAAA7ABsAAAABAAQAAAA7ABwAAAAAAAYAAAA7AB0AAAACAAUAAAA7AB4AAAAIAAoAAAA7AB8AAAAIAAkAAAA7ACAAAAABAAMAAAA7ACEAAAABAAQAAAA7ACIAAAABAAQAAAA7ACMAAAABAAUAAAA7ACQAAAAFAAkAAAA7ACUAAAAIAAoAAAA7ACYAAAAFAAkAAAA7ACcAAAAHAAoAAAA7ACgAAAAHAAoAAAA7ACkAAAAHAAoAAAA7ACoAAAAAAAAAAAA7ACsAAAAAAAAAAAA7ACwAAAAFAAkAAAA7AC0AAAAIAAoAAAA7AC4AAAAHAAoAAAA7AC8AAAAAAAAAAAA7ADAAAAAFAAkAAAA7ADEAAAAHAAoAAAA7ADIAAAAHAAoAAAA7ADMAAAAAAAkAAAA8APD/AAABAAsAAAA8APH/AAAFAAoAAAA8APL/AAAHAAoAAAA8APP/AAAFAAkAAAA8APT/AAAFAAoAAAA8APX/AAAHAAoAAAA8APb/AAAAAAAAAAA8APf/AAAFAAkAAAA8APj/AAAHAAkAAAA8APn/AAAHAAoAAAA8APr/AAAFAAkAAAA8APv/AAAIAAoAAAA8APz/AAAIAAkAAAA8AP3/AAAFAAkAAAA8AP7/AAAIAAkAAAA8AP//AAAHAAoAAAA8AAAAAAAIAAoAAAA8AAEAAAAIAAkAAAA8AAIAAAAIAAoAAAA8AAMAAAAIAAkAAAA8AAQAAAAAAAAAAAA8AAUAAAAHAAkAAAA8AAYAAAAFAAoAAAA8AAcAAAAHAAoAAAA8AAgAAAAAAAAAAAA8AAkAAAAIAAkAAAA8AAoAAAAHAAoAAAA8AAsAAAAFAAoAAAA8AAwAAAAAAAAAAAA8AA0AAAAHAAoAAAA8AA4AAAAIAAkAAAA8AA8AAAAIAAoAAAA8ABAAAAAAAAAAAAA8ABEAAAAHAAkAAAA8ABIAAAAHAAoAAAA8ABMAAAAHAAoAAAA8ABQAAAAAAAAAAAA8ABUAAAAFAAkAAAA8ABYAAAAHAAkAAAA8ABcAAAAAAAMAAAA8ABgAAAABAAcAAAA8ABkAAAABAAQAAAA8ABoAAAABAAQAAAA8ABsAAAAAAAYAAAA8ABwAAAACAAUAAAA8AB0AAAAFAAkAAAA8AB4AAAAIAAkAAAA8AB8AAAAIAAkAAAA8ACAAAAABAAMAAAA8ACEAAAABAAQAAAA8ACIAAAABAAQAAAA8ACMAAAABAAUAAAA8ACQAAAAFAAoAAAA8ACUAAAAAAAAAAAA8ACYAAAAHAAoAAAA8ACcAAAAFAAoAAAA8ACgAAAAFAAoAAAA8ACkAAAAFAAkAAAA8ACoAAAAIAAoAAAA8ACsAAAAIAAkAAAA8ACwAAAAIAAoAAAA8AC0AAAAFAAoAAAA8AC4AAAAFAAoAAAA8AC8AAAAFAAkAAAA8ADAAAAAFAAoAAAA8ADEAAAAFAAoAAAA8ADIAAAAHAAoAAAA8ADMAAAABAAkAAAA9APD/AAABAAsAAAA9APH/AAAFAAkAAAA9APL/AAAIAAkAAAA9APP/AAAIAAkAAAA9APT/AAAHAAoAAAA9APX/AAAHAAkAAAA9APb/AAAFAAoAAAA9APf/AAAIAAkAAAA9APj/AAAHAAoAAAA9APn/AAAHAAkAAAA9APr/AAAFAAkAAAA9APv/AAAHAAoAAAA9APz/AAAAAAAAAAA9AP3/AAAHAAkAAAA9AP7/AAAFAAoAAAA9AP//AAAAAAAAAAA9AAAAAAAHAAkAAAA9AAEAAAAAAAAAAAA9AAIAAAAAAAAAAAA9AAMAAAAFAAkAAAA9AAQAAAAIAAkAAAA9AAUAAAAFAAkAAAA9AAYAAAAHAAkAAAA9AAcAAAAFAAoAAAA9AAgAAAAAAAAAAAA9AAkAAAAHAAkAAAA9AAoAAAAHAAkAAAA9AAsAAAAFAAoAAAA9AAwAAAAFAAoAAAA9AA0AAAAAAAAAAAA9AA4AAAAIAAoAAAA9AA8AAAAIAAkAAAA9ABAAAAAFAAkAAAA9ABEAAAAHAAoAAAA9ABIAAAAIAAoAAAA9ABMAAAAHAAkAAAA9ABQAAAAHAAoAAAA9ABUAAAAHAAkAAAA9ABYAAAAAAAMAAAA9ABcAAAABAAcAAAA9ABgAAAABAAQAAAA9ABkAAAABAAQAAAA9ABoAAAAAAAYAAAA9ABsAAAACAAUAAAA9ABwAAAAFAAoAAAA9AB0AAAAFAAkAAAA9AB4AAAAFAAoAAAA9AB8AAAAIAAoAAAA9ACAAAAABAAMAAAA9ACEAAAABAAQAAAA9ACIAAAABAAQAAAA9ACMAAAABAAUAAAA9ACQAAAAIAAkAAAA9ACUAAAAFAAkAAAA9ACYAAAAHAAkAAAA9ACcAAAAAAAAAAAA9ACgAAAAHAAkAAAA9ACkAAAAHAAoAAAA9ACoAAAAIAAkAAAA9ACsAAAAAAAAAAAA9ACwAAAAFAAoAAAA9AC0AAAAIAAkAAAA9AC4AAAAHAAkAAAA9AC8AAAAFAAoAAAA9ADAAAAAIAAoAAAA9ADEAAAAIAAoAAAA9ADIAAAAAAAAAAAA9ADMAAAAHAAoAAAA+APD/AAABAAsAAAA+APH/AAAAAAAAAAA+APL/AAAAAAAAAAA+APP/AAAFAAoAAAA+APT/AAAFAAkAAAA+APX/AAAAAAAAAAA+APb/AAAAAAAAAAA+APf/AAAFAAoAAAA+APj/AAAHAAoAAAA+APn/AAAIAAkAAAA+APr/AAAHAAkAAAA+APv/AAAFAAoAAAA+APz/AAAIAAoAAAA+AP3/AAAHAAkAAAA+AP7/AAAIAAoAAAA+AP//AAAAAAAAAAA+AAAAAAAHAAoAAAA+AAEAAAAFAAkAAAA+AAIAAAAIAAkAAAA+AAMAAAAHAAoAAAA+AAQAAAAFAAkAAAA+AAUAAAAIAAkAAAA+AAYAAAAHAAoAAAA+AAcAAAAFAAoAAAA+AAgAAAAIAAkAAAA+AAkAAAAAAAAAAAA+AAoAAAAIAAoAAAA+AAsAAAAAAAAAAAA+AAwAAAAAAAAAAAA+AA0AAAAHAAoAAAA+AA4AAAAHAAkAAAA+AA8AAAAFAAoAAAA+ABAAAAAAAAAAAAA+ABEAAAAFAAkAAAA+ABIAAAAAAAAAAAA+ABMAAAAHAAoAAAA+ABQAAAAAAAAAAAA+ABUAAAAAAAMAAAA+ABYAAAABAAcAAAA+ABcAAAABAAQAAAA+ABgAAAAAAAYAAAA+ABkAAAACAAQAAAA+ABoAAAACAAUAAAA+ABsAAAAHAAkAAAA+ABwAAAAHAAoAAAA+AB0AAAAHAAoAAAA+AB4AAAAIAAoAAAA+AB8AAAAFAAkAAAA+ACAAAAABAAMAAAA+ACEAAAABAAQAAAA+ACIAAAABAAQAAAA+ACMAAAABAAUAAAA+ACQAAAAHAAoAAAA+ACUAAAAFAAkAAAA+ACYAAAAHAAoAAAA+ACcAAAAHAAkAAAA+ACgAAAAIAAkAAAA+ACkAAAAIAAkAAAA+ACoAAAAIAAoAAAA+ACsAAAAFAAoAAAA+ACwAAAAFAAkAAAA+AC0AAAAFAAoAAAA+AC4AAAAFAAoAAAA+AC8AAAAHAAkAAAA+ADAAAAAFAAkAAAA+ADEAAAAHAAkAAAA+ADIAAAAIAAkAAAA+ADMAAAAAAAAAAAA/APD/AAABAAsAAAA/APH/AAAFAAkAAAA/APL/AAAIAAkAAAA/APP/AAAIAAkAAAA/APT/AAAHAAoAAAA/APX/AAAFAAoAAAA/APb/AAAHAAkAAAA/APf/AAAHAAoAAAA/APj/AAAFAAkAAAA/APn/AAAHAAkAAAA/APr/AAAFAAkAAAA/APv/AAAFAAoAAAA/APz/AAAIAAoAAAA/AP3/AAAFAAkAAAA/AP7/AAAAAAAAAAA/AP//AAAIAAkAAAA/AAAAAAAFAAoAAAA/AAEAAAAHAAkAAAA/AAIAAAAFAAkAAAA/AAMAAAAAAAAAAAA/AAQAAAAFAAoAAAA/AAUAAAAFAAkAAAA/AAYAAAAAAAAAAAA/AAcAAAAAAAAAAAA/AAgAAAAIAAoAAAA/AAkAAAAHAAoAAAA/AAoAAAAHAAoAAAA/AAsAAAAHAAkAAAA/AAwAAAAIAAoAAAA/AA0AAAAFAAkAAAA/AA4AAAAHAAkAAAA/AA8AAAAFAAkAAAA/ABAAAAAHAAoAAAA/ABEAAAAIAAkAAAA/ABIAAAAIAAoAAAA/ABMAAAAHAAkAAAA/ABQAAAAIAAkAAAA/ABUAAAABAAMAAAA/ABYAAAABAAQAAAA/ABcAAAABAAQAAAA/ABgAAAABAAUAAAA/ABkAAAAFAAkAAAA/ABoAAAAFAAoAAAA/ABsAAAAIAAoAAAA/ABwAAAAIAAoAAAA/AB0AAAAHAAkAAAA/AB4AAAAAAAAAAAA/AB8AAAAIAAkAAAA/ACAAAAABAAMAAAA/ACEAAAABAAQAAAA/ACIAAAABAAQAAAA/ACMAAAABAAUAAAA/ACQAAAAIAAkAAAA/ACUAAAAIAAoAAAA/ACYAAAAAAAAAAAA/ACcAAAAIAAkAAAA/ACgAAAAIAAoAAAA/ACkAAAAIAAoAAAA/ACoAAAAIAAoAAAA/ACsAAAAHAAkAAAA/ACwAAAAIAAoAAAA/AC0AAAAHAAoAAAA/AC4AAAAHAAkAAAA/AC8AAAAFAAkAAAA/ADAAAAAFAAoAAAA/ADEAAAAHAAoAAAA/ADIAAAAFAAkAAAA/ADMAAAAFAAkAAABAAPD/AAABAAsAAABAAPH/AAAIAAkAAABAAPL/AAAFAAkAAABAAPP/AAAHAAkAAABAAPT/AAAAAAAAAABAAPX/AAAFAAkAAABAAPb/AAAIAAoAAABAAPf/AAAIAAoAAABAAPj/AAAHAAkAAABAAPn/AAAAAAAAAABAAPr/AAAFAAkAAABAAPv/AAAIAAkAAABAAPz/AAAHAAkAAABAAP3/AAAHAAoAAABAAP7/AAAAAAAAAABAAP//AAAIAAkAAABAAAAAAAAFAAoAAABAAAEAAAAIAAoAAABAAAIAAAAAAAAAAABAAAMAAAAHAAkAAABAAAQAAAAIAAoAAABAAAUAAAAAAAAAAABAAAYAAAAFAAoAAABAAAcAAAAIAAkAAABAAAgAAAAHAAoAAABAAAkAAAAAAAAAAABAAAoAAAAHAAkAAABAAAsAAAAAAAAAAABAAAwAAAAHAAkAAABAAA0AAAAIAAkAAABAAA4AAAAIAAoAAABAAA8AAAAFAAkAAABAABAAAAAHAAkAAABAABEAAAAIAAoAAABAABIAAAAHAAkAAABAABMAAAAIAAkAAABAABQAAAAAAAMAAABAABUAAAABAAcAAABAABYAAAABAAQAAABAABcAAAABAAQAAABAABgAAAABAAUAAABAABkAAAAHAAoAAABAABoAAAAIAAoAAABAABsAAAAFAAkAAABAABwAAAAAAAAAAABAAB0AAAAIAAoAAABAAB4AAAAAAAAAAABAAB8AAAAHAAkAAABAACAAAAABAAMAAABAACEAAAABAAQAAABAACIAAAABAAQAAABAACMAAAABAAUAAABAACQAAAAHAAkAAABAACUAAAAIAAoAAABAACYAAAAHAAoAAABAACcAAAAHAAoAAABAACgAAAAIAAkAAABAACkAAAAFAAoAAABAACoAAAAIAAkAAABAACsAAAAIAAoAAABAACwAAAAIAAkAAABAAC0AAAAIAAoAAABAAC4AAAAAAAAAAABAAC8AAAAFAAkAAABAADAAAAAHAAoAAABAADEAAAAHAAoAAABAADIAAAAFAAkAAABAADMAAAAFAAoAAABBAPD/AAABAAsAAABBAPH/AAAFAAoAAABBAPL/AAAIAAoAAABBAPP/AAAHAAkAAABBAPT/AAAIAAkAAABBAPX/AAAAAAAAAABBAPb/AAAIAAkAAABBAPf/AAAAAAAAAABBAPj/AAAAAAAAAABBAPn/AAAFAAkAAABBAPr/AAAFAAkAAABBAPv/AAAFAAoAAABBAPz/AAAIAAoAAABBAP3/AAAIAAoAAABBAP7/AAAIAAoAAABBAP//AAAFAAoAAABBAAAAAAAFAAkAAABBAAEAAAAHAAkAAABBAAIAAAAFAAkAAABBAAMAAAAHAAkAAABBAAQAAAAIAAkAAABBAAUAAAAIAAoAAABBAAYAAAAHAAoAAABBAAcAAAAHAAkAAABBAAgAAAAFAAkAAABBAAkAAAAFAAoAAABBAAoAAAAIAAkAAABBAAsAAAAFAAoAAABBAAwAAAAHAAoAAABBAA0AAAAHAAoAAABBAA4AAAAFAAkAAABBAA8AAAAFAAoAAABBABAAAAAFAAkAAABBABEAAAAHAAoAAABBABIAAAAFAAkAAABBABMAAAAAAAMAAABBABQAAAABAAcAAABBABUAAAABAAQAAABBABYAAAABAAQAAABBABcAAAAAAAYAAABBABgAAAACAAUAAABBABkAAAAHAAoAAABBABoAAAAHAAkAAABBABsAAAAFAAoAAABBABwAAAAIAAkAAABBAB0AAAAIAAoAAABBAB4AAAAAAAAAAABBAB8AAAAHAAkAAABBACAAAAABAAMAAABBACEAAAABAAQAAABBACIAAAABAAQAAABBACMAAAABAAUAAABBACQAAAAFAAkAAABBACUAAAAFAAoAAABBACYAAAAAAAAAAABBACcAAAAIAAkAAABBACgAAAAAAAAAAABBACkAAAAHAAkAAABBACoAAAAFAAoAAABBACsAAAAAAAAAAABBACwAAAAFAAoAAABBAC0AAAAAAAAAAABBAC4AAAAIAAkAAABBAC8AAAAFAAkAAABBADAAAAAAAAAAAABBADEAAAAHAAoAAABBADIAAAAAAAAAAABBADMAAAAIAAkAAABCAPD/AAACAAsAAABCAPH/AAAAAAQAAABCAPL/AAAAAAUAAABCAPP/AAAIAAoAAABCAPT/AAAIAAkAAABCAPX/AAAHAAoAAABCAPb/AAAFAAoAAABCAPf/AAAIAAoAAABCAPj/AAAFAAoAAABCAPn/AAAAAAAAAABCAPr/AAAFAAoAAABCAPv/AAAHAAkAAABCAPz/AAAFAAoAAABCAP3/AAAHAAkAAABCAP7/AAAHAAkAAABCAP//AAAAAAAAAABCAAAAAAAFAAkAAABCAAEAAAAAAAAAAABCAAIAAAAAAAAAAABCAAMAAAAFAAkAAABCAAQAAAAIAAoAAABCAAUAAAAFAAkAAABCAAYAAAAFAAoAAABCAAcAAAAHAAkAAABCAAgAAAAFAAoAAABCAAkAAAAFAAkAAABCAAoAAAAHAAkAAABCAAsAAAAFAAoAAABCAAwAAAAIAAoAAABCAA0AAAAIAAoAAABCAA4AAAAIAAkAAABCAA8AAAAIAAkAAABCABAAAAAHAAkAAABCABEAAAAIAAoAAABCABIAAAAAAAMAAABCABMAAAABAAcAAABCABQAAAABAAQAAABCABUAAAABAAQAAABCABYAAAAAAAYAAABCABcAAAACAAUAAABCABgAAAAIAAoAAABCABkAAAAFAAkAAABCABoAAAAFAAkAAABCABsAAAAIAAoAAABCABwAAAAHAAkAAABCAB0AAAAHAAoAAABCAB4AAAAFAAkAAABCAB8AAAAAAAAAAABCACAAAAABAAMAAABCACEAAAABAAQAAABCACIAAAABAAQAAABCACMAAAABAAUAAABCACQAAAAHAAoAAABCACUAAAAFAAkAAABCACYAAAAHAAoAAABCACcAAAAAAAAAAABCACgAAAAIAAkAAABCACkAAAAIAAkAAABCACoAAAAHAAkAAABCACsAAAAFAAkAAABCACwAAAAIAAkAAABCAC0AAAAHAAkAAABCAC4AAAAFAAoAAABCAC8AAAAHAAoAAABCADAAAAAAAAAAAABCADEAAAAIAAoAAABCADIAAAAFAAkAAABCADMAAAAIAAkAAABDAPD/AAARAAcAAABDAPH/AAABAAQAAABDAPL/AAABAAYAAABDAPP/AAAAAAUAAABDAPT/AAAFAAkAAABDAPX/AAAIAAkAAABDAPb/AAAFAAkAAABDAPf/AAAIAAkAAABDAPj/AAAFAAkAAABDAPn/AAAAAAAAAABDAPr/AAAHAAkAAABDAPv/AAAHAAkAAABDAPz/AAAHAAkAAABDAP3/AAAFAAkAAABDAP7/AAAHAAkAAABDAP//AAAIAAkAAABDAAAAAAAIAAoAAABDAAEAAAAAAAAAAABDAAIAAAAIAAoAAABDAAMAAAAIAAkAAABDAAQAAAAHAAoAAABDAAUAAAAIAAkAAABDAAYAAAAHAAkAAABDAAcAAAAFAAkAAABDAAgAAAAHAAkAAABDAAkAAAAIAAoAAABDAAoAAAAHAAoAAABDAAsAAAAFAAkAAABDAAwAAAAFAAoAAABDAA0AAAAAAAAAAABDAA4AAAAFAAkAAABDAA8AAAAIAAoAAABDABAAAAAHAAoAAABDABEAAAAAAAMAAABDABIAAAABAAcAAABDABMAAAABAAQAAABDABQAAAABAAQAAABDABUAAAAAAAYAAABDABYAAAACAAUAAABDABcAAAAIAAkAAABDABgAAAAHAAoAAABDABkAAAAAAAAAAABDABoAAAAIAAkAAABDABsAAAAAAAAAAABDABwAAAAIAAoAAABDAB0AAAAHAAkAAABDAB4AAAAFAAoAAABDAB8AAAAAAAAAAABDACAAAAABAAMAAABDACEAAAABAAQAAABDACIAAAABAAQAAABDACMAAAABAAUAAABDACQAAAAFAAkAAABDACUAAAAHAAkAAABDACYAAAAFAAoAAABDACcAAAAFAAoAAABDACgAAAAIAAkAAABDACkAAAAHAAoAAABDACoAAAAIAAoAAABDACsAAAAHAAoAAABDACwAAAAIAAoAAABDAC0AAAAAAAAAAABDAC4AAAAFAAoAAABDAC8AAAAIAAkAAABDADAAAAAAAAAAAABDADEAAAAHAAkAAABDADIAAAAIAAkAAABDADMAAAAFAAoAAABEAPD/AAABAAQAAABEAPH/AAABAAQAAABEAPL/AAABAAQAAABEAPP/AAABAAYAAABEAPT/AAAAAAQAAABEAPX/AAAAAAUAAABEAPb/AAAFAAoAAABEAPf/AAAHAAkAAABEAPj/AAAIAAoAAABEAPn/AAAIAAoAAABEAPr/AAAAAAAAAABEAPv/AAAIAAkAAABEAPz/AAAFAAoAAABEAP3/AAAAAAAAAABEAP7/AAAIAAkAAABEAP//AAAFAAoAAABEAAAAAAAIAAoAAABEAAEAAAAIAAoAAABEAAIAAAAFAAkAAABEAAMAAAAIAAkAAABEAAQAAAAAAAAAAABEAAUAAAAHAAkAAABEAAYAAAAIAAkAAABEAAcAAAAHAAoAAABEAAgAAAAFAAoAAABEAAkAAAAIAAkAAABEAAoAAAAFAAoAAABEAAsAAAAAAAAAAABEAAwAAAAAAAAAAABEAA0AAAAFAAkAAABEAA4AAAAHAAoAAABEAA8AAAAAAAMAAABEABAAAAAAAAQAAABEABEAAAABAAcAAABEABIAAAABAAQAAABEABMAAAABAAQAAABEABQAAAAAAAYAAABEABUAAAACAAUAAABEABYAAAAFAAkAAABEABcAAAAAAAAAAABEABgAAAAAAAAAAABEABkAAAAFAAoAAABEABoAAAAHAAkAAABEABsAAAAFAAkAAABEABwAAAAHAAkAAABEAB0AAAAIAAoAAABEAB4AAAAHAAoAAABEAB8AAAAHAAkAAABEACAAAAABAAMAAABEACEAAAABAAQAAABEACIAAAABAAQAAABEACMAAAABAAUAAABEACQAAAAIAAkAAABEACUAAAAFAAoAAABEACYAAAAIAAkAAABEACcAAAAAAAAAAABEACgAAAAFAAoAAABEACkAAAAFAAkAAABEACoAAAAAAAAAAABEACsAAAAHAAoAAABEACwAAAAIAAkAAABEAC0AAAAIAAoAAABEAC4AAAAAAAAAAABEAC8AAAAIAAkAAABEADAAAAAIAAkAAABEADEAAAAFAAkAAABEADIAAAAFAAkAAABEADMAAAAHAAoAAABFAPD/AAABAAQAAABFAPH/AAABAAQAAABFAPL/AAABAAQAAABFAPP/AAABAAQAAABFAPT/AAABAAQAAABFAPX/AAABAAYAAABFAPb/AAAAAAUAAABFAPf/AAAIAAoAAABFAPj/AAAAAAAAAABFAPn/AAAHAAoAAABFAPr/AAAAAAAAAABFAPv/AAAHAAkAAABFAPz/AAAIAAkAAABFAP3/AAAIAAoAAABFAP7/AAAFAAkAAABFAP//AAAAAAAAAABFAAAAAAAHAAkAAABFAAEAAAAFAAkAAABFAAIAAAAIAAoAAABFAAMAAAAAAAAAAABFAAQAAAAFAAkAAABFAAUAAAAFAAoAAABFAAYAAAAFAAoAAABFAAcAAAAFAAoAAABFAAgAAAAIAAkAAABFAAkAAAAAAAAAAABFAAoAAAAHAAkAAABFAAsAAAAIAAoAAABFAAwAAAAIAAkAAABFAA0AAAAHAAoAAABFAA4AAAAAAAMAAABFAA8AAAABAAcAAABFABAAAAABAAQAAABFABEAAAABAAQAAABFABIAAAABAAQAAABFABMAAAABAAQAAABFABQAAAABAAUAAABFABUAAAAFAAkAAABFABYAAAAFAAoAAABFABcAAAAIAAkAAABFABgAAAAAAAAAAABFABkAAAAHAAkAAABFABoAAAAIAAkAAABFABsAAAAAAAAAAABFABwAAAAFAAkAAABFAB0AAAAAAAAAAABFAB4AAAAAAAAAAABFAB8AAAAAAAAAAABFACAAAAABAAMAAABFACEAAAABAAQAAABFACIAAAABAAQAAABFACMAAAABAAUAAABFACQAAAAIAAkAAABFACUAAAAHAAoAAABFACYAAAAHAAoAAABFACcAAAAIAAkAAABFACgAAAAHAAoAAABFACkAAAAHAAoAAABFACoAAAAAAAAAAABFACsAAAAFAAkAAABFACwAAAAFAAkAAABFAC0AAAAAAAAAAABFAC4AAAAFAAoAAABFAC8AAAAHAAoAAABFADAAAAAFAAoAAABFADEAAAAFAAkAAABFADIAAAAAAAAAAABFADMAAAAHAAkAAABGAPD/AAAAAAsAAABGAPH/AAACAAQAAABGAPL/AAAAAAcAAABGAPP/AAABAAQAAABGAPT/AAABAAQAAABGAPX/AAABAAQAAABGAPb/AAABAAYAAABGAPf/AAAAAAUAAABGAPj/AAAHAAoAAABGAPn/AAAFAAoAAABGAPr/AAAIAAoAAABGAPv/AAAHAAkAAABGAPz/AAAHAAoAAABGAP3/AAAFAAkAAABGAP7/AAAIAAoAAABGAP//AAAAAAAAAABGAAAAAAAHAAoAAABGAAEAAAAFAAkAAABGAAIAAAAAAAAAAABGAAMAAAAFAAoAAABGAAQAAAAIAAoAAABGAAUAAAAFAAoAAABGAAYAAAAAAAAAAABGAAcAAAAAAAAAAABGAAgAAAAIAAoAAABGAAkAAAAIAAkAAABGAAoAAAAIAAkAAABGAAsAAAAAAAAAAABGAAwAAAAAAAAAAABGAA0AAAAAAAMAAABGAA4AAAABAAcAAABGAA8AAAABAAQAAABGABAAAAABAAQAAABGABEAAAABAAQAAABGABIAAAABAAQAAABGABMAAAAAAAYAAABGABQAAAACAAUAAABGABUAAAAHAAkAAABGABYAAAAHAAoAAABGABcAAAAFAAoAAABGABgAAAAAAAAAAABGABkAAAAAAAAAAABGABoAAAAIAAkAAABGABsAAAAIAAkAAABGABwAAAAHAAoAAABGAB0AAAAHAAkAAABGAB4AAAAAAAAAAABGAB8AAAAFAAkAAABGACAAAAABAAMAAABGACEAAAABAAQAAABGACIAAAABAAQAAABGACMAAAABAAUAAABGACQAAAAIAAkAAABGACUAAAAAAAAAAABGACYAAAAAAAAAAABGACcAAAAFAAkAAABGACgAAAAFAAoAAABGACkAAAAIAAkAAABGACoAAAAFAAoAAABGACsAAAAIAAoAAABGACwAAAAFAAoAAABGAC0AAAAIAAoAAABGAC4AAAAFAAkAAABGAC8AAAAFAAkAAABGADAAAAAAAAAAAABGADEAAAAIAAoAAABGADIAAAAIAAkAAABGADMAAAAIAAkAAABHAPD/AAABAAsAAABHAPH/AAAAAAAAAABHAPL/AAACAAMAAABHAPP/AAACAAQAAABHAPT/AAAAAAcAAABHAPX/AAABAAQAAABHAPb/AAABAAQAAABHAPf/AAABAAYAAABHAPj/AAAAAAUAAABHAPn/AAAIAAoAAABHAPr/AAAFAAkAAABHAPv/AAAHAAoAAABHAPz/AAAIAAkAAABHAP3/AAAFAAkAAABHAP7/AAAIAAkAAABHAP//AAAFAAkAAABHAAAAAAAAAAAAAABHAAEAAAAIAAkAAABHAAIAAAAHAAoAAABHAAMAAAAFAAkAAABHAAQAAAAIAAkAAABHAAUAAAAAAAAAAABHAAYAAAAIAAkAAABHAAcAAAAHAAoAAABHAAgAAAAFAAkAAABHAAkAAAAFAAkAAABHAAoAAAAIAAoAAABHAAsAAAAIAAkAAABHAAwAAAAAAAMAAABHAA0AAAABAAcAAABHAA4AAAABAAQAAABHAA8AAAABAAQAAABHABAAAAABAAQAAABHABEAAAAAAAYAAABHABIAAAACAAQAAABHABMAAAACAAUAAABHABQAAAAIAAoAAABHABUAAAAHAAkAAABHABYAAAAFAAkAAABHABcAAAAIAAoAAABHABgAAAAIAAoAAABHABkAAAAHAAkAAABHABoAAAAHAAoAAABHABsAAAAFAAoAAABHABwAAAAHAAoAAABHAB0AAAAHAAoAAABHAB4AAAAHAAoAAABHAB8AAAAHAAkAAABHACAAAAABAAMAAABHACEAAAABAAQAAABHACIAAAABAAQAAABHACMAAAABAAUAAABHACQAAAAIAAkAAABHACUAAAAFAAkAAABHACYAAAAFAAoAAABHACcAAAAHAAoAAABHACgAAAAFAAoAAABHACkAAAAAAAAAAABHACoAAAAAAAAAAABHACsAAAAHAAoAAABHACwAAAAIAAkAAABHAC0AAAAFAAoAAABHAC4AAAAFAAkAAABHAC8AAAAHAAkAAABHADAAAAAIAAkAAABHADEAAAAHAAkAAABHADIAAAAFAAoAAABHADMAAAAHAAkAAABIAPD/AAABAAsAAABIAPH/AAAIAAkAAABIAPL/AAAIAAoAAABIAPP/AAAAAAAAAABIAPT/AAACAAMAAABIAPX/AAAAAAcAAABIAPb/AAABAAQAAABIAPf/AAABAAQAAABIAPj/AAABAAYAAABIAPn/AAAAAAQAAABIAPr/AAAAAAUAAABIAPv/AAAHAAkAAABIAPz/AAAHAAkAAABIAP3/AAAHAAoAAABIAP7/AAAFAAkAAABIAP//AAAFAAoAAABIAAAAAAAHAAkAAABIAAEAAAAHAAkAAABIAAIAAAAIAAkAAABIAAMAAAAIAAoAAABIAAQAAAAHAAkAAABIAAUAAAAFAAoAAABIAAYAAAAIAAkAAABIAAcAAAAIAAoAAABIAAgAAAAAAAAAAABIAAkAAAAHAAkAAABIAAoAAAAAAAMAAABIAAsAAAAAAAQAAABIAAwAAAABAAcAAABIAA0AAAABAAQAAABIAA4AAAABAAQAAABIAA8AAAABAAQAAABIABAAAAAAAAYAAABIABEAAAACAAUAAABIABIAAAAHAAoAAABIABMAAAAIAAkAAABIABQAAAAFAAkAAABIABUAAAAIAAkAAABIABYAAAAHAAkAAABIABcAAAAFAAkAAABIABgAAAAIAAkAAABIABkAAAAFAAkAAABIABoAAAAIAAoAAABIABsAAAAFAAoAAABIABwAAAAFAAoAAABIAB0AAAAAAAAAAABIAB4AAAAIAAoAAABIAB8AAAAIAAoAAABIACAAAAABAAMAAABIACEAAAABAAQAAABIACIAAAABAAQAAABIACMAAAABAAUAAABIACQAAAAHAAkAAABIACUAAAAHAAoAAABIACYAAAAIAAkAAABIACcAAAAHAAoAAABIACgAAAAHAAkAAABIACkAAAAHAAkAAABIACoAAAAFAAkAAABIACsAAAAIAAkAAABIACwAAAAIAAkAAABIAC0AAAAHAAkAAABIAC4AAAAIAAoAAABIAC8AAAAFAAkAAABIADAAAAAFAAoAAABIADEAAAAHAAkAAABIADIAAAAAAAAAAABIADMAAAAHAAoAAABJAPD/AAABAAsAAABJAPH/AAAFAAoAAABJAPL/AAAIAAkAAABJAPP/AAAFAAoAAABJAPT/AAAIAAkAAABJAPX/AAABAAMAAABJAPb/AAABAAQAAABJAPf/AAABAAQAAABJAPj/AAABAAQAAABJAPn/AAABAAQAAABJAPr/AAABAAUAAABJAPv/AAAAAAAAAABJAPz/AAAIAAkAAABJAP3/AAAIAAkAAABJAP7/AAAFAAoAAABJAP//AAAHAAoAAABJAAAAAAAHAAkAAABJAAEAAAAFAAkAAABJAAIAAAAHAAkAAABJAAMAAAAAAAAAAABJAAQAAAAAAAAAAABJAAUAAAAHAAkAAABJAAYAAAAIAAoAAABJAAcAAAAFAAkAAABJAAgAAAAIAAkAAABJAAkAAAAAAAMAAABJAAoAAAABAAcAAABJAAsAAAABAAQAAABJAAwAAAABAAQAAABJAA0AAAABAAQAAABJAA4AAAABAAQAAABJAA8AAAAAAAYAAABJABAAAAACAAUAAABJABEAAAAFAAkAAABJABIAAAAIAAkAAABJABMAAAAIAAkAAABJABQAAAAHAAkAAABJABUAAAAFAAoAAABJABYAAAAFAAkAAABJABcAAAAAAAAAAABJABgAAAAAAAAAAABJABkAAAAHAAkAAABJABoAAAAAAAAAAABJABsAAAAHAAkAAABJABwAAAAFAAoAAABJAB0AAAAHAAoAAABJAB4AAAAHAAkAAABJAB8AAAAHAAoAAABJACAAAAABAAMAAABJACEAAAABAAQAAABJACIAAAABAAQAAABJACMAAAABAAUAAABJACQAAAAIAAkAAABJACUAAAAAAAAAAABJACYAAAAIAAkAAABJACcAAAAIAAkAAABJACgAAAAFAAkAAABJACkAAAAHAAkAAABJACoAAAAIAAkAAABJACsAAAAFAAoAAABJACwAAAAFAAoAAABJAC0AAAAAAAAAAABJAC4AAAAIAAoAAABJAC8AAAAFAAkAAABJADAAAAAHAAkAAABJADEAAAAFAAoAAABJADIAAAAHAAoAAABJADMAAAAIAAoAAABKAPD/AAABAAsAAABKAPH/AAAFAAoAAABKAPL/AAAIAAkAAABKAPP/AAAIAAkAAABKAPT/AAAIAAkAAABKAPX/AAACAAMAAABKAPb/AAAAAAcAAABKAPf/AAABAAQAAABKAPj/AAABAAQAAABKAPn/AAABAAQAAABKAPr/AAABAAYAAABKAPv/AAAAAAUAAABKAPz/AAAHAAkAAABKAP3/AAAIAAoAAABKAP7/AAAFAAoAAABKAP//AAAFAAoAAABKAAAAAAAFAAkAAABKAAEAAAAAAAAAAABKAAIAAAAHAAkAAABKAAMAAAAIAAkAAABKAAQAAAAFAAkAAABKAAUAAAAHAAoAAABKAAYAAAAAAAAAAABKAAcAAAAIAAoAAABKAAgAAAAAAAMAAABKAAkAAAABAAcAAABKAAoAAAABAAQAAABKAAsAAAABAAQAAABKAAwAAAABAAQAAABKAA0AAAABAAQAAABKAA4AAAAAAAYAAABKAA8AAAACAAUAAABKABAAAAAAAAAAAABKABEAAAAHAAoAAABKABIAAAAAAAAAAABKABMAAAAIAAoAAABKABQAAAAHAAoAAABKABUAAAAHAAkAAABKABYAAAAAAAAAAABKABcAAAAFAAkAAABKABgAAAAFAAkAAABKABkAAAAHAAoAAABKABoAAAAAAAAAAABKABsAAAAFAAkAAABKABwAAAAIAAkAAABKAB0AAAAFAAoAAABKAB4AAAAHAAoAAABKAB8AAAAHAAoAAABKACAAAAABAAMAAABKACEAAAABAAQAAABKACIAAAABAAQAAABKACMAAAABAAUAAABKACQAAAAFAAkAAABKACUAAAAFAAkAAABKACYAAAAAAAAAAABKACcAAAAFAAoAAABKACgAAAAFAAoAAABKACkAAAAHAAoAAABKACoAAAAFAAkAAABKACsAAAAHAAoAAABKACwAAAAIAAoAAABKAC0AAAAFAAoAAABKAC4AAAAFAAkAAABKAC8AAAAFAAkAAABKADAAAAAHAAoAAABKADEAAAAHAAkAAABKADIAAAAFAAoAAABKADMAAAAHAAoAAABLAPD/AAABAAsAAABLAPH/AAAHAAkAAABLAPL/AAAHAAoAAABLAPP/AAAHAAkAAABLAPT/AAAFAAkAAABLAPX/AAAFAAoAAABLAPb/AAACAAMAAABLAPf/AAAAAAcAAABLAPj/AAABAAQAAABLAPn/AAABAAQAAABLAPr/AAABAAQAAABLAPv/AAABAAYAAABLAPz/AAAAAAUAAABLAP3/AAAIAAkAAABLAP7/AAAFAAkAAABLAP//AAAHAAkAAABLAAAAAAAFAAkAAABLAAEAAAAAAAAAAABLAAIAAAAIAAoAAABLAAMAAAAIAAkAAABLAAQAAAAIAAkAAABLAAUAAAAAAAAAAABLAAYAAAAAAAMAAABLAAcAAAAAAAQAAABLAAgAAAABAAcAAABLAAkAAAABAAQAAABLAAoAAAABAAQAAABLAAsAAAABAAQAAABLAAwAAAABAAQAAABLAA0AAAAAAAYAAABLAA4AAAACAAUAAABLAA8AAAAFAAoAAABLABAAAAAHAAkAAABLABEAAAAHAAoAAABLABIAAAAHAAkAAABLABMAAAAHAAkAAABLABQAAAAAAAAAAABLABUAAAAHAAoAAABLABYAAAAHAAkAAABLABcAAAAFAAkAAABLABgAAAAAAAAAAABLABkAAAAHAAoAAABLABoAAAAFAAkAAABLABsAAAAIAAoAAABLABwAAAAFAAkAAABLAB0AAAAAAAAAAABLAB4AAAAFAAoAAABLAB8AAAAIAAoAAABLACAAAAABAAMAAABLACEAAAABAAQAAABLACIAAAABAAQAAABLACMAAAABAAUAAABLACQAAAAFAAoAAABLACUAAAAHAAoAAABLACYAAAAFAAkAAABLACcAAAAHAAoAAABLACgAAAAHAAoAAABLACkAAAAIAAkAAABLACoAAAAFAAkAAABLACsAAAAHAAkAAABLACwAAAAAAAAAAABLAC0AAAAFAAoAAABLAC4AAAAAAAAAAABLAC8AAAAAAAAAAABLADAAAAAHAAkAAABLADEAAAAIAAoAAABLADIAAAAHAAoAAABLADMAAAAFAAoAAABMAPD/AAABAAsAAABMAPH/AAAIAAkAAABMAPL/AAAIAAkAAABMAPP/AAAFAAoAAABMAPT/AAAFAAoAAABMAPX/AAAHAAoAAABMAPb/AAAIAAoAAABMAPf/AAABAAMAAABMAPj/AAABAAQAAABMAPn/AAABAAQAAABMAPr/AAABAAQAAABMAPv/AAABAAQAAABMAPz/AAABAAYAAABMAP3/AAAAAAUAAABMAP7/AAAFAAoAAABMAP//AAAIAAkAAABMAAAAAAAHAAoAAABMAAEAAAAIAAkAAABMAAIAAAAFAAkAAABMAAMAAAAHAAkAAABMAAQAAAAAAAMAAABMAAUAAAAAAAQAAABMAAYAAAABAAcAAABMAAcAAAABAAQAAABMAAgAAAABAAQAAABMAAkAAAABAAQAAABMAAoAAAABAAQAAABMAAsAAAABAAQAAABMAAwAAAAAAAYAAABMAA0AAAACAAUAAABMAA4AAAAHAAoAAABMAA8AAAAHAAoAAABMABAAAAAIAAoAAABMABEAAAAHAAoAAABMABIAAAAIAAoAAABMABMAAAAIAAoAAABMABQAAAAFAAoAAABMABUAAAAFAAoAAABMABYAAAAFAAoAAABMABcAAAAHAAoAAABMABgAAAAFAAkAAABMABkAAAAHAAoAAABMABoAAAAIAAkAAABMABsAAAAIAAkAAABMABwAAAAIAAkAAABMAB0AAAAHAAoAAABMAB4AAAAIAAkAAABMAB8AAAAAAAAAAABMACAAAAABAAMAAABMACEAAAABAAQAAABMACIAAAABAAQAAABMACMAAAABAAUAAABMACQAAAAFAAoAAABMACUAAAAFAAkAAABMACYAAAAIAAkAAABMACcAAAAFAAoAAABMACgAAAAIAAoAAABMACkAAAAIAAoAAABMACoAAAAHAAoAAABMACsAAAAFAAkAAABMACwAAAAFAAoAAABMAC0AAAAHAAoAAABMAC4AAAAFAAoAAABMAC8AAAAIAAkAAABMADAAAAAFAAoAAABMADEAAAAHAAoAAABMADIAAAAIAAoAAABMADMAAAAHAAoAAABNAPD/AAABAAsAAABNAPH/AAAIAAoAAABNAPL/AAAFAAkAAABNAPP/AAAAAAAAAABNAPT/AAAFAAoAAABNAPX/AAAFAAkAAABNAPb/AAAHAAoAAABNAPf/AAACAAMAAABNAPj/AAAAAAcAAABNAPn/AAABAAQAAABNAPr/AAABAAQAAABNAPv/AAABAAQAAABNAPz/AAABAAQAAABNAP3/AAABAAUAAABNAP7/AAAFAAkAAABNAP//AAAHAAoAAABNAAAAAAAFAAkAAABNAAEAAAAFAAoAAABNAAIAAAAHAAkAAABNAAMAAAAAAAMAAABNAAQAAAABAAcAAABNAAUAAAABAAQAAABNAAYAAAABAAQAAABNAAcAAAABAAQAAABNAAgAAAABAAQAAABNAAkAAAABAAQAAABNAAoAAAAAAAYAAABNAAsAAAACAAQAAABNAAwAAAACAAUAAABNAA0AAAAAAAAAAABNAA4AAAAHAAkAAABNAA8AAAAIAAkAAABNABAAAAAHAAoAAABNABEAAAAFAAoAAABNABIAAAAFAAoAAABNABMAAAAFAAoAAABNABQAAAAHAAkAAABNABUAAAAFAAkAAABNABYAAAAFAAkAAABNABcAAAAFAAoAAABNABgAAAAHAAoAAABNABkAAAAHAAkAAABNABoAAAAIAAkAAABNABsAAAAIAAoAAABNABwAAAAFAAkAAABNAB0AAAAAAAAAAABNAB4AAAAFAAkAAABNAB8AAAAHAAoAAABNACAAAAABAAMAAABNACEAAAABAAQAAABNACIAAAABAAQAAABNACMAAAABAAUAAABNACQAAAAFAAoAAABNACUAAAAHAAkAAABNACYAAAAFAAoAAABNACcAAAAHAAkAAABNACgAAAAHAAkAAABNACkAAAAFAAoAAABNACoAAAAHAAkAAABNACsAAAAHAAkAAABNACwAAAAHAAoAAABNAC0AAAAFAAoAAABNAC4AAAAHAAoAAABNAC8AAAAIAAkAAABNADAAAAAFAAkAAABNADEAAAAFAAoAAABNADIAAAAHAAkAAABNADMAAAAFAAoAAABOAPD/AAABAAsAAABOAPH/AAAIAAoAAABOAPL/AAAIAAkAAABOAPP/AAAFAAkAAABOAPT/AAAFAAoAAABOAPX/AAAIAAoAAABOAPb/AAAFAAkAAABOAPf/AAAFAAoAAABOAPj/AAACAAMAAABOAPn/AAAAAAcAAABOAPr/AAABAAQAAABOAPv/AAABAAQAAABOAPz/AAABAAQAAABOAP3/AAABAAYAAABOAP7/AAAAAAQAAABOAP//AAAAAAQAAABOAAAAAAAAAAQAAABOAAEAAAAAAAQAAABOAAIAAAAAAAQAAABOAAMAAAABAAcAAABOAAQAAAABAAQAAABOAAUAAAABAAQAAABOAAYAAAABAAQAAABOAAcAAAABAAQAAABOAAgAAAAAAAYAAABOAAkAAAACAAQAAABOAAoAAAACAAUAAABOAAsAAAAIAAoAAABOAAwAAAAFAAkAAABOAA0AAAAAAAAAAABOAA4AAAAIAAoAAABOAA8AAAAFAAoAAABOABAAAAAHAAkAAABOABEAAAAHAAoAAABOABIAAAAHAAoAAABOABMAAAAFAAoAAABOABQAAAAIAAoAAABOABUAAAAFAAoAAABOABYAAAAAAAAAAABOABcAAAAAAAAAAABOABgAAAAHAAkAAABOABkAAAAIAAoAAABOABoAAAAFAAoAAABOABsAAAAIAAkAAABOABwAAAAAAAAAAABOAB0AAAAAAAAAAABOAB4AAAAHAAkAAABOAB8AAAAIAAoAAABOACAAAAABAAMAAABOACEAAAABAAQAAABOACMAAAABAAUAAABOACQAAAAIAAkAAABOACUAAAAFAAoAAABOACYAAAAFAAoAAABOACcAAAAHAAoAAABOACgAAAAIAAoAAABOACkAAAAIAAkAAABOACoAAAAIAAkAAABOACsAAAAIAAoAAABOACwAAAAAAAAAAABOAC0AAAAIAAoAAABOAC4AAAAAAAAAAABOAC8AAAAIAAkAAABOADAAAAAFAAoAAABOADEAAAAHAAoAAABOADIAAAAFAAoAAABOADMAAAAAAAAAAABPAPD/AAABAAsAAABPAPH/AAAHAAoAAABPAPL/AAAAAAAAAABPAPP/AAAFAAoAAABPAPT/AAAHAAkAAABPAPX/AAAHAAoAAABPAPb/AAAFAAkAAABPAPf/AAAIAAkAAABPAPj/AAAIAAkAAABPAPn/AAACAAMAAABPAPr/AAACAAQAAABPAPv/AAAAAAcAAABPAPz/AAABAAQAAABPAP3/AAABAAQAAABPAP7/AAABAAQAAABPAP//AAABAAQAAABPAAAAAAABAAQAAABPAAEAAAABAAQAAABPAAIAAAABAAQAAABPAAMAAAABAAQAAABPAAQAAAABAAQAAABPAAUAAAABAAQAAABPAAYAAAAAAAYAAABPAAcAAAACAAQAAABPAAgAAAACAAUAAABPAAkAAAAIAAoAAABPAAoAAAAHAAoAAABPAAsAAAAFAAkAAABPAAwAAAAIAAoAAABPAA0AAAAFAAoAAABPAA4AAAAIAAoAAABPAA8AAAAHAAkAAABPABAAAAAIAAkAAABPABEAAAAAAAAAAABPABIAAAAHAAkAAABPABMAAAAFAAkAAABPABQAAAAFAAkAAABPABUAAAAFAAkAAABPABYAAAAIAAoAAABPABcAAAAFAAkAAABPABgAAAAHAAoAAABPABkAAAAFAAoAAABPABoAAAAHAAoAAABPABsAAAAHAAkAAABPABwAAAAHAAkAAABPAB0AAAAHAAkAAABPAB4AAAAFAAkAAABPAB8AAAAFAAoAAABPACAAAAABAAMAAABPACEAAAABAAQAAABPACQAAAAHAAkAAABPACUAAAAHAAoAAABPACYAAAAHAAkAAABPACcAAAAFAAoAAABPACgAAAAHAAoAAABPACkAAAAFAAkAAABPACoAAAAIAAoAAABPACsAAAAIAAkAAABPACwAAAAHAAkAAABPAC0AAAAHAAoAAABPAC4AAAAFAAkAAABPAC8AAAAHAAkAAABPADAAAAAIAAoAAABPADEAAAAAAAAAAABPADIAAAAIAAkAAABPADMAAAAAAAAAAABQAPD/AAABAAsAAABQAPH/AAAAAAkAAABQAPL/AAAAAAoAAABQAPP/AAAIAAkAAABQAPT/AAAIAAkAAABQAPX/AAAFAAoAAABQAPb/AAAFAAkAAABQAPf/AAAIAAoAAABQAPj/AAAIAAkAAABQAPn/AAAFAAkAAABQAPr/AAAAAAAAAABQAPv/AAABAAMAAABQAPz/AAABAAQAAABQAP3/AAAPAAYAAABQAP7/AAAPAAgAAABQAP//AAAPAAcAAABQAAAAAAAPAAYAAABQAAEAAAAPAAcAAABQAAIAAAAPAAcAAABQAAMAAAAAAAYAAABQAAQAAAACAAQAAABQAAUAAAACAAQAAABQAAYAAAACAAUAAABQAAcAAAAIAAoAAABQAAgAAAAHAAkAAABQAAkAAAAFAAoAAABQAAoAAAAFAAoAAABQAAsAAAAIAAoAAABQAAwAAAAHAAoAAABQAA0AAAAIAAkAAABQAA4AAAAFAAoAAABQAA8AAAAIAAoAAABQABAAAAAIAAkAAABQABEAAAAAAAkAAABQABIAAAAAAAoAAABQABMAAAAHAAoAAABQABQAAAAHAAkAAABQABUAAAAAAAAAAABQABYAAAAAAAAAAABQABcAAAAIAAoAAABQABgAAAAHAAkAAABQABkAAAAAAAAAAABQABoAAAAIAAkAAABQABsAAAAIAAkAAABQABwAAAAAAAAAAABQAB0AAAAAAAAAAABQAB4AAAAAAAkAAABQAB8AAAAAAAkAAABQACAAAAABAAMAAABQACEAAAABAAQAAABQACQAAAAAAAoAAABQACUAAAAAAAkAAABQACYAAAAAAAoAAABQACcAAAAAAAkAAABQACgAAAAAAAoAAABQACkAAAAAAAkAAABQACoAAAAAAAoAAABQACsAAAAAAAkAAABQACwAAAAAAAoAAABQAC0AAAAAAAkAAABQAC4AAAAAAAoAAABQAC8AAAAAAAkAAABQADAAAAAAAAoAAABQADEAAAAFAAkAAABQADIAAAAHAAkAAABQADMAAAAAAAkAAAAMAAYAAAAHAAoAAAAOAAYAAAAFAAoAAAAYAPj/AAADAAcAAAApAPj/AAADAAcAAAApAPn/AAADAAcAAAAqAPj/AAADAAcAAAAqAPn/AAADAAcAAAAPAAAAAAABAAMAAAAPAAEAAAABAAQAAAAPAAIAAAABAAUAAAAQAAAAAAABAAMAAAAQAAEAAAABAAQAAAAQAAIAAAABAAUAAAARAAAAAAABAAMAAAARAAEAAAABAAQAAAARAAIAAAABAAUAAAAlAAoAAAADAAcAAAAkAAoAAAADAAcAAAAkAAsAAAADAAcAAAAlAAwAAAADAAcAAAAlAAsAAAAAAAEAAAAmAAsAAAAAAAEAAAAmAAwAAAAAAAEAAAAnAAsAAAAAAAEAAAAoAAsAAAADAAcAAAAnAAoAAAAAAAEAAAAmAAoAAAAAAAEAAAAWAAwAAAADAAkAAAAEAP7/AAAAAAAAAAAIAPv/AAAIAAkAAAAKAP3/AAAIAAkAAAAHAP7/AAAAAAAAAAAHAP3/AAAGAAAAAAAIAPz/AAAOAAAAAAAGAPz/AAAAAAAAAAAKAP7/AAAIAAkAAAAHAP//AAABAAQAAAAGAAMAAAALAAAAAABOACIAAAABAAQAAABPACIAAAABAAQAAABQACIAAAAPAAcAAABPACMAAAABAAUAAABQACMAAAACAAsAAAD+/wcAAAAIAAkAAAD8////AAARACEAAAAIABQAAAAIAAkAAABSABYAAAACAAsAAABRABcAAAAAAAkAAABRABgAAAAAAAkAAABRABkAAAAAAAkAAABRABoAAAAAAAoAAABRABsAAAAHAAkAAABRABwAAAAAAAkAAABSABkAAAACAAsAAABSABgAAAACAAsAAABSABcAAAACAAsAAABSABUAAAAAAAkAAABSABQAAAACAAsAAABSABMAAAAAAAkAAABSABIAAAABAAsAAABRABUAAAAAAAkAAABRABYAAAAAAAkAAABRABMAAAAAAAkAAABRABQAAAAAAAoAAABRABIAAAABAAsAAABRAB0AAAAAAAoAAABRAB4AAAAAAAkAAABSABwAAAAAAAkAAABRADEAAAABAAsAAABRADIAAAAIAAoAAABRADMAAAABAAkAAAAbADQAAAADAAcAAAAbADUAAAADAAcAAAAbADYAAAADAAcAAAAaADYAAAADAAcAAAAaADcAAAADAAcAAAAaADgAAAAAAAEAAAAZADgAAAADAAcAAAAZADkAAAADAAcAAAAZADoAAAAAAAEAAAAZADsAAAADAAcAAAAaADkAAAADAAcAAAAbADgAAAAAAAEAAAAbADcAAAADAAcAAAAcADYAAAAAAAEAAAAcADUAAAAAAAEAAAAdADQAAAADAAcAAAAcADQAAAADAAcAAAA=")
+tile_set = SubResource("TileSet_snsnx")
+
+[node name="DoorSceneManager" parent="." node_paths=PackedStringArray("player") instance=ExtResource("3_5ranr")]
+position = Vector2(-34, 99)
+player = NodePath("../Player")
+_to_scene = 1
+push_direction = 1
+
+[node name="DoorSceneManager2" parent="." node_paths=PackedStringArray("player") instance=ExtResource("3_5ranr")]
+position = Vector2(78, 419)
+player = NodePath("../Player")
+_to_scene = 1
+push_direction = 1
+
+[node name="Player" parent="." instance=ExtResource("4_y0qys")]
+z_index = 1
+motion_mode = 1
+
+[node name="Camera2D" type="Camera2D" parent="Player"]
+z_index = 4096
+zoom = Vector2(2, 2)
+
+[node name="PauseMenu" parent="Player/Camera2D" instance=ExtResource("5_06oyi")]
+offset_left = -288.0
+offset_top = -162.0
+offset_right = 288.0
+offset_bottom = 162.0
+
+[node name="InventoryMenu" parent="Player/Camera2D" instance=ExtResource("6_cymwe")]
+process_mode = 3
+++ /dev/null
-[gd_scene load_steps=9 format=4 uid="uid://ds1fjw3marbia"]
-
-[ext_resource type="PackedScene" uid="uid://k76535tjepm3" path="res://scenes/elements/player.tscn" id="1_6iuf6"]
-[ext_resource type="Script" path="res://scripts/main_level.gd" id="1_fdviv"]
-[ext_resource type="Texture2D" uid="uid://bj3fteudhyal6" path="res://assets/textures/Overworld.png" id="1_pt2os"]
-[ext_resource type="PackedScene" uid="uid://da1uex028xkv1" path="res://scenes/elements/door_scene_manager.tscn" id="1_qqjfh"]
-[ext_resource type="PackedScene" uid="uid://d11oo2pxcah1g" path="res://scenes/interfaces/pause_menu.tscn" id="2_4k3ic"]
-[ext_resource type="PackedScene" uid="uid://cjvtoi20cy8wi" path="res://scenes/interfaces/inventory.tscn" id="6_a0ayx"]
-
-[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_n0o3p"]
-texture = ExtResource("1_pt2os")
-0:0/0 = 0
-0:0/0/terrain_set = 0
-0:0/0/terrain = 0
-0:0/0/terrains_peering_bit/right_side = 0
-0:0/0/terrains_peering_bit/bottom_right_corner = 0
-0:0/0/terrains_peering_bit/bottom_side = 0
-0:0/0/terrains_peering_bit/bottom_left_corner = 0
-0:0/0/terrains_peering_bit/left_side = 0
-0:0/0/terrains_peering_bit/top_left_corner = 0
-0:0/0/terrains_peering_bit/top_side = 0
-0:0/0/terrains_peering_bit/top_right_corner = 0
-1:0/0 = 0
-2:0/0 = 0
-3:0/0 = 0
-4:0/0 = 0
-5:0/0 = 0
-25:0/0 = 0
-26:0/0 = 0
-27:0/0 = 0
-28:0/0 = 0
-29:0/0 = 0
-30:0/0 = 0
-31:0/0 = 0
-32:0/0 = 0
-33:0/0 = 0
-34:0/0 = 0
-35:0/0 = 0
-36:0/0 = 0
-37:0/0 = 0
-25:1/0 = 0
-26:1/0 = 0
-27:1/0 = 0
-28:1/0 = 0
-29:1/0 = 0
-30:1/0 = 0
-31:1/0 = 0
-32:1/0 = 0
-33:1/0 = 0
-34:1/0 = 0
-35:1/0 = 0
-36:1/0 = 0
-37:1/0 = 0
-38:1/0 = 0
-25:2/0 = 0
-26:2/0 = 0
-27:2/0 = 0
-28:2/0 = 0
-29:2/0 = 0
-30:2/0 = 0
-31:2/0 = 0
-32:2/0 = 0
-33:2/0 = 0
-34:2/0 = 0
-35:2/0 = 0
-36:2/0 = 0
-37:2/0 = 0
-38:2/0 = 0
-3:3/0 = 0
-4:3/0 = 0
-5:3/0 = 0
-25:3/0 = 0
-26:3/0 = 0
-27:3/0 = 0
-28:3/0 = 0
-29:3/0 = 0
-30:3/0 = 0
-31:3/0 = 0
-32:3/0 = 0
-33:3/0 = 0
-34:3/0 = 0
-35:3/0 = 0
-36:3/0 = 0
-37:3/0 = 0
-38:3/0 = 0
-3:4/0 = 0
-4:4/0 = 0
-5:4/0 = 0
-21:4/0 = 0
-25:4/0 = 0
-26:4/0 = 0
-27:4/0 = 0
-28:4/0 = 0
-29:4/0 = 0
-30:4/0 = 0
-31:4/0 = 0
-32:4/0 = 0
-33:4/0 = 0
-34:4/0 = 0
-35:4/0 = 0
-36:4/0 = 0
-37:4/0 = 0
-38:4/0 = 0
-6:5/0 = 0
-7:5/0 = 0
-8:5/0 = 0
-9:5/0 = 0
-10:5/0 = 0
-21:5/0 = 0
-25:5/0 = 0
-26:5/0 = 0
-27:5/0 = 0
-28:5/0 = 0
-29:5/0 = 0
-30:5/0 = 0
-31:5/0 = 0
-32:5/0 = 0
-33:5/0 = 0
-34:5/0 = 0
-35:5/0 = 0
-36:5/0 = 0
-37:5/0 = 0
-38:5/0 = 0
-39:5/0 = 0
-5:6/0 = 0
-6:6/0 = 0
-7:6/0 = 0
-8:6/0 = 0
-9:6/0 = 0
-10:6/0 = 0
-15:6/0 = 0
-15:6/0/terrain_set = 0
-15:6/0/terrain = 2
-15:6/0/terrains_peering_bit/right_side = 2
-15:6/0/terrains_peering_bit/bottom_right_corner = 1
-15:6/0/terrains_peering_bit/bottom_side = 2
-15:6/0/terrains_peering_bit/bottom_left_corner = 2
-15:6/0/terrains_peering_bit/left_side = 2
-15:6/0/terrains_peering_bit/top_left_corner = 2
-15:6/0/terrains_peering_bit/top_side = 2
-15:6/0/terrains_peering_bit/top_right_corner = 2
-16:6/0 = 0
-16:6/0/terrain_set = 0
-16:6/0/terrain = 2
-16:6/0/terrains_peering_bit/right_side = 2
-16:6/0/terrains_peering_bit/bottom_right_corner = 1
-16:6/0/terrains_peering_bit/bottom_side = 1
-16:6/0/terrains_peering_bit/bottom_left_corner = 1
-16:6/0/terrains_peering_bit/left_side = 2
-16:6/0/terrains_peering_bit/top_left_corner = 2
-16:6/0/terrains_peering_bit/top_side = 2
-16:6/0/terrains_peering_bit/top_right_corner = 2
-17:6/0 = 0
-17:6/0/terrain_set = 0
-17:6/0/terrain = 2
-17:6/0/terrains_peering_bit/right_side = 2
-17:6/0/terrains_peering_bit/bottom_right_corner = 2
-17:6/0/terrains_peering_bit/bottom_side = 2
-17:6/0/terrains_peering_bit/bottom_left_corner = 1
-17:6/0/terrains_peering_bit/left_side = 2
-17:6/0/terrains_peering_bit/top_left_corner = 2
-17:6/0/terrains_peering_bit/top_side = 2
-17:6/0/terrains_peering_bit/top_right_corner = 2
-18:6/0 = 0
-18:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-19:6/0 = 0
-19:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-20:6/0 = 0
-20:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-21:6/0 = 0
-22:6/0 = 0
-23:6/0 = 0
-24:6/0 = 0
-25:6/0 = 0
-26:6/0 = 0
-27:6/0 = 0
-28:6/0 = 0
-29:6/0 = 0
-30:6/0 = 0
-31:6/0 = 0
-32:6/0 = 0
-33:6/0 = 0
-34:6/0 = 0
-35:6/0 = 0
-36:6/0 = 0
-37:6/0 = 0
-38:6/0 = 0
-39:6/0 = 0
-5:7/0 = 0
-6:7/0 = 0
-7:7/0 = 0
-8:7/0 = 0
-9:7/0 = 0
-10:7/0 = 0
-11:7/0 = 0
-12:7/0 = 0
-15:7/0 = 0
-15:7/0/terrain_set = 0
-15:7/0/terrain = 2
-15:7/0/terrains_peering_bit/right_side = 1
-15:7/0/terrains_peering_bit/bottom_right_corner = 1
-15:7/0/terrains_peering_bit/bottom_side = 2
-15:7/0/terrains_peering_bit/bottom_left_corner = 2
-15:7/0/terrains_peering_bit/left_side = 2
-15:7/0/terrains_peering_bit/top_left_corner = 2
-15:7/0/terrains_peering_bit/top_side = 2
-15:7/0/terrains_peering_bit/top_right_corner = 1
-17:7/0 = 0
-17:7/0/terrain_set = 0
-17:7/0/terrain = 2
-17:7/0/terrains_peering_bit/right_side = 2
-17:7/0/terrains_peering_bit/bottom_right_corner = 2
-17:7/0/terrains_peering_bit/bottom_side = 2
-17:7/0/terrains_peering_bit/bottom_left_corner = 1
-17:7/0/terrains_peering_bit/left_side = 1
-17:7/0/terrains_peering_bit/top_left_corner = 1
-17:7/0/terrains_peering_bit/top_side = 2
-17:7/0/terrains_peering_bit/top_right_corner = 2
-18:7/0 = 0
-18:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-19:7/0 = 0
-19:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-20:7/0 = 0
-20:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-26:7/0 = 0
-27:7/0 = 0
-28:7/0 = 0
-29:7/0 = 0
-30:7/0 = 0
-35:7/0 = 0
-36:7/0 = 0
-37:7/0 = 0
-38:7/0 = 0
-39:7/0 = 0
-0:8/0 = 0
-1:8/0 = 0
-5:8/0 = 0
-6:8/0 = 0
-7:8/0 = 0
-8:8/0 = 0
-9:8/0 = 0
-10:8/0 = 0
-11:8/0 = 0
-12:8/0 = 0
-13:8/0 = 0
-14:8/0 = 0
-15:8/0 = 0
-15:8/0/terrain_set = 0
-15:8/0/terrain = 2
-15:8/0/terrains_peering_bit/right_side = 2
-15:8/0/terrains_peering_bit/bottom_right_corner = 2
-15:8/0/terrains_peering_bit/bottom_side = 2
-15:8/0/terrains_peering_bit/bottom_left_corner = 2
-15:8/0/terrains_peering_bit/left_side = 2
-15:8/0/terrains_peering_bit/top_left_corner = 2
-15:8/0/terrains_peering_bit/top_side = 2
-15:8/0/terrains_peering_bit/top_right_corner = 1
-16:8/0 = 0
-16:8/0/terrain_set = 0
-16:8/0/terrain = 2
-16:8/0/terrains_peering_bit/right_side = 2
-16:8/0/terrains_peering_bit/bottom_right_corner = 2
-16:8/0/terrains_peering_bit/bottom_side = 2
-16:8/0/terrains_peering_bit/bottom_left_corner = 2
-16:8/0/terrains_peering_bit/left_side = 2
-16:8/0/terrains_peering_bit/top_left_corner = 1
-16:8/0/terrains_peering_bit/top_side = 1
-16:8/0/terrains_peering_bit/top_right_corner = 1
-17:8/0 = 0
-17:8/0/terrain_set = 0
-17:8/0/terrain = 2
-17:8/0/terrains_peering_bit/right_side = 2
-17:8/0/terrains_peering_bit/bottom_right_corner = 2
-17:8/0/terrains_peering_bit/bottom_side = 2
-17:8/0/terrains_peering_bit/bottom_left_corner = 2
-17:8/0/terrains_peering_bit/left_side = 2
-17:8/0/terrains_peering_bit/top_left_corner = 1
-17:8/0/terrains_peering_bit/top_side = 2
-17:8/0/terrains_peering_bit/top_right_corner = 2
-18:8/0 = 0
-18:8/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-19:8/0 = 0
-19:8/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-20:8/0 = 0
-20:8/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-26:8/0 = 0
-26:8/0/z_index = 1
-28:8/0 = 0
-28:8/0/z_index = 1
-29:8/0 = 0
-29:8/0/z_index = 1
-31:8/0 = 0
-32:8/0 = 0
-33:8/0 = 0
-35:8/0 = 0
-36:8/0 = 0
-37:8/0 = 0
-38:8/0 = 0
-39:8/0 = 0
-0:9/0 = 0
-0:9/0/terrain_set = 0
-0:9/0/terrain = 0
-0:9/0/terrains_peering_bit/right_side = 0
-0:9/0/terrains_peering_bit/bottom_side = 0
-0:9/0/terrains_peering_bit/bottom_left_corner = 0
-0:9/0/terrains_peering_bit/left_side = 0
-0:9/0/terrains_peering_bit/top_left_corner = 0
-0:9/0/terrains_peering_bit/top_side = 0
-0:9/0/terrains_peering_bit/top_right_corner = 0
-1:9/0 = 0
-1:9/0/terrain_set = 0
-1:9/0/terrain = 0
-1:9/0/terrains_peering_bit/right_side = 0
-1:9/0/terrains_peering_bit/bottom_right_corner = 0
-1:9/0/terrains_peering_bit/bottom_side = 0
-1:9/0/terrains_peering_bit/left_side = 0
-1:9/0/terrains_peering_bit/top_left_corner = 0
-1:9/0/terrains_peering_bit/top_side = 0
-1:9/0/terrains_peering_bit/top_right_corner = 0
-2:9/0 = 0
-2:9/0/terrain_set = 0
-2:9/0/terrain = 0
-2:9/0/terrains_peering_bit/right_side = 0
-2:9/0/terrains_peering_bit/bottom_right_corner = 0
-2:9/0/terrains_peering_bit/bottom_side = 0
-2:9/0/terrains_peering_bit/bottom_left_corner = 1
-2:9/0/terrains_peering_bit/left_side = 1
-2:9/0/terrains_peering_bit/top_left_corner = 1
-2:9/0/terrains_peering_bit/top_side = 1
-2:9/0/terrains_peering_bit/top_right_corner = 1
-3:9/0 = 0
-3:9/0/terrain_set = 0
-3:9/0/terrain = 0
-3:9/0/terrains_peering_bit/right_side = 1
-3:9/0/terrains_peering_bit/bottom_right_corner = 1
-3:9/0/terrains_peering_bit/bottom_side = 0
-3:9/0/terrains_peering_bit/bottom_left_corner = 0
-3:9/0/terrains_peering_bit/left_side = 0
-3:9/0/terrains_peering_bit/top_left_corner = 1
-3:9/0/terrains_peering_bit/top_side = 1
-3:9/0/terrains_peering_bit/top_right_corner = 1
-4:9/0 = 0
-5:9/0 = 0
-5:9/0/terrain_set = 0
-5:9/0/terrain = 0
-5:9/0/terrains_peering_bit/right_side = 0
-5:9/0/terrains_peering_bit/bottom_right_corner = 0
-5:9/0/terrains_peering_bit/bottom_side = 0
-5:9/0/terrains_peering_bit/bottom_left_corner = 0
-5:9/0/terrains_peering_bit/left_side = 0
-5:9/0/terrains_peering_bit/top_left_corner = 0
-5:9/0/terrains_peering_bit/top_side = 0
-5:9/0/terrains_peering_bit/top_right_corner = 0
-6:9/0 = 0
-7:9/0 = 0
-7:9/0/terrain_set = 0
-7:9/0/terrain = 0
-7:9/0/terrains_peering_bit/right_side = 0
-7:9/0/terrains_peering_bit/bottom_right_corner = 0
-7:9/0/terrains_peering_bit/bottom_side = 0
-7:9/0/terrains_peering_bit/bottom_left_corner = 0
-7:9/0/terrains_peering_bit/left_side = 0
-7:9/0/terrains_peering_bit/top_left_corner = 0
-7:9/0/terrains_peering_bit/top_side = 0
-7:9/0/terrains_peering_bit/top_right_corner = 0
-8:9/0 = 0
-8:9/0/terrain_set = 0
-8:9/0/terrain = 0
-8:9/0/terrains_peering_bit/right_side = 0
-8:9/0/terrains_peering_bit/bottom_right_corner = 0
-8:9/0/terrains_peering_bit/bottom_side = 0
-8:9/0/terrains_peering_bit/bottom_left_corner = 0
-8:9/0/terrains_peering_bit/left_side = 0
-8:9/0/terrains_peering_bit/top_left_corner = 0
-8:9/0/terrains_peering_bit/top_side = 0
-8:9/0/terrains_peering_bit/top_right_corner = 0
-10:9/0 = 0
-11:9/0 = 0
-12:9/0 = 0
-13:9/0 = 0
-14:9/0 = 0
-15:9/0 = 0
-15:9/0/terrain_set = 0
-15:9/0/terrain = 2
-15:9/0/terrains_peering_bit/right_side = 2
-15:9/0/terrains_peering_bit/bottom_right_corner = 2
-15:9/0/terrains_peering_bit/bottom_side = 2
-15:9/0/terrains_peering_bit/bottom_left_corner = 1
-15:9/0/terrains_peering_bit/left_side = 1
-15:9/0/terrains_peering_bit/top_left_corner = 1
-15:9/0/terrains_peering_bit/top_side = 1
-15:9/0/terrains_peering_bit/top_right_corner = 1
-16:9/0 = 0
-16:9/0/terrain_set = 0
-16:9/0/terrain = 2
-16:9/0/terrains_peering_bit/right_side = 1
-16:9/0/terrains_peering_bit/bottom_right_corner = 1
-16:9/0/terrains_peering_bit/bottom_side = 2
-16:9/0/terrains_peering_bit/bottom_left_corner = 2
-16:9/0/terrains_peering_bit/left_side = 2
-16:9/0/terrains_peering_bit/top_left_corner = 1
-16:9/0/terrains_peering_bit/top_side = 1
-16:9/0/terrains_peering_bit/top_right_corner = 1
-17:9/0 = 0
-18:9/0 = 0
-19:9/0 = 0
-32:9/0 = 0
-34:9/0 = 0
-35:9/0 = 0
-36:9/0 = 0
-37:9/0 = 0
-0:10/0 = 0
-0:10/0/terrain_set = 0
-0:10/0/terrain = 0
-0:10/0/terrains_peering_bit/right_side = 0
-0:10/0/terrains_peering_bit/bottom_right_corner = 0
-0:10/0/terrains_peering_bit/bottom_side = 0
-0:10/0/terrains_peering_bit/bottom_left_corner = 0
-0:10/0/terrains_peering_bit/left_side = 0
-0:10/0/terrains_peering_bit/top_left_corner = 0
-0:10/0/terrains_peering_bit/top_side = 0
-1:10/0 = 0
-1:10/0/terrain_set = 0
-1:10/0/terrain = 0
-1:10/0/terrains_peering_bit/right_side = 0
-1:10/0/terrains_peering_bit/bottom_right_corner = 0
-1:10/0/terrains_peering_bit/bottom_side = 0
-1:10/0/terrains_peering_bit/bottom_left_corner = 0
-1:10/0/terrains_peering_bit/left_side = 0
-1:10/0/terrains_peering_bit/top_side = 0
-1:10/0/terrains_peering_bit/top_right_corner = 0
-2:10/0 = 0
-2:10/0/terrain_set = 0
-2:10/0/terrain = 0
-2:10/0/terrains_peering_bit/right_side = 0
-2:10/0/terrains_peering_bit/bottom_right_corner = 1
-2:10/0/terrains_peering_bit/bottom_side = 1
-2:10/0/terrains_peering_bit/bottom_left_corner = 1
-2:10/0/terrains_peering_bit/left_side = 1
-2:10/0/terrains_peering_bit/top_left_corner = 1
-2:10/0/terrains_peering_bit/top_side = 0
-2:10/0/terrains_peering_bit/top_right_corner = 0
-3:10/0 = 0
-3:10/0/terrain_set = 0
-3:10/0/terrain = 0
-3:10/0/terrains_peering_bit/right_side = 1
-3:10/0/terrains_peering_bit/bottom_right_corner = 1
-3:10/0/terrains_peering_bit/bottom_side = 1
-3:10/0/terrains_peering_bit/bottom_left_corner = 1
-3:10/0/terrains_peering_bit/left_side = 0
-3:10/0/terrains_peering_bit/top_left_corner = 0
-3:10/0/terrains_peering_bit/top_side = 0
-3:10/0/terrains_peering_bit/top_right_corner = 1
-4:10/0 = 0
-5:10/0 = 0
-5:10/0/terrain_set = 0
-5:10/0/terrain = 0
-5:10/0/terrains_peering_bit/right_side = 0
-5:10/0/terrains_peering_bit/bottom_right_corner = 0
-5:10/0/terrains_peering_bit/bottom_side = 0
-5:10/0/terrains_peering_bit/bottom_left_corner = 0
-5:10/0/terrains_peering_bit/left_side = 0
-5:10/0/terrains_peering_bit/top_left_corner = 0
-5:10/0/terrains_peering_bit/top_side = 0
-5:10/0/terrains_peering_bit/top_right_corner = 0
-6:10/0 = 0
-7:10/0 = 0
-7:10/0/terrain_set = 0
-7:10/0/terrain = 0
-7:10/0/terrains_peering_bit/right_side = 0
-7:10/0/terrains_peering_bit/bottom_right_corner = 0
-7:10/0/terrains_peering_bit/bottom_side = 0
-7:10/0/terrains_peering_bit/bottom_left_corner = 0
-7:10/0/terrains_peering_bit/left_side = 0
-7:10/0/terrains_peering_bit/top_left_corner = 0
-7:10/0/terrains_peering_bit/top_side = 0
-7:10/0/terrains_peering_bit/top_right_corner = 0
-8:10/0 = 0
-8:10/0/terrain_set = 0
-8:10/0/terrain = 0
-8:10/0/terrains_peering_bit/right_side = 0
-8:10/0/terrains_peering_bit/bottom_right_corner = 0
-8:10/0/terrains_peering_bit/bottom_side = 0
-8:10/0/terrains_peering_bit/bottom_left_corner = 0
-8:10/0/terrains_peering_bit/left_side = 0
-8:10/0/terrains_peering_bit/top_left_corner = 0
-8:10/0/terrains_peering_bit/top_side = 0
-8:10/0/terrains_peering_bit/top_right_corner = 0
-9:10/0 = 0
-10:10/0 = 0
-11:10/0 = 0
-12:10/0 = 0
-13:10/0 = 0
-14:10/0 = 0
-15:10/0 = 0
-15:10/0/terrain_set = 0
-15:10/0/terrain = 2
-15:10/0/terrains_peering_bit/right_side = 2
-15:10/0/terrains_peering_bit/bottom_right_corner = 1
-15:10/0/terrains_peering_bit/bottom_side = 1
-15:10/0/terrains_peering_bit/bottom_left_corner = 1
-15:10/0/terrains_peering_bit/left_side = 1
-15:10/0/terrains_peering_bit/top_left_corner = 1
-15:10/0/terrains_peering_bit/top_side = 2
-15:10/0/terrains_peering_bit/top_right_corner = 2
-16:10/0 = 0
-16:10/0/terrain_set = 0
-16:10/0/terrain = 2
-16:10/0/terrains_peering_bit/right_side = 1
-16:10/0/terrains_peering_bit/bottom_right_corner = 1
-16:10/0/terrains_peering_bit/bottom_side = 1
-16:10/0/terrains_peering_bit/bottom_left_corner = 1
-16:10/0/terrains_peering_bit/left_side = 2
-16:10/0/terrains_peering_bit/top_left_corner = 2
-16:10/0/terrains_peering_bit/top_side = 2
-16:10/0/terrains_peering_bit/top_right_corner = 1
-17:10/0 = 0
-18:10/0 = 0
-19:10/0 = 0
-32:10/0 = 0
-33:10/0 = 0
-34:10/0 = 0
-35:10/0 = 0
-36:10/0 = 0
-37:10/0 = 0
-0:11/0 = 0
-0:11/0/terrain_set = 0
-0:11/0/terrain = 0
-0:11/0/terrains_peering_bit/right_side = 0
-0:11/0/terrains_peering_bit/bottom_right_corner = 0
-0:11/0/terrains_peering_bit/bottom_side = 0
-1:11/0 = 0
-1:11/0/terrain_set = 0
-1:11/0/terrain = 0
-1:11/0/terrains_peering_bit/right_side = 0
-1:11/0/terrains_peering_bit/bottom_right_corner = 0
-1:11/0/terrains_peering_bit/bottom_side = 0
-1:11/0/terrains_peering_bit/bottom_left_corner = 0
-1:11/0/terrains_peering_bit/left_side = 0
-2:11/0 = 0
-2:11/0/terrain_set = 0
-2:11/0/terrain = 0
-2:11/0/terrains_peering_bit/bottom_side = 0
-2:11/0/terrains_peering_bit/bottom_left_corner = 0
-2:11/0/terrains_peering_bit/left_side = 0
-3:11/0 = 0
-4:11/0 = 0
-5:11/0 = 0
-6:11/0 = 0
-7:11/0 = 0
-8:11/0 = 0
-9:11/0 = 0
-10:11/0 = 0
-11:11/0 = 0
-12:11/0 = 0
-13:11/0 = 0
-14:11/0 = 0
-15:11/0 = 0
-16:11/0 = 0
-17:11/0 = 0
-18:11/0 = 0
-19:11/0 = 0
-20:11/0 = 0
-32:11/0 = 0
-34:11/0 = 0
-35:11/0 = 0
-36:11/0 = 0
-37:11/0 = 0
-0:12/0 = 0
-1:12/0 = 0
-2:12/0 = 0
-3:12/0 = 0
-4:12/0 = 0
-5:12/0 = 0
-6:12/0 = 0
-7:12/0 = 0
-9:12/0 = 0
-10:12/0 = 0
-11:12/0 = 0
-12:12/0 = 0
-13:12/0 = 0
-14:12/0 = 0
-15:12/0 = 0
-16:12/0 = 0
-17:12/0 = 0
-18:12/0 = 0
-19:12/0 = 0
-20:12/0 = 0
-22:12/0 = 0
-23:12/0 = 0
-25:12/0 = 0
-26:12/0 = 0
-27:12/0 = 0
-30:12/0 = 0
-32:12/0 = 0
-34:12/0 = 0
-35:12/0 = 0
-36:12/0 = 0
-37:12/0 = 0
-0:13/0 = 0
-1:13/0 = 0
-2:13/0 = 0
-3:13/0 = 0
-4:13/0 = 0
-5:13/0 = 0
-6:13/0 = 0
-7:13/0 = 0
-8:13/0 = 0
-8:13/0/terrain_set = 0
-8:13/0/terrain = 0
-8:13/0/terrains_peering_bit/right_side = 0
-8:13/0/terrains_peering_bit/bottom_right_corner = 0
-8:13/0/terrains_peering_bit/bottom_side = 0
-8:13/0/terrains_peering_bit/bottom_left_corner = 1
-8:13/0/terrains_peering_bit/left_side = 1
-8:13/0/terrains_peering_bit/top_left_corner = 1
-8:13/0/terrains_peering_bit/top_side = 2
-8:13/0/terrains_peering_bit/top_right_corner = 2
-9:13/0 = 0
-9:13/0/terrain_set = 0
-9:13/0/terrain = 0
-9:13/0/terrains_peering_bit/right_side = 1
-9:13/0/terrains_peering_bit/bottom_right_corner = 1
-9:13/0/terrains_peering_bit/bottom_side = 0
-9:13/0/terrains_peering_bit/bottom_left_corner = 0
-9:13/0/terrains_peering_bit/left_side = 0
-9:13/0/terrains_peering_bit/top_left_corner = 2
-9:13/0/terrains_peering_bit/top_side = 2
-9:13/0/terrains_peering_bit/top_right_corner = 1
-10:13/0 = 0
-10:13/0/terrain_set = 0
-10:13/0/terrain = 0
-10:13/0/terrains_peering_bit/right_side = 0
-10:13/0/terrains_peering_bit/bottom_right_corner = 0
-10:13/0/terrains_peering_bit/bottom_side = 0
-10:13/0/terrains_peering_bit/bottom_left_corner = 2
-10:13/0/terrains_peering_bit/left_side = 2
-10:13/0/terrains_peering_bit/top_left_corner = 1
-10:13/0/terrains_peering_bit/top_side = 1
-10:13/0/terrains_peering_bit/top_right_corner = 1
-11:13/0 = 0
-11:13/0/terrain_set = 0
-11:13/0/terrain = 0
-11:13/0/terrains_peering_bit/right_side = 2
-11:13/0/terrains_peering_bit/bottom_right_corner = 2
-11:13/0/terrains_peering_bit/bottom_side = 0
-11:13/0/terrains_peering_bit/bottom_left_corner = 0
-11:13/0/terrains_peering_bit/left_side = 0
-11:13/0/terrains_peering_bit/top_left_corner = 1
-11:13/0/terrains_peering_bit/top_side = 1
-11:13/0/terrains_peering_bit/top_right_corner = 1
-12:13/0 = 0
-13:13/0 = 0
-14:13/0 = 0
-15:13/0 = 0
-16:13/0 = 0
-17:13/0 = 0
-18:13/0 = 0
-19:13/0 = 0
-20:13/0 = 0
-23:13/0 = 0
-24:13/0 = 0
-25:13/0 = 0
-26:13/0 = 0
-27:13/0 = 0
-28:13/0 = 0
-29:13/0 = 0
-30:13/0 = 0
-32:13/0 = 0
-34:13/0 = 0
-35:13/0 = 0
-36:13/0 = 0
-0:14/0 = 0
-1:14/0 = 0
-2:14/0 = 0
-3:14/0 = 0
-4:14/0 = 0
-5:14/0 = 0
-6:14/0 = 0
-7:14/0 = 0
-8:14/0 = 0
-8:14/0/terrain_set = 0
-8:14/0/terrain = 0
-8:14/0/terrains_peering_bit/right_side = 0
-8:14/0/terrains_peering_bit/bottom_right_corner = 2
-8:14/0/terrains_peering_bit/bottom_side = 2
-8:14/0/terrains_peering_bit/bottom_left_corner = 1
-8:14/0/terrains_peering_bit/left_side = 1
-8:14/0/terrains_peering_bit/top_left_corner = 1
-8:14/0/terrains_peering_bit/top_side = 0
-8:14/0/terrains_peering_bit/top_right_corner = 0
-9:14/0 = 0
-9:14/0/terrain_set = 0
-9:14/0/terrain = 0
-9:14/0/terrains_peering_bit/right_side = 1
-9:14/0/terrains_peering_bit/bottom_right_corner = 1
-9:14/0/terrains_peering_bit/bottom_side = 2
-9:14/0/terrains_peering_bit/bottom_left_corner = 2
-9:14/0/terrains_peering_bit/left_side = 0
-9:14/0/terrains_peering_bit/top_left_corner = 0
-9:14/0/terrains_peering_bit/top_side = 0
-9:14/0/terrains_peering_bit/top_right_corner = 1
-10:14/0 = 0
-10:14/0/terrain_set = 0
-10:14/0/terrain = 0
-10:14/0/terrains_peering_bit/right_side = 0
-10:14/0/terrains_peering_bit/bottom_right_corner = 1
-10:14/0/terrains_peering_bit/bottom_side = 1
-10:14/0/terrains_peering_bit/bottom_left_corner = 1
-10:14/0/terrains_peering_bit/left_side = 2
-10:14/0/terrains_peering_bit/top_left_corner = 2
-10:14/0/terrains_peering_bit/top_side = 0
-10:14/0/terrains_peering_bit/top_right_corner = 0
-11:14/0 = 0
-11:14/0/terrain_set = 0
-11:14/0/terrain = 0
-11:14/0/terrains_peering_bit/right_side = 2
-11:14/0/terrains_peering_bit/bottom_right_corner = 1
-11:14/0/terrains_peering_bit/bottom_side = 1
-11:14/0/terrains_peering_bit/bottom_left_corner = 1
-11:14/0/terrains_peering_bit/left_side = 0
-11:14/0/terrains_peering_bit/top_left_corner = 0
-11:14/0/terrains_peering_bit/top_side = 0
-11:14/0/terrains_peering_bit/top_right_corner = 2
-12:14/0 = 0
-13:14/0 = 0
-14:14/0 = 0
-15:14/0 = 0
-16:14/0 = 0
-18:14/0 = 0
-19:14/0 = 0
-20:14/0 = 0
-21:14/0 = 0
-22:14/0 = 0
-23:14/0 = 0
-24:14/0 = 0
-25:14/0 = 0
-26:14/0 = 0
-27:14/0 = 0
-28:14/0 = 0
-29:14/0 = 0
-30:14/0 = 0
-32:14/0 = 0
-34:14/0 = 0
-35:14/0 = 0
-36:14/0 = 0
-0:15/0 = 0
-1:15/0 = 0
-2:15/0 = 0
-3:15/0 = 0
-4:15/0 = 0
-5:15/0 = 0
-6:15/0 = 0
-7:15/0 = 0
-8:15/0 = 0
-9:15/0 = 0
-11:15/0 = 0
-12:15/0 = 0
-13:15/0 = 0
-14:15/0 = 0
-15:15/0 = 0
-16:15/0 = 0
-17:15/0 = 0
-18:15/0 = 0
-23:15/0 = 0
-24:15/0 = 0
-25:15/0 = 0
-26:15/0 = 0
-27:15/0 = 0
-28:15/0 = 0
-29:15/0 = 0
-0:16/0 = 0
-1:16/0 = 0
-2:16/0 = 0
-3:16/0 = 0
-4:16/0 = 0
-5:16/0 = 0
-6:16/0 = 0
-7:16/0 = 0
-11:16/0 = 0
-12:16/0 = 0
-13:16/0 = 0
-14:16/0 = 0
-17:16/0 = 0
-18:16/0 = 0
-23:16/0 = 0
-24:16/0 = 0
-28:16/0 = 0
-29:16/0 = 0
-33:16/0 = 0
-0:17/0 = 0
-2:17/0 = 0
-3:17/0 = 0
-4:17/0 = 0
-5:17/0 = 0
-6:17/0 = 0
-7:17/0 = 0
-9:17/0 = 0
-10:17/0 = 0
-11:17/0 = 0
-12:17/0 = 0
-13:17/0 = 0
-14:17/0 = 0
-15:17/0 = 0
-16:17/0 = 0
-19:17/0 = 0
-20:17/0 = 0
-21:17/0 = 0
-22:17/0 = 0
-23:17/0 = 0
-24:17/0 = 0
-25:17/0 = 0
-27:17/0 = 0
-28:17/0 = 0
-29:17/0 = 0
-30:17/0 = 0
-31:17/0 = 0
-32:17/0 = 0
-33:17/0 = 0
-34:17/0 = 0
-35:17/0 = 0
-36:17/0 = 0
-37:17/0 = 0
-38:17/0 = 0
-39:17/0 = 0
-0:18/0 = 0
-2:18/0 = 0
-3:18/0 = 0
-4:18/0 = 0
-5:18/0 = 0
-6:18/0 = 0
-7:18/0 = 0
-8:18/0 = 0
-9:18/0 = 0
-10:18/0 = 0
-11:18/0 = 0
-12:18/0 = 0
-13:18/0 = 0
-14:18/0 = 0
-15:18/0 = 0
-16:18/0 = 0
-17:18/0 = 0
-18:18/0 = 0
-19:18/0 = 0
-20:18/0 = 0
-21:18/0 = 0
-22:18/0 = 0
-23:18/0 = 0
-24:18/0 = 0
-25:18/0 = 0
-27:18/0 = 0
-28:18/0 = 0
-29:18/0 = 0
-30:18/0 = 0
-31:18/0 = 0
-32:18/0 = 0
-33:18/0 = 0
-34:18/0 = 0
-35:18/0 = 0
-36:18/0 = 0
-37:18/0 = 0
-38:18/0 = 0
-39:18/0 = 0
-0:19/0 = 0
-1:19/0 = 0
-3:19/0 = 0
-4:19/0 = 0
-5:19/0 = 0
-6:19/0 = 0
-7:19/0 = 0
-8:19/0 = 0
-9:19/0 = 0
-10:19/0 = 0
-11:19/0 = 0
-12:19/0 = 0
-13:19/0 = 0
-14:19/0 = 0
-15:19/0 = 0
-16:19/0 = 0
-17:19/0 = 0
-18:19/0 = 0
-19:19/0 = 0
-20:19/0 = 0
-21:19/0 = 0
-22:19/0 = 0
-23:19/0 = 0
-24:19/0 = 0
-27:19/0 = 0
-28:19/0 = 0
-29:19/0 = 0
-30:19/0 = 0
-31:19/0 = 0
-32:19/0 = 0
-33:19/0 = 0
-34:19/0 = 0
-35:19/0 = 0
-36:19/0 = 0
-37:19/0 = 0
-38:19/0 = 0
-39:19/0 = 0
-0:20/0 = 0
-1:20/0 = 0
-2:20/0 = 0
-3:20/0 = 0
-4:20/0 = 0
-5:20/0 = 0
-6:20/0 = 0
-7:20/0 = 0
-9:20/0 = 0
-10:20/0 = 0
-11:20/0 = 0
-12:20/0 = 0
-13:20/0 = 0
-14:20/0 = 0
-15:20/0 = 0
-16:20/0 = 0
-17:20/0 = 0
-18:20/0 = 0
-19:20/0 = 0
-20:20/0 = 0
-21:20/0 = 0
-22:20/0 = 0
-23:20/0 = 0
-24:20/0 = 0
-25:20/0 = 0
-26:20/0 = 0
-27:20/0 = 0
-28:20/0 = 0
-29:20/0 = 0
-0:21/0 = 0
-1:21/0 = 0
-2:21/0 = 0
-3:21/0 = 0
-4:21/0 = 0
-5:21/0 = 0
-6:21/0 = 0
-7:21/0 = 0
-9:21/0 = 0
-10:21/0 = 0
-11:21/0 = 0
-12:21/0 = 0
-13:21/0 = 0
-14:21/0 = 0
-15:21/0 = 0
-16:21/0 = 0
-17:21/0 = 0
-18:21/0 = 0
-19:21/0 = 0
-20:21/0 = 0
-21:21/0 = 0
-22:21/0 = 0
-23:21/0 = 0
-24:21/0 = 0
-25:21/0 = 0
-26:21/0 = 0
-27:21/0 = 0
-28:21/0 = 0
-29:21/0 = 0
-0:22/0 = 0
-1:22/0 = 0
-2:22/0 = 0
-3:22/0 = 0
-4:22/0 = 0
-5:22/0 = 0
-6:22/0 = 0
-7:22/0 = 0
-8:22/0 = 0
-9:22/0 = 0
-10:22/0 = 0
-11:22/0 = 0
-12:22/0 = 0
-13:22/0 = 0
-15:22/0 = 0
-16:22/0 = 0
-17:22/0 = 0
-18:22/0 = 0
-19:22/0 = 0
-20:22/0 = 0
-21:22/0 = 0
-22:22/0 = 0
-23:22/0 = 0
-24:22/0 = 0
-25:22/0 = 0
-26:22/0 = 0
-28:22/0 = 0
-29:22/0 = 0
-0:23/0 = 0
-1:23/0 = 0
-2:23/0 = 0
-3:23/0 = 0
-4:23/0 = 0
-5:23/0 = 0
-6:23/0 = 0
-7:23/0 = 0
-8:23/0 = 0
-9:23/0 = 0
-10:23/0 = 0
-11:23/0 = 0
-12:23/0 = 0
-13:23/0 = 0
-15:23/0 = 0
-16:23/0 = 0
-18:23/0 = 0
-19:23/0 = 0
-20:23/0 = 0
-21:23/0 = 0
-22:23/0 = 0
-23:23/0 = 0
-24:23/0 = 0
-25:23/0 = 0
-26:23/0 = 0
-27:23/0 = 0
-28:23/0 = 0
-29:23/0 = 0
-0:24/0 = 0
-1:24/0 = 0
-2:24/0 = 0
-3:24/0 = 0
-4:24/0 = 0
-5:24/0 = 0
-8:24/0 = 0
-9:24/0 = 0
-10:24/0 = 0
-12:24/0 = 0
-13:24/0 = 0
-15:24/0 = 0
-16:24/0 = 0
-18:24/0 = 0
-19:24/0 = 0
-20:24/0 = 0
-21:24/0 = 0
-22:24/0 = 0
-25:24/0 = 0
-26:24/0 = 0
-27:24/0 = 0
-28:24/0 = 0
-29:24/0 = 0
-0:25/0 = 0
-1:25/0 = 0
-2:25/0 = 0
-3:25/0 = 0
-4:25/0 = 0
-5:25/0 = 0
-8:25/0 = 0
-9:25/0 = 0
-10:25/0 = 0
-11:25/0 = 0
-12:25/0 = 0
-13:25/0 = 0
-14:25/0 = 0
-15:25/0 = 0
-16:25/0 = 0
-17:25/0 = 0
-18:25/0 = 0
-19:25/0 = 0
-20:25/0 = 0
-21:25/0 = 0
-22:25/0 = 0
-25:25/0 = 0
-26:25/0 = 0
-27:25/0 = 0
-28:25/0 = 0
-29:25/0 = 0
-0:26/0 = 0
-1:26/0 = 0
-2:26/0 = 0
-3:26/0 = 0
-4:26/0 = 0
-5:26/0 = 0
-6:26/0 = 0
-7:26/0 = 0
-8:26/0 = 0
-9:26/0 = 0
-11:26/0 = 0
-12:26/0 = 0
-13:26/0 = 0
-14:26/0 = 0
-15:26/0 = 0
-16:26/0 = 0
-17:26/0 = 0
-18:26/0 = 0
-19:26/0 = 0
-20:26/0 = 0
-21:26/0 = 0
-22:26/0 = 0
-25:26/0 = 0
-26:26/0 = 0
-27:26/0 = 0
-28:26/0 = 0
-29:26/0 = 0
-0:27/0 = 0
-1:27/0 = 0
-2:27/0 = 0
-3:27/0 = 0
-4:27/0 = 0
-5:27/0 = 0
-6:27/0 = 0
-7:27/0 = 0
-8:27/0 = 0
-9:27/0 = 0
-10:27/0 = 0
-11:27/0 = 0
-12:27/0 = 0
-13:27/0 = 0
-14:27/0 = 0
-15:27/0 = 0
-16:27/0 = 0
-17:27/0 = 0
-18:27/0 = 0
-19:27/0 = 0
-20:27/0 = 0
-21:27/0 = 0
-22:27/0 = 0
-25:27/0 = 0
-26:27/0 = 0
-27:27/0 = 0
-28:27/0 = 0
-29:27/0 = 0
-0:28/0 = 0
-1:28/0 = 0
-2:28/0 = 0
-3:28/0 = 0
-4:28/0 = 0
-5:28/0 = 0
-6:28/0 = 0
-7:28/0 = 0
-8:28/0 = 0
-9:28/0 = 0
-10:28/0 = 0
-11:28/0 = 0
-12:28/0 = 0
-13:28/0 = 0
-14:28/0 = 0
-15:28/0 = 0
-16:28/0 = 0
-17:28/0 = 0
-19:28/0 = 0
-20:28/0 = 0
-21:28/0 = 0
-22:28/0 = 0
-23:28/0 = 0
-25:28/0 = 0
-26:28/0 = 0
-28:28/0 = 0
-29:28/0 = 0
-0:29/0 = 0
-1:29/0 = 0
-2:29/0 = 0
-3:29/0 = 0
-4:29/0 = 0
-5:29/0 = 0
-6:29/0 = 0
-7:29/0 = 0
-8:29/0 = 0
-9:29/0 = 0
-10:29/0 = 0
-11:29/0 = 0
-12:29/0 = 0
-14:29/0 = 0
-15:29/0 = 0
-16:29/0 = 0
-17:29/0 = 0
-18:29/0 = 0
-19:29/0 = 0
-20:29/0 = 0
-21:29/0 = 0
-22:29/0 = 0
-23:29/0 = 0
-0:30/0 = 0
-1:30/0 = 0
-2:30/0 = 0
-3:30/0 = 0
-4:30/0 = 0
-5:30/0 = 0
-6:30/0 = 0
-7:30/0 = 0
-8:30/0 = 0
-9:30/0 = 0
-10:30/0 = 0
-11:30/0 = 0
-12:30/0 = 0
-14:30/0 = 0
-15:30/0 = 0
-16:30/0 = 0
-17:30/0 = 0
-18:30/0 = 0
-19:30/0 = 0
-20:30/0 = 0
-21:30/0 = 0
-22:30/0 = 0
-23:30/0 = 0
-0:31/0 = 0
-1:31/0 = 0
-2:31/0 = 0
-3:31/0 = 0
-4:31/0 = 0
-5:31/0 = 0
-6:31/0 = 0
-7:31/0 = 0
-8:31/0 = 0
-9:31/0 = 0
-10:31/0 = 0
-11:31/0 = 0
-12:31/0 = 0
-13:31/0 = 0
-14:31/0 = 0
-15:31/0 = 0
-16:31/0 = 0
-19:31/0 = 0
-20:31/0 = 0
-21:31/0 = 0
-22:31/0 = 0
-23:31/0 = 0
-24:31/0 = 0
-25:31/0 = 0
-26:31/0 = 0
-27:31/0 = 0
-0:32/0 = 0
-1:32/0 = 0
-2:32/0 = 0
-3:32/0 = 0
-4:32/0 = 0
-5:32/0 = 0
-6:32/0 = 0
-7:32/0 = 0
-8:32/0 = 0
-9:32/0 = 0
-10:32/0 = 0
-11:32/0 = 0
-12:32/0 = 0
-13:32/0 = 0
-14:32/0 = 0
-15:32/0 = 0
-16:32/0 = 0
-17:32/0 = 0
-18:32/0 = 0
-19:32/0 = 0
-20:32/0 = 0
-21:32/0 = 0
-22:32/0 = 0
-23:32/0 = 0
-24:32/0 = 0
-27:32/0 = 0
-0:33/0 = 0
-1:33/0 = 0
-4:33/0 = 0
-5:33/0 = 0
-6:33/0 = 0
-7:33/0 = 0
-8:33/0 = 0
-9:33/0 = 0
-10:33/0 = 0
-11:33/0 = 0
-12:33/0 = 0
-13:33/0 = 0
-14:33/0 = 0
-15:33/0 = 0
-16:33/0 = 0
-17:33/0 = 0
-18:33/0 = 0
-24:33/0 = 0
-25:33/0 = 0
-26:33/0 = 0
-27:33/0 = 0
-0:34/0 = 0
-1:34/0 = 0
-4:34/0 = 0
-5:34/0 = 0
-6:34/0 = 0
-7:34/0 = 0
-0:35/0 = 0
-1:35/0 = 0
-6:0/size_in_atlas = Vector2i(5, 5)
-6:0/0 = 0
-6:0/0/z_index = 1
-6:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -24, 32, -24, 32, 12, 32, 24, -32, 24, -32, 12)
-4:1/size_in_atlas = Vector2i(2, 2)
-4:1/0 = 0
-4:1/0/z_index = 1
-16:0/size_in_atlas = Vector2i(2, 2)
-16:0/0 = 0
-16:2/size_in_atlas = Vector2i(2, 2)
-16:2/0 = 0
-18:2/size_in_atlas = Vector2i(2, 2)
-18:2/0 = 0
-18:0/size_in_atlas = Vector2i(2, 2)
-18:0/0 = 0
-20:0/size_in_atlas = Vector2i(2, 2)
-20:0/0 = 0
-20:2/size_in_atlas = Vector2i(2, 2)
-20:2/0 = 0
-22:0/size_in_atlas = Vector2i(3, 6)
-22:0/0 = 0
-3:5/size_in_atlas = Vector2i(3, 1)
-3:5/0 = 0
-11:5/size_in_atlas = Vector2i(2, 2)
-11:5/0 = 0
-13:5/size_in_atlas = Vector2i(2, 3)
-13:5/0 = 0
-13:5/0/z_index = 1
-22:9/size_in_atlas = Vector2i(3, 3)
-22:9/0 = 0
-22:9/0/z_index = 1
-25:9/size_in_atlas = Vector2i(3, 3)
-25:9/0 = 0
-25:9/0/z_index = 1
-28:9/size_in_atlas = Vector2i(3, 3)
-28:9/0 = 0
-28:9/0/z_index = 1
-27:8/0 = 0
-27:8/0/z_index = 1
-21:7/size_in_atlas = Vector2i(1, 2)
-21:7/0 = 0
-21:7/0/z_index = 1
-22:7/0 = 0
-22:7/0/z_index = 1
-22:8/0 = 0
-22:8/0/z_index = 1
-23:7/size_in_atlas = Vector2i(1, 2)
-23:7/0 = 0
-23:7/0/z_index = 1
-24:7/size_in_atlas = Vector2i(1, 2)
-24:7/0 = 0
-24:7/0/z_index = 1
-0:3/0 = 0
-0:3/0/terrain_set = 0
-0:3/0/terrain = 0
-0:3/0/terrains_peering_bit/right_side = 0
-0:3/0/terrains_peering_bit/bottom_right_corner = 2
-0:3/0/terrains_peering_bit/bottom_side = 0
-0:3/0/terrains_peering_bit/bottom_left_corner = 0
-0:3/0/terrains_peering_bit/left_side = 0
-0:3/0/terrains_peering_bit/top_left_corner = 0
-0:3/0/terrains_peering_bit/top_side = 0
-0:3/0/terrains_peering_bit/top_right_corner = 0
-1:3/0 = 0
-1:3/0/terrain_set = 0
-1:3/0/terrain = 0
-1:3/0/terrains_peering_bit/right_side = 0
-1:3/0/terrains_peering_bit/bottom_right_corner = 2
-1:3/0/terrains_peering_bit/bottom_side = 2
-1:3/0/terrains_peering_bit/bottom_left_corner = 2
-1:3/0/terrains_peering_bit/left_side = 0
-1:3/0/terrains_peering_bit/top_left_corner = 0
-1:3/0/terrains_peering_bit/top_side = 0
-1:3/0/terrains_peering_bit/top_right_corner = 0
-2:3/0 = 0
-2:3/0/terrain_set = 0
-2:3/0/terrain = 0
-2:3/0/terrains_peering_bit/right_side = 0
-2:3/0/terrains_peering_bit/bottom_right_corner = 0
-2:3/0/terrains_peering_bit/bottom_side = 0
-2:3/0/terrains_peering_bit/bottom_left_corner = 2
-2:3/0/terrains_peering_bit/left_side = 0
-2:3/0/terrains_peering_bit/top_left_corner = 0
-2:3/0/terrains_peering_bit/top_side = 0
-2:3/0/terrains_peering_bit/top_right_corner = 0
-2:4/0 = 0
-2:4/0/terrain_set = 0
-2:4/0/terrain = 0
-2:4/0/terrains_peering_bit/right_side = 0
-2:4/0/terrains_peering_bit/bottom_right_corner = 0
-2:4/0/terrains_peering_bit/bottom_side = 0
-2:4/0/terrains_peering_bit/bottom_left_corner = 2
-2:4/0/terrains_peering_bit/left_side = 2
-2:4/0/terrains_peering_bit/top_left_corner = 2
-2:4/0/terrains_peering_bit/top_side = 0
-2:4/0/terrains_peering_bit/top_right_corner = 0
-2:5/0 = 0
-2:5/0/terrain_set = 0
-2:5/0/terrain = 0
-2:5/0/terrains_peering_bit/right_side = 0
-2:5/0/terrains_peering_bit/bottom_right_corner = 0
-2:5/0/terrains_peering_bit/bottom_side = 0
-2:5/0/terrains_peering_bit/bottom_left_corner = 0
-2:5/0/terrains_peering_bit/left_side = 0
-2:5/0/terrains_peering_bit/top_left_corner = 2
-2:5/0/terrains_peering_bit/top_side = 0
-2:5/0/terrains_peering_bit/top_right_corner = 0
-1:5/0 = 0
-1:5/0/terrain_set = 0
-1:5/0/terrain = 0
-1:5/0/terrains_peering_bit/right_side = 0
-1:5/0/terrains_peering_bit/bottom_right_corner = 0
-1:5/0/terrains_peering_bit/bottom_side = 0
-1:5/0/terrains_peering_bit/bottom_left_corner = 0
-1:5/0/terrains_peering_bit/left_side = 0
-1:5/0/terrains_peering_bit/top_left_corner = 2
-1:5/0/terrains_peering_bit/top_side = 2
-1:5/0/terrains_peering_bit/top_right_corner = 2
-1:4/0 = 0
-1:4/0/terrain_set = 0
-1:4/0/terrain = 2
-1:4/0/terrains_peering_bit/right_side = 2
-1:4/0/terrains_peering_bit/bottom_right_corner = 2
-1:4/0/terrains_peering_bit/bottom_side = 2
-1:4/0/terrains_peering_bit/bottom_left_corner = 2
-1:4/0/terrains_peering_bit/left_side = 2
-1:4/0/terrains_peering_bit/top_left_corner = 2
-1:4/0/terrains_peering_bit/top_side = 2
-1:4/0/terrains_peering_bit/top_right_corner = 2
-0:4/0 = 0
-0:4/0/terrain_set = 0
-0:4/0/terrain = 0
-0:4/0/terrains_peering_bit/right_side = 2
-0:4/0/terrains_peering_bit/bottom_right_corner = 2
-0:4/0/terrains_peering_bit/bottom_side = 0
-0:4/0/terrains_peering_bit/bottom_left_corner = 0
-0:4/0/terrains_peering_bit/left_side = 0
-0:4/0/terrains_peering_bit/top_left_corner = 0
-0:4/0/terrains_peering_bit/top_side = 0
-0:4/0/terrains_peering_bit/top_right_corner = 2
-0:5/0 = 0
-0:5/0/terrain_set = 0
-0:5/0/terrain = 0
-0:5/0/terrains_peering_bit/right_side = 0
-0:5/0/terrains_peering_bit/bottom_right_corner = 0
-0:5/0/terrains_peering_bit/bottom_side = 0
-0:5/0/terrains_peering_bit/bottom_left_corner = 0
-0:5/0/terrains_peering_bit/left_side = 0
-0:5/0/terrains_peering_bit/top_left_corner = 0
-0:5/0/terrains_peering_bit/top_side = 0
-0:5/0/terrains_peering_bit/top_right_corner = 2
-1:6/0 = 0
-1:6/0/terrain_set = 0
-1:6/0/terrain = 0
-1:6/0/terrains_peering_bit/right_side = 2
-1:6/0/terrains_peering_bit/bottom_right_corner = 2
-1:6/0/terrains_peering_bit/bottom_side = 0
-1:6/0/terrains_peering_bit/bottom_left_corner = 0
-1:6/0/terrains_peering_bit/left_side = 0
-1:6/0/terrains_peering_bit/top_left_corner = 2
-1:6/0/terrains_peering_bit/top_side = 2
-1:6/0/terrains_peering_bit/top_right_corner = 2
-0:6/0 = 0
-0:6/0/terrain_set = 0
-0:6/0/terrain = 0
-0:6/0/terrains_peering_bit/right_side = 0
-0:6/0/terrains_peering_bit/bottom_right_corner = 0
-0:6/0/terrains_peering_bit/bottom_side = 0
-0:6/0/terrains_peering_bit/bottom_left_corner = 2
-0:6/0/terrains_peering_bit/left_side = 2
-0:6/0/terrains_peering_bit/top_left_corner = 2
-0:6/0/terrains_peering_bit/top_side = 2
-0:6/0/terrains_peering_bit/top_right_corner = 2
-0:7/0 = 0
-0:7/0/terrain_set = 0
-0:7/0/terrain = 0
-0:7/0/terrains_peering_bit/right_side = 0
-0:7/0/terrains_peering_bit/bottom_right_corner = 2
-0:7/0/terrains_peering_bit/bottom_side = 2
-0:7/0/terrains_peering_bit/bottom_left_corner = 2
-0:7/0/terrains_peering_bit/left_side = 2
-0:7/0/terrains_peering_bit/top_left_corner = 2
-0:7/0/terrains_peering_bit/top_side = 0
-0:7/0/terrains_peering_bit/top_right_corner = 0
-1:7/0 = 0
-1:7/0/terrain_set = 0
-1:7/0/terrain = 0
-1:7/0/terrains_peering_bit/right_side = 2
-1:7/0/terrains_peering_bit/bottom_right_corner = 2
-1:7/0/terrains_peering_bit/bottom_side = 2
-1:7/0/terrains_peering_bit/bottom_left_corner = 2
-1:7/0/terrains_peering_bit/left_side = 0
-1:7/0/terrains_peering_bit/top_left_corner = 0
-1:7/0/terrains_peering_bit/top_side = 0
-1:7/0/terrains_peering_bit/top_right_corner = 2
-2:6/0 = 0
-2:6/0/terrain_set = 0
-2:6/0/terrain = 0
-2:6/0/terrains_peering_bit/right_side = 0
-2:6/0/terrains_peering_bit/bottom_right_corner = 1
-2:6/0/terrains_peering_bit/bottom_side = 0
-2:6/0/terrains_peering_bit/bottom_left_corner = 0
-2:6/0/terrains_peering_bit/left_side = 0
-2:6/0/terrains_peering_bit/top_left_corner = 0
-2:6/0/terrains_peering_bit/top_side = 0
-2:6/0/terrains_peering_bit/top_right_corner = 0
-3:6/0 = 0
-3:6/0/terrain_set = 0
-3:6/0/terrain = 0
-3:6/0/terrains_peering_bit/right_side = 0
-3:6/0/terrains_peering_bit/bottom_right_corner = 1
-3:6/0/terrains_peering_bit/bottom_side = 1
-3:6/0/terrains_peering_bit/bottom_left_corner = 1
-3:6/0/terrains_peering_bit/left_side = 0
-3:6/0/terrains_peering_bit/top_left_corner = 0
-3:6/0/terrains_peering_bit/top_side = 0
-3:6/0/terrains_peering_bit/top_right_corner = 0
-4:6/0 = 0
-4:6/0/terrain_set = 0
-4:6/0/terrain = 0
-4:6/0/terrains_peering_bit/right_side = 0
-4:6/0/terrains_peering_bit/bottom_right_corner = 0
-4:6/0/terrains_peering_bit/bottom_side = 0
-4:6/0/terrains_peering_bit/bottom_left_corner = 1
-4:6/0/terrains_peering_bit/left_side = 0
-4:6/0/terrains_peering_bit/top_left_corner = 0
-4:6/0/terrains_peering_bit/top_side = 0
-4:6/0/terrains_peering_bit/top_right_corner = 0
-4:7/0 = 0
-4:7/0/terrain_set = 0
-4:7/0/terrain = 0
-4:7/0/terrains_peering_bit/right_side = 0
-4:7/0/terrains_peering_bit/bottom_right_corner = 0
-4:7/0/terrains_peering_bit/bottom_side = 0
-4:7/0/terrains_peering_bit/bottom_left_corner = 1
-4:7/0/terrains_peering_bit/left_side = 1
-4:7/0/terrains_peering_bit/top_left_corner = 1
-4:7/0/terrains_peering_bit/top_side = 0
-4:7/0/terrains_peering_bit/top_right_corner = 0
-3:7/0 = 0
-3:7/0/terrain_set = 0
-3:7/0/terrain = 1
-3:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-3:7/0/terrains_peering_bit/right_side = 1
-3:7/0/terrains_peering_bit/bottom_right_corner = 1
-3:7/0/terrains_peering_bit/bottom_side = 1
-3:7/0/terrains_peering_bit/bottom_left_corner = 1
-3:7/0/terrains_peering_bit/left_side = 1
-3:7/0/terrains_peering_bit/top_left_corner = 1
-3:7/0/terrains_peering_bit/top_side = 1
-3:7/0/terrains_peering_bit/top_right_corner = 1
-2:7/0 = 0
-2:7/0/terrain_set = 0
-2:7/0/terrain = 0
-2:7/0/terrains_peering_bit/right_side = 1
-2:7/0/terrains_peering_bit/bottom_right_corner = 1
-2:7/0/terrains_peering_bit/bottom_side = 0
-2:7/0/terrains_peering_bit/bottom_left_corner = 0
-2:7/0/terrains_peering_bit/left_side = 0
-2:7/0/terrains_peering_bit/top_left_corner = 0
-2:7/0/terrains_peering_bit/top_side = 0
-2:7/0/terrains_peering_bit/top_right_corner = 1
-2:8/0 = 0
-2:8/0/terrain_set = 0
-2:8/0/terrain = 0
-2:8/0/terrains_peering_bit/right_side = 0
-2:8/0/terrains_peering_bit/bottom_right_corner = 0
-2:8/0/terrains_peering_bit/bottom_side = 0
-2:8/0/terrains_peering_bit/bottom_left_corner = 0
-2:8/0/terrains_peering_bit/left_side = 0
-2:8/0/terrains_peering_bit/top_left_corner = 0
-2:8/0/terrains_peering_bit/top_side = 0
-2:8/0/terrains_peering_bit/top_right_corner = 1
-3:8/0 = 0
-3:8/0/terrain_set = 0
-3:8/0/terrain = 0
-3:8/0/terrains_peering_bit/right_side = 0
-3:8/0/terrains_peering_bit/bottom_right_corner = 0
-3:8/0/terrains_peering_bit/bottom_side = 0
-3:8/0/terrains_peering_bit/bottom_left_corner = 0
-3:8/0/terrains_peering_bit/left_side = 0
-3:8/0/terrains_peering_bit/top_left_corner = 1
-3:8/0/terrains_peering_bit/top_side = 1
-3:8/0/terrains_peering_bit/top_right_corner = 1
-4:8/0 = 0
-4:8/0/terrain_set = 0
-4:8/0/terrain = 0
-4:8/0/terrains_peering_bit/right_side = 0
-4:8/0/terrains_peering_bit/bottom_right_corner = 0
-4:8/0/terrains_peering_bit/bottom_side = 0
-4:8/0/terrains_peering_bit/bottom_left_corner = 0
-4:8/0/terrains_peering_bit/left_side = 0
-4:8/0/terrains_peering_bit/top_left_corner = 1
-4:8/0/terrains_peering_bit/top_side = 0
-4:8/0/terrains_peering_bit/top_right_corner = 0
-0:1/animation_columns = 4
-0:1/animation_mode = 1
-0:1/animation_frame_0/duration = 0.5
-0:1/animation_frame_1/duration = 0.5
-0:1/animation_frame_2/duration = 0.5
-0:1/animation_frame_3/duration = 0.5
-0:1/animation_frame_4/duration = 0.5
-0:1/animation_frame_5/duration = 0.5
-0:1/animation_frame_6/duration = 0.5
-0:1/animation_frame_7/duration = 0.5
-0:1/0 = 0
-0:1/0/terrain_set = 0
-0:1/0/terrain = 1
-0:1/0/probability = 0.3
-0:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
-0:1/0/terrains_peering_bit/right_side = 1
-0:1/0/terrains_peering_bit/bottom_right_corner = 1
-0:1/0/terrains_peering_bit/bottom_side = 1
-0:1/0/terrains_peering_bit/bottom_left_corner = 1
-0:1/0/terrains_peering_bit/left_side = 1
-0:1/0/terrains_peering_bit/top_left_corner = 1
-0:1/0/terrains_peering_bit/top_side = 1
-0:1/0/terrains_peering_bit/top_right_corner = 1
-11:0/size_in_atlas = Vector2i(2, 2)
-11:0/0 = 0
-11:0/0/texture_origin = Vector2i(8, 8)
-11:0/0/z_index = 2
-14:0/size_in_atlas = Vector2i(2, 2)
-14:0/0 = 0
-14:0/0/texture_origin = Vector2i(-8, 8)
-14:0/0/z_index = 2
-11:2/size_in_atlas = Vector2i(5, 3)
-11:2/0 = 0
-11:2/0/z_index = 1
-25:7/size_in_atlas = Vector2i(1, 2)
-25:7/0 = 0
-25:7/0/z_index = 1
-16:4/size_in_atlas = Vector2i(1, 2)
-16:4/0 = 0
-16:4/0/texture_origin = Vector2i(0, 8)
-16:4/0/z_index = 1
-17:4/size_in_atlas = Vector2i(1, 2)
-17:4/0 = 0
-17:4/0/texture_origin = Vector2i(0, 8)
-17:4/0/z_index = 1
-18:4/size_in_atlas = Vector2i(1, 2)
-18:4/0 = 0
-18:4/0/texture_origin = Vector2i(0, 8)
-18:4/0/z_index = 1
-19:4/size_in_atlas = Vector2i(1, 2)
-19:4/0 = 0
-19:4/0/texture_origin = Vector2i(0, 8)
-19:4/0/z_index = 1
-20:4/size_in_atlas = Vector2i(1, 2)
-20:4/0 = 0
-20:4/0/texture_origin = Vector2i(0, 8)
-20:4/0/z_index = 1
-
-[sub_resource type="TileSet" id="TileSet_snsnx"]
-physics_layer_0/collision_layer = 1
-terrain_set_0/mode = 0
-terrain_set_0/terrain_0/name = "Grass"
-terrain_set_0/terrain_0/color = Color(0.34902, 0.890196, 0.352941, 1)
-terrain_set_0/terrain_1/name = "Water"
-terrain_set_0/terrain_1/color = Color(0.223529, 0.6, 0.882353, 1)
-terrain_set_0/terrain_2/name = "Grass Paths"
-terrain_set_0/terrain_2/color = Color(0.588235, 0.713726, 0.239216, 1)
-sources/0 = SubResource("TileSetAtlasSource_n0o3p")
-
-[node name="MainLevel" type="Node2D"]
-script = ExtResource("1_fdviv")
-
-[node name="TileMapLayer" type="TileMapLayer" parent="."]
-tile_map_data = PackedByteArray("AAAAAP//AAASACEAAAD/////AAARACEAAAD+////AAARACEAAAD9////AAARACEAAAD7////AAAQACEAAAD6////AAAHAAoAAAD5////AAAHAAkAAAD4////AAAHAAkAAAD5/wAAAAAFAAoAAAD6/wAAAAAAAAMAAAD7/wAAAAABAAMAAAD8/wAAAAABAAMAAAD9/wAAAAABAAMAAAD+/wAAAAABAAMAAAD//wAAAAABAAMAAAAAAAAAAAABAAMAAAABAAAAAAABAAMAAAACAAEAAAABAAQAAAADAAEAAAABAAQAAAAEAAEAAAABAAQAAAD4/wAAAAANABwAAAD3/wAAAAAIAAoAAAACAAAAAAABAAMAAAADAAAAAAABAAMAAAAEAAAAAAABAAMAAAAFAAAAAAABAAMAAAAGAAAAAAABAAcAAAAHAAAAAAABAAQAAAAIAAAAAAAAAAcAAAABAP//AAAIAAoAAAACAP//AAAIAAoAAAADAP//AAAFAAkAAAAEAP//AAAHAAoAAAAFAP//AAAFAAkAAAAGAP//AAAAAAMAAAD2/wAAAAAMABwAAAD1/wAAAAALABwAAAD9/wEAAAABAAQAAAD+/wEAAAABAAQAAAD//wEAAAABAAQAAAAAAAEAAAABAAQAAAABAAEAAAABAAQAAAAFAAEAAAABAAQAAAAGAAEAAAABAAQAAAAHAAEAAAABAAQAAAAIAAEAAAABAAQAAAAJAAEAAAABAAQAAAD8/wEAAAABAAQAAAD7/wEAAAABAAQAAAD6/wEAAAABAAcAAAD5/wEAAAABAAMAAAD4/wEAAAAAAAMAAAD3/wEAAAAHAAkAAAD2/wEAAAAFAAoAAAD1/wEAAAAFAAkAAAD0/wEAAAAHAAoAAAD5//7/AAAFAAkAAAD6//7/AAAIAAoAAAD7//7/AAAQACAAAAD8//7/AAARACAAAAD9//7/AAARACAAAAD+//7/AAARACAAAAD///7/AAARACAAAAAAAP7/AAASACAAAAABAP7/AAAFAAoAAAACAP7/AAAIAAoAAAADAP7/AAAFAAoAAAAFAP7/AAAFAAkAAAAGAP7/AAAAAAAAAAAIAP7/AAACAAMAAAAJAP7/AAAHAAkAAAALAP7/AAAFAAoAAAAMAP7/AAAAAAAAAAD4//7/AAAFAAoAAAD3//7/AAAAAAAAAAD3//3/AAANABwAAAD4//3/AAAHAAoAAAD5//3/AAAFAAoAAAD6//3/AAAHAAoAAAD7//3/AAAHAAoAAAD8//3/AAAIAAkAAAD9//3/AAAFAAkAAAD+//3/AAAAAAAAAAD///3/AAAIAAoAAAAAAP3/AAAIAAkAAAABAP3/AAAIAAoAAAACAP3/AAAHAAkAAAADAP3/AAANABwAAAAEAPz/AAAHAAkAAAAFAPz/AAAAAAAAAAAHAPz/AAAIAAoAAAADAPz/AAAFAAkAAAACAPz/AAAIAAoAAAABAPz/AAAIAAkAAAAAAPz/AAAHAAoAAAD///z/AAAHAAoAAAD+//z/AAAIAAoAAAD9//z/AAAFAAoAAAD8//z/AAAAAAAAAAD7//z/AAAFAAoAAAD6//z/AAAAAAAAAAD5//z/AAANABwAAAD4//z/AAAIAAkAAAD3//z/AAAFAAkAAAAEAP3/AAAAAAAAAAAFAP3/AAAFAAkAAAAGAP3/AAAAAAAAAAAIAP3/AAAFAAoAAAAJAP3/AAAHAAoAAAALAP3/AAAIAAkAAAAMAP3/AAAFAAoAAAANAP7/AAAHAAoAAAAJAPz/AAAHAAoAAAAKAPz/AAAIAAoAAAALAPz/AAAFAAoAAAD+//v/AAAHAAoAAAD9//v/AAAFAAkAAAD8//v/AAAHAAoAAAD7//v/AAAIAAoAAAD6//v/AAAAAAAAAAD5//v/AAAIAAkAAAD4//v/AAAFAAkAAAD3//v/AAAIAAkAAAD2//v/AAAAAAAAAAD///v/AAANABwAAAAAAPv/AAAHAAkAAAABAPv/AAAIAAkAAAACAPv/AAAHAAkAAAADAPv/AAAAAAAAAAAEAPv/AAAFAAoAAAAFAPv/AAAHAAoAAAAGAPv/AAAHAAoAAAAHAPv/AAAIAAoAAAAJAPv/AAAFAAkAAAAKAPv/AAAFAAoAAAALAPv/AAAFAAoAAAAMAPv/AAAAAAAAAAD1//v/AAAFAAkAAAD0//v/AAAIAAkAAADz//r/AAAFAAkAAADy//r/AAAFAAkAAADy//v/AAAHAAoAAADz//v/AAAAAAAAAAAAAPr/AAAFAAoAAAD///r/AAAFAAoAAAD+//r/AAAFAAoAAAD9//r/AAAHAAoAAAD8//r/AAAHAAkAAAD7//r/AAAAAAAAAAD6//r/AAAHAAoAAAD5//r/AAAAAAAAAAD4//r/AAAIAAkAAAD3//r/AAAHAAoAAAD2//r/AAAFAAkAAAD1//r/AAAIAAkAAAD0//r/AAAFAAkAAAABAPr/AAAIAAkAAAACAPr/AAAFAAoAAAADAPr/AAAHAAkAAAAEAPr/AAAFAAoAAAAFAPr/AAAIAAoAAAAGAPr/AAAIAAkAAAAHAPr/AAAIAAkAAAAIAPr/AAAFAAoAAAAJAPr/AAAFAAoAAAAKAPr/AAAIAAoAAAALAPr/AAAHAAkAAAD6//n/AAAHAAkAAAD5//n/AAAIAAkAAAD4//n/AAAAAAAAAAD3//n/AAAIAAkAAAD2//n/AAAFAAoAAAD1//n/AAAFAAoAAAD0//n/AAAHAAoAAAAMAPr/AAAFAAkAAAANAPr/AAAHAAoAAAAOAPr/AAAIAAoAAAAPAPr/AAAAAAAAAAAQAPr/AAAFAAkAAAAIAPn/AAAFAAkAAAAHAPn/AAAHAAkAAAAGAPn/AAAAAAAAAAAFAPn/AAAAAAAAAAAEAPn/AAAFAAkAAAADAPn/AAAFAAoAAAACAPn/AAAAAAAAAAABAPn/AAAFAAkAAAAAAPn/AAAIAAkAAAD///n/AAAHAAoAAAD+//n/AAAFAAkAAAD9//n/AAAHAAkAAAD8//n/AAAFAAkAAAD7//n/AAAFAAoAAAD2//j/AAAHAAoAAAD1//j/AAAHAAkAAAD0//j/AAAHAAoAAADz//j/AAAFAAoAAADy//j/AAAFAAkAAADx//j/AAAFAAoAAAAJAPn/AAAFAAkAAAD///j/AAAFAAkAAAD+//j/AAAIAAkAAAD9//j/AAAFAAkAAAD8//j/AAAIAAkAAAD7//j/AAAFAAoAAAD6//j/AAAFAAoAAAD5//j/AAAIAAoAAAD4//j/AAAIAAkAAAD3//j/AAAFAAkAAAAAAPj/AAAIAAoAAAABAPj/AAAHAAoAAAACAPj/AAAFAAoAAAADAPj/AAAHAAoAAAAEAPj/AAAIAAkAAAAFAPj/AAAHAAoAAAAGAPj/AAAAAAAAAAAHAPj/AAAIAAoAAAAIAPj/AAAHAAkAAAAJAPj/AAAFAAoAAAAKAPj/AAAAAAAAAAAEAPf/AAAHAAkAAAADAPf/AAAFAAkAAAACAPf/AAAHAAkAAAABAPf/AAAIAAoAAAAAAPf/AAAFAAkAAAD///f/AAAIAAoAAAD+//f/AAAHAAoAAAD9//f/AAAIAAoAAAD8//f/AAAIAAkAAAD7//f/AAAIAAoAAAD6//f/AAAIAAkAAAD5//f/AAAHAAoAAAD4//f/AAAIAAkAAAD3//f/AAAIAAoAAAD2//f/AAAIAAkAAAD1//f/AAAHAAkAAAD0//f/AAAFAAoAAADz//f/AAAFAAkAAAALAPj/AAAFAAoAAAAMAPj/AAAHAAoAAAANAPj/AAAFAAoAAAAOAPj/AAAHAAoAAAAPAPj/AAAHAAoAAAAQAPn/AAAIAAkAAAARAPn/AAAIAAkAAAASAPn/AAAFAAkAAAATAPn/AAAFAAoAAAAPAPn/AAAHAAoAAAAOAPn/AAAHAAoAAADx//7/AAADAAcAAADx//3/AAADAAcAAADx//z/AAADAAYAAADx//v/AAAFAAkAAADx//r/AAAFAAoAAADx//n/AAAAAAAAAADy//n/AAAFAAoAAADz//n/AAAAAAAAAADy//z/AAAEAAYAAADy//3/AAACAAoAAADy//7/AAAAAAEAAADy////AAADAAcAAADx////AAADAAcAAADx/wAAAAADAAcAAADx/wEAAAAAAAEAAADy/wEAAAACAAkAAADy/wAAAAADAAcAAADz/wAAAAACAAkAAADz////AAADAAcAAADz//7/AAADAAcAAADz//3/AAADAAYAAADz//z/AAAFAAoAAAD0//z/AAAIAAkAAAD0//3/AAAEAAYAAAD0//7/AAAEAAcAAAD0////AAAEAAcAAAD0/wAAAAAEAAgAAAD1////AAAAAAAAAAD1//7/AAAFAAoAAAD1//3/AAAFAAoAAAD1//z/AAAAAAAAAAD2//z/AAAIAAoAAAD2//3/AAAAAAAAAAD2//7/AAAHAAkAAAD2////AAAIAAkAAAD3////AAAHAAoAAADz/wEAAAAEAAgAAADy//f/AAAHAAoAAADx//f/AAAFAAoAAAAIAPf/AAAIAAoAAAAHAPf/AAAIAAoAAAAGAPf/AAAIAAkAAAAFAPf/AAAFAAkAAAAJAPf/AAAIAAoAAAAKAPf/AAAIAAkAAAALAPf/AAAHAAoAAAAMAPf/AAAHAAoAAAANAPf/AAAAAAAAAAAOAPf/AAAAAAAAAAAPAPf/AAAHAAkAAAAQAPf/AAAAAAAAAAAQAPj/AAAHAAkAAAARAPj/AAAHAAoAAAARAPf/AAAIAAkAAAASAPf/AAAAAAAAAAASAPj/AAAIAAoAAAATAPj/AAAFAAoAAAATAPf/AAAIAAoAAAAMAPn/AAAHAAkAAAALAPn/AAAIAAkAAAAKAPn/AAAFAAoAAAANAPn/AAAIAAkAAAASAPv/AAAFAAkAAAASAPr/AAAFAAoAAAARAPr/AAAHAAkAAAARAPv/AAAAAAAAAAAQAPv/AAAFAAkAAAAPAPv/AAAFAAkAAAAOAPv/AAAAAAAAAAANAPv/AAAAAAAAAAANAPz/AAAHAAkAAAAMAPz/AAAFAAkAAAANAP3/AAAFAAoAAAAOAP3/AAANABwAAAAOAPz/AAAAAAAAAAAPAPz/AAAFAAkAAAAPAP3/AAAFAAoAAAAPAP7/AAAHAAkAAAAOAP7/AAAIAAkAAAAOAP//AAAHAAkAAAANAP//AAAIAAoAAAAMAP//AAAIAAoAAAALAP//AAAHAAkAAAAKAP//AAAIAAoAAAAJAP//AAAAAAAAAAAIAP//AAACAAQAAAAJAAAAAAABAAMAAAAKAAAAAAABAAMAAAAKAAEAAAABAAQAAAALAAEAAAABAAQAAAALAAAAAAABAAMAAAAMAAAAAAABAAMAAAAMAAEAAAABAAQAAAANAAEAAAABAAQAAAANAAAAAAABAAMAAAAOAAAAAAABAAMAAAAOAAEAAAABAAQAAAAPAP//AAAIAAkAAAAQAP//AAAIAAoAAAAQAP7/AAAIAAoAAAAQAP3/AAAHAAkAAAAQAPz/AAAHAAoAAAARAPz/AAAIAAoAAAARAP3/AAAHAAoAAAARAP7/AAAAAAAAAAARAP//AAAAAAAAAAASAAEAAAABAAQAAAASAAAAAAABAAMAAAASAP//AAAFAAoAAAASAP7/AAAIAAkAAAASAP3/AAAAAAAAAAASAPz/AAAFAAoAAAATAPz/AAAAAAAAAAATAPv/AAAHAAoAAAATAPr/AAAIAAkAAAATAP3/AAAFAAoAAAATAP7/AAAAAAAAAAATAP//AAAHAAkAAAATAAAAAAABAAMAAAATAAEAAAABAAQAAADi//D/AAAAAAsAAADi//H/AAABAAoAAADi//L/AAABAAkAAADi//P/AAABAAoAAADi//T/AAABAAkAAADi//X/AAABAAoAAADi//b/AAABAAkAAADi//f/AAABAAoAAADi//j/AAABAAkAAADi//n/AAABAAoAAADi//r/AAABAAkAAADi//v/AAABAAoAAADi//z/AAABAAkAAADi//3/AAABAAkAAADi//7/AAABAAkAAADi////AAABAAkAAADi/wAAAAABAAMAAADi/wEAAAABAAQAAADi/wIAAAABAAUAAADi/wMAAAAHAAkAAADi/wQAAAABAAkAAADi/wUAAAABAAkAAADi/wYAAAABAAoAAADi/wcAAAABAAkAAADi/wgAAAABAAoAAADi/wkAAAABAAkAAADi/woAAAABAAoAAADi/wsAAAABAAkAAADi/wwAAAABAAoAAADi/w0AAAABAAkAAADi/w4AAAABAAoAAADi/w8AAAABAAkAAADi/xAAAAABAAoAAADi/xEAAAABAAkAAADi/xIAAAABAAoAAADi/xMAAAABAAkAAADi/xQAAAABAAoAAADi/xUAAAABAAkAAADi/xYAAAABAAoAAADi/xcAAAABAAkAAADi/xgAAAABAAoAAADi/xkAAAABAAkAAADi/xoAAAABAAoAAADi/xsAAAABAAkAAADi/xwAAAABAAoAAADi/x0AAAABAAkAAADi/x4AAAABAAoAAADi/x8AAAABAAkAAADi/yAAAAABAAoAAADi/yEAAAABAAkAAADi/yIAAAABAAoAAADi/yMAAAABAAkAAADi/yQAAAABAAoAAADi/yUAAAABAAkAAADi/yYAAAABAAoAAADi/ycAAAABAAkAAADi/ygAAAABAAoAAADi/ykAAAAIAA4AAADi/yoAAAARAAcAAADi/ysAAAABAAQAAADi/ywAAAABAAUAAADi/y0AAAABAAkAAADi/y4AAAABAAoAAADi/y8AAAABAAkAAADi/zAAAAABAAoAAADi/zEAAAABAAkAAADi/zIAAAABAAoAAADi/zMAAAABAAkAAADj//D/AAABAAsAAADj//H/AAAIAAoAAADj//L/AAAIAAoAAADj//P/AAAHAAoAAADj//T/AAAIAAkAAADj//X/AAAIAAoAAADj//b/AAAFAAkAAADj//f/AAAIAAoAAADj//j/AAAFAAkAAADj//n/AAAHAAoAAADj//r/AAAHAAkAAADj//v/AAAIAAkAAADj//z/AAAHAAkAAADj//3/AAAFAAoAAADj//7/AAAIAAoAAADj////AAAIAAoAAADj/wAAAAABAAMAAADj/wEAAAABAAQAAADj/wIAAAABAAUAAADj/wMAAAAHAAoAAADj/wQAAAAIAAoAAADj/wUAAAAAAAAAAADj/wYAAAAFAAoAAADj/wcAAAAFAAoAAADj/wgAAAAHAAoAAADj/wkAAAAAAAAAAADj/woAAAAFAAkAAADj/wsAAAAFAAoAAADj/wwAAAAFAAkAAADj/w0AAAAFAAoAAADj/w4AAAAHAAoAAADj/w8AAAAAAAAAAADj/xAAAAAHAAkAAADj/xEAAAAIAAoAAADj/xIAAAAAAAAAAADj/xMAAAAIAAoAAADj/xQAAAAFAAoAAADj/xUAAAAIAAkAAADj/xYAAAAFAAoAAADj/xcAAAAFAAoAAADj/xgAAAAAAAAAAADj/xkAAAAIAAkAAADj/xoAAAAIAAkAAADj/xsAAAAHAAoAAADj/xwAAAAHAAkAAADj/x0AAAAFAAkAAADj/x4AAAAHAAoAAADj/x8AAAAHAAoAAADj/yAAAAAHAAkAAADj/yEAAAAIAAoAAADj/yIAAAAIAAkAAADj/yMAAAAFAAkAAADj/yQAAAAHAAoAAADj/yUAAAAAAAAAAADj/yYAAAAFAAoAAADj/ycAAAAIAAoAAADj/ygAAAAFAAkAAADj/ykAAAABAAMAAADj/yoAAAABAAQAAADj/ysAAAABAAQAAADj/ywAAAABAAUAAADj/y0AAAAFAAkAAADj/y4AAAAIAAkAAADj/y8AAAAHAAoAAADj/zAAAAAIAAkAAADj/zEAAAAHAAkAAADj/zIAAAAIAAkAAADj/zMAAAAFAAkAAADk//D/AAABAAsAAADk//H/AAAHAAkAAADk//L/AAAHAAoAAADk//P/AAAIAAkAAADk//T/AAAFAAoAAADk//X/AAAIAAkAAADk//b/AAAHAAoAAADk//f/AAAFAAoAAADk//j/AAAIAAoAAADk//n/AAAHAAkAAADk//r/AAAIAAkAAADk//v/AAAFAAoAAADk//z/AAAFAAoAAADk//3/AAAIAAkAAADk//7/AAAIAAoAAADk////AAAAAAAAAADk/wAAAAABAAMAAADk/wEAAAABAAQAAADk/wIAAAABAAUAAADk/wMAAAAIAAkAAADk/wQAAAAAAAAAAADk/wUAAAAAAAAAAADk/wYAAAAIAAoAAADk/wcAAAAAAAAAAADk/wgAAAAAAAAAAADk/wkAAAAAAAAAAADk/woAAAAIAAkAAADk/wsAAAAHAAoAAADk/wwAAAAHAAoAAADk/w0AAAAFAAoAAADk/w4AAAAAAAAAAADk/w8AAAAAAAAAAADk/xAAAAAFAAoAAADk/xEAAAAFAAoAAADk/xIAAAAHAAoAAADk/xMAAAAAAAAAAADk/xQAAAAFAAoAAADk/xUAAAAIAAoAAADk/xYAAAAIAAoAAADk/xcAAAAFAAkAAADk/xgAAAAFAAoAAADk/xkAAAAAAAAAAADk/xoAAAAHAAoAAADk/xsAAAAHAAkAAADk/xwAAAAHAAkAAADk/x0AAAAFAAoAAADk/x4AAAAAAAAAAADk/x8AAAAFAAkAAADk/yAAAAAIAAkAAADk/yEAAAAHAAkAAADk/yIAAAAIAAoAAADk/yMAAAAFAAkAAADk/yQAAAAHAAkAAADk/yUAAAAIAAoAAADk/yYAAAAIAAoAAADk/ycAAAAFAAoAAADk/ygAAAAFAAoAAADk/ykAAAABAAMAAADk/yoAAAABAAQAAADk/ysAAAABAAQAAADk/ywAAAABAAUAAADk/y0AAAAHAAkAAADk/y4AAAAHAAoAAADk/y8AAAAHAAkAAADk/zAAAAAHAAkAAADk/zEAAAAHAAoAAADk/zIAAAAAAAAAAADk/zMAAAAHAAkAAADl//D/AAABAAsAAADl//H/AAAIAAkAAADl//L/AAAIAAoAAADl//P/AAAHAAkAAADl//T/AAAFAAoAAADl//X/AAAAAAAAAADl//b/AAAHAAoAAADl//f/AAAFAAoAAADl//j/AAAHAAoAAADl//n/AAAFAAkAAADl//r/AAAFAAkAAADl//v/AAAHAAkAAADl//z/AAAIAAkAAADl//3/AAAIAAoAAADl//7/AAAHAAoAAADl////AAAFAAoAAADl/wAAAAABAAMAAADl/wEAAAABAAQAAADl/wIAAAABAAUAAADl/wMAAAAFAAkAAADl/wQAAAAHAAoAAADl/wUAAAAHAAkAAADl/wYAAAAIAAoAAADl/wcAAAAIAAkAAADl/wgAAAAIAAoAAADl/wkAAAAIAAoAAADl/woAAAAHAAoAAADl/wsAAAAHAAkAAADl/wwAAAAIAAkAAADl/w0AAAAAAAAAAADl/w4AAAAIAAoAAADl/w8AAAAFAAoAAADl/xAAAAAIAAkAAADl/xEAAAAFAAoAAADl/xIAAAAFAAoAAADl/xMAAAAFAAoAAADl/xQAAAAFAAoAAADl/xUAAAAFAAkAAADl/xYAAAAHAAoAAADl/xcAAAAIAAkAAADl/xgAAAAIAAoAAADl/xkAAAAIAAoAAADl/xoAAAAFAAoAAADl/xsAAAAHAAkAAADl/xwAAAAHAAoAAADl/x0AAAAAAAAAAADl/x4AAAAIAAkAAADl/x8AAAAIAAoAAADl/yAAAAAIAAoAAADl/yEAAAAIAAkAAADl/yIAAAAHAAkAAADl/yMAAAAIAAoAAADl/yQAAAAFAAkAAADl/yUAAAAAAAAAAADl/yYAAAAHAAoAAADl/ycAAAAFAAkAAADl/ygAAAAAAAAAAADl/ykAAAABAAMAAADl/yoAAAABAAQAAADl/ysAAAABAAQAAADl/ywAAAABAAUAAADl/y0AAAAIAAkAAADl/y4AAAAAAAAAAADl/y8AAAAAAAAAAADl/zAAAAAHAAkAAADl/zEAAAAHAAkAAADl/zIAAAAFAAkAAADl/zMAAAAAAAAAAADm//D/AAABAAsAAADm//H/AAAIAAoAAADm//L/AAAFAAoAAADm//P/AAAHAAkAAADm//T/AAAIAAkAAADm//X/AAAHAAoAAADm//b/AAAFAAkAAADm//f/AAAFAAkAAADm//j/AAAHAAoAAADm//n/AAAHAAkAAADm//r/AAAAAAAAAADm//v/AAAHAAkAAADm//z/AAAAAAAAAADm//3/AAAIAAkAAADm//7/AAAAAAAAAADm////AAAIAAkAAADm/wAAAAABAAMAAADm/wEAAAABAAQAAADm/wIAAAABAAUAAADm/wMAAAAIAAkAAADm/wQAAAAHAAoAAADm/wUAAAAIAAoAAADm/wYAAAAHAAoAAADm/wcAAAAHAAkAAADm/wgAAAAIAAoAAADm/wkAAAAHAAoAAADm/woAAAAFAAoAAADm/wsAAAAIAAkAAADm/wwAAAAHAAkAAADm/w0AAAAIAAkAAADm/w4AAAAAAAAAAADm/w8AAAAIAAoAAADm/xAAAAAFAAkAAADm/xEAAAAFAAkAAADm/xIAAAAFAAoAAADm/xMAAAAIAAoAAADm/xQAAAAFAAkAAADm/xUAAAAFAAoAAADm/xYAAAAIAAoAAADm/xcAAAAFAAkAAADm/xgAAAAHAAoAAADm/xkAAAAIAAoAAADm/xoAAAAFAAkAAADm/xsAAAAFAAoAAADm/xwAAAAHAAoAAADm/x0AAAAIAAoAAADm/x4AAAAIAAoAAADm/x8AAAAIAAoAAADm/yAAAAAAAAAAAADm/yEAAAAFAAkAAADm/yIAAAAFAAoAAADm/yMAAAAHAAoAAADm/yQAAAAIAAoAAADm/yUAAAAFAAoAAADm/yYAAAAFAAoAAADm/ycAAAAAAAAAAADm/ygAAAAHAAkAAADm/ykAAAABAAMAAADm/yoAAAABAAQAAADm/ysAAAABAAQAAADm/ywAAAABAAYAAADm/y0AAAAAAAUAAADm/y4AAAAIAAoAAADm/y8AAAAIAAkAAADm/zAAAAAIAAoAAADm/zEAAAAHAAoAAADm/zIAAAAHAAkAAADm/zMAAAAIAAkAAADn//D/AAABAAsAAADn//H/AAAFAAoAAADn//L/AAAIAAoAAADn//P/AAAHAAkAAADn//T/AAAIAAkAAADn//X/AAAFAAoAAADn//b/AAAAAAAAAADn//f/AAAFAAoAAADn//j/AAAHAAkAAADn//n/AAAIAAkAAADn//r/AAAHAAoAAADn//v/AAAAAAAAAADn//z/AAAFAAkAAADn//3/AAAFAAkAAADn//7/AAAFAAoAAADn////AAAHAAoAAADn/wAAAAABAAMAAADn/wEAAAABAAQAAADn/wIAAAABAAUAAADn/wMAAAAFAAoAAADn/wQAAAAHAAoAAADn/wUAAAAHAAoAAADn/wYAAAAIAAoAAADn/wcAAAAAAAAAAADn/wgAAAAIAAoAAADn/wkAAAAHAAkAAADn/woAAAAHAAoAAADn/wsAAAAIAAoAAADn/wwAAAAHAAoAAADn/w0AAAAIAAoAAADn/w4AAAAFAAkAAADn/w8AAAAFAAoAAADn/xAAAAAFAAoAAADn/xEAAAAIAAoAAADn/xIAAAAHAAkAAADn/xMAAAAIAAoAAADn/xQAAAAAAAAAAADn/xUAAAAIAAkAAADn/xYAAAAFAAkAAADn/xcAAAAIAAoAAADn/xgAAAAHAAoAAADn/xkAAAAFAAkAAADn/xoAAAAHAAoAAADn/xsAAAAIAAkAAADn/xwAAAAFAAkAAADn/x0AAAAIAAoAAADn/x4AAAAHAAoAAADn/x8AAAAIAAoAAADn/yAAAAAHAAoAAADn/yEAAAAIAAoAAADn/yIAAAAIAAoAAADn/yMAAAAFAAoAAADn/yQAAAAIAAoAAADn/yUAAAAFAAoAAADn/yYAAAAHAAoAAADn/ycAAAAFAAoAAADn/ygAAAAIAAkAAADn/ykAAAABAAMAAADn/yoAAAABAAQAAADn/ysAAAABAAQAAADn/ywAAAABAAQAAADn/y0AAAABAAUAAADn/y4AAAAFAAkAAADn/y8AAAAHAAkAAADn/zAAAAAAAAAAAADn/zEAAAAFAAkAAADn/zIAAAAFAAoAAADn/zMAAAAFAAkAAADo//D/AAABAAsAAADo//H/AAAFAAkAAADo//L/AAAFAAkAAADo//P/AAAAAAAAAADo//T/AAAFAAoAAADo//X/AAAFAAoAAADo//b/AAAHAAkAAADo//f/AAAIAAkAAADo//j/AAAHAAkAAADo//n/AAAAAAAAAADo//r/AAAFAAkAAADo//v/AAAIAAkAAADo//z/AAAFAAkAAADo//3/AAAFAAoAAADo//7/AAAHAAkAAADo////AAAAAAAAAADo/wAAAAABAAMAAADo/wEAAAABAAQAAADo/wIAAAABAAYAAADo/wMAAAAAAAQAAADo/wQAAAAAAAQAAADo/wUAAAAAAAUAAADo/wYAAAAIAAkAAADo/wcAAAAFAAkAAADo/wgAAAAHAAkAAADo/wkAAAAFAAoAAADo/woAAAAHAAkAAADo/wsAAAAAAAAAAADo/wwAAAAFAAkAAADo/w0AAAAIAAoAAADo/w4AAAAIAAkAAADo/w8AAAAAAAAAAADo/xAAAAAAAAAAAADo/xEAAAAHAAoAAADo/xIAAAAHAAkAAADo/xMAAAAIAAoAAADo/xQAAAAFAAoAAADo/xUAAAAAAAAAAADo/xYAAAAIAAoAAADo/xcAAAAHAAkAAADo/xgAAAAFAAkAAADo/xkAAAAAAAAAAADo/xoAAAAFAAoAAADo/xsAAAAHAAoAAADo/xwAAAAAAAAAAADo/x0AAAAHAAoAAADo/x4AAAAFAAkAAADo/x8AAAAFAAkAAADo/yAAAAAIAAoAAADo/yEAAAAHAAoAAADo/yIAAAAFAAkAAADo/yMAAAAFAAkAAADo/yQAAAAIAAkAAADo/yUAAAAFAAoAAADo/yYAAAAAAAAAAADo/ycAAAAFAAkAAADo/ygAAAAHAAkAAADo/ykAAAABAAMAAADo/yoAAAABAAQAAADo/ysAAAABAAQAAADo/ywAAAABAAQAAADo/y0AAAABAAYAAADo/y4AAAAAAAUAAADo/y8AAAAHAAoAAADo/zAAAAAHAAoAAADo/zEAAAAAAAAAAADo/zIAAAAIAAoAAADo/zMAAAAAAAAAAADp//D/AAABAAsAAADp//H/AAAFAAoAAADp//L/AAAFAAkAAADp//P/AAAAAAAAAADp//T/AAAHAAkAAADp//X/AAAFAAoAAADp//b/AAAFAAoAAADp//f/AAAFAAkAAADp//j/AAAHAAoAAADp//n/AAAFAAkAAADp//r/AAAFAAoAAADp//v/AAAFAAoAAADp//z/AAAAAAAAAADp//3/AAAAAAAAAADp//7/AAAFAAkAAADp////AAAHAAoAAADp/wAAAAABAAMAAADp/wEAAAABAAQAAADp/wIAAAABAAQAAADp/wMAAAABAAQAAADp/wQAAAABAAQAAADp/wUAAAABAAYAAADp/wYAAAAAAAQAAADp/wcAAAAAAAUAAADp/wgAAAAFAAoAAADp/wkAAAAAAAAAAADp/woAAAAHAAkAAADp/wsAAAAFAAoAAADp/wwAAAAFAAoAAADp/w0AAAAFAAoAAADp/w4AAAAAAAAAAADp/w8AAAAIAAoAAADp/xAAAAAHAAoAAADp/xEAAAAFAAoAAADp/xIAAAAIAAkAAADp/xMAAAAFAAoAAADp/xQAAAAFAAkAAADp/xUAAAAFAAoAAADp/xYAAAAIAAoAAADp/xcAAAAHAAoAAADp/xgAAAAAAAAAAADp/xkAAAAFAAoAAADp/xoAAAAFAAkAAADp/xsAAAAAAAAAAADp/xwAAAAHAAkAAADp/x0AAAAFAAoAAADp/x4AAAAHAAkAAADp/x8AAAAIAAoAAADp/yAAAAAIAAkAAADp/yEAAAAAAAAAAADp/yIAAAAIAAkAAADp/yMAAAAIAAkAAADp/yQAAAAFAAoAAADp/yUAAAAAAAAAAADp/yYAAAAFAAkAAADp/ycAAAAIAAoAAADp/ygAAAAFAAoAAADp/ykAAAACAAMAAADp/yoAAAAAAAcAAADp/ysAAAABAAQAAADp/ywAAAABAAQAAADp/y0AAAABAAQAAADp/y4AAAABAAUAAADp/y8AAAAIAAoAAADp/zAAAAAFAAkAAADp/zEAAAAHAAkAAADp/zIAAAAFAAoAAADp/zMAAAAAAAAAAADq//D/AAABAAsAAADq//H/AAAFAAoAAADq//L/AAAIAAoAAADq//P/AAAAAAAAAADq//T/AAAIAAoAAADq//X/AAAHAAoAAADq//b/AAAFAAkAAADq//f/AAAHAAkAAADq//j/AAAAAAAAAADq//n/AAAHAAkAAADq//r/AAAAAAAAAADq//v/AAAFAAkAAADq//z/AAAFAAkAAADq//3/AAAFAAkAAADq//7/AAAFAAoAAADq////AAAIAAkAAADq/wAAAAACAAMAAADq/wEAAAACAAQAAADq/wIAAAACAAQAAADq/wMAAAACAAQAAADq/wQAAAAAAAcAAADq/wUAAAABAAQAAADq/wYAAAABAAQAAADq/wcAAAABAAYAAADq/wgAAAAAAAUAAADq/wkAAAAIAAoAAADq/woAAAAAAAAAAADq/wsAAAAIAAoAAADq/wwAAAAHAAoAAADq/w0AAAAIAAkAAADq/w4AAAAFAAoAAADq/w8AAAAIAAkAAADq/xAAAAAHAAoAAADq/xEAAAAHAAkAAADq/xIAAAAFAAkAAADq/xMAAAAHAAoAAADq/xQAAAAHAAoAAADq/xUAAAAFAAoAAADq/xYAAAAHAAoAAADq/xcAAAAIAAkAAADq/xgAAAAAAAAAAADq/xkAAAAHAAkAAADq/xoAAAAHAAkAAADq/xsAAAAHAAoAAADq/xwAAAAAAAAAAADq/x0AAAAHAAkAAADq/x4AAAAFAAoAAADq/x8AAAAIAAkAAADq/yAAAAAAAAAAAADq/yEAAAAAAAAAAADq/yIAAAAFAAoAAADq/yMAAAAIAAkAAADq/yQAAAAIAAkAAADq/yUAAAAIAAoAAADq/yYAAAAFAAkAAADq/ycAAAAIAAkAAADq/ygAAAAHAAoAAADq/ykAAAAFAAoAAADq/yoAAAACAAMAAADq/ysAAAAAAAcAAADq/ywAAAABAAQAAADq/y0AAAABAAQAAADq/y4AAAABAAYAAADq/y8AAAAAAAUAAADq/zAAAAAIAAoAAADq/zEAAAAHAAkAAADq/zIAAAAFAAkAAADq/zMAAAAAAAAAAADr//D/AAABAAsAAADr//H/AAAAAAAAAADr//L/AAAIAAkAAADr//P/AAAIAAkAAADr//T/AAAHAAoAAADr//X/AAAFAAkAAADr//b/AAAHAAkAAADr//f/AAAIAAoAAADr//j/AAAIAAkAAADr//n/AAAFAAoAAADr//r/AAAIAAkAAADr//v/AAAIAAoAAADr//z/AAAIAAoAAADr//3/AAAFAAkAAADr//7/AAAFAAkAAADr////AAAAAAAAAADr/wAAAAAHAAkAAADr/wEAAAAFAAoAAADr/wIAAAAIAAoAAADr/wMAAAAFAAoAAADr/wQAAAACAAMAAADr/wUAAAAAAAcAAADr/wYAAAABAAQAAADr/wcAAAABAAQAAADr/wgAAAABAAYAAADr/wkAAAAAAAUAAADr/woAAAAIAAoAAADr/wsAAAAIAAoAAADr/wwAAAAIAAkAAADr/w0AAAAFAAoAAADr/w4AAAAFAAoAAADr/w8AAAAIAAkAAADr/xAAAAAFAAkAAADr/xEAAAAFAAkAAADr/xIAAAAIAAoAAADr/xMAAAAFAAkAAADr/xQAAAAHAAoAAADr/xUAAAAHAAoAAADr/xYAAAAIAAkAAADr/xcAAAAIAAkAAADr/xgAAAAHAAoAAADr/xkAAAAIAAoAAADr/xoAAAAFAAoAAADr/xsAAAAIAAoAAADr/xwAAAAHAAkAAADr/x0AAAAAAAAAAADr/x4AAAAFAAoAAADr/x8AAAAAAAAAAADr/yAAAAAAAAAAAADr/yEAAAAHAAkAAADr/yIAAAAFAAkAAADr/yMAAAAAAAAAAADr/yQAAAAIAAkAAADr/yUAAAAIAAkAAADr/yYAAAAFAAkAAADr/ycAAAAAAAAAAADr/ygAAAAFAAkAAADr/ykAAAAHAAoAAADr/yoAAAAIAAoAAADr/ysAAAACAAMAAADr/ywAAAAAAAcAAADr/y0AAAABAAQAAADr/y4AAAABAAQAAADr/y8AAAABAAUAAADr/zAAAAAHAAoAAADr/zEAAAAFAAoAAADr/zIAAAAFAAoAAADr/zMAAAAAAAAAAADs//D/AAABAAsAAADs//H/AAAFAAkAAADs//L/AAAAAAAAAADs//P/AAAIAAkAAADs//T/AAAIAAoAAADs//X/AAAHAAoAAADs//b/AAAHAAoAAADs//f/AAAIAAoAAADs//j/AAAFAAkAAADs//n/AAAIAAoAAADs//r/AAAAAAAAAADs//v/AAAAAAAAAADs//z/AAAIAAkAAADs//3/AAAIAAkAAADs//7/AAAFAAkAAADs////AAAFAAkAAADs/wAAAAAFAAoAAADs/wEAAAAIAAoAAADs/wIAAAAIAAkAAADs/wMAAAAFAAoAAADs/wQAAAAIAAoAAADs/wUAAAACAAMAAADs/wYAAAAAAAcAAADs/wcAAAABAAQAAADs/wgAAAABAAQAAADs/wkAAAABAAYAAADs/woAAAAAAAUAAADs/wsAAAAFAAoAAADs/wwAAAAIAAoAAADs/w0AAAAIAAkAAADs/w4AAAAIAAoAAADs/w8AAAAHAAoAAADs/xAAAAAIAAoAAADs/xEAAAAHAAkAAADs/xIAAAAAAAAAAADs/xMAAAAHAAoAAADs/xQAAAAHAAkAAADs/xUAAAAHAAkAAADs/xYAAAAIAAkAAADs/xcAAAAAAAAAAADs/xgAAAAFAAoAAADs/xkAAAAHAAoAAADs/xoAAAAHAAkAAADs/xsAAAAHAAkAAADs/xwAAAAFAAoAAADs/x0AAAAHAAkAAADs/x4AAAAHAAoAAADs/x8AAAAHAAoAAADs/yAAAAAHAAkAAADs/yEAAAAIAAoAAADs/yIAAAAIAAoAAADs/yMAAAAFAAoAAADs/yQAAAAHAAkAAADs/yUAAAAHAAoAAADs/yYAAAAHAAkAAADs/ycAAAAIAAkAAADs/ygAAAAAAAAAAADs/ykAAAAIAAkAAADs/yoAAAAHAAoAAADs/ysAAAAHAAoAAADs/ywAAAABAAMAAADs/y0AAAABAAQAAADs/y4AAAABAAQAAADs/y8AAAABAAYAAADs/zAAAAAAAAUAAADs/zEAAAAIAAkAAADs/zIAAAAHAAkAAADs/zMAAAAIAAoAAADt//D/AAABAAsAAADt//H/AAAIAAoAAADt//L/AAAIAAoAAADt//P/AAAHAAoAAADt//T/AAAAAAAAAADt//X/AAAAAAAAAADt//b/AAAAAAAAAADt//f/AAAIAAkAAADt//j/AAAIAAkAAADt//n/AAAIAAkAAADt//r/AAAAAAAAAADt//v/AAAHAAoAAADt//z/AAAAAAAAAADt//3/AAAFAAkAAADt//7/AAAFAAkAAADt////AAAIAAoAAADt/wAAAAAFAAoAAADt/wEAAAAIAAoAAADt/wIAAAAIAAoAAADt/wMAAAAFAAoAAADt/wQAAAAIAAoAAADt/wUAAAAFAAoAAADt/wYAAAACAAMAAADt/wcAAAAAAAcAAADt/wgAAAABAAQAAADt/wkAAAABAAQAAADt/woAAAABAAYAAADt/wsAAAAAAAUAAADt/wwAAAAIAAoAAADt/w0AAAAIAAkAAADt/w4AAAAFAAoAAADt/w8AAAAIAAoAAADt/xAAAAAAAAAAAADt/xEAAAAHAAoAAADt/xIAAAAHAAkAAADt/xMAAAAFAAoAAADt/xQAAAAAAAAAAADt/xUAAAAFAAoAAADt/xYAAAAHAAoAAADt/xcAAAAAAAAAAADt/xgAAAAIAAoAAADt/xkAAAAIAAkAAADt/xoAAAAIAAoAAADt/xsAAAAHAAkAAADt/xwAAAAHAAkAAADt/x0AAAAHAAoAAADt/x4AAAAFAAoAAADt/x8AAAAAAAAAAADt/yAAAAAFAAoAAADt/yEAAAAHAAkAAADt/yIAAAAAAAAAAADt/yMAAAAIAAkAAADt/yQAAAAIAAoAAADt/yUAAAAFAAoAAADt/yYAAAAFAAoAAADt/ycAAAAFAAkAAADt/ygAAAAFAAoAAADt/ykAAAAFAAkAAADt/yoAAAAHAAkAAADt/ysAAAAIAAoAAADt/ywAAAABAAMAAADt/y0AAAABAAQAAADt/y4AAAABAAQAAADt/y8AAAABAAQAAADt/zAAAAABAAUAAADt/zEAAAAHAAoAAADt/zIAAAAIAAkAAADt/zMAAAAHAAoAAADu//D/AAABAAsAAADu//H/AAAIAAoAAADu//L/AAAIAAoAAADu//P/AAAFAAoAAADu//T/AAAHAAoAAADu//X/AAAIAAkAAADu//b/AAAIAAoAAADu//f/AAAFAAoAAADu//j/AAAFAAkAAADu//n/AAAHAAoAAADu//r/AAAFAAkAAADu//v/AAAHAAkAAADu//z/AAAIAAoAAADu//3/AAACAAYAAADu//7/AAACAAcAAADu////AAACAAcAAADu/wAAAAACAAgAAADu/wEAAAAAAAAAAADu/wIAAAAFAAkAAADu/wMAAAAIAAkAAADu/wQAAAAFAAkAAADu/wUAAAAFAAoAAADu/wYAAAAIAAoAAADu/wcAAAACAAMAAADu/wgAAAAAAAcAAADu/wkAAAABAAQAAADu/woAAAABAAQAAADu/wsAAAABAAUAAADu/wwAAAAFAAkAAADu/w0AAAAFAAkAAADu/w4AAAAIAAoAAADu/w8AAAAIAAoAAADu/xAAAAAHAAkAAADu/xEAAAAAAAAAAADu/xIAAAAAAAAAAADu/xMAAAAAAAAAAADu/xQAAAAFAAkAAADu/xUAAAAHAAkAAADu/xYAAAAHAAkAAADu/xcAAAAFAAkAAADu/xgAAAAIAAoAAADu/xkAAAAIAAoAAADu/xoAAAAFAAoAAADu/xsAAAAIAAkAAADu/xwAAAAHAAkAAADu/x0AAAAHAAkAAADu/x4AAAAFAAoAAADu/x8AAAAFAAkAAADu/yAAAAAFAAoAAADu/yEAAAAIAAoAAADu/yIAAAAAAAAAAADu/yMAAAAFAAoAAADu/yQAAAAFAAoAAADu/yUAAAAFAAoAAADu/yYAAAAFAAkAAADu/ycAAAAAAAAAAADu/ygAAAAHAAkAAADu/ykAAAAHAAoAAADu/yoAAAAIAAkAAADu/ysAAAAIAAkAAADu/ywAAAACAAMAAADu/y0AAAAAAAcAAADu/y4AAAABAAQAAADu/y8AAAABAAQAAADu/zAAAAABAAUAAADu/zEAAAAAAAAAAADu/zIAAAAAAAAAAADu/zMAAAAFAAoAAADv//D/AAABAAsAAADv//H/AAAFAAoAAADv//L/AAAHAAkAAADv//P/AAAIAAkAAADv//T/AAAIAAkAAADv//X/AAAAAAAAAADv//b/AAAFAAkAAADv//f/AAAHAAoAAADv//j/AAAFAAoAAADv//n/AAAIAAoAAADv//r/AAAAAAAAAADv//v/AAAFAAkAAADv//z/AAACAAYAAADv//3/AAADAAoAAADv//7/AAADAAcAAADv////AAAAAAEAAADv/wAAAAADAAkAAADv/wEAAAACAAgAAADv/wIAAAAIAAoAAADv/wMAAAAHAAkAAADv/wQAAAAFAAkAAADv/wUAAAAHAAoAAADv/wYAAAAFAAkAAADv/wcAAAAHAAoAAADv/wgAAAACAAMAAADv/wkAAAAAAAcAAADv/woAAAABAAQAAADv/wsAAAABAAYAAADv/wwAAAAAAAUAAADv/w0AAAAIAAkAAADv/w4AAAAFAAkAAADv/w8AAAAFAAoAAADv/xAAAAAFAAoAAADv/xEAAAAIAAoAAADv/xIAAAAAAAAAAADv/xMAAAAAAAAAAADv/xQAAAAFAAkAAADv/xUAAAAHAAoAAADv/xYAAAAHAAoAAADv/xcAAAAHAAkAAADv/xgAAAAHAAoAAADv/xkAAAAHAAoAAADv/xoAAAAFAAkAAADv/xsAAAAAAAAAAADv/xwAAAAFAAkAAADv/x0AAAAIAAkAAADv/x4AAAAHAAoAAADv/x8AAAAHAAoAAADv/yAAAAAIAAkAAADv/yEAAAAFAAkAAADv/yIAAAAAAAAAAADv/yMAAAAFAAoAAADv/yQAAAAAAAAAAADv/yUAAAAHAAoAAADv/yYAAAAIAAkAAADv/ycAAAAIAAoAAADv/ygAAAAHAAkAAADv/ykAAAAIAAkAAADv/yoAAAAFAAoAAADv/ysAAAAFAAoAAADv/ywAAAAAAAMAAADv/y0AAAABAAcAAADv/y4AAAABAAQAAADv/y8AAAABAAQAAADv/zAAAAABAAUAAADv/zEAAAAHAAoAAADv/zIAAAAIAAoAAADv/zMAAAAHAAoAAADw//D/AAABAAsAAADw//H/AAAIAAoAAADw//L/AAAHAAoAAADw//P/AAAHAAoAAADw//T/AAAHAAoAAADw//X/AAAIAAoAAADw//b/AAAHAAkAAADw//f/AAAFAAkAAADw//j/AAAAAAAAAADw//n/AAAHAAkAAADw//r/AAAIAAkAAADw//v/AAAIAAkAAADw//z/AAADAAYAAADw//3/AAAAAAEAAADw//7/AAADAAcAAADw////AAADAAcAAADw/wAAAAADAAcAAADw/wEAAAADAAkAAADw/wIAAAACAAgAAADw/wMAAAAHAAoAAADw/wQAAAAAAAAAAADw/wUAAAAHAAoAAADw/wYAAAAFAAkAAADw/wcAAAAHAAkAAADw/wgAAAAHAAkAAADw/wkAAAABAAMAAADw/woAAAABAAQAAADw/wsAAAABAAQAAADw/wwAAAABAAYAAADw/w0AAAAAAAQAAADw/w4AAAAAAAUAAADw/w8AAAAAAAAAAADw/xAAAAAFAAoAAADw/xEAAAAAAAAAAADw/xIAAAAAAAAAAADw/xMAAAAHAAoAAADw/xQAAAAFAAoAAADw/xUAAAAHAAkAAADw/xYAAAAFAAoAAADw/xcAAAAAAAAAAADw/xgAAAAIAAkAAADw/xkAAAAHAAkAAADw/xoAAAAAAAAAAADw/xsAAAAHAAoAAADw/xwAAAAAAAAAAADw/x0AAAAFAAkAAADw/x4AAAAIAAkAAADw/x8AAAAHAAoAAADw/yAAAAAIAAoAAADw/yEAAAAAAAAAAADw/yIAAAAFAAoAAADw/yMAAAAAAAAAAADw/yQAAAAHAAkAAADw/yUAAAAIAAkAAADw/yYAAAAFAAoAAADw/ycAAAAIAAoAAADw/ygAAAAIAAoAAADw/ykAAAAIAAkAAADw/yoAAAAHAAkAAADw/ysAAAAIAAkAAADw/ywAAAABAAMAAADw/y0AAAABAAQAAADw/y4AAAABAAQAAADw/y8AAAABAAQAAADw/zAAAAABAAUAAADw/zEAAAAIAAoAAADw/zIAAAAAAAAAAADw/zMAAAAIAAoAAADx//D/AAABAAsAAADx//H/AAAHAAkAAADx//L/AAAFAAkAAADx//P/AAAHAAoAAADx//T/AAAHAAkAAADx//X/AAAHAAkAAADx//b/AAAAAAAAAADx/wIAAAADAAgAAADx/wMAAAAIAAoAAADx/wQAAAAHAAoAAADx/wUAAAAHAAoAAADx/wYAAAAHAAkAAADx/wcAAAAHAAkAAADx/wgAAAAFAAkAAADx/wkAAAABAAMAAADx/woAAAABAAQAAADx/wsAAAABAAQAAADx/wwAAAABAAQAAADx/w0AAAABAAQAAADx/w4AAAABAAYAAADx/w8AAAAAAAQAAADx/xAAAAAAAAQAAADx/xEAAAAAAAUAAADx/xIAAAAIAAkAAADx/xMAAAAFAAkAAADx/xQAAAAIAAoAAADx/xUAAAAFAAkAAADx/xYAAAAIAAoAAADx/xcAAAAIAAkAAADx/xgAAAAAAAAAAADx/xkAAAAAAAAAAADx/xoAAAAAAAAAAADx/xsAAAAHAAkAAADx/xwAAAAIAAkAAADx/x0AAAAIAAkAAADx/x4AAAAIAAoAAADx/x8AAAAHAAkAAADx/yAAAAAIAAkAAADx/yEAAAAAAAAAAADx/yIAAAAIAAoAAADx/yMAAAAHAAoAAADx/yQAAAAIAAkAAADx/yUAAAAHAAoAAADx/yYAAAAIAAoAAADx/ycAAAAFAAkAAADx/ygAAAAHAAoAAADx/ykAAAAAAAAAAADx/yoAAAAFAAkAAADx/ysAAAAIAAoAAADx/ywAAAABAAMAAADx/y0AAAABAAQAAADx/y4AAAABAAQAAADx/y8AAAABAAQAAADx/zAAAAABAAUAAADx/zEAAAAIAAkAAADx/zIAAAAHAAoAAADx/zMAAAAAAAAAAADy//D/AAABAAsAAADy//H/AAAFAAoAAADy//L/AAAFAAkAAADy//P/AAAIAAkAAADy//T/AAAFAAoAAADy//X/AAAHAAkAAADy//b/AAAIAAkAAADy/wIAAAAEAAgAAADy/wMAAAAFAAoAAADy/wQAAAAIAAoAAADy/wUAAAAHAAoAAADy/wYAAAAHAAkAAADy/wcAAAAHAAoAAADy/wgAAAAAAAMAAADy/wkAAAABAAcAAADy/woAAAABAAQAAADy/wsAAAABAAQAAADy/wwAAAABAAQAAADy/w0AAAABAAQAAADy/w4AAAABAAQAAADy/w8AAAABAAQAAADy/xAAAAABAAQAAADy/xEAAAABAAYAAADy/xIAAAAAAAQAAADy/xMAAAAAAAQAAADy/xQAAAAAAAUAAADy/xUAAAAHAAkAAADy/xYAAAAHAAkAAADy/xcAAAAIAAkAAADy/xgAAAAIAAkAAADy/xkAAAAHAAkAAADy/xoAAAAIAAoAAADy/xsAAAAAAAAAAADy/xwAAAAFAAkAAADy/x0AAAAFAAkAAADy/x4AAAAAAAAAAADy/x8AAAAFAAoAAADy/yAAAAAFAAoAAADy/yEAAAAAAAAAAADy/yIAAAAFAAoAAADy/yMAAAAAAAAAAADy/yQAAAAIAAkAAADy/yUAAAAHAAoAAADy/yYAAAAAAAAAAADy/ycAAAAHAAkAAADy/ygAAAAIAAoAAADy/ykAAAAFAAkAAADy/yoAAAAIAAoAAADy/ysAAAAAAAAAAADy/ywAAAABAAMAAADy/y0AAAABAAQAAADy/y4AAAABAAQAAADy/y8AAAABAAQAAADy/zAAAAABAAUAAADy/zEAAAAIAAkAAADy/zIAAAAFAAoAAADy/zMAAAAIAAoAAADz//D/AAABAAsAAADz//H/AAAIAAoAAADz//L/AAAHAAoAAADz//P/AAAFAAkAAADz//T/AAAFAAoAAADz//X/AAAFAAoAAADz//b/AAAHAAoAAADz/wIAAAAAAAAAAADz/wMAAAAHAAoAAADz/wQAAAAIAAkAAADz/wUAAAAHAAkAAADz/wYAAAAIAAkAAADz/wcAAAAIAAkAAADz/wgAAAABAAMAAADz/wkAAAABAAQAAADz/woAAAABAAQAAADz/wsAAAAAAAYAAADz/wwAAAACAAQAAADz/w0AAAAAAAcAAADz/w4AAAABAAQAAADz/w8AAAABAAQAAADz/xAAAAABAAQAAADz/xEAAAABAAQAAADz/xIAAAABAAQAAADz/xMAAAABAAQAAADz/xQAAAABAAYAAADz/xUAAAAAAAQAAADz/xYAAAAAAAUAAADz/xcAAAAAAAAAAADz/xgAAAAHAAoAAADz/xkAAAAAAAAAAADz/xoAAAAFAAkAAADz/xsAAAAFAAkAAADz/xwAAAAHAAkAAADz/x0AAAAAAAAAAADz/x4AAAAFAAoAAADz/x8AAAAFAAkAAADz/yAAAAAIAAkAAADz/yEAAAAIAAkAAADz/yIAAAAAAAAAAADz/yMAAAAFAAoAAADz/yQAAAAFAAoAAADz/yUAAAAIAAkAAADz/yYAAAAIAAoAAADz/ycAAAAIAAkAAADz/ygAAAAIAAkAAADz/ykAAAAHAAoAAADz/yoAAAAIAAkAAADz/ysAAAAAAAMAAADz/ywAAAABAAcAAADz/y0AAAABAAQAAADz/y4AAAABAAQAAADz/y8AAAABAAQAAADz/zAAAAABAAUAAADz/zEAAAAHAAoAAADz/zIAAAAIAAkAAADz/zMAAAAHAAoAAAD0//D/AAABAAsAAAD0//H/AAAFAAoAAAD0//L/AAAFAAkAAAD0//P/AAAFAAkAAAD0//T/AAAAAAAAAAD0//X/AAAFAAkAAAD0//b/AAAHAAoAAAD0/wIAAAAFAAkAAAD0/wMAAAAHAAoAAAD0/wQAAAANABwAAAD0/wUAAAAHAAkAAAD0/wYAAAAFAAkAAAD0/wcAAAAAAAMAAAD0/wgAAAABAAcAAAD0/wkAAAABAAQAAAD0/woAAAAAAAYAAAD0/wsAAAACAAUAAAD0/wwAAAAHAAkAAAD0/w0AAAACAAMAAAD0/w4AAAACAAQAAAD0/w8AAAAAAAcAAAD0/xAAAAABAAQAAAD0/xEAAAABAAQAAAD0/xIAAAABAAQAAAD0/xMAAAABAAQAAAD0/xQAAAABAAQAAAD0/xUAAAABAAQAAAD0/xYAAAABAAYAAAD0/xcAAAAAAAQAAAD0/xgAAAAAAAUAAAD0/xkAAAAHAAkAAAD0/xoAAAAAAAAAAAD0/xsAAAAIAAkAAAD0/xwAAAAFAAoAAAD0/x0AAAAIAAoAAAD0/x4AAAAHAAkAAAD0/x8AAAAIAAkAAAD0/yAAAAAIAAkAAAD0/yEAAAAHAAoAAAD0/yIAAAAFAAkAAAD0/yMAAAAIAAkAAAD0/yQAAAAAAAAAAAD0/yUAAAAIAAoAAAD0/yYAAAAAAAAAAAD0/ycAAAAFAAkAAAD0/ygAAAAIAAoAAAD0/ykAAAAHAAkAAAD0/yoAAAAHAAoAAAD0/ysAAAABAAMAAAD0/ywAAAABAAQAAAD0/y0AAAABAAQAAAD0/y4AAAABAAQAAAD0/y8AAAAAAAYAAAD0/zAAAAACAAUAAAD0/zEAAAAFAAkAAAD0/zIAAAAIAAoAAAD0/zMAAAAIAAoAAAD1//D/AAABAAsAAAD1//H/AAAFAAkAAAD1//L/AAAIAAkAAAD1//P/AAAFAAkAAAD1//T/AAAHAAkAAAD1//X/AAAAAAAAAAD1//b/AAAHAAkAAAD1/wIAAAAFAAoAAAD1/wMAAAAHAAoAAAD1/wQAAAAFAAkAAAD1/wUAAAAIAAkAAAD1/wYAAAAAAAMAAAD1/wcAAAABAAcAAAD1/wgAAAABAAQAAAD1/wkAAAABAAQAAAD1/woAAAABAAUAAAD1/wsAAAAAAAAAAAD1/wwAAAAIAAoAAAD1/w0AAAAIAAoAAAD1/w4AAAAIAAoAAAD1/w8AAAACAAMAAAD1/xAAAAAAAAcAAAD1/xEAAAABAAQAAAD1/xIAAAABAAQAAAD1/xMAAAABAAQAAAD1/xQAAAABAAQAAAD1/xUAAAABAAQAAAD1/xYAAAABAAQAAAD1/xcAAAABAAQAAAD1/xgAAAABAAYAAAD1/xkAAAAAAAQAAAD1/xoAAAAAAAUAAAD1/xsAAAAFAAkAAAD1/xwAAAAFAAoAAAD1/x0AAAAFAAkAAAD1/x4AAAAIAAkAAAD1/x8AAAAAAAAAAAD1/yAAAAAHAAoAAAD1/yEAAAAAAAAAAAD1/yIAAAAIAAoAAAD1/yMAAAAIAAkAAAD1/yQAAAAFAAoAAAD1/yUAAAAFAAkAAAD1/yYAAAAHAAoAAAD1/ycAAAAAAAAAAAD1/ygAAAAIAAkAAAD1/ykAAAAFAAkAAAD1/yoAAAAAAAMAAAD1/ysAAAABAAcAAAD1/ywAAAABAAQAAAD1/y0AAAABAAQAAAD1/y4AAAAAAAYAAAD1/y8AAAACAAUAAAD1/zAAAAAAAAAAAAD1/zEAAAAHAAoAAAD1/zIAAAAFAAoAAAD1/zMAAAAHAAoAAAD2//D/AAABAAsAAAD2//H/AAAAAAAAAAD2//L/AAAHAAoAAAD2//P/AAAAAAAAAAD2//T/AAAAAAAAAAD2//X/AAAHAAoAAAD2//b/AAAAAAAAAAD2/wIAAAAAAAAAAAD2/wMAAAAAAAAAAAD2/wQAAAAAAAMAAAD2/wUAAAAAAAQAAAD2/wYAAAABAAcAAAD2/wcAAAABAAQAAAD2/wgAAAABAAQAAAD2/wkAAAAAAAYAAAD2/woAAAACAAUAAAD2/wsAAAAAAAAAAAD2/wwAAAAIAAkAAAD2/w0AAAAFAAoAAAD2/w4AAAAFAAoAAAD2/w8AAAAFAAoAAAD2/xAAAAACAAMAAAD2/xEAAAACAAQAAAD2/xIAAAACAAQAAAD2/xMAAAACAAQAAAD2/xQAAAAAAAcAAAD2/xUAAAABAAQAAAD2/xYAAAABAAQAAAD2/xcAAAABAAQAAAD2/xgAAAABAAQAAAD2/xkAAAABAAQAAAD2/xoAAAABAAYAAAD2/xsAAAAAAAUAAAD2/xwAAAAFAAkAAAD2/x0AAAAFAAkAAAD2/x4AAAAHAAkAAAD2/x8AAAAFAAkAAAD2/yAAAAAFAAkAAAD2/yEAAAAFAAkAAAD2/yIAAAAIAAkAAAD2/yMAAAAFAAkAAAD2/yQAAAAFAAkAAAD2/yUAAAAFAAkAAAD2/yYAAAAAAAAAAAD2/ycAAAAIAAkAAAD2/ygAAAAHAAoAAAD2/ykAAAAAAAMAAAD2/yoAAAABAAcAAAD2/ysAAAABAAQAAAD2/ywAAAABAAQAAAD2/y0AAAAAAAYAAAD2/y4AAAACAAUAAAD2/y8AAAAFAAoAAAD2/zAAAAAFAAkAAAD2/zEAAAAFAAoAAAD2/zIAAAAFAAkAAAD2/zMAAAAHAAkAAAD3//D/AAABAAsAAAD3//H/AAAFAAoAAAD3//L/AAAFAAkAAAD3//P/AAAFAAkAAAD3//T/AAAIAAoAAAD3//X/AAAIAAoAAAD3//b/AAAIAAkAAAD3/wIAAAAAAAMAAAD3/wMAAAAAAAQAAAD3/wQAAAABAAcAAAD3/wUAAAABAAQAAAD3/wYAAAABAAQAAAD3/wcAAAABAAQAAAD3/wgAAAAAAAYAAAD3/wkAAAACAAUAAAD3/woAAAAHAAkAAAD3/wsAAAAIAAkAAAD3/wwAAAAIAAkAAAD3/w0AAAAIAAkAAAD3/w4AAAAHAAkAAAD3/w8AAAAHAAoAAAD3/xAAAAAIAAkAAAD3/xEAAAAIAAkAAAD3/xIAAAAAAAAAAAD3/xMAAAAHAAoAAAD3/xQAAAACAAMAAAD3/xUAAAACAAQAAAD3/xYAAAAAAAcAAAD3/xcAAAABAAQAAAD3/xgAAAABAAQAAAD3/xkAAAABAAQAAAD3/xoAAAABAAQAAAD3/xsAAAABAAYAAAD3/xwAAAAAAAUAAAD3/x0AAAAHAAoAAAD3/x4AAAAHAAkAAAD3/x8AAAAHAAoAAAD3/yAAAAAFAAoAAAD3/yEAAAAFAAoAAAD3/yIAAAAIAAkAAAD3/yMAAAAHAAkAAAD3/yQAAAAFAAkAAAD3/yUAAAAFAAkAAAD3/yYAAAAHAAoAAAD3/ycAAAAHAAkAAAD3/ygAAAAHAAoAAAD3/ykAAAABAAMAAAD3/yoAAAABAAQAAAD3/ysAAAABAAQAAAD3/ywAAAABAAQAAAD3/y0AAAABAAUAAAD3/y4AAAAHAAkAAAD3/y8AAAAFAAkAAAD3/zAAAAAHAAoAAAD3/zEAAAAIAAoAAAD3/zIAAAAIAAkAAAD3/zMAAAAAAAAAAAD4//D/AAABAAsAAAD4//H/AAAIAAoAAAD4//L/AAAIAAkAAAD4//P/AAAFAAkAAAD4//T/AAAFAAoAAAD4//X/AAAFAAkAAAD4//b/AAAHAAoAAAD4/wIAAAABAAcAAAD4/wMAAAABAAQAAAD4/wQAAAABAAQAAAD4/wUAAAAAAAYAAAD4/wYAAAACAAQAAAD4/wcAAAACAAQAAAD4/wgAAAACAAUAAAD4/wkAAAAHAAoAAAD4/woAAAAHAAkAAAD4/wsAAAAHAAoAAAD4/wwAAAAIAAkAAAD4/w0AAAAIAAkAAAD4/w4AAAAHAAkAAAD4/w8AAAAHAAoAAAD4/xAAAAAAAAAAAAD4/xEAAAAHAAkAAAD4/xIAAAAAAAAAAAD4/xMAAAAIAAkAAAD4/xQAAAAAAAAAAAD4/xUAAAAIAAkAAAD4/xYAAAACAAMAAAD4/xcAAAACAAQAAAD4/xgAAAAAAAcAAAD4/xkAAAABAAQAAAD4/xoAAAABAAQAAAD4/xsAAAABAAQAAAD4/xwAAAABAAYAAAD4/x0AAAAAAAUAAAD4/x4AAAAFAAkAAAD4/x8AAAAFAAkAAAD4/yAAAAAHAAkAAAD4/yEAAAAHAAkAAAD4/yIAAAAIAAkAAAD4/yMAAAAHAAkAAAD4/yQAAAAHAAkAAAD4/yUAAAAFAAkAAAD4/yYAAAAHAAoAAAD4/ycAAAAIAAkAAAD4/ygAAAAAAAMAAAD4/ykAAAABAAcAAAD4/yoAAAABAAQAAAD4/ysAAAABAAQAAAD4/ywAAAABAAQAAAD4/y0AAAABAAUAAAD4/y4AAAAIAAoAAAD4/y8AAAAIAAoAAAD4/zAAAAAHAAkAAAD4/zEAAAAFAAoAAAD4/zIAAAAFAAoAAAD4/zMAAAAAAAAAAAD5//D/AAABAAsAAAD5//H/AAAIAAkAAAD5//L/AAAFAAoAAAD5//P/AAAIAAkAAAD5//T/AAAFAAoAAAD5//X/AAAFAAkAAAD5//b/AAAFAAoAAAD5/wIAAAABAAQAAAD5/wMAAAAAAAYAAAD5/wQAAAACAAQAAAD5/wUAAAACAAUAAAD5/wYAAAAFAAkAAAD5/wcAAAAHAAkAAAD5/wgAAAAFAAkAAAD5/wkAAAAFAAkAAAD5/woAAAAIAAoAAAD5/wsAAAAFAAkAAAD5/wwAAAAFAAoAAAD5/w0AAAAHAAkAAAD5/w4AAAAHAAoAAAD5/w8AAAAAAAAAAAD5/xAAAAAIAAoAAAD5/xEAAAAIAAoAAAD5/xIAAAAHAAkAAAD5/xMAAAAHAAoAAAD5/xQAAAAFAAkAAAD5/xUAAAAHAAoAAAD5/xYAAAAIAAkAAAD5/xcAAAAIAAoAAAD5/xgAAAACAAMAAAD5/xkAAAAAAAcAAAD5/xoAAAABAAQAAAD5/xsAAAABAAQAAAD5/xwAAAABAAQAAAD5/x0AAAABAAYAAAD5/x4AAAAAAAUAAAD5/x8AAAAFAAkAAAD5/yAAAAAFAAkAAAD5/yEAAAAHAAkAAAD5/yIAAAAHAAoAAAD5/yMAAAAHAAkAAAD5/yQAAAAHAAkAAAD5/yUAAAAHAAoAAAD5/yYAAAAAAAAAAAD5/ycAAAAFAAkAAAD5/ygAAAABAAMAAAD5/ykAAAABAAQAAAD5/yoAAAABAAQAAAD5/ysAAAABAAQAAAD5/ywAAAAAAAYAAAD5/y0AAAACAAUAAAD5/y4AAAAHAAkAAAD5/y8AAAAHAAoAAAD5/zAAAAAFAAkAAAD5/zEAAAAAAAAAAAD5/zIAAAAFAAkAAAD5/zMAAAAHAAkAAAD6//D/AAABAAsAAAD6//H/AAAHAAoAAAD6//L/AAAIAAoAAAD6//P/AAAFAAkAAAD6//T/AAAHAAkAAAD6//X/AAAIAAoAAAD6//b/AAAIAAkAAAD6/wIAAAABAAQAAAD6/wMAAAABAAUAAAD6/wQAAAAIAAoAAAD6/wUAAAAIAAoAAAD6/wYAAAAFAAkAAAD6/wcAAAAIAAoAAAD6/wgAAAAHAAkAAAD6/wkAAAAFAAoAAAD6/woAAAAHAAoAAAD6/wsAAAAHAAkAAAD6/wwAAAAIAAoAAAD6/w0AAAAHAAoAAAD6/w4AAAAFAAoAAAD6/w8AAAAHAAkAAAD6/xAAAAAHAAoAAAD6/xEAAAAFAAkAAAD6/xIAAAAFAAkAAAD6/xMAAAAHAAkAAAD6/xQAAAAIAAkAAAD6/xUAAAAHAAkAAAD6/xYAAAAIAAoAAAD6/xcAAAAHAAkAAAD6/xgAAAAIAAkAAAD6/xkAAAACAAMAAAD6/xoAAAAAAAcAAAD6/xsAAAABAAQAAAD6/xwAAAABAAQAAAD6/x0AAAABAAQAAAD6/x4AAAABAAYAAAD6/x8AAAAAAAUAAAD6/yAAAAAIAAkAAAD6/yEAAAAFAAoAAAD6/yIAAAAIAAkAAAD6/yMAAAAHAAkAAAD6/yQAAAAFAAkAAAD6/yUAAAAFAAkAAAD6/yYAAAAAAAMAAAD6/ycAAAAAAAQAAAD6/ygAAAABAAcAAAD6/ykAAAABAAQAAAD6/yoAAAABAAQAAAD6/ysAAAAAAAYAAAD6/ywAAAACAAUAAAD6/y0AAAAFAAkAAAD6/y4AAAAIAAoAAAD6/y8AAAAHAAkAAAD6/zAAAAAIAAoAAAD6/zEAAAAIAAoAAAD6/zIAAAAIAAoAAAD6/zMAAAAHAAkAAAD7//D/AAABAAsAAAD7//H/AAAIAAkAAAD7//L/AAAFAAoAAAD7//P/AAAFAAkAAAD7//T/AAAFAAoAAAD7//X/AAAFAAkAAAD7//b/AAAIAAoAAAD7/wIAAAABAAQAAAD7/wMAAAABAAUAAAD7/wQAAAAHAAkAAAD7/wUAAAAFAAoAAAD7/wYAAAAIAAoAAAD7/wcAAAAAAAAAAAD7/wgAAAAHAAoAAAD7/wkAAAAIAAkAAAD7/woAAAAIAAkAAAD7/wsAAAAIAAoAAAD7/wwAAAAIAAkAAAD7/w0AAAAAAAAAAAD7/w4AAAAAAAAAAAD7/w8AAAAFAAkAAAD7/xAAAAAIAAkAAAD7/xEAAAAFAAoAAAD7/xIAAAAAAAAAAAD7/xMAAAAIAAoAAAD7/xQAAAAAAAAAAAD7/xUAAAAIAAoAAAD7/xYAAAAHAAoAAAD7/xcAAAAAAAAAAAD7/xgAAAAIAAkAAAD7/xkAAAAFAAkAAAD7/xoAAAACAAMAAAD7/xsAAAAAAAcAAAD7/xwAAAABAAQAAAD7/x0AAAABAAQAAAD7/x4AAAABAAQAAAD7/x8AAAABAAUAAAD7/yAAAAAFAAoAAAD7/yEAAAAFAAkAAAD7/yIAAAAIAAoAAAD7/yMAAAAFAAoAAAD7/yQAAAAHAAkAAAD7/yUAAAAAAAMAAAD7/yYAAAABAAcAAAD7/ycAAAABAAQAAAD7/ygAAAABAAQAAAD7/ykAAAABAAQAAAD7/yoAAAAAAAYAAAD7/ysAAAACAAUAAAD7/ywAAAAIAAkAAAD7/y0AAAAIAAkAAAD7/y4AAAAHAAoAAAD7/y8AAAAIAAoAAAD7/zAAAAAFAAoAAAD7/zEAAAAHAAkAAAD7/zIAAAAHAAkAAAD7/zMAAAAHAAoAAAD8//D/AAABAAsAAAD8//H/AAAHAAoAAAD8//L/AAAHAAoAAAD8//P/AAAFAAkAAAD8//T/AAAFAAkAAAD8//X/AAAIAAkAAAD8//b/AAAAAAAAAAD8/wIAAAAAAAYAAAD8/wMAAAACAAUAAAD8/wQAAAANABwAAAD8/wUAAAAFAAkAAAD8/wYAAAAFAAkAAAD8/wcAAAAIAAoAAAD8/wgAAAAHAAoAAAD8/wkAAAAHAAoAAAD8/woAAAAAAAAAAAD8/wsAAAAHAAkAAAD8/wwAAAAAAAAAAAD8/w0AAAAIAAkAAAD8/w4AAAAHAAkAAAD8/w8AAAAAAAAAAAD8/xAAAAAFAAkAAAD8/xEAAAAFAAkAAAD8/xIAAAAFAAoAAAD8/xMAAAAHAAoAAAD8/xQAAAAFAAkAAAD8/xUAAAAFAAkAAAD8/xYAAAAIAAkAAAD8/xcAAAAIAAkAAAD8/xgAAAAIAAoAAAD8/xkAAAAHAAoAAAD8/xoAAAAIAAkAAAD8/xsAAAABAAMAAAD8/xwAAAABAAQAAAD8/x0AAAABAAQAAAD8/x4AAAABAAQAAAD8/x8AAAABAAYAAAD8/yAAAAAAAAUAAAD8/yEAAAAFAAoAAAD8/yIAAAAFAAoAAAD8/yMAAAAFAAkAAAD8/yQAAAAAAAMAAAD8/yUAAAABAAcAAAD8/yYAAAABAAQAAAD8/ycAAAABAAQAAAD8/ygAAAABAAQAAAD8/ykAAAAAAAYAAAD8/yoAAAACAAUAAAD8/ysAAAAHAAkAAAD8/ywAAAAAAAAAAAD8/y0AAAAFAAoAAAD8/y4AAAAAAAAAAAD8/y8AAAAIAAkAAAD8/zAAAAAHAAoAAAD8/zEAAAAIAAkAAAD8/zIAAAAHAAkAAAD8/zMAAAAFAAoAAAD9//D/AAABAAsAAAD9//H/AAAIAAoAAAD9//L/AAAIAAkAAAD9//P/AAAAAAAAAAD9//T/AAAAAAAAAAD9//X/AAAIAAkAAAD9//b/AAAAAAAAAAD9/wIAAAABAAUAAAD9/wMAAAAAAAAAAAD9/wQAAAAHAAoAAAD9/wUAAAAHAAkAAAD9/wYAAAALABwAAAD9/wcAAAAIAAkAAAD9/wgAAAAIAAoAAAD9/wkAAAAIAAoAAAD9/woAAAAIAAoAAAD9/wsAAAAHAAoAAAD9/wwAAAAFAAkAAAD9/w0AAAAFAAoAAAD9/w4AAAAAAAAAAAD9/w8AAAAIAAkAAAD9/xAAAAAIAAoAAAD9/xEAAAAFAAkAAAD9/xIAAAAAAAAAAAD9/xMAAAAFAAkAAAD9/xQAAAAFAAkAAAD9/xUAAAAHAAkAAAD9/xYAAAAFAAoAAAD9/xcAAAAFAAoAAAD9/xgAAAAHAAkAAAD9/xkAAAAFAAoAAAD9/xoAAAAAAAAAAAD9/xsAAAACAAMAAAD9/xwAAAAAAAcAAAD9/x0AAAABAAQAAAD9/x4AAAABAAQAAAD9/x8AAAABAAQAAAD9/yAAAAABAAUAAAD9/yEAAAAHAAoAAAD9/yIAAAAFAAkAAAD9/yMAAAAIAAoAAAD9/yQAAAABAAMAAAD9/yUAAAABAAQAAAD9/yYAAAABAAQAAAD9/ycAAAABAAQAAAD9/ygAAAABAAQAAAD9/ykAAAABAAUAAAD9/yoAAAAIAAoAAAD9/ysAAAAHAAoAAAD9/ywAAAAHAAoAAAD9/y0AAAAHAAkAAAD9/y4AAAAHAAkAAAD9/y8AAAAAAAAAAAD9/zAAAAAIAAoAAAD9/zEAAAAIAAkAAAD9/zIAAAAAAAAAAAD9/zMAAAAFAAkAAAD+//D/AAABAAsAAAD+//H/AAAHAAoAAAD+//L/AAAHAAoAAAD+//P/AAAIAAkAAAD+//T/AAAFAAkAAAD+//X/AAAIAAkAAAD+//b/AAAIAAoAAAD+/wIAAAABAAUAAAD+/wMAAAANABwAAAD+/wQAAAAFAAkAAAD+/wUAAAAIAAkAAAD+/wYAAAAMABwAAAD+/wgAAAAHAAkAAAD+/wkAAAAIAAoAAAD+/woAAAAHAAoAAAD+/wsAAAAHAAkAAAD+/wwAAAAHAAoAAAD+/w0AAAAFAAoAAAD+/w4AAAAIAAoAAAD+/w8AAAAIAAkAAAD+/xAAAAAIAAkAAAD+/xEAAAAHAAkAAAD+/xIAAAAFAAoAAAD+/xMAAAAAAAAAAAD+/xQAAAAFAAoAAAD+/xUAAAAIAAkAAAD+/xYAAAAHAAkAAAD+/xcAAAAHAAkAAAD+/xgAAAAIAAkAAAD+/xkAAAAAAAAAAAD+/xoAAAAHAAkAAAD+/xsAAAAAAAAAAAD+/xwAAAABAAMAAAD+/x0AAAABAAQAAAD+/x4AAAABAAQAAAD+/x8AAAABAAQAAAD+/yAAAAABAAUAAAD+/yEAAAAAAAAAAAD+/yIAAAAFAAkAAAD+/yMAAAAAAAMAAAD+/yQAAAABAAcAAAD+/yUAAAABAAQAAAD+/yYAAAABAAQAAAD+/ycAAAAAAAYAAAD+/ygAAAACAAQAAAD+/ykAAAACAAUAAAD+/yoAAAAHAAoAAAD+/ysAAAAIAAoAAAD+/ywAAAAIAAkAAAD+/y0AAAAHAAkAAAD+/y4AAAAFAAoAAAD+/y8AAAAIAAoAAAD+/zAAAAAHAAkAAAD+/zEAAAAHAAkAAAD+/zIAAAAHAAkAAAD+/zMAAAAFAAoAAAD///D/AAABAAsAAAD///H/AAAFAAkAAAD///L/AAAFAAoAAAD///P/AAAIAAoAAAD///T/AAAAAAAAAAD///X/AAAIAAkAAAD///b/AAAHAAkAAAD//wIAAAABAAUAAAD//wMAAAAIAAoAAAD//wQAAAAIAAkAAAD//wUAAAAFAAoAAAD//wYAAAAHAAoAAAD//wcAAAAIAAoAAAD//wgAAAAFAAkAAAD//wkAAAAHAAoAAAD//woAAAAAAAAAAAD//wsAAAAHAAkAAAD//wwAAAAFAAkAAAD//w0AAAAIAAkAAAD//w4AAAAHAAkAAAD//w8AAAAFAAkAAAD//xAAAAAHAAoAAAD//xEAAAAHAAoAAAD//xIAAAAIAAkAAAD//xMAAAAFAAkAAAD//xQAAAAIAAoAAAD//xUAAAAAAAAAAAD//xYAAAAFAAkAAAD//xcAAAAAAAAAAAD//xgAAAAIAAoAAAD//xkAAAAHAAkAAAD//xoAAAAFAAoAAAD//xsAAAAFAAkAAAD//xwAAAACAAMAAAD//x0AAAACAAQAAAD//x4AAAAAAAcAAAD//x8AAAABAAQAAAD//yAAAAABAAYAAAD//yEAAAAAAAQAAAD//yIAAAAAAAQAAAD//yMAAAABAAcAAAD//yQAAAABAAQAAAD//yUAAAABAAQAAAD//yYAAAAAAAYAAAD//ycAAAACAAUAAAD//ygAAAAFAAkAAAD//ykAAAAAAAAAAAD//yoAAAAHAAoAAAD//ysAAAAAAAAAAAD//ywAAAAHAAkAAAD//y0AAAAFAAoAAAD//y4AAAAFAAoAAAD//y8AAAAIAAoAAAD//zAAAAAIAAkAAAD//zEAAAAIAAkAAAD//zIAAAAIAAkAAAD//zMAAAAHAAoAAAAAAPD/AAABAAsAAAAAAPH/AAAIAAoAAAAAAPL/AAAIAAkAAAAAAPP/AAAHAAoAAAAAAPT/AAAIAAoAAAAAAPX/AAAAAAAAAAAAAPb/AAAIAAoAAAAAAAIAAAABAAUAAAAAAAMAAAAHAAoAAAAAAAQAAAALABwAAAAAAAUAAAAIAAkAAAAAAAYAAAANABwAAAAAAAcAAAAAAAAAAAAAAAgAAAAHAAkAAAAAAAkAAAAAAAAAAAAAAAoAAAAFAAkAAAAAAAsAAAAHAAkAAAAAAAwAAAAIAAoAAAAAAA0AAAAIAAkAAAAAAA4AAAAIAAkAAAAAAA8AAAAFAAoAAAAAABAAAAAHAAkAAAAAABEAAAAIAAkAAAAAABIAAAAHAAoAAAAAABMAAAAFAAoAAAAAABQAAAAAAAAAAAAAABUAAAAHAAkAAAAAABYAAAAAAAAAAAAAABcAAAAFAAkAAAAAABgAAAAIAAkAAAAAABkAAAAIAAoAAAAAABoAAAAIAAkAAAAAABsAAAAFAAoAAAAAABwAAAAIAAoAAAAAAB0AAAAFAAkAAAAAAB4AAAABAAMAAAAAAB8AAAABAAQAAAAAACAAAAABAAQAAAAAACEAAAABAAQAAAAAACIAAAABAAQAAAAAACMAAAABAAQAAAAAACQAAAABAAQAAAAAACUAAAABAAQAAAAAACYAAAABAAUAAAAAACcAAAAFAAoAAAAAACgAAAAFAAoAAAAAACkAAAAIAAoAAAAAACoAAAAFAAkAAAAAACsAAAAIAAkAAAAAACwAAAAFAAkAAAAAAC0AAAAAAAAAAAAAAC4AAAAAAAAAAAAAAC8AAAAIAAkAAAAAADAAAAAHAAkAAAAAADEAAAAIAAoAAAAAADIAAAAAAAAAAAAAADMAAAAFAAkAAAABAPD/AAABAAsAAAABAPH/AAAFAAkAAAABAPL/AAAHAAoAAAABAPP/AAAAAAAAAAABAPT/AAAAAAAAAAABAPX/AAAHAAkAAAABAPb/AAAFAAkAAAABAAIAAAABAAUAAAABAAMAAAAAAAAAAAABAAQAAAAMABwAAAABAAUAAAAAAAAAAAABAAYAAAAFAAoAAAABAAcAAAAHAAoAAAABAAgAAAAAAAAAAAABAAkAAAAHAAoAAAABAAoAAAAIAAoAAAABAAsAAAAIAAkAAAABAAwAAAAIAAkAAAABAA0AAAAIAAoAAAABAA4AAAAHAAkAAAABAA8AAAAIAAoAAAABABAAAAAIAAkAAAABABEAAAAAAAAAAAABABIAAAAFAAkAAAABABMAAAAAAAAAAAABABQAAAAHAAoAAAABABUAAAAFAAkAAAABABYAAAAFAAkAAAABABcAAAAHAAkAAAABABgAAAAAAAAAAAABABkAAAAFAAoAAAABABoAAAAFAAkAAAABABsAAAAIAAoAAAABABwAAAAHAAkAAAABAB0AAAAIAAoAAAABAB4AAAABAAMAAAABAB8AAAABAAQAAAABACAAAAABAAQAAAABACEAAAABAAQAAAABACIAAAABAAQAAAABACMAAAABAAQAAAABACQAAAAAAAYAAAABACUAAAACAAQAAAABACYAAAACAAUAAAABACcAAAAFAAkAAAABACgAAAAIAAkAAAABACkAAAAIAAoAAAABACoAAAAFAAoAAAABACsAAAAFAAkAAAABACwAAAAFAAoAAAABAC0AAAAHAAoAAAABAC4AAAAFAAoAAAABAC8AAAAFAAoAAAABADAAAAAIAAoAAAABADEAAAAIAAkAAAABADIAAAAAAAAAAAABADMAAAAFAAoAAAACAPD/AAABAAsAAAACAPH/AAAAAAAAAAACAPL/AAAFAAkAAAACAPP/AAAIAAoAAAACAPT/AAAFAAoAAAACAPX/AAAFAAoAAAACAPb/AAAFAAkAAAACAAIAAAABAAUAAAACAAMAAAAIAAoAAAACAAQAAAAFAAoAAAACAAUAAAAIAAkAAAACAAYAAAAFAAkAAAACAAcAAAAIAAoAAAACAAgAAAAAAAAAAAACAAkAAAAIAAkAAAACAAoAAAAFAAkAAAACAAsAAAAIAAkAAAACAAwAAAAAAAAAAAACAA0AAAAFAAkAAAACAA4AAAAFAAkAAAACAA8AAAAFAAkAAAACABAAAAAFAAkAAAACABEAAAAIAAoAAAACABIAAAAAAAAAAAACABMAAAAHAAoAAAACABQAAAAAAAAAAAACABUAAAAFAAoAAAACABYAAAAIAAoAAAACABcAAAAHAAoAAAACABgAAAAFAAoAAAACABkAAAAHAAoAAAACABoAAAAFAAkAAAACABsAAAAIAAkAAAACABwAAAAIAAkAAAACAB0AAAAHAAkAAAACAB4AAAACAAMAAAACAB8AAAAAAAcAAAACACAAAAABAAQAAAACACEAAAABAAQAAAACACIAAAABAAQAAAACACMAAAAAAAYAAAACACQAAAACAAUAAAACACUAAAAFAAkAAAACACYAAAAHAAkAAAACACcAAAAAAAAAAAACACgAAAAFAAoAAAACACkAAAAIAAkAAAACACoAAAAFAAoAAAACACsAAAAAAAAAAAACACwAAAAAAAAAAAACAC0AAAAFAAkAAAACAC4AAAAHAAkAAAACAC8AAAAIAAoAAAACADAAAAAFAAoAAAACADEAAAAAAAAAAAACADIAAAAHAAkAAAACADMAAAAFAAkAAAADAPD/AAABAAsAAAADAPH/AAAFAAkAAAADAPL/AAAHAAoAAAADAPP/AAAFAAoAAAADAPT/AAAAAAAAAAADAPX/AAAIAAkAAAADAPb/AAAIAAkAAAADAAIAAAABAAUAAAADAAMAAAAFAAkAAAADAAQAAAANABwAAAADAAUAAAAFAAkAAAADAAYAAAAIAAkAAAADAAcAAAANABwAAAADAAgAAAAFAAoAAAADAAkAAAAFAAoAAAADAAoAAAAIAAoAAAADAAsAAAAHAAkAAAADAAwAAAAHAAoAAAADAA0AAAAFAAoAAAADAA4AAAAFAAoAAAADAA8AAAAFAAoAAAADABAAAAAIAAoAAAADABEAAAAHAAkAAAADABIAAAAAAAAAAAADABMAAAAHAAkAAAADABQAAAAIAAoAAAADABUAAAAIAAoAAAADABYAAAAFAAoAAAADABcAAAAFAAoAAAADABgAAAAHAAkAAAADABkAAAAIAAoAAAADABoAAAAFAAkAAAADABsAAAAFAAoAAAADABwAAAAHAAoAAAADAB0AAAAAAAAAAAADAB4AAAAAAAAAAAADAB8AAAABAAMAAAADACAAAAABAAQAAAADACEAAAABAAQAAAADACIAAAAAAAYAAAADACMAAAACAAUAAAADACQAAAAAAAAAAAADACUAAAAHAAoAAAADACYAAAAAAAAAAAADACcAAAAHAAoAAAADACgAAAAIAAkAAAADACkAAAAHAAkAAAADACoAAAAIAAkAAAADACsAAAAHAAoAAAADACwAAAAIAAkAAAADAC0AAAAHAAkAAAADAC4AAAAHAAoAAAADAC8AAAAHAAoAAAADADAAAAAIAAkAAAADADEAAAAIAAoAAAADADIAAAAHAAkAAAADADMAAAAFAAkAAAAEAPD/AAABAAsAAAAEAPH/AAAAAAAAAAAEAPL/AAAHAAkAAAAEAPP/AAAFAAoAAAAEAPT/AAAFAAoAAAAEAPX/AAAIAAkAAAAEAPb/AAAFAAoAAAAEAAIAAAABAAUAAAAEAAMAAAAHAAoAAAAEAAQAAAAIAAkAAAAEAAUAAAAAAAAAAAAEAAYAAAAFAAoAAAAEAAcAAAAHAAkAAAAEAAgAAAAFAAoAAAAEAAkAAAAIAAkAAAAEAAoAAAAAAAAAAAAEAAsAAAAAAAAAAAAEAAwAAAAAAAAAAAAEAA0AAAAAAAAAAAAEAA4AAAAFAAkAAAAEAA8AAAAIAAkAAAAEABAAAAAFAAoAAAAEABEAAAAIAAkAAAAEABIAAAAIAAoAAAAEABMAAAAIAAoAAAAEABQAAAAFAAoAAAAEABUAAAAFAAkAAAAEABYAAAAHAAoAAAAEABcAAAAHAAoAAAAEABgAAAAFAAoAAAAEABkAAAAAAAAAAAAEABoAAAAHAAkAAAAEABsAAAAIAAoAAAAEABwAAAAFAAoAAAAEAB0AAAAFAAoAAAAEAB4AAAAFAAkAAAAEAB8AAAABAAMAAAAEACAAAAABAAQAAAAEACEAAAABAAQAAAAEACIAAAABAAUAAAAEACMAAAAHAAoAAAAEACQAAAAFAAkAAAAEACUAAAAAAAAAAAAEACYAAAAFAAoAAAAEACcAAAAIAAoAAAAEACgAAAAHAAkAAAAEACkAAAAHAAoAAAAEACoAAAAIAAkAAAAEACsAAAAFAAoAAAAEACwAAAAFAAkAAAAEAC0AAAAHAAkAAAAEAC4AAAAHAAkAAAAEAC8AAAAIAAkAAAAEADAAAAAFAAoAAAAEADEAAAAFAAoAAAAEADIAAAAFAAkAAAAEADMAAAAHAAkAAAAFAPD/AAABAAsAAAAFAPH/AAAHAAkAAAAFAPL/AAAHAAoAAAAFAPP/AAAFAAkAAAAFAPT/AAAIAAoAAAAFAPX/AAAHAAkAAAAFAPb/AAAFAAkAAAAFAAIAAAABAAUAAAAFAAMAAAAHAAoAAAAFAAQAAAAIAAoAAAAFAAUAAAAIAAoAAAAFAAYAAAAHAAoAAAAFAAcAAAAFAAoAAAAFAAgAAAAHAAkAAAAFAAkAAAAFAAkAAAAFAAoAAAAAAAAAAAAFAAsAAAAHAAkAAAAFAAwAAAAHAAoAAAAFAA0AAAAHAAkAAAAFAA4AAAAFAAoAAAAFAA8AAAAHAAkAAAAFABAAAAAHAAoAAAAFABEAAAAAAAAAAAAFABIAAAAAAAAAAAAFABMAAAAHAAkAAAAFABQAAAAHAAkAAAAFABUAAAAIAAkAAAAFABYAAAAHAAkAAAAFABcAAAAHAAkAAAAFABgAAAAIAAoAAAAFABkAAAAIAAkAAAAFABoAAAAHAAkAAAAFABsAAAAFAAoAAAAFABwAAAAFAAoAAAAFAB0AAAAIAAoAAAAFAB4AAAAHAAoAAAAFAB8AAAABAAMAAAAFACAAAAABAAQAAAAFACEAAAABAAQAAAAFACIAAAABAAUAAAAFACMAAAAIAAoAAAAFACQAAAAIAAkAAAAFACUAAAAHAAoAAAAFACYAAAAFAAoAAAAFACcAAAAFAAoAAAAFACgAAAAIAAoAAAAFACkAAAAFAAoAAAAFACoAAAAAAAAAAAAFACsAAAAFAAoAAAAFACwAAAAFAAkAAAAFAC0AAAAIAAkAAAAFAC4AAAAAAAAAAAAFAC8AAAAIAAoAAAAFADAAAAAAAAAAAAAFADEAAAAFAAkAAAAFADIAAAAAAAAAAAAFADMAAAAIAAoAAAAGAPD/AAABAAsAAAAGAPH/AAAIAAoAAAAGAPL/AAAHAAkAAAAGAPP/AAAFAAoAAAAGAPT/AAAFAAkAAAAGAPX/AAAHAAoAAAAGAPb/AAAFAAkAAAAGAAIAAAABAAYAAAAGAAQAAAAAAAUAAAAGAAUAAAAAAAAAAAAGAAYAAAAHAAoAAAAGAAcAAAAIAAoAAAAGAAgAAAAHAAkAAAAGAAkAAAAFAAoAAAAGAAoAAAAIAAkAAAAGAAsAAAAAAAAAAAAGAAwAAAAHAAoAAAAGAA0AAAAHAAkAAAAGAA4AAAAHAAoAAAAGAA8AAAAHAAkAAAAGABAAAAAHAAkAAAAGABEAAAAFAAkAAAAGABIAAAAHAAoAAAAGABMAAAAIAAoAAAAGABQAAAAFAAoAAAAGABUAAAAAAAAAAAAGABYAAAAFAAkAAAAGABcAAAAFAAoAAAAGABgAAAAIAAkAAAAGABkAAAAFAAoAAAAGABoAAAAHAAoAAAAGABsAAAAIAAoAAAAGABwAAAAFAAoAAAAGAB0AAAAHAAkAAAAGAB4AAAAIAAoAAAAGAB8AAAABAAMAAAAGACAAAAABAAQAAAAGACEAAAABAAQAAAAGACIAAAABAAUAAAAGACMAAAAIAAkAAAAGACQAAAAHAAkAAAAGACUAAAAFAAoAAAAGACYAAAAIAAoAAAAGACcAAAAFAAoAAAAGACgAAAAIAAkAAAAGACkAAAAFAAkAAAAGACoAAAAAAAAAAAAGACsAAAAIAAkAAAAGACwAAAAIAAoAAAAGAC0AAAAFAAkAAAAGAC4AAAAHAAoAAAAGAC8AAAAFAAoAAAAGADAAAAAHAAoAAAAGADEAAAAHAAkAAAAGADIAAAAAAAAAAAAGADMAAAAAAAAAAAAHAPD/AAABAAsAAAAHAPH/AAAHAAkAAAAHAPL/AAAHAAkAAAAHAPP/AAAAAAAAAAAHAPT/AAAHAAkAAAAHAPX/AAAHAAkAAAAHAPb/AAAHAAkAAAAHAAIAAAABAAQAAAAHAAMAAAABAAQAAAAHAAQAAAAGAAAAAAAHAAUAAAALAAIAAAAHAAYAAAAHAAoAAAAHAAcAAAAIAAoAAAAHAAgAAAAHAAkAAAAHAAkAAAAFAAoAAAAHAAoAAAAFAAoAAAAHAAsAAAAAAAAAAAAHAAwAAAAHAAoAAAAHAA0AAAAAAAAAAAAHAA4AAAAAAAAAAAAHAA8AAAAIAAkAAAAHABAAAAAIAAkAAAAHABEAAAAHAAkAAAAHABIAAAAHAAoAAAAHABMAAAAIAAkAAAAHABQAAAAIAAkAAAAHABUAAAAFAAoAAAAHABYAAAAIAAoAAAAHABcAAAAFAAkAAAAHABgAAAAAAAMAAAAHABkAAAAAAAQAAAAHABoAAAAAAAQAAAAHABsAAAAAAAQAAAAHABwAAAAAAAQAAAAHAB0AAAAAAAUAAAAHAB4AAAAHAAoAAAAHAB8AAAABAAMAAAAHACAAAAABAAQAAAAHACEAAAABAAQAAAAHACIAAAABAAUAAAAHACMAAAAIAAkAAAAHACQAAAAIAAkAAAAHACUAAAAHAAkAAAAHACYAAAAFAAoAAAAHACcAAAAIAAoAAAAHACgAAAAIAAoAAAAHACkAAAAAAAAAAAAHACoAAAAIAAkAAAAHACsAAAAHAAkAAAAHACwAAAAFAAoAAAAHAC0AAAAFAAkAAAAHAC4AAAAHAAkAAAAHAC8AAAAIAAkAAAAHADAAAAAAAAAAAAAHADEAAAAAAAAAAAAHADIAAAAHAAkAAAAHADMAAAAFAAkAAAAIAPD/AAABAAsAAAAIAPH/AAAIAAkAAAAIAPL/AAAFAAkAAAAIAPP/AAAIAAoAAAAIAPT/AAAIAAoAAAAIAPX/AAAAAAAAAAAIAPb/AAAFAAoAAAAIAAIAAAAAAAYAAAAIAAMAAAACAAQAAAAIAAQAAAABAAkAAAAIAAUAAAABAAoAAAAIAAYAAAAIAAoAAAAIAAcAAAAIAAoAAAAIAAgAAAAIAAkAAAAIAAkAAAAHAAoAAAAIAAoAAAAFAAkAAAAIAAsAAAAAAAAAAAAIAAwAAAAAAAAAAAAIAA0AAAAAAAAAAAAIAA4AAAAAAAAAAAAIAA8AAAAIAAkAAAAIABAAAAAHAAoAAAAIABEAAAAFAAkAAAAIABIAAAAFAAkAAAAIABMAAAAFAAoAAAAIABUAAAAHAAkAAAAIABYAAAAFAAoAAAAIABcAAAAAAAMAAAAIABgAAAABAAcAAAAIABkAAAABAAQAAAAIABoAAAABAAQAAAAIABsAAAABAAQAAAAIABwAAAABAAQAAAAIAB0AAAABAAYAAAAIAB4AAAAAAAQAAAAIAB8AAAABAAcAAAAIACAAAAABAAQAAAAIACEAAAABAAQAAAAIACIAAAABAAUAAAAIACMAAAAIAAoAAAAIACQAAAAAAAAAAAAIACUAAAAIAAoAAAAIACYAAAAHAAkAAAAIACcAAAAAAAAAAAAIACgAAAAFAAkAAAAIACkAAAAFAAoAAAAIACoAAAAIAAoAAAAIACsAAAAHAAoAAAAIACwAAAAIAAoAAAAIAC0AAAAHAAkAAAAIAC4AAAAIAAkAAAAIAC8AAAAAAAAAAAAIADAAAAAAAAAAAAAIADEAAAAAAAAAAAAIADIAAAAHAAoAAAAIADMAAAAHAAoAAAAJAPD/AAABAAsAAAAJAPH/AAAIAAoAAAAJAPL/AAAAAAAAAAAJAPP/AAAFAAoAAAAJAPT/AAAFAAkAAAAJAPX/AAAHAAoAAAAJAPb/AAAIAAkAAAAJAAIAAAABAAUAAAAJAAMAAAAFAAkAAAAJAAQAAAAHAAkAAAAJAAUAAAAAAAAAAAAJAAYAAAAIAAoAAAAJAAcAAAAFAAoAAAAJAAgAAAAIAAoAAAAJAAkAAAAIAAkAAAAJAAoAAAAIAAkAAAAJAAsAAAAHAAkAAAAJAAwAAAAFAAkAAAAJAA0AAAAFAAoAAAAJAA4AAAAIAAkAAAAJAA8AAAAFAAkAAAAJABAAAAAIAAoAAAAJABEAAAAIAAkAAAAJABIAAAAFAAoAAAAJABMAAAAHAAkAAAAJABQAAAAAAAAAAAAJABUAAAAIAAkAAAAJABYAAAAAAAMAAAAJABcAAAABAAcAAAAJABgAAAABAAQAAAAJABkAAAABAAQAAAAJABoAAAAAAAYAAAAJABsAAAAAAAcAAAAJABwAAAABAAQAAAAJAB0AAAABAAQAAAAJAB4AAAABAAQAAAAJAB8AAAABAAQAAAAJACAAAAABAAQAAAAJACEAAAABAAQAAAAJACIAAAABAAUAAAAJACMAAAAAAAAAAAAJACQAAAAFAAkAAAAJACUAAAAIAAoAAAAJACYAAAAIAAoAAAAJACcAAAAHAAkAAAAJACgAAAAHAAoAAAAJACkAAAAFAAoAAAAJACoAAAAIAAkAAAAJACsAAAAFAAkAAAAJACwAAAAFAAoAAAAJAC0AAAAFAAoAAAAJAC4AAAAFAAkAAAAJAC8AAAAHAAoAAAAJADAAAAAIAAoAAAAJADEAAAAHAAoAAAAJADIAAAAIAAkAAAAJADMAAAAFAAkAAAAKAPD/AAABAAsAAAAKAPH/AAAIAAkAAAAKAPL/AAAHAAoAAAAKAPP/AAAIAAoAAAAKAPT/AAAIAAkAAAAKAPX/AAAFAAoAAAAKAPb/AAAIAAkAAAAKAAIAAAABAAUAAAAKAAMAAAAIAAkAAAAKAAQAAAAFAAoAAAAKAAUAAAAHAAoAAAAKAAYAAAAIAAkAAAAKAAcAAAAFAAoAAAAKAAgAAAAIAAoAAAAKAAkAAAAIAAoAAAAKAAoAAAAIAAkAAAAKAAsAAAAIAAoAAAAKAAwAAAAIAAkAAAAKAA0AAAAIAAoAAAAKAA4AAAAHAAoAAAAKAA8AAAAFAAkAAAAKABAAAAAIAAkAAAAKABEAAAAFAAoAAAAKABIAAAAHAAoAAAAKABMAAAAIAAoAAAAKABQAAAAHAAkAAAAKABUAAAAAAAMAAAAKABYAAAABAAcAAAAKABcAAAABAAQAAAAKABgAAAABAAQAAAAKABkAAAAAAAYAAAAKABoAAAACAAUAAAAKABsAAAACAAMAAAAKABwAAAACAAQAAAAKAB0AAAACAAQAAAAKAB4AAAACAAQAAAAKAB8AAAAAAAcAAAAKACAAAAABAAQAAAAKACEAAAABAAQAAAAKACIAAAABAAUAAAAKACMAAAAHAAoAAAAKACQAAAAAAAAAAAAKACUAAAAAAAAAAAAKACYAAAAHAAoAAAAKACcAAAAHAAkAAAAKACgAAAAHAAkAAAAKACkAAAAIAAoAAAAKACoAAAAFAAoAAAAKACsAAAAHAAkAAAAKACwAAAAAAAAAAAAKAC0AAAAHAAkAAAAKAC4AAAAIAAkAAAAKAC8AAAAHAAoAAAAKADAAAAAIAAkAAAAKADEAAAAHAAoAAAAKADIAAAAHAAoAAAAKADMAAAAIAAoAAAALAPD/AAABAAsAAAALAPH/AAAIAAkAAAALAPL/AAAHAAoAAAALAPP/AAAHAAkAAAALAPT/AAAIAAoAAAALAPX/AAAHAAkAAAALAPb/AAAAAAAAAAALAAIAAAABAAUAAAALAAMAAAAIAAoAAAALAAQAAAAAAAAAAAALAAUAAAAFAAkAAAALAAYAAAAHAAkAAAALAAcAAAAHAAoAAAALAAgAAAAFAAkAAAALAAkAAAAIAAoAAAALAAoAAAAIAAoAAAALAAsAAAAFAAoAAAALAAwAAAAIAAoAAAALAA0AAAAIAAkAAAALAA4AAAAFAAkAAAALAA8AAAAIAAkAAAALABAAAAAIAAkAAAALABEAAAAFAAkAAAALABIAAAAIAAkAAAALABMAAAAIAAoAAAALABQAAAAAAAMAAAALABUAAAABAAcAAAALABYAAAABAAQAAAALABcAAAAAAAYAAAALABgAAAACAAQAAAALABkAAAACAAUAAAALABoAAAAHAAoAAAALABsAAAAAAAAAAAALABwAAAAAAAAAAAALAB0AAAAFAAkAAAALAB4AAAAFAAkAAAALAB8AAAABAAMAAAALACAAAAABAAQAAAALACEAAAABAAQAAAALACIAAAABAAUAAAALACMAAAAFAAoAAAALACQAAAAHAAoAAAALACUAAAAHAAkAAAALACYAAAAHAAkAAAALACcAAAAAAAAAAAALACgAAAAFAAkAAAALACkAAAAIAAkAAAALACoAAAAFAAoAAAALACsAAAAAAAAAAAALACwAAAAHAAoAAAALAC0AAAAIAAkAAAALAC4AAAAAAAAAAAALAC8AAAAHAAkAAAALADAAAAAIAAoAAAALADEAAAAHAAoAAAALADIAAAAIAAoAAAALADMAAAAFAAoAAAAMAPD/AAABAAsAAAAMAPH/AAAFAAoAAAAMAPL/AAAIAAkAAAAMAPP/AAAAAAAAAAAMAPT/AAAIAAkAAAAMAPX/AAAHAAoAAAAMAPb/AAAAAAAAAAAMAAIAAAABAAUAAAAMAAMAAAAIAAoAAAAMAAQAAAAIAAkAAAAMAAUAAAAIAAkAAAAMAAcAAAAAAAAAAAAMAAgAAAAIAAoAAAAMAAkAAAAIAAkAAAAMAAoAAAAAAAAAAAAMAAsAAAAIAAoAAAAMAAwAAAAAAAAAAAAMAA0AAAAAAAAAAAAMAA4AAAAAAAAAAAAMAA8AAAAHAAoAAAAMABAAAAAAAAAAAAAMABEAAAAFAAkAAAAMABIAAAAFAAkAAAAMABMAAAAFAAkAAAAMABQAAAABAAMAAAAMABUAAAABAAQAAAAMABYAAAABAAQAAAAMABcAAAABAAUAAAAMABgAAAAHAAkAAAAMABkAAAAIAAoAAAAMABoAAAAFAAoAAAAMABsAAAAAAAAAAAAMABwAAAAHAAkAAAAMAB0AAAAIAAoAAAAMAB4AAAAIAAkAAAAMAB8AAAABAAMAAAAMACAAAAABAAQAAAAMACEAAAABAAQAAAAMACIAAAABAAUAAAAMACMAAAAIAAoAAAAMACQAAAAIAAkAAAAMACUAAAAAAAAAAAAMACYAAAAHAAoAAAAMACcAAAAFAAkAAAAMACgAAAAIAAoAAAAMACkAAAAFAAoAAAAMACoAAAAFAAkAAAAMACsAAAAIAAoAAAAMACwAAAAAAAAAAAAMAC0AAAAFAAoAAAAMAC4AAAAHAAoAAAAMAC8AAAAAAAAAAAAMADAAAAAHAAkAAAAMADEAAAAFAAkAAAAMADIAAAAIAAkAAAAMADMAAAAFAAkAAAANAPD/AAABAAsAAAANAPH/AAAFAAkAAAANAPL/AAAFAAoAAAANAPP/AAAAAAAAAAANAPT/AAAIAAoAAAANAPX/AAAIAAoAAAANAPb/AAAAAAAAAAANAAIAAAABAAUAAAANAAMAAAAFAAkAAAANAAQAAAAHAAkAAAANAAUAAAAIAAoAAAANAAYAAAAAAAAAAAANAAcAAAAHAAkAAAANAAgAAAAAAAAAAAANAAkAAAAIAAkAAAANAAoAAAAIAAoAAAANAAsAAAAHAAoAAAANAAwAAAAAAAAAAAANAA0AAAAFAAkAAAANAA4AAAAHAAoAAAANAA8AAAAHAAoAAAANABAAAAAAAAAAAAANABEAAAAAAAAAAAANABIAAAAAAAAAAAANABMAAAAAAAMAAAANABQAAAABAAcAAAANABUAAAABAAQAAAANABYAAAAAAAYAAAANABcAAAACAAUAAAANABgAAAAFAAoAAAANABkAAAAIAAkAAAANABoAAAAIAAkAAAANABsAAAAAAAAAAAANABwAAAAIAAkAAAANAB0AAAAAAAAAAAANAB4AAAAHAAoAAAANAB8AAAABAAMAAAANACAAAAABAAQAAAANACEAAAABAAQAAAANACIAAAABAAUAAAANACMAAAAFAAoAAAANACQAAAAIAAkAAAANACUAAAAIAAkAAAANACYAAAAFAAoAAAANACcAAAAIAAkAAAANACgAAAAHAAoAAAANACkAAAAIAAkAAAANACoAAAAHAAoAAAANACsAAAAHAAkAAAANACwAAAAAAAAAAAANAC0AAAAIAAkAAAANAC4AAAAHAAoAAAANAC8AAAAHAAoAAAANADAAAAAHAAoAAAANADEAAAAFAAoAAAANADIAAAAAAAAAAAANADMAAAAHAAoAAAAOAPD/AAABAAsAAAAOAPH/AAAHAAkAAAAOAPL/AAAIAAkAAAAOAPP/AAAHAAkAAAAOAPT/AAAFAAkAAAAOAPX/AAAAAAAAAAAOAPb/AAAFAAkAAAAOAAIAAAABAAUAAAAOAAMAAAAAAAAAAAAOAAQAAAAHAAoAAAAOAAUAAAAIAAoAAAAOAAcAAAAFAAoAAAAOAAgAAAAIAAoAAAAOAAkAAAAFAAkAAAAOAAoAAAAFAAoAAAAOAAsAAAAFAAkAAAAOAAwAAAAFAAoAAAAOAA0AAAAIAAoAAAAOAA4AAAAFAAkAAAAOAA8AAAAIAAoAAAAOABAAAAAIAAoAAAAOABEAAAAGAAAAAAAOABIAAAAAAAAAAAAOABMAAAABAAQAAAAOABQAAAABAAQAAAAOABUAAAABAAQAAAAOABYAAAABAAUAAAAOABcAAAAFAAkAAAAOABgAAAAHAAkAAAAOABkAAAAHAAoAAAAOABoAAAAFAAoAAAAOABsAAAAIAAkAAAAOABwAAAAHAAkAAAAOAB0AAAAAAAAAAAAOAB4AAAAAAAAAAAAOAB8AAAABAAMAAAAOACAAAAABAAQAAAAOACEAAAABAAQAAAAOACIAAAABAAUAAAAOACMAAAAHAAkAAAAOACQAAAAFAAkAAAAOACUAAAAIAAoAAAAOACYAAAAFAAoAAAAOACcAAAAHAAoAAAAOACgAAAAHAAkAAAAOACkAAAAIAAoAAAAOACoAAAAIAAkAAAAOACsAAAAFAAkAAAAOACwAAAAHAAoAAAAOAC0AAAAIAAkAAAAOAC4AAAAAAAAAAAAOAC8AAAAIAAkAAAAOADAAAAAIAAkAAAAOADEAAAAHAAoAAAAOADIAAAAAAAAAAAAOADMAAAAAAAAAAAAPAPD/AAABAAsAAAAPAPH/AAAFAAkAAAAPAPL/AAAFAAoAAAAPAPP/AAAHAAkAAAAPAPT/AAAFAAoAAAAPAPX/AAAHAAoAAAAPAPb/AAAAAAAAAAAPAAMAAAAIAAkAAAAPAAQAAAAIAAoAAAAPAAUAAAAHAAkAAAAPAAYAAAAFAAkAAAAPAAcAAAAFAAoAAAAPAAgAAAAFAAkAAAAPAAkAAAAFAAoAAAAPAAoAAAAFAAkAAAAPAAsAAAAIAAoAAAAPAAwAAAAIAAkAAAAPAA0AAAAAAAAAAAAPAA4AAAAIAAoAAAAPAA8AAAAIAAkAAAAPABAAAAAOAAAAAAAPABEAAAAFAAoAAAAPABIAAAACAAMAAAAPABMAAAACAAQAAAAPABQAAAAAAAcAAAAPABUAAAABAAQAAAAPABYAAAABAAUAAAAPABcAAAAHAAkAAAAPABgAAAAFAAkAAAAPABkAAAAFAAoAAAAPABoAAAAAAAAAAAAPABsAAAAFAAoAAAAPABwAAAAFAAoAAAAPAB0AAAAIAAkAAAAPAB4AAAAFAAoAAAAPAB8AAAABAAMAAAAPACAAAAABAAQAAAAPACEAAAABAAQAAAAPACIAAAABAAUAAAAPACMAAAAFAAkAAAAPACQAAAAFAAoAAAAPACUAAAAHAAkAAAAPACYAAAAIAAkAAAAPACcAAAAHAAkAAAAPACgAAAAHAAkAAAAPACkAAAAFAAoAAAAPACoAAAAFAAkAAAAPACsAAAAFAAoAAAAPACwAAAAHAAoAAAAPAC0AAAAHAAoAAAAPAC4AAAAHAAoAAAAPAC8AAAAIAAoAAAAPADAAAAAHAAkAAAAPADEAAAAIAAoAAAAPADIAAAAFAAoAAAAPADMAAAAFAAoAAAAQAPD/AAABAAsAAAAQAPH/AAAIAAoAAAAQAPL/AAAFAAkAAAAQAPP/AAAIAAkAAAAQAPT/AAAIAAkAAAAQAPX/AAAAAAAAAAAQAPb/AAAFAAoAAAAQAAMAAAAAAAAAAAAQAAQAAAAHAAkAAAAQAAUAAAAHAAoAAAAQAAYAAAAFAAkAAAAQAAcAAAAIAAoAAAAQAAgAAAAAAAAAAAAQAAkAAAAHAAoAAAAQAAoAAAAAAAAAAAAQAAsAAAAAAAAAAAAQAAwAAAAHAAoAAAAQAA0AAAAIAAoAAAAQAA4AAAAFAAoAAAAQAA8AAAAFAAkAAAAQABAAAAAHAAoAAAAQABEAAAAHAAoAAAAQABIAAAAHAAkAAAAQABMAAAAAAAAAAAAQABQAAAABAAMAAAAQABUAAAABAAQAAAAQABYAAAABAAYAAAAQABcAAAAAAAUAAAAQABgAAAAIAAoAAAAQABkAAAAAAAAAAAAQABoAAAAHAAkAAAAQABsAAAAFAAkAAAAQABwAAAAFAAoAAAAQAB0AAAAIAAkAAAAQAB4AAAAHAAoAAAAQAB8AAAABAAMAAAAQACAAAAABAAQAAAAQACEAAAABAAQAAAAQACIAAAABAAUAAAAQACMAAAAFAAkAAAAQACQAAAAAAAAAAAAQACUAAAAHAAoAAAAQACYAAAAIAAoAAAAQACcAAAAAAAAAAAAQACgAAAAFAAoAAAAQACkAAAAFAAoAAAAQACoAAAAAAAAAAAAQACsAAAAHAAkAAAAQACwAAAAFAAkAAAAQAC0AAAAFAAoAAAAQAC4AAAAIAAkAAAAQAC8AAAAHAAkAAAAQADAAAAAFAAkAAAAQADEAAAAFAAoAAAAQADIAAAAAAAAAAAAQADMAAAAHAAoAAAARAPD/AAABAAsAAAARAPH/AAAIAAoAAAARAPL/AAAFAAoAAAARAPP/AAAIAAkAAAARAPT/AAAAAAAAAAARAPX/AAAAAAAAAAARAPb/AAAIAAoAAAARAAMAAAAAAAAAAAARAAQAAAAAAAAAAAARAAUAAAAFAAoAAAARAAYAAAAAAAAAAAARAAcAAAAAAAAAAAARAAgAAAAHAAkAAAARAAkAAAAAAAAAAAARAAoAAAAHAAkAAAARAAsAAAACAAYAAAARAAwAAAACAAcAAAARAA0AAAACAAgAAAARAA4AAAAAAAAAAAARAA8AAAAAAAAAAAARABAAAAAIAAkAAAARABEAAAAIAAoAAAARABIAAAAAAAAAAAARABMAAAAFAAoAAAARABQAAAABAAMAAAARABUAAAABAAQAAAARABYAAAABAAQAAAARABcAAAABAAYAAAARABgAAAAAAAUAAAARABkAAAAHAAkAAAARABoAAAAAAAAAAAARABsAAAAIAAoAAAARABwAAAAIAAoAAAARAB0AAAAHAAoAAAARAB4AAAAFAAoAAAARAB8AAAABAAMAAAARACAAAAABAAQAAAARACEAAAABAAQAAAARACIAAAABAAUAAAARACMAAAAIAAoAAAARACQAAAAIAAkAAAARACUAAAAFAAoAAAARACYAAAAIAAkAAAARACcAAAAIAAoAAAARACgAAAAIAAoAAAARACkAAAAHAAoAAAARACoAAAAFAAkAAAARACsAAAAFAAoAAAARACwAAAAFAAoAAAARAC0AAAAIAAoAAAARAC4AAAAAAAAAAAARAC8AAAAAAAAAAAARADAAAAAAAAAAAAARADEAAAAFAAoAAAARADIAAAAHAAkAAAARADMAAAAIAAoAAAASAPD/AAABAAsAAAASAPH/AAAHAAoAAAASAPL/AAAHAAoAAAASAPP/AAAFAAoAAAASAPT/AAAFAAoAAAASAPX/AAAFAAkAAAASAPb/AAAIAAkAAAASAAIAAAABAAUAAAASAAMAAAAFAAoAAAASAAQAAAAHAAoAAAASAAUAAAAFAAoAAAASAAYAAAAHAAkAAAASAAcAAAAFAAoAAAASAAgAAAAHAAkAAAASAAkAAAAIAAoAAAASAAoAAAACAAYAAAASAAsAAAADAAoAAAASAAwAAAADAAcAAAASAA0AAAADAAkAAAASAA4AAAACAAcAAAASAA8AAAACAAgAAAASABAAAAAHAAkAAAASABEAAAAFAAkAAAASABIAAAAAAAAAAAASABMAAAAHAAoAAAASABQAAAACAAMAAAASABUAAAAAAAcAAAASABYAAAABAAQAAAASABcAAAABAAQAAAASABgAAAABAAYAAAASABkAAAAAAAUAAAASABoAAAAFAAoAAAASABsAAAAIAAoAAAASABwAAAAFAAoAAAASAB0AAAAFAAkAAAASAB4AAAAFAAkAAAASAB8AAAABAAMAAAASACAAAAABAAQAAAASACEAAAABAAQAAAASACIAAAABAAUAAAASACMAAAAIAAoAAAASACQAAAAFAAoAAAASACUAAAAHAAkAAAASACYAAAAAAAAAAAASACcAAAAIAAkAAAASACgAAAAHAAkAAAASACkAAAAIAAkAAAASACoAAAAHAAkAAAASACsAAAAAAAAAAAASACwAAAAIAAkAAAASAC0AAAAIAAkAAAASAC4AAAAFAAoAAAASAC8AAAAAAAAAAAASADAAAAAAAAAAAAASADEAAAAIAAoAAAASADIAAAAHAAoAAAASADMAAAAIAAkAAAATAPD/AAABAAsAAAATAPH/AAAAAAAAAAATAPL/AAAHAAoAAAATAPP/AAAHAAoAAAATAPT/AAAIAAkAAAATAPX/AAAIAAoAAAATAPb/AAAFAAkAAAATAAIAAAABAAYAAAATAAMAAAAAAAUAAAATAAQAAAAHAAoAAAATAAUAAAAFAAkAAAATAAYAAAAFAAoAAAATAAcAAAAFAAoAAAATAAgAAAAHAAoAAAATAAkAAAACAAYAAAATAAoAAAADAAoAAAATAAsAAAADAAcAAAATAAwAAAAAAAEAAAATAA0AAAADAAcAAAATAA4AAAAAAAEAAAATAA8AAAADAAkAAAATABAAAAACAAgAAAATABEAAAAIAAkAAAATABIAAAAIAAkAAAATABMAAAAAAAAAAAATABQAAAAIAAkAAAATABUAAAACAAMAAAATABYAAAAAAAcAAAATABcAAAABAAQAAAATABgAAAABAAQAAAATABkAAAABAAYAAAATABoAAAAAAAUAAAATABsAAAAFAAoAAAATABwAAAAHAAoAAAATAB0AAAAIAAoAAAATAB4AAAAIAAoAAAATAB8AAAABAAMAAAATACAAAAABAAQAAAATACEAAAABAAQAAAATACIAAAABAAUAAAATACMAAAAAAAAAAAATACQAAAAIAAoAAAATACUAAAAAAAAAAAATACYAAAAHAAoAAAATACcAAAAIAAkAAAATACgAAAAHAAoAAAATACkAAAAAAAAAAAATACoAAAAFAAkAAAATACsAAAAHAAkAAAATACwAAAAHAAoAAAATAC0AAAAIAAkAAAATAC4AAAAAAAAAAAATAC8AAAAAAAAAAAATADAAAAAHAAoAAAATADEAAAAAAAAAAAATADIAAAAAAAAAAAATADMAAAAHAAkAAAAUAPD/AAABAAsAAAAUAPH/AAAAAAAAAAAUAPL/AAAFAAoAAAAUAPP/AAAIAAkAAAAUAPT/AAAFAAoAAAAUAPX/AAAIAAkAAAAUAPb/AAACAAYAAAAUAPf/AAACAAcAAAAUAPj/AAACAAcAAAAUAPn/AAACAAcAAAAUAPr/AAACAAgAAAAUAPv/AAAIAAoAAAAUAPz/AAAHAAkAAAAUAP3/AAAFAAkAAAAUAP7/AAAIAAoAAAAUAP//AAAFAAoAAAAUAAAAAAACAAMAAAAUAAEAAAAAAAcAAAAUAAIAAAABAAQAAAAUAAMAAAABAAYAAAAUAAQAAAAAAAUAAAAUAAUAAAAFAAkAAAAUAAYAAAAHAAoAAAAUAAcAAAAAAAAAAAAUAAgAAAAFAAoAAAAUAAkAAAADAAYAAAAUAAoAAAADAAcAAAAUAAsAAAADAAcAAAAUAAwAAAADAAcAAAAUAA0AAAADAAcAAAAUAA4AAAADAAcAAAAUAA8AAAADAAcAAAAUABAAAAADAAkAAAAUABEAAAACAAgAAAAUABIAAAAFAAoAAAAUABMAAAAHAAkAAAAUABQAAAAAAAAAAAAUABUAAAAHAAoAAAAUABYAAAACAAMAAAAUABcAAAAAAAcAAAAUABgAAAABAAQAAAAUABkAAAABAAQAAAAUABoAAAABAAYAAAAUABsAAAAAAAUAAAAUABwAAAAAAAAAAAAUAB0AAAAFAAkAAAAUAB4AAAAFAAkAAAAUAB8AAAABAAMAAAAUACAAAAABAAQAAAAUACEAAAABAAQAAAAUACIAAAABAAUAAAAUACMAAAAHAAkAAAAUACQAAAAHAAoAAAAUACUAAAAHAAkAAAAUACYAAAAHAAkAAAAUACcAAAAFAAoAAAAUACgAAAAFAAoAAAAUACkAAAAAAAAAAAAUACoAAAAAAAAAAAAUACsAAAAFAAkAAAAUACwAAAAHAAoAAAAUAC0AAAAFAAoAAAAUAC4AAAAIAAkAAAAUAC8AAAAFAAoAAAAUADAAAAAHAAoAAAAUADEAAAAHAAoAAAAUADIAAAAHAAkAAAAUADMAAAAIAAoAAAAVAPD/AAABAAsAAAAVAPH/AAAHAAkAAAAVAPL/AAAIAAoAAAAVAPP/AAAIAAkAAAAVAPT/AAAFAAoAAAAVAPX/AAACAAYAAAAVAPb/AAADAAoAAAAVAPf/AAAAAAEAAAAVAPj/AAAAAAEAAAAVAPn/AAAAAAEAAAAVAPr/AAADAAkAAAAVAPv/AAACAAgAAAAVAPz/AAAHAAoAAAAVAP3/AAAIAAkAAAAVAP7/AAAFAAoAAAAVAP//AAAFAAkAAAAVAAAAAAAHAAoAAAAVAAEAAAACAAMAAAAVAAIAAAAAAAcAAAAVAAMAAAABAAQAAAAVAAQAAAABAAYAAAAVAAUAAAAAAAUAAAAVAAYAAAAFAAoAAAAVAAcAAAAHAAkAAAAVAAgAAAAFAAkAAAAVAAkAAAADAAYAAAAVAAoAAAADAAcAAAAVAAsAAAADAAcAAAAVAAwAAAACAAkAAAAVAA0AAAAEAAcAAAAVAA4AAAACAAoAAAAVAA8AAAADAAcAAAAVABAAAAADAAcAAAAVABEAAAADAAgAAAAVABIAAAAHAAkAAAAVABMAAAAHAAkAAAAVABQAAAAIAAkAAAAVABUAAAAFAAkAAAAVABYAAAAIAAkAAAAVABcAAAACAAMAAAAVABgAAAAAAAcAAAAVABkAAAABAAQAAAAVABoAAAABAAQAAAAVABsAAAABAAYAAAAVABwAAAAAAAUAAAAVAB0AAAAHAAkAAAAVAB4AAAAAAAAAAAAVAB8AAAABAAMAAAAVACAAAAABAAQAAAAVACEAAAABAAQAAAAVACIAAAABAAUAAAAVACMAAAAAAAAAAAAVACQAAAAFAAoAAAAVACUAAAAIAAoAAAAVACYAAAAFAAoAAAAVACcAAAAFAAkAAAAVACgAAAAIAAoAAAAVACkAAAAHAAoAAAAVACoAAAAIAAkAAAAVACsAAAAHAAoAAAAVACwAAAAAAAAAAAAVAC0AAAAIAAoAAAAVAC4AAAAAAAAAAAAVAC8AAAAIAAoAAAAVADAAAAAIAAoAAAAVADEAAAAHAAkAAAAVADIAAAAHAAkAAAAVADMAAAAFAAkAAAAWAPD/AAABAAsAAAAWAPH/AAAHAAoAAAAWAPL/AAAAAAAAAAAWAPP/AAAFAAkAAAAWAPT/AAACAAYAAAAWAPX/AAADAAoAAAAWAPb/AAAAAAEAAAAWAPf/AAADAAcAAAAWAPj/AAAAAAEAAAAWAPn/AAADAAcAAAAWAPr/AAAAAAEAAAAWAPv/AAADAAgAAAAWAPz/AAAIAAkAAAAWAP3/AAAFAAkAAAAWAP7/AAAHAAoAAAAWAP//AAAIAAkAAAAWAAAAAAAIAAkAAAAWAAEAAAAFAAkAAAAWAAIAAAABAAMAAAAWAAMAAAABAAQAAAAWAAQAAAABAAQAAAAWAAUAAAABAAYAAAAWAAYAAAAAAAQAAAAWAAcAAAAAAAUAAAAWAAgAAAAAAAMAAAAWAAkAAAABAAcAAAAWAAoAAAAPAAoAAAAWAAsAAAAAAAEAAAAWAA0AAAACAAcAAAAWAA4AAAADAAoAAAAWAA8AAAADAAcAAAAWABAAAAAAAAEAAAAWABEAAAADAAgAAAAWABIAAAAFAAoAAAAWABMAAAAFAAoAAAAWABQAAAAAAAAAAAAWABUAAAAHAAoAAAAWABYAAAAIAAoAAAAWABcAAAAFAAkAAAAWABgAAAACAAMAAAAWABkAAAAAAAcAAAAWABoAAAABAAQAAAAWABsAAAABAAQAAAAWABwAAAABAAYAAAAWAB0AAAAAAAUAAAAWAB4AAAAFAAkAAAAWAB8AAAABAAMAAAAWACAAAAABAAQAAAAWACEAAAABAAQAAAAWACIAAAABAAUAAAAWACMAAAAIAAoAAAAWACQAAAAHAAkAAAAWACUAAAAAAAAAAAAWACYAAAAFAAkAAAAWACcAAAAAAAAAAAAWACgAAAAHAAoAAAAWACkAAAAHAAkAAAAWACoAAAAFAAoAAAAWACsAAAAIAAkAAAAWACwAAAAFAAkAAAAWAC0AAAAIAAkAAAAWAC4AAAAHAAkAAAAWAC8AAAAAAAAAAAAWADAAAAAIAAkAAAAWADEAAAAIAAkAAAAWADIAAAAHAAkAAAAWADMAAAAFAAkAAAAXAPD/AAABAAsAAAAXAPH/AAAHAAkAAAAXAPL/AAACAAYAAAAXAPP/AAACAAcAAAAXAPT/AAADAAoAAAAXAPX/AAADAAcAAAAXAPb/AAADAAcAAAAXAPf/AAADAAcAAAAXAPj/AAAAAAEAAAAXAPn/AAADAAcAAAAXAPr/AAAAAAEAAAAXAPv/AAADAAkAAAAXAPz/AAACAAgAAAAXAP3/AAAFAAkAAAAXAP7/AAAAAAAAAAAXAP//AAAHAAoAAAAXAAAAAAAHAAkAAAAXAAEAAAAIAAkAAAAXAAIAAAACAAMAAAAXAAMAAAAAAAcAAAAXAAQAAAABAAQAAAAXAAUAAAABAAQAAAAXAAYAAAABAAQAAAAXAAcAAAABAAYAAAAXAAgAAAABAAcAAAAXAAkAAAABAAQAAAAXAAoAAAAQAAYAAAAXAAsAAAADAAcAAAAXAAwAAAADAAcAAAAXAA0AAAAAAAEAAAAXAA4AAAAAAAEAAAAXAA8AAAADAAcAAAAXABAAAAAAAAEAAAAXABEAAAADAAgAAAAXABIAAAAIAAkAAAAXABMAAAAIAAoAAAAXABQAAAAFAAoAAAAXABUAAAAIAAkAAAAXABYAAAAHAAoAAAAXABcAAAAFAAoAAAAXABgAAAAAAAAAAAAXABkAAAACAAMAAAAXABoAAAAAAAcAAAAXABsAAAABAAQAAAAXABwAAAABAAQAAAAXAB0AAAABAAYAAAAXAB4AAAAAAAUAAAAXAB8AAAABAAMAAAAXACAAAAABAAQAAAAXACEAAAABAAQAAAAXACIAAAABAAUAAAAXACMAAAAFAAkAAAAXACQAAAAFAAoAAAAXACUAAAAAAAAAAAAXACYAAAAIAAoAAAAXACcAAAAIAAoAAAAXACgAAAAAAAAAAAAXACkAAAAFAAkAAAAXACoAAAAHAAkAAAAXACsAAAAIAAoAAAAXACwAAAAIAAkAAAAXAC0AAAAHAAkAAAAXAC4AAAAHAAoAAAAXAC8AAAAHAAkAAAAXADAAAAAIAAkAAAAXADEAAAAHAAoAAAAXADIAAAAHAAoAAAAXADMAAAAHAAkAAAAYAPD/AAABAAsAAAAYAPH/AAAIAAkAAAAYAPL/AAADAAYAAAAYAPP/AAADAAcAAAAYAPT/AAADAAcAAAAYAPX/AAADAAcAAAAYAPb/AAADAAcAAAAYAPf/AAADAAcAAAAYAPn/AAADAAcAAAAYAPr/AAADAAcAAAAYAPv/AAADAAcAAAAYAPz/AAADAAgAAAAYAP3/AAAFAAkAAAAYAP7/AAAIAAkAAAAYAP//AAAFAAoAAAAYAAAAAAAIAAoAAAAYAAEAAAAIAAoAAAAYAAIAAAAFAAoAAAAYAAMAAAACAAMAAAAYAAQAAAACAAQAAAAYAAUAAAAAAAcAAAAYAAYAAAABAAQAAAAYAAcAAAABAAQAAAAYAAgAAAABAAQAAAAYAAkAAAABAAQAAAAYAAoAAAARAAYAAAAYAAsAAAAIAA0AAAAYAAwAAAAEAAcAAAAYAA0AAAAEAAcAAAAYAA4AAAACAAoAAAAYAA8AAAADAAcAAAAYABAAAAADAAcAAAAYABEAAAADAAkAAAAYABIAAAACAAgAAAAYABMAAAAFAAoAAAAYABQAAAAHAAoAAAAYABUAAAAFAAoAAAAYABYAAAAHAAoAAAAYABcAAAAFAAkAAAAYABgAAAAHAAkAAAAYABkAAAAHAAoAAAAYABoAAAACAAMAAAAYABsAAAAAAAcAAAAYABwAAAABAAQAAAAYAB0AAAABAAQAAAAYAB4AAAABAAUAAAAYAB8AAAABAAMAAAAYACAAAAABAAQAAAAYACEAAAABAAQAAAAYACIAAAABAAUAAAAYACMAAAAHAAkAAAAYACQAAAAIAAkAAAAYACUAAAAIAAoAAAAYACYAAAAIAAoAAAAYACcAAAAHAAoAAAAYACgAAAAIAAoAAAAYACkAAAAFAAoAAAAYACoAAAAFAAoAAAAYACsAAAAIAAkAAAAYACwAAAAHAAoAAAAYAC0AAAAHAAoAAAAYAC4AAAAIAAkAAAAYAC8AAAAAAAAAAAAYADAAAAAAAAAAAAAYADEAAAAFAAoAAAAYADIAAAAIAAoAAAAYADMAAAAFAAoAAAAZAPD/AAACAAYAAAAZAPH/AAACAAcAAAAZAPL/AAADAAoAAAAZAPP/AAADAAcAAAAZAPT/AAADAAcAAAAZAPX/AAAAAAEAAAAZAPb/AAADAAcAAAAZAPf/AAADAAcAAAAZAPj/AAADAAcAAAAZAPn/AAADAAcAAAAZAPr/AAADAAcAAAAZAPv/AAADAAcAAAAZAPz/AAADAAgAAAAZAP3/AAAIAAkAAAAZAP7/AAAAAAAAAAAZAP//AAAFAAoAAAAZAAAAAAAFAAkAAAAZAAEAAAAAAAAAAAAZAAIAAAAFAAkAAAAZAAMAAAAFAAkAAAAZAAQAAAAHAAoAAAAZAAUAAAACAAMAAAAZAAYAAAACAAQAAAAZAAcAAAACAAQAAAAZAAgAAAAAAAcAAAAZAAkAAAABAAQAAAAZAAoAAAABAAQAAAAZAAsAAAABAAUAAAAZAAwAAAAAAAAAAAAZAA0AAAAAAAAAAAAZAA4AAAADAAYAAAAZAA8AAAADAAcAAAAZABAAAAADAAcAAAAZABEAAAADAAcAAAAZABIAAAADAAgAAAAZABMAAAAHAAoAAAAZABQAAAAHAAoAAAAZABUAAAAIAAoAAAAZABYAAAAHAAoAAAAZABcAAAAIAAoAAAAZABgAAAAAAAAAAAAZABkAAAAIAAkAAAAZABoAAAAIAAoAAAAZABsAAAACAAMAAAAZABwAAAAAAAcAAAAZAB0AAAABAAQAAAAZAB4AAAABAAUAAAAZAB8AAAABAAMAAAAZACAAAAABAAQAAAAZACEAAAABAAQAAAAZACIAAAABAAUAAAAZACMAAAAHAAkAAAAZACQAAAAIAAkAAAAZACUAAAAAAAAAAAAZACYAAAAAAAAAAAAZACcAAAAHAAoAAAAZACgAAAAIAAkAAAAZACkAAAAAAAAAAAAZACoAAAAIAAkAAAAZACsAAAAIAAoAAAAZACwAAAAIAAkAAAAZAC0AAAAIAAoAAAAZAC4AAAAHAAoAAAAZAC8AAAAIAAoAAAAZADAAAAAAAAAAAAAZADEAAAAIAAkAAAAZADIAAAAIAAkAAAAZADMAAAAFAAoAAAAaAPD/AAADAAYAAAAaAPH/AAAAAAEAAAAaAPL/AAADAAcAAAAaAPP/AAADAAcAAAAaAPT/AAADAAcAAAAaAPX/AAAAAAEAAAAaAPb/AAADAAcAAAAaAPf/AAAAAAEAAAAaAPj/AAAAAAEAAAAaAPn/AAAAAAEAAAAaAPr/AAADAAcAAAAaAPv/AAAAAAEAAAAaAPz/AAADAAkAAAAaAP3/AAACAAcAAAAaAP7/AAACAAcAAAAaAP//AAACAAgAAAAaAAAAAAAIAAoAAAAaAAEAAAAHAAoAAAAaAAIAAAAIAAkAAAAaAAMAAAAHAAkAAAAaAAQAAAAIAAkAAAAaAAUAAAAHAAkAAAAaAAYAAAAAAAAAAAAaAAcAAAAFAAoAAAAaAAgAAAABAAMAAAAaAAkAAAABAAQAAAAaAAoAAAAAAAYAAAAaAAsAAAACAAUAAAAaAAwAAAAAAAAAAAAaAA0AAAAAAAAAAAAaAA4AAAAEAAYAAAAaAA8AAAACAAoAAAAaABAAAAAAAAEAAAAaABEAAAADAAcAAAAaABIAAAADAAgAAAAaABMAAAAHAAkAAAAaABQAAAAHAAkAAAAaABUAAAAFAAkAAAAaABYAAAAAAAAAAAAaABcAAAAIAAoAAAAaABgAAAAIAAoAAAAaABkAAAAHAAkAAAAaABoAAAAFAAoAAAAaABsAAAAAAAMAAAAaABwAAAABAAcAAAAaAB0AAAABAAQAAAAaAB4AAAABAAUAAAAaAB8AAAABAAMAAAAaACAAAAABAAQAAAAaACEAAAABAAQAAAAaACIAAAABAAUAAAAaACMAAAAIAAkAAAAaACQAAAAHAAoAAAAaACUAAAAHAAkAAAAaACYAAAAFAAoAAAAaACcAAAAIAAoAAAAaACgAAAAHAAoAAAAaACkAAAAFAAoAAAAaACoAAAAIAAoAAAAaACsAAAAFAAkAAAAaACwAAAAFAAoAAAAaAC0AAAAAAAAAAAAaAC4AAAAHAAkAAAAaAC8AAAAHAAoAAAAaADAAAAAFAAkAAAAaADEAAAAIAAoAAAAaADIAAAAFAAkAAAAaADMAAAAFAAkAAAAbAPD/AAADAAoAAAAbAPH/AAAAAAEAAAAbAPL/AAADAAcAAAAbAPP/AAADAAcAAAAbAPT/AAAAAAEAAAAbAPX/AAADAAcAAAAbAPb/AAADAAcAAAAbAPf/AAADAAcAAAAbAPj/AAADAAcAAAAbAPn/AAADAAcAAAAbAPr/AAADAAcAAAAbAPv/AAADAAcAAAAbAPz/AAAAAAEAAAAbAP3/AAADAAcAAAAbAP7/AAADAAcAAAAbAP//AAADAAkAAAAbAAAAAAACAAgAAAAbAAEAAAAFAAoAAAAbAAIAAAAIAAoAAAAbAAMAAAAHAAoAAAAbAAQAAAAAAAAAAAAbAAUAAAAFAAkAAAAbAAYAAAAAAAMAAAAbAAcAAAAAAAQAAAAbAAgAAAABAAcAAAAbAAkAAAABAAQAAAAbAAoAAAABAAUAAAAbAAsAAAAAAAAAAAAbAAwAAAAAAAAAAAAbAA0AAAAAAAAAAAAbAA4AAAACAAYAAAAbAA8AAAADAAoAAAAbABAAAAADAAcAAAAbABEAAAACAAkAAAAbABIAAAAEAAgAAAAbABMAAAAIAAkAAAAbABQAAAAIAAoAAAAbABUAAAAHAAkAAAAbABYAAAAIAAkAAAAbABcAAAAFAAkAAAAbABgAAAAIAAoAAAAbABkAAAAAAAAAAAAbABoAAAAAAAAAAAAbABsAAAABAAMAAAAbABwAAAABAAQAAAAbAB0AAAAAAAYAAAAbAB4AAAACAAUAAAAbAB8AAAABAAMAAAAbACAAAAABAAQAAAAbACEAAAABAAQAAAAbACIAAAABAAUAAAAbACMAAAAHAAoAAAAbACQAAAAFAAkAAAAbACUAAAAHAAkAAAAbACYAAAAHAAoAAAAbACcAAAAFAAkAAAAbACgAAAAHAAkAAAAbACkAAAAFAAoAAAAbACoAAAAAAAAAAAAbACsAAAAIAAoAAAAbACwAAAAIAAoAAAAbAC0AAAAHAAkAAAAbAC4AAAAIAAkAAAAbAC8AAAAAAAAAAAAbADAAAAAFAAoAAAAbADEAAAAFAAkAAAAbADIAAAAFAAoAAAAbADMAAAAIAAkAAAAcAPD/AAADAAcAAAAcAPH/AAADAAcAAAAcAPL/AAADAAcAAAAcAPP/AAADAAcAAAAcAPT/AAADAAcAAAAcAPX/AAAAAAEAAAAcAPb/AAADAAcAAAAcAPf/AAADAAcAAAAcAPj/AAADAAcAAAAcAPn/AAADAAcAAAAcAPr/AAADAAcAAAAcAPv/AAADAAcAAAAcAPz/AAADAAcAAAAcAP3/AAADAAcAAAAcAP7/AAADAAcAAAAcAP//AAAAAAEAAAAcAAAAAAADAAkAAAAcAAEAAAACAAgAAAAcAAIAAAAFAAoAAAAcAAMAAAAAAAAAAAAcAAQAAAAFAAkAAAAcAAUAAAAIAAkAAAAcAAYAAAABAAMAAAAcAAcAAAABAAQAAAAcAAgAAAABAAQAAAAcAAkAAAAAAAYAAAAcAAoAAAACAAUAAAAcAAsAAAAAAAAAAAAcAAwAAAAAAAAAAAAcAA0AAAACAAYAAAAcAA4AAAADAAoAAAAcAA8AAAADAAcAAAAcABAAAAADAAcAAAAcABEAAAADAAgAAAAcABIAAAAFAAoAAAAcABMAAAAIAAoAAAAcABQAAAAFAAoAAAAcABUAAAAFAAkAAAAcABYAAAAHAAoAAAAcABcAAAAHAAkAAAAcABgAAAAIAAkAAAAcABkAAAAIAAkAAAAcABoAAAAAAAMAAAAcABsAAAABAAcAAAAcABwAAAABAAQAAAAcAB0AAAABAAUAAAAcAB4AAAAFAAoAAAAcAB8AAAABAAMAAAAcACAAAAABAAQAAAAcACEAAAABAAQAAAAcACIAAAABAAUAAAAcACMAAAAFAAkAAAAcACQAAAAIAAkAAAAcACUAAAAIAAkAAAAcACYAAAAHAAkAAAAcACcAAAAIAAkAAAAcACgAAAAIAAkAAAAcACkAAAAHAAkAAAAcACoAAAAAAAAAAAAcACsAAAAHAAkAAAAcACwAAAAFAAkAAAAcAC0AAAAAAAAAAAAcAC4AAAAIAAoAAAAcAC8AAAAHAAkAAAAcADAAAAAHAAoAAAAcADEAAAAIAAoAAAAcADIAAAAHAAoAAAAcADMAAAAIAAoAAAAdAPD/AAADAAcAAAAdAPH/AAADAAcAAAAdAPL/AAAAAAEAAAAdAPP/AAAAAAEAAAAdAPT/AAADAAcAAAAdAPX/AAADAAcAAAAdAPb/AAADAAcAAAAdAPf/AAAAAAEAAAAdAPj/AAAAAAEAAAAdAPn/AAADAAcAAAAdAPr/AAADAAcAAAAdAPv/AAAAAAEAAAAdAPz/AAADAAcAAAAdAP3/AAADAAcAAAAdAP7/AAADAAcAAAAdAP//AAADAAcAAAAdAAAAAAADAAcAAAAdAAEAAAADAAgAAAAdAAIAAAAHAAoAAAAdAAMAAAAHAAkAAAAdAAQAAAAHAAoAAAAdAAUAAAAFAAoAAAAdAAYAAAABAAMAAAAdAAcAAAABAAQAAAAdAAgAAAAAAAYAAAAdAAkAAAACAAUAAAAdAAoAAAAAAAAAAAAdAAsAAAAAAAAAAAAdAAwAAAAAAAAAAAAdAA0AAAADAAYAAAAdAA4AAAADAAcAAAAdAA8AAAADAAcAAAAdABAAAAACAAkAAAAdABEAAAAEAAgAAAAdABIAAAAHAAkAAAAdABMAAAAHAAkAAAAdABQAAAAFAAoAAAAdABUAAAAHAAkAAAAdABYAAAAHAAoAAAAdABcAAAAIAAkAAAAdABgAAAAHAAkAAAAdABkAAAAAAAMAAAAdABoAAAABAAcAAAAdABsAAAABAAQAAAAdABwAAAABAAQAAAAdAB0AAAABAAUAAAAdAB4AAAAAAAAAAAAdAB8AAAABAAMAAAAdACAAAAABAAQAAAAdACEAAAABAAQAAAAdACIAAAABAAUAAAAdACMAAAAFAAkAAAAdACQAAAAIAAkAAAAdACUAAAAAAAAAAAAdACYAAAAHAAoAAAAdACcAAAAFAAkAAAAdACgAAAAIAAoAAAAdACkAAAAHAAoAAAAdACoAAAAFAAoAAAAdACsAAAAHAAoAAAAdACwAAAAIAAoAAAAdAC0AAAAAAAAAAAAdAC4AAAAIAAoAAAAdAC8AAAAHAAoAAAAdADAAAAAHAAkAAAAdADEAAAAIAAkAAAAdADIAAAAIAAoAAAAdADMAAAAFAAoAAAAeAPD/AAAAAAEAAAAeAPH/AAAAAAEAAAAeAPL/AAADAAcAAAAeAPP/AAADAAcAAAAeAPT/AAADAAcAAAAeAPX/AAAAAAEAAAAeAPb/AAADAAcAAAAeAPf/AAAAAAEAAAAeAPj/AAAAAAEAAAAeAPn/AAAAAAEAAAAeAPr/AAADAAcAAAAeAPv/AAADAAcAAAAeAPz/AAAAAAEAAAAeAP3/AAADAAcAAAAeAP7/AAAAAAEAAAAeAP//AAADAAcAAAAeAAAAAAADAAcAAAAeAAEAAAADAAgAAAAeAAIAAAAHAAkAAAAeAAMAAAAHAAkAAAAeAAQAAAAIAAoAAAAeAAUAAAAHAAkAAAAeAAYAAAABAAMAAAAeAAcAAAABAAQAAAAeAAgAAAABAAUAAAAeAAkAAAAAAAAAAAAeAAoAAAAAAAAAAAAeAAsAAAAAAAAAAAAeAAwAAAACAAYAAAAeAA0AAAADAAoAAAAeAA4AAAADAAcAAAAeAA8AAAACAAkAAAAeABAAAAAEAAgAAAAeABEAAAAFAAoAAAAeABIAAAAHAAoAAAAeABMAAAAIAAoAAAAeABQAAAAFAAkAAAAeABUAAAAAAAAAAAAeABYAAAAIAAkAAAAeABcAAAAIAAkAAAAeABgAAAAAAAMAAAAeABkAAAABAAcAAAAeABoAAAABAAQAAAAeABsAAAABAAQAAAAeABwAAAAAAAYAAAAeAB0AAAACAAUAAAAeAB4AAAAFAAoAAAAeAB8AAAABAAMAAAAeACAAAAABAAQAAAAeACEAAAABAAQAAAAeACIAAAABAAUAAAAeACMAAAAFAAkAAAAeACQAAAAIAAoAAAAeACUAAAAIAAkAAAAeACYAAAAHAAkAAAAeACcAAAAIAAoAAAAeACgAAAAHAAkAAAAeACkAAAAFAAkAAAAeACoAAAAFAAkAAAAeACsAAAAHAAkAAAAeACwAAAAHAAoAAAAeAC0AAAAIAAkAAAAeAC4AAAAAAAAAAAAeAC8AAAAHAAoAAAAeADAAAAAFAAkAAAAeADEAAAAIAAoAAAAeADIAAAAIAAoAAAAeADMAAAAHAAkAAAAfAPD/AAADAAcAAAAfAPH/AAAAAAEAAAAfAPL/AAADAAcAAAAfAPP/AAADAAcAAAAfAPT/AAADAAcAAAAfAPX/AAAAAAEAAAAfAPb/AAADAAcAAAAfAPf/AAAAAAEAAAAfAPj/AAADAAcAAAAfAPn/AAAAAAEAAAAfAPr/AAADAAcAAAAfAPv/AAADAAcAAAAfAPz/AAADAAcAAAAfAP3/AAADAAcAAAAfAP7/AAADAAcAAAAfAP//AAAAAAEAAAAfAAAAAAADAAcAAAAfAAEAAAADAAgAAAAfAAIAAAAFAAoAAAAfAAMAAAAFAAoAAAAfAAQAAAAIAAoAAAAfAAUAAAAHAAkAAAAfAAYAAAABAAMAAAAfAAcAAAABAAQAAAAfAAgAAAABAAUAAAAfAAkAAAAAAAAAAAAfAAoAAAAAAAAAAAAfAAsAAAAAAAAAAAAfAAwAAAADAAYAAAAfAA0AAAADAAcAAAAfAA4AAAADAAcAAAAfAA8AAAADAAgAAAAfABAAAAAFAAkAAAAfABEAAAAFAAkAAAAfABIAAAAIAAkAAAAfABMAAAAHAAkAAAAfABQAAAAAAAAAAAAfABUAAAAAAAAAAAAfABYAAAAIAAkAAAAfABcAAAAAAAAAAAAfABgAAAABAAMAAAAfABkAAAABAAQAAAAfABoAAAABAAQAAAAfABsAAAAAAAYAAAAfABwAAAACAAUAAAAfAB0AAAAAAAAAAAAfAB4AAAAFAAoAAAAfAB8AAAABAAMAAAAfACAAAAABAAQAAAAfACEAAAABAAQAAAAfACIAAAABAAUAAAAfACMAAAAFAAkAAAAfACQAAAAAAAAAAAAfACUAAAAAAAAAAAAfACYAAAAHAAkAAAAfACcAAAAHAAoAAAAfACgAAAAIAAkAAAAfACkAAAAIAAoAAAAfACoAAAAIAAoAAAAfACsAAAAHAAkAAAAfACwAAAAHAAoAAAAfAC0AAAAFAAoAAAAfAC4AAAAHAAoAAAAfAC8AAAAIAAkAAAAfADAAAAAIAAoAAAAfADEAAAAHAAkAAAAfADIAAAAFAAkAAAAfADMAAAAHAAkAAAAgAPD/AAADAAcAAAAgAPH/AAAAAAEAAAAgAPL/AAADAAcAAAAgAPP/AAADAAcAAAAgAPT/AAADAAcAAAAgAPX/AAAAAAEAAAAgAPb/AAADAAcAAAAgAPf/AAADAAcAAAAgAPj/AAADAAcAAAAgAPn/AAAAAAEAAAAgAPr/AAAAAAEAAAAgAPv/AAADAAcAAAAgAPz/AAAAAAEAAAAgAP3/AAADAAcAAAAgAP7/AAADAAcAAAAgAP//AAAAAAEAAAAgAAAAAAADAAcAAAAgAAEAAAADAAgAAAAgAAIAAAAFAAkAAAAgAAMAAAAFAAkAAAAgAAQAAAAIAAkAAAAgAAUAAAAIAAkAAAAgAAYAAAABAAMAAAAgAAcAAAABAAQAAAAgAAgAAAABAAYAAAAgAAkAAAAAAAUAAAAgAAoAAAAAAAAAAAAgAAsAAAAAAAAAAAAgAAwAAAADAAYAAAAgAA0AAAADAAcAAAAgAA4AAAACAAkAAAAgAA8AAAAEAAgAAAAgABAAAAAFAAoAAAAgABEAAAAAAAAAAAAgABIAAAAHAAkAAAAgABMAAAAIAAoAAAAgABQAAAAIAAoAAAAgABUAAAAFAAoAAAAgABYAAAAAAAAAAAAgABcAAAAAAAMAAAAgABgAAAABAAcAAAAgABkAAAABAAQAAAAgABoAAAAAAAYAAAAgABsAAAACAAUAAAAgABwAAAAFAAkAAAAgAB0AAAAFAAoAAAAgAB4AAAAHAAoAAAAgAB8AAAABAAMAAAAgACAAAAABAAQAAAAgACEAAAABAAQAAAAgACIAAAABAAUAAAAgACMAAAAHAAkAAAAgACQAAAAIAAkAAAAgACUAAAAFAAkAAAAgACYAAAAFAAkAAAAgACcAAAAFAAoAAAAgACgAAAAHAAoAAAAgACkAAAAHAAoAAAAgACoAAAAFAAkAAAAgACsAAAAIAAkAAAAgACwAAAAFAAkAAAAgAC0AAAAAAAAAAAAgAC4AAAAIAAoAAAAgAC8AAAAIAAoAAAAgADAAAAAFAAkAAAAgADEAAAAFAAoAAAAgADIAAAAIAAoAAAAgADMAAAAFAAoAAAAhAPD/AAADAAcAAAAhAPH/AAADAAcAAAAhAPL/AAADAAcAAAAhAPP/AAAAAAEAAAAhAPT/AAADAAcAAAAhAPX/AAAAAAEAAAAhAPb/AAADAAcAAAAhAPf/AAAAAAEAAAAhAPj/AAADAAcAAAAhAPn/AAADAAcAAAAhAPr/AAADAAcAAAAhAPv/AAADAAcAAAAhAPz/AAADAAcAAAAhAP3/AAADAAcAAAAhAP7/AAADAAcAAAAhAP//AAADAAcAAAAhAAAAAAADAAcAAAAhAAEAAAADAAgAAAAhAAIAAAAFAAkAAAAhAAMAAAAIAAoAAAAhAAQAAAAHAAoAAAAhAAUAAAAAAAAAAAAhAAYAAAABAAMAAAAhAAcAAAABAAQAAAAhAAgAAAABAAQAAAAhAAkAAAABAAUAAAAhAAoAAAAAAAAAAAAhAAsAAAAAAAAAAAAhAAwAAAADAAYAAAAhAA0AAAADAAcAAAAhAA4AAAADAAgAAAAhAA8AAAAIAAoAAAAhABAAAAAHAAkAAAAhABEAAAAIAAoAAAAhABIAAAAHAAoAAAAhABMAAAAFAAoAAAAhABQAAAAHAAoAAAAhABUAAAAFAAkAAAAhABYAAAAAAAMAAAAhABcAAAABAAcAAAAhABgAAAABAAQAAAAhABkAAAAAAAYAAAAhABoAAAACAAUAAAAhABsAAAAIAAkAAAAhABwAAAAIAAoAAAAhAB0AAAAIAAkAAAAhAB4AAAAIAAoAAAAhAB8AAAABAAMAAAAhACAAAAABAAQAAAAhACEAAAABAAQAAAAhACIAAAABAAUAAAAhACMAAAAIAAkAAAAhACQAAAAFAAoAAAAhACUAAAAFAAoAAAAhACYAAAAFAAoAAAAhACcAAAAHAAoAAAAhACgAAAAAAAAAAAAhACkAAAAHAAkAAAAhACoAAAAHAAoAAAAhACsAAAAAAAAAAAAhACwAAAAIAAoAAAAhAC0AAAAHAAoAAAAhAC4AAAAHAAkAAAAhAC8AAAAAAAAAAAAhADAAAAAHAAoAAAAhADEAAAAFAAkAAAAhADIAAAAFAAkAAAAhADMAAAAIAAoAAAAiAPD/AAADAAcAAAAiAPH/AAADAAcAAAAiAPL/AAADAAcAAAAiAPP/AAADAAcAAAAiAPT/AAAAAAEAAAAiAPX/AAADAAcAAAAiAPb/AAADAAcAAAAiAPf/AAAAAAEAAAAiAPj/AAADAAcAAAAiAPn/AAADAAcAAAAiAPr/AAAAAAEAAAAiAPv/AAADAAcAAAAiAPz/AAADAAcAAAAiAP3/AAADAAcAAAAiAP7/AAADAAcAAAAiAP//AAADAAcAAAAiAAAAAAAAAAEAAAAiAAEAAAADAAgAAAAiAAIAAAAIAAoAAAAiAAMAAAAAAAAAAAAiAAQAAAAIAAkAAAAiAAUAAAAFAAoAAAAiAAYAAAABAAMAAAAiAAcAAAABAAQAAAAiAAgAAAABAAQAAAAiAAkAAAABAAUAAAAiAAoAAAAAAAAAAAAiAAsAAAACAAYAAAAiAAwAAAADAAoAAAAiAA0AAAADAAcAAAAiAA4AAAADAAgAAAAiAA8AAAAFAAkAAAAiABAAAAAHAAoAAAAiABEAAAAFAAkAAAAiABIAAAAIAAkAAAAiABMAAAAIAAoAAAAiABQAAAAHAAkAAAAiABUAAAAAAAAAAAAiABYAAAABAAMAAAAiABcAAAABAAQAAAAiABgAAAABAAQAAAAiABkAAAABAAUAAAAiABoAAAAHAAkAAAAiABsAAAAFAAoAAAAiABwAAAAFAAkAAAAiAB0AAAAFAAoAAAAiAB4AAAAIAAoAAAAiAB8AAAABAAMAAAAiACAAAAABAAQAAAAiACEAAAABAAQAAAAiACIAAAABAAUAAAAiACMAAAAHAAoAAAAiACQAAAAHAAoAAAAiACUAAAAHAAoAAAAiACYAAAAFAAoAAAAiACcAAAAFAAkAAAAiACgAAAAIAAoAAAAiACkAAAAFAAkAAAAiACoAAAAAAAAAAAAiACsAAAAIAAoAAAAiACwAAAAAAAAAAAAiAC0AAAAHAAoAAAAiAC4AAAAFAAkAAAAiAC8AAAAFAAoAAAAiADAAAAAFAAkAAAAiADEAAAAHAAkAAAAiADIAAAAFAAoAAAAiADMAAAAFAAkAAAAjAPD/AAADAAcAAAAjAPH/AAADAAcAAAAjAPL/AAAAAAEAAAAjAPP/AAADAAcAAAAjAPT/AAAAAAEAAAAjAPX/AAAAAAEAAAAjAPb/AAADAAcAAAAjAPf/AAADAAcAAAAjAPj/AAADAAcAAAAjAPn/AAADAAcAAAAjAPr/AAADAAcAAAAjAPv/AAAAAAEAAAAjAPz/AAADAAcAAAAjAP3/AAADAAcAAAAjAP7/AAADAAcAAAAjAP//AAADAAcAAAAjAAAAAAADAAcAAAAjAAEAAAADAAgAAAAjAAIAAAAHAAoAAAAjAAMAAAAHAAkAAAAjAAQAAAAIAAkAAAAjAAUAAAAIAAkAAAAjAAYAAAACAAMAAAAjAAcAAAAAAAcAAAAjAAgAAAABAAQAAAAjAAkAAAABAAUAAAAjAAoAAAACAAcAAAAjAAsAAAADAAoAAAAjAAwAAAADAAcAAAAjAA0AAAADAAcAAAAjAA4AAAALAA0AAAAjAA8AAAAAAAQAAAAjABAAAAAAAAQAAAAjABEAAAAAAAUAAAAjABIAAAAFAAkAAAAjABMAAAAIAAkAAAAjABQAAAAIAAkAAAAjABUAAAAHAAkAAAAjABYAAAABAAMAAAAjABcAAAABAAQAAAAjABgAAAAAAAYAAAAjABkAAAACAAUAAAAjABoAAAAFAAkAAAAjABsAAAAHAAkAAAAjABwAAAAFAAkAAAAjAB0AAAAHAAoAAAAjAB4AAAAIAAoAAAAjAB8AAAABAAMAAAAjACAAAAABAAQAAAAjACEAAAABAAQAAAAjACIAAAABAAUAAAAjACMAAAAAAAAAAAAjACQAAAAAAAAAAAAjACUAAAAHAAkAAAAjACYAAAAAAAAAAAAjACcAAAAFAAoAAAAjACgAAAAHAAoAAAAjACkAAAAFAAoAAAAjACoAAAAIAAoAAAAjACsAAAAIAAoAAAAjACwAAAAFAAoAAAAjAC0AAAAFAAkAAAAjAC4AAAAHAAoAAAAjAC8AAAAFAAoAAAAjADAAAAAHAAoAAAAjADEAAAAIAAoAAAAjADIAAAAIAAkAAAAjADMAAAAFAAkAAAAkAPD/AAADAAcAAAAkAPH/AAADAAcAAAAkAPL/AAADAAcAAAAkAPP/AAAAAAEAAAAkAPT/AAAAAAEAAAAkAPX/AAADAAcAAAAkAPb/AAADAAcAAAAkAPf/AAAAAAEAAAAkAPj/AAADAAcAAAAkAPn/AAADAAcAAAAkAPr/AAADAAcAAAAkAPv/AAADAAcAAAAkAPz/AAADAAcAAAAkAP3/AAADAAcAAAAkAP7/AAADAAcAAAAkAP//AAADAAcAAAAkAAAAAAADAAcAAAAkAAEAAAADAAgAAAAkAAIAAAAHAAkAAAAkAAMAAAAAAAAAAAAkAAQAAAAIAAkAAAAkAAUAAAAIAAoAAAAkAAYAAAAIAAkAAAAkAAcAAAABAAMAAAAkAAgAAAABAAQAAAAkAAkAAAAQAAYAAAAkAAwAAAAAAAEAAAAkAA0AAAAAAAEAAAAkAA4AAAAQAAgAAAAkAA8AAAABAAQAAAAkABAAAAABAAQAAAAkABEAAAABAAYAAAAkABIAAAAAAAUAAAAkABMAAAAFAAoAAAAkABQAAAAFAAoAAAAkABUAAAAIAAkAAAAkABYAAAABAAMAAAAkABcAAAABAAQAAAAkABgAAAABAAUAAAAkABkAAAAFAAkAAAAkABoAAAAAAAAAAAAkABsAAAAHAAkAAAAkABwAAAAFAAoAAAAkAB0AAAAIAAoAAAAkAB4AAAAHAAoAAAAkAB8AAAABAAMAAAAkACAAAAABAAQAAAAkACEAAAABAAQAAAAkACIAAAABAAUAAAAkACMAAAAHAAkAAAAkACQAAAAHAAkAAAAkACUAAAAAAAAAAAAkACYAAAAIAAkAAAAkACcAAAAIAAoAAAAkACgAAAAHAAoAAAAkACkAAAAFAAoAAAAkACoAAAAHAAoAAAAkACsAAAAFAAoAAAAkACwAAAAHAAoAAAAkAC0AAAAHAAkAAAAkAC4AAAAFAAkAAAAkAC8AAAAIAAoAAAAkADAAAAAIAAoAAAAkADEAAAAHAAkAAAAkADIAAAAFAAoAAAAkADMAAAAIAAoAAAAlAPD/AAADAAcAAAAlAPH/AAADAAcAAAAlAPL/AAADAAcAAAAlAPP/AAAAAAEAAAAlAPT/AAADAAcAAAAlAPX/AAADAAcAAAAlAPb/AAADAAcAAAAlAPf/AAADAAcAAAAlAPj/AAADAAcAAAAlAPn/AAADAAcAAAAlAPr/AAADAAcAAAAlAPv/AAADAAcAAAAlAPz/AAADAAcAAAAlAP3/AAADAAcAAAAlAP7/AAADAAcAAAAlAP//AAADAAcAAAAlAAAAAAACAAkAAAAlAAEAAAAEAAgAAAAlAAIAAAAHAAoAAAAlAAMAAAAIAAkAAAAlAAQAAAAFAAoAAAAlAAUAAAAFAAkAAAAlAAYAAAAAAAAAAAAlAAcAAAABAAMAAAAlAAgAAAABAAQAAAAlAAkAAAAQAAYAAAAlAA0AAAADAAcAAAAlAA4AAAAQAAgAAAAlAA8AAAABAAQAAAAlABAAAAABAAQAAAAlABEAAAABAAQAAAAlABIAAAABAAYAAAAlABMAAAAAAAQAAAAlABQAAAAAAAUAAAAlABUAAAAAAAMAAAAlABYAAAABAAcAAAAlABcAAAABAAQAAAAlABgAAAABAAUAAAAlABkAAAAHAAkAAAAlABoAAAAFAAoAAAAlABsAAAAIAAoAAAAlABwAAAAIAAkAAAAlAB0AAAAIAAkAAAAlAB4AAAAHAAkAAAAlAB8AAAABAAMAAAAlACAAAAABAAQAAAAlACEAAAABAAQAAAAlACIAAAABAAUAAAAlACMAAAAHAAoAAAAlACQAAAAIAAkAAAAlACUAAAAHAAkAAAAlACYAAAAIAAoAAAAlACcAAAAFAAoAAAAlACgAAAAFAAoAAAAlACkAAAAFAAoAAAAlACoAAAAIAAkAAAAlACsAAAAHAAkAAAAlACwAAAAHAAoAAAAlAC0AAAAFAAoAAAAlAC4AAAAIAAkAAAAlAC8AAAAHAAoAAAAlADAAAAAIAAkAAAAlADEAAAAHAAkAAAAlADIAAAAIAAkAAAAlADMAAAAFAAkAAAAmAPD/AAADAAcAAAAmAPH/AAADAAcAAAAmAPL/AAADAAcAAAAmAPP/AAADAAcAAAAmAPT/AAAAAAEAAAAmAPX/AAADAAcAAAAmAPb/AAAAAAEAAAAmAPf/AAADAAcAAAAmAPj/AAADAAcAAAAmAPn/AAAAAAEAAAAmAPr/AAAAAAEAAAAmAPv/AAADAAcAAAAmAPz/AAADAAcAAAAmAP3/AAADAAcAAAAmAP7/AAADAAcAAAAmAP//AAACAAkAAAAmAAAAAAAEAAgAAAAmAAEAAAAFAAoAAAAmAAIAAAAFAAkAAAAmAAMAAAAFAAkAAAAmAAQAAAAIAAkAAAAmAAUAAAAIAAkAAAAmAAYAAAAHAAkAAAAmAAcAAAABAAMAAAAmAAgAAAABAAQAAAAmAAkAAAAQAAYAAAAmAA0AAAADAAcAAAAmAA4AAAAKAA0AAAAmAA8AAAACAAQAAAAmABAAAAAAAAcAAAAmABEAAAABAAQAAAAmABIAAAABAAQAAAAmABMAAAABAAQAAAAmABQAAAABAAYAAAAmABUAAAABAAcAAAAmABYAAAABAAQAAAAmABcAAAABAAQAAAAmABgAAAABAAUAAAAmABkAAAAFAAoAAAAmABoAAAAHAAkAAAAmABsAAAAIAAoAAAAmABwAAAAFAAoAAAAmAB0AAAAFAAkAAAAmAB4AAAAAAAAAAAAmAB8AAAABAAMAAAAmACAAAAABAAQAAAAmACEAAAABAAQAAAAmACIAAAABAAUAAAAmACMAAAAIAAoAAAAmACQAAAAIAAoAAAAmACUAAAAFAAoAAAAmACYAAAAFAAoAAAAmACcAAAAIAAoAAAAmACgAAAAIAAoAAAAmACkAAAAAAAAAAAAmACoAAAAHAAkAAAAmACsAAAAHAAoAAAAmACwAAAAAAAAAAAAmAC0AAAAFAAkAAAAmAC4AAAAFAAoAAAAmAC8AAAAFAAkAAAAmADAAAAAHAAkAAAAmADEAAAAHAAoAAAAmADIAAAAHAAkAAAAmADMAAAAIAAkAAAAnAPD/AAADAAcAAAAnAPH/AAADAAcAAAAnAPL/AAADAAcAAAAnAPP/AAAAAAEAAAAnAPT/AAAAAAEAAAAnAPX/AAADAAcAAAAnAPb/AAADAAcAAAAnAPf/AAADAAcAAAAnAPj/AAADAAcAAAAnAPn/AAADAAcAAAAnAPr/AAADAAcAAAAnAPv/AAADAAcAAAAnAPz/AAADAAcAAAAnAP3/AAADAAcAAAAnAP7/AAADAAcAAAAnAP//AAADAAgAAAAnAAAAAAAAAAAAAAAnAAEAAAAHAAkAAAAnAAIAAAAAAAAAAAAnAAMAAAAIAAkAAAAnAAQAAAAHAAoAAAAnAAUAAAAAAAAAAAAnAAYAAAAAAAMAAAAnAAcAAAABAAcAAAAnAAgAAAABAAQAAAAnAAkAAAAQAAYAAAAnAAwAAAAAAAEAAAAnAA0AAAACAAkAAAAnAA4AAAAEAAgAAAAnAA8AAAAAAAAAAAAnABAAAAACAAMAAAAnABEAAAACAAQAAAAnABIAAAAAAAcAAAAnABMAAAABAAQAAAAnABQAAAABAAQAAAAnABUAAAABAAQAAAAnABYAAAABAAQAAAAnABcAAAAAAAYAAAAnABgAAAACAAUAAAAnABkAAAAFAAkAAAAnABoAAAAIAAkAAAAnABsAAAAFAAkAAAAnABwAAAAHAAoAAAAnAB0AAAAFAAoAAAAnAB4AAAAIAAkAAAAnAB8AAAABAAMAAAAnACAAAAABAAQAAAAnACEAAAABAAQAAAAnACIAAAABAAUAAAAnACMAAAAAAAAAAAAnACQAAAAHAAkAAAAnACUAAAAFAAoAAAAnACYAAAAHAAkAAAAnACcAAAAAAAAAAAAnACgAAAAFAAkAAAAnACkAAAAFAAoAAAAnACoAAAAHAAkAAAAnACsAAAAIAAoAAAAnACwAAAAAAAAAAAAnAC0AAAAIAAkAAAAnAC4AAAAAAAAAAAAnAC8AAAAIAAkAAAAnADAAAAAIAAkAAAAnADEAAAAFAAoAAAAnADIAAAAHAAoAAAAnADMAAAAAAAAAAAAoAPD/AAADAAcAAAAoAPH/AAAAAAEAAAAoAPL/AAADAAcAAAAoAPP/AAADAAcAAAAoAPT/AAADAAcAAAAoAPX/AAADAAcAAAAoAPb/AAADAAcAAAAoAPf/AAADAAcAAAAoAPj/AAAAAAEAAAAoAPn/AAAAAAEAAAAoAPr/AAAAAAEAAAAoAPv/AAADAAcAAAAoAPz/AAADAAcAAAAoAP3/AAAAAAEAAAAoAP7/AAADAAcAAAAoAP//AAADAAgAAAAoAAAAAAAIAAoAAAAoAAEAAAAHAAkAAAAoAAIAAAAFAAkAAAAoAAMAAAAAAAMAAAAoAAQAAAAAAAQAAAAoAAUAAAAAAAQAAAAoAAYAAAABAAcAAAAoAAcAAAABAAQAAAAoAAgAAAAPAAYAAAAoAAkAAAAQAAoAAAAoAAoAAAAAAAEAAAAoAAwAAAADAAcAAAAoAA0AAAADAAgAAAAoAA4AAAAHAAkAAAAoAA8AAAAFAAkAAAAoABAAAAAFAAoAAAAoABEAAAAFAAoAAAAoABIAAAACAAMAAAAoABMAAAACAAQAAAAoABQAAAACAAQAAAAoABUAAAACAAQAAAAoABYAAAACAAQAAAAoABcAAAACAAUAAAAoABgAAAAFAAkAAAAoABkAAAAIAAkAAAAoABoAAAAFAAkAAAAoABsAAAAFAAkAAAAoABwAAAAIAAoAAAAoAB0AAAAIAAkAAAAoAB4AAAAIAAkAAAAoAB8AAAABAAMAAAAoACAAAAABAAQAAAAoACEAAAABAAQAAAAoACIAAAABAAUAAAAoACMAAAAIAAkAAAAoACQAAAAFAAkAAAAoACUAAAAFAAkAAAAoACYAAAAIAAkAAAAoACcAAAAHAAoAAAAoACgAAAAAAAAAAAAoACkAAAAHAAoAAAAoACoAAAAIAAoAAAAoACsAAAAFAAoAAAAoACwAAAAHAAkAAAAoAC0AAAAIAAkAAAAoAC4AAAAHAAoAAAAoAC8AAAAFAAkAAAAoADAAAAAHAAkAAAAoADEAAAAHAAkAAAAoADIAAAAFAAoAAAAoADMAAAAFAAkAAAApAPD/AAAAAAEAAAApAPH/AAAAAAEAAAApAPL/AAADAAcAAAApAPP/AAADAAcAAAApAPT/AAADAAcAAAApAPX/AAADAAcAAAApAPb/AAADAAcAAAApAPf/AAADAAcAAAApAPr/AAADAAcAAAApAPv/AAADAAcAAAApAPz/AAADAAcAAAApAP3/AAADAAcAAAApAP7/AAADAAcAAAApAP//AAADAAkAAAApAAAAAAACAAgAAAApAAEAAAAFAAoAAAApAAIAAAAAAAAAAAApAAMAAAABAAMAAAApAAQAAAABAAQAAAApAAUAAAABAAQAAAApAAYAAAABAAQAAAApAAcAAAABAAQAAAApAAgAAAAQAAYAAAApAAkAAAAAAAEAAAApAAoAAAADAAcAAAApAAsAAAACAAkAAAApAAwAAAAEAAcAAAApAA0AAAAEAAgAAAApAA4AAAAIAAkAAAApAA8AAAAIAAoAAAApABAAAAAAAAAAAAApABEAAAAIAAkAAAApABIAAAAFAAoAAAApABMAAAAAAAAAAAApABQAAAAIAAkAAAApABUAAAAIAAoAAAApABYAAAAIAAkAAAApABcAAAAIAAoAAAApABgAAAAAAAAAAAApABkAAAAFAAoAAAApABoAAAAIAAkAAAApABsAAAAHAAoAAAApABwAAAAAAAAAAAApAB0AAAAHAAkAAAApAB4AAAAFAAoAAAApAB8AAAABAAMAAAApACAAAAABAAQAAAApACEAAAABAAQAAAApACIAAAABAAUAAAApACMAAAAIAAoAAAApACQAAAAIAAoAAAApACUAAAAFAAkAAAApACYAAAAIAAoAAAApACcAAAAFAAoAAAApACgAAAAHAAoAAAApACkAAAAFAAoAAAApACoAAAAHAAoAAAApACsAAAAHAAkAAAApACwAAAAIAAoAAAApAC0AAAAIAAkAAAApAC4AAAAHAAkAAAApAC8AAAAIAAkAAAApADAAAAAHAAoAAAApADEAAAAIAAoAAAApADIAAAAHAAkAAAApADMAAAAAAAAAAAAqAPD/AAADAAcAAAAqAPH/AAADAAcAAAAqAPL/AAADAAcAAAAqAPP/AAAAAAEAAAAqAPT/AAADAAcAAAAqAPX/AAADAAcAAAAqAPb/AAADAAcAAAAqAPf/AAADAAcAAAAqAPr/AAAAAAEAAAAqAPv/AAADAAcAAAAqAPz/AAADAAcAAAAqAP3/AAADAAcAAAAqAP7/AAADAAcAAAAqAP//AAAAAAEAAAAqAAAAAAADAAgAAAAqAAEAAAAFAAkAAAAqAAIAAAAFAAoAAAAqAAMAAAABAAMAAAAqAAQAAAABAAQAAAAqAAUAAAAAAAYAAAAqAAYAAAAAAAcAAAAqAAcAAAABAAQAAAAqAAgAAAAQAAYAAAAqAAkAAAADAAcAAAAqAAoAAAADAAcAAAAqAAsAAAADAAgAAAAqAAwAAAAAAAAAAAAqAA0AAAAFAAoAAAAqAA4AAAAHAAoAAAAqAA8AAAAFAAoAAAAqABAAAAAHAAoAAAAqABEAAAAAAAAAAAAqABIAAAAHAAkAAAAqABMAAAAIAAkAAAAqABQAAAAIAAkAAAAqABUAAAAFAAkAAAAqABYAAAAAAAAAAAAqABcAAAAHAAoAAAAqABgAAAAIAAkAAAAqABkAAAAHAAkAAAAqABoAAAAFAAkAAAAqABsAAAAFAAoAAAAqABwAAAAHAAkAAAAqAB0AAAAAAAAAAAAqAB4AAAAIAAoAAAAqAB8AAAABAAMAAAAqACAAAAABAAQAAAAqACEAAAABAAQAAAAqACIAAAABAAUAAAAqACMAAAAFAAoAAAAqACQAAAAIAAoAAAAqACUAAAAFAAkAAAAqACYAAAAAAAAAAAAqACcAAAAFAAkAAAAqACgAAAAIAAkAAAAqACkAAAAHAAoAAAAqACoAAAAFAAoAAAAqACsAAAAFAAoAAAAqACwAAAAFAAkAAAAqAC0AAAAHAAkAAAAqAC4AAAAIAAkAAAAqAC8AAAAFAAoAAAAqADAAAAAIAAoAAAAqADEAAAAAAAAAAAAqADIAAAAHAAkAAAAqADMAAAAIAAoAAAArAPD/AAADAAcAAAArAPH/AAADAAcAAAArAPL/AAADAAcAAAArAPP/AAADAAcAAAArAPT/AAAAAAEAAAArAPX/AAADAAcAAAArAPb/AAAAAAEAAAArAPf/AAADAAcAAAArAPj/AAAAAAEAAAArAPn/AAAAAAEAAAArAPr/AAADAAcAAAArAPv/AAAAAAEAAAArAPz/AAADAAcAAAArAP3/AAAAAAEAAAArAP7/AAADAAcAAAArAP//AAADAAcAAAArAAAAAAADAAkAAAArAAEAAAACAAgAAAArAAIAAAAIAAkAAAArAAMAAAABAAMAAAArAAQAAAABAAQAAAArAAUAAAABAAYAAAArAAYAAAABAAcAAAArAAcAAAAPAAYAAAArAAgAAAAQAAoAAAArAAkAAAADAAcAAAArAAoAAAACAAkAAAArAAsAAAAEAAgAAAArAAwAAAAHAAoAAAArAA0AAAAHAAoAAAArAA4AAAAFAAoAAAArAA8AAAAFAAoAAAArABAAAAAHAAkAAAArABEAAAAIAAkAAAArABIAAAAAAAAAAAArABMAAAAAAAAAAAArABQAAAAIAAkAAAArABUAAAAAAAAAAAArABYAAAAAAAAAAAArABcAAAAHAAoAAAArABgAAAAAAAAAAAArABkAAAAHAAkAAAArABoAAAAAAAAAAAArABsAAAAHAAoAAAArABwAAAAFAAkAAAArAB0AAAAFAAoAAAArAB4AAAAIAAkAAAArAB8AAAABAAMAAAArACAAAAABAAQAAAArACEAAAABAAQAAAArACIAAAABAAUAAAArACMAAAAFAAoAAAArACQAAAAFAAoAAAArACUAAAAIAAoAAAArACYAAAAIAAoAAAArACcAAAAHAAkAAAArACgAAAAIAAoAAAArACkAAAAIAAkAAAArACoAAAAFAAoAAAArACsAAAAIAAkAAAArACwAAAAFAAoAAAArAC0AAAAFAAkAAAArAC4AAAAHAAoAAAArAC8AAAAHAAkAAAArADAAAAAHAAkAAAArADEAAAAFAAkAAAArADIAAAAFAAkAAAArADMAAAAFAAoAAAAsAPD/AAADAAcAAAAsAPH/AAADAAcAAAAsAPL/AAADAAcAAAAsAPP/AAAAAAEAAAAsAPT/AAADAAcAAAAsAPX/AAADAAcAAAAsAPb/AAADAAcAAAAsAPf/AAADAAcAAAAsAPj/AAADAAcAAAAsAPn/AAADAAcAAAAsAPr/AAAAAAEAAAAsAPv/AAADAAcAAAAsAPz/AAADAAcAAAAsAP3/AAADAAcAAAAsAP7/AAAAAAEAAAAsAP//AAAAAAEAAAAsAAAAAAADAAcAAAAsAAEAAAADAAgAAAAsAAIAAAAIAAoAAAAsAAMAAAABAAMAAAAsAAQAAAABAAQAAAAsAAUAAAABAAQAAAAsAAYAAAAPAAYAAAAsAAcAAAAQAAoAAAAsAAgAAAADAAcAAAAsAAkAAAADAAcAAAAsAAoAAAADAAgAAAAsAAsAAAAFAAoAAAAsAAwAAAAHAAkAAAAsAA0AAAAFAAkAAAAsAA4AAAAIAAkAAAAsAA8AAAAIAAkAAAAsABAAAAAFAAoAAAAsABEAAAAFAAoAAAAsABIAAAAAAAAAAAAsABMAAAAFAAkAAAAsABQAAAAFAAoAAAAsABUAAAAHAAkAAAAsABYAAAAHAAoAAAAsABcAAAAIAAoAAAAsABgAAAAFAAoAAAAsABkAAAAAAAAAAAAsABoAAAAIAAoAAAAsABsAAAAFAAkAAAAsABwAAAAFAAkAAAAsAB0AAAAHAAoAAAAsAB4AAAAAAAAAAAAsAB8AAAABAAMAAAAsACAAAAABAAQAAAAsACEAAAABAAQAAAAsACIAAAABAAUAAAAsACMAAAAAAAAAAAAsACQAAAAIAAoAAAAsACUAAAAHAAkAAAAsACYAAAAFAAoAAAAsACcAAAAFAAkAAAAsACgAAAAFAAkAAAAsACkAAAAFAAkAAAAsACoAAAAAAAAAAAAsACsAAAAFAAoAAAAsACwAAAAFAAoAAAAsAC0AAAAHAAoAAAAsAC4AAAAIAAoAAAAsAC8AAAAHAAoAAAAsADAAAAAFAAoAAAAsADEAAAAFAAkAAAAsADIAAAAHAAkAAAAsADMAAAAIAAkAAAAtAPD/AAADAAcAAAAtAPH/AAADAAcAAAAtAPL/AAADAAcAAAAtAPP/AAADAAcAAAAtAPT/AAADAAcAAAAtAPX/AAADAAcAAAAtAPb/AAADAAcAAAAtAPf/AAADAAcAAAAtAPj/AAADAAcAAAAtAPn/AAADAAcAAAAtAPr/AAADAAcAAAAtAPv/AAADAAcAAAAtAPz/AAADAAcAAAAtAP3/AAAAAAEAAAAtAP7/AAADAAcAAAAtAP//AAADAAcAAAAtAAAAAAADAAcAAAAtAAEAAAADAAgAAAAtAAIAAAAHAAkAAAAtAAMAAAACAAMAAAAtAAQAAAACAAQAAAAtAAUAAAAAAAcAAAAtAAYAAAAQAAoAAAAtAAcAAAADAAcAAAAtAAgAAAADAAcAAAAtAAkAAAACAAkAAAAtAAoAAAAEAAgAAAAtAAsAAAAIAAkAAAAtAAwAAAAHAAkAAAAtAA0AAAAFAAkAAAAtAA4AAAAIAAoAAAAtAA8AAAAIAAkAAAAtABAAAAAFAAoAAAAtABEAAAAFAAoAAAAtABIAAAAHAAoAAAAtABMAAAAFAAkAAAAtABQAAAAHAAkAAAAtABUAAAAIAAkAAAAtABYAAAAHAAoAAAAtABcAAAAHAAkAAAAtABgAAAAAAAAAAAAtABkAAAAAAAAAAAAtABoAAAAHAAkAAAAtABsAAAAHAAkAAAAtABwAAAAAAAAAAAAtAB0AAAAFAAoAAAAtAB4AAAAHAAkAAAAtAB8AAAABAAMAAAAtACAAAAABAAQAAAAtACEAAAABAAQAAAAtACIAAAABAAUAAAAtACMAAAAFAAkAAAAtACQAAAAIAAkAAAAtACUAAAAFAAoAAAAtACYAAAAHAAoAAAAtACcAAAAFAAoAAAAtACgAAAAIAAoAAAAtACkAAAAHAAoAAAAtACoAAAAHAAoAAAAtACsAAAAAAAAAAAAtACwAAAAFAAkAAAAtAC0AAAAHAAoAAAAtAC4AAAAHAAoAAAAtAC8AAAAHAAkAAAAtADAAAAAFAAkAAAAtADEAAAAIAAoAAAAtADIAAAAIAAoAAAAtADMAAAAIAAkAAAAuAPD/AAADAAcAAAAuAPH/AAADAAcAAAAuAPL/AAADAAcAAAAuAPP/AAADAAcAAAAuAPT/AAAAAAEAAAAuAPX/AAADAAcAAAAuAPb/AAAAAAEAAAAuAPf/AAADAAcAAAAuAPj/AAADAAcAAAAuAPn/AAAAAAEAAAAuAPr/AAADAAcAAAAuAPv/AAAAAAEAAAAuAPz/AAADAAcAAAAuAP3/AAADAAcAAAAuAP7/AAADAAcAAAAuAP//AAADAAcAAAAuAAAAAAADAAcAAAAuAAEAAAADAAgAAAAuAAIAAAAIAAoAAAAuAAMAAAACAAYAAAAuAAQAAAACAAcAAAAuAAUAAAAAAAEAAAAuAAYAAAADAAcAAAAuAAcAAAADAAcAAAAuAAgAAAACAAkAAAAuAAkAAAAEAAgAAAAuAAoAAAAIAAoAAAAuAAsAAAAIAAkAAAAuAAwAAAAFAAoAAAAuAA0AAAAHAAoAAAAuAA4AAAAHAAoAAAAuAA8AAAAIAAoAAAAuABAAAAAFAAkAAAAuABEAAAAIAAoAAAAuABIAAAAIAAoAAAAuABMAAAAFAAkAAAAuABQAAAAIAAkAAAAuABUAAAAIAAkAAAAuABYAAAAIAAoAAAAuABcAAAAHAAkAAAAuABgAAAAFAAoAAAAuABkAAAAIAAoAAAAuABoAAAAAAAAAAAAuABsAAAAFAAkAAAAuABwAAAAIAAoAAAAuAB0AAAAHAAoAAAAuAB4AAAAFAAkAAAAuAB8AAAABAAMAAAAuACAAAAABAAQAAAAuACEAAAABAAQAAAAuACIAAAABAAYAAAAuACMAAAAAAAQAAAAuACQAAAAAAAQAAAAuACUAAAAAAAQAAAAuACYAAAAAAAQAAAAuACcAAAAAAAQAAAAuACgAAAAAAAQAAAAuACkAAAAAAAQAAAAuACoAAAAAAAQAAAAuACsAAAAAAAQAAAAuACwAAAAAAAQAAAAuAC0AAAAAAAQAAAAuAC4AAAAAAAQAAAAuAC8AAAAAAAQAAAAuADAAAAAAAAQAAAAuADEAAAAAAAQAAAAuADIAAAAAAAQAAAAuADMAAAALAA4AAAAvAPD/AAADAAcAAAAvAPH/AAADAAcAAAAvAPL/AAAAAAEAAAAvAPP/AAAAAAEAAAAvAPT/AAADAAcAAAAvAPX/AAADAAcAAAAvAPb/AAADAAcAAAAvAPf/AAADAAcAAAAvAPj/AAADAAcAAAAvAPn/AAADAAcAAAAvAPr/AAADAAcAAAAvAPv/AAAAAAEAAAAvAPz/AAAAAAEAAAAvAP3/AAADAAcAAAAvAP7/AAADAAcAAAAvAP//AAADAAcAAAAvAAAAAAAAAAEAAAAvAAEAAAADAAkAAAAvAAIAAAACAAcAAAAvAAMAAAADAAoAAAAvAAQAAAADAAcAAAAvAAUAAAADAAcAAAAvAAYAAAACAAkAAAAvAAcAAAAEAAcAAAAvAAgAAAAEAAgAAAAvAAkAAAAFAAkAAAAvAAoAAAAHAAkAAAAvAAsAAAAIAAkAAAAvAAwAAAAIAAoAAAAvAA0AAAAAAAAAAAAvAA4AAAAFAAkAAAAvAA8AAAAFAAkAAAAvABAAAAAFAAkAAAAvABEAAAAFAAoAAAAvABIAAAAHAAoAAAAvABMAAAAHAAoAAAAvABQAAAAFAAkAAAAvABUAAAAIAAkAAAAvABYAAAAIAAkAAAAvABcAAAAFAAoAAAAvABgAAAAFAAoAAAAvABkAAAAHAAkAAAAvABoAAAAIAAoAAAAvABsAAAAIAAkAAAAvABwAAAAHAAkAAAAvAB0AAAAIAAkAAAAvAB4AAAAIAAoAAAAvAB8AAAABAAMAAAAvACAAAAABAAQAAAAvACEAAAABAAQAAAAvACIAAAABAAQAAAAvACMAAAABAAQAAAAvACQAAAABAAQAAAAvACUAAAABAAQAAAAvACYAAAABAAQAAAAvACcAAAABAAQAAAAvACgAAAABAAQAAAAvACkAAAABAAQAAAAvACoAAAABAAQAAAAvACsAAAABAAQAAAAvACwAAAABAAQAAAAvAC0AAAABAAQAAAAvAC4AAAABAAQAAAAvAC8AAAABAAQAAAAvADAAAAABAAQAAAAvADEAAAABAAQAAAAvADIAAAABAAQAAAAvADMAAAAQAAYAAAAwAPD/AAADAAcAAAAwAPH/AAADAAcAAAAwAPL/AAAAAAEAAAAwAPP/AAAAAAEAAAAwAPT/AAAAAAEAAAAwAPX/AAADAAcAAAAwAPb/AAADAAcAAAAwAPf/AAADAAcAAAAwAPj/AAADAAcAAAAwAPn/AAAAAAEAAAAwAPr/AAADAAcAAAAwAPv/AAAAAAEAAAAwAPz/AAAAAAEAAAAwAP3/AAADAAcAAAAwAP7/AAADAAcAAAAwAP//AAADAAcAAAAwAAAAAAADAAcAAAAwAAEAAAADAAcAAAAwAAIAAAAAAAEAAAAwAAMAAAADAAcAAAAwAAQAAAADAAcAAAAwAAUAAAACAAkAAAAwAAYAAAAEAAgAAAAwAAcAAAAIAAoAAAAwAAgAAAAFAAoAAAAwAAkAAAAAAAAAAAAwAAoAAAAIAAkAAAAwAAsAAAAIAAkAAAAwAAwAAAAIAAoAAAAwAA0AAAAHAAoAAAAwAA4AAAAFAAkAAAAwAA8AAAAIAAkAAAAwABAAAAAIAAkAAAAwABEAAAAFAAkAAAAwABIAAAAFAAkAAAAwABMAAAAHAAkAAAAwABQAAAAIAAkAAAAwABUAAAAFAAkAAAAwABYAAAAFAAoAAAAwABcAAAAHAAoAAAAwABgAAAAIAAoAAAAwABkAAAAAAAAAAAAwABoAAAAHAAkAAAAwABsAAAAFAAoAAAAwABwAAAAAAAAAAAAwAB0AAAAIAAoAAAAwAB4AAAAIAAkAAAAwAB8AAAABAAMAAAAwACAAAAABAAQAAAAwACEAAAABAAQAAAAwACIAAAABAAQAAAAwACMAAAABAAQAAAAwACQAAAABAAQAAAAwACUAAAABAAQAAAAwACYAAAABAAQAAAAwACcAAAABAAQAAAAwACgAAAABAAQAAAAwACkAAAABAAQAAAAwACoAAAABAAQAAAAwACsAAAABAAQAAAAwACwAAAABAAQAAAAwAC0AAAABAAQAAAAwAC4AAAABAAQAAAAwAC8AAAABAAQAAAAwADAAAAABAAQAAAAwADEAAAABAAQAAAAwADIAAAABAAQAAAAwADMAAAAQAAYAAAAxAPD/AAADAAcAAAAxAPH/AAADAAcAAAAxAPL/AAADAAcAAAAxAPP/AAADAAcAAAAxAPT/AAADAAcAAAAxAPX/AAADAAcAAAAxAPb/AAADAAcAAAAxAPf/AAADAAcAAAAxAPj/AAADAAcAAAAxAPn/AAADAAcAAAAxAPr/AAADAAcAAAAxAPv/AAADAAcAAAAxAPz/AAADAAcAAAAxAP3/AAADAAcAAAAxAP7/AAADAAcAAAAxAP//AAAAAAEAAAAxAAAAAAAAAAEAAAAxAAEAAAADAAcAAAAxAAIAAAAAAAEAAAAxAAMAAAADAAcAAAAxAAQAAAACAAkAAAAxAAUAAAAEAAgAAAAxAAYAAAAFAAoAAAAxAAcAAAAIAAoAAAAxAAgAAAAFAAoAAAAxAAkAAAAAAAAAAAAxAAoAAAAAAAAAAAAxAAsAAAAAAAAAAAAxAAwAAAAIAAoAAAAxAA0AAAAIAAkAAAAxAA4AAAAIAAkAAAAxAA8AAAAIAAkAAAAxABAAAAAFAAoAAAAxABEAAAAAAAAAAAAxABIAAAAFAAkAAAAxABMAAAAFAAoAAAAxABQAAAAFAAkAAAAxABUAAAAFAAoAAAAxABYAAAAHAAkAAAAxABcAAAAFAAoAAAAxABgAAAAFAAoAAAAxABkAAAAFAAoAAAAxABoAAAAHAAkAAAAxABsAAAAIAAoAAAAxABwAAAAIAAoAAAAxAB0AAAAIAAkAAAAxAB4AAAAFAAoAAAAxAB8AAAABAAMAAAAxACAAAAABAAQAAAAxACEAAAABAAQAAAAxACIAAAABAAQAAAAxACMAAAABAAQAAAAxACQAAAABAAQAAAAxACUAAAABAAQAAAAxACYAAAABAAQAAAAxACcAAAABAAQAAAAxACgAAAABAAQAAAAxACkAAAABAAQAAAAxACoAAAABAAQAAAAxACsAAAABAAQAAAAxACwAAAABAAQAAAAxAC0AAAABAAQAAAAxAC4AAAABAAQAAAAxAC8AAAABAAQAAAAxADAAAAABAAQAAAAxADEAAAABAAQAAAAxADIAAAABAAQAAAAxADMAAAAQAAYAAAAyAPD/AAADAAcAAAAyAPH/AAADAAcAAAAyAPL/AAAAAAEAAAAyAPP/AAAAAAEAAAAyAPT/AAADAAcAAAAyAPX/AAADAAcAAAAyAPb/AAADAAcAAAAyAPf/AAADAAcAAAAyAPj/AAAAAAEAAAAyAPn/AAAAAAEAAAAyAPr/AAAAAAEAAAAyAPv/AAAAAAEAAAAyAPz/AAADAAcAAAAyAP3/AAADAAcAAAAyAP7/AAADAAcAAAAyAP//AAADAAcAAAAyAAAAAAADAAcAAAAyAAEAAAADAAcAAAAyAAIAAAADAAcAAAAyAAMAAAACAAkAAAAyAAQAAAAEAAgAAAAyAAUAAAAAAAAAAAAyAAYAAAAFAAoAAAAyAAcAAAAIAAoAAAAyAAgAAAAIAAkAAAAyAAkAAAAIAAoAAAAyAAoAAAAIAAoAAAAyAAsAAAAIAAkAAAAyAAwAAAAFAAkAAAAyAA0AAAAAAAAAAAAyAA4AAAAHAAoAAAAyAA8AAAAIAAkAAAAyABAAAAAFAAkAAAAyABEAAAAHAAoAAAAyABIAAAAHAAoAAAAyABMAAAAFAAkAAAAyABQAAAAAAAAAAAAyABUAAAAIAAoAAAAyABYAAAAHAAoAAAAyABcAAAAAAAAAAAAyABgAAAAHAAoAAAAyABkAAAAAAAAAAAAyABoAAAAHAAoAAAAyABsAAAAHAAoAAAAyABwAAAAHAAkAAAAyAB0AAAAFAAkAAAAyAB4AAAAAAAMAAAAyAB8AAAABAAcAAAAyACAAAAABAAQAAAAyACEAAAABAAQAAAAyACIAAAABAAQAAAAyACMAAAAAAAYAAAAyACQAAAACAAQAAAAyACUAAAACAAQAAAAyACYAAAACAAQAAAAyACcAAAACAAQAAAAyACgAAAACAAQAAAAyACkAAAACAAQAAAAyACoAAAACAAQAAAAyACsAAAACAAQAAAAyACwAAAACAAQAAAAyAC0AAAACAAQAAAAyAC4AAAACAAQAAAAyAC8AAAACAAQAAAAyADAAAAACAAQAAAAyADEAAAACAAQAAAAyADIAAAACAAQAAAAyADMAAAAKAA4AAAAzAPD/AAADAAcAAAAzAPH/AAADAAcAAAAzAPL/AAAAAAEAAAAzAPP/AAADAAcAAAAzAPT/AAADAAcAAAAzAPX/AAAAAAEAAAAzAPb/AAAAAAEAAAAzAPf/AAADAAcAAAAzAPj/AAAAAAEAAAAzAPn/AAADAAcAAAAzAPr/AAADAAcAAAAzAPv/AAADAAcAAAAzAPz/AAADAAcAAAAzAP3/AAADAAcAAAAzAP7/AAADAAcAAAAzAP//AAADAAcAAAAzAAAAAAADAAcAAAAzAAEAAAAAAAEAAAAzAAIAAAACAAkAAAAzAAMAAAAEAAgAAAAzAAQAAAAIAAkAAAAzAAUAAAAFAAkAAAAzAAYAAAAHAAkAAAAzAAcAAAAHAAoAAAAzAAgAAAAFAAoAAAAzAAkAAAAHAAoAAAAzAAoAAAAHAAoAAAAzAAsAAAAFAAoAAAAzAAwAAAAFAAoAAAAzAA0AAAAIAAoAAAAzAA4AAAAHAAoAAAAzAA8AAAAHAAkAAAAzABAAAAAFAAkAAAAzABEAAAAHAAoAAAAzABIAAAAIAAoAAAAzABMAAAAFAAoAAAAzABQAAAAFAAkAAAAzABUAAAAHAAoAAAAzABYAAAAHAAkAAAAzABcAAAAIAAkAAAAzABgAAAAIAAkAAAAzABkAAAAIAAoAAAAzABoAAAAIAAoAAAAzABsAAAAFAAoAAAAzABwAAAAIAAoAAAAzAB0AAAAAAAMAAAAzAB4AAAABAAcAAAAzAB8AAAABAAQAAAAzACAAAAABAAQAAAAzACEAAAABAAQAAAAzACIAAAABAAQAAAAzACMAAAABAAUAAAAzACQAAAAIAAkAAAAzACUAAAAAAAAAAAAzACYAAAAIAAkAAAAzACcAAAAIAAoAAAAzACgAAAAHAAoAAAAzACkAAAAHAAoAAAAzACoAAAAAAAAAAAAzACsAAAAIAAoAAAAzACwAAAAHAAkAAAAzAC0AAAAIAAoAAAAzAC4AAAAIAAkAAAAzAC8AAAAFAAkAAAAzADAAAAAHAAoAAAAzADEAAAAIAAkAAAAzADIAAAAIAAkAAAAzADMAAAAAAAAAAAA0APD/AAADAAcAAAA0APH/AAADAAcAAAA0APL/AAADAAcAAAA0APP/AAADAAcAAAA0APT/AAADAAcAAAA0APX/AAAAAAEAAAA0APb/AAADAAcAAAA0APf/AAADAAcAAAA0APj/AAADAAcAAAA0APn/AAADAAcAAAA0APr/AAAAAAEAAAA0APv/AAADAAcAAAA0APz/AAADAAcAAAA0AP3/AAADAAcAAAA0AP7/AAADAAcAAAA0AP//AAADAAcAAAA0AAAAAAADAAcAAAA0AAEAAAADAAcAAAA0AAIAAAADAAgAAAA0AAMAAAAFAAoAAAA0AAQAAAAHAAoAAAA0AAUAAAAAAAAAAAA0AAYAAAAHAAkAAAA0AAcAAAAHAAoAAAA0AAgAAAAIAAkAAAA0AAkAAAAFAAoAAAA0AAoAAAAFAAkAAAA0AAsAAAAHAAoAAAA0AAwAAAAFAAoAAAA0AA0AAAAFAAkAAAA0AA4AAAAHAAkAAAA0AA8AAAAHAAkAAAA0ABAAAAAHAAoAAAA0ABEAAAAIAAoAAAA0ABIAAAAHAAoAAAA0ABMAAAAHAAoAAAA0ABQAAAAHAAoAAAA0ABUAAAAFAAoAAAA0ABYAAAAIAAkAAAA0ABcAAAAFAAkAAAA0ABgAAAAHAAoAAAA0ABkAAAAIAAoAAAA0ABoAAAAFAAoAAAA0ABsAAAAFAAkAAAA0ABwAAAAHAAoAAAA0AB0AAAABAAMAAAA0AB4AAAABAAQAAAA0AB8AAAABAAQAAAA0ACAAAAABAAQAAAA0ACEAAAABAAQAAAA0ACIAAAABAAQAAAA0ACMAAAABAAUAAAA0ACQAAAAFAAkAAAA0ACUAAAAIAAoAAAA0ACYAAAAAAAAAAAA0ACcAAAAIAAkAAAA0ACgAAAAHAAkAAAA0ACkAAAAHAAkAAAA0ACoAAAAHAAkAAAA0ACsAAAAIAAoAAAA0ACwAAAAIAAkAAAA0AC0AAAAFAAoAAAA0AC4AAAAFAAkAAAA0AC8AAAAHAAoAAAA0ADAAAAAHAAkAAAA0ADEAAAAIAAkAAAA0ADIAAAAIAAoAAAA0ADMAAAAAAAAAAAA1APD/AAADAAcAAAA1APH/AAADAAcAAAA1APL/AAADAAcAAAA1APP/AAADAAcAAAA1APT/AAAAAAEAAAA1APX/AAADAAcAAAA1APb/AAAAAAEAAAA1APf/AAAAAAEAAAA1APj/AAADAAcAAAA1APn/AAADAAcAAAA1APr/AAADAAcAAAA1APv/AAAAAAEAAAA1APz/AAADAAcAAAA1AP3/AAADAAcAAAA1AP7/AAADAAcAAAA1AP//AAAAAAEAAAA1AAAAAAAAAAEAAAA1AAEAAAADAAcAAAA1AAIAAAADAAgAAAA1AAMAAAAFAAoAAAA1AAQAAAAFAAkAAAA1AAUAAAAFAAoAAAA1AAYAAAAIAAoAAAA1AAcAAAAHAAoAAAA1AAgAAAAIAAoAAAA1AAkAAAAFAAkAAAA1AAoAAAAHAAkAAAA1AAsAAAAIAAkAAAA1AAwAAAAFAAkAAAA1AA0AAAAIAAkAAAA1AA4AAAAIAAkAAAA1AA8AAAAIAAoAAAA1ABAAAAAHAAoAAAA1ABEAAAAHAAkAAAA1ABIAAAAIAAkAAAA1ABMAAAAHAAoAAAA1ABQAAAAHAAoAAAA1ABUAAAAIAAkAAAA1ABYAAAAIAAkAAAA1ABcAAAAIAAoAAAA1ABgAAAAAAAAAAAA1ABkAAAAIAAkAAAA1ABoAAAAFAAkAAAA1ABsAAAAHAAoAAAA1ABwAAAAAAAMAAAA1AB0AAAABAAcAAAA1AB4AAAABAAQAAAA1AB8AAAABAAQAAAA1ACAAAAAAAAYAAAA1ACEAAAABAAQAAAA1ACIAAAABAAQAAAA1ACMAAAABAAUAAAA1ACQAAAAFAAkAAAA1ACUAAAAHAAkAAAA1ACYAAAAIAAkAAAA1ACcAAAAIAAoAAAA1ACgAAAAFAAkAAAA1ACkAAAAIAAkAAAA1ACoAAAAHAAkAAAA1ACsAAAAHAAkAAAA1ACwAAAAFAAkAAAA1AC0AAAAFAAkAAAA1AC4AAAAFAAoAAAA1AC8AAAAFAAkAAAA1ADAAAAAFAAkAAAA1ADEAAAAFAAkAAAA1ADIAAAAFAAkAAAA1ADMAAAAHAAkAAAA2APD/AAADAAcAAAA2APH/AAADAAcAAAA2APL/AAADAAcAAAA2APP/AAADAAcAAAA2APT/AAADAAcAAAA2APX/AAAAAAEAAAA2APb/AAADAAcAAAA2APf/AAAAAAEAAAA2APj/AAADAAcAAAA2APn/AAADAAcAAAA2APr/AAADAAcAAAA2APv/AAADAAcAAAA2APz/AAAAAAEAAAA2AP3/AAADAAcAAAA2AP7/AAADAAcAAAA2AP//AAADAAcAAAA2AAAAAAADAAcAAAA2AAEAAAADAAcAAAA2AAIAAAADAAgAAAA2AAMAAAAHAAoAAAA2AAQAAAAIAAkAAAA2AAUAAAAFAAoAAAA2AAYAAAAHAAoAAAA2AAcAAAAIAAoAAAA2AAgAAAAIAAoAAAA2AAkAAAAFAAkAAAA2AAoAAAAHAAoAAAA2AAsAAAAHAAoAAAA2AAwAAAAIAAoAAAA2AA0AAAAHAAoAAAA2AA4AAAAIAAoAAAA2AA8AAAAHAAoAAAA2ABAAAAAIAAkAAAA2ABEAAAAHAAkAAAA2ABIAAAAIAAkAAAA2ABMAAAAHAAkAAAA2ABQAAAAIAAkAAAA2ABUAAAAHAAkAAAA2ABYAAAAFAAoAAAA2ABcAAAAFAAoAAAA2ABgAAAAHAAkAAAA2ABkAAAAHAAoAAAA2ABoAAAAHAAkAAAA2ABsAAAAAAAMAAAA2ABwAAAABAAcAAAA2AB0AAAABAAQAAAA2AB4AAAABAAQAAAA2AB8AAAABAAQAAAA2ACAAAAABAAUAAAA2ACEAAAABAAQAAAA2ACIAAAABAAQAAAA2ACMAAAABAAUAAAA2ACQAAAAIAAoAAAA2ACUAAAAHAAkAAAA2ACYAAAAIAAkAAAA2ACcAAAAAAAAAAAA2ACgAAAAFAAoAAAA2ACkAAAAIAAoAAAA2ACoAAAAFAAkAAAA2ACsAAAAFAAkAAAA2ACwAAAAIAAoAAAA2AC0AAAAFAAoAAAA2AC4AAAAHAAkAAAA2AC8AAAAFAAkAAAA2ADAAAAAHAAoAAAA2ADEAAAAHAAoAAAA2ADIAAAAFAAoAAAA2ADMAAAAFAAoAAAA3APD/AAADAAcAAAA3APH/AAADAAcAAAA3APL/AAADAAcAAAA3APP/AAADAAcAAAA3APT/AAADAAcAAAA3APX/AAAAAAEAAAA3APb/AAADAAcAAAA3APf/AAADAAcAAAA3APj/AAADAAcAAAA3APn/AAADAAcAAAA3APr/AAADAAcAAAA3APv/AAAAAAEAAAA3APz/AAADAAcAAAA3AP3/AAADAAcAAAA3AP7/AAADAAcAAAA3AP//AAADAAcAAAA3AAAAAAADAAcAAAA3AAEAAAACAAkAAAA3AAIAAAAEAAgAAAA3AAMAAAAHAAoAAAA3AAQAAAAIAAkAAAA3AAUAAAAHAAkAAAA3AAYAAAAIAAkAAAA3AAcAAAAIAAkAAAA3AAgAAAAAAAAAAAA3AAkAAAAFAAoAAAA3AAoAAAAAAAAAAAA3AAsAAAAHAAkAAAA3AAwAAAAFAAkAAAA3AA0AAAAIAAkAAAA3AA4AAAAAAAAAAAA3AA8AAAAIAAoAAAA3ABAAAAAHAAkAAAA3ABEAAAAFAAoAAAA3ABIAAAAAAAAAAAA3ABMAAAAHAAoAAAA3ABQAAAAAAAAAAAA3ABUAAAAHAAoAAAA3ABYAAAAHAAkAAAA3ABcAAAAIAAkAAAA3ABgAAAAAAAAAAAA3ABkAAAAFAAkAAAA3ABoAAAAHAAkAAAA3ABsAAAABAAMAAAA3ABwAAAABAAQAAAA3AB0AAAABAAQAAAA3AB4AAAABAAQAAAA3AB8AAAAAAAYAAAA3ACAAAAACAAUAAAA3ACEAAAABAAQAAAA3ACIAAAABAAQAAAA3ACMAAAABAAUAAAA3ACQAAAAFAAoAAAA3ACUAAAAIAAkAAAA3ACYAAAAIAAkAAAA3ACcAAAAHAAkAAAA3ACgAAAAIAAoAAAA3ACkAAAAFAAkAAAA3ACoAAAAHAAkAAAA3ACsAAAAFAAoAAAA3ACwAAAAIAAkAAAA3AC0AAAAAAAAAAAA3AC4AAAAHAAkAAAA3AC8AAAAAAAAAAAA3ADAAAAAFAAkAAAA3ADEAAAAFAAkAAAA3ADIAAAAAAAAAAAA3ADMAAAAFAAkAAAA4APD/AAADAAcAAAA4APH/AAADAAcAAAA4APL/AAAAAAEAAAA4APP/AAAAAAEAAAA4APT/AAADAAcAAAA4APX/AAACAAkAAAA4APb/AAAEAAcAAAA4APf/AAAEAAcAAAA4APj/AAAEAAcAAAA4APn/AAAEAAcAAAA4APr/AAACAAoAAAA4APv/AAADAAcAAAA4APz/AAADAAcAAAA4AP3/AAADAAcAAAA4AP7/AAAAAAEAAAA4AP//AAACAAkAAAA4AAAAAAAEAAcAAAA4AAEAAAAEAAgAAAA4AAIAAAAFAAoAAAA4AAMAAAAIAAkAAAA4AAQAAAAFAAkAAAA4AAUAAAAFAAoAAAA4AAYAAAAIAAoAAAA4AAcAAAAHAAkAAAA4AAgAAAAHAAkAAAA4AAkAAAAFAAkAAAA4AAoAAAAFAAoAAAA4AAsAAAAFAAkAAAA4AAwAAAAIAAoAAAA4AA0AAAAIAAkAAAA4AA4AAAAFAAoAAAA4AA8AAAAFAAoAAAA4ABAAAAAHAAoAAAA4ABEAAAAIAAkAAAA4ABIAAAAIAAoAAAA4ABMAAAAIAAkAAAA4ABQAAAAAAAAAAAA4ABUAAAAHAAkAAAA4ABYAAAAAAAAAAAA4ABcAAAAHAAkAAAA4ABgAAAAIAAkAAAA4ABkAAAAIAAoAAAA4ABoAAAAAAAMAAAA4ABsAAAABAAcAAAA4ABwAAAABAAQAAAA4AB0AAAABAAQAAAA4AB4AAAAAAAYAAAA4AB8AAAACAAUAAAA4ACAAAAABAAMAAAA4ACEAAAABAAQAAAA4ACIAAAABAAQAAAA4ACMAAAABAAUAAAA4ACQAAAAHAAkAAAA4ACUAAAAIAAoAAAA4ACYAAAAFAAoAAAA4ACcAAAAHAAoAAAA4ACgAAAAHAAkAAAA4ACkAAAAFAAkAAAA4ACoAAAAFAAoAAAA4ACsAAAAAAAAAAAA4ACwAAAAIAAkAAAA4AC0AAAAIAAoAAAA4AC4AAAAIAAkAAAA4AC8AAAAFAAkAAAA4ADAAAAAFAAkAAAA4ADEAAAAHAAkAAAA4ADIAAAAHAAoAAAA4ADMAAAAFAAkAAAA5APD/AAADAAcAAAA5APH/AAADAAcAAAA5APL/AAADAAcAAAA5APP/AAADAAcAAAA5APT/AAACAAkAAAA5APX/AAAEAAgAAAA5APb/AAAFAAkAAAA5APf/AAAAAAAAAAA5APj/AAAIAAkAAAA5APn/AAAFAAkAAAA5APr/AAAEAAYAAAA5APv/AAAEAAcAAAA5APz/AAAEAAcAAAA5AP3/AAAEAAcAAAA5AP7/AAAEAAcAAAA5AP//AAAEAAgAAAA5AAAAAAAIAAkAAAA5AAEAAAAFAAkAAAA5AAIAAAAHAAkAAAA5AAMAAAAFAAkAAAA5AAQAAAAFAAkAAAA5AAUAAAAFAAoAAAA5AAYAAAAIAAoAAAA5AAcAAAAHAAoAAAA5AAgAAAAFAAoAAAA5AAkAAAAIAAoAAAA5AAoAAAAFAAkAAAA5AAsAAAAFAAoAAAA5AAwAAAAFAAkAAAA5AA0AAAAIAAoAAAA5AA4AAAAFAAkAAAA5AA8AAAAIAAoAAAA5ABAAAAAFAAoAAAA5ABEAAAAFAAkAAAA5ABIAAAAAAAAAAAA5ABMAAAAHAAoAAAA5ABQAAAAAAAAAAAA5ABUAAAAIAAoAAAA5ABYAAAAIAAoAAAA5ABcAAAAHAAkAAAA5ABgAAAAHAAkAAAA5ABkAAAAHAAkAAAA5ABoAAAABAAMAAAA5ABsAAAABAAQAAAA5ABwAAAABAAQAAAA5AB0AAAABAAQAAAA5AB4AAAABAAUAAAA5AB8AAAAIAAkAAAA5ACAAAAABAAMAAAA5ACEAAAABAAQAAAA5ACIAAAABAAQAAAA5ACMAAAABAAUAAAA5ACQAAAAAAAAAAAA5ACUAAAAFAAoAAAA5ACYAAAAFAAoAAAA5ACcAAAAIAAoAAAA5ACgAAAAIAAoAAAA5ACkAAAAHAAoAAAA5ACoAAAAFAAkAAAA5ACsAAAAHAAoAAAA5ACwAAAAFAAoAAAA5AC0AAAAHAAoAAAA5AC4AAAAIAAkAAAA5AC8AAAAFAAoAAAA5ADAAAAAFAAkAAAA5ADEAAAAFAAoAAAA5ADIAAAAHAAoAAAA5ADMAAAAIAAkAAAA6APD/AAAAAAEAAAA6APH/AAADAAcAAAA6APL/AAACAAkAAAA6APP/AAAEAAcAAAA6APT/AAAEAAgAAAA6APX/AAAHAAkAAAA6APb/AAAIAAoAAAA6APf/AAAIAAoAAAA6APj/AAAFAAkAAAA6APn/AAAAAAAAAAA6APr/AAAHAAkAAAA6APv/AAAHAAkAAAA6APz/AAAFAAoAAAA6AP3/AAAIAAoAAAA6AP7/AAAAAAAAAAA6AP//AAAIAAkAAAA6AAAAAAAHAAoAAAA6AAEAAAAFAAoAAAA6AAIAAAAHAAoAAAA6AAMAAAAAAAAAAAA6AAQAAAAHAAkAAAA6AAUAAAAIAAoAAAA6AAYAAAAFAAoAAAA6AAcAAAAHAAkAAAA6AAgAAAAFAAkAAAA6AAkAAAAHAAoAAAA6AAoAAAAHAAoAAAA6AAsAAAAIAAoAAAA6AAwAAAAAAAAAAAA6AA0AAAAIAAoAAAA6AA4AAAAFAAkAAAA6AA8AAAAIAAoAAAA6ABAAAAAAAAAAAAA6ABEAAAAIAAoAAAA6ABIAAAAHAAkAAAA6ABMAAAAFAAkAAAA6ABQAAAAFAAkAAAA6ABUAAAAIAAkAAAA6ABYAAAAIAAkAAAA6ABcAAAAIAAkAAAA6ABgAAAAHAAkAAAA6ABkAAAAAAAMAAAA6ABoAAAABAAcAAAA6ABsAAAABAAQAAAA6ABwAAAABAAQAAAA6AB0AAAAAAAYAAAA6AB4AAAACAAUAAAA6AB8AAAAIAAkAAAA6ACAAAAABAAMAAAA6ACEAAAABAAQAAAA6ACIAAAABAAQAAAA6ACMAAAABAAUAAAA6ACQAAAAIAAoAAAA6ACUAAAAIAAoAAAA6ACYAAAAIAAoAAAA6ACcAAAAAAAAAAAA6ACgAAAAIAAkAAAA6ACkAAAAFAAkAAAA6ACoAAAAAAAAAAAA6ACsAAAAHAAoAAAA6ACwAAAAIAAkAAAA6AC0AAAAIAAoAAAA6AC4AAAAHAAoAAAA6AC8AAAAFAAoAAAA6ADAAAAAIAAoAAAA6ADEAAAAAAAAAAAA6ADIAAAAAAAAAAAA6ADMAAAAFAAkAAAA7APD/AAAEAAcAAAA7APH/AAAEAAcAAAA7APL/AAAEAAgAAAA7APP/AAAHAAkAAAA7APT/AAAHAAoAAAA7APX/AAAIAAoAAAA7APb/AAAHAAoAAAA7APf/AAAHAAoAAAA7APj/AAAHAAoAAAA7APn/AAAAAAAAAAA7APr/AAAAAAAAAAA7APv/AAAFAAoAAAA7APz/AAAAAAAAAAA7AP3/AAAFAAoAAAA7AP7/AAAIAAkAAAA7AP//AAAFAAkAAAA7AAAAAAAIAAoAAAA7AAEAAAAIAAoAAAA7AAIAAAAIAAkAAAA7AAMAAAAFAAkAAAA7AAQAAAAAAAAAAAA7AAUAAAAHAAkAAAA7AAYAAAAFAAoAAAA7AAcAAAAFAAkAAAA7AAgAAAAIAAkAAAA7AAkAAAAFAAoAAAA7AAoAAAAHAAkAAAA7AAsAAAAHAAkAAAA7AAwAAAAHAAoAAAA7AA0AAAAHAAkAAAA7AA4AAAAHAAkAAAA7AA8AAAAHAAkAAAA7ABAAAAAHAAoAAAA7ABEAAAAFAAkAAAA7ABIAAAAIAAkAAAA7ABMAAAAFAAoAAAA7ABQAAAAIAAoAAAA7ABUAAAAAAAAAAAA7ABYAAAAFAAoAAAA7ABcAAAAIAAoAAAA7ABgAAAAAAAMAAAA7ABkAAAABAAcAAAA7ABoAAAABAAQAAAA7ABsAAAABAAQAAAA7ABwAAAAAAAYAAAA7AB0AAAACAAUAAAA7AB4AAAAIAAoAAAA7AB8AAAAIAAkAAAA7ACAAAAABAAMAAAA7ACEAAAABAAQAAAA7ACIAAAABAAQAAAA7ACMAAAABAAUAAAA7ACQAAAAFAAkAAAA7ACUAAAAIAAoAAAA7ACYAAAAFAAkAAAA7ACcAAAAHAAoAAAA7ACgAAAAHAAoAAAA7ACkAAAAHAAoAAAA7ACoAAAAAAAAAAAA7ACsAAAAAAAAAAAA7ACwAAAAFAAkAAAA7AC0AAAAIAAoAAAA7AC4AAAAHAAoAAAA7AC8AAAAAAAAAAAA7ADAAAAAFAAkAAAA7ADEAAAAHAAoAAAA7ADIAAAAHAAoAAAA7ADMAAAAAAAkAAAA8APD/AAABAAsAAAA8APH/AAAFAAoAAAA8APL/AAAHAAoAAAA8APP/AAAFAAkAAAA8APT/AAAFAAoAAAA8APX/AAAHAAoAAAA8APb/AAAAAAAAAAA8APf/AAAFAAkAAAA8APj/AAAHAAkAAAA8APn/AAAHAAoAAAA8APr/AAAFAAkAAAA8APv/AAAIAAoAAAA8APz/AAAIAAkAAAA8AP3/AAAFAAkAAAA8AP7/AAAIAAkAAAA8AP//AAAHAAoAAAA8AAAAAAAIAAoAAAA8AAEAAAAIAAkAAAA8AAIAAAAIAAoAAAA8AAMAAAAIAAkAAAA8AAQAAAAAAAAAAAA8AAUAAAAHAAkAAAA8AAYAAAAFAAoAAAA8AAcAAAAHAAoAAAA8AAgAAAAAAAAAAAA8AAkAAAAIAAkAAAA8AAoAAAAHAAoAAAA8AAsAAAAFAAoAAAA8AAwAAAAAAAAAAAA8AA0AAAAHAAoAAAA8AA4AAAAIAAkAAAA8AA8AAAAIAAoAAAA8ABAAAAAAAAAAAAA8ABEAAAAHAAkAAAA8ABIAAAAHAAoAAAA8ABMAAAAHAAoAAAA8ABQAAAAAAAAAAAA8ABUAAAAFAAkAAAA8ABYAAAAHAAoAAAA8ABcAAAAAAAMAAAA8ABgAAAABAAcAAAA8ABkAAAABAAQAAAA8ABoAAAABAAQAAAA8ABsAAAAAAAYAAAA8ABwAAAACAAUAAAA8AB0AAAAFAAkAAAA8AB4AAAAIAAkAAAA8AB8AAAAIAAkAAAA8ACAAAAABAAMAAAA8ACEAAAABAAQAAAA8ACIAAAABAAQAAAA8ACMAAAABAAUAAAA8ACQAAAAFAAoAAAA8ACUAAAAAAAAAAAA8ACYAAAAHAAoAAAA8ACcAAAAFAAoAAAA8ACgAAAAFAAoAAAA8ACkAAAAFAAkAAAA8ACoAAAAIAAoAAAA8ACsAAAAIAAkAAAA8ACwAAAAIAAoAAAA8AC0AAAAFAAoAAAA8AC4AAAAFAAoAAAA8AC8AAAAFAAkAAAA8ADAAAAAFAAoAAAA8ADEAAAAFAAoAAAA8ADIAAAAHAAoAAAA8ADMAAAABAAkAAAA9APD/AAABAAsAAAA9APH/AAAFAAkAAAA9APL/AAAIAAkAAAA9APP/AAAIAAkAAAA9APT/AAAHAAoAAAA9APX/AAAHAAkAAAA9APb/AAAFAAoAAAA9APf/AAAIAAkAAAA9APj/AAAHAAoAAAA9APn/AAAHAAkAAAA9APr/AAAFAAkAAAA9APv/AAAHAAoAAAA9APz/AAAAAAAAAAA9AP3/AAAHAAkAAAA9AP7/AAAFAAoAAAA9AP//AAAAAAAAAAA9AAAAAAAHAAkAAAA9AAEAAAAAAAAAAAA9AAIAAAAAAAAAAAA9AAMAAAAFAAkAAAA9AAQAAAAIAAkAAAA9AAUAAAAFAAkAAAA9AAYAAAAHAAkAAAA9AAcAAAAFAAoAAAA9AAgAAAAAAAAAAAA9AAkAAAAHAAkAAAA9AAoAAAAHAAkAAAA9AAsAAAAFAAoAAAA9AAwAAAAFAAoAAAA9AA0AAAAAAAAAAAA9AA4AAAAIAAoAAAA9AA8AAAAIAAkAAAA9ABAAAAAFAAkAAAA9ABEAAAAHAAoAAAA9ABIAAAAIAAoAAAA9ABMAAAAHAAkAAAA9ABQAAAAHAAoAAAA9ABUAAAAHAAkAAAA9ABYAAAAAAAMAAAA9ABcAAAABAAcAAAA9ABgAAAABAAQAAAA9ABkAAAABAAQAAAA9ABoAAAAAAAYAAAA9ABsAAAACAAUAAAA9ABwAAAAFAAoAAAA9AB0AAAAFAAkAAAA9AB4AAAAFAAoAAAA9AB8AAAAIAAoAAAA9ACAAAAABAAMAAAA9ACEAAAABAAQAAAA9ACIAAAABAAQAAAA9ACMAAAABAAUAAAA9ACQAAAAIAAkAAAA9ACUAAAAFAAkAAAA9ACYAAAAHAAkAAAA9ACcAAAAAAAAAAAA9ACgAAAAHAAkAAAA9ACkAAAAHAAoAAAA9ACoAAAAIAAkAAAA9ACsAAAAAAAAAAAA9ACwAAAAFAAoAAAA9AC0AAAAIAAkAAAA9AC4AAAAHAAkAAAA9AC8AAAAFAAoAAAA9ADAAAAAIAAoAAAA9ADEAAAAIAAoAAAA9ADIAAAAAAAAAAAA9ADMAAAAHAAoAAAA+APD/AAABAAsAAAA+APH/AAAAAAAAAAA+APL/AAAAAAAAAAA+APP/AAAFAAoAAAA+APT/AAAFAAkAAAA+APX/AAAAAAAAAAA+APb/AAAAAAAAAAA+APf/AAAFAAoAAAA+APj/AAAHAAoAAAA+APn/AAAIAAkAAAA+APr/AAAHAAkAAAA+APv/AAAFAAoAAAA+APz/AAAIAAoAAAA+AP3/AAAHAAkAAAA+AP7/AAAIAAoAAAA+AP//AAAAAAAAAAA+AAAAAAAHAAoAAAA+AAEAAAAFAAkAAAA+AAIAAAAIAAkAAAA+AAMAAAAHAAoAAAA+AAQAAAAFAAkAAAA+AAUAAAAIAAkAAAA+AAYAAAAHAAoAAAA+AAcAAAAFAAoAAAA+AAgAAAAIAAkAAAA+AAkAAAAAAAAAAAA+AAoAAAAIAAoAAAA+AAsAAAAAAAAAAAA+AAwAAAAAAAAAAAA+AA0AAAAHAAoAAAA+AA4AAAAHAAkAAAA+AA8AAAAFAAoAAAA+ABAAAAAAAAAAAAA+ABEAAAAFAAkAAAA+ABIAAAAAAAAAAAA+ABMAAAAHAAoAAAA+ABQAAAAAAAAAAAA+ABUAAAAAAAMAAAA+ABYAAAABAAcAAAA+ABcAAAABAAQAAAA+ABgAAAABAAQAAAA+ABkAAAAAAAYAAAA+ABoAAAACAAUAAAA+ABsAAAAHAAkAAAA+ABwAAAAHAAoAAAA+AB0AAAAHAAoAAAA+AB4AAAAIAAoAAAA+AB8AAAAFAAkAAAA+ACAAAAABAAMAAAA+ACEAAAABAAQAAAA+ACIAAAABAAQAAAA+ACMAAAABAAUAAAA+ACQAAAAHAAoAAAA+ACUAAAAFAAkAAAA+ACYAAAAHAAoAAAA+ACcAAAAHAAkAAAA+ACgAAAAIAAkAAAA+ACkAAAAIAAkAAAA+ACoAAAAIAAoAAAA+ACsAAAAFAAoAAAA+ACwAAAAFAAkAAAA+AC0AAAAFAAoAAAA+AC4AAAAFAAoAAAA+AC8AAAAHAAkAAAA+ADAAAAAFAAkAAAA+ADEAAAAHAAkAAAA+ADIAAAAIAAkAAAA+ADMAAAAAAAAAAAA/APD/AAABAAsAAAA/APH/AAAFAAkAAAA/APL/AAAIAAkAAAA/APP/AAAIAAkAAAA/APT/AAAHAAoAAAA/APX/AAAFAAoAAAA/APb/AAAHAAkAAAA/APf/AAAHAAoAAAA/APj/AAAFAAkAAAA/APn/AAAHAAkAAAA/APr/AAAFAAkAAAA/APv/AAAFAAoAAAA/APz/AAAIAAoAAAA/AP3/AAAFAAkAAAA/AP7/AAAAAAAAAAA/AP//AAAIAAkAAAA/AAAAAAAFAAoAAAA/AAEAAAAHAAkAAAA/AAIAAAAFAAkAAAA/AAMAAAAAAAAAAAA/AAQAAAAFAAoAAAA/AAUAAAAFAAkAAAA/AAYAAAAAAAAAAAA/AAcAAAAAAAAAAAA/AAgAAAAIAAoAAAA/AAkAAAAHAAoAAAA/AAoAAAAHAAoAAAA/AAsAAAAHAAkAAAA/AAwAAAAIAAoAAAA/AA0AAAAFAAkAAAA/AA4AAAAHAAkAAAA/AA8AAAAFAAkAAAA/ABAAAAAHAAoAAAA/ABEAAAAIAAkAAAA/ABIAAAAIAAoAAAA/ABMAAAAHAAkAAAA/ABQAAAAIAAkAAAA/ABUAAAABAAMAAAA/ABYAAAABAAQAAAA/ABcAAAABAAQAAAA/ABgAAAAAAAYAAAA/ABkAAAACAAUAAAA/ABoAAAAFAAoAAAA/ABsAAAAIAAoAAAA/ABwAAAAIAAoAAAA/AB0AAAAHAAkAAAA/AB4AAAAAAAAAAAA/AB8AAAAIAAkAAAA/ACAAAAABAAMAAAA/ACEAAAABAAQAAAA/ACIAAAABAAQAAAA/ACMAAAABAAUAAAA/ACQAAAAIAAkAAAA/ACUAAAAIAAoAAAA/ACYAAAAAAAAAAAA/ACcAAAAIAAkAAAA/ACgAAAAIAAoAAAA/ACkAAAAIAAoAAAA/ACoAAAAIAAoAAAA/ACsAAAAHAAkAAAA/ACwAAAAIAAoAAAA/AC0AAAAHAAoAAAA/AC4AAAAHAAkAAAA/AC8AAAAFAAkAAAA/ADAAAAAFAAoAAAA/ADEAAAAHAAoAAAA/ADIAAAAFAAkAAAA/ADMAAAAFAAkAAABAAPD/AAABAAsAAABAAPH/AAAIAAkAAABAAPL/AAAFAAkAAABAAPP/AAAHAAkAAABAAPT/AAAAAAAAAABAAPX/AAAFAAkAAABAAPb/AAAIAAoAAABAAPf/AAAIAAoAAABAAPj/AAAHAAkAAABAAPn/AAAAAAAAAABAAPr/AAAFAAkAAABAAPv/AAAIAAkAAABAAPz/AAAHAAkAAABAAP3/AAAHAAoAAABAAP7/AAAAAAAAAABAAP//AAAIAAkAAABAAAAAAAAFAAoAAABAAAEAAAAIAAoAAABAAAIAAAAAAAAAAABAAAMAAAAHAAkAAABAAAQAAAAIAAoAAABAAAUAAAAAAAAAAABAAAYAAAAFAAoAAABAAAcAAAAIAAkAAABAAAgAAAAHAAoAAABAAAkAAAAAAAAAAABAAAoAAAAHAAkAAABAAAsAAAAAAAAAAABAAAwAAAAHAAkAAABAAA0AAAAIAAkAAABAAA4AAAAIAAoAAABAAA8AAAAFAAkAAABAABAAAAAHAAkAAABAABEAAAAIAAoAAABAABIAAAAHAAkAAABAABMAAAAIAAkAAABAABQAAAAAAAMAAABAABUAAAABAAcAAABAABYAAAABAAQAAABAABcAAAABAAQAAABAABgAAAABAAUAAABAABkAAAAHAAoAAABAABoAAAAIAAoAAABAABsAAAAFAAkAAABAABwAAAAAAAAAAABAAB0AAAAIAAoAAABAAB4AAAAAAAAAAABAAB8AAAAHAAkAAABAACAAAAABAAMAAABAACEAAAABAAQAAABAACIAAAABAAQAAABAACMAAAABAAUAAABAACQAAAAHAAkAAABAACUAAAAIAAoAAABAACYAAAAHAAoAAABAACcAAAAHAAoAAABAACgAAAAIAAkAAABAACkAAAAFAAoAAABAACoAAAAIAAkAAABAACsAAAAIAAoAAABAACwAAAAIAAkAAABAAC0AAAAIAAoAAABAAC4AAAAAAAAAAABAAC8AAAAFAAkAAABAADAAAAAHAAoAAABAADEAAAAHAAoAAABAADIAAAAFAAkAAABAADMAAAAFAAoAAABBAPD/AAABAAsAAABBAPH/AAAFAAoAAABBAPL/AAAIAAoAAABBAPP/AAAHAAkAAABBAPT/AAAIAAkAAABBAPX/AAAAAAAAAABBAPb/AAAIAAkAAABBAPf/AAAAAAAAAABBAPj/AAAAAAAAAABBAPn/AAAFAAkAAABBAPr/AAAFAAkAAABBAPv/AAAFAAoAAABBAPz/AAAIAAoAAABBAP3/AAAIAAoAAABBAP7/AAAIAAoAAABBAP//AAAFAAoAAABBAAAAAAAFAAkAAABBAAEAAAAHAAkAAABBAAIAAAAFAAkAAABBAAMAAAAHAAkAAABBAAQAAAAIAAkAAABBAAUAAAAIAAoAAABBAAYAAAAHAAoAAABBAAcAAAAHAAkAAABBAAgAAAAFAAkAAABBAAkAAAAFAAoAAABBAAoAAAAIAAkAAABBAAsAAAAFAAoAAABBAAwAAAAHAAoAAABBAA0AAAAHAAoAAABBAA4AAAAFAAkAAABBAA8AAAAFAAoAAABBABAAAAAFAAkAAABBABEAAAAHAAoAAABBABIAAAAFAAkAAABBABMAAAAAAAMAAABBABQAAAABAAcAAABBABUAAAABAAQAAABBABYAAAABAAQAAABBABcAAAAAAAYAAABBABgAAAACAAUAAABBABkAAAAHAAoAAABBABoAAAAHAAkAAABBABsAAAAFAAoAAABBABwAAAAIAAkAAABBAB0AAAAIAAoAAABBAB4AAAAAAAAAAABBAB8AAAAHAAkAAABBACAAAAABAAMAAABBACEAAAABAAQAAABBACIAAAABAAQAAABBACMAAAABAAUAAABBACQAAAAFAAkAAABBACUAAAAFAAoAAABBACYAAAAAAAAAAABBACcAAAAIAAkAAABBACgAAAAAAAAAAABBACkAAAAHAAkAAABBACoAAAAFAAoAAABBACsAAAAAAAAAAABBACwAAAAFAAoAAABBAC0AAAAAAAAAAABBAC4AAAAIAAkAAABBAC8AAAAFAAkAAABBADAAAAAAAAAAAABBADEAAAAHAAoAAABBADIAAAAAAAAAAABBADMAAAAIAAkAAABCAPD/AAACAAsAAABCAPH/AAAAAAQAAABCAPL/AAAAAAUAAABCAPP/AAAIAAoAAABCAPT/AAAIAAkAAABCAPX/AAAHAAoAAABCAPb/AAAFAAoAAABCAPf/AAAIAAoAAABCAPj/AAAFAAoAAABCAPn/AAAAAAAAAABCAPr/AAAFAAoAAABCAPv/AAAHAAkAAABCAPz/AAAFAAoAAABCAP3/AAAHAAkAAABCAP7/AAAHAAkAAABCAP//AAAAAAAAAABCAAAAAAAFAAkAAABCAAEAAAAAAAAAAABCAAIAAAAAAAAAAABCAAMAAAAFAAkAAABCAAQAAAAIAAoAAABCAAUAAAAFAAkAAABCAAYAAAAFAAoAAABCAAcAAAAHAAkAAABCAAgAAAAFAAoAAABCAAkAAAAFAAkAAABCAAoAAAAHAAkAAABCAAsAAAAFAAoAAABCAAwAAAAIAAoAAABCAA0AAAAIAAoAAABCAA4AAAAIAAkAAABCAA8AAAAIAAkAAABCABAAAAAHAAkAAABCABEAAAAIAAoAAABCABIAAAAAAAMAAABCABMAAAABAAcAAABCABQAAAABAAQAAABCABUAAAABAAQAAABCABYAAAAAAAYAAABCABcAAAACAAUAAABCABgAAAAIAAoAAABCABkAAAAFAAkAAABCABoAAAAFAAkAAABCABsAAAAIAAoAAABCABwAAAAHAAkAAABCAB0AAAAHAAoAAABCAB4AAAAFAAkAAABCAB8AAAAAAAAAAABCACAAAAABAAMAAABCACEAAAABAAQAAABCACIAAAABAAQAAABCACMAAAABAAUAAABCACQAAAAHAAoAAABCACUAAAAFAAkAAABCACYAAAAHAAoAAABCACcAAAAAAAAAAABCACgAAAAIAAkAAABCACkAAAAIAAkAAABCACoAAAAHAAkAAABCACsAAAAFAAkAAABCACwAAAAIAAkAAABCAC0AAAAHAAkAAABCAC4AAAAFAAoAAABCAC8AAAAHAAoAAABCADAAAAAAAAAAAABCADEAAAAIAAoAAABCADIAAAAFAAkAAABCADMAAAAIAAkAAABDAPD/AAARAAcAAABDAPH/AAABAAQAAABDAPL/AAABAAYAAABDAPP/AAAAAAUAAABDAPT/AAAFAAkAAABDAPX/AAAIAAkAAABDAPb/AAAFAAkAAABDAPf/AAAIAAkAAABDAPj/AAAFAAkAAABDAPn/AAAAAAAAAABDAPr/AAAHAAkAAABDAPv/AAAHAAkAAABDAPz/AAAHAAkAAABDAP3/AAAFAAkAAABDAP7/AAAHAAkAAABDAP//AAAIAAkAAABDAAAAAAAIAAoAAABDAAEAAAAAAAAAAABDAAIAAAAIAAoAAABDAAMAAAAIAAkAAABDAAQAAAAHAAoAAABDAAUAAAAIAAkAAABDAAYAAAAHAAkAAABDAAcAAAAFAAkAAABDAAgAAAAHAAkAAABDAAkAAAAIAAoAAABDAAoAAAAHAAoAAABDAAsAAAAFAAkAAABDAAwAAAAFAAoAAABDAA0AAAAAAAAAAABDAA4AAAAFAAkAAABDAA8AAAAIAAoAAABDABAAAAAHAAoAAABDABEAAAAAAAMAAABDABIAAAABAAcAAABDABMAAAABAAQAAABDABQAAAABAAQAAABDABUAAAAAAAYAAABDABYAAAACAAUAAABDABcAAAAIAAkAAABDABgAAAAHAAoAAABDABkAAAAAAAAAAABDABoAAAAIAAkAAABDABsAAAAAAAAAAABDABwAAAAIAAoAAABDAB0AAAAHAAkAAABDAB4AAAAFAAoAAABDAB8AAAAAAAAAAABDACAAAAABAAMAAABDACEAAAABAAQAAABDACIAAAABAAQAAABDACMAAAABAAUAAABDACQAAAAFAAkAAABDACUAAAAHAAkAAABDACYAAAAFAAoAAABDACcAAAAFAAoAAABDACgAAAAIAAkAAABDACkAAAAHAAoAAABDACoAAAAIAAoAAABDACsAAAAHAAoAAABDACwAAAAIAAoAAABDAC0AAAAAAAAAAABDAC4AAAAFAAoAAABDAC8AAAAIAAkAAABDADAAAAAAAAAAAABDADEAAAAHAAkAAABDADIAAAAIAAkAAABDADMAAAAFAAoAAABEAPD/AAABAAQAAABEAPH/AAABAAQAAABEAPL/AAABAAQAAABEAPP/AAABAAYAAABEAPT/AAAAAAQAAABEAPX/AAAAAAUAAABEAPb/AAAFAAoAAABEAPf/AAAHAAkAAABEAPj/AAAIAAoAAABEAPn/AAAIAAoAAABEAPr/AAAAAAAAAABEAPv/AAAIAAkAAABEAPz/AAAFAAoAAABEAP3/AAAAAAAAAABEAP7/AAAIAAkAAABEAP//AAAFAAoAAABEAAAAAAAIAAoAAABEAAEAAAAIAAoAAABEAAIAAAAFAAkAAABEAAMAAAAIAAkAAABEAAQAAAAAAAAAAABEAAUAAAAHAAkAAABEAAYAAAAIAAkAAABEAAcAAAAHAAoAAABEAAgAAAAFAAoAAABEAAkAAAAIAAkAAABEAAoAAAAFAAoAAABEAAsAAAAAAAAAAABEAAwAAAAAAAAAAABEAA0AAAAFAAkAAABEAA4AAAAHAAoAAABEAA8AAAAAAAMAAABEABAAAAAAAAQAAABEABEAAAABAAcAAABEABIAAAABAAQAAABEABMAAAABAAQAAABEABQAAAAAAAYAAABEABUAAAACAAUAAABEABYAAAAFAAkAAABEABcAAAAAAAAAAABEABgAAAAAAAAAAABEABkAAAAFAAoAAABEABoAAAAHAAkAAABEABsAAAAFAAkAAABEABwAAAAHAAkAAABEAB0AAAAIAAoAAABEAB4AAAAHAAoAAABEAB8AAAAHAAkAAABEACAAAAABAAMAAABEACEAAAABAAQAAABEACIAAAABAAQAAABEACMAAAABAAUAAABEACQAAAAIAAkAAABEACUAAAAFAAoAAABEACYAAAAIAAkAAABEACcAAAAAAAAAAABEACgAAAAFAAoAAABEACkAAAAFAAkAAABEACoAAAAAAAAAAABEACsAAAAHAAoAAABEACwAAAAIAAkAAABEAC0AAAAIAAoAAABEAC4AAAAAAAAAAABEAC8AAAAIAAkAAABEADAAAAAIAAkAAABEADEAAAAFAAkAAABEADIAAAAFAAkAAABEADMAAAAHAAoAAABFAPD/AAABAAQAAABFAPH/AAABAAQAAABFAPL/AAABAAQAAABFAPP/AAABAAQAAABFAPT/AAABAAQAAABFAPX/AAABAAYAAABFAPb/AAAAAAUAAABFAPf/AAAIAAoAAABFAPj/AAAAAAAAAABFAPn/AAAHAAoAAABFAPr/AAAAAAAAAABFAPv/AAAHAAkAAABFAPz/AAAIAAkAAABFAP3/AAAIAAoAAABFAP7/AAAFAAkAAABFAP//AAAAAAAAAABFAAAAAAAHAAkAAABFAAEAAAAFAAkAAABFAAIAAAAIAAoAAABFAAMAAAAAAAAAAABFAAQAAAAFAAkAAABFAAUAAAAFAAoAAABFAAYAAAAFAAoAAABFAAcAAAAFAAoAAABFAAgAAAAIAAkAAABFAAkAAAAAAAAAAABFAAoAAAAHAAkAAABFAAsAAAAIAAoAAABFAAwAAAAIAAkAAABFAA0AAAAHAAoAAABFAA4AAAAAAAMAAABFAA8AAAABAAcAAABFABAAAAABAAQAAABFABEAAAABAAQAAABFABIAAAABAAQAAABFABMAAAABAAQAAABFABQAAAABAAUAAABFABUAAAAFAAkAAABFABYAAAAFAAoAAABFABcAAAAIAAkAAABFABgAAAAAAAAAAABFABkAAAAHAAkAAABFABoAAAAIAAkAAABFABsAAAAAAAAAAABFABwAAAAFAAkAAABFAB0AAAAAAAAAAABFAB4AAAAAAAAAAABFAB8AAAAAAAAAAABFACAAAAABAAMAAABFACEAAAABAAQAAABFACIAAAABAAQAAABFACMAAAABAAUAAABFACQAAAAIAAkAAABFACUAAAAHAAoAAABFACYAAAAHAAoAAABFACcAAAAIAAkAAABFACgAAAAHAAoAAABFACkAAAAHAAoAAABFACoAAAAAAAAAAABFACsAAAAFAAkAAABFACwAAAAFAAkAAABFAC0AAAAAAAAAAABFAC4AAAAFAAoAAABFAC8AAAAHAAoAAABFADAAAAAFAAoAAABFADEAAAAFAAkAAABFADIAAAAAAAAAAABFADMAAAAHAAkAAABGAPD/AAAAAAsAAABGAPH/AAACAAQAAABGAPL/AAAAAAcAAABGAPP/AAABAAQAAABGAPT/AAABAAQAAABGAPX/AAABAAQAAABGAPb/AAABAAYAAABGAPf/AAAAAAUAAABGAPj/AAAHAAoAAABGAPn/AAAFAAoAAABGAPr/AAAIAAoAAABGAPv/AAAHAAkAAABGAPz/AAAHAAoAAABGAP3/AAAFAAkAAABGAP7/AAAIAAoAAABGAP//AAAAAAAAAABGAAAAAAAHAAoAAABGAAEAAAAFAAkAAABGAAIAAAAAAAAAAABGAAMAAAAFAAoAAABGAAQAAAAIAAoAAABGAAUAAAAFAAoAAABGAAYAAAAAAAAAAABGAAcAAAAAAAAAAABGAAgAAAAIAAoAAABGAAkAAAAIAAkAAABGAAoAAAAIAAkAAABGAAsAAAAAAAAAAABGAAwAAAAAAAAAAABGAA0AAAAAAAMAAABGAA4AAAABAAcAAABGAA8AAAABAAQAAABGABAAAAABAAQAAABGABEAAAABAAQAAABGABIAAAABAAQAAABGABMAAAAAAAYAAABGABQAAAACAAUAAABGABUAAAAHAAkAAABGABYAAAAHAAoAAABGABcAAAAFAAoAAABGABgAAAAAAAAAAABGABkAAAAAAAAAAABGABoAAAAIAAkAAABGABsAAAAIAAkAAABGABwAAAAHAAoAAABGAB0AAAAHAAkAAABGAB4AAAAAAAAAAABGAB8AAAAFAAkAAABGACAAAAABAAMAAABGACEAAAABAAQAAABGACIAAAABAAQAAABGACMAAAABAAUAAABGACQAAAAIAAkAAABGACUAAAAAAAAAAABGACYAAAAAAAAAAABGACcAAAAFAAkAAABGACgAAAAFAAoAAABGACkAAAAIAAkAAABGACoAAAAFAAoAAABGACsAAAAIAAoAAABGACwAAAAFAAoAAABGAC0AAAAIAAoAAABGAC4AAAAFAAkAAABGAC8AAAAFAAkAAABGADAAAAAAAAAAAABGADEAAAAIAAoAAABGADIAAAAIAAkAAABGADMAAAAIAAkAAABHAPD/AAABAAsAAABHAPH/AAAAAAAAAABHAPL/AAACAAMAAABHAPP/AAACAAQAAABHAPT/AAAAAAcAAABHAPX/AAABAAQAAABHAPb/AAABAAQAAABHAPf/AAABAAYAAABHAPj/AAAAAAUAAABHAPn/AAAIAAoAAABHAPr/AAAFAAkAAABHAPv/AAAHAAoAAABHAPz/AAAIAAkAAABHAP3/AAAFAAkAAABHAP7/AAAIAAkAAABHAP//AAAFAAkAAABHAAAAAAAAAAAAAABHAAEAAAAIAAkAAABHAAIAAAAHAAoAAABHAAMAAAAFAAkAAABHAAQAAAAIAAkAAABHAAUAAAAAAAAAAABHAAYAAAAIAAkAAABHAAcAAAAHAAoAAABHAAgAAAAFAAkAAABHAAkAAAAFAAkAAABHAAoAAAAIAAoAAABHAAsAAAAIAAkAAABHAAwAAAAAAAMAAABHAA0AAAABAAcAAABHAA4AAAABAAQAAABHAA8AAAABAAQAAABHABAAAAABAAQAAABHABEAAAAAAAYAAABHABIAAAACAAQAAABHABMAAAACAAUAAABHABQAAAAIAAoAAABHABUAAAAHAAkAAABHABYAAAAFAAkAAABHABcAAAAIAAoAAABHABgAAAAIAAoAAABHABkAAAAHAAkAAABHABoAAAAHAAoAAABHABsAAAAFAAoAAABHABwAAAAHAAoAAABHAB0AAAAHAAoAAABHAB4AAAAHAAoAAABHAB8AAAAHAAkAAABHACAAAAABAAMAAABHACEAAAABAAQAAABHACIAAAABAAQAAABHACMAAAABAAUAAABHACQAAAAIAAkAAABHACUAAAAFAAkAAABHACYAAAAFAAoAAABHACcAAAAHAAoAAABHACgAAAAFAAoAAABHACkAAAAAAAAAAABHACoAAAAAAAAAAABHACsAAAAHAAoAAABHACwAAAAIAAkAAABHAC0AAAAFAAoAAABHAC4AAAAFAAkAAABHAC8AAAAHAAkAAABHADAAAAAIAAkAAABHADEAAAAHAAkAAABHADIAAAAFAAoAAABHADMAAAAHAAkAAABIAPD/AAABAAsAAABIAPH/AAAIAAkAAABIAPL/AAAIAAoAAABIAPP/AAAAAAAAAABIAPT/AAACAAMAAABIAPX/AAAAAAcAAABIAPb/AAABAAQAAABIAPf/AAABAAQAAABIAPj/AAABAAYAAABIAPn/AAAAAAQAAABIAPr/AAAAAAUAAABIAPv/AAAHAAkAAABIAPz/AAAHAAkAAABIAP3/AAAHAAoAAABIAP7/AAAFAAkAAABIAP//AAAFAAoAAABIAAAAAAAHAAkAAABIAAEAAAAHAAkAAABIAAIAAAAIAAkAAABIAAMAAAAIAAoAAABIAAQAAAAHAAkAAABIAAUAAAAFAAoAAABIAAYAAAAIAAkAAABIAAcAAAAIAAoAAABIAAgAAAAAAAAAAABIAAkAAAAHAAkAAABIAAoAAAAAAAMAAABIAAsAAAAAAAQAAABIAAwAAAABAAcAAABIAA0AAAABAAQAAABIAA4AAAABAAQAAABIAA8AAAABAAQAAABIABAAAAAAAAYAAABIABEAAAACAAUAAABIABIAAAAHAAoAAABIABMAAAAIAAkAAABIABQAAAAFAAkAAABIABUAAAAIAAkAAABIABYAAAAHAAkAAABIABcAAAAFAAkAAABIABgAAAAIAAkAAABIABkAAAAFAAkAAABIABoAAAAIAAoAAABIABsAAAAFAAoAAABIABwAAAAFAAoAAABIAB0AAAAAAAAAAABIAB4AAAAIAAoAAABIAB8AAAAIAAoAAABIACAAAAABAAMAAABIACEAAAABAAQAAABIACIAAAABAAQAAABIACMAAAABAAUAAABIACQAAAAHAAkAAABIACUAAAAHAAoAAABIACYAAAAIAAkAAABIACcAAAAHAAoAAABIACgAAAAHAAkAAABIACkAAAAHAAkAAABIACoAAAAFAAkAAABIACsAAAAIAAkAAABIACwAAAAIAAkAAABIAC0AAAAHAAkAAABIAC4AAAAIAAoAAABIAC8AAAAFAAkAAABIADAAAAAFAAoAAABIADEAAAAHAAkAAABIADIAAAAAAAAAAABIADMAAAAHAAoAAABJAPD/AAABAAsAAABJAPH/AAAFAAoAAABJAPL/AAAIAAkAAABJAPP/AAAFAAoAAABJAPT/AAAIAAkAAABJAPX/AAABAAMAAABJAPb/AAABAAQAAABJAPf/AAABAAQAAABJAPj/AAABAAQAAABJAPn/AAABAAQAAABJAPr/AAABAAUAAABJAPv/AAAAAAAAAABJAPz/AAAIAAkAAABJAP3/AAAIAAkAAABJAP7/AAAFAAoAAABJAP//AAAHAAoAAABJAAAAAAAHAAkAAABJAAEAAAAFAAkAAABJAAIAAAAHAAkAAABJAAMAAAAAAAAAAABJAAQAAAAAAAAAAABJAAUAAAAHAAkAAABJAAYAAAAIAAoAAABJAAcAAAAFAAkAAABJAAgAAAAIAAkAAABJAAkAAAAAAAMAAABJAAoAAAABAAcAAABJAAsAAAABAAQAAABJAAwAAAABAAQAAABJAA0AAAABAAQAAABJAA4AAAABAAQAAABJAA8AAAAAAAYAAABJABAAAAACAAUAAABJABEAAAAFAAkAAABJABIAAAAIAAkAAABJABMAAAAIAAkAAABJABQAAAAHAAkAAABJABUAAAAFAAoAAABJABYAAAAFAAkAAABJABcAAAAAAAAAAABJABgAAAAAAAAAAABJABkAAAAHAAkAAABJABoAAAAAAAAAAABJABsAAAAHAAkAAABJABwAAAAFAAoAAABJAB0AAAAHAAoAAABJAB4AAAAHAAkAAABJAB8AAAAHAAoAAABJACAAAAABAAMAAABJACEAAAABAAQAAABJACIAAAABAAQAAABJACMAAAABAAUAAABJACQAAAAIAAkAAABJACUAAAAAAAAAAABJACYAAAAIAAkAAABJACcAAAAIAAkAAABJACgAAAAFAAkAAABJACkAAAAHAAkAAABJACoAAAAIAAkAAABJACsAAAAFAAoAAABJACwAAAAFAAoAAABJAC0AAAAAAAAAAABJAC4AAAAIAAoAAABJAC8AAAAFAAkAAABJADAAAAAHAAkAAABJADEAAAAFAAoAAABJADIAAAAHAAoAAABJADMAAAAIAAoAAABKAPD/AAABAAsAAABKAPH/AAAFAAoAAABKAPL/AAAIAAkAAABKAPP/AAAIAAkAAABKAPT/AAAIAAkAAABKAPX/AAACAAMAAABKAPb/AAAAAAcAAABKAPf/AAABAAQAAABKAPj/AAABAAQAAABKAPn/AAABAAQAAABKAPr/AAABAAYAAABKAPv/AAAAAAUAAABKAPz/AAAHAAkAAABKAP3/AAAIAAoAAABKAP7/AAAFAAoAAABKAP//AAAFAAoAAABKAAAAAAAFAAkAAABKAAEAAAAAAAAAAABKAAIAAAAHAAkAAABKAAMAAAAIAAkAAABKAAQAAAAFAAkAAABKAAUAAAAHAAoAAABKAAYAAAAAAAAAAABKAAcAAAAIAAoAAABKAAgAAAAAAAMAAABKAAkAAAABAAcAAABKAAoAAAABAAQAAABKAAsAAAABAAQAAABKAAwAAAABAAQAAABKAA0AAAABAAQAAABKAA4AAAAAAAYAAABKAA8AAAACAAUAAABKABAAAAAAAAAAAABKABEAAAAHAAoAAABKABIAAAAAAAAAAABKABMAAAAIAAoAAABKABQAAAAHAAoAAABKABUAAAAHAAkAAABKABYAAAAAAAAAAABKABcAAAAFAAkAAABKABgAAAAFAAkAAABKABkAAAAHAAoAAABKABoAAAAAAAAAAABKABsAAAAFAAkAAABKABwAAAAIAAkAAABKAB0AAAAFAAoAAABKAB4AAAAHAAoAAABKAB8AAAAHAAoAAABKACAAAAABAAMAAABKACEAAAABAAQAAABKACIAAAABAAQAAABKACMAAAABAAUAAABKACQAAAAFAAkAAABKACUAAAAFAAkAAABKACYAAAAAAAAAAABKACcAAAAFAAoAAABKACgAAAAFAAoAAABKACkAAAAHAAoAAABKACoAAAAFAAkAAABKACsAAAAHAAoAAABKACwAAAAIAAoAAABKAC0AAAAFAAoAAABKAC4AAAAFAAkAAABKAC8AAAAFAAkAAABKADAAAAAHAAoAAABKADEAAAAHAAkAAABKADIAAAAFAAoAAABKADMAAAAHAAoAAABLAPD/AAABAAsAAABLAPH/AAAHAAkAAABLAPL/AAAHAAoAAABLAPP/AAAHAAkAAABLAPT/AAAFAAkAAABLAPX/AAAFAAoAAABLAPb/AAACAAMAAABLAPf/AAAAAAcAAABLAPj/AAABAAQAAABLAPn/AAABAAQAAABLAPr/AAABAAQAAABLAPv/AAABAAYAAABLAPz/AAAAAAUAAABLAP3/AAAIAAkAAABLAP7/AAAFAAkAAABLAP//AAAHAAkAAABLAAAAAAAFAAkAAABLAAEAAAAAAAAAAABLAAIAAAAIAAoAAABLAAMAAAAIAAkAAABLAAQAAAAIAAkAAABLAAUAAAAAAAAAAABLAAYAAAAAAAMAAABLAAcAAAAAAAQAAABLAAgAAAABAAcAAABLAAkAAAABAAQAAABLAAoAAAABAAQAAABLAAsAAAABAAQAAABLAAwAAAABAAQAAABLAA0AAAAAAAYAAABLAA4AAAACAAUAAABLAA8AAAAFAAoAAABLABAAAAAHAAkAAABLABEAAAAHAAoAAABLABIAAAAHAAkAAABLABMAAAAHAAkAAABLABQAAAAAAAAAAABLABUAAAAHAAoAAABLABYAAAAHAAkAAABLABcAAAAFAAkAAABLABgAAAAAAAAAAABLABkAAAAHAAoAAABLABoAAAAFAAkAAABLABsAAAAIAAoAAABLABwAAAAFAAkAAABLAB0AAAAAAAAAAABLAB4AAAAFAAoAAABLAB8AAAAIAAoAAABLACAAAAABAAMAAABLACEAAAABAAQAAABLACIAAAABAAQAAABLACMAAAABAAUAAABLACQAAAAFAAoAAABLACUAAAAHAAoAAABLACYAAAAFAAkAAABLACcAAAAHAAoAAABLACgAAAAHAAoAAABLACkAAAAIAAkAAABLACoAAAAFAAkAAABLACsAAAAHAAkAAABLACwAAAAAAAAAAABLAC0AAAAFAAoAAABLAC4AAAAAAAAAAABLAC8AAAAAAAAAAABLADAAAAAHAAkAAABLADEAAAAIAAoAAABLADIAAAAHAAoAAABLADMAAAAFAAoAAABMAPD/AAABAAsAAABMAPH/AAAIAAkAAABMAPL/AAAIAAkAAABMAPP/AAAFAAoAAABMAPT/AAAFAAoAAABMAPX/AAAHAAoAAABMAPb/AAAIAAoAAABMAPf/AAABAAMAAABMAPj/AAABAAQAAABMAPn/AAABAAQAAABMAPr/AAABAAQAAABMAPv/AAABAAQAAABMAPz/AAABAAYAAABMAP3/AAAAAAUAAABMAP7/AAAFAAoAAABMAP//AAAIAAkAAABMAAAAAAAHAAoAAABMAAEAAAAIAAkAAABMAAIAAAAFAAkAAABMAAMAAAAHAAkAAABMAAQAAAAAAAMAAABMAAUAAAAAAAQAAABMAAYAAAABAAcAAABMAAcAAAABAAQAAABMAAgAAAABAAQAAABMAAkAAAABAAQAAABMAAoAAAABAAQAAABMAAsAAAABAAQAAABMAAwAAAAAAAYAAABMAA0AAAACAAUAAABMAA4AAAAHAAoAAABMAA8AAAAHAAoAAABMABAAAAAIAAoAAABMABEAAAAHAAoAAABMABIAAAAIAAoAAABMABMAAAAIAAoAAABMABQAAAAFAAoAAABMABUAAAAFAAoAAABMABYAAAAFAAoAAABMABcAAAAHAAoAAABMABgAAAAFAAkAAABMABkAAAAHAAoAAABMABoAAAAIAAkAAABMABsAAAAIAAkAAABMABwAAAAIAAkAAABMAB0AAAAHAAoAAABMAB4AAAAIAAkAAABMAB8AAAAAAAAAAABMACAAAAABAAMAAABMACEAAAABAAQAAABMACIAAAABAAQAAABMACMAAAABAAUAAABMACQAAAAFAAoAAABMACUAAAAFAAkAAABMACYAAAAIAAkAAABMACcAAAAFAAoAAABMACgAAAAIAAoAAABMACkAAAAIAAoAAABMACoAAAAHAAoAAABMACsAAAAFAAkAAABMACwAAAAFAAoAAABMAC0AAAAHAAoAAABMAC4AAAAFAAoAAABMAC8AAAAIAAkAAABMADAAAAAFAAoAAABMADEAAAAHAAoAAABMADIAAAAIAAoAAABMADMAAAAHAAoAAABNAPD/AAABAAsAAABNAPH/AAAIAAoAAABNAPL/AAAFAAkAAABNAPP/AAAAAAAAAABNAPT/AAAFAAoAAABNAPX/AAAFAAkAAABNAPb/AAAHAAoAAABNAPf/AAACAAMAAABNAPj/AAAAAAcAAABNAPn/AAABAAQAAABNAPr/AAABAAQAAABNAPv/AAABAAQAAABNAPz/AAABAAQAAABNAP3/AAABAAUAAABNAP7/AAAFAAkAAABNAP//AAAHAAoAAABNAAAAAAAFAAkAAABNAAEAAAAFAAoAAABNAAIAAAAHAAkAAABNAAMAAAAAAAMAAABNAAQAAAABAAcAAABNAAUAAAABAAQAAABNAAYAAAABAAQAAABNAAcAAAABAAQAAABNAAgAAAABAAQAAABNAAkAAAABAAQAAABNAAoAAAAAAAYAAABNAAsAAAACAAQAAABNAAwAAAACAAUAAABNAA0AAAAAAAAAAABNAA4AAAAHAAkAAABNAA8AAAAIAAkAAABNABAAAAAHAAoAAABNABEAAAAFAAoAAABNABIAAAAFAAoAAABNABMAAAAFAAoAAABNABQAAAAHAAkAAABNABUAAAAFAAkAAABNABYAAAAFAAkAAABNABcAAAAFAAoAAABNABgAAAAHAAoAAABNABkAAAAHAAkAAABNABoAAAAIAAkAAABNABsAAAAIAAoAAABNABwAAAAFAAkAAABNAB0AAAAAAAAAAABNAB4AAAAFAAkAAABNAB8AAAAHAAoAAABNACAAAAABAAMAAABNACEAAAABAAQAAABNACIAAAABAAQAAABNACMAAAABAAUAAABNACQAAAAFAAoAAABNACUAAAAHAAkAAABNACYAAAAFAAoAAABNACcAAAAHAAkAAABNACgAAAAHAAkAAABNACkAAAAFAAoAAABNACoAAAAHAAkAAABNACsAAAAHAAkAAABNACwAAAAHAAoAAABNAC0AAAAFAAoAAABNAC4AAAAHAAoAAABNAC8AAAAIAAkAAABNADAAAAAFAAkAAABNADEAAAAFAAoAAABNADIAAAAHAAkAAABNADMAAAAFAAoAAABOAPD/AAABAAsAAABOAPH/AAAIAAoAAABOAPL/AAAIAAkAAABOAPP/AAAFAAkAAABOAPT/AAAFAAoAAABOAPX/AAAIAAoAAABOAPb/AAAFAAkAAABOAPf/AAAFAAoAAABOAPj/AAACAAMAAABOAPn/AAAAAAcAAABOAPr/AAABAAQAAABOAPv/AAABAAQAAABOAPz/AAABAAQAAABOAP3/AAABAAYAAABOAP7/AAAAAAQAAABOAP//AAAAAAQAAABOAAAAAAAAAAQAAABOAAEAAAAAAAQAAABOAAIAAAAAAAQAAABOAAMAAAABAAcAAABOAAQAAAABAAQAAABOAAUAAAABAAQAAABOAAYAAAABAAQAAABOAAcAAAABAAQAAABOAAgAAAAAAAYAAABOAAkAAAACAAQAAABOAAoAAAACAAUAAABOAAsAAAAIAAoAAABOAAwAAAAFAAkAAABOAA0AAAAAAAAAAABOAA4AAAAIAAoAAABOAA8AAAAFAAoAAABOABAAAAAHAAkAAABOABEAAAAHAAoAAABOABIAAAAHAAoAAABOABMAAAAFAAoAAABOABQAAAAIAAoAAABOABUAAAAFAAoAAABOABYAAAAAAAAAAABOABcAAAAAAAAAAABOABgAAAAHAAkAAABOABkAAAAIAAoAAABOABoAAAAFAAoAAABOABsAAAAIAAkAAABOABwAAAAAAAAAAABOAB0AAAAAAAAAAABOAB4AAAAHAAkAAABOAB8AAAAIAAoAAABOACAAAAABAAMAAABOACEAAAABAAQAAABOACMAAAABAAUAAABOACQAAAAIAAkAAABOACUAAAAFAAoAAABOACYAAAAFAAoAAABOACcAAAAHAAoAAABOACgAAAAIAAoAAABOACkAAAAIAAkAAABOACoAAAAIAAkAAABOACsAAAAIAAoAAABOACwAAAAAAAAAAABOAC0AAAAIAAoAAABOAC4AAAAAAAAAAABOAC8AAAAIAAkAAABOADAAAAAFAAoAAABOADEAAAAHAAoAAABOADIAAAAFAAoAAABOADMAAAAAAAAAAABPAPD/AAABAAsAAABPAPH/AAAHAAoAAABPAPL/AAAAAAAAAABPAPP/AAAFAAoAAABPAPT/AAAHAAkAAABPAPX/AAAHAAoAAABPAPb/AAAFAAkAAABPAPf/AAAIAAkAAABPAPj/AAAIAAkAAABPAPn/AAACAAMAAABPAPr/AAACAAQAAABPAPv/AAAAAAcAAABPAPz/AAABAAQAAABPAP3/AAABAAQAAABPAP7/AAABAAQAAABPAP//AAABAAQAAABPAAAAAAABAAQAAABPAAEAAAABAAQAAABPAAIAAAABAAQAAABPAAMAAAABAAQAAABPAAQAAAABAAQAAABPAAUAAAABAAQAAABPAAYAAAAAAAYAAABPAAcAAAACAAQAAABPAAgAAAACAAUAAABPAAkAAAAIAAoAAABPAAoAAAAHAAoAAABPAAsAAAAFAAkAAABPAAwAAAAIAAoAAABPAA0AAAAFAAoAAABPAA4AAAAIAAoAAABPAA8AAAAHAAkAAABPABAAAAAIAAkAAABPABEAAAAAAAAAAABPABIAAAAHAAkAAABPABMAAAAFAAkAAABPABQAAAAFAAkAAABPABUAAAAFAAkAAABPABYAAAAIAAoAAABPABcAAAAFAAkAAABPABgAAAAHAAoAAABPABkAAAAFAAoAAABPABoAAAAHAAoAAABPABsAAAAFAAoAAABPABwAAAAHAAoAAABPAB0AAAAHAAoAAABPAB4AAAAIAAoAAABPAB8AAAAFAAoAAABPACAAAAABAAMAAABPACEAAAABAAQAAABPACQAAAAAAAoAAABPACUAAAAFAAkAAABPACYAAAAHAAkAAABPACcAAAAFAAkAAABPACgAAAAAAAAAAABPACkAAAAHAAkAAABPACoAAAAFAAoAAABPACsAAAAFAAoAAABPACwAAAAHAAkAAABPAC0AAAAIAAoAAABPAC4AAAAHAAoAAABPAC8AAAAFAAoAAABPADAAAAAFAAkAAABPADEAAAAAAAAAAABPADIAAAAHAAkAAABPADMAAAAAAAkAAABQAPD/AAABAAsAAABQAPH/AAAAAAkAAABQAPL/AAAAAAoAAABQAPP/AAAIAAkAAABQAPT/AAAIAAkAAABQAPX/AAAFAAoAAABQAPb/AAAFAAkAAABQAPf/AAAIAAoAAABQAPj/AAAIAAkAAABQAPn/AAAFAAkAAABQAPr/AAAAAAAAAABQAPv/AAABAAMAAABQAPz/AAABAAQAAABQAP3/AAAPAAYAAABQAP7/AAAPAAgAAABQAP//AAAPAAcAAABQAAAAAAAPAAYAAABQAAEAAAAPAAcAAABQAAIAAAAPAAcAAABQAAMAAAAAAAYAAABQAAQAAAACAAQAAABQAAUAAAACAAQAAABQAAYAAAACAAUAAABQAAcAAAAIAAoAAABQAAgAAAAHAAkAAABQAAkAAAAFAAoAAABQAAoAAAAFAAoAAABQAAsAAAAIAAoAAABQAAwAAAAHAAoAAABQAA0AAAAIAAkAAABQAA4AAAAFAAoAAABQAA8AAAAIAAoAAABQABAAAAAIAAkAAABQABEAAAAHAAkAAABQABIAAAAHAAkAAABQABMAAAAHAAoAAABQABQAAAAIAAkAAABQABUAAAAAAAkAAABQABYAAAAAAAkAAABQABcAAAAAAAkAAABQABgAAAAAAAkAAABQABkAAAAAAAkAAABQABoAAAAAAAkAAABQABsAAAAAAAkAAABQABwAAAAAAAkAAABQAB0AAAAAAAkAAABQAB4AAAAAAAkAAABQAB8AAAAAAAkAAABQACAAAAABAAMAAABQACEAAAABAAQAAABQACQAAAACAAsAAABQACUAAAAAAAkAAABQACYAAAAAAAoAAABQACcAAAAAAAkAAABQACgAAAAAAAoAAABQACkAAAAAAAkAAABQACoAAAAAAAoAAABQACsAAAAAAAkAAABQACwAAAAAAAoAAABQAC0AAAAAAAkAAABQAC4AAAAAAAoAAABQAC8AAAAAAAoAAABQADAAAAAAAAoAAABQADEAAAAAAAoAAABQADIAAAAAAAoAAABQADMAAAAAAAkAAAAMAAYAAAAHAAoAAAAOAAYAAAAFAAoAAAAYAPj/AAADAAcAAAApAPj/AAADAAcAAAApAPn/AAADAAcAAAAqAPj/AAADAAcAAAAqAPn/AAADAAcAAAAPAAAAAAABAAMAAAAPAAEAAAABAAQAAAAPAAIAAAABAAUAAAAQAAAAAAABAAMAAAAQAAEAAAABAAQAAAAQAAIAAAABAAUAAAARAAAAAAABAAMAAAARAAEAAAABAAQAAAARAAIAAAABAAUAAAAlAAoAAAADAAcAAAAkAAoAAAADAAcAAAAkAAsAAAADAAcAAAAlAAwAAAADAAcAAAAlAAsAAAAAAAEAAAAmAAsAAAAAAAEAAAAmAAwAAAAAAAEAAAAnAAsAAAAAAAEAAAAoAAsAAAADAAcAAAAnAAoAAAAAAAEAAAAmAAoAAAAAAAEAAAAWAAwAAAADAAkAAAAEAP7/AAAAAAAAAAAIAPv/AAAIAAkAAAAKAP3/AAAIAAkAAAAHAP7/AAAAAAAAAAAHAP3/AAAGAAAAAAAIAPz/AAAOAAAAAAAGAPz/AAAAAAAAAAAKAP7/AAAIAAkAAAAHAP//AAABAAQAAAAGAAMAAAALAAAAAABOACIAAAABAAQAAABPACIAAAABAAQAAABQACIAAAAPAAcAAABPACMAAAABAAUAAABQACMAAAACAAsAAAD+/wcAAAAIAAkAAAD8////AAARACEAAAAIABQAAAAIAAkAAAA=")
-tile_set = SubResource("TileSet_snsnx")
-
-[node name="DoorSceneManager" parent="." node_paths=PackedStringArray("player") instance=ExtResource("1_qqjfh")]
-position = Vector2(120, -15)
-player = NodePath("../Player")
-_to_scene = 1
-push_direction = 1
-
-[node name="DoorSceneManager2" parent="." node_paths=PackedStringArray("player") instance=ExtResource("1_qqjfh")]
-position = Vector2(232, 305)
-player = NodePath("../Player")
-_to_scene = 1
-push_direction = 1
-
-[node name="Player" parent="." instance=ExtResource("1_6iuf6")]
-z_index = 1
-motion_mode = 1
-
-[node name="Camera2D" type="Camera2D" parent="Player"]
-z_index = 4096
-zoom = Vector2(2, 2)
-
-[node name="PauseMenu" parent="Player/Camera2D" instance=ExtResource("2_4k3ic")]
-offset_left = -288.0
-offset_top = -162.0
-offset_right = 288.0
-offset_bottom = 162.0
-
-[node name="InventoryMenu" parent="Player/Camera2D" instance=ExtResource("6_a0ayx")]
-process_mode = 3
--- /dev/null
+[gd_scene load_steps=8 format=3 uid="uid://cjvtoi20cy8wi"]
+
+[ext_resource type="Script" uid="uid://dleuvr2p33hex" path="res://scripts/inventory.gd" id="1_8uk8r"]
+[ext_resource type="Script" uid="uid://bxtv6f17pkdmm" path="res://addons/gloot/core/inventory.gd" id="3_jjk0v"]
+[ext_resource type="Script" uid="uid://rk48gcn3clet" path="res://addons/gloot/core/constraints/grid_constraint.gd" id="4_0ccc4"]
+[ext_resource type="JSON" path="res://objects/item_protoset.json" id="4_bqieh"]
+[ext_resource type="Texture2D" uid="uid://caxlr5o014d0h" path="res://assets/ui/button_square_depth_line.png" id="4_pbytw"]
+[ext_resource type="Script" uid="uid://bd75talwyq73v" path="res://addons/gloot/ui/ctrl_inventory_grid.gd" id="6_cca0k"]
+[ext_resource type="Theme" uid="uid://c6osikflt1uy1" path="res://assets/resources/ui_theme.tres" id="6_em7re"]
+
+[node name="InventoryMenu" type="Control"]
+process_mode = 2
+layout_mode = 3
+anchors_preset = 15
+anchor_right = 1.0
+anchor_bottom = 1.0
+grow_horizontal = 2
+grow_vertical = 2
+script = ExtResource("1_8uk8r")
+
+[node name="Inventory" type="Node" parent="."]
+script = ExtResource("3_jjk0v")
+protoset = ExtResource("4_bqieh")
+_serialized_format = {
+"constraints": {
+"res://addons/gloot/core/constraints/grid_constraint.gd": {
+"data": {
+"insertion_priority": 0,
+"item_positions": {
+"1": "Vector2i(1, 0)",
+"2": "Vector2i(2, 0)"
+},
+"size": "Vector2i(10, 5)"
+},
+"name": &"GridConstraint"
+}
+},
+"items": [{
+"protoset": "res://objects/item_protoset.json",
+"prototype_id": "grid_item"
+}, {
+"protoset": "res://objects/item_protoset.json",
+"prototype_id": "deck_of_cards"
+}, {
+"protoset": "res://objects/item_protoset.json",
+"prototype_id": "base_item"
+}],
+"node_name": "Inventory",
+"protoset": "res://objects/item_protoset.json"
+}
+metadata/_custom_type_script = "uid://bxtv6f17pkdmm"
+
+[node name="GridConstraint" type="Node" parent="Inventory"]
+script = ExtResource("4_0ccc4")
+size = Vector2i(10, 5)
+insertion_priority = 0
+
+[node name="CenterContainer" type="CenterContainer" parent="."]
+layout_mode = 1
+anchors_preset = 15
+anchor_right = 1.0
+anchor_bottom = 1.0
+grow_horizontal = 2
+grow_vertical = 2
+
+[node name="PanelContainer" type="PanelContainer" parent="CenterContainer"]
+layout_mode = 2
+
+[node name="NinePatchRect" type="NinePatchRect" parent="CenterContainer/PanelContainer"]
+modulate = Color(0.831856, 0.844692, 0.906161, 1)
+custom_minimum_size = Vector2(100, 100)
+layout_mode = 2
+texture = ExtResource("4_pbytw")
+patch_margin_left = 15
+patch_margin_top = 15
+patch_margin_right = 15
+patch_margin_bottom = 25
+
+[node name="MarginContainer" type="MarginContainer" parent="CenterContainer/PanelContainer"]
+layout_mode = 2
+theme_override_constants/margin_left = 50
+theme_override_constants/margin_top = 20
+theme_override_constants/margin_right = 50
+theme_override_constants/margin_bottom = 35
+
+[node name="VBoxContainer" type="VBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer"]
+layout_mode = 2
+
+[node name="Row1Container" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer"]
+clip_contents = true
+layout_mode = 2
+alignment = 1
+
+[node name="CtrlInventoryGrid" type="Control" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Row1Container" node_paths=PackedStringArray("inventory")]
+layout_mode = 2
+script = ExtResource("6_cca0k")
+inventory = NodePath("../../../../../../Inventory")
+metadata/_custom_type_script = "uid://bd75talwyq73v"
+
+[node name="MarginContainer" type="MarginContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer"]
+layout_mode = 2
+theme_override_constants/margin_top = 20
+
+[node name="HBoxContainer" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/MarginContainer"]
+layout_mode = 2
+alignment = 2
+
+[node name="ReturnButton" type="Button" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/MarginContainer/HBoxContainer"]
+modulate = Color(0.901197, 0.823165, 0.861526, 1)
+custom_minimum_size = Vector2(150, 0)
+layout_mode = 2
+theme = ExtResource("6_em7re")
+text = "Return"
+
+[connection signal="visibility_changed" from="." to="." method="_on_visibility_changed"]
+[connection signal="pressed" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/MarginContainer/HBoxContainer/ReturnButton" to="." method="_on_return_button_pressed"]
--- /dev/null
+[gd_scene load_steps=4 format=3 uid="uid://d11oo2pxcah1g"]
+
+[ext_resource type="Script" uid="uid://dhm3u3n5lqe1f" path="res://scripts/pause_menu.gd" id="1_aq3as"]
+[ext_resource type="Script" uid="uid://bxml0kyjdhbw5" path="res://addons/label_font_auto_sizer/label_auto_sizer.gd" id="2_j81qh"]
+
+[sub_resource type="LabelSettings" id="LabelSettings_ux7g8"]
+font_size = 50
+
+[node name="PauseMenu" type="Control"]
+process_mode = 3
+z_index = 4096
+layout_mode = 3
+anchors_preset = 15
+anchor_right = 1.0
+anchor_bottom = 1.0
+grow_horizontal = 2
+grow_vertical = 2
+script = ExtResource("1_aq3as")
+
+[node name="CenterContainer" type="CenterContainer" parent="."]
+layout_mode = 1
+anchors_preset = 15
+anchor_right = 1.0
+anchor_bottom = 1.0
+grow_horizontal = 2
+grow_vertical = 2
+
+[node name="VBoxContainer" type="VBoxContainer" parent="CenterContainer"]
+layout_mode = 2
+
+[node name="PauseLabel" type="Label" parent="CenterContainer/VBoxContainer"]
+custom_minimum_size = Vector2(250, 100)
+layout_mode = 2
+theme_override_font_sizes/font_size = 16
+text = "Pause"
+label_settings = SubResource("LabelSettings_ux7g8")
+horizontal_alignment = 1
+vertical_alignment = 1
+autowrap_mode = 3
+clip_text = true
+script = ExtResource("2_j81qh")
+_size_just_modified_by_autosizer = false
+_set_defaults = true
+_base_font_size = 50
+_current_font_size = 50
+_last_size_state = 1
+
+[node name="HBoxContainer" type="HBoxContainer" parent="CenterContainer/VBoxContainer"]
+layout_mode = 2
+alignment = 1
+
+[node name="MarginContainer" type="MarginContainer" parent="CenterContainer/VBoxContainer/HBoxContainer"]
+layout_mode = 2
+theme_override_constants/margin_left = 32
+theme_override_constants/margin_top = 32
+theme_override_constants/margin_right = 32
+theme_override_constants/margin_bottom = 32
+
+[node name="SaveButton" type="Button" parent="CenterContainer/VBoxContainer/HBoxContainer/MarginContainer"]
+layout_mode = 2
+text = "Save"
+
+[node name="MarginContainer2" type="MarginContainer" parent="CenterContainer/VBoxContainer/HBoxContainer"]
+layout_mode = 2
+theme_override_constants/margin_left = 32
+theme_override_constants/margin_top = 32
+theme_override_constants/margin_right = 32
+theme_override_constants/margin_bottom = 32
+
+[node name="LoadButton" type="Button" parent="CenterContainer/VBoxContainer/HBoxContainer/MarginContainer2"]
+layout_mode = 2
+text = "Load
+"
+
+[connection signal="pressed" from="CenterContainer/VBoxContainer/HBoxContainer/MarginContainer/SaveButton" to="." method="_on_save_button_pressed"]
+[connection signal="pressed" from="CenterContainer/VBoxContainer/HBoxContainer/MarginContainer2/LoadButton" to="." method="_on_load_button_pressed"]
--- /dev/null
+[gd_scene load_steps=6 format=3 uid="uid://bsiy7irf1p5e1"]
+
+[ext_resource type="Script" uid="uid://dm2h8o2ppm2ou" path="res://scripts/save_menu.gd" id="1_47jxk"]
+[ext_resource type="Texture2D" uid="uid://caxlr5o014d0h" path="res://assets/ui/button_square_depth_line.png" id="1_ejhmr"]
+[ext_resource type="Script" uid="uid://bxml0kyjdhbw5" path="res://addons/label_font_auto_sizer/label_auto_sizer.gd" id="2_mvfow"]
+[ext_resource type="Theme" uid="uid://c6osikflt1uy1" path="res://assets/resources/ui_theme.tres" id="3_n5hex"]
+
+[sub_resource type="LabelSettings" id="LabelSettings_q7utc"]
+font_size = 32
+font_color = Color(0.900196, 0.84087, 0.882328, 1)
+outline_size = 5
+outline_color = Color(0, 0, 0, 1)
+
+[node name="SaveMenu" type="Control"]
+process_mode = 2
+layout_mode = 3
+anchors_preset = 15
+anchor_right = 1.0
+anchor_bottom = 1.0
+grow_horizontal = 2
+grow_vertical = 2
+script = ExtResource("1_47jxk")
+
+[node name="CenterContainer" type="CenterContainer" parent="."]
+layout_mode = 1
+anchors_preset = 15
+anchor_right = 1.0
+anchor_bottom = 1.0
+grow_horizontal = 2
+grow_vertical = 2
+
+[node name="PanelContainer" type="PanelContainer" parent="CenterContainer"]
+layout_mode = 2
+
+[node name="NinePatchRect" type="NinePatchRect" parent="CenterContainer/PanelContainer"]
+modulate = Color(0.831856, 0.844692, 0.906161, 1)
+custom_minimum_size = Vector2(100, 100)
+layout_mode = 2
+texture = ExtResource("1_ejhmr")
+patch_margin_left = 15
+patch_margin_top = 15
+patch_margin_right = 15
+patch_margin_bottom = 25
+
+[node name="MarginContainer" type="MarginContainer" parent="CenterContainer/PanelContainer"]
+layout_mode = 2
+theme_override_constants/margin_left = 50
+theme_override_constants/margin_top = 20
+theme_override_constants/margin_right = 50
+theme_override_constants/margin_bottom = 35
+
+[node name="VBoxContainer" type="VBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer"]
+layout_mode = 2
+
+[node name="LabelAutoSizer" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer"]
+custom_minimum_size = Vector2(0, 50)
+layout_mode = 2
+theme_override_font_sizes/font_size = 8
+text = "Save"
+label_settings = SubResource("LabelSettings_q7utc")
+horizontal_alignment = 1
+vertical_alignment = 1
+autowrap_mode = 3
+clip_text = true
+script = ExtResource("2_mvfow")
+_size_just_modified_by_autosizer = false
+_set_defaults = true
+_base_font_size = 32
+_current_font_size = 32
+_last_size_state = 1
+
+[node name="Row1Container" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer"]
+layout_mode = 2
+alignment = 1
+
+[node name="Slot1Button" type="Button" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Row1Container"]
+custom_minimum_size = Vector2(150, 0)
+layout_mode = 2
+theme = ExtResource("3_n5hex")
+text = "Slot 1"
+
+[node name="Slot2Button" type="Button" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Row1Container"]
+custom_minimum_size = Vector2(150, 0)
+layout_mode = 2
+theme = ExtResource("3_n5hex")
+text = "Slot 2"
+
+[node name="Row2Container" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer"]
+layout_mode = 2
+alignment = 1
+
+[node name="Slot3Button" type="Button" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Row2Container"]
+custom_minimum_size = Vector2(150, 0)
+layout_mode = 2
+theme = ExtResource("3_n5hex")
+text = "Slot 3"
+
+[node name="Slot4Button" type="Button" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Row2Container"]
+custom_minimum_size = Vector2(150, 0)
+layout_mode = 2
+theme = ExtResource("3_n5hex")
+text = "Slot 4"
+
+[node name="MarginContainer" type="MarginContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer"]
+layout_mode = 2
+theme_override_constants/margin_top = 20
+
+[node name="HBoxContainer" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/MarginContainer"]
+layout_mode = 2
+alignment = 2
+
+[node name="ReturnButton" type="Button" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/MarginContainer/HBoxContainer"]
+modulate = Color(0.901197, 0.823165, 0.861526, 1)
+custom_minimum_size = Vector2(150, 0)
+layout_mode = 2
+theme = ExtResource("3_n5hex")
+text = "Return"
+
+[connection signal="visibility_changed" from="." to="." method="_on_visibility_changed"]
+[connection signal="pressed" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Row1Container/Slot1Button" to="." method="_on_slot1_button_pressed"]
+[connection signal="pressed" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Row1Container/Slot2Button" to="." method="_on_slot2_button_pressed"]
+[connection signal="pressed" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Row2Container/Slot3Button" to="." method="_on_slot3_button_pressed"]
+[connection signal="pressed" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Row2Container/Slot4Button" to="." method="_on_slot4_button_pressed"]
+[connection signal="pressed" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/MarginContainer/HBoxContainer/ReturnButton" to="." method="_on_return_button_pressed"]
}
const LEVELS_PATHS: Array[String] = [
- "res://scenes/main_level.tscn",
- "res://scenes/house_template.tscn",
+ "res://scenes/level/main_level.tscn",
+ "res://scenes/level/house_template.tscn",
"res://scenes/interfaces/save_menu.tscn",
]
--- /dev/null
+uid://0wnia2p8acl5
changing_scene = true
- Globals.request_update_player_position.emit()
+ Events.request_update_player_position.emit()
SceneManager.change_scene(to_scene, scene_manager_options)
--- /dev/null
+uid://b5wo0m62qrv44
--- /dev/null
+extends Node
+
+signal request_update_player_position
+signal game_paused(paused: bool)
+signal inventory_open(open: bool)
--- /dev/null
+uid://rcf2owkufplh
var last_scene_updated: Constants.LEVELS_NAMES
-@warning_ignore("unused_signal") # this signal is called by other classes, was never intended to be called from itself
-signal request_update_player_position
-
-
func update_player_position(scene: Constants.LEVELS_NAMES, new_position: Vector2):
last_scene_updated = scene
--- /dev/null
+uid://d2ubolfbi143e
func _ready():
- Globals.request_update_player_position.connect(update_player_position)
- Globals.set_current_scene(Constants.LEVELS_NAMES[LEVEL_NAME])
+ Events.request_update_player_position.connect(update_player_position)
+ Globals.set_current_scene(Constants.LEVELS_NAMES.get(LEVEL_NAME))
func update_player_position():
- Globals.update_player_position(Constants.LEVELS_NAMES[LEVEL_NAME], player.position)
+ Globals.update_player_position(Constants.LEVELS_NAMES.get(LEVEL_NAME), player.position)
--- /dev/null
+uid://bv1k68dotk1b0
var inventory_open: bool = false
var save_menu: Node
+var game_paused: bool = false
+
func _ready():
visible = inventory_open
+ Events.game_paused.connect(_on_game_paused_signal)
func _process(_delta):
- if Input.is_action_just_pressed("ui_inventory"):
+ if Input.is_action_just_pressed("ui_inventory") && not game_paused:
open_inventory()
print("open inventory (", inventory_open, ")")
inventory_open = !inventory_open
visible = inventory_open
get_tree().paused = inventory_open
+ Events.inventory_open.emit(inventory_open)
func _on_return_button_pressed():
open_inventory()
+
+
+func _on_game_paused_signal(paused: bool):
+ game_paused = paused
--- /dev/null
+uid://dleuvr2p33hex
func _ready():
- Globals.request_update_player_position.connect(update_player_position)
+ Events.request_update_player_position.connect(update_player_position)
Globals.set_current_scene(Constants.LEVELS_NAMES[LEVEL_NAME] as Constants.LEVELS_NAMES)
# get player poss
--- /dev/null
+uid://2k5farej1c8m
var paused: bool = false
var save_menu: Node
+var is_inventory_open: bool = false
+
func _ready():
visible = paused
+ Events.inventory_open.connect(_on_inventory_open)
func _process(_delta):
- if Input.is_action_just_pressed("ui_cancel"):
+ if Input.is_action_just_pressed("ui_cancel") && not is_inventory_open:
pause_game()
func pause_game():
# update player position before pausing the execution
- Globals.request_update_player_position.emit()
+ Events.request_update_player_position.emit()
paused = !paused
get_tree().paused = paused
visible = paused
+ Events.game_paused.emit(paused)
+
if !paused:
close_save_menu()
func _on_load_button_pressed():
open_save_menu(false)
+
+
+func _on_inventory_open(open: bool):
+ is_inventory_open = open
--- /dev/null
+uid://dhm3u3n5lqe1f
--- /dev/null
+uid://dx15rxub22ius
--- /dev/null
+uid://dm2h8o2ppm2ou
--- /dev/null
+// source: https://godotshaders.com/shader/pixel-art-water/
+shader_type canvas_item;
+
+uniform float aspectRatio = 1.0f;
+uniform float pixelization = 2048.0f;
+
+uniform sampler2D waterDepthGradient : hint_default_black;
+
+uniform vec4 causticColor = vec4(0.455f, 0.773f, 0.765f, 1.0f);
+uniform vec4 causticHighlightColor = vec4(0.741f, 0.894f, 0.898f, 1.0f);
+uniform sampler2D causticTexture : hint_default_white, repeat_enable;
+uniform sampler2D causticHighlightTexture : hint_default_white, repeat_enable;
+uniform sampler2D causticNoiseTexture : hint_default_white, repeat_enable;
+uniform sampler2D causticFadeNoiseTexture : hint_default_white, repeat_enable;
+uniform float causticScale = 12.0f;
+uniform float causticSpeed = 0.005f;
+uniform float causticMovementAmount = 0.15f;
+uniform float causticFaderMultiplier = 1.45f;
+
+uniform vec4 specularColor = vec4(1.0f, 1.0f, 1.0f, 1.0f);
+uniform sampler2D specularNoiseTexture : hint_default_white, repeat_enable;
+uniform sampler2D specularMovementLeftNoiseTexture : hint_default_white, repeat_enable;
+uniform sampler2D specularMovementRightNoiseTexture : hint_default_white, repeat_enable;
+uniform float specularThreshold = 0.35f;
+uniform float specularSpeed = 0.025f;
+uniform float specularScale = 15.0f;
+
+uniform vec4 foamColor = vec4(1.0f, 1.0f, 1.0f, 1.0f);
+uniform sampler2D foamTexture : hint_default_white, repeat_enable;
+uniform float foamIntensity = 0.2f;
+uniform float foamScale = 15.0f;
+
+uniform vec4 outlineColor = vec4(0.675f, 0.86f, 1.0f, 1.0f);
+uniform float generalTransparency = 1.0f;
+
+
+// ------------------------------------------------------------------------------------
+// Helper functions
+
+// Blends two vec2's by subtracting them. Compare this to Photoshop blend mode "Subtract".
+// Source:
+vec2 blendSubtract_vec2(vec2 base, vec2 blend, float opacity)
+{
+ vec2 result = base - blend;
+ return mix(base, result, opacity);
+}
+
+// Blends two floats by subtracting them. Compare this to Photoshop blend mode "Subtract".
+// Source:
+float blendSubtract_float(float base, float blend, float opacity)
+{
+ float result = base - blend;
+ return mix(base, result, opacity);
+}
+
+// Blends two vec2's by overlaying them. Compare this to Photoshop blend mode "Overlay".
+// Source:
+float blendOverlay_float(float base, float blend, float opacity)
+{
+ float result1 = 1.0f - 2.0f * (1.0f - base) * (1.0f - blend);
+ float result2 = 2.0f * base * blend;
+ float zeroOrOne = step(0.5f, base);
+ float res = result2 * zeroOrOne + (1.0 - zeroOrOne) * result1;
+ return mix(base, res, opacity);
+}
+
+// Pixelizes the given coordinate.
+vec2 pixelizeCoordinates(vec2 coordinates)
+{
+ return floor(coordinates * pixelization) / pixelization;
+}
+
+// Applies the aspect ratio to the coordinates.
+vec2 applyAspectRatio(vec2 coordinates)
+{
+ return vec2(coordinates.x, coordinates.y * aspectRatio);
+}
+
+// ------------------------------------------------------------------------------------
+// Shader layers
+
+vec4 caustics(vec2 pixelizedCoordinates)
+{
+ vec4 causticNoise = texture(causticNoiseTexture, TIME * causticSpeed + pixelizedCoordinates);
+ vec2 noiseCoordinates = blendSubtract_vec2(pixelizedCoordinates * causticScale, causticNoise.rg, causticMovementAmount);
+ vec4 causticHighlight = texture(causticHighlightTexture, noiseCoordinates) * causticHighlightColor;
+ vec4 caustic = texture(causticTexture, noiseCoordinates) * causticColor;
+ vec4 interpolatedCaustics = mix(caustic, causticHighlight, causticHighlight.a);
+ float fadeNoise = texture(causticFadeNoiseTexture, noiseCoordinates).r * causticFaderMultiplier;
+ return vec4(interpolatedCaustics.r, interpolatedCaustics.g, interpolatedCaustics.b, clamp(interpolatedCaustics.a - fadeNoise, 0.0, 1.0));
+}
+
+vec4 specular(vec2 pixelizedCoordinates)
+{
+ vec2 scaledCoordinates = pixelizedCoordinates * specularScale;
+ float specularNoise = texture(specularNoiseTexture, scaledCoordinates).r;
+ float leftScrollingNoise = texture(specularMovementLeftNoiseTexture, scaledCoordinates + vec2(TIME * specularSpeed, 0.0f)).r;
+ float rightScrollingNoise = texture(specularMovementRightNoiseTexture, scaledCoordinates + vec2(TIME * specularSpeed * -1.0f, 0.0f)).r;
+ return step(specularThreshold, blendSubtract_float(blendOverlay_float(leftScrollingNoise, rightScrollingNoise, 1.0f), specularNoise, 1.0f)) * specularColor;
+}
+
+vec4 foam(vec2 pixelizedCoordinates, vec4 mainTexColor)
+{
+ vec4 colorizedFoam = texture(foamTexture, pixelizedCoordinates * foamScale) * foamColor;
+ float intensity = clamp(mainTexColor.g * mainTexColor.a - foamIntensity, 0.0f, 1.0f);
+ return vec4(colorizedFoam.r, colorizedFoam.g, colorizedFoam.b, colorizedFoam.a * intensity);
+}
+
+// ------------------------------------------------------------------------------------
+// Fragment Shader code
+
+void fragment()
+{
+ vec2 pixelizedCoordinates = pixelizeCoordinates(applyAspectRatio(UV));
+ vec4 mainTex = texture(TEXTURE, UV);
+ vec4 depthBasedWaterColor = texture(waterDepthGradient, vec2(1.0f - mainTex.b, 1.0f));
+
+ vec4 finalCaustics = caustics(pixelizedCoordinates);
+ vec4 finalSpecular = specular(pixelizedCoordinates);
+ vec4 finalFoam = foam(pixelizedCoordinates, mainTex);
+
+ vec4 waterWithCausticLayer = mix(depthBasedWaterColor, finalCaustics, finalCaustics.a);
+ vec4 waterWithCausticAndSpecularLayer = mix(waterWithCausticLayer, finalSpecular, ceil(finalCaustics.a) * finalSpecular.a);
+ vec4 waterWithCausticAndSpecularAndFoamLayer = mix(waterWithCausticAndSpecularLayer, finalFoam, finalFoam.a);
+
+ float outline = mainTex.a * mainTex.r;
+ vec4 finalOutlineColor = outline * outlineColor;
+
+ vec4 finalRGBColor = mix(waterWithCausticAndSpecularAndFoamLayer, finalOutlineColor, outline);
+ COLOR = vec4(finalRGBColor.r, finalRGBColor.g, finalRGBColor.b, mainTex.b * generalTransparency);
+}
\ No newline at end of file
--- /dev/null
+uid://dsxkpfujpmsuo